Simple History - Version 2.0.22

Version Description

(February 2015) =

  • Fixed: Deleted plugins were not logged correctly (name and other info was missing).
  • Added: Filter simple_history/logger/load_logger and simple_history/dropin/load_dropin that can be used to control the loading of each logger or dropin. See example file for usage examples.
  • Fixed: modal window with context data now works better on small screens.
  • Changed: Misc internal changes.
Download this release

Release Info

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

Code changes from version 2.0.6 to 2.0.22

Files changed (44) hide show
  1. README.md +4 -4
  2. SimpleHistoryFunctions.php +0 -38
  3. css/styles.css +124 -43
  4. dropins/SimpleHistoryFilterDropin.css +66 -5
  5. dropins/SimpleHistoryFilterDropin.js +23 -14
  6. dropins/SimpleHistoryFilterDropin.php +107 -92
  7. dropins/SimpleHistoryIpInfoDropin.css +135 -0
  8. dropins/SimpleHistoryIpInfoDropin.js +61 -2
  9. dropins/SimpleHistoryIpInfoDropin.php +137 -2
  10. dropins/SimpleHistoryNewRowsNotifier.php +1 -1
  11. dropins/SimpleHistoryRSSDropin.php +34 -28
  12. dropins/SimpleHistorySettingsLogtestDropin.php +14 -10
  13. dropins/SimpleHistorySidebarDropin.css +28 -0
  14. dropins/SimpleHistorySidebarDropin.php +225 -0
  15. examples.php → examples/examples.php +109 -4
  16. SimpleHistory.php → inc/SimpleHistory.php +1072 -553
  17. SimpleHistoryLogQuery.php → inc/SimpleHistoryLogQuery.php +11 -1
  18. index.php +18 -60
  19. js/scripts.js +44 -37
  20. languages/simple-history-da_DK.mo +0 -0
  21. languages/simple-history-da_DK.po +1790 -0
  22. languages/simple-history-de_DE.mo +0 -0
  23. languages/simple-history-de_DE.po +1475 -269
  24. languages/simple-history-nl_NL.mo +0 -0
  25. languages/simple-history-nl_NL.po +1527 -0
  26. languages/simple-history-pl_PL.mo +0 -0
  27. languages/simple-history-pl_PL.po +1293 -542
  28. languages/simple-history-sv_SE.mo +0 -0
  29. languages/simple-history-sv_SE.po +403 -169
  30. languages/simple-history.pot +509 -277
  31. loggers/SimpleCommentsLogger.php +80 -77
  32. loggers/SimpleCoreUpdatesLogger.php +1 -1
  33. loggers/SimpleLogger.php +398 -325
  34. loggers/SimpleMediaLogger.php +86 -33
  35. loggers/SimpleOptionsLogger.php +10 -10
  36. loggers/SimplePluginLogger.php +78 -45
  37. loggers/SimplePostLogger.php +222 -6
  38. loggers/SimpleThemeLogger.php +8 -4
  39. loggers/SimpleUserLogger.php +125 -112
  40. readme.txt +137 -4
  41. screenshot-1.png +0 -0
  42. screenshot-2.png +0 -0
  43. screenshot-3.png +0 -0
  44. templates/settings-statsForGeeks.php +22 -9
README.md CHANGED
@@ -13,19 +13,19 @@ This screenshot show the log view + it also shows the filter function in use: th
13
  are of type post and pages and media (i.e. images & other uploads), and only events
14
  initiated by a specific user.
15
 
16
- ![Simple History screenshot](https://raw.githubusercontent.com/bonny/WordPress-Simple-History/v2/screenshot-1.png)
17
 
18
  ## Events with different severity
19
 
20
  Simple History uses the log levels specified in the [PHP PSR-3 standard](http://www.php-fig.org/psr/psr-3/).
21
 
22
- ![Simple History screenshot](https://raw.githubusercontent.com/bonny/WordPress-Simple-History/v2/screenshot-2.png)
23
 
24
  ## Events have context with extra details
25
 
26
  Each logged event can include useful rich formatted extra information. For example: a plugin install can contain author info and a the url to the plugin, and an uploaded image can contain a thumbnail of the image.
27
 
28
- ![Simple History screenshot](https://raw.githubusercontent.com/bonny/WordPress-Simple-History/v2/screenshot-3.png)
29
 
30
  # Plugin API
31
 
@@ -43,4 +43,4 @@ SimpleLogger()->debug("Ok, cron job is running!");
43
 
44
  ```
45
 
46
- See more examples at [simple-history.com/docs](http://simple-history.com/docs).
13
  are of type post and pages and media (i.e. images & other uploads), and only events
14
  initiated by a specific user.
15
 
16
+ ![Simple History screenshot](https://ps.w.org/simple-history/assets/screenshot-1.png?rev=1)
17
 
18
  ## Events with different severity
19
 
20
  Simple History uses the log levels specified in the [PHP PSR-3 standard](http://www.php-fig.org/psr/psr-3/).
21
 
22
+ ![Simple History screenshot](https://ps.w.org/simple-history/assets/screenshot-2.png?rev=1096689)
23
 
24
  ## Events have context with extra details
25
 
26
  Each logged event can include useful rich formatted extra information. For example: a plugin install can contain author info and a the url to the plugin, and an uploaded image can contain a thumbnail of the image.
27
 
28
+ ![Simple History screenshot](http://ps.w.org/simple-history/assets/screenshot-3.png?rev=1096689)
29
 
30
  # Plugin API
31
 
43
 
44
  ```
45
 
46
+ You will find more examples in the [examples.php](https://github.com/bonny/WordPress-Simple-History/blob/master/examples.php) file.
SimpleHistoryFunctions.php DELETED
@@ -1,38 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * Helper function with same name as the SimpleLogger-class
5
- *
6
- * Makes call like this possible:
7
- * SimpleLogger()->info("This is a message sent to the log");
8
- */
9
- function SimpleLogger() {
10
- return new SimpleLogger( $GLOBALS["simple_history"] );
11
- }
12
-
13
- /**
14
- * Add event to history table
15
- * This is here for backwards compatibility
16
- * If you use this please consider using
17
- * SimpleHistory()->info();
18
- * instead
19
- */
20
- function simple_history_add($args) {
21
-
22
- $defaults = array(
23
- "action" => null,
24
- "object_type" => null,
25
- "object_subtype" => null,
26
- "object_id" => null,
27
- "object_name" => null,
28
- "user_id" => null,
29
- "description" => null
30
- );
31
-
32
- $context = wp_parse_args( $args, $defaults );
33
-
34
- $message = "{$context["object_type"]} {$context["object_name"]} {$context["action"]}";
35
-
36
- SimpleLogger()->info($message, $context);
37
-
38
- } // simple_history_add
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/styles.css CHANGED
@@ -11,7 +11,7 @@ The spinner that wp uses:;
11
  .SimpleHistory__cf:after { clear:both; }
12
  .SimpleHistory__cf { zoom:1; } /* For IE 6/7 (trigger hasLayout) */
13
 
14
- .SimpleHistoryGui,
15
  .SimpleHistoryGuiExample {
16
  position: relative;
17
  /* must have a height so "loading..." will be visible in dashboard */
@@ -37,7 +37,7 @@ The spinner that wp uses:;
37
  transition: opacity .1s ease-out;
38
  }
39
 
40
- /* on it's own page */
41
  /*.dashboard_page_simple_history_page .SimpleHistoryLogitemsWrap {*/
42
  .dashboard_page_simple_history_page .SimpleHistoryGuiWrap {
43
  /*float: left;*/
@@ -53,9 +53,21 @@ The spinner that wp uses:;
53
 
54
  .dashboard_page_simple_history_page .SimpleHistoryGui {
55
  width: 100%;
56
- float: left;background: tran
 
 
 
 
 
 
 
 
 
 
57
  }
58
 
 
 
59
  /*
60
  .SimpleHistoryGui:after {
61
  content: "\f206";
@@ -72,20 +84,6 @@ The spinner that wp uses:;
72
  }
73
  */
74
 
75
- .SimpleHistory__filters {
76
- float: right;
77
- width: 300px;
78
- margin-right: -340px;
79
- /* hide by default while log is loading */
80
- opacity: 0;
81
- transition: all .25s ease-out;
82
- }
83
-
84
- .SimpleHistory--isLoaded .SimpleHistory__filters {
85
- opacity: 1;
86
- }
87
-
88
-
89
  .SimpleHistoryLogitems {
90
  margin: 0;
91
  background: #fff;
@@ -103,7 +101,7 @@ The spinner that wp uses:;
103
 
104
  /**
105
  * Log items
106
- * There is always a 4px left border, just with differents colors
107
  */
108
  .SimpleHistoryLogitem {
109
  position: relative;
@@ -111,7 +109,7 @@ The spinner that wp uses:;
111
  margin: 0;
112
  padding: 20px 20px 20px 16px;
113
  /*border-bottom: 1px solid rgb(229, 229, 229);*/
114
-
115
  /* uncomment to show border with log color */
116
  /*border-left: 4px solid transparent;*/
117
 
@@ -236,6 +234,7 @@ Style different log levels.
236
  }
237
 
238
  .SimpleHistoryLogitem__senderImage {
 
239
  border-radius: 50%;
240
  overflow: hidden;
241
  /*opacity: .8;*/
@@ -307,7 +306,7 @@ Style different log levels.
307
 
308
  /* table with keys and values */
309
  /*.SimpleHistoryLogitem__keyValueTable {
310
-
311
  }*/
312
 
313
  .SimpleHistoryLogitem__keyValueTable th,
@@ -357,25 +356,29 @@ Style different log levels.
357
  Images/thumbs can be styles nicely
358
  */
359
  .SimpleHistoryLogitemThumbnail {
360
- display: inline-block;
361
- margin: .5em 0 0 0;
362
- padding: 5px;
363
- border: 1px solid #ddd;
364
- border-radius: 2px;
365
 
366
  }
367
 
 
 
 
 
368
  .SimpleHistoryLogitemThumbnail img {
369
- /*
370
- photoshop-like background that represents tranpsarency
371
- so user can see that an image have transparency
372
- */
373
- display: block;
374
- background-image: url('data:image/gif;base64,R0lGODlhEAAQAIAAAOXl5f///yH5BAAAAAAALAAAAAAQABAAAAIfhG+hq4jM3IFLJhoswNly/XkcBpIiVaInlLJr9FZWAQA7');
375
- max-width: 100%;
376
- max-height: 300px;
377
- max-height: 200px;
378
- height: auto;
379
  }
380
 
381
 
@@ -469,7 +472,7 @@ when occasions are added
469
 
470
 
471
  /*
472
- customizations for the dashboard
473
  i.e. the log is inside a .postbox element
474
  */
475
 
@@ -524,12 +527,19 @@ i.e. the log is inside a .postbox element
524
  margin-bottom: 0;
525
  }
526
 
527
- .postbox .SimpleHistoryLogitem__text,
528
- .postbox .SimpleHistoryLogitem__details,
529
  .postbox .SimpleHistoryLogitem__details p {
530
  line-height: 1.1;
531
  }
532
 
 
 
 
 
 
 
 
533
  /*
534
  .postbox .SimpleHistoryLogitem__details {
535
  display: none;
@@ -635,6 +645,23 @@ Modal window with detailss
635
  right: 120px;
636
  top: 60px;
637
  z-index: 15;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
638
  }
639
 
640
  .SimpleHistory-modal__contentInner {
@@ -658,14 +685,16 @@ Modal window with detailss
658
 
659
  /* if wp left meny is collapsed .folded is added and meny width is 36 px */
660
  .folded .SimpleHistory-modal__content {
661
- left: 156px /* admin meny width is 160 px*/
662
  }
663
- @media only screen and (max-width: 900px) {
 
 
664
  .SimpleHistory-modal__content {
665
- left: 156px /* admin meny width is 160 px*/
666
  }
667
- }
668
 
 
669
 
670
 
671
  .SimpleHistory-modal__content--enter {
@@ -698,6 +727,13 @@ Modal window with detailss
698
  top: 92px /* admin bar height is 32 px*/
699
  }
700
 
 
 
 
 
 
 
 
701
  /* style the logRow a bit more when shown in modal */
702
  .SimpleHistory-modal .SimpleHistoryLogitem__header {
703
  font-size: 16px;
@@ -753,6 +789,30 @@ Modal window with detailss
753
  background-color: #eee;
754
  }
755
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
756
  .SimpleHistory-modal .SimpleHistoryLogitem--initiator-web_user .SimpleHistoryLogitem__secondcol,
757
  .SimpleHistory-modal .SimpleHistoryLogitem--initiator-other .SimpleHistoryLogitem__secondcol {
758
  margin-left: 0;
@@ -761,6 +821,7 @@ Modal window with detailss
761
  /** wordpress as initiator = add wordpress icon */
762
  /** anonymous user as initiator = plain user image */
763
  .SimpleHistoryLogitem--initiator-wp .SimpleHistoryLogitem__senderImage:before,
 
764
  .SimpleHistoryLogitem--initiator-web_user .SimpleHistoryLogitem__senderImage:before {
765
  display: inline-block;
766
  -webkit-font-smoothing: antialiased;
@@ -769,10 +830,25 @@ Modal window with detailss
769
  color: #999;
770
  }
771
 
772
- .SimpleHistoryLogitem--initiator-wp .SimpleHistoryLogitem__senderImage:before {
 
773
  content: "\f120";
774
  }
775
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
776
  .SimpleHistoryLogitem--initiator-web_user .SimpleHistoryLogitem__senderImage:before {
777
  content: "\f110";
778
  }
@@ -821,3 +897,8 @@ Modal window with detailss
821
  display: block;
822
  }
823
 
 
 
 
 
 
11
  .SimpleHistory__cf:after { clear:both; }
12
  .SimpleHistory__cf { zoom:1; } /* For IE 6/7 (trigger hasLayout) */
13
 
14
+ .SimpleHistoryGui,
15
  .SimpleHistoryGuiExample {
16
  position: relative;
17
  /* must have a height so "loading..." will be visible in dashboard */
37
  transition: opacity .1s ease-out;
38
  }
39
 
40
+ /* on its own page */
41
  /*.dashboard_page_simple_history_page .SimpleHistoryLogitemsWrap {*/
42
  .dashboard_page_simple_history_page .SimpleHistoryGuiWrap {
43
  /*float: left;*/
53
 
54
  .dashboard_page_simple_history_page .SimpleHistoryGui {
55
  width: 100%;
56
+ float: left;
57
+ }
58
+
59
+ @media only screen and (max-width: 850px) {
60
+ .dashboard_page_simple_history_page .SimpleHistoryGuiWrap {
61
+ float: none;
62
+ margin-right: auto;
63
+ }
64
+ .dashboard_page_simple_history_page .SimpleHistoryGui {
65
+ float: none;
66
+ }
67
  }
68
 
69
+
70
+
71
  /*
72
  .SimpleHistoryGui:after {
73
  content: "\f206";
84
  }
85
  */
86
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  .SimpleHistoryLogitems {
88
  margin: 0;
89
  background: #fff;
101
 
102
  /**
103
  * Log items
104
+ * There is always a 4px left border, just with differents colors
105
  */
106
  .SimpleHistoryLogitem {
107
  position: relative;
109
  margin: 0;
110
  padding: 20px 20px 20px 16px;
111
  /*border-bottom: 1px solid rgb(229, 229, 229);*/
112
+
113
  /* uncomment to show border with log color */
114
  /*border-left: 4px solid transparent;*/
115
 
234
  }
235
 
236
  .SimpleHistoryLogitem__senderImage {
237
+ position: relative;
238
  border-radius: 50%;
239
  overflow: hidden;
240
  /*opacity: .8;*/
306
 
307
  /* table with keys and values */
308
  /*.SimpleHistoryLogitem__keyValueTable {
309
+
310
  }*/
311
 
312
  .SimpleHistoryLogitem__keyValueTable th,
356
  Images/thumbs can be styles nicely
357
  */
358
  .SimpleHistoryLogitemThumbnail {
359
+ display: inline-block;
360
+ margin: .5em 0 0 0;
361
+ padding: 5px;
362
+ border: 1px solid #ddd;
363
+ border-radius: 2px;
364
 
365
  }
366
 
367
+ .SimpleHistoryLogitemThumbnailLink {
368
+ display: inline-block;
369
+ }
370
+
371
  .SimpleHistoryLogitemThumbnail img {
372
+ /*
373
+ photoshop-like background that represents transparency
374
+ so user can see that an image have transparency
375
+ */
376
+ display: block;
377
+ background-image: url('data:image/gif;base64,R0lGODlhEAAQAIAAAOXl5f///yH5BAAAAAAALAAAAAAQABAAAAIfhG+hq4jM3IFLJhoswNly/XkcBpIiVaInlLJr9FZWAQA7');
378
+ max-width: 100%;
379
+ max-height: 300px;
380
+ max-height: 200px;
381
+ height: auto;
382
  }
383
 
384
 
472
 
473
 
474
  /*
475
+ customizations for the dashboard
476
  i.e. the log is inside a .postbox element
477
  */
478
 
527
  margin-bottom: 0;
528
  }
529
 
530
+ .postbox .SimpleHistoryLogitem__text,
531
+ .postbox .SimpleHistoryLogitem__details,
532
  .postbox .SimpleHistoryLogitem__details p {
533
  line-height: 1.1;
534
  }
535
 
536
+ .postbox .SimpleHistoryPaginationLink,
537
+ .postbox .SimpleHistoryPaginationCurrentPage {
538
+ font-size: 13px;
539
+ line-height: 19px;
540
+ height: 24px;
541
+ }
542
+
543
  /*
544
  .postbox .SimpleHistoryLogitem__details {
545
  display: none;
645
  right: 120px;
646
  top: 60px;
647
  z-index: 15;
648
+ -webkit-overflow-scrolling: touch;
649
+ }
650
+
651
+ @media only screen and (max-width: 960px) {
652
+
653
+ .SimpleHistory-modal__background {
654
+ z-index: 9991; /* #adminmenuwrap has z-index 9990 */
655
+ }
656
+
657
+ .SimpleHistory-modal__content {
658
+ top: 10px;
659
+ left: 10px;
660
+ right: 10px;
661
+ bottom: 10px;
662
+ z-index: 9991; /* #adminmenuwrap has z-index 9990 */
663
+ }
664
+
665
  }
666
 
667
  .SimpleHistory-modal__contentInner {
685
 
686
  /* if wp left meny is collapsed .folded is added and meny width is 36 px */
687
  .folded .SimpleHistory-modal__content {
688
+ left: 156px /* admin meny width is 160 px */
689
  }
690
+
691
+ @media only screen and (max-width: 850px) {
692
+
693
  .SimpleHistory-modal__content {
694
+ left: 10px /* admin meny width is 160 px */
695
  }
 
696
 
697
+ }
698
 
699
 
700
  .SimpleHistory-modal__content--enter {
727
  top: 92px /* admin bar height is 32 px*/
728
  }
729
 
730
+ @media only screen and (max-width: 960px) {
731
+ .admin-bar .SimpleHistory-modal__content {
732
+ top: 10px;
733
+ z-index: 100000;
734
+ }
735
+ }
736
+
737
  /* style the logRow a bit more when shown in modal */
738
  .SimpleHistory-modal .SimpleHistoryLogitem__header {
739
  font-size: 16px;
789
  background-color: #eee;
790
  }
791
 
792
+
793
+ @media only screen and (max-width: 850px) {
794
+
795
+ .SimpleHistoryLogitem__moreDetails {
796
+ margin-left: -60px;
797
+ }
798
+
799
+ /* make table less table-like on small screens by putting tds below/after each other
800
+ instead of next to each other */
801
+ .SimpleHistoryLogitem__moreDetailsContext th:first-child,
802
+ .SimpleHistoryLogitem__moreDetailsContext td:first-child {
803
+ display: block;
804
+ font-weight: bold;
805
+ }
806
+
807
+ .SimpleHistoryLogitem__moreDetailsContext th:nth-child(2),
808
+ .SimpleHistoryLogitem__moreDetailsContext td:nth-child(2) {
809
+ display: block;
810
+ margin-bottom: 1em;
811
+ }
812
+
813
+ }
814
+
815
+
816
  .SimpleHistory-modal .SimpleHistoryLogitem--initiator-web_user .SimpleHistoryLogitem__secondcol,
817
  .SimpleHistory-modal .SimpleHistoryLogitem--initiator-other .SimpleHistoryLogitem__secondcol {
818
  margin-left: 0;
821
  /** wordpress as initiator = add wordpress icon */
822
  /** anonymous user as initiator = plain user image */
823
  .SimpleHistoryLogitem--initiator-wp .SimpleHistoryLogitem__senderImage:before,
824
+ .SimpleHistoryLogitem--initiator-wp_cli .SimpleHistoryLogitem__senderImage:before,
825
  .SimpleHistoryLogitem--initiator-web_user .SimpleHistoryLogitem__senderImage:before {
826
  display: inline-block;
827
  -webkit-font-smoothing: antialiased;
830
  color: #999;
831
  }
832
 
833
+ .SimpleHistoryLogitem--initiator-wp .SimpleHistoryLogitem__senderImage:before,
834
+ .SimpleHistoryLogitem--initiator-wp_cli .SimpleHistoryLogitem__senderImage:before {
835
  content: "\f120";
836
  }
837
 
838
+ .SimpleHistoryLogitem--initiator-wp_cli .SimpleHistoryLogitem__senderImage:after {
839
+ content: "CLI";
840
+ position: absolute;
841
+ background: rgba(255, 255, 255, 0.7);
842
+ top: 0;
843
+ left: 0;
844
+ right: 0;
845
+ bottom: 0;
846
+ line-height: 36px;
847
+ text-align: center;
848
+ font-family: monospace;
849
+ font-sIze: 12px;
850
+ }
851
+
852
  .SimpleHistoryLogitem--initiator-web_user .SimpleHistoryLogitem__senderImage:before {
853
  content: "\f110";
854
  }
897
  display: block;
898
  }
899
 
900
+ .postbox .SimpleHistory--hasNoHits .SimpleHistoryLogitems__noHits {
901
+ margin-left: 13px;
902
+ margin-right: 13px;
903
+ }
904
+
dropins/SimpleHistoryFilterDropin.css CHANGED
@@ -1,15 +1,32 @@
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
  }
14
 
15
  /**
@@ -35,3 +52,47 @@
35
  margin-right: 10px;
36
  }
37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
 
 
2
 
3
+ .SimpleHistory__filters {
4
+ /*float: right;
5
+ width: 300px;
6
+ margin-right: -340px;
7
+ */
8
+ /* hide by default while log is loading */
9
+ opacity: .5;
10
+ transition: all .25s ease-out;
11
+ }
12
+
13
+ .SimpleHistory--isLoaded .SimpleHistory__filters {
14
+ opacity: 1;
15
+ }
16
 
17
  .SimpleHistory__filters__form select {
18
+ /* width: 100%; */
19
+ width: 310px;
20
  }
21
 
22
+ .SimpleHistory__filters__form input[type=text],
23
  .SimpleHistory__filters__form input[type=search] {
24
+ /* width: 100%; */
25
+ /* width: 310px; */
26
+ }
27
+
28
+ .SimpleHistory__filters__filter--date {
29
+ width: 310px;
30
  }
31
 
32
  /**
52
  margin-right: 10px;
53
  }
54
 
55
+ .SimpleHistoryFilterDropin-showMoreFilters {
56
+ border: 0;
57
+ background: none;
58
+ color: rgb(0, 116, 162);
59
+ cursor: pointer;
60
+ }
61
+
62
+ .SimpleHistoryFilterDropin-showMoreFilters:hover {
63
+ color: rgb(46, 162, 204);
64
+ }
65
+
66
+ /* more filters are hidden by default */
67
+ .SimpleHistory__filters__moreFilters {
68
+ display: none;
69
+ margin-bottom: 20px;
70
+ }
71
+
72
+ /* when showing more filters */
73
+ .SimpleHistory__filters.is-showingMoreFilters {
74
+
75
+ }
76
+
77
+ .SimpleHistory__filters.is-showingMoreFilters .SimpleHistoryFilterDropin-searchInput {
78
+ width: 310px;
79
+ }
80
+
81
+ .SimpleHistory__filters.is-showingMoreFilters .SimpleHistoryFilterDropin-showMoreFilters--first {
82
+ display: none;
83
+ }
84
+
85
+ .SimpleHistory__filters.is-showingMoreFilters .SimpleHistory__filters__moreFilters {
86
+ display: block;
87
+ }
88
+
89
+ .SimpleHistory__filters.is-showingMoreFilters .SimpleHistoryFilterDropin-doFilterButton--first {
90
+ display: none;
91
+ }
92
+
93
+
94
+ /* dashboard */
95
+ .postbox .SimpleHistory__filters {
96
+ margin-left: 13px;
97
+ margin-right: 13px;
98
+ }
dropins/SimpleHistoryFilterDropin.js CHANGED
@@ -1,5 +1,5 @@
1
  /**
2
- *
3
  */
4
 
5
  var SimpleHistoryFilterDropin = (function($) {
@@ -20,7 +20,9 @@ var SimpleHistoryFilterDropin = (function($) {
20
  $elms.filter_user = $elms.filter_container.find(".SimpleHistory__filters__filter--user");
21
  $elms.filter_button = $elms.filter_container.find(".js-SimpleHistoryFilterDropin-doFilter");
22
  $elms.filter_form = $elms.filter_container.find(".js-SimpleHistory__filters__form");
23
-
 
 
24
  enhanceSelects();
25
  addListeners();
26
 
@@ -29,13 +31,21 @@ var SimpleHistoryFilterDropin = (function($) {
29
  function addListeners() {
30
 
31
  $elms.filter_form.on("submit", onSubmitForm);
 
32
 
33
  }
34
 
35
- function onSubmitForm(e) {
36
 
 
 
 
 
 
 
 
37
  e.preventDefault();
38
-
39
  // form serialize
40
  // search=apa&loglevels=critical&loglevels=alert&loggers=SimpleMediaLogger&loggers=SimpleMenuLogger&user=1&months=2014-09 SimpleHistoryFilterDropin.js?ver=2.0:40
41
  var $search = $elms.filter_form.find("[name='search']");
@@ -47,12 +57,12 @@ var SimpleHistoryFilterDropin = (function($) {
47
  // If any of our search boxes are filled in we consider ourself to be in search mode
48
  isFilteringActive = false;
49
  activeFilters = {};
50
-
51
  if ( $.trim( $search.val() )) {
52
  isFilteringActive = true;
53
  activeFilters.search = $search.val();
54
  }
55
-
56
  if ( $loglevels.val() && $loglevels.val().length ) {
57
  isFilteringActive = true;
58
  activeFilters.loglevels = $loglevels.val();
@@ -99,7 +109,7 @@ var SimpleHistoryFilterDropin = (function($) {
99
  function modifyNewRowsNotifierApiArgs(e, apiArgs) {
100
 
101
  if (isFilteringActive) {
102
-
103
  apiArgs = _.extend(apiArgs, activeFilters);
104
 
105
  }
@@ -108,12 +118,12 @@ var SimpleHistoryFilterDropin = (function($) {
108
 
109
  function modifyFetchData(collection, url_data) {
110
 
111
- if (isFilteringActive) {
112
 
113
  url_data = _.extend(url_data, activeFilters);
114
 
115
  }
116
-
117
  }
118
 
119
  function enhanceSelects() {
@@ -147,7 +157,7 @@ var SimpleHistoryFilterDropin = (function($) {
147
  });
148
 
149
  $(".SimpleHistory__filters__filter--date").select2({
150
- width: "element"
151
  });
152
 
153
  $(".SimpleHistory__filters__filter--loglevel").select2({
@@ -159,7 +169,7 @@ var SimpleHistoryFilterDropin = (function($) {
159
  }
160
 
161
  function formatUsers(userdata) {
162
-
163
  var html = "";
164
  html += "<div class='SimpleHistory__filters__userfilter__gravatar'>";
165
  html += userdata.gravatar;
@@ -175,11 +185,11 @@ var SimpleHistoryFilterDropin = (function($) {
175
  }
176
 
177
  function formatLoglevel(loglevel) {
178
-
179
  var originalOption = loglevel.element;
180
  var $originalOption = $(originalOption);
181
  var color = $originalOption.data("color");
182
-
183
  var html = "<span style=\"border-radius: 50%; border: 1px solid rgba(0,0,0,.1); margin-right: 5px; width: .75em; height: .75em; line-height: 1; display: inline-block; background-color: " + $originalOption.data('color') + "; '\"></span>" + loglevel.text;
184
  return html;
185
 
@@ -197,4 +207,3 @@ SimpleHistoryFilterDropin.init();
197
  jQuery(document).ready(function() {
198
  SimpleHistoryFilterDropin.onDomReadyInit();
199
  });
200
-
1
  /**
2
+ *
3
  */
4
 
5
  var SimpleHistoryFilterDropin = (function($) {
20
  $elms.filter_user = $elms.filter_container.find(".SimpleHistory__filters__filter--user");
21
  $elms.filter_button = $elms.filter_container.find(".js-SimpleHistoryFilterDropin-doFilter");
22
  $elms.filter_form = $elms.filter_container.find(".js-SimpleHistory__filters__form");
23
+ $elms.show_more_filters_button = $elms.filter_container.find(".js-SimpleHistoryFilterDropin-showMoreFilters");
24
+ $elms.more_filters_container = $elms.filter_container.find(".js-SimpleHistory__filters__moreFilters");
25
+
26
  enhanceSelects();
27
  addListeners();
28
 
31
  function addListeners() {
32
 
33
  $elms.filter_form.on("submit", onSubmitForm);
34
+ $elms.show_more_filters_button.on("click", onClickMoreFilters);
35
 
36
  }
37
 
38
+ function onClickMoreFilters() {
39
 
40
+ //$elms.more_filters_container.toggleClass("is-visible");
41
+ $elms.filter_container.toggleClass("is-showingMoreFilters");
42
+
43
+ }
44
+
45
+ function onSubmitForm(e) {
46
+
47
  e.preventDefault();
48
+
49
  // form serialize
50
  // search=apa&loglevels=critical&loglevels=alert&loggers=SimpleMediaLogger&loggers=SimpleMenuLogger&user=1&months=2014-09 SimpleHistoryFilterDropin.js?ver=2.0:40
51
  var $search = $elms.filter_form.find("[name='search']");
57
  // If any of our search boxes are filled in we consider ourself to be in search mode
58
  isFilteringActive = false;
59
  activeFilters = {};
60
+
61
  if ( $.trim( $search.val() )) {
62
  isFilteringActive = true;
63
  activeFilters.search = $search.val();
64
  }
65
+
66
  if ( $loglevels.val() && $loglevels.val().length ) {
67
  isFilteringActive = true;
68
  activeFilters.loglevels = $loglevels.val();
109
  function modifyNewRowsNotifierApiArgs(e, apiArgs) {
110
 
111
  if (isFilteringActive) {
112
+
113
  apiArgs = _.extend(apiArgs, activeFilters);
114
 
115
  }
118
 
119
  function modifyFetchData(collection, url_data) {
120
 
121
+ if (isFilteringActive) {
122
 
123
  url_data = _.extend(url_data, activeFilters);
124
 
125
  }
126
+
127
  }
128
 
129
  function enhanceSelects() {
157
  });
158
 
159
  $(".SimpleHistory__filters__filter--date").select2({
160
+ //width: "element"
161
  });
162
 
163
  $(".SimpleHistory__filters__filter--loglevel").select2({
169
  }
170
 
171
  function formatUsers(userdata) {
172
+
173
  var html = "";
174
  html += "<div class='SimpleHistory__filters__userfilter__gravatar'>";
175
  html += userdata.gravatar;
185
  }
186
 
187
  function formatLoglevel(loglevel) {
188
+
189
  var originalOption = loglevel.element;
190
  var $originalOption = $(originalOption);
191
  var color = $originalOption.data("color");
192
+
193
  var html = "<span style=\"border-radius: 50%; border: 1px solid rgba(0,0,0,.1); margin-right: 5px; width: .75em; height: .75em; line-height: 1; display: inline-block; background-color: " + $originalOption.data('color') + "; '\"></span>" + loglevel.text;
194
  return html;
195
 
207
  jQuery(document).ready(function() {
208
  SimpleHistoryFilterDropin.onDomReadyInit();
209
  });
 
dropins/SimpleHistoryFilterDropin.php CHANGED
@@ -16,7 +16,8 @@ class SimpleHistoryFilterDropin {
16
  $this->sh = $sh;
17
 
18
  add_action("simple_history/enqueue_admin_scripts", array($this, "enqueue_admin_scripts"));
19
- add_action("simple_history/history_page/after_gui", array( $this, "gui_page_filters") );
 
20
  add_action("wp_ajax_simple_history_filters_search_user", array( $this, "ajax_simple_history_filters_search_user") );
21
 
22
  }
@@ -40,118 +41,133 @@ class SimpleHistoryFilterDropin {
40
 
41
  <form class="SimpleHistory__filters__form js-SimpleHistory__filters__form">
42
 
43
- <h3><?php _e("Filter history", "simple-history") ?></h3>
44
 
45
  <p>
46
- <input type="search" placeholder="Search" name="search">
 
 
 
47
  </p>
48
 
49
- <p>
50
- <select name="loglevels" class="SimpleHistory__filters__filter SimpleHistory__filters__filter--loglevel" style="width: 300px" placeholder="<?php _e("All log levels", "simple-history") ?>" multiple>
51
- <option value="debug" data-color="#CEF6D8">Debug</option>
52
- <option value="info" data-color="white">Info</option>
53
- <option value="notice" data-color="rgb(219, 219, 183)">Notice</option>
54
- <option value="warning" data-color="#F7D358">Warning</option>
55
- <option value="error" data-color="#F79F81">Error</option>
56
- <option value="critical" data-color="#FA5858">Critical</option>
57
- <option value="alert" data-color="rgb(199, 69, 69)">Alert</option>
58
- <option value="emergency" data-color="#DF0101">Emergency</option>
59
- </select>
60
- </p>
61
-
62
- <p>
63
- <select name="messages" class="SimpleHistory__filters__filter SimpleHistory__filters__filter--logger" style="width: 300px"
64
- placeholder="<?php _e("All messages", "simple-history") ?>" multiple>
65
- <?php
66
- foreach ($loggers_user_can_read as $logger) {
67
-
68
- $logger_info = $logger["instance"]->getInfo();
69
- $logger_slug = $logger["instance"]->slug;
70
-
71
- // Get labels for logger
72
- if ( isset( $logger_info["labels"]["search"] ) ) {
73
-
74
- printf('<optgroup label="%1$s">', esc_attr( $logger_info["labels"]["search"]["label"] ) );
75
-
76
- // If all activity
77
- if ( ! empty( $logger_info["labels"]["search"]["label_all"] ) ) {
78
-
79
- $arr_all_search_messages = array();
80
- foreach ( $logger_info["labels"]["search"]["options"] as $option_key => $option_messages ) {
81
- $arr_all_search_messages = array_merge($arr_all_search_messages, $option_messages);
82
- }
 
 
 
 
 
 
 
 
83
 
84
- foreach ($arr_all_search_messages as $key => $val) {
85
- $arr_all_search_messages[ $key ] = $logger_slug . ":" . $val;
86
  }
87
 
88
- printf('<option value="%2$s">%1$s</option>', esc_attr( $logger_info["labels"]["search"]["label_all"] ), esc_attr( implode(",", $arr_all_search_messages) ));
 
89
 
90
- }
 
 
91
 
92
- // For each specific search option
93
- foreach ( $logger_info["labels"]["search"]["options"] as $option_key => $option_messages ) {
94
 
95
- foreach ($option_messages as $key => $val) {
96
- $option_messages[ $key ] = $logger_slug . ":" . $val;
97
  }
98
 
99
- $str_option_messages = implode(",", $option_messages);
100
- printf('<option value="%2$s">%1$s</option>', esc_attr( $option_key ), esc_attr( $str_option_messages ));
101
 
102
  }
103
 
104
- printf('</optgroup>');
105
-
106
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
 
108
- }
109
- ?>
110
- </select>
111
- </p>
112
 
113
- <p>
114
- <input type="text"
115
- name = "user"
116
- class="SimpleHistory__filters__filter SimpleHistory__filters__filter--user"
117
- style="width: 300px"
118
- placeholder="<?php _e("All users", "simple-history") ?>" />
119
- </p>
120
 
121
- <?php
122
- global $wpdb;
123
- $table_name = $wpdb->prefix . SimpleHistory::DBTABLE;
124
- $loggers_user_can_read_sql_in = $this->sh->getLoggersThatUserCanRead(null, "sql");
125
- $sql_dates = sprintf('
126
- SELECT DISTINCT ( date_format(DATE, "%%Y-%%m") ) AS yearMonth
127
- FROM %s
128
- WHERE logger IN %s
129
- ORDER BY yearMonth DESC
130
- ', $table_name, // 1
131
- $loggers_user_can_read_sql_in // 2
132
- );
133
-
134
- $result_months = $wpdb->get_results($sql_dates);
135
- ?>
136
- <p>
137
- <select class="SimpleHistory__filters__filter SimpleHistory__filters__filter--date"
138
- name="months"
139
- placeholder="<?php echo _e("All dates", "simple-history") ?>" multiple>
140
- <?php
141
- foreach ($result_months as $row) {
142
- printf(
143
- '<option value="%1$s">%2$s</option>',
144
- $row->yearMonth,
145
- date_i18n( "F Y", strtotime($row->yearMonth) )
146
- );
147
- }
148
- ?>
149
- </select>
150
- </p>
151
 
 
152
  <p>
153
- <button class="button js-SimpleHistoryFilterDropin-doFilter"><?php _e("Filter", "simple-history") ?></button>
154
  </p>
 
155
 
156
  </form>
157
 
@@ -234,4 +250,3 @@ class SimpleHistoryFilterDropin {
234
  }
235
 
236
  } // end class
237
-
16
  $this->sh = $sh;
17
 
18
  add_action("simple_history/enqueue_admin_scripts", array($this, "enqueue_admin_scripts"));
19
+ add_action("simple_history/history_page/before_gui", array( $this, "gui_page_filters") );
20
+ add_action("simple_history/dashboard/before_gui", array( $this, "gui_page_filters") );
21
  add_action("wp_ajax_simple_history_filters_search_user", array( $this, "ajax_simple_history_filters_search_user") );
22
 
23
  }
41
 
42
  <form class="SimpleHistory__filters__form js-SimpleHistory__filters__form">
43
 
44
+ <!-- <h3><?php _e("Filter history", "simple-history") ?></h3> -->
45
 
46
  <p>
47
+ <input type="search" class="SimpleHistoryFilterDropin-searchInput" placeholder="<?php _e("", "simple-history"); ?>" name="search">
48
+ <button class="button SimpleHistoryFilterDropin-doFilterButton SimpleHistoryFilterDropin-doFilterButton--first js-SimpleHistoryFilterDropin-doFilter"><?php _e("Search events", "simple-history") ?></button>
49
+ <!-- <br> -->
50
+ <button type="button" class="SimpleHistoryFilterDropin-showMoreFilters SimpleHistoryFilterDropin-showMoreFilters--first js-SimpleHistoryFilterDropin-showMoreFilters"><?php _ex("Show options", "Filter dropin: button to show more search options", "simple-history") ?></button>
51
  </p>
52
 
53
+ <div class="SimpleHistory__filters__moreFilters js-SimpleHistory__filters__moreFilters">
54
+
55
+ <p>
56
+ <select name="loglevels" class="SimpleHistory__filters__filter SimpleHistory__filters__filter--loglevel" style="width: 300px" placeholder="<?php _e("All log levels", "simple-history") ?>" multiple>
57
+ <option value="debug" data-color="#CEF6D8"><?php echo $this->sh->getLogLevelTranslated("Debug") ?></option>
58
+ <option value="info" data-color="white"><?php echo $this->sh->getLogLevelTranslated("Info") ?></option>
59
+ <option value="notice" data-color="rgb(219, 219, 183)"><?php echo $this->sh->getLogLevelTranslated("Notice") ?></option>
60
+ <option value="warning" data-color="#F7D358"><?php echo $this->sh->getLogLevelTranslated("Warning") ?></option>
61
+ <option value="error" data-color="#F79F81"><?php echo $this->sh->getLogLevelTranslated("Error") ?></option>
62
+ <option value="critical" data-color="#FA5858"><?php echo $this->sh->getLogLevelTranslated("Critical") ?></option>
63
+ <option value="alert" data-color="rgb(199, 69, 69)"><?php echo $this->sh->getLogLevelTranslated("Alert") ?></option>
64
+ <option value="emergency" data-color="#DF0101"><?php echo $this->sh->getLogLevelTranslated("Emergency") ?></option>
65
+ </select>
66
+ </p>
67
+
68
+ <p>
69
+ <select name="messages" class="SimpleHistory__filters__filter SimpleHistory__filters__filter--logger" style="width: 300px"
70
+ placeholder="<?php _e("All messages", "simple-history") ?>" multiple>
71
+ <?php
72
+ foreach ($loggers_user_can_read as $logger) {
73
+
74
+ $logger_info = $logger["instance"]->getInfo();
75
+ $logger_slug = $logger["instance"]->slug;
76
+
77
+ // Get labels for logger
78
+ if ( isset( $logger_info["labels"]["search"] ) ) {
79
+
80
+ printf('<optgroup label="%1$s">', esc_attr( $logger_info["labels"]["search"]["label"] ) );
81
+
82
+ // If all activity
83
+ if ( ! empty( $logger_info["labels"]["search"]["label_all"] ) ) {
84
+
85
+ $arr_all_search_messages = array();
86
+ foreach ( $logger_info["labels"]["search"]["options"] as $option_key => $option_messages ) {
87
+ $arr_all_search_messages = array_merge($arr_all_search_messages, $option_messages);
88
+ }
89
+
90
+ foreach ($arr_all_search_messages as $key => $val) {
91
+ $arr_all_search_messages[ $key ] = $logger_slug . ":" . $val;
92
+ }
93
+
94
+ printf('<option value="%2$s">%1$s</option>', esc_attr( $logger_info["labels"]["search"]["label_all"] ), esc_attr( implode(",", $arr_all_search_messages) ));
95
 
 
 
96
  }
97
 
98
+ // For each specific search option
99
+ foreach ( $logger_info["labels"]["search"]["options"] as $option_key => $option_messages ) {
100
 
101
+ foreach ($option_messages as $key => $val) {
102
+ $option_messages[ $key ] = $logger_slug . ":" . $val;
103
+ }
104
 
105
+ $str_option_messages = implode(",", $option_messages);
106
+ printf('<option value="%2$s">%1$s</option>', esc_attr( $option_key ), esc_attr( $str_option_messages ));
107
 
 
 
108
  }
109
 
110
+ printf('</optgroup>');
 
111
 
112
  }
113
 
 
 
114
  }
115
+ ?>
116
+ </select>
117
+ </p>
118
+
119
+ <p>
120
+ <input type="text"
121
+ name = "user"
122
+ class="SimpleHistory__filters__filter SimpleHistory__filters__filter--user"
123
+ style="width: 300px"
124
+ placeholder="<?php _e("All users", "simple-history") ?>" />
125
+ </p>
126
+
127
+ <?php
128
+ global $wpdb;
129
+ $table_name = $wpdb->prefix . SimpleHistory::DBTABLE;
130
+ $loggers_user_can_read_sql_in = $this->sh->getLoggersThatUserCanRead(null, "sql");
131
+ $sql_dates = sprintf('
132
+ SELECT DISTINCT ( date_format(DATE, "%%Y-%%m") ) AS yearMonth
133
+ FROM %s
134
+ WHERE logger IN %s
135
+ ORDER BY yearMonth DESC
136
+ ', $table_name, // 1
137
+ $loggers_user_can_read_sql_in // 2
138
+ );
139
+
140
+ $result_months = $wpdb->get_results($sql_dates);
141
+ ?>
142
+ <p>
143
+ <select class="SimpleHistory__filters__filter SimpleHistory__filters__filter--date"
144
+ name="months"
145
+ placeholder="<?php echo _e("All dates", "simple-history") ?>" multiple>
146
+ <?php
147
+ foreach ($result_months as $row) {
148
+ printf(
149
+ '<option value="%1$s">%2$s</option>',
150
+ $row->yearMonth,
151
+ date_i18n( "F Y", strtotime($row->yearMonth) )
152
+ );
153
+ }
154
+ ?>
155
+ </select>
156
+ </p>
157
 
158
+ <p>
159
+ <button class="button SimpleHistoryFilterDropin-doFilterButton SimpleHistoryFilterDropin-doFilterButton--second js-SimpleHistoryFilterDropin-doFilter"><?php _e("Search events", "simple-history") ?></button>
160
+ <button type="button" class="SimpleHistoryFilterDropin-showMoreFilters SimpleHistoryFilterDropin-showMoreFilters--second js-SimpleHistoryFilterDropin-showMoreFilters"><?php _ex("Hide options", "Filter dropin: button to hide more search options", "simple-history") ?></button>
161
+ </p>
162
 
 
 
 
 
 
 
 
163
 
164
+ </div><!-- // more filters -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
 
166
+ <!--
167
  <p>
168
+ <button class="button js-SimpleHistoryFilterDropin-doFilter"><?php _e("Search", "simple-history") ?></button>
169
  </p>
170
+ -->
171
 
172
  </form>
173
 
250
  }
251
 
252
  } // end class
 
dropins/SimpleHistoryIpInfoDropin.css CHANGED
@@ -5,3 +5,138 @@
5
  /* cursor: pointer;
6
  text-decoration: underline;*/
7
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  /* cursor: pointer;
6
  text-decoration: underline;*/
7
  }
8
+
9
+ .SimpleHistoryIpInfoDropin__popup {
10
+ position: absolute;
11
+ visibility: hidden;
12
+ opacity: 0;
13
+ top: 0;
14
+ left: 0;
15
+ width: 350px;
16
+ min-height: 200px;
17
+ margin-left: -20px;
18
+ margin-top: -5px;
19
+ border: 1px solid #ccc;
20
+ background-color: rgba(255, 255, 255, 1);
21
+ box-shadow: 0px 1px 4px 0px rgba(0, 0, 0, 0.2);
22
+ padding: 10px;
23
+ z-index: 5;
24
+ /* fade out then hide visibility */
25
+ transition: visibility 0 .25s, opacity .25s;
26
+ }
27
+
28
+ .SimpleHistoryIpInfoDropin__popup p {
29
+ margin: 0;
30
+ }
31
+
32
+ .SimpleHistoryIpInfoDropin__popup.is-visible {
33
+ visibility: visible;
34
+ opacity: 1;
35
+ /* make visible immediately and start opacity directly */
36
+ transition: visibility 0, opacity .25s 0s;
37
+ }
38
+
39
+ .SimpleHistoryIpInfoDropin__popupArrow {
40
+ /*width: 40px;
41
+ height: 40px;
42
+ font-size: 40px;
43
+ position: absolute;
44
+ top: -25px;
45
+ left: 0;*/
46
+ }
47
+
48
+ .SimpleHistoryIpInfoDropin__popupArrow {
49
+ position: absolute;
50
+ background: #fff;
51
+ border: none;
52
+ top: 0;
53
+ left: 40px;
54
+ }
55
+
56
+ .SimpleHistoryIpInfoDropin__popupArrow:after, .SimpleHistoryIpInfoDropin__popupArrow:before {
57
+ bottom: 100%;
58
+ left: 50%;
59
+ border: solid transparent;
60
+ content: " ";
61
+ height: 0;
62
+ width: 0;
63
+ position: absolute;
64
+ pointer-events: none;
65
+ }
66
+
67
+ .SimpleHistoryIpInfoDropin__popupArrow:after {
68
+ border-color: rgba(255, 255, 255, 0);
69
+ border-bottom-color: #fff;
70
+ border-width: 10px;
71
+ margin-left: -10px;
72
+ }
73
+ .SimpleHistoryIpInfoDropin__popupArrow:before {
74
+ border-color: rgba(204, 204, 204, 0);
75
+ border-bottom-color: #ccc;
76
+ border-width: 11px;
77
+ margin-left: -11px;
78
+ }
79
+
80
+ .SimpleHistoryIpInfoDropin__ipInfoTable {
81
+ width: 100%;
82
+ border-collapse: collapse;
83
+ }
84
+
85
+ .SimpleHistoryIpInfoDropin__ipInfoTable tr {
86
+
87
+ }
88
+
89
+ .SimpleHistoryIpInfoDropin__ipInfoTable th,
90
+ .SimpleHistoryIpInfoDropin__ipInfoTable td {
91
+ vertical-align: top;
92
+ text-align: left;
93
+ padding: 5px 5px;
94
+ border-top: 1px solid #eee;
95
+ }
96
+
97
+ .SimpleHistoryIpInfoDropin__ipInfoTable tr:first-of-type th,
98
+ .SimpleHistoryIpInfoDropin__ipInfoTable tr:first-of-type td {
99
+ border-top: 0;
100
+ }
101
+
102
+ .SimpleHistoryIpInfoDropin__ipInfoTable__mapRow a {
103
+ display: inline-block;
104
+ }
105
+
106
+ .SimpleHistoryIpInfoDropin__ipInfoTable__mapRow td {
107
+ padding: 0;
108
+ }
109
+
110
+ .SimpleHistoryIpInfoDropin__provider {
111
+ text-align: right;
112
+ font-size: 12px;
113
+ color: #888;
114
+ margin-top: .5em !important;
115
+ }
116
+
117
+ .SimpleHistoryIpInfoDropin__popupClose {
118
+ position: absolute;
119
+ width: 21px;
120
+ height: 20px;
121
+ background-color: rgba(200, 200, 200, .5);
122
+ border-radius: 50%;
123
+ top: 5px;
124
+ right: 5px;
125
+ line-height: 1;
126
+ font-size: 20px;
127
+ text-align: center;
128
+ }
129
+
130
+ .SimpleHistoryIpInfoDropin__popupCloseButton {
131
+ padding: 0 5px;
132
+ margin: 0;
133
+ background: none;
134
+ border: 0;
135
+ line-height: 1;
136
+ cursor: pointer;
137
+ }
138
+
139
+ .SimpleHistoryIpInfoDropin__popupCloseButton:hover {
140
+ /* same color as wp popups close on hover */
141
+ color: rgb(46, 162, 204);
142
+ }
dropins/SimpleHistoryIpInfoDropin.js CHANGED
@@ -2,7 +2,13 @@
2
  (function($) {
3
 
4
  var $logItems = $(".SimpleHistoryLogitems");
 
 
5
 
 
 
 
 
6
  $logItems.on("click", ".SimpleHistoryLogitem__anonUserWithIp__theIp", function(e) {
7
 
8
  var $elm = $(this);
@@ -12,10 +18,62 @@
12
  return;
13
  }
14
 
 
 
15
  return lookupIpAddress(ipAddress);
16
 
17
  });
18
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  function lookupIpAddress(ipAddress) {
20
 
21
  $.get("http://ipinfo.io/" + ipAddress, onIpAddressLookupkResponse, "jsonp");
@@ -24,9 +82,10 @@
24
 
25
  }
26
 
 
27
  function onIpAddressLookupkResponse(d) {
28
-
29
- console.log("got data", d);
30
 
31
  }
32
 
2
  (function($) {
3
 
4
  var $logItems = $(".SimpleHistoryLogitems");
5
+ var $popup = $(".SimpleHistoryIpInfoDropin__popup");
6
+ var $popupContent = $popup.find(".SimpleHistoryIpInfoDropin__popupContent");
7
 
8
+ var templateLoading = wp.template("simple-history-ipinfodropin-popup-loading");
9
+ var templateLoaded = wp.template("simple-history-ipinfodropin-popup-loaded");
10
+
11
+ // Click on link with IP-number
12
  $logItems.on("click", ".SimpleHistoryLogitem__anonUserWithIp__theIp", function(e) {
13
 
14
  var $elm = $(this);
18
  return;
19
  }
20
 
21
+ showPopup($elm);
22
+
23
  return lookupIpAddress(ipAddress);
24
 
25
  });
26
 
27
+ // Close popup
28
+ $popup.on("click", ".SimpleHistoryIpInfoDropin__popupCloseButton", hidePopup);
29
+ $(window).on("click", maybeHidePopup);
30
+ $(window).on("keyup", maybeHidePopup);
31
+ $(document).on("SimpleHistory:logReloadStart", hidePopup);
32
+
33
+ // Position and then show popup.
34
+ // Content is not added yet
35
+ function showPopup($elm) {
36
+
37
+ var offset = $elm.offset();
38
+
39
+ $popup.css({
40
+ //top: offset.top + $elm.outerHeight(),
41
+ top: offset.top,
42
+ left: offset.left
43
+ });
44
+
45
+ $popupContent.html(templateLoading());
46
+
47
+ $popup.addClass("is-visible");
48
+
49
+ }
50
+
51
+ function hidePopup(e) {
52
+
53
+ $popup.removeClass("is-visible");
54
+
55
+ }
56
+
57
+ function maybeHidePopup(e) {
58
+
59
+ var $target = (e.target);
60
+
61
+ // Don't hide if click inside popup
62
+ if ($.contains($popup.get(0), $target) ) {
63
+ return true;
64
+ }
65
+
66
+ // If initiated by keyboard but not esc, then don't close
67
+ if (e.originalEvent.type == "keyup" && e.originalEvent.keyCode != 27) {
68
+ return;
69
+ }
70
+
71
+ // Else it should be ok to hide
72
+ hidePopup();
73
+
74
+ }
75
+
76
+ // Init request to lookup address
77
  function lookupIpAddress(ipAddress) {
78
 
79
  $.get("http://ipinfo.io/" + ipAddress, onIpAddressLookupkResponse, "jsonp");
82
 
83
  }
84
 
85
+ // Function called when ip adress lookup succeeded
86
  function onIpAddressLookupkResponse(d) {
87
+
88
+ $popupContent.html(templateLoaded(d));
89
 
90
  }
91
 
dropins/SimpleHistoryIpInfoDropin.php CHANGED
@@ -15,11 +15,13 @@ class SimpleHistoryIpInfoDropin {
15
  $this->sh = $sh;
16
 
17
  // Since it's not quite done yet, it's for da devs only for now
18
- if ( ! defined("SIMPLE_HISTORY_DEV") || ! SIMPLE_HISTORY_DEV ) {
19
  return;
20
- }
21
 
22
  add_action("simple_history/enqueue_admin_scripts", array($this, "enqueue_admin_scripts"));
 
 
23
 
24
  }
25
 
@@ -33,5 +35,138 @@ class SimpleHistoryIpInfoDropin {
33
 
34
  }
35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  } // end class
37
 
15
  $this->sh = $sh;
16
 
17
  // Since it's not quite done yet, it's for da devs only for now
18
+ /*if ( ! defined("SIMPLE_HISTORY_DEV") || ! SIMPLE_HISTORY_DEV ) {
19
  return;
20
+ }*/
21
 
22
  add_action("simple_history/enqueue_admin_scripts", array($this, "enqueue_admin_scripts"));
23
+ add_action("simple_history/admin_footer", array($this, "add_js_template"));
24
+
25
 
26
  }
27
 
35
 
36
  }
37
 
38
+ public function add_js_template() {
39
+ ?>
40
+
41
+ <div class="SimpleHistoryIpInfoDropin__popup">
42
+ <div class="SimpleHistoryIpInfoDropin__popupArrow"></div>
43
+ <div class="SimpleHistoryIpInfoDropin__popupClose"><button class="SimpleHistoryIpInfoDropin__popupCloseButton">×</button></div>
44
+ <div class="SimpleHistoryIpInfoDropin__popupContent"></div>
45
+ </div>
46
+
47
+ <script type="text/html" id="tmpl-simple-history-ipinfodropin-popup-loading">
48
+ <!-- <p>Getting IP info ...</p> -->
49
+ </script>
50
+
51
+ <script type="text/html" id="tmpl-simple-history-ipinfodropin-popup-loaded">
52
+ <!--
53
+ {
54
+ "ip": "8.8.8.8",
55
+ "hostname": "google-public-dns-a.google.com",
56
+ "city": "Mountain View",
57
+ "region": "California",
58
+ "country": "US",
59
+ "loc": "37.3860,-122.0838",
60
+ "org": "AS15169 Google Inc.",
61
+ "postal": "94035"
62
+ }
63
+ -->
64
+ <# if ( typeof(data.bogon) != "undefined" ) { #>
65
+
66
+ <p><?php _ex("That IP address does not seem like a public one.", "IP Info Dropin", "simple-history"); ?></p>
67
+
68
+ <# } else { #>
69
+
70
+ <table class="SimpleHistoryIpInfoDropin__ipInfoTable">
71
+
72
+ <tr class="SimpleHistoryIpInfoDropin__ipInfoTable__mapRow">
73
+ <td colspan="2">
74
+ <# if ( typeof(data.loc) != "undefined" && data.loc ) { #>
75
+ <a href="https://www.google.com/maps/place/{{ data.loc }}/@{{ data.loc }},6z" target="_blank">
76
+ <img src="https://maps.googleapis.com/maps/api/staticmap?center={{ data.loc }}&zoom=7&size=350x100&sensor=false" width="350" height="100" alt="Google Map">
77
+ </a>
78
+ <# } #>
79
+ </td>
80
+ </tr>
81
+
82
+ <# if ( typeof(data.ip) != "undefined" && data.ip ) { #>
83
+ <tr>
84
+ <td>
85
+ <?php _ex("IP address", "IP Info Dropin", "simple-history"); ?>
86
+ </td>
87
+ <td>
88
+ {{ data.ip }}
89
+ </td>
90
+ </tr>
91
+ <# } #>
92
+
93
+ <# if ( typeof(data.hostname) != "undefined" && data.hostname ) { #>
94
+ <tr>
95
+ <td>
96
+ <?php _ex("Hostname", "IP Info Dropin", "simple-history"); ?>
97
+ </td>
98
+ <td>
99
+ {{ data.hostname }}
100
+ </td>
101
+ </tr>
102
+ <# } #>
103
+
104
+ <# if ( typeof(data.org) != "undefined" && data.org ) { #>
105
+ <tr>
106
+ <td>
107
+ <?php _ex("Network", "IP Info Dropin", "simple-history"); ?>
108
+ </td>
109
+ <td>
110
+ {{ data.org }}
111
+ </td>
112
+ </tr>
113
+ <# } #>
114
+
115
+ <# if ( typeof(data.network) != "undefined" && data.network ) { #>
116
+ <tr>
117
+ <td>
118
+ <?php _ex("Network", "IP Info Dropin", "simple-history"); ?>
119
+ </td>
120
+ <td>
121
+ {{ data.network }}
122
+ </td>
123
+ </tr>
124
+ <# } #>
125
+
126
+ <# if ( typeof(data.city) != "undefined" && data.city ) { #>
127
+ <tr>
128
+ <td>
129
+ <?php _ex("City", "IP Info Dropin", "simple-history"); ?>
130
+ </td>
131
+ <td>
132
+ {{ data.city }}
133
+ </td>
134
+ </tr>
135
+ <# } #>
136
+
137
+ <# if ( typeof(data.region) != "undefined" && data.region ) { #>
138
+ <tr>
139
+ <td>
140
+ <?php _ex("Region", "IP Info Dropin", "simple-history"); ?>
141
+ </td>
142
+ <td>
143
+ {{ data.region }}
144
+ </td>
145
+ </tr>
146
+ <# } #>
147
+
148
+ <# if ( typeof(data.country) != "undefined" && data.country ) { #>
149
+ <tr>
150
+ <td>
151
+ <?php _ex("Country", "IP Info Dropin", "simple-history"); ?>
152
+ </td>
153
+ <td>
154
+ {{ data.country }}
155
+ </td>
156
+ </tr>
157
+ <# } #>
158
+
159
+ </table>
160
+
161
+ <p class="SimpleHistoryIpInfoDropin__provider">
162
+ <?php printf( _x('IP info provided by %1$s ipinfo.io %2$s', "IP Info Dropin", "simple-history"), "<a href='http://ipinfo.io/{{ data.ip }}' target='_blank'>", "</a>" ); ?>
163
+ </p>
164
+
165
+ <# } #>
166
+
167
+ </script>
168
+ <?php
169
+ }
170
+
171
  } // end class
172
 
dropins/SimpleHistoryNewRowsNotifier.php CHANGED
@@ -63,7 +63,6 @@ class SimpleHistoryNewRowsNotifier {
63
  $logQueryArgs = $apiArgs;
64
 
65
  $logQuery = new SimpleHistoryLogQuery();
66
-
67
  $answer = $logQuery->query( $logQueryArgs );
68
 
69
  // Use our own repsonse array instead of $answer to keep size down
@@ -71,6 +70,7 @@ class SimpleHistoryNewRowsNotifier {
71
 
72
  $numNewRows = isset( $answer["total_row_count"] ) ? $answer["total_row_count"] : 0;
73
  $json_data["num_new_rows"] = $numNewRows;
 
74
 
75
  if ($numNewRows) {
76
 
63
  $logQueryArgs = $apiArgs;
64
 
65
  $logQuery = new SimpleHistoryLogQuery();
 
66
  $answer = $logQuery->query( $logQueryArgs );
67
 
68
  // Use our own repsonse array instead of $answer to keep size down
70
 
71
  $numNewRows = isset( $answer["total_row_count"] ) ? $answer["total_row_count"] : 0;
72
  $json_data["num_new_rows"] = $numNewRows;
73
+ $json_data["num_mysql_queries"] = get_num_queries();
74
 
75
  if ($numNewRows) {
76
 
dropins/SimpleHistoryRSSDropin.php CHANGED
@@ -12,7 +12,7 @@ Author: Pär Thernström
12
  class SimpleHistoryRSSDropin {
13
 
14
  function __construct($sh) {
15
-
16
  $this->sh = $sh;
17
 
18
  if ( ! function_exists('get_editable_roles') ) {
@@ -32,7 +32,7 @@ class SimpleHistoryRSSDropin {
32
  }
33
 
34
  /**
35
- * Add settings for the RSS feed
36
  * + also regenerates the secret if requested
37
  */
38
  public function add_settings() {
@@ -43,15 +43,15 @@ class SimpleHistoryRSSDropin {
43
  $settings_section_rss_id = "simple_history_settings_section_rss";
44
 
45
  add_settings_section(
46
- $settings_section_rss_id,
47
- _x("RSS feed", "rss settings headline", "simple-history"), // No title __("General", "simple-history"),
48
- array($this, "settings_section_output"),
49
  SimpleHistory::SETTINGS_MENU_SLUG // same slug as for options menu page
50
  );
51
 
52
  // RSS address
53
  add_settings_field(
54
- "simple_history_rss_feed",
55
  __("Address", "simple-history"),
56
  array($this, "settings_field_rss"),
57
  SimpleHistory::SETTINGS_MENU_SLUG,
@@ -60,7 +60,7 @@ class SimpleHistoryRSSDropin {
60
 
61
  // Regnerate address
62
  add_settings_field(
63
- "simple_history_rss_feed_regenerate_secret",
64
  __("Regenerate", "simple-history"),
65
  array($this, "settings_field_rss_regenerate"),
66
  SimpleHistory::SETTINGS_MENU_SLUG,
@@ -70,7 +70,7 @@ class SimpleHistoryRSSDropin {
70
  // Create new RSS secret
71
  $create_new_secret = false;
72
  $create_secret_nonce_name = "simple_history_rss_secret_regenerate_nonce";
73
-
74
  if ( isset( $_GET[$create_secret_nonce_name] ) && wp_verify_nonce( $_GET[$create_secret_nonce_name], 'simple_history_rss_update_secret')) {
75
 
76
  $create_new_secret = true;
@@ -95,7 +95,7 @@ class SimpleHistoryRSSDropin {
95
  * Check if current request is a request for the RSS feed
96
  */
97
  function check_for_rss_feed_request() {
98
-
99
  // check for RSS
100
  // don't know if this is the right way to do this, but it seems to work!
101
  if ( isset( $_GET["simple_history_get_rss"] ) ) {
@@ -104,7 +104,7 @@ class SimpleHistoryRSSDropin {
104
  exit;
105
 
106
  }
107
-
108
  }
109
 
110
  /**
@@ -136,17 +136,17 @@ class SimpleHistoryRSSDropin {
136
  wp_die( 'Nothing here.' );
137
  }
138
 
139
- header ("Content-Type:text/xml");
140
  echo '<?xml version="1.0" encoding="UTF-8"?>';
141
  $self_link = $this->get_rss_address();
142
-
143
  if ( $rss_secret_option === $rss_secret_get ) {
144
-
145
  ?>
146
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
147
  <channel>
148
- <title><?php printf(__("History for %s", 'simple-history'), get_bloginfo("name")) ?></title>
149
- <description><?php printf(__("WordPress History for %s", 'simple-history'), get_bloginfo("name")) ?></description>
150
  <link><?php echo get_bloginfo("url") ?></link>
151
  <atom:link href="<?php echo $self_link; ?>" rel="self" type="application/atom+xml" />
152
  <?php
@@ -166,7 +166,7 @@ class SimpleHistoryRSSDropin {
166
  );
167
 
168
  $args = apply_filters("simple_history/rss_feed_args", $args);
169
-
170
  $logQuery = new SimpleHistoryLogQuery();
171
  $queryResults = $logQuery->query($args);
172
 
@@ -174,30 +174,36 @@ class SimpleHistoryRSSDropin {
174
  // remove_action( $action_tag, array($this, "on_can_read_single_logger") );
175
 
176
  foreach ($queryResults["log_rows"] as $row) {
177
-
178
  $header_output = $this->sh->getLogRowHeaderOutput( $row );
179
  $text_output = $this->sh->getLogRowPlainTextOutput( $row );
180
  $details_output = $this->sh->getLogRowDetailsOutput( $row );
181
  $item_guid = home_url() . "?SimpleHistoryGuid=" . $row->id;
182
 
183
  #$item_title = wp_kses( $header_output . ": " . $text_output, array() );
184
- $item_title = wp_kses( $text_output, array() );
185
-
 
 
186
  ?>
187
  <item>
188
- <title><?php echo $item_title; ?></title>
189
  <description><![CDATA[
190
  <p><?php echo $header_output ?></p>
191
  <p><?php echo $text_output ?></p>
192
  <div><?php echo $details_output ?></div>
 
193
  <?php
194
  $occasions = $row->subsequentOccasions - 1;
195
  if ( $occasions ) {
196
- printf( _n('+%1$s occasion', '+%1$s occasions', "simple-history"), $occasions );
197
  }
198
  ?>
199
  ]]></description>
200
- <author><?php echo $row->initiator ?></author>
 
 
 
201
  <pubDate><?php echo date("D, d M Y H:i:s", strtotime($row->date)) ?> GMT</pubDate>
202
  <guid isPermaLink="false"><?php echo $item_guid ?></guid>
203
  <link><?php echo $item_guid ?></link>
@@ -211,7 +217,7 @@ class SimpleHistoryRSSDropin {
211
  [level] =&gt; info
212
  [date] =&gt; 2014-10-15 06:50:01
213
  [message] =&gt; Updated plugin &quot;{plugin_name}&quot; from {plugin_prev_version} to {plugin_version}
214
- [type] =&gt;
215
  [initiator] =&gt; wp_user
216
  [occasionsID] =&gt; 75e8aeab3e43b37f8a458f3744c4995f
217
  [subsequentOccasions] =&gt; 1
@@ -265,7 +271,7 @@ class SimpleHistoryRSSDropin {
265
  </channel>
266
  </rss>
267
  <?php
268
-
269
  }
270
 
271
  } // rss
@@ -277,9 +283,9 @@ class SimpleHistoryRSSDropin {
277
  * @return string new secret
278
  */
279
  function update_rss_secret() {
280
-
281
  $rss_secret = "";
282
-
283
  for ($i=0; $i<20; $i++) {
284
  $rss_secret .= chr(rand(97,122));
285
  }
@@ -304,7 +310,7 @@ class SimpleHistoryRSSDropin {
304
  * Output for settings field that regenerates the RSS adress/secret
305
  */
306
  function settings_field_rss_regenerate() {
307
-
308
  $update_link = add_query_arg("", "");
309
  $update_link = wp_nonce_url( $update_link, "simple_history_rss_update_secret", "simple_history_rss_secret_regenerate_nonce" );
310
 
@@ -324,7 +330,7 @@ class SimpleHistoryRSSDropin {
324
  * @return string URL
325
  */
326
  function get_rss_address() {
327
-
328
  $rss_secret = get_option("simple_history_rss_secret");
329
  $rss_address = add_query_arg(array("simple_history_get_rss" => "1", "rss_secret" => $rss_secret), get_bloginfo("url") . "/");
330
  $rss_address = htmlspecialchars($rss_address, ENT_COMPAT, "UTF-8");
12
  class SimpleHistoryRSSDropin {
13
 
14
  function __construct($sh) {
15
+
16
  $this->sh = $sh;
17
 
18
  if ( ! function_exists('get_editable_roles') ) {
32
  }
33
 
34
  /**
35
+ * Add settings for the RSS feed
36
  * + also regenerates the secret if requested
37
  */
38
  public function add_settings() {
43
  $settings_section_rss_id = "simple_history_settings_section_rss";
44
 
45
  add_settings_section(
46
+ $settings_section_rss_id,
47
+ _x("RSS feed", "rss settings headline", "simple-history"), // No title __("General", "simple-history"),
48
+ array($this, "settings_section_output"),
49
  SimpleHistory::SETTINGS_MENU_SLUG // same slug as for options menu page
50
  );
51
 
52
  // RSS address
53
  add_settings_field(
54
+ "simple_history_rss_feed",
55
  __("Address", "simple-history"),
56
  array($this, "settings_field_rss"),
57
  SimpleHistory::SETTINGS_MENU_SLUG,
60
 
61
  // Regnerate address
62
  add_settings_field(
63
+ "simple_history_rss_feed_regenerate_secret",
64
  __("Regenerate", "simple-history"),
65
  array($this, "settings_field_rss_regenerate"),
66
  SimpleHistory::SETTINGS_MENU_SLUG,
70
  // Create new RSS secret
71
  $create_new_secret = false;
72
  $create_secret_nonce_name = "simple_history_rss_secret_regenerate_nonce";
73
+
74
  if ( isset( $_GET[$create_secret_nonce_name] ) && wp_verify_nonce( $_GET[$create_secret_nonce_name], 'simple_history_rss_update_secret')) {
75
 
76
  $create_new_secret = true;
95
  * Check if current request is a request for the RSS feed
96
  */
97
  function check_for_rss_feed_request() {
98
+
99
  // check for RSS
100
  // don't know if this is the right way to do this, but it seems to work!
101
  if ( isset( $_GET["simple_history_get_rss"] ) ) {
104
  exit;
105
 
106
  }
107
+
108
  }
109
 
110
  /**
136
  wp_die( 'Nothing here.' );
137
  }
138
 
139
+ header("Content-Type: text/xml; charset=utf-8");
140
  echo '<?xml version="1.0" encoding="UTF-8"?>';
141
  $self_link = $this->get_rss_address();
142
+
143
  if ( $rss_secret_option === $rss_secret_get ) {
144
+
145
  ?>
146
  <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
147
  <channel>
148
+ <title><![CDATA[<?php printf(__("History for %s", 'simple-history'), get_bloginfo("name")) ?>]]></title>
149
+ <description><![CDATA[<?php printf(__("WordPress History for %s", 'simple-history'), get_bloginfo("name")) ?>]]></description>
150
  <link><?php echo get_bloginfo("url") ?></link>
151
  <atom:link href="<?php echo $self_link; ?>" rel="self" type="application/atom+xml" />
152
  <?php
166
  );
167
 
168
  $args = apply_filters("simple_history/rss_feed_args", $args);
169
+
170
  $logQuery = new SimpleHistoryLogQuery();
171
  $queryResults = $logQuery->query($args);
172
 
174
  // remove_action( $action_tag, array($this, "on_can_read_single_logger") );
175
 
176
  foreach ($queryResults["log_rows"] as $row) {
177
+
178
  $header_output = $this->sh->getLogRowHeaderOutput( $row );
179
  $text_output = $this->sh->getLogRowPlainTextOutput( $row );
180
  $details_output = $this->sh->getLogRowDetailsOutput( $row );
181
  $item_guid = home_url() . "?SimpleHistoryGuid=" . $row->id;
182
 
183
  #$item_title = wp_kses( $header_output . ": " . $text_output, array() );
184
+ $item_title = $this->sh->getLogLevelTranslated( $row->level ) . ": " . wp_kses( $text_output, array() );
185
+
186
+ $level_output = sprintf( __('Severity level: %1$s'), $this->sh->getLogLevelTranslated( $row->level ));
187
+
188
  ?>
189
  <item>
190
+ <title><![CDATA[<?php echo $item_title; ?>]]></title>
191
  <description><![CDATA[
192
  <p><?php echo $header_output ?></p>
193
  <p><?php echo $text_output ?></p>
194
  <div><?php echo $details_output ?></div>
195
+ <p><?php echo $level_output ?></p>
196
  <?php
197
  $occasions = $row->subsequentOccasions - 1;
198
  if ( $occasions ) {
199
+ printf( _n( '+%1$s occasion', '+%1$s occasions', $occasions, 'simple-history' ), $occasions );
200
  }
201
  ?>
202
  ]]></description>
203
+ <?php
204
+ // author must be email to validate, but the field is optional, so we skip it
205
+ /* <author><?php echo $row->initiator ?></author> */
206
+ ?>
207
  <pubDate><?php echo date("D, d M Y H:i:s", strtotime($row->date)) ?> GMT</pubDate>
208
  <guid isPermaLink="false"><?php echo $item_guid ?></guid>
209
  <link><?php echo $item_guid ?></link>
217
  [level] =&gt; info
218
  [date] =&gt; 2014-10-15 06:50:01
219
  [message] =&gt; Updated plugin &quot;{plugin_name}&quot; from {plugin_prev_version} to {plugin_version}
220
+ [type] =&gt;
221
  [initiator] =&gt; wp_user
222
  [occasionsID] =&gt; 75e8aeab3e43b37f8a458f3744c4995f
223
  [subsequentOccasions] =&gt; 1
271
  </channel>
272
  </rss>
273
  <?php
274
+
275
  }
276
 
277
  } // rss
283
  * @return string new secret
284
  */
285
  function update_rss_secret() {
286
+
287
  $rss_secret = "";
288
+
289
  for ($i=0; $i<20; $i++) {
290
  $rss_secret .= chr(rand(97,122));
291
  }
310
  * Output for settings field that regenerates the RSS adress/secret
311
  */
312
  function settings_field_rss_regenerate() {
313
+
314
  $update_link = add_query_arg("", "");
315
  $update_link = wp_nonce_url( $update_link, "simple_history_rss_update_secret", "simple_history_rss_secret_regenerate_nonce" );
316
 
330
  * @return string URL
331
  */
332
  function get_rss_address() {
333
+
334
  $rss_secret = get_option("simple_history_rss_secret");
335
  $rss_address = add_query_arg(array("simple_history_get_rss" => "1", "rss_secret" => $rss_secret), get_bloginfo("url") . "/");
336
  $rss_address = htmlspecialchars($rss_address, ENT_COMPAT, "UTF-8");
dropins/SimpleHistorySettingsLogtestDropin.php CHANGED
@@ -11,7 +11,7 @@ class SimpleHistorySettingsLogtestDropin {
11
  if ( ! defined("SIMPLE_HISTORY_DEV") || ! SIMPLE_HISTORY_DEV ) {
12
  return;
13
  }
14
-
15
  $this->sh = $sh;
16
 
17
  // How do we register this to the settings array?
@@ -40,10 +40,10 @@ class SimpleHistorySettingsLogtestDropin {
40
  }
41
 
42
  public function on_admin_head() {
43
-
44
  ?>
45
  <script>
46
-
47
  jQuery(function($) {
48
 
49
  var button = $(".js-SimpleHistorySettingsLogtestDropin-addStuff");
@@ -51,14 +51,14 @@ class SimpleHistorySettingsLogtestDropin {
51
  var messageWorking = $(".js-SimpleHistorySettingsLogtestDropin-addStuffWorking");
52
 
53
  button.on("click", function(e) {
54
-
55
  messageWorking.show();
56
  messageDone.hide();
57
 
58
  $.post(ajaxurl, {
59
  action: "SimpleHistoryAddLogTest"
60
  }).done(function(r) {
61
-
62
  messageWorking.hide();
63
  messageDone.show();
64
 
@@ -75,7 +75,7 @@ class SimpleHistorySettingsLogtestDropin {
75
  }
76
 
77
  public function output() {
78
-
79
  ?>
80
  <h2>Test data</h2>
81
 
@@ -122,12 +122,12 @@ class SimpleHistorySettingsLogtestDropin {
122
  SimpleLogger()->info("User admin edited page 'About our company'");
123
  SimpleLogger()->warning("User 'Jessie' deleted user 'Kim'");
124
  SimpleLogger()->debug("Ok, cron job is running!");
125
-
126
  // Log entries can have placeholders and context
127
  // This makes log entried translatable and filterable
128
  for ($i = 0; $i < rand(1, 50); $i++) {
129
  SimpleLogger()->notice(
130
- "User {username} edited page {pagename}",
131
  array(
132
  "username" => "bonnyerden",
133
  "pagename" => "My test page",
@@ -145,7 +145,7 @@ class SimpleHistorySettingsLogtestDropin {
145
  // in the log overview
146
  for ($i = 0; $i < rand(1, 50); $i++) {
147
  SimpleLogger()->notice("User {username} edited page {pagename}", array(
148
- "username" => "admin",
149
  "pagename" => "My test page",
150
  "_occasionsID" => "username:1,postID:24884,action:edited"
151
  ));
@@ -221,6 +221,10 @@ class SimpleHistorySettingsLogtestDropin {
221
  "_occasionsID" => "username:1,postID:24885,action:edited"
222
  ));
223
 
 
 
 
 
224
  }
225
 
226
  }
@@ -289,4 +293,4 @@ add_action("init", function() {
289
 
290
 
291
 
292
- //*/
11
  if ( ! defined("SIMPLE_HISTORY_DEV") || ! SIMPLE_HISTORY_DEV ) {
12
  return;
13
  }
14
+
15
  $this->sh = $sh;
16
 
17
  // How do we register this to the settings array?
40
  }
41
 
42
  public function on_admin_head() {
43
+
44
  ?>
45
  <script>
46
+
47
  jQuery(function($) {
48
 
49
  var button = $(".js-SimpleHistorySettingsLogtestDropin-addStuff");
51
  var messageWorking = $(".js-SimpleHistorySettingsLogtestDropin-addStuffWorking");
52
 
53
  button.on("click", function(e) {
54
+
55
  messageWorking.show();
56
  messageDone.hide();
57
 
58
  $.post(ajaxurl, {
59
  action: "SimpleHistoryAddLogTest"
60
  }).done(function(r) {
61
+
62
  messageWorking.hide();
63
  messageDone.show();
64
 
75
  }
76
 
77
  public function output() {
78
+
79
  ?>
80
  <h2>Test data</h2>
81
 
122
  SimpleLogger()->info("User admin edited page 'About our company'");
123
  SimpleLogger()->warning("User 'Jessie' deleted user 'Kim'");
124
  SimpleLogger()->debug("Ok, cron job is running!");
125
+
126
  // Log entries can have placeholders and context
127
  // This makes log entried translatable and filterable
128
  for ($i = 0; $i < rand(1, 50); $i++) {
129
  SimpleLogger()->notice(
130
+ "User {username} edited page {pagename}",
131
  array(
132
  "username" => "bonnyerden",
133
  "pagename" => "My test page",
145
  // in the log overview
146
  for ($i = 0; $i < rand(1, 50); $i++) {
147
  SimpleLogger()->notice("User {username} edited page {pagename}", array(
148
+ "username" => "admin",
149
  "pagename" => "My test page",
150
  "_occasionsID" => "username:1,postID:24884,action:edited"
151
  ));
221
  "_occasionsID" => "username:1,postID:24885,action:edited"
222
  ));
223
 
224
+ SimpleLogger()->debug( "This is a message with no translation" );
225
+ SimpleLogger()->debug( __("Plugin"), array( "comment" => "This message is 'Plugin' and should contain text domain 'default' since it's a translation that comes with WordPress" ) );
226
+ SimpleLogger()->debug( __("Enter title of new page", "cms-tree-page-view"), array("comment" => "A translation used in CMS Tree Page View"));
227
+
228
  }
229
 
230
  }
293
 
294
 
295
 
296
+ //*/
dropins/SimpleHistorySidebarDropin.css ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ .SimpleHistory__pageSidebar {
3
+ float: right;
4
+ width: 300px;
5
+ margin-right: -340px;
6
+ }
7
+
8
+ @media only screen and (max-width: 850px) {
9
+ .SimpleHistory__pageSidebar {
10
+ width: 100%;
11
+ float: none;
12
+ margin-right: auto;
13
+ margin-top: 20px;
14
+ }
15
+ }
16
+
17
+ .SimpleHistory__pageSidebar .inside {
18
+ margin-bottom: 0;
19
+ }
20
+
21
+ .SimpleHistory__pageSidebar .metabox-holder {
22
+ padding-top: 0 !important;
23
+ }
24
+
25
+ .SimpleHistory__pageSidebar .postbox .hndle {
26
+ cursor: auto;
27
+ }
28
+
dropins/SimpleHistorySidebarDropin.php ADDED
@@ -0,0 +1,225 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Dropin Name: Sidebar
4
+ Drop Description: Outputs HTML and filters for a sidebar
5
+ Dropin URI: http://simple-history.com/
6
+ Author: Pär Thernström
7
+ */
8
+
9
+ class SimpleHistorySidebarDropin {
10
+
11
+ private $sh;
12
+
13
+ function __construct($sh) {
14
+
15
+ $this->sh = $sh;
16
+
17
+ add_action("simple_history/enqueue_admin_scripts", array($this, "enqueue_admin_scripts"));
18
+ add_action("simple_history/history_page/after_gui", array($this, "output_sidebar_html"));
19
+
20
+ // add_action("simple_history/dropin/sidebar/sidebar_html", array($this, "example_output"));
21
+
22
+ add_action("simple_history/dropin/sidebar/sidebar_html", array($this, "default_sidebar_contents"));
23
+
24
+ }
25
+
26
+ public function default_sidebar_contents() {
27
+
28
+ // Boxes that will appear randomly
29
+
30
+ // Box about GitHub
31
+ $headline = _x("Simple History is on GitHub", 'Sidebar box', 'simple-history');
32
+
33
+ $body = sprintf(
34
+ _x('You can star, fork, or report issues with this plugin over at the <a href="%1$s">GitHub page</a>.', 'Sidebar box', 'simple-history'),
35
+ 'https://github.com/bonny/WordPress-Simple-History'
36
+ );
37
+
38
+ $boxGithub = '
39
+ <div class="postbox">
40
+ <h3 class="hndle">'.$headline.'</h3>
41
+ <div class="inside">
42
+ <p>'.$body.'</p>
43
+ </div>
44
+ </div>
45
+ ';
46
+
47
+ // Box about donation
48
+ $headline = _x('Donate to support development', 'Sidebar box', 'simple-history');
49
+
50
+ $body = sprintf(
51
+ _x('If you like and use Simple History you should <a href="%1$s">donate to keep this plugin free</a>.', 'Sidebar box', 'simple-history'),
52
+ 'http://eskapism.se/sida/donate/'
53
+ );
54
+
55
+ $boxDonate = '
56
+ <div class="postbox">
57
+ <h3 class="hndle">'.$headline.'</h3>
58
+ <div class="inside">
59
+ <p>'.$body.'</p>
60
+ </div>
61
+ </div>
62
+ ';
63
+
64
+ // Box about review
65
+ $headline = _x('Review this plugin if you like it', 'Sidebar box', 'simple-history');
66
+
67
+ $body1 = sprintf(
68
+ _x('If you like Simple History then please <a href="%1$s">give it a nice review over at wordpress.org</a>.', 'Sidebar box', 'simple-history'),
69
+ 'https://wordpress.org/support/view/plugin-reviews/simple-history'
70
+ );
71
+
72
+ $body2 = _x('A good review will help new users find this plugin. And it will make the plugin author very happy :)', 'Sidebar box', 'simple-history');
73
+
74
+ $boxReview = '
75
+ <div class="postbox">
76
+ <h3 class="hndle">'.$headline.'</h3>
77
+ <div class="inside">
78
+ <p>'.$body1.'</p>
79
+ <p>'.$body2.'</p>
80
+ </div>
81
+ </div>
82
+ ';
83
+
84
+ // Box about tweeting and blogging
85
+ /*
86
+ $boxSocial = '
87
+ <div class="postbox">
88
+ <h3 class="hndle">Blog or tweet</h3>
89
+ <div class="inside">
90
+ <p>Yeah, how about that yo.</p>
91
+ </div>
92
+ </div>
93
+ ';
94
+ */
95
+
96
+ // Box about possible events missing
97
+ $boxMissingEvents = '
98
+ <div class="postbox">
99
+ <h3 class="hndle">Missing events?</h3>
100
+ <div class="inside">
101
+ <p>Do you think things are missing in the log? Let me know about it.</p>
102
+ </div>
103
+ </div>
104
+ ';
105
+ //echo $boxMissingEvents;
106
+
107
+ $arrBoxes = array(
108
+ "boxReview" => $boxReview,
109
+ "boxDonate" => $boxDonate,
110
+ "boxGithub" => $boxGithub,
111
+ );
112
+
113
+ /**
114
+ * Filter the default boxes to output in the sidebar
115
+ *
116
+ * @since 2.0.17
117
+ *
118
+ * @param array $arrBoxes array with boxes to output. Check the key to determine which box is which.
119
+ */
120
+ $arrBoxes = apply_filters("simple_history/SidebarDropin/default_sidebar_boxes", $arrBoxes);
121
+
122
+ //echo $arrBoxes[array_rand($arrBoxes)];
123
+ echo implode("", $arrBoxes); // show all
124
+
125
+ // Box to encourage people translate plugin
126
+ $current_locale = get_locale();
127
+ if ("en_US" != $current_locale) {
128
+
129
+ /** WordPress Translation Install API */
130
+ require_once ABSPATH . 'wp-admin/includes/translation-install.php';
131
+
132
+ $translations = wp_get_available_translations();
133
+
134
+ // This text does not need translation since is's only shown in English
135
+ $boxTranslationTmpl = '
136
+ <div class="postbox">
137
+ <h3 class="hndle">Translate Simple History to %1$s</h3>
138
+ <div class="inside">
139
+
140
+ <p>
141
+ It looks like Simple History is not yet translated to your language.
142
+ </p>
143
+
144
+ <p>
145
+ If you\'re interested in translating it please check out the <a href="https://developer.wordpress.org/plugins/internationalization/localization/">localization</a> part of the Plugin Handbook for info on how to translate plugins.
146
+ </p>
147
+
148
+ <p>
149
+ When you\'re done with your translation email it to me at <a href="mailto:par.thernstrom@gmail.com" rel="nofollow">par.thernstrom@gmail.com</a>
150
+ or <a href="https://github.com/bonny/WordPress-Simple-History/" rel="nofollow">add a pull request</a>.
151
+ </p>
152
+ </div>
153
+ </div>
154
+ ';
155
+
156
+ if (isset($translations[$current_locale])) {
157
+
158
+ // Check if an existing text string returns something else, and that current lang is not en
159
+ $teststring_translated = __("Just now", "simple-history");
160
+ $teststring_untranslated = "Just now";
161
+ if ($teststring_untranslated == $teststring_translated) {
162
+ // strings are the same, so plugin probably not translated
163
+ printf($boxTranslationTmpl, $translations[$current_locale]["english_name"]);
164
+ }
165
+
166
+ }
167
+ }
168
+
169
+ }
170
+
171
+ public function example_output() {
172
+ ?>
173
+ <div class="postbox">
174
+ <h3 class="hndle">Example title</h3>
175
+ <div class="inside">
176
+ <p>Example content. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Inquit, dasne adolescenti veniam? Non laboro, inquit, de nomine. In quibus doctissimi illi veteres inesse quiddam caeleste et divinum putaverunt. Duo Reges: constructio interrete. Indicant pueri, in quibus ut in speculis natura cernitur. Quod ea non occurrentia fingunt, vincunt Aristonem; Quod quidem iam fit etiam in Academia. Aliter enim nosmet ipsos nosse non possumus.</p>
177
+ </div>
178
+ </div>
179
+ <?php
180
+ }
181
+
182
+ public function enqueue_admin_scripts() {
183
+
184
+ $file_url = plugin_dir_url(__FILE__);
185
+
186
+ wp_enqueue_style("simple_history_SidebarDropin", $file_url . "SimpleHistorySidebarDropin.css", null, SimpleHistory::VERSION);
187
+
188
+ }
189
+
190
+ /**
191
+ * Output the outline for the sidebar
192
+ * Plugins and dropins simple use the filters to output contents to the sidebar
193
+ * Example HTML code to generate meta box:
194
+ *
195
+ * <div class="postbox">
196
+ * <h3 class="hndle">Title</h3>
197
+ * <div class="inside">
198
+ * <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Inquit, dasne adolescenti veniam? Non laboro, inquit, de nomine. In quibus doctissimi illi veteres inesse quiddam caeleste et divinum putaverunt. Duo Reges: constructio interrete. Indicant pueri, in quibus ut in speculis natura cernitur. Quod ea non occurrentia fingunt, vincunt Aristonem; Quod quidem iam fit etiam in Academia. Aliter enim nosmet ipsos nosse non possumus.</p>
199
+ * </div>
200
+ * </div>
201
+ *
202
+ */
203
+ public function output_sidebar_html() {
204
+
205
+ ?>
206
+ <div class="SimpleHistory__pageSidebar">
207
+
208
+ <div class="metabox-holder">
209
+
210
+ <?php
211
+ /**
212
+ * Allows to output HTML in sidebar
213
+ *
214
+ * @since 2.0.16
215
+ */
216
+ do_action("simple_history/dropin/sidebar/sidebar_html");
217
+ ?>
218
+ </div>
219
+
220
+ </div>
221
+ <?php
222
+
223
+ }
224
+
225
+ }// end class
examples.php → examples/examples.php RENAMED
@@ -3,10 +3,68 @@
3
  // No external calls allowed
4
  exit;
5
 
 
 
 
 
 
 
 
 
 
6
  /**
7
  * Some examples of filter usage and so on
8
  */
9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  // Never clear the log (default is 60 days)
11
  add_filter("simple_history/db_purge_days_interval", "__return_zero");
12
 
@@ -33,11 +91,11 @@ SimpleLogger()->debug("Ok, cron job is running!");
33
  // i.e. collapsing their entries into one expandable log item
34
  SimpleLogger()->info("This is a message sent to the log");
35
  SimpleLogger()->info("This is a message sent to the log");
36
-
37
  // Log entries can have placeholders and context
38
  // This makes log entried translatable and filterable
39
  SimpleLogger()->notice(
40
- "User {username} edited page {pagename}",
41
  array(
42
  "username" => "jessie",
43
  "pagename" => "My test page",
@@ -53,13 +111,13 @@ SimpleLogger()->notice(
53
  // in the log overview, even if the logged messages are different
54
  for ($i = 0; $i < rand(1, 50); $i++) {
55
  SimpleLogger()->notice("User {username} edited page {pagename}", array(
56
- "username" => "example_user_{$i}",
57
  "pagename" => "My test page",
58
  "_occasionsID" => "postID:24884,action:edited"
59
  ));
60
  }
61
 
62
- // Events can have different "initiators",
63
  // i.e. who was responsible for the logged event
64
  // Initiator "WORDPRESS" means that WordPress did something on it's own
65
  SimpleLogger()->info(
@@ -99,3 +157,50 @@ SimpleLogger()->info("Edited product '{pagename}'", array(
99
  "_userEmail" => "jessie@example.com",
100
  "_occasionsID" => "username:1,postID:24885,action:edited"
101
  ));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  // No external calls allowed
4
  exit;
5
 
6
+
7
+ /**
8
+ * Misc
9
+ */
10
+
11
+ // Add $_GET, $_POST, and more info to each logged event
12
+ define("SIMPLE_HISTORY_LOG_DEBUG", true);
13
+
14
+
15
  /**
16
  * Some examples of filter usage and so on
17
  */
18
 
19
+
20
+ // Skip loading of loggers
21
+ add_filter("simple_history/logger/load_logger", function($load_logger, $oneLoggerFile) {
22
+
23
+ // Don't load loggers for comments or menus, i.e. don't log changes to comments or to menus
24
+ if ( in_array($oneLoggerFile, array("SimpleCommentsLogger", "SimpleMenuLogger")) ) {
25
+ $load_logger = false;
26
+ }
27
+
28
+ return $load_logger;
29
+
30
+ }, 10, 2);
31
+
32
+
33
+ // Skip the loading of dropins
34
+ add_filter("simple_history/dropin/load_dropin", function($load_dropin, $dropinFileBasename) {
35
+
36
+ // Don't load the RSS feed dropin
37
+ if ( $dropinFileBasename == "SimpleHistoryRSSDropin" ) {
38
+ $load_dropin = false;
39
+ }
40
+
41
+ // Don't load the dropin that polls for changes
42
+ if ( $dropinFileBasename == "SimpleHistoryNewRowsNotifier" ) {
43
+ $load_dropin = false;
44
+ }
45
+
46
+ return $load_dropin;
47
+
48
+ }, 10, 2);
49
+
50
+
51
+ // Don't log failed logins
52
+ add_filter("simple_history/simple_logger/log_message_key", function($doLog, $loggerSlug, $messageKey, $SimpleLoggerLogLevelsLevel, $context) {
53
+
54
+ // Don't log login attempts to non existing users
55
+ if ( "SimpleUserLogger" == $loggerSlug && "user_unknown_login_failed" == $messageKey ) {
56
+ $doLog = false;
57
+ }
58
+
59
+ // Don't log failed logins to existing users
60
+ if ( "SimpleUserLogger" == $loggerSlug && "user_login_failed" == $messageKey ) {
61
+ $doLog = false;
62
+ }
63
+
64
+ return $doLog;
65
+
66
+ }, 10, 5);
67
+
68
  // Never clear the log (default is 60 days)
69
  add_filter("simple_history/db_purge_days_interval", "__return_zero");
70
 
91
  // i.e. collapsing their entries into one expandable log item
92
  SimpleLogger()->info("This is a message sent to the log");
93
  SimpleLogger()->info("This is a message sent to the log");
94
+
95
  // Log entries can have placeholders and context
96
  // This makes log entried translatable and filterable
97
  SimpleLogger()->notice(
98
+ "User {username} edited page {pagename}",
99
  array(
100
  "username" => "jessie",
101
  "pagename" => "My test page",
111
  // in the log overview, even if the logged messages are different
112
  for ($i = 0; $i < rand(1, 50); $i++) {
113
  SimpleLogger()->notice("User {username} edited page {pagename}", array(
114
+ "username" => "example_user_{$i}",
115
  "pagename" => "My test page",
116
  "_occasionsID" => "postID:24884,action:edited"
117
  ));
118
  }
119
 
120
+ // Events can have different "initiators",
121
  // i.e. who was responsible for the logged event
122
  // Initiator "WORDPRESS" means that WordPress did something on it's own
123
  SimpleLogger()->info(
157
  "_userEmail" => "jessie@example.com",
158
  "_occasionsID" => "username:1,postID:24885,action:edited"
159
  ));
160
+
161
+
162
+ // Test log cron things
163
+ /*
164
+ wp_schedule_event( time(), "hourly", "simple_history_cron_testhook");
165
+ */
166
+ /*
167
+ wp_clear_scheduled_hook("simple_history_cron_testhook");
168
+ add_action( 'simple_history_cron_testhook', 'simple_history_cron_testhook_function' );
169
+ function simple_history_cron_testhook_function() {
170
+ SimpleLogger()->info("This is a message inside a cron function");
171
+ }
172
+ */
173
+
174
+ /*
175
+ add_action("init", function() {
176
+
177
+ global $wp_current_filter;
178
+
179
+ $doing_cron = get_transient( 'doing_cron' );
180
+ $const_doing_cron = defined('DOING_CRON') && DOING_CRON;
181
+
182
+ if ($const_doing_cron) {
183
+
184
+ $current_filter = current_filter();
185
+
186
+ SimpleLogger()->info("This is a message inside init, trying to log crons", array(
187
+ "doing_cron" => simpleHistory::json_encode($doing_cron),
188
+ "current_filter" => $current_filter,
189
+ "wp_current_filter" => $wp_current_filter,
190
+ "wp_current_filter" => simpleHistory::json_encode( $wp_current_filter ),
191
+ "const_doing_cron" => simpleHistory::json_encode($const_doing_cron)
192
+ ));
193
+
194
+ }
195
+
196
+ }, 100);
197
+ */
198
+
199
+
200
+ /*
201
+ add_action("init", function() {
202
+
203
+ #SimpleLogger()->info("This is a regular info message" . time());
204
+
205
+ }, 100);
206
+ // */
SimpleHistory.php → inc/SimpleHistory.php RENAMED
@@ -2,17 +2,22 @@
2
 
3
  /**
4
  * Main class for Simple History
5
- */
6
  class SimpleHistory {
7
 
8
  const NAME = "Simple History";
9
- const VERSION = "2.0.6";
 
 
 
 
 
10
 
11
  /**
12
  * Capability required to view the history log
13
  */
14
  private $view_history_capability;
15
-
16
  /**
17
  * Capability required to view and edit the settings page
18
  */
@@ -41,6 +46,13 @@ class SimpleHistory {
41
  */
42
  private $doFilterGettext_currentLogger = null;
43
 
 
 
 
 
 
 
 
44
  /**
45
  * All registered settings tabs
46
  */
@@ -58,59 +70,149 @@ class SimpleHistory {
58
  function __construct() {
59
 
60
  /**
61
- * Fires before Simple History does it's init stuff
62
- *
63
- * @since 2.0
64
- *
65
- * @param SimpleHistory $SimpleHistory This class.
66
- */
67
- do_action( "simple_history/before_init", $this );
68
 
69
  $this->setupVariables();
70
 
71
  // Actions and filters, ordered by order specified in codex: http://codex.wordpress.org/Plugin_API/Action_Reference
72
- add_action( 'plugins_loaded', array($this, 'load_plugin_textdomain') );
73
- add_action( 'plugins_loaded', array($this, 'add_default_settings_tabs') );
74
- add_action( 'plugins_loaded', array($this, 'loadLoggers') );
75
- add_action( 'plugins_loaded', array($this, 'loadDropins') );
76
 
77
  // Run before loading of loggers and before menu items are added
78
- add_action( 'plugins_loaded', array($this, 'check_for_upgrade'), 5 );
79
 
80
- add_action( 'admin_menu', array($this, 'add_admin_pages') );
81
- add_action( 'admin_menu', array($this, 'add_settings') );
82
 
83
- add_action( 'admin_footer', array( $this, "add_js_templates" ) );
84
-
85
- add_action( 'wp_dashboard_setup', array($this, 'add_dashboard_widget') );
86
 
87
- add_action( 'admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
88
 
89
- add_action( 'admin_head', array( $this, "onAdminHead" ) );
 
 
 
 
 
90
 
91
  // Filters and actions not called during regular boot
92
  add_filter("gettext", array($this, 'filter_gettext'), 20, 3);
93
  add_filter("gettext_with_context", array($this, 'filter_gettext_with_context'), 20, 4);
94
 
95
- add_action( 'simple_history/history_page/before_gui', array( $this, "output_quick_stats" ) );
96
- add_action( 'simple_history/dashboard/before_gui', array( $this, "output_quick_stats" ) );
97
 
98
- add_action( 'wp_ajax_simple_history_ajax', array($this, 'ajax') );
99
- add_action( 'wp_ajax_simple_history_api', array($this, 'api') );
100
 
101
- add_filter( 'plugin_action_links_simple-history/index.php', array($this, 'plugin_action_links'), 10, 4);
 
 
102
 
103
  /**
104
- * Fires after Simple History has done it's init stuff
105
- *
106
- * @since 2.0
107
- *
108
- * @param SimpleHistory $SimpleHistory This class.
109
- */
110
- do_action( "simple_history/after_init", $this );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
 
112
- #add_action("init", array($this, "testlog_old"));
113
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
 
115
  }
116
 
@@ -118,9 +220,9 @@ class SimpleHistory {
118
 
119
  # Log that an email has been sent
120
  simple_history_add(array(
121
- "object_type" => "Email",
122
- "object_name" => "Hi there",
123
- "action" => "was sent"
124
  ));
125
 
126
  # Will show “Plugin your_plugin_name Edited” in the history log
@@ -131,20 +233,29 @@ class SimpleHistory {
131
 
132
  # Log with some extra details about the email
133
  simple_history_add(array(
134
- "object_type" => "Email",
135
- "object_name" => "Hi there",
136
- "action" => "was sent",
137
- "description" => "The database query to generate the email took .3 seconds. This is email number 4 that is sent to this user"
138
  ));
139
 
140
-
141
  }
142
 
143
  public function onAdminHead() {
144
 
145
- if ( $this->is_on_our_own_pages() ) {
146
-
147
- do_action( "simple_history/admin_head", $this );
 
 
 
 
 
 
 
 
 
 
148
 
149
  }
150
 
@@ -154,16 +265,16 @@ class SimpleHistory {
154
  * Output JS templated into footer
155
  */
156
  public function add_js_templates($hook) {
157
-
158
- if ( $this->is_on_our_own_pages() ) {
159
 
160
  ?>
161
-
162
  <script type="text/html" id="tmpl-simple-history-base">
163
 
164
  <div class="SimpleHistory__waitingForFirstLoad">
165
  <img src="<?php echo admin_url("/images/spinner.gif");?>" alt="" width="20" height="20">
166
- <?php echo _x("Loading history...", "Message visible while waiting for log to load from server the first time", "simple-history") ?>
167
  </div>
168
 
169
  <div class="SimpleHistoryLogitemsWrap">
@@ -180,38 +291,38 @@ class SimpleHistory {
180
  </script>
181
 
182
  <script type="text/html" id="tmpl-simple-history-logitems-pagination">
183
-
184
  <!-- this uses the (almost) the same html as WP does -->
185
  <div class="SimpleHistoryPaginationPages">
186
- <!--
187
- <%= page_rows_from %>–<%= page_rows_to %>
188
- <span class="SimpleHistoryPaginationDisplayNum"> of <%= total_row_count %></span>
189
  -->
190
  <span class="SimpleHistoryPaginationLinks">
191
- <a
192
- data-direction="first"
193
- class="button SimpleHistoryPaginationLink SimpleHistoryPaginationLink--firstPage <% if ( api_args.paged <= 1 ) { %> disabled <% } %>"
194
- title="<%= strings.goToTheFirstPage %>"
195
  href="#">«</a>
196
- <a
197
- data-direction="prev"
198
- class="button SimpleHistoryPaginationLink SimpleHistoryPaginationLink--prevPage <% if ( api_args.paged <= 1 ) { %> disabled <% } %>"
199
- title="<%= strings.goToThePrevPage %>"
200
  href="#">‹</a>
201
  <span class="SimpleHistoryPaginationInput">
202
- <input class="SimpleHistoryPaginationCurrentPage" title="<%= strings.currentPage %>" type="text" name="paged" value="<%= api_args.paged %>" size="4">
203
- <?php _x("of", "page n of n", "simple-history") ?>
204
- <span class="total-pages"><%= pages_count %></span>
205
  </span>
206
- <a
207
- data-direction="next"
208
- class="button SimpleHistoryPaginationLink SimpleHistoryPaginationLink--nextPage <% if ( api_args.paged >= pages_count ) { %> disabled <% } %>"
209
- title="<%= strings.goToTheNextPage %>"
210
  href="#">›</a>
211
- <a
212
- data-direction="last"
213
- class="button SimpleHistoryPaginationLink SimpleHistoryPaginationLink--lastPage <% if ( api_args.paged >= pages_count ) { %> disabled <% } %>"
214
- title="<%= strings.goToTheLastPage %>"
215
  href="#">»</a>
216
  </span>
217
  </div>
@@ -237,8 +348,8 @@ class SimpleHistory {
237
  <?php
238
 
239
  // Call plugins so they can add their js
240
- foreach ( $this->instantiatedLoggers as $one_logger ) {
241
- if( method_exists($one_logger["instance"], "adminJS" ) ) {
242
  $one_logger["instance"]->adminJS();
243
  }
244
  }
@@ -256,7 +367,7 @@ class SimpleHistory {
256
  *
257
  */
258
  public function api() {
259
-
260
  global $wpdb;
261
 
262
  // Fake slow answers
@@ -266,23 +377,22 @@ class SimpleHistory {
266
  unset($args["action"]);
267
 
268
  // Type = overview | ...
269
- $type = isset( $_GET["type"] ) ? $_GET["type"] : null;
270
 
271
- if ( empty( $args ) || ! $type ) {
272
 
273
- wp_send_json_error( array(
274
- _x("Not enough args specified", "API: not enought arguments passed", "simple-history")
275
- ) );
276
 
277
  }
278
 
279
  if (isset($args["id"])) {
280
  $args["post__in"] = array(
281
- $args["id"]
282
  );
283
  }
284
 
285
-
286
  $data = array();
287
 
288
  switch ($type) {
@@ -294,39 +404,39 @@ class SimpleHistory {
294
  // API use SimpleHistoryLogQuery, so simply pass args on to that
295
  $logQuery = new SimpleHistoryLogQuery();
296
  $data = $logQuery->query($args);
297
-
298
  $data["api_args"] = $args;
299
 
300
  // Output can be array or HMTL
301
- if ( isset( $args["format"] ) && "html" === $args["format"] ) {
302
-
303
  $data["log_rows_raw"] = array();
304
 
305
  foreach ($data["log_rows"] as $key => $oneLogRow) {
306
-
307
  $args = array();
308
  if ($type == "single") {
309
  $args["type"] = "single";
310
  }
311
 
312
- $data["log_rows"][$key] = $this->getLogRowHTMLOutput( $oneLogRow, $args);
 
313
 
314
  }
315
 
316
  } else {
317
-
318
  $data["logRows"] = $logRows;
319
  }
320
 
321
  break;
322
 
323
-
324
  default:
325
  $data[] = "Nah.";
326
 
327
  }
328
 
329
- wp_send_json_success( $data );
330
 
331
  }
332
 
@@ -335,9 +445,9 @@ class SimpleHistory {
335
  * to the untranslated text too, because that's the version we want to store
336
  * in the database.
337
  */
338
- public function filter_gettext( $translated_text, $untranslated_text, $domain ) {
339
 
340
- if ( isset( $this->doFilterGettext ) && $this->doFilterGettext ) {
341
 
342
  $this->doFilterGettext_currentLogger->messages[] = array(
343
  "untranslated_text" => $untranslated_text,
@@ -349,15 +459,15 @@ class SimpleHistory {
349
  }
350
 
351
  return $translated_text;
352
-
353
  }
354
 
355
  /**
356
  * Store messages with context
357
  */
358
- public function filter_gettext_with_context( $translated_text, $untranslated_text, $context, $domain ) {
359
 
360
- if ( isset( $this->doFilterGettext ) && $this->doFilterGettext ) {
361
 
362
  $this->doFilterGettext_currentLogger->messages[] = array(
363
  "untranslated_text" => $untranslated_text,
@@ -369,25 +479,25 @@ class SimpleHistory {
369
  }
370
 
371
  return $translated_text;
372
-
373
  }
374
 
375
  /**
376
  * Load language files.
377
  * Uses the method described here:
378
  * http://geertdedeckere.be/article/loading-wordpress-language-files-the-right-way
379
- *
380
  * @since 2.0
381
  */
382
  public function load_plugin_textdomain() {
383
 
384
  $domain = 'simple-history';
385
-
386
  // The "plugin_locale" filter is also used in load_plugin_textdomain()
387
  $locale = apply_filters('plugin_locale', get_locale(), $domain);
388
 
389
- load_textdomain($domain, WP_LANG_DIR.'/simple-history/'.$domain.'-'.$locale.'.mo');
390
- load_plugin_textdomain($domain, FALSE, dirname( $this->plugin_basename ).'/languages/');
391
 
392
  }
393
 
@@ -395,7 +505,7 @@ class SimpleHistory {
395
  * Setup variables and things
396
  */
397
  public function setupVariables() {
398
-
399
  // Capability required to view history = for who will the History page be added
400
  $this->view_history_capability = "edit_pages";
401
  $this->view_history_capability = apply_filters("simple_history_view_history_capability", $this->view_history_capability);
@@ -406,7 +516,7 @@ class SimpleHistory {
406
  $this->view_settings_capability = apply_filters("simple_history_view_settings_capability", $this->view_settings_capability);
407
  $this->view_settings_capability = apply_filters("simple_history/view_settings_capability", $this->view_settings_capability);
408
 
409
- $this->plugin_basename = plugin_basename(__DIR__ . "/index.php");
410
 
411
  }
412
 
@@ -414,35 +524,35 @@ class SimpleHistory {
414
  * Adds default tabs to settings
415
  */
416
  public function add_default_settings_tabs() {
417
-
418
  // Add default settings tabs
419
  $this->arr_settings_tabs = array(
420
-
421
  array(
422
  "slug" => "settings",
423
  "name" => __("Settings", "simple-history"),
424
- "function" => array($this, "settings_output_general")
425
  ),
426
 
427
  );
428
 
429
- if ( defined("SIMPLE_HISTORY_DEV") && SIMPLE_HISTORY_DEV ) {
430
-
431
  $arr_dev_tabs = array(
432
  array(
433
  "slug" => "log",
434
  "name" => __("Log (debug)", "simple-history"),
435
- "function" => array($this, "settings_output_log")
436
  ),
437
  array(
438
  "slug" => "styles-example",
439
  "name" => __("Styles example (debug)", "simple-history"),
440
- "function" => array($this, "settings_output_styles_example")
441
- )
442
 
443
  );
444
 
445
- $this->arr_settings_tabs = array_merge( $this->arr_settings_tabs, $arr_dev_tabs );
446
 
447
  }
448
 
@@ -453,8 +563,8 @@ class SimpleHistory {
453
  * and instantiates them
454
  */
455
  public function loadLoggers() {
456
-
457
- $loggersDir = __DIR__ . "/loggers/";
458
 
459
  /**
460
  * Filter the directory to load loggers from
@@ -465,10 +575,10 @@ class SimpleHistory {
465
  */
466
  $loggersDir = apply_filters("simple_history/loggers_dir", $loggersDir);
467
 
468
- $loggersFiles = glob( $loggersDir . "*.php");
469
 
470
  // SimpleLogger.php must be loaded first since the other loggers extend it
471
- require_once($loggersDir . "SimpleLogger.php");
472
 
473
  /**
474
  * Filter the array with absolute paths to files as returned by glob function.
@@ -478,24 +588,43 @@ class SimpleHistory {
478
  * @since 2.0
479
  *
480
  * @param array $loggersFiles Array with filenames
481
- */
482
  $loggersFiles = apply_filters("simple_history/loggers_files", $loggersFiles);
483
-
484
  $arrLoggersToInstantiate = array();
485
- foreach ( $loggersFiles as $oneLoggerFile) {
486
-
487
- if ( basename($oneLoggerFile) == "SimpleLogger.php" ) {
488
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
489
  // SimpleLogger is already loaded
490
 
491
  } else {
492
 
493
- include_once($oneLoggerFile);
494
 
495
  }
496
 
497
- $arrLoggersToInstantiate[] = basename($oneLoggerFile, ".php");
498
-
499
  }
500
 
501
  /**
@@ -504,23 +633,24 @@ class SimpleHistory {
504
  * @since 2.0
505
  *
506
  * @param array $arrLoggersToInstantiate Array with class names
507
- */
508
  $arrLoggersToInstantiate = apply_filters("simple_history/loggers_to_instantiate", $arrLoggersToInstantiate);
 
509
  // Instantiate each logger
510
- foreach ($arrLoggersToInstantiate as $oneLoggerName ) {
511
-
512
- if ( ! class_exists($oneLoggerName) ) {
513
  continue;
514
  }
515
 
516
  $loggerInstance = new $oneLoggerName($this);
517
 
518
- if ( ! is_subclass_of($loggerInstance, "SimpleLogger") && ! is_a($loggerInstance, "SimpleLogger") ) {
519
  continue;
520
  }
521
 
522
  $loggerInstance->loaded();
523
-
524
  // Tell gettext-filter to add untranslated messages
525
  $this->doFilterGettext = true;
526
  $this->doFilterGettext_currentLogger = $loggerInstance;
@@ -531,34 +661,34 @@ class SimpleHistory {
531
  $this->doFilterGettext = false;
532
  $this->doFilterGettext_currentLogger = null;
533
 
534
- // LoggerInfo contains all messages, both translated an not, by key.
535
  // Add messages to the loggerInstance
536
  $loopNum = 0;
537
- foreach ( $loggerInfo["messages"] as $message_key => $message ) {
538
-
539
- $loggerInstance->messages[ $message_key ] = $loggerInstance->messages[ $loopNum ];
540
  $loopNum++;
541
 
542
  }
543
 
544
  // Remove index keys, only keeping slug keys
545
  if (is_array($loggerInstance->messages)) {
546
- foreach ( $loggerInstance->messages as $key => $val ) {
547
- if ( is_int($key) ) {
548
- unset( $loggerInstance->messages[$key] );
549
  }
550
  }
551
- }
552
-
553
  // Add logger to array of loggers
554
- $this->instantiatedLoggers[ $loggerInstance->slug ] = array(
555
  "name" => $loggerInfo["name"],
556
- "instance" => $loggerInstance
557
  );
558
 
559
  }
560
 
561
- do_action( "simple_history/loggers_loaded" );
562
 
563
  #sf_d($this->instantiatedLoggers);exit;
564
 
@@ -569,8 +699,8 @@ class SimpleHistory {
569
  * and instantiates them
570
  */
571
  public function loadDropins() {
572
-
573
- $dropinsDir = __DIR__ . "/dropins/";
574
 
575
  /**
576
  * Filter the directory to load loggers from
@@ -581,7 +711,7 @@ class SimpleHistory {
581
  */
582
  $dropinsDir = apply_filters("simple_history/dropins_dir", $dropinsDir);
583
 
584
- $dropinsFiles = glob( $dropinsDir . "*.php");
585
 
586
  /**
587
  * Filter the array with absolute paths to files as returned by glob function.
@@ -591,16 +721,18 @@ class SimpleHistory {
591
  * @since 2.0
592
  *
593
  * @param array $dropinsFiles Array with filenames
594
- */
595
  $dropinsFiles = apply_filters("simple_history/dropins_files", $dropinsFiles);
596
-
597
  $arrDropinsToInstantiate = array();
598
 
599
- foreach ( $dropinsFiles as $oneDropinFile ) {
600
-
601
  // path/path/simplehistory/dropins/SimpleHistoryDonateDropin.php => SimpleHistoryDonateDropin
602
  $oneDropinFileBasename = basename($oneDropinFile, ".php");
603
 
 
 
604
  /**
605
  * Filter to completely skip loading of dropin
606
  * complete filer name will be like:
@@ -610,16 +742,26 @@ class SimpleHistory {
610
  *
611
  * @param bool if to load the dropin. return false to not load it.
612
  */
613
- $load_dropin = apply_filters( "simple_history/dropin/load_dropin_{$oneDropinFileBasename}", true );
 
 
 
 
 
 
 
 
 
 
614
 
615
  if ( ! $load_dropin ) {
616
  continue;
617
  }
618
 
619
- include_once($oneDropinFile);
620
 
621
  $arrDropinsToInstantiate[] = $oneDropinFileBasename;
622
-
623
  }
624
 
625
  /**
@@ -628,26 +770,26 @@ class SimpleHistory {
628
  * @since 2.0
629
  *
630
  * @param array $arrDropinsToInstantiate Array with class names
631
- */
632
  $arrDropinsToInstantiate = apply_filters("simple_history/dropins_to_instantiate", $arrDropinsToInstantiate);
633
 
634
  // Instantiate each dropin
635
- foreach ($arrDropinsToInstantiate as $oneDropinName ) {
636
-
637
- if ( ! class_exists( $oneDropinName ) ) {
638
  continue;
639
  }
640
 
641
  $this->instantiatedDropins[$oneDropinName] = array(
642
  "name" => $oneDropinName,
643
- "instance" => new $oneDropinName( $this )
644
  );
645
  }
646
 
647
  }
648
 
649
  /**
650
- * Gets the pager size,
651
  * i.e. the number of items to show on each page in the history
652
  *
653
  * @return int
@@ -668,24 +810,23 @@ class SimpleHistory {
668
  return $pager_size;
669
 
670
  }
671
-
672
 
673
  /**
674
  * Show a link to our settings page on the Plugins -> Installed Plugins screen
675
  */
676
  function plugin_action_links($actions, $b, $c, $d) {
677
-
678
  // Only add link if user has the right to view the settings page
679
- if ( ! current_user_can($this->view_settings_capability) ) {
680
  return $actions;
681
  }
682
 
683
  $settings_page_url = menu_page_url(SimpleHistory::SETTINGS_MENU_SLUG, 0);
684
-
685
  $actions[] = "<a href='$settings_page_url'>" . __("Settings", "simple-history") . "</a>";
686
 
687
  return $actions;
688
-
689
  }
690
 
691
  /**
@@ -694,11 +835,11 @@ class SimpleHistory {
694
  * and a setting to show dashboard to be set
695
  */
696
  function add_dashboard_widget() {
697
-
698
- if ( $this->setting_show_on_dashboard() && current_user_can($this->view_history_capability) ) {
699
-
700
  wp_add_dashboard_widget("simple_history_dashboard_widget", __("Simple History", 'simple-history'), array($this, "dashboard_widget_output"));
701
-
702
  }
703
  }
704
 
@@ -706,7 +847,7 @@ class SimpleHistory {
706
  * Output html for the dashboard widget
707
  */
708
  function dashboard_widget_output() {
709
-
710
  $pager_size = $this->get_pager_size();
711
 
712
  /**
@@ -718,33 +859,33 @@ class SimpleHistory {
718
  */
719
  $pager_size = apply_filters("simple_history/dashboard_pager_size", $pager_size);
720
 
721
- do_action( "simple_history/dashboard/before_gui", $this );
722
 
723
  ?>
724
  <div class="SimpleHistoryGui"
725
- data-pager-size='<?php echo $pager_size ?>'
726
  ></div>
727
  <?php
728
 
729
  }
730
-
731
  function is_on_our_own_pages($hook = "") {
732
 
733
  $current_screen = get_current_screen();
734
 
735
- if ( $current_screen && $current_screen->base == "settings_page_" . SimpleHistory::SETTINGS_MENU_SLUG ) {
736
-
737
  return true;
738
 
739
- } else if ( $current_screen && $current_screen->base == "dashboard_page_simple_history_page" ) {
740
 
741
  return true;
742
 
743
- } else if ( ($hook == "settings_page_" . SimpleHistory::SETTINGS_MENU_SLUG) || ($this->setting_show_on_dashboard() && $hook == "index.php") || ($this->setting_show_as_page() && $hook == "dashboard_page_simple_history_page")) {
744
 
745
  return true;
746
 
747
- } else if ( $current_screen && $current_screen->base == "dashboard" && $this->setting_show_on_dashboard() ) {
748
 
749
  return true;
750
 
@@ -759,20 +900,20 @@ class SimpleHistory {
759
  * Only adds scripts to pages where the log is shown or the settings page.
760
  */
761
  function enqueue_admin_scripts($hook) {
762
-
763
- if ( $this->is_on_our_own_pages() ) {
764
-
765
  add_thickbox();
766
 
767
- $plugin_url = plugin_dir_url(__FILE__);
768
- wp_enqueue_style( "simple_history_styles", $plugin_url . "css/styles.css", false, SimpleHistory::VERSION );
769
- wp_enqueue_script("simple_history_script", $plugin_url . "js/scripts.js", array("jquery", "backbone"), SimpleHistory::VERSION, true);
770
-
771
  wp_enqueue_script("select2", $plugin_url . "/js/select2/select2.min.js", array("jquery"));
772
  wp_enqueue_style("select2", $plugin_url . "/js/select2/select2.css");
773
 
774
  // Translations that we use in JavaScript
775
- wp_localize_script('simple_history_script', 'simple_history_script_vars', array(
776
  'settingsConfirmClearLog' => __("Remove all log items?", 'simple-history'),
777
  'pagination' => array(
778
  'goToTheFirstPage' => __("Go to the first page", 'simple-history'),
@@ -782,26 +923,26 @@ class SimpleHistory {
782
  'currentPage' => __("Current page", 'simple-history'),
783
  ),
784
  "loadLogAPIError" => __("Oups, the log could not be loaded right now.", 'simple-history'),
785
- "logNoHits" => __("Your search did not match any history events.", "simple-history")
786
  ));
787
 
788
  // Call plugins adminCSS-method, so they can add their CSS
789
- foreach ( $this->instantiatedLoggers as $one_logger ) {
790
- if ( method_exists($one_logger["instance"], "adminCSS" ) ) {
791
  $one_logger["instance"]->adminCSS();
792
  }
793
  }
794
 
795
  /**
796
- * Fires when the admin scripts have been enqueued.
797
- * Only fires on any of the pages where Simple History is used
798
- *
799
- * @since 2.0
800
- *
801
- * @param SimpleHistory $SimpleHistory This class.
802
- */
803
  do_action("simple_history/enqueue_admin_scripts", $this);
804
-
805
  }
806
 
807
  }
@@ -809,7 +950,7 @@ class SimpleHistory {
809
  function filter_option_page_capability($capability) {
810
  return $capability;
811
  }
812
-
813
  /**
814
  * Check if plugin version have changed, i.e. has been upgraded
815
  * If upgrade is detected then maybe modify database and so on for that version
@@ -823,30 +964,30 @@ class SimpleHistory {
823
  $table_name_contexts = $wpdb->prefix . SimpleHistory::DBTABLE_CONTEXTS;
824
  $first_install = false;
825
 
826
- // If no db_version is set then this
827
  // is a version of Simple History < 0.4
828
  // or it's a first install
829
  // Fix database not using UTF-8
830
- if ( false === $db_version ) {
831
-
832
- require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
833
 
834
  // Table creation, used to be in register_activation_hook
835
- /*
836
  $sql = "CREATE TABLE " . $table_name . " (
837
- id int(10) NOT NULL AUTO_INCREMENT,
838
- date datetime NOT NULL,
839
- action varchar(255) NOT NULL COLLATE utf8_general_ci,
840
- object_type varchar(255) NOT NULL COLLATE utf8_general_ci,
841
- object_subtype VARCHAR(255) NOT NULL COLLATE utf8_general_ci,
842
- user_id int(10) NOT NULL,
843
- object_id int(10) NOT NULL,
844
- object_name varchar(255) NOT NULL COLLATE utf8_general_ci,
845
- action_description longtext,
846
- PRIMARY KEY (id)
847
  ) CHARACTER SET=utf8;";
848
  dbDelta($sql);
849
- */
850
 
851
  // We change the varchar size to add one num just to force update of encoding. dbdelta didn't see it otherwise.
852
  // This table is missing action_description, but we add that later on
@@ -864,36 +1005,27 @@ class SimpleHistory {
864
 
865
  // Upgrade db / fix utf for varchars
866
  dbDelta($sql);
867
-
868
  // Fix UTF-8 for table
869
  $sql = sprintf('alter table %1$s charset=utf8;', $table_name);
870
  $wpdb->query($sql);
871
-
872
  $db_version_prev = $db_version;
873
  $db_version = 1;
874
 
875
- /*SimpleLogger()->debug(
876
- "Simple History updated its database from version {from_version} to {to_version}",
877
- array(
878
- "from_version" => $db_version_prev,
879
- "to_version" => $db_version
880
- )
881
- );*/
882
-
883
  update_option("simple_history_db_version", $db_version);
884
 
885
- // We are not 100% sure that this is a first install,
886
  // but it is at least a very old version that is being updated
887
  $first_install = true;
888
 
889
- } // done pre db ver 1 things
890
-
891
 
892
  // If db version is 1 then upgrade to 2
893
  // Version 2 added the action_description column
894
- if ( 1 == intval($db_version) ) {
895
 
896
- // Add column for action description in non-translateable free text
897
  $sql = "ALTER TABLE {$table_name} ADD COLUMN action_description longtext";
898
  $wpdb->query($sql);
899
 
@@ -909,20 +1041,20 @@ class SimpleHistory {
909
  $arr_options = array(
910
  array(
911
  "name" => "simple_history_show_as_page",
912
- "default_value" => 1
913
  ),
914
  array(
915
  "name" => "simple_history_show_on_dashboard",
916
- "default_value" => 1
917
- )
918
  );
919
 
920
  foreach ($arr_options as $one_option) {
921
-
922
- if ( false === ($option_value = get_option( $one_option["name"] ) ) ) {
923
 
924
  // Value is not set in db, so set it to a default
925
- update_option( $one_option["name"], $one_option["default_value"] );
926
 
927
  }
928
  }
@@ -934,9 +1066,9 @@ class SimpleHistory {
934
  *
935
  * @since 2.0
936
  */
937
- if ( 2 == intval($db_version) ) {
938
 
939
- require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
940
 
941
  // Update old table
942
  $sql = "
@@ -960,7 +1092,7 @@ class SimpleHistory {
960
  KEY date (date),
961
  KEY loggerdate (logger, date)
962
  ) CHARSET=utf8;";
963
-
964
  dbDelta($sql);
965
 
966
  // Add context table
@@ -985,33 +1117,33 @@ class SimpleHistory {
985
  // Update old items to use SimpleLegacyLogger
986
  $sql = sprintf('
987
  UPDATE %1$s
988
- SET
989
  logger = "SimpleLegacyLogger",
990
  level = "info"
991
  WHERE logger IS NULL
992
- ',
993
  $table_name
994
  );
995
 
996
- $wpdb->query( $sql );
997
 
998
  // Say welcome, however loggers are not added this early so we need to
999
  // use a filter to load it later
1000
- add_action("simple_history/loggers_loaded", array( $this, "addWelcomeLogMessage" ));
1001
 
1002
- } // db version 2 » 3
1003
 
1004
  /**
1005
- * If db version = 3
1006
  * then we need to update database to allow null values for some old columns
1007
  * that used to work in pre wp 4.1 beta, but since 4.1 wp uses STRICT_ALL_TABLES
1008
  * WordPress Commit: https://github.com/WordPress/WordPress/commit/f17d168a0f72211a9bfd9d3fa680713069871bb6
1009
- *
1010
  * @since 2.0
1011
  */
1012
- if ( 3 == intval($db_version) ) {
1013
 
1014
- require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
1015
 
1016
  $sql = sprintf('
1017
  ALTER TABLE %1$s
@@ -1021,31 +1153,30 @@ class SimpleHistory {
1021
  MODIFY `user_id` int(10) NULL,
1022
  MODIFY `object_id` int(10) NULL,
1023
  MODIFY `object_name` varchar(255) NULL
1024
- ',
1025
  $table_name
1026
  );
1027
- $wpdb->query( $sql );
1028
 
1029
  $db_version_prev = $db_version;
1030
  $db_version = 4;
1031
-
1032
  update_option("simple_history_db_version", $db_version);
1033
 
1034
- } // end db version 3 » 4
 
 
1035
 
1036
-
1037
- } // end check_for_upgrade
1038
-
1039
  /**
1040
  * Greet users to version 2!
1041
  */
1042
  public function addWelcomeLogMessage() {
1043
 
1044
  SimpleLogger()->info(
1045
- "Welcome to Simple History 2! Hope you will enjoy this plugin.
1046
  Found bugs? Got great ideas? Send them to the plugin developer at par.thernstrom@gmail.com.",
1047
  array(
1048
- "_initiator" => SimpleLoggerLogInitiators::WORDPRESS
1049
  )
1050
  );
1051
 
@@ -1066,9 +1197,9 @@ class SimpleHistory {
1066
  /**
1067
  * Output HTML for the settings page
1068
  * Called from add_options_page
1069
- */
1070
  function settings_page_output() {
1071
-
1072
  $arr_settings_tabs = $this->getSettingsTabs();
1073
 
1074
  ?>
@@ -1076,99 +1207,97 @@ class SimpleHistory {
1076
 
1077
  <h2 class="SimpleHistoryPageHeadline">
1078
  <div class="dashicons dashicons-backup SimpleHistoryPageHeadline__icon"></div>
1079
- <?php _e("Simple History Settings", "simple-history") ?>
1080
  </h2>
1081
-
1082
  <?php
1083
- $active_tab = isset( $_GET["selected-tab"] ) ? $_GET["selected-tab"] : "settings";
1084
- $settings_base_url = menu_page_url(SimpleHistory::SETTINGS_MENU_SLUG, 0);
1085
- ?>
1086
 
1087
  <h3 class="nav-tab-wrapper">
1088
  <?php
1089
- foreach ( $arr_settings_tabs as $one_tab ) {
1090
 
1091
- $tab_slug = $one_tab["slug"];
1092
-
1093
- printf(
1094
- '<a href="%3$s" class="nav-tab %4$s">%1$s</a>',
1095
- $one_tab["name"], // 1
1096
- $tab_slug, // 2
1097
- add_query_arg("selected-tab", $tab_slug, $settings_base_url), // 3
1098
- $active_tab == $tab_slug ? "nav-tab-active" : "" // 4
1099
- );
1100
 
1101
- }
1102
- ?>
 
 
 
 
 
 
 
 
1103
  </h3>
1104
 
1105
  <?php
1106
-
1107
- // Output contents for selected tab
1108
- $arr_active_tab = wp_filter_object_list( $arr_settings_tabs, array("slug" => $active_tab));
1109
- $arr_active_tab = current($arr_active_tab);
1110
-
1111
- // We must have found an active tab and it must have a callable function
1112
- if ( ! $arr_active_tab || ! is_callable( $arr_active_tab["function"] ) ) {
1113
- wp_die( __("No valid callback found", "simple-history") );
1114
- }
1115
 
1116
- $args = array(
1117
- "arr_active_tab" => $arr_active_tab
1118
- );
1119
 
1120
- call_user_func_array( $arr_active_tab["function"], $args );
 
 
 
1121
 
1122
- ?>
 
 
 
 
 
 
1123
 
1124
  </div>
1125
  <?php
1126
-
1127
  }
1128
 
1129
  public function settings_output_log() {
1130
-
1131
- include( __DIR__ . "/templates/settings-log.php" );
1132
 
1133
  }
1134
 
1135
  public function settings_output_general() {
1136
-
1137
- include( __DIR__ . "/templates/settings-general.php" );
1138
 
1139
  }
1140
 
1141
  public function settings_output_styles_example() {
1142
-
1143
- include( __DIR__ . "/templates/settings-style-example.php" );
1144
 
1145
- }
1146
 
 
1147
 
1148
  /**
1149
  * Content for section intro. Leave it be, even if empty.
1150
  * Called from add_sections_setting.
1151
  */
1152
  function settings_section_output() {
1153
-
1154
- }
1155
 
 
1156
 
1157
  /**
1158
  * Add pages (history page and settings page)
1159
  */
1160
  function add_admin_pages() {
1161
-
1162
  // Add a history page as a sub-page below the Dashboard menu item
1163
- if ( $this->setting_show_as_page() ) {
1164
-
1165
  add_dashboard_page(
1166
- SimpleHistory::NAME,
1167
- _x("Simple History", 'dashboard menu name', 'simple-history'),
1168
- $this->view_history_capability,
1169
- "simple_history_page",
1170
- array($this, "history_page_output")
1171
- );
1172
 
1173
  }
1174
 
@@ -1179,12 +1308,12 @@ class SimpleHistory {
1179
  if ($show_settings_page) {
1180
 
1181
  add_options_page(
1182
- __('Simple History Settings', "simple-history"),
1183
- SimpleHistory::NAME,
1184
- $this->view_settings_capability,
1185
- SimpleHistory::SETTINGS_MENU_SLUG,
1186
- array($this, 'settings_page_output')
1187
- );
1188
 
1189
  }
1190
 
@@ -1197,15 +1326,15 @@ class SimpleHistory {
1197
  function add_settings() {
1198
 
1199
  // Clear the log if clear button was clicked in settings
1200
- if ( isset( $_GET["simple_history_clear_log_nonce"] ) && wp_verify_nonce( $_GET["simple_history_clear_log_nonce"], 'simple_history_clear_log')) {
1201
-
1202
  $this->clear_log();
1203
  $msg = __("Cleared database", 'simple-history');
1204
- add_settings_error( "simple_history_rss_feed_regenerate_secret", "simple_history_rss_feed_regenerate_secret", $msg, "updated" );
1205
  set_transient('settings_errors', get_settings_errors(), 30);
1206
 
1207
- $goback = add_query_arg( 'settings-updated', 'true', wp_get_referer() );
1208
- wp_redirect( $goback );
1209
  exit;
1210
 
1211
  }
@@ -1214,10 +1343,10 @@ class SimpleHistory {
1214
  // Will contain settings like where to show simple history and number of items
1215
  $settings_section_general_id = self::SETTINGS_SECTION_GENERAL_ID;
1216
  add_settings_section(
1217
- $settings_section_general_id,
1218
- "", // No title __("General", "simple-history"),
1219
- array($this, "settings_section_output"),
1220
- SimpleHistory::SETTINGS_MENU_SLUG // same slug as for options menu page
1221
  );
1222
 
1223
  // Settings for the general settings section
@@ -1226,7 +1355,7 @@ class SimpleHistory {
1226
 
1227
  // Checkboxes for where to show simple history
1228
  add_settings_field(
1229
- "simple_history_show_where",
1230
  __("Show history", "simple-history"),
1231
  array($this, "settings_field_where_to_show"),
1232
  SimpleHistory::SETTINGS_MENU_SLUG,
@@ -1239,7 +1368,7 @@ class SimpleHistory {
1239
 
1240
  // Dropdown number if items to show
1241
  add_settings_field(
1242
- "simple_history_number_of_items",
1243
  __("Number of items per page", "simple-history"),
1244
  array($this, "settings_field_number_of_items"),
1245
  SimpleHistory::SETTINGS_MENU_SLUG,
@@ -1260,7 +1389,6 @@ class SimpleHistory {
1260
 
1261
  }
1262
 
1263
-
1264
  /**
1265
  * Output for page with the history
1266
  */
@@ -1286,42 +1414,42 @@ class SimpleHistory {
1286
  ?>
1287
 
1288
  <div class="wrap SimpleHistoryWrap">
1289
-
1290
  <h2 class="SimpleHistoryPageHeadline">
1291
  <div class="dashicons dashicons-backup SimpleHistoryPageHeadline__icon"></div>
1292
- <?php echo _x("Simple History", 'history page headline', 'simple-history') ?>
1293
  </h2>
1294
 
1295
  <?php
1296
- /**
1297
- * Fires before the gui div
1298
- *
1299
- * @since 2.0
1300
- *
1301
- * @param SimpleHistory $SimpleHistory This class.
1302
- */
1303
- do_action( "simple_history/history_page/before_gui", $this );
1304
- ?>
1305
 
1306
  <div class="SimpleHistoryGuiWrap">
1307
 
1308
  <div class="SimpleHistoryGui"
1309
- data-pager-size='<?php echo $pager_size ?>'
1310
  ></div>
1311
 
1312
  <?php
1313
 
1314
- /**
1315
- * Fires after the gui div
1316
- *
1317
- * @since 2.0
1318
- *
1319
- * @param SimpleHistory $SimpleHistory This class.
1320
- */
1321
- do_action( "simple_history/history_page/after_gui", $this );
 
 
1322
 
1323
- ?>
1324
-
1325
  </div>
1326
 
1327
  </div>
@@ -1331,13 +1459,13 @@ class SimpleHistory {
1331
  }
1332
 
1333
  /**
1334
- * Get setting if plugin should be visible on dasboard.
1335
  * Defaults to true
1336
  *
1337
  * @return bool
1338
  */
1339
  function setting_show_on_dashboard() {
1340
-
1341
  $show_on_dashboard = get_option("simple_history_show_on_dashboard", 1);
1342
  $show_on_dashboard = apply_filters("simple_history_show_on_dashboard", $show_on_dashboard);
1343
  return (bool) $show_on_dashboard;
@@ -1362,21 +1490,21 @@ class SimpleHistory {
1362
  * Settings field for how many rows/items to show in log
1363
  */
1364
  function settings_field_number_of_items() {
1365
-
1366
  $current_pager_size = $this->get_pager_size();
1367
 
1368
  ?>
1369
  <select name="simple_history_pager_size">
1370
- <option <?php echo $current_pager_size == 5 ? "selected" : "" ?> value="5">5</option>
1371
- <option <?php echo $current_pager_size == 10 ? "selected" : "" ?> value="10">10</option>
1372
- <option <?php echo $current_pager_size == 15 ? "selected" : "" ?> value="15">15</option>
1373
- <option <?php echo $current_pager_size == 20 ? "selected" : "" ?> value="20">20</option>
1374
- <option <?php echo $current_pager_size == 25 ? "selected" : "" ?> value="25">25</option>
1375
- <option <?php echo $current_pager_size == 30 ? "selected" : "" ?> value="30">30</option>
1376
- <option <?php echo $current_pager_size == 40 ? "selected" : "" ?> value="40">40</option>
1377
- <option <?php echo $current_pager_size == 50 ? "selected" : "" ?> value="50">50</option>
1378
- <option <?php echo $current_pager_size == 75 ? "selected" : "" ?> value="75">75</option>
1379
- <option <?php echo $current_pager_size == 100 ? "selected" : "" ?> value="100">100</option>
1380
  </select>
1381
  <?php
1382
 
@@ -1390,32 +1518,32 @@ class SimpleHistory {
1390
  $show_on_dashboard = $this->setting_show_on_dashboard();
1391
  $show_as_page = $this->setting_show_as_page();
1392
  ?>
1393
-
1394
- <input <?php echo $show_on_dashboard ? "checked='checked'" : "" ?> type="checkbox" value="1" name="simple_history_show_on_dashboard" id="simple_history_show_on_dashboard" class="simple_history_show_on_dashboard" />
1395
- <label for="simple_history_show_on_dashboard"><?php _e("on the dashboard", 'simple-history') ?></label>
1396
 
1397
  <br />
1398
-
1399
- <input <?php echo $show_as_page ? "checked='checked'" : "" ?> type="checkbox" value="1" name="simple_history_show_as_page" id="simple_history_show_as_page" class="simple_history_show_as_page" />
1400
- <label for="simple_history_show_as_page"><?php _e("as a page under the dashboard menu", 'simple-history') ?></label>
1401
-
1402
  <?php
1403
- }
1404
 
1405
  /**
1406
  * Settings section to clear database
1407
  */
1408
  function settings_field_clear_log() {
1409
-
1410
  $clear_link = add_query_arg("", "");
1411
- $clear_link = wp_nonce_url( $clear_link, "simple_history_clear_log", "simple_history_clear_log_nonce" );
1412
  $clear_days = $this->get_clear_history_interval();
1413
 
1414
  echo "<p>";
1415
- if ( $clear_days > 0 ) {
1416
- echo sprintf( __('Items in the database are automatically removed after %1$s days.', "simple-history"), $clear_days);
1417
  } else {
1418
- _e( 'Items in the database are kept forever.', 'simple-history');
1419
  }
1420
  echo "</p>";
1421
 
@@ -1423,7 +1551,7 @@ class SimpleHistory {
1423
  }
1424
 
1425
  /**
1426
- * How old log entried are allowed to be.
1427
  * 0 = don't delete old entries.
1428
  *
1429
  * @return int Number of days.
@@ -1445,29 +1573,73 @@ class SimpleHistory {
1445
  function clear_log() {
1446
 
1447
  global $wpdb;
1448
-
1449
  $tableprefix = $wpdb->prefix;
 
1450
  $simple_history_table = SimpleHistory::DBTABLE;
1451
  $simple_history_context_table = SimpleHistory::DBTABLE_CONTEXTS;
1452
-
 
 
 
 
1453
  $sql = "DELETE FROM {$tableprefix}{$simple_history_table}";
1454
  $wpdb->query($sql);
1455
 
1456
  $sql = "DELETE FROM {$tableprefix}{$simple_history_context_table}";
1457
  $wpdb->query($sql);
1458
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1459
  }
1460
 
1461
  /**
1462
  * Removes old entries from the db
1463
- * @TODO this function does not remove old entries from context table
1464
  */
1465
  function purge_db() {
1466
 
 
 
1467
  $do_purge_history = true;
 
1468
  $do_purge_history = apply_filters("simple_history_allow_db_purge", $do_purge_history);
1469
  $do_purge_history = apply_filters("simple_history/allow_db_purge", $do_purge_history);
1470
- if ( ! $do_purge_history ) {
 
1471
  return;
1472
  }
1473
 
@@ -1479,12 +1651,50 @@ class SimpleHistory {
1479
  }
1480
 
1481
  global $wpdb;
1482
- $tableprefix = $wpdb->prefix;
1483
- $simple_history_table = SimpleHistory::DBTABLE;
1484
 
1485
- $sql = "DELETE FROM {$tableprefix}{$simple_history_table} WHERE DATE_ADD(date, INTERVAL $days DAY) < now()";
 
1486
 
1487
- $wpdb->query($sql);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1488
 
1489
  }
1490
 
@@ -1493,28 +1703,28 @@ class SimpleHistory {
1493
  * Uses the getLogRowPlainTextOutput of the logger that logged the row
1494
  * with fallback to SimpleLogger if logger is not available
1495
  *
1496
- * @param array $row
1497
  * @return string
1498
  */
1499
  public function getLogRowPlainTextOutput($row) {
1500
-
1501
  $row_logger = $row->logger;
1502
  $logger = null;
1503
- $row->context = isset( $row->context ) && is_array( $row->context ) ? $row->context : array();
1504
 
1505
- if ( ! isset( $row->context["_message_key"] ) ) {
1506
  $row->context["_message_key"] = null;
1507
  }
1508
-
1509
  // Fallback to SimpleLogger if no logger exists for row
1510
- if ( ! isset( $this->instantiatedLoggers[$row_logger] ) ) {
1511
  $row_logger = "SimpleLogger";
1512
  }
1513
 
1514
- $logger = $this->instantiatedLoggers[ $row_logger ]["instance"];
 
 
1515
 
1516
- return $logger->getLogRowPlainTextOutput( $row );
1517
-
1518
  }
1519
 
1520
  /**
@@ -1522,9 +1732,9 @@ class SimpleHistory {
1522
  * Uses the getLogRowHeaderOutput of the logger that logged the row
1523
  * with fallback to SimpleLogger if logger is not available
1524
  *
1525
- * Loggers are discouraged to override this in the loggers,
1526
  * because the output should be the same for all items in the gui
1527
- *
1528
  * @param array $row
1529
  * @return string
1530
  */
@@ -1532,22 +1742,22 @@ class SimpleHistory {
1532
 
1533
  $row_logger = $row->logger;
1534
  $logger = null;
1535
- $row->context = isset( $row->context ) && is_array( $row->context ) ? $row->context : array();
1536
-
1537
  // Fallback to SimpleLogger if no logger exists for row
1538
- if ( ! isset( $this->instantiatedLoggers[$row_logger] ) ) {
1539
  $row_logger = "SimpleLogger";
1540
  }
1541
 
1542
- $logger = $this->instantiatedLoggers[$row_logger]["instance"];
1543
 
1544
- return $logger->getLogRowHeaderOutput( $row );
1545
 
1546
  }
1547
 
1548
  /**
1549
- *
1550
- *
1551
  * @param array $row
1552
  * @return string
1553
  */
@@ -1555,16 +1765,16 @@ class SimpleHistory {
1555
 
1556
  $row_logger = $row->logger;
1557
  $logger = null;
1558
- $row->context = isset( $row->context ) && is_array( $row->context ) ? $row->context : array();
1559
-
1560
  // Fallback to SimpleLogger if no logger exists for row
1561
- if ( ! isset( $this->instantiatedLoggers[$row_logger] ) ) {
1562
  $row_logger = "SimpleLogger";
1563
  }
1564
 
1565
- $logger = $this->instantiatedLoggers[$row_logger]["instance"];
1566
 
1567
- return $logger->getLogRowSenderImageOutput( $row );
1568
 
1569
  }
1570
 
@@ -1572,28 +1782,28 @@ class SimpleHistory {
1572
 
1573
  $row_logger = $row->logger;
1574
  $logger = null;
1575
- $row->context = isset( $row->context ) && is_array( $row->context ) ? $row->context : array();
1576
-
1577
  // Fallback to SimpleLogger if no logger exists for row
1578
- if ( ! isset( $this->instantiatedLoggers[$row_logger] ) ) {
1579
  $row_logger = "SimpleLogger";
1580
  }
1581
 
1582
- $logger = $this->instantiatedLoggers[$row_logger]["instance"];
1583
 
1584
- return $logger->getLogRowDetailsOutput( $row );
1585
 
1586
  }
1587
 
1588
  /**
1589
  * Works like json_encode, but adds JSON_PRETTY_PRINT if the current php version supports it
1590
  * i.e. PHP is 5.4.0 or greated
1591
- *
1592
  * @param $value array|object|string|whatever that is json_encode'able
1593
  */
1594
  public static function json_encode($value) {
1595
-
1596
- return version_compare(PHP_VERSION, '5.4.0') >=0 ? json_encode($value, JSON_PRETTY_PRINT) : json_encode($value);
1597
 
1598
  }
1599
 
@@ -1602,8 +1812,8 @@ class SimpleHistory {
1602
  * @param string $haystack
1603
  * @param string $needle
1604
  */
1605
- public static function ends_with( $haystack, $needle ) {
1606
- return $needle === substr( $haystack, -strlen( $needle ) );
1607
  }
1608
 
1609
  /**
@@ -1615,17 +1825,17 @@ class SimpleHistory {
1615
  public function getLogRowHTMLOutput($oneLogRow, $args) {
1616
 
1617
  $defaults = array(
1618
- "type" => "overview" // or "single" to include more stuff
1619
  );
1620
 
1621
- $args = wp_parse_args( $args, $defaults );
1622
 
1623
- $header_html = $this->getLogRowHeaderOutput($oneLogRow);
1624
  $plain_text_html = $this->getLogRowPlainTextOutput($oneLogRow);
1625
  $sender_image_html = $this->getLogRowSenderImageOutput($oneLogRow);
1626
-
1627
  // Details = for example thumbnail of media
1628
- $details_html = trim( $this->getLogRowDetailsOutput($oneLogRow) );
1629
  if ($details_html) {
1630
 
1631
  $details_html = sprintf(
@@ -1638,13 +1848,14 @@ class SimpleHistory {
1638
  // subsequentOccasions = including the current one
1639
  $occasions_count = $oneLogRow->subsequentOccasions - 1;
1640
  $occasions_html = "";
 
1641
  if ($occasions_count > 0) {
1642
 
1643
  $occasions_html = '<div class="SimpleHistoryLogitem__occasions">';
1644
-
1645
  $occasions_html .= '<a href="#" class="SimpleHistoryLogitem__occasionsLink">';
1646
  $occasions_html .= sprintf(
1647
- __('+%1$s more', "simple-history"),
1648
  $occasions_count
1649
  );
1650
  $occasions_html .= '</a>';
@@ -1662,23 +1873,23 @@ class SimpleHistory {
1662
  $occasions_count
1663
  );
1664
  $occasions_html .= '</span>';
1665
-
1666
  $occasions_html .= '</div>';
1667
 
1668
  }
1669
 
1670
  $data_attrs = "";
1671
- $data_attrs .= sprintf(' data-row-id="%1$d" ', $oneLogRow->id );
1672
- $data_attrs .= sprintf(' data-occasions-count="%1$d" ', $occasions_count );
1673
- $data_attrs .= sprintf(' data-occasions-id="%1$s" ', $oneLogRow->occasionsID );
1674
- $data_attrs .= sprintf(' data-ip-address="%1$s" ', esc_attr( $oneLogRow->context["_server_remote_addr"] ) );
1675
 
1676
  // If type is single then include more details
1677
  $more_details_html = "";
1678
- if ( $args["type"] == "single" ) {
1679
 
1680
  $more_details_html .= sprintf('<h2 class="SimpleHistoryLogitem__moreDetailsHeadline">%1$s</h2>', __("Context data", "simple-history"));
1681
- $more_details_html .= "<p>" . __("This is potentially useful meta data that a logger have saved.", "simple-history") . "</p>";
1682
  $more_details_html .= "<table class='SimpleHistoryLogitem__moreDetailsContext'>";
1683
  $more_details_html .= sprintf(
1684
  '<tr>
@@ -1692,7 +1903,7 @@ class SimpleHistory {
1692
  foreach ($oneLogRow as $rowKey => $rowVal) {
1693
 
1694
  // skip arrays and objects and such
1695
- if ( is_array( $rowVal ) || is_object( $rowVal ) ) {
1696
  continue;
1697
  }
1698
 
@@ -1701,8 +1912,8 @@ class SimpleHistory {
1701
  <td>%1$s</td>
1702
  <td>%2$s</td>
1703
  </tr>',
1704
- esc_html( $rowKey ),
1705
- esc_html( $rowVal )
1706
  );
1707
 
1708
  }
@@ -1714,8 +1925,8 @@ class SimpleHistory {
1714
  <td>%1$s</td>
1715
  <td>%2$s</td>
1716
  </tr>',
1717
- esc_html( $contextKey ),
1718
- esc_html( $contextVal )
1719
  );
1720
 
1721
  }
@@ -1729,28 +1940,39 @@ class SimpleHistory {
1729
 
1730
  }
1731
 
1732
- $class_sender = "";
 
 
 
 
 
 
1733
  if (isset($oneLogRow->initiator) && !empty($oneLogRow->initiator)) {
1734
- $class_sender .= "SimpleHistoryLogitem--initiator-" . esc_attr($oneLogRow->initiator);
1735
  }
1736
 
1737
- /*$level_html = sprintf(
1738
- '<span class="SimpleHistoryLogitem--logleveltag SimpleHistoryLogitem--logleveltag-%1$s">%1$s</span>',
1739
- $row->level
1740
- );*/
1741
-
1742
  // Always append the log level tag
1743
  $log_level_tag_html = sprintf(
1744
- ' <span class="SimpleHistoryLogitem--logleveltag SimpleHistoryLogitem--logleveltag-%1$s">%1$s</span>',
1745
- $oneLogRow->level
 
1746
  );
1747
 
1748
  $plain_text_html .= $log_level_tag_html;
1749
 
 
 
 
 
 
 
 
 
 
1750
  // Generate the HTML output for a row
1751
  $output = sprintf(
1752
  '
1753
- <li %8$s class="SimpleHistoryLogitem SimpleHistoryLogitem--loglevel-%5$s SimpleHistoryLogitem--logger-%7$s %10$s">
1754
  <div class="SimpleHistoryLogitem__firstcol">
1755
  <div class="SimpleHistoryLogitem__senderImage">%3$s</div>
1756
  </div>
@@ -1772,11 +1994,11 @@ class SimpleHistory {
1772
  $oneLogRow->logger, // 7
1773
  $data_attrs, // 8 data attributes
1774
  $more_details_html, // 9
1775
- $class_sender // 10
1776
  );
1777
 
1778
  // Get the main message row.
1779
- // Should be as plain as possible, like plain text
1780
  // but with links to for example users and posts
1781
  #SimpleLoggerFormatter::getRowTextOutput($oneLogRow);
1782
 
@@ -1788,6 +2010,94 @@ class SimpleHistory {
1788
 
1789
  }
1790
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1791
  public function getInstantiatedLoggers() {
1792
 
1793
  return $this->instantiatedLoggers;
@@ -1795,14 +2105,14 @@ class SimpleHistory {
1795
  }
1796
 
1797
  public function getInstantiatedLoggerBySlug($slug = "") {
1798
-
1799
- if (empty( $slug )) {
1800
  return false;
1801
  }
1802
-
1803
  foreach ($this->getInstantiatedLoggers() as $one_logger) {
1804
-
1805
- if ( $slug == $one_logger["instance"]->slug ) {
1806
  return $one_logger["instance"];
1807
  }
1808
 
@@ -1824,7 +2134,7 @@ class SimpleHistory {
1824
 
1825
  $arr_loggers_user_can_view = array();
1826
 
1827
- if ( ! is_numeric($user_id) ) {
1828
  $user_id = get_current_user_id();
1829
  }
1830
 
@@ -1834,39 +2144,39 @@ class SimpleHistory {
1834
  $logger_capability = $one_logger["instance"]->getCapability();
1835
 
1836
  //$arr_loggers_user_can_view = apply_filters("simple_history/loggers_user_can_read", $user_id, $arr_loggers_user_can_view);
1837
- $user_can_read_logger = user_can( $user_id, $logger_capability );
1838
  $user_can_read_logger = apply_filters("simple_history/loggers_user_can_read/can_read_single_logger", $user_can_read_logger, $one_logger["instance"], $user_id);
1839
 
1840
- if ( $user_can_read_logger ) {
1841
  $arr_loggers_user_can_view[] = $one_logger;
1842
  }
1843
 
1844
  }
1845
 
1846
  /**
1847
- * Fires before Simple History does it's init stuff
1848
- *
1849
- * @since 2.0
1850
- *
1851
- * @param array $arr_loggers_user_can_view Array with loggers that user $user_id can read
1852
- * @param int user_id ID of user to check read capability for
1853
- */
1854
  $arr_loggers_user_can_view = apply_filters("simple_history/loggers_user_can_read", $arr_loggers_user_can_view, $user_id);
1855
 
1856
  // just return array with slugs in parenthesis suitable for sql-where
1857
- if ( "sql" == $format ) {
1858
 
1859
  $str_return = "(";
1860
-
1861
  foreach ($arr_loggers_user_can_view as $one_logger) {
1862
-
1863
  $str_return .= sprintf(
1864
  '"%1$s", ',
1865
  $one_logger["instance"]->slug
1866
  );
1867
 
1868
  }
1869
-
1870
  $str_return = rtrim($str_return, " ,");
1871
  $str_return .= ")";
1872
 
@@ -1874,14 +2184,13 @@ class SimpleHistory {
1874
 
1875
  }
1876
 
1877
-
1878
  return $arr_loggers_user_can_view;
1879
 
1880
  }
1881
 
1882
  /**
1883
  * Retrieve the avatar for a user who provided a user ID or email address.
1884
- * A modified version of the function that comes with WordPress, but we
1885
  * want to allow/show gravatars even if they are disabled in discussion settings
1886
  *
1887
  * @since 2.0
@@ -1891,68 +2200,107 @@ class SimpleHistory {
1891
  * @param string $default URL to a default image to use if no avatar is available
1892
  * @param string $alt Alternative text to use in image tag. Defaults to blank
1893
  * @return string <img> tag for the user's avatar
1894
- */
1895
- function get_avatar( $email, $size = '96', $default = '', $alt = false ) {
1896
-
1897
- if ( false === $alt)
1898
- $safe_alt = '';
1899
- else
1900
- $safe_alt = esc_attr( $alt );
1901
-
1902
- if ( !is_numeric($size) )
1903
- $size = '96';
1904
-
1905
- if ( empty($default) ) {
1906
- $avatar_default = get_option('avatar_default');
1907
- if ( empty($avatar_default) )
1908
- $default = 'mystery';
1909
- else
1910
- $default = $avatar_default;
1911
- }
1912
 
1913
- if ( !empty($email) )
1914
- $email_hash = md5( strtolower( trim( $email ) ) );
1915
 
1916
- if ( is_ssl() ) {
1917
- $host = 'https://secure.gravatar.com';
1918
- } else {
1919
- if ( !empty($email) )
1920
- $host = sprintf( "http://%d.gravatar.com", ( hexdec( $email_hash[0] ) % 2 ) );
1921
- else
1922
- $host = 'http://0.gravatar.com';
1923
- }
1924
 
1925
- if ( 'mystery' == $default )
1926
- $default = "$host/avatar/ad516503a11cd5ca435acc9bb6523536?s={$size}"; // ad516503a11cd5ca435acc9bb6523536 == md5('unknown@gravatar.com')
1927
- elseif ( 'blank' == $default )
1928
- $default = $email ? 'blank' : includes_url( 'images/blank.gif' );
1929
- elseif ( !empty($email) && 'gravatar_default' == $default )
1930
- $default = '';
1931
- elseif ( 'gravatar_default' == $default )
1932
- $default = "$host/avatar/?s={$size}";
1933
- elseif ( empty($email) )
1934
- $default = "$host/avatar/?d=$default&amp;s={$size}";
1935
- elseif ( strpos($default, 'http://') === 0 )
1936
- $default = add_query_arg( 's', $size, $default );
1937
-
1938
- if ( !empty($email) ) {
1939
- $out = "$host/avatar/";
1940
- $out .= $email_hash;
1941
- $out .= '?s='.$size;
1942
- $out .= '&amp;d=' . urlencode( $default );
1943
-
1944
- $rating = get_option('avatar_rating');
1945
- if ( !empty( $rating ) )
1946
- $out .= "&amp;r={$rating}";
1947
-
1948
- $out = str_replace( '&#038;', '&amp;', esc_url( $out ) );
1949
- $avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
1950
  } else {
1951
- $out = esc_url( $default );
1952
- $avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
1953
- }
1954
 
1955
- return $avatar;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1956
  }
1957
 
1958
  /**
@@ -1960,59 +2308,170 @@ class SimpleHistory {
1960
  * Uses filter "simple_history/history_page/before_gui" to output its contents
1961
  */
1962
  public function output_quick_stats() {
1963
-
1964
  global $wpdb;
1965
 
1966
  // Get number of events today
1967
  $logQuery = new SimpleHistoryLogQuery();
1968
  $logResults = $logQuery->query(array(
1969
  "posts_per_page" => 1,
1970
- "date_from" => strtotime("today")
1971
  ));
1972
 
 
 
 
1973
  $sql_loggers_in = $this->getLoggersThatUserCanRead(get_current_user_id(), "sql");
 
 
1974
  $sql_users_today = sprintf('
1975
- SELECT
1976
  DISTINCT(c.value) AS user_id
1977
  #h.id, h.logger, h.level, h.initiator, h.date
1978
  FROM %3$s AS h
1979
- INNER JOIN %4$s AS c
1980
  ON c.history_id = h.id AND c.key = "_user_id"
1981
- WHERE
1982
  initiator = "wp_user"
1983
  AND logger IN %1$s
1984
  AND date > "%2$s"
1985
- ',
1986
  $sql_loggers_in,
1987
  date("Y-m-d H:i", strtotime("today")),
1988
  $wpdb->prefix . SimpleHistory::DBTABLE,
1989
  $wpdb->prefix . SimpleHistory::DBTABLE_CONTEXTS
1990
  );
1991
 
1992
- $results_users_today = $wpdb->get_results($sql_users_today);
1993
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1994
  ?>
1995
  <div class="SimpleHistoryQuickStats">
1996
  <p>
1997
  <?php
1998
-
1999
  $msg_tmpl = "";
2000
 
2001
- if ( $logResults["total_row_count"] == 0 ) {
2002
-
 
2003
  $msg_tmpl = __("No events today so far.", "simple-history");
2004
 
2005
- } elseif ( $logResults["total_row_count"] == 1 ) {
2006
 
2007
- $msg_tmpl = __('%1$d event today from one user.', "simple-history");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2008
 
2009
- } elseif ( $logResults["total_row_count"] > 0 && sizeof( $results_users_today ) > 1 ) {
 
 
 
 
2010
 
2011
- $msg_tmpl = __('%1$d events today from %2$d users.', "simple-history");
 
 
 
 
2012
 
2013
- } elseif ( $logResults["total_row_count"] > 0 && sizeof( $results_users_today ) == 1 ) {
2014
-
2015
- $msg_tmpl = __('%1$d events today from one user.', "simple-history");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2016
 
2017
  }
2018
 
@@ -2021,29 +2480,89 @@ class SimpleHistory {
2021
 
2022
  printf(
2023
  $msg_tmpl,
2024
- $logResults["total_row_count"],
2025
- sizeof( $results_users_today )
 
2026
  );
2027
 
2028
  // Space between texts
2029
  /*
2030
- echo " ";
2031
 
2032
- // http://playground-root.ep/wp-admin/options-general.php?page=simple_history_settings_menu_slug&selected-tab=stats
2033
- printf(
2034
- '<a href="%1$s">View more stats</a>.',
2035
- add_query_arg("selected-tab", "stats", menu_page_url(SimpleHistory::SETTINGS_MENU_SLUG, 0))
2036
- );
2037
- */
2038
 
2039
  }
2040
-
2041
  ?>
2042
  </p>
2043
- </div>
2044
  <?php
2045
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2046
  }
2047
 
2048
  } // class
2049
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
  /**
4
  * Main class for Simple History
5
+ */
6
  class SimpleHistory {
7
 
8
  const NAME = "Simple History";
9
+ const VERSION = "2.0.22";
10
+
11
+ /**
12
+ * For singleton
13
+ */
14
+ private static $instance;
15
 
16
  /**
17
  * Capability required to view the history log
18
  */
19
  private $view_history_capability;
20
+
21
  /**
22
  * Capability required to view and edit the settings page
23
  */
46
  */
47
  private $doFilterGettext_currentLogger = null;
48
 
49
+ /**
50
+ * Used to store latest translations used by __()
51
+ * Required to automagically determine orginal text and text domain
52
+ * for calls like this `SimpleLogger()->log( __("My translated message") );`
53
+ */
54
+ public $gettextLatestTranslations = array();
55
+
56
  /**
57
  * All registered settings tabs
58
  */
70
  function __construct() {
71
 
72
  /**
73
+ * Fires before Simple History does it's init stuff
74
+ *
75
+ * @since 2.0
76
+ *
77
+ * @param SimpleHistory $SimpleHistory This class.
78
+ */
79
+ do_action("simple_history/before_init", $this);
80
 
81
  $this->setupVariables();
82
 
83
  // Actions and filters, ordered by order specified in codex: http://codex.wordpress.org/Plugin_API/Action_Reference
84
+ add_action('plugins_loaded', array($this, 'load_plugin_textdomain'));
85
+ add_action('plugins_loaded', array($this, 'add_default_settings_tabs'));
86
+ add_action('plugins_loaded', array($this, 'loadLoggers'));
87
+ add_action('plugins_loaded', array($this, 'loadDropins'));
88
 
89
  // Run before loading of loggers and before menu items are added
90
+ add_action('plugins_loaded', array($this, 'check_for_upgrade'), 5);
91
 
92
+ add_action('plugins_loaded', array($this, 'setup_cron'));
 
93
 
94
+ add_action('admin_menu', array($this, 'add_admin_pages'));
95
+ add_action('admin_menu', array($this, 'add_settings'));
 
96
 
97
+ add_action('admin_footer', array($this, "add_js_templates"));
98
 
99
+ add_action('wp_dashboard_setup', array($this, 'add_dashboard_widget'));
100
+
101
+ add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
102
+
103
+ add_action('admin_head', array($this, "onAdminHead"));
104
+ add_action('admin_footer', array($this, "onAdminFooter"));
105
 
106
  // Filters and actions not called during regular boot
107
  add_filter("gettext", array($this, 'filter_gettext'), 20, 3);
108
  add_filter("gettext_with_context", array($this, 'filter_gettext_with_context'), 20, 4);
109
 
110
+ add_filter('gettext', array( $this, "filter_gettext_storeLatestTranslations" ), 10, 3 );
 
111
 
112
+ add_action('simple_history/history_page/before_gui', array($this, "output_quick_stats"));
113
+ add_action('simple_history/dashboard/before_gui', array($this, "output_quick_stats"));
114
 
115
+ add_action('wp_ajax_simple_history_api', array($this, 'api'));
116
+
117
+ add_filter('plugin_action_links_simple-history/index.php', array($this, 'plugin_action_links'), 10, 4);
118
 
119
  /**
120
+ * Fires after Simple History has done it's init stuff
121
+ *
122
+ * @since 2.0
123
+ *
124
+ * @param SimpleHistory $SimpleHistory This class.
125
+ */
126
+ do_action("simple_history/after_init", $this);
127
+
128
+ // Add some extra info to each logged context when SIMPLE_HISTORY_LOG_DEBUG is set and true
129
+ if ( defined("SIMPLE_HISTORY_LOG_DEBUG") && SIMPLE_HISTORY_LOG_DEBUG ) {
130
+
131
+ add_filter("simple_history/log_argument/context", function($context, $level, $message, $logger) {
132
+
133
+ $sh = SimpleHistory::get_instance();
134
+ $context["_debug_get"] = $sh->json_encode( $_GET );
135
+ $context["_debug_post"] = $sh->json_encode( $_POST );
136
+ $context["_debug_server"] = $sh->json_encode( $_SERVER );
137
+ $context["_debug_php_sapi_name"] = php_sapi_name();
138
+
139
+ global $argv;
140
+ $context["_debug_argv"] = $sh->json_encode( $argv );
141
+
142
+ $consts = get_defined_constants(true);
143
+ $consts = $consts["user"];
144
+ $context["_debug_user_constants"] = $sh->json_encode( $consts );
145
+
146
+ $postdata = file_get_contents("php://input");
147
+ $context["_debug_http_raw_post_data"] = $sh->json_encode( $postdata );
148
+
149
+ return $context;
150
+
151
+ }, 10, 4);
152
+
153
+ }
154
+
155
+ }
156
+
157
+ /**
158
+ * Get singleton intance
159
+ * @return SimpleHistory instance
160
+ */
161
+ public static function get_instance() {
162
+
163
+ if ( ! isset( self::$instance ) ) {
164
+
165
+ self::$instance = new SimpleHistory();
166
+
167
+ }
168
+
169
+ return self::$instance;
170
+
171
+ }
172
+
173
+ function filter_gettext_storeLatestTranslations($translation, $text, $domain) {
174
+
175
+ $array_max_size = 5;
176
+
177
+ // Keep a listing of the n latest translation
178
+ // when SimpleLogger->log() is called from anywhere we can then search for the
179
+ // translated string among our n latest things and find it there, if it's translated
180
+ //global $sh_latest_translations;
181
+ $sh_latest_translations = $this->gettextLatestTranslations;
182
+
183
+ $sh_latest_translations[$translation] = array(
184
+ "translation" => $translation,
185
+ "text" => $text,
186
+ "domain" => $domain,
187
+ );
188
+
189
+ $arr_length = sizeof($sh_latest_translations);
190
+ if ($arr_length > $array_max_size) {
191
+ $sh_latest_translations = array_slice($sh_latest_translations, $arr_length - $array_max_size);
192
+ }
193
 
194
+ $this->gettextLatestTranslations = $sh_latest_translations;
195
 
196
+ return $translation;
197
+
198
+ }
199
+
200
+ function setup_cron() {
201
+
202
+ add_filter("simple_history/maybe_purge_db", array( $this, "maybe_purge_db") );
203
+
204
+ if ( ! wp_next_scheduled('simple_history/maybe_purge_db') ) {
205
+ wp_schedule_event(time(), 'daily', 'simple_history/maybe_purge_db');
206
+ #error_log("not scheduled, so do schedule");
207
+ } else {
208
+ #error_log("is scheduled");
209
+ }
210
+
211
+ // Remove old schedule (only author dev sites should have it)
212
+ $old_next_scheduled = wp_next_scheduled('simple_history/purge_db');
213
+ if ( $old_next_scheduled ) {
214
+ wp_unschedule_event($old_next_scheduled, 'simple_history/purge_db');
215
+ }
216
 
217
  }
218
 
220
 
221
  # Log that an email has been sent
222
  simple_history_add(array(
223
+ "object_type" => "Email",
224
+ "object_name" => "Hi there",
225
+ "action" => "was sent",
226
  ));
227
 
228
  # Will show “Plugin your_plugin_name Edited” in the history log
233
 
234
  # Log with some extra details about the email
235
  simple_history_add(array(
236
+ "object_type" => "Email",
237
+ "object_name" => "Hi there",
238
+ "action" => "was sent",
239
+ "description" => "The database query to generate the email took .3 seconds. This is email number 4 that is sent to this user",
240
  ));
241
 
 
242
  }
243
 
244
  public function onAdminHead() {
245
 
246
+ if ($this->is_on_our_own_pages()) {
247
+
248
+ do_action("simple_history/admin_head", $this);
249
+
250
+ }
251
+
252
+ }
253
+
254
+ public function onAdminFooter() {
255
+
256
+ if ($this->is_on_our_own_pages()) {
257
+
258
+ do_action("simple_history/admin_footer", $this);
259
 
260
  }
261
 
265
  * Output JS templated into footer
266
  */
267
  public function add_js_templates($hook) {
268
+
269
+ if ($this->is_on_our_own_pages()) {
270
 
271
  ?>
272
+
273
  <script type="text/html" id="tmpl-simple-history-base">
274
 
275
  <div class="SimpleHistory__waitingForFirstLoad">
276
  <img src="<?php echo admin_url("/images/spinner.gif");?>" alt="" width="20" height="20">
277
+ <?php echo _x("Loading history...", "Message visible while waiting for log to load from server the first time", "simple-history")?>
278
  </div>
279
 
280
  <div class="SimpleHistoryLogitemsWrap">
291
  </script>
292
 
293
  <script type="text/html" id="tmpl-simple-history-logitems-pagination">
294
+
295
  <!-- this uses the (almost) the same html as WP does -->
296
  <div class="SimpleHistoryPaginationPages">
297
+ <!--
298
+ {{ data.page_rows_from }}–{{ data.page_rows_to }}
299
+ <span class="SimpleHistoryPaginationDisplayNum"> of {{ data.total_row_count }} </span>
300
  -->
301
  <span class="SimpleHistoryPaginationLinks">
302
+ <a
303
+ data-direction="first"
304
+ class="button SimpleHistoryPaginationLink SimpleHistoryPaginationLink--firstPage <# if ( data.api_args.paged <= 1 ) { #> disabled <# } #>"
305
+ title="{{ data.strings.goToTheFirstPage }}"
306
  href="#">«</a>
307
+ <a
308
+ data-direction="prev"
309
+ class="button SimpleHistoryPaginationLink SimpleHistoryPaginationLink--prevPage <# if ( data.api_args.paged <= 1 ) { #> disabled <# } #>"
310
+ title="{{ data.strings.goToThePrevPage }}"
311
  href="#">‹</a>
312
  <span class="SimpleHistoryPaginationInput">
313
+ <input class="SimpleHistoryPaginationCurrentPage" title="{{ data.strings.currentPage }}" type="text" name="paged" value="{{ data.api_args.paged }}" size="4">
314
+ <?php _x("of", "page n of n", "simple-history")?>
315
+ <span class="total-pages">{{ data.pages_count }}</span>
316
  </span>
317
+ <a
318
+ data-direction="next"
319
+ class="button SimpleHistoryPaginationLink SimpleHistoryPaginationLink--nextPage <# if ( data.api_args.paged >= data.pages_count ) { #> disabled <# } #>"
320
+ title="{{ data.strings.goToTheNextPage }}"
321
  href="#">›</a>
322
+ <a
323
+ data-direction="last"
324
+ class="button SimpleHistoryPaginationLink SimpleHistoryPaginationLink--lastPage <# if ( data.api_args.paged >= data.pages_count ) { #> disabled <# } #>"
325
+ title="{{ data.strings.goToTheLastPage }}"
326
  href="#">»</a>
327
  </span>
328
  </div>
348
  <?php
349
 
350
  // Call plugins so they can add their js
351
+ foreach ($this->instantiatedLoggers as $one_logger) {
352
+ if (method_exists($one_logger["instance"], "adminJS")) {
353
  $one_logger["instance"]->adminJS();
354
  }
355
  }
367
  *
368
  */
369
  public function api() {
370
+
371
  global $wpdb;
372
 
373
  // Fake slow answers
377
  unset($args["action"]);
378
 
379
  // Type = overview | ...
380
+ $type = isset($_GET["type"]) ? $_GET["type"] : null;
381
 
382
+ if (empty($args) || !$type) {
383
 
384
+ wp_send_json_error(array(
385
+ _x("Not enough args specified", "API: not enought arguments passed", "simple-history"),
386
+ ));
387
 
388
  }
389
 
390
  if (isset($args["id"])) {
391
  $args["post__in"] = array(
392
+ $args["id"],
393
  );
394
  }
395
 
 
396
  $data = array();
397
 
398
  switch ($type) {
404
  // API use SimpleHistoryLogQuery, so simply pass args on to that
405
  $logQuery = new SimpleHistoryLogQuery();
406
  $data = $logQuery->query($args);
407
+
408
  $data["api_args"] = $args;
409
 
410
  // Output can be array or HMTL
411
+ if (isset($args["format"]) && "html" === $args["format"]) {
412
+
413
  $data["log_rows_raw"] = array();
414
 
415
  foreach ($data["log_rows"] as $key => $oneLogRow) {
416
+
417
  $args = array();
418
  if ($type == "single") {
419
  $args["type"] = "single";
420
  }
421
 
422
+ $data["log_rows"][$key] = $this->getLogRowHTMLOutput($oneLogRow, $args);
423
+ $data["num_queries"] = get_num_queries();
424
 
425
  }
426
 
427
  } else {
428
+
429
  $data["logRows"] = $logRows;
430
  }
431
 
432
  break;
433
 
 
434
  default:
435
  $data[] = "Nah.";
436
 
437
  }
438
 
439
+ wp_send_json_success($data);
440
 
441
  }
442
 
445
  * to the untranslated text too, because that's the version we want to store
446
  * in the database.
447
  */
448
+ public function filter_gettext($translated_text, $untranslated_text, $domain) {
449
 
450
+ if (isset($this->doFilterGettext) && $this->doFilterGettext) {
451
 
452
  $this->doFilterGettext_currentLogger->messages[] = array(
453
  "untranslated_text" => $untranslated_text,
459
  }
460
 
461
  return $translated_text;
462
+
463
  }
464
 
465
  /**
466
  * Store messages with context
467
  */
468
+ public function filter_gettext_with_context($translated_text, $untranslated_text, $context, $domain) {
469
 
470
+ if (isset($this->doFilterGettext) && $this->doFilterGettext) {
471
 
472
  $this->doFilterGettext_currentLogger->messages[] = array(
473
  "untranslated_text" => $untranslated_text,
479
  }
480
 
481
  return $translated_text;
482
+
483
  }
484
 
485
  /**
486
  * Load language files.
487
  * Uses the method described here:
488
  * http://geertdedeckere.be/article/loading-wordpress-language-files-the-right-way
489
+ *
490
  * @since 2.0
491
  */
492
  public function load_plugin_textdomain() {
493
 
494
  $domain = 'simple-history';
495
+
496
  // The "plugin_locale" filter is also used in load_plugin_textdomain()
497
  $locale = apply_filters('plugin_locale', get_locale(), $domain);
498
 
499
+ load_textdomain($domain, WP_LANG_DIR . '/simple-history/' . $domain . '-' . $locale . '.mo');
500
+ load_plugin_textdomain($domain, FALSE, dirname($this->plugin_basename) . '/languages/');
501
 
502
  }
503
 
505
  * Setup variables and things
506
  */
507
  public function setupVariables() {
508
+
509
  // Capability required to view history = for who will the History page be added
510
  $this->view_history_capability = "edit_pages";
511
  $this->view_history_capability = apply_filters("simple_history_view_history_capability", $this->view_history_capability);
516
  $this->view_settings_capability = apply_filters("simple_history_view_settings_capability", $this->view_settings_capability);
517
  $this->view_settings_capability = apply_filters("simple_history/view_settings_capability", $this->view_settings_capability);
518
 
519
+ $this->plugin_basename = plugin_basename(__DIR__ . "/../index.php");
520
 
521
  }
522
 
524
  * Adds default tabs to settings
525
  */
526
  public function add_default_settings_tabs() {
527
+
528
  // Add default settings tabs
529
  $this->arr_settings_tabs = array(
530
+
531
  array(
532
  "slug" => "settings",
533
  "name" => __("Settings", "simple-history"),
534
+ "function" => array($this, "settings_output_general"),
535
  ),
536
 
537
  );
538
 
539
+ if (defined("SIMPLE_HISTORY_DEV") && SIMPLE_HISTORY_DEV) {
540
+
541
  $arr_dev_tabs = array(
542
  array(
543
  "slug" => "log",
544
  "name" => __("Log (debug)", "simple-history"),
545
+ "function" => array($this, "settings_output_log"),
546
  ),
547
  array(
548
  "slug" => "styles-example",
549
  "name" => __("Styles example (debug)", "simple-history"),
550
+ "function" => array($this, "settings_output_styles_example"),
551
+ ),
552
 
553
  );
554
 
555
+ $this->arr_settings_tabs = array_merge($this->arr_settings_tabs, $arr_dev_tabs);
556
 
557
  }
558
 
563
  * and instantiates them
564
  */
565
  public function loadLoggers() {
566
+
567
+ $loggersDir = __DIR__ . "/../loggers/";
568
 
569
  /**
570
  * Filter the directory to load loggers from
575
  */
576
  $loggersDir = apply_filters("simple_history/loggers_dir", $loggersDir);
577
 
578
+ $loggersFiles = glob($loggersDir . "*.php");
579
 
580
  // SimpleLogger.php must be loaded first since the other loggers extend it
581
+ require_once $loggersDir . "SimpleLogger.php";
582
 
583
  /**
584
  * Filter the array with absolute paths to files as returned by glob function.
588
  * @since 2.0
589
  *
590
  * @param array $loggersFiles Array with filenames
591
+ */
592
  $loggersFiles = apply_filters("simple_history/loggers_files", $loggersFiles);
593
+
594
  $arrLoggersToInstantiate = array();
595
+
596
+ foreach ( $loggersFiles as $oneLoggerFile ) {
597
+
598
+ $load_logger = true;
599
+
600
+ $basename_no_suffix = basename($oneLoggerFile, ".php");
601
+
602
+ /**
603
+ * Filter to completely skip loading of a logger
604
+ *
605
+ * @since 2.0.22
606
+ *
607
+ * @param bool if to load the logger. return false to not load it.
608
+ * @param srting slug of logger
609
+ */
610
+ $load_logger = apply_filters("simple_history/logger/load_logger", $load_logger, $basename_no_suffix );
611
+
612
+ if ( ! $load_logger ) {
613
+ continue;
614
+ }
615
+
616
+ if ( basename( $oneLoggerFile ) == "SimpleLogger.php") {
617
+
618
  // SimpleLogger is already loaded
619
 
620
  } else {
621
 
622
+ include_once $oneLoggerFile;
623
 
624
  }
625
 
626
+ $arrLoggersToInstantiate[] = $basename_no_suffix;
627
+
628
  }
629
 
630
  /**
633
  * @since 2.0
634
  *
635
  * @param array $arrLoggersToInstantiate Array with class names
636
+ */
637
  $arrLoggersToInstantiate = apply_filters("simple_history/loggers_to_instantiate", $arrLoggersToInstantiate);
638
+
639
  // Instantiate each logger
640
+ foreach ($arrLoggersToInstantiate as $oneLoggerName) {
641
+
642
+ if (!class_exists($oneLoggerName)) {
643
  continue;
644
  }
645
 
646
  $loggerInstance = new $oneLoggerName($this);
647
 
648
+ if (!is_subclass_of($loggerInstance, "SimpleLogger") && !is_a($loggerInstance, "SimpleLogger")) {
649
  continue;
650
  }
651
 
652
  $loggerInstance->loaded();
653
+
654
  // Tell gettext-filter to add untranslated messages
655
  $this->doFilterGettext = true;
656
  $this->doFilterGettext_currentLogger = $loggerInstance;
661
  $this->doFilterGettext = false;
662
  $this->doFilterGettext_currentLogger = null;
663
 
664
+ // LoggerInfo contains all messages, both translated an not, by key.
665
  // Add messages to the loggerInstance
666
  $loopNum = 0;
667
+ foreach ($loggerInfo["messages"] as $message_key => $message) {
668
+
669
+ $loggerInstance->messages[$message_key] = $loggerInstance->messages[$loopNum];
670
  $loopNum++;
671
 
672
  }
673
 
674
  // Remove index keys, only keeping slug keys
675
  if (is_array($loggerInstance->messages)) {
676
+ foreach ($loggerInstance->messages as $key => $val) {
677
+ if (is_int($key)) {
678
+ unset($loggerInstance->messages[$key]);
679
  }
680
  }
681
+ }
682
+
683
  // Add logger to array of loggers
684
+ $this->instantiatedLoggers[$loggerInstance->slug] = array(
685
  "name" => $loggerInfo["name"],
686
+ "instance" => $loggerInstance,
687
  );
688
 
689
  }
690
 
691
+ do_action("simple_history/loggers_loaded");
692
 
693
  #sf_d($this->instantiatedLoggers);exit;
694
 
699
  * and instantiates them
700
  */
701
  public function loadDropins() {
702
+
703
+ $dropinsDir = __DIR__ . "/../dropins/";
704
 
705
  /**
706
  * Filter the directory to load loggers from
711
  */
712
  $dropinsDir = apply_filters("simple_history/dropins_dir", $dropinsDir);
713
 
714
+ $dropinsFiles = glob($dropinsDir . "*.php");
715
 
716
  /**
717
  * Filter the array with absolute paths to files as returned by glob function.
721
  * @since 2.0
722
  *
723
  * @param array $dropinsFiles Array with filenames
724
+ */
725
  $dropinsFiles = apply_filters("simple_history/dropins_files", $dropinsFiles);
726
+
727
  $arrDropinsToInstantiate = array();
728
 
729
+ foreach ($dropinsFiles as $oneDropinFile) {
730
+
731
  // path/path/simplehistory/dropins/SimpleHistoryDonateDropin.php => SimpleHistoryDonateDropin
732
  $oneDropinFileBasename = basename($oneDropinFile, ".php");
733
 
734
+ $load_dropin = true;
735
+
736
  /**
737
  * Filter to completely skip loading of dropin
738
  * complete filer name will be like:
742
  *
743
  * @param bool if to load the dropin. return false to not load it.
744
  */
745
+ $load_dropin = apply_filters("simple_history/dropin/load_dropin_{$oneDropinFileBasename}", $load_dropin);
746
+
747
+ /**
748
+ * Filter to completely skip loading of a dropin
749
+ *
750
+ * @since 2.0.22
751
+ *
752
+ * @param bool if to load the dropin. return false to not load it.
753
+ * @param string slug of dropin
754
+ */
755
+ $load_dropin = apply_filters("simple_history/dropin/load_dropin", $load_dropin, $oneDropinFileBasename);
756
 
757
  if ( ! $load_dropin ) {
758
  continue;
759
  }
760
 
761
+ include_once $oneDropinFile;
762
 
763
  $arrDropinsToInstantiate[] = $oneDropinFileBasename;
764
+
765
  }
766
 
767
  /**
770
  * @since 2.0
771
  *
772
  * @param array $arrDropinsToInstantiate Array with class names
773
+ */
774
  $arrDropinsToInstantiate = apply_filters("simple_history/dropins_to_instantiate", $arrDropinsToInstantiate);
775
 
776
  // Instantiate each dropin
777
+ foreach ($arrDropinsToInstantiate as $oneDropinName) {
778
+
779
+ if (!class_exists($oneDropinName)) {
780
  continue;
781
  }
782
 
783
  $this->instantiatedDropins[$oneDropinName] = array(
784
  "name" => $oneDropinName,
785
+ "instance" => new $oneDropinName($this),
786
  );
787
  }
788
 
789
  }
790
 
791
  /**
792
+ * Gets the pager size,
793
  * i.e. the number of items to show on each page in the history
794
  *
795
  * @return int
810
  return $pager_size;
811
 
812
  }
 
813
 
814
  /**
815
  * Show a link to our settings page on the Plugins -> Installed Plugins screen
816
  */
817
  function plugin_action_links($actions, $b, $c, $d) {
818
+
819
  // Only add link if user has the right to view the settings page
820
+ if (!current_user_can($this->view_settings_capability)) {
821
  return $actions;
822
  }
823
 
824
  $settings_page_url = menu_page_url(SimpleHistory::SETTINGS_MENU_SLUG, 0);
825
+
826
  $actions[] = "<a href='$settings_page_url'>" . __("Settings", "simple-history") . "</a>";
827
 
828
  return $actions;
829
+
830
  }
831
 
832
  /**
835
  * and a setting to show dashboard to be set
836
  */
837
  function add_dashboard_widget() {
838
+
839
+ if ($this->setting_show_on_dashboard() && current_user_can($this->view_history_capability)) {
840
+
841
  wp_add_dashboard_widget("simple_history_dashboard_widget", __("Simple History", 'simple-history'), array($this, "dashboard_widget_output"));
842
+
843
  }
844
  }
845
 
847
  * Output html for the dashboard widget
848
  */
849
  function dashboard_widget_output() {
850
+
851
  $pager_size = $this->get_pager_size();
852
 
853
  /**
859
  */
860
  $pager_size = apply_filters("simple_history/dashboard_pager_size", $pager_size);
861
 
862
+ do_action("simple_history/dashboard/before_gui", $this);
863
 
864
  ?>
865
  <div class="SimpleHistoryGui"
866
+ data-pager-size='<?php echo $pager_size?>'
867
  ></div>
868
  <?php
869
 
870
  }
871
+
872
  function is_on_our_own_pages($hook = "") {
873
 
874
  $current_screen = get_current_screen();
875
 
876
+ if ($current_screen && $current_screen->base == "settings_page_" . SimpleHistory::SETTINGS_MENU_SLUG) {
877
+
878
  return true;
879
 
880
+ } else if ($current_screen && $current_screen->base == "dashboard_page_simple_history_page") {
881
 
882
  return true;
883
 
884
+ } else if (($hook == "settings_page_" . SimpleHistory::SETTINGS_MENU_SLUG) || ($this->setting_show_on_dashboard() && $hook == "index.php") || ($this->setting_show_as_page() && $hook == "dashboard_page_simple_history_page")) {
885
 
886
  return true;
887
 
888
+ } else if ($current_screen && $current_screen->base == "dashboard" && $this->setting_show_on_dashboard()) {
889
 
890
  return true;
891
 
900
  * Only adds scripts to pages where the log is shown or the settings page.
901
  */
902
  function enqueue_admin_scripts($hook) {
903
+
904
+ if ($this->is_on_our_own_pages()) {
905
+
906
  add_thickbox();
907
 
908
+ $plugin_url = plugin_dir_url(__DIR__ . "/../index.php");
909
+ wp_enqueue_style("simple_history_styles", $plugin_url . "css/styles.css", false, SimpleHistory::VERSION);
910
+ wp_enqueue_script("simple_history_script", $plugin_url . "js/scripts.js", array("jquery", "backbone", "wp-util"), SimpleHistory::VERSION, true);
911
+
912
  wp_enqueue_script("select2", $plugin_url . "/js/select2/select2.min.js", array("jquery"));
913
  wp_enqueue_style("select2", $plugin_url . "/js/select2/select2.css");
914
 
915
  // Translations that we use in JavaScript
916
+ wp_localize_script('simple_history_script', 'simple_history_script_vars', array(
917
  'settingsConfirmClearLog' => __("Remove all log items?", 'simple-history'),
918
  'pagination' => array(
919
  'goToTheFirstPage' => __("Go to the first page", 'simple-history'),
923
  'currentPage' => __("Current page", 'simple-history'),
924
  ),
925
  "loadLogAPIError" => __("Oups, the log could not be loaded right now.", 'simple-history'),
926
+ "logNoHits" => __("Your search did not match any history events.", "simple-history"),
927
  ));
928
 
929
  // Call plugins adminCSS-method, so they can add their CSS
930
+ foreach ($this->instantiatedLoggers as $one_logger) {
931
+ if (method_exists($one_logger["instance"], "adminCSS")) {
932
  $one_logger["instance"]->adminCSS();
933
  }
934
  }
935
 
936
  /**
937
+ * Fires when the admin scripts have been enqueued.
938
+ * Only fires on any of the pages where Simple History is used
939
+ *
940
+ * @since 2.0
941
+ *
942
+ * @param SimpleHistory $SimpleHistory This class.
943
+ */
944
  do_action("simple_history/enqueue_admin_scripts", $this);
945
+
946
  }
947
 
948
  }
950
  function filter_option_page_capability($capability) {
951
  return $capability;
952
  }
953
+
954
  /**
955
  * Check if plugin version have changed, i.e. has been upgraded
956
  * If upgrade is detected then maybe modify database and so on for that version
964
  $table_name_contexts = $wpdb->prefix . SimpleHistory::DBTABLE_CONTEXTS;
965
  $first_install = false;
966
 
967
+ // If no db_version is set then this
968
  // is a version of Simple History < 0.4
969
  // or it's a first install
970
  // Fix database not using UTF-8
971
+ if (false === $db_version) {
972
+
973
+ require_once ABSPATH . 'wp-admin/includes/upgrade.php';
974
 
975
  // Table creation, used to be in register_activation_hook
976
+ /*
977
  $sql = "CREATE TABLE " . $table_name . " (
978
+ id int(10) NOT NULL AUTO_INCREMENT,
979
+ date datetime NOT NULL,
980
+ action varchar(255) NOT NULL COLLATE utf8_general_ci,
981
+ object_type varchar(255) NOT NULL COLLATE utf8_general_ci,
982
+ object_subtype VARCHAR(255) NOT NULL COLLATE utf8_general_ci,
983
+ user_id int(10) NOT NULL,
984
+ object_id int(10) NOT NULL,
985
+ object_name varchar(255) NOT NULL COLLATE utf8_general_ci,
986
+ action_description longtext,
987
+ PRIMARY KEY (id)
988
  ) CHARACTER SET=utf8;";
989
  dbDelta($sql);
990
+ */
991
 
992
  // We change the varchar size to add one num just to force update of encoding. dbdelta didn't see it otherwise.
993
  // This table is missing action_description, but we add that later on
1005
 
1006
  // Upgrade db / fix utf for varchars
1007
  dbDelta($sql);
1008
+
1009
  // Fix UTF-8 for table
1010
  $sql = sprintf('alter table %1$s charset=utf8;', $table_name);
1011
  $wpdb->query($sql);
1012
+
1013
  $db_version_prev = $db_version;
1014
  $db_version = 1;
1015
 
 
 
 
 
 
 
 
 
1016
  update_option("simple_history_db_version", $db_version);
1017
 
1018
+ // We are not 100% sure that this is a first install,
1019
  // but it is at least a very old version that is being updated
1020
  $first_install = true;
1021
 
1022
+ }// done pre db ver 1 things
 
1023
 
1024
  // If db version is 1 then upgrade to 2
1025
  // Version 2 added the action_description column
1026
+ if (1 == intval($db_version)) {
1027
 
1028
+ // Add column for action description in non-translatable free text
1029
  $sql = "ALTER TABLE {$table_name} ADD COLUMN action_description longtext";
1030
  $wpdb->query($sql);
1031
 
1041
  $arr_options = array(
1042
  array(
1043
  "name" => "simple_history_show_as_page",
1044
+ "default_value" => 1,
1045
  ),
1046
  array(
1047
  "name" => "simple_history_show_on_dashboard",
1048
+ "default_value" => 1,
1049
+ ),
1050
  );
1051
 
1052
  foreach ($arr_options as $one_option) {
1053
+
1054
+ if (false === ($option_value = get_option($one_option["name"]))) {
1055
 
1056
  // Value is not set in db, so set it to a default
1057
+ update_option($one_option["name"], $one_option["default_value"]);
1058
 
1059
  }
1060
  }
1066
  *
1067
  * @since 2.0
1068
  */
1069
+ if (2 == intval($db_version)) {
1070
 
1071
+ require_once ABSPATH . 'wp-admin/includes/upgrade.php';
1072
 
1073
  // Update old table
1074
  $sql = "
1092
  KEY date (date),
1093
  KEY loggerdate (logger, date)
1094
  ) CHARSET=utf8;";
1095
+
1096
  dbDelta($sql);
1097
 
1098
  // Add context table
1117
  // Update old items to use SimpleLegacyLogger
1118
  $sql = sprintf('
1119
  UPDATE %1$s
1120
+ SET
1121
  logger = "SimpleLegacyLogger",
1122
  level = "info"
1123
  WHERE logger IS NULL
1124
+ ',
1125
  $table_name
1126
  );
1127
 
1128
+ $wpdb->query($sql);
1129
 
1130
  // Say welcome, however loggers are not added this early so we need to
1131
  // use a filter to load it later
1132
+ add_action("simple_history/loggers_loaded", array($this, "addWelcomeLogMessage"));
1133
 
1134
+ }// db version 2 » 3
1135
 
1136
  /**
1137
+ * If db version = 3
1138
  * then we need to update database to allow null values for some old columns
1139
  * that used to work in pre wp 4.1 beta, but since 4.1 wp uses STRICT_ALL_TABLES
1140
  * WordPress Commit: https://github.com/WordPress/WordPress/commit/f17d168a0f72211a9bfd9d3fa680713069871bb6
1141
+ *
1142
  * @since 2.0
1143
  */
1144
+ if (3 == intval($db_version)) {
1145
 
1146
+ require_once ABSPATH . 'wp-admin/includes/upgrade.php';
1147
 
1148
  $sql = sprintf('
1149
  ALTER TABLE %1$s
1153
  MODIFY `user_id` int(10) NULL,
1154
  MODIFY `object_id` int(10) NULL,
1155
  MODIFY `object_name` varchar(255) NULL
1156
+ ',
1157
  $table_name
1158
  );
1159
+ $wpdb->query($sql);
1160
 
1161
  $db_version_prev = $db_version;
1162
  $db_version = 4;
1163
+
1164
  update_option("simple_history_db_version", $db_version);
1165
 
1166
+ }// end db version 3 » 4
1167
+
1168
+ }// end check_for_upgrade
1169
 
 
 
 
1170
  /**
1171
  * Greet users to version 2!
1172
  */
1173
  public function addWelcomeLogMessage() {
1174
 
1175
  SimpleLogger()->info(
1176
+ "Welcome to Simple History 2! Hope you will enjoy this plugin.
1177
  Found bugs? Got great ideas? Send them to the plugin developer at par.thernstrom@gmail.com.",
1178
  array(
1179
+ "_initiator" => SimpleLoggerLogInitiators::WORDPRESS,
1180
  )
1181
  );
1182
 
1197
  /**
1198
  * Output HTML for the settings page
1199
  * Called from add_options_page
1200
+ */
1201
  function settings_page_output() {
1202
+
1203
  $arr_settings_tabs = $this->getSettingsTabs();
1204
 
1205
  ?>
1207
 
1208
  <h2 class="SimpleHistoryPageHeadline">
1209
  <div class="dashicons dashicons-backup SimpleHistoryPageHeadline__icon"></div>
1210
+ <?php _e("Simple History Settings", "simple-history")?>
1211
  </h2>
1212
+
1213
  <?php
1214
+ $active_tab = isset($_GET["selected-tab"]) ? $_GET["selected-tab"] : "settings";
1215
+ $settings_base_url = menu_page_url(SimpleHistory::SETTINGS_MENU_SLUG, 0);
1216
+ ?>
1217
 
1218
  <h3 class="nav-tab-wrapper">
1219
  <?php
1220
+ foreach ($arr_settings_tabs as $one_tab) {
1221
 
1222
+ $tab_slug = $one_tab["slug"];
 
 
 
 
 
 
 
 
1223
 
1224
+ printf(
1225
+ '<a href="%3$s" class="nav-tab %4$s">%1$s</a>',
1226
+ $one_tab["name"], // 1
1227
+ $tab_slug, // 2
1228
+ add_query_arg("selected-tab", $tab_slug, $settings_base_url), // 3
1229
+ $active_tab == $tab_slug ? "nav-tab-active" : ""// 4
1230
+ );
1231
+
1232
+ }
1233
+ ?>
1234
  </h3>
1235
 
1236
  <?php
 
 
 
 
 
 
 
 
 
1237
 
1238
+ // Output contents for selected tab
1239
+ $arr_active_tab = wp_filter_object_list($arr_settings_tabs, array("slug" => $active_tab));
1240
+ $arr_active_tab = current($arr_active_tab);
1241
 
1242
+ // We must have found an active tab and it must have a callable function
1243
+ if (!$arr_active_tab || !is_callable($arr_active_tab["function"])) {
1244
+ wp_die(__("No valid callback found", "simple-history"));
1245
+ }
1246
 
1247
+ $args = array(
1248
+ "arr_active_tab" => $arr_active_tab,
1249
+ );
1250
+
1251
+ call_user_func_array($arr_active_tab["function"], $args);
1252
+
1253
+ ?>
1254
 
1255
  </div>
1256
  <?php
1257
+
1258
  }
1259
 
1260
  public function settings_output_log() {
1261
+
1262
+ include __DIR__ . "/../templates/settings-log.php";
1263
 
1264
  }
1265
 
1266
  public function settings_output_general() {
1267
+
1268
+ include __DIR__ . "/../templates/settings-general.php";
1269
 
1270
  }
1271
 
1272
  public function settings_output_styles_example() {
 
 
1273
 
1274
+ include __DIR__ . "/../templates/settings-style-example.php";
1275
 
1276
+ }
1277
 
1278
  /**
1279
  * Content for section intro. Leave it be, even if empty.
1280
  * Called from add_sections_setting.
1281
  */
1282
  function settings_section_output() {
 
 
1283
 
1284
+ }
1285
 
1286
  /**
1287
  * Add pages (history page and settings page)
1288
  */
1289
  function add_admin_pages() {
1290
+
1291
  // Add a history page as a sub-page below the Dashboard menu item
1292
+ if ($this->setting_show_as_page()) {
1293
+
1294
  add_dashboard_page(
1295
+ SimpleHistory::NAME,
1296
+ _x("Simple History", 'dashboard menu name', 'simple-history'),
1297
+ $this->view_history_capability,
1298
+ "simple_history_page",
1299
+ array($this, "history_page_output")
1300
+ );
1301
 
1302
  }
1303
 
1308
  if ($show_settings_page) {
1309
 
1310
  add_options_page(
1311
+ __('Simple History Settings', "simple-history"),
1312
+ SimpleHistory::NAME,
1313
+ $this->view_settings_capability,
1314
+ SimpleHistory::SETTINGS_MENU_SLUG,
1315
+ array($this, 'settings_page_output')
1316
+ );
1317
 
1318
  }
1319
 
1326
  function add_settings() {
1327
 
1328
  // Clear the log if clear button was clicked in settings
1329
+ if (isset($_GET["simple_history_clear_log_nonce"]) && wp_verify_nonce($_GET["simple_history_clear_log_nonce"], 'simple_history_clear_log')) {
1330
+
1331
  $this->clear_log();
1332
  $msg = __("Cleared database", 'simple-history');
1333
+ add_settings_error("simple_history_rss_feed_regenerate_secret", "simple_history_rss_feed_regenerate_secret", $msg, "updated");
1334
  set_transient('settings_errors', get_settings_errors(), 30);
1335
 
1336
+ $goback = add_query_arg('settings-updated', 'true', wp_get_referer());
1337
+ wp_redirect($goback);
1338
  exit;
1339
 
1340
  }
1343
  // Will contain settings like where to show simple history and number of items
1344
  $settings_section_general_id = self::SETTINGS_SECTION_GENERAL_ID;
1345
  add_settings_section(
1346
+ $settings_section_general_id,
1347
+ "", // No title __("General", "simple-history"),
1348
+ array($this, "settings_section_output"),
1349
+ SimpleHistory::SETTINGS_MENU_SLUG// same slug as for options menu page
1350
  );
1351
 
1352
  // Settings for the general settings section
1355
 
1356
  // Checkboxes for where to show simple history
1357
  add_settings_field(
1358
+ "simple_history_show_where",
1359
  __("Show history", "simple-history"),
1360
  array($this, "settings_field_where_to_show"),
1361
  SimpleHistory::SETTINGS_MENU_SLUG,
1368
 
1369
  // Dropdown number if items to show
1370
  add_settings_field(
1371
+ "simple_history_number_of_items",
1372
  __("Number of items per page", "simple-history"),
1373
  array($this, "settings_field_number_of_items"),
1374
  SimpleHistory::SETTINGS_MENU_SLUG,
1389
 
1390
  }
1391
 
 
1392
  /**
1393
  * Output for page with the history
1394
  */
1414
  ?>
1415
 
1416
  <div class="wrap SimpleHistoryWrap">
1417
+
1418
  <h2 class="SimpleHistoryPageHeadline">
1419
  <div class="dashicons dashicons-backup SimpleHistoryPageHeadline__icon"></div>
1420
+ <?php echo _x("Simple History", 'history page headline', 'simple-history')?>
1421
  </h2>
1422
 
1423
  <?php
1424
+ /**
1425
+ * Fires before the gui div
1426
+ *
1427
+ * @since 2.0
1428
+ *
1429
+ * @param SimpleHistory $SimpleHistory This class.
1430
+ */
1431
+ do_action("simple_history/history_page/before_gui", $this);
1432
+ ?>
1433
 
1434
  <div class="SimpleHistoryGuiWrap">
1435
 
1436
  <div class="SimpleHistoryGui"
1437
+ data-pager-size='<?php echo $pager_size?>'
1438
  ></div>
1439
 
1440
  <?php
1441
 
1442
+ /**
1443
+ * Fires after the gui div
1444
+ *
1445
+ * @since 2.0
1446
+ *
1447
+ * @param SimpleHistory $SimpleHistory This class.
1448
+ */
1449
+ do_action("simple_history/history_page/after_gui", $this);
1450
+
1451
+ ?>
1452
 
 
 
1453
  </div>
1454
 
1455
  </div>
1459
  }
1460
 
1461
  /**
1462
+ * Get setting if plugin should be visible on dasboard.
1463
  * Defaults to true
1464
  *
1465
  * @return bool
1466
  */
1467
  function setting_show_on_dashboard() {
1468
+
1469
  $show_on_dashboard = get_option("simple_history_show_on_dashboard", 1);
1470
  $show_on_dashboard = apply_filters("simple_history_show_on_dashboard", $show_on_dashboard);
1471
  return (bool) $show_on_dashboard;
1490
  * Settings field for how many rows/items to show in log
1491
  */
1492
  function settings_field_number_of_items() {
1493
+
1494
  $current_pager_size = $this->get_pager_size();
1495
 
1496
  ?>
1497
  <select name="simple_history_pager_size">
1498
+ <option <?php echo $current_pager_size == 5 ? "selected" : ""?> value="5">5</option>
1499
+ <option <?php echo $current_pager_size == 10 ? "selected" : ""?> value="10">10</option>
1500
+ <option <?php echo $current_pager_size == 15 ? "selected" : ""?> value="15">15</option>
1501
+ <option <?php echo $current_pager_size == 20 ? "selected" : ""?> value="20">20</option>
1502
+ <option <?php echo $current_pager_size == 25 ? "selected" : ""?> value="25">25</option>
1503
+ <option <?php echo $current_pager_size == 30 ? "selected" : ""?> value="30">30</option>
1504
+ <option <?php echo $current_pager_size == 40 ? "selected" : ""?> value="40">40</option>
1505
+ <option <?php echo $current_pager_size == 50 ? "selected" : ""?> value="50">50</option>
1506
+ <option <?php echo $current_pager_size == 75 ? "selected" : ""?> value="75">75</option>
1507
+ <option <?php echo $current_pager_size == 100 ? "selected" : ""?> value="100">100</option>
1508
  </select>
1509
  <?php
1510
 
1518
  $show_on_dashboard = $this->setting_show_on_dashboard();
1519
  $show_as_page = $this->setting_show_as_page();
1520
  ?>
1521
+
1522
+ <input <?php echo $show_on_dashboard ? "checked='checked'" : ""?> type="checkbox" value="1" name="simple_history_show_on_dashboard" id="simple_history_show_on_dashboard" class="simple_history_show_on_dashboard" />
1523
+ <label for="simple_history_show_on_dashboard"><?php _e("on the dashboard", 'simple-history')?></label>
1524
 
1525
  <br />
1526
+
1527
+ <input <?php echo $show_as_page ? "checked='checked'" : ""?> type="checkbox" value="1" name="simple_history_show_as_page" id="simple_history_show_as_page" class="simple_history_show_as_page" />
1528
+ <label for="simple_history_show_as_page"><?php _e("as a page under the dashboard menu", 'simple-history')?></label>
1529
+
1530
  <?php
1531
+ }
1532
 
1533
  /**
1534
  * Settings section to clear database
1535
  */
1536
  function settings_field_clear_log() {
1537
+
1538
  $clear_link = add_query_arg("", "");
1539
+ $clear_link = wp_nonce_url($clear_link, "simple_history_clear_log", "simple_history_clear_log_nonce");
1540
  $clear_days = $this->get_clear_history_interval();
1541
 
1542
  echo "<p>";
1543
+ if ($clear_days > 0) {
1544
+ echo sprintf(__('Items in the database are automatically removed after %1$s days.', "simple-history"), $clear_days);
1545
  } else {
1546
+ _e('Items in the database are kept forever.', 'simple-history');
1547
  }
1548
  echo "</p>";
1549
 
1551
  }
1552
 
1553
  /**
1554
+ * How old log entried are allowed to be.
1555
  * 0 = don't delete old entries.
1556
  *
1557
  * @return int Number of days.
1573
  function clear_log() {
1574
 
1575
  global $wpdb;
1576
+
1577
  $tableprefix = $wpdb->prefix;
1578
+
1579
  $simple_history_table = SimpleHistory::DBTABLE;
1580
  $simple_history_context_table = SimpleHistory::DBTABLE_CONTEXTS;
1581
+
1582
+ // Get number of rows before delete
1583
+ $sql_num_rows = "SELECT count(id) AS num_rows FROM {$tableprefix}{$simple_history_table}";
1584
+ $num_rows = $wpdb->get_var($sql_num_rows, 0);
1585
+
1586
  $sql = "DELETE FROM {$tableprefix}{$simple_history_table}";
1587
  $wpdb->query($sql);
1588
 
1589
  $sql = "DELETE FROM {$tableprefix}{$simple_history_context_table}";
1590
  $wpdb->query($sql);
1591
 
1592
+ // Zero state sucks
1593
+ SimpleLogger()->info(
1594
+ __("The log for Simple History was cleared ({num_rows} rows were removed).", "simple-history"),
1595
+ array(
1596
+ "num_rows" => $num_rows,
1597
+ )
1598
+ );
1599
+
1600
+ $this->get_cache_incrementor(true);
1601
+
1602
+ }
1603
+
1604
+ /**
1605
+ * Runs the purge_db() method sometimes
1606
+ * We don't want to call it each time because it performs SQL queries
1607
+ *
1608
+ * @since 2.0.17
1609
+ */
1610
+ function maybe_purge_db() {
1611
+
1612
+ /*if ( ! is_admin() ) {
1613
+ return;
1614
+ }*/
1615
+
1616
+ // How often should we try to do this?
1617
+ // Once a day = a bit tiresome
1618
+ // Let's go with sundays; purge the log on sundays
1619
+
1620
+ // day of week, 1 = mon, 7 = sun
1621
+ $day_of_week = date('N');
1622
+ if ( 7 === (int) $day_of_week ) {
1623
+
1624
+ $this->purge_db();
1625
+
1626
+ }
1627
+
1628
  }
1629
 
1630
  /**
1631
  * Removes old entries from the db
 
1632
  */
1633
  function purge_db() {
1634
 
1635
+ // SimpleLogger()->debug("Simple History is running purge_db()");
1636
+
1637
  $do_purge_history = true;
1638
+
1639
  $do_purge_history = apply_filters("simple_history_allow_db_purge", $do_purge_history);
1640
  $do_purge_history = apply_filters("simple_history/allow_db_purge", $do_purge_history);
1641
+
1642
+ if (!$do_purge_history) {
1643
  return;
1644
  }
1645
 
1651
  }
1652
 
1653
  global $wpdb;
 
 
1654
 
1655
+ $table_name = $wpdb->prefix . SimpleHistory::DBTABLE;
1656
+ $table_name_contexts = $wpdb->prefix . SimpleHistory::DBTABLE_CONTEXTS;
1657
 
1658
+ // Get id of rows to delete
1659
+ $sql = "SELECT id FROM {$table_name} WHERE DATE_ADD(date, INTERVAL $days DAY) < now()";
1660
+
1661
+ $ids_to_delete = $wpdb->get_col($sql);
1662
+
1663
+ if (empty($ids_to_delete)) {
1664
+ // Nothing to delete
1665
+ return;
1666
+ }
1667
+
1668
+ $sql_ids_in = implode(",", $ids_to_delete);
1669
+
1670
+ // Add number of deleted rows to total_rows option
1671
+ $prev_total_rows = (int) get_option("simple_history_total_rows", 0);
1672
+ $total_rows = $prev_total_rows + sizeof($ids_to_delete);
1673
+ update_option("simple_history_total_rows", $total_rows);
1674
+
1675
+ // Remove rows + contexts
1676
+ $sql_delete_history = "DELETE FROM {$table_name} WHERE id IN ($sql_ids_in)";
1677
+ $sql_delete_history_context = "DELETE FROM {$table_name_contexts} WHERE history_id IN ($sql_ids_in)";
1678
+
1679
+ $wpdb->query($sql_delete_history);
1680
+ $wpdb->query($sql_delete_history_context);
1681
+
1682
+ $message = _nx(
1683
+ "Simple History removed one event that were older than {days} days",
1684
+ "Simple History removed {num_rows} events that were older than {days} days",
1685
+ "Database is being cleared automagically",
1686
+ "simple-history"
1687
+ );
1688
+
1689
+ SimpleLogger()->info(
1690
+ $message,
1691
+ array(
1692
+ "days" => $days,
1693
+ "num_rows" => sizeof($ids_to_delete),
1694
+ )
1695
+ );
1696
+
1697
+ $this->get_cache_incrementor(true);
1698
 
1699
  }
1700
 
1703
  * Uses the getLogRowPlainTextOutput of the logger that logged the row
1704
  * with fallback to SimpleLogger if logger is not available
1705
  *
1706
+ * @param array $row
1707
  * @return string
1708
  */
1709
  public function getLogRowPlainTextOutput($row) {
1710
+
1711
  $row_logger = $row->logger;
1712
  $logger = null;
1713
+ $row->context = isset($row->context) && is_array($row->context) ? $row->context : array();
1714
 
1715
+ if (!isset($row->context["_message_key"])) {
1716
  $row->context["_message_key"] = null;
1717
  }
1718
+
1719
  // Fallback to SimpleLogger if no logger exists for row
1720
+ if (!isset($this->instantiatedLoggers[$row_logger])) {
1721
  $row_logger = "SimpleLogger";
1722
  }
1723
 
1724
+ $logger = $this->instantiatedLoggers[$row_logger]["instance"];
1725
+
1726
+ return $logger->getLogRowPlainTextOutput($row);
1727
 
 
 
1728
  }
1729
 
1730
  /**
1732
  * Uses the getLogRowHeaderOutput of the logger that logged the row
1733
  * with fallback to SimpleLogger if logger is not available
1734
  *
1735
+ * Loggers are discouraged to override this in the loggers,
1736
  * because the output should be the same for all items in the gui
1737
+ *
1738
  * @param array $row
1739
  * @return string
1740
  */
1742
 
1743
  $row_logger = $row->logger;
1744
  $logger = null;
1745
+ $row->context = isset($row->context) && is_array($row->context) ? $row->context : array();
1746
+
1747
  // Fallback to SimpleLogger if no logger exists for row
1748
+ if (!isset($this->instantiatedLoggers[$row_logger])) {
1749
  $row_logger = "SimpleLogger";
1750
  }
1751
 
1752
+ $logger = $this->instantiatedLoggers[$row_logger]["instance"];
1753
 
1754
+ return $logger->getLogRowHeaderOutput($row);
1755
 
1756
  }
1757
 
1758
  /**
1759
+ *
1760
+ *
1761
  * @param array $row
1762
  * @return string
1763
  */
1765
 
1766
  $row_logger = $row->logger;
1767
  $logger = null;
1768
+ $row->context = isset($row->context) && is_array($row->context) ? $row->context : array();
1769
+
1770
  // Fallback to SimpleLogger if no logger exists for row
1771
+ if (!isset($this->instantiatedLoggers[$row_logger])) {
1772
  $row_logger = "SimpleLogger";
1773
  }
1774
 
1775
+ $logger = $this->instantiatedLoggers[$row_logger]["instance"];
1776
 
1777
+ return $logger->getLogRowSenderImageOutput($row);
1778
 
1779
  }
1780
 
1782
 
1783
  $row_logger = $row->logger;
1784
  $logger = null;
1785
+ $row->context = isset($row->context) && is_array($row->context) ? $row->context : array();
1786
+
1787
  // Fallback to SimpleLogger if no logger exists for row
1788
+ if (!isset($this->instantiatedLoggers[$row_logger])) {
1789
  $row_logger = "SimpleLogger";
1790
  }
1791
 
1792
+ $logger = $this->instantiatedLoggers[$row_logger]["instance"];
1793
 
1794
+ return $logger->getLogRowDetailsOutput($row);
1795
 
1796
  }
1797
 
1798
  /**
1799
  * Works like json_encode, but adds JSON_PRETTY_PRINT if the current php version supports it
1800
  * i.e. PHP is 5.4.0 or greated
1801
+ *
1802
  * @param $value array|object|string|whatever that is json_encode'able
1803
  */
1804
  public static function json_encode($value) {
1805
+
1806
+ return version_compare(PHP_VERSION, '5.4.0') >= 0 ? json_encode($value, JSON_PRETTY_PRINT) : json_encode($value);
1807
 
1808
  }
1809
 
1812
  * @param string $haystack
1813
  * @param string $needle
1814
  */
1815
+ public static function ends_with($haystack, $needle) {
1816
+ return $needle === substr($haystack, -strlen($needle));
1817
  }
1818
 
1819
  /**
1825
  public function getLogRowHTMLOutput($oneLogRow, $args) {
1826
 
1827
  $defaults = array(
1828
+ "type" => "overview", // or "single" to include more stuff
1829
  );
1830
 
1831
+ $args = wp_parse_args($args, $defaults);
1832
 
1833
+ $header_html = $this->getLogRowHeaderOutput($oneLogRow);
1834
  $plain_text_html = $this->getLogRowPlainTextOutput($oneLogRow);
1835
  $sender_image_html = $this->getLogRowSenderImageOutput($oneLogRow);
1836
+
1837
  // Details = for example thumbnail of media
1838
+ $details_html = trim($this->getLogRowDetailsOutput($oneLogRow));
1839
  if ($details_html) {
1840
 
1841
  $details_html = sprintf(
1848
  // subsequentOccasions = including the current one
1849
  $occasions_count = $oneLogRow->subsequentOccasions - 1;
1850
  $occasions_html = "";
1851
+
1852
  if ($occasions_count > 0) {
1853
 
1854
  $occasions_html = '<div class="SimpleHistoryLogitem__occasions">';
1855
+
1856
  $occasions_html .= '<a href="#" class="SimpleHistoryLogitem__occasionsLink">';
1857
  $occasions_html .= sprintf(
1858
+ _n('+%1$s similar event', '+%1$s similar events', $occasions_count, "simple-history"),
1859
  $occasions_count
1860
  );
1861
  $occasions_html .= '</a>';
1873
  $occasions_count
1874
  );
1875
  $occasions_html .= '</span>';
1876
+
1877
  $occasions_html .= '</div>';
1878
 
1879
  }
1880
 
1881
  $data_attrs = "";
1882
+ $data_attrs .= sprintf(' data-row-id="%1$d" ', $oneLogRow->id);
1883
+ $data_attrs .= sprintf(' data-occasions-count="%1$d" ', $occasions_count);
1884
+ $data_attrs .= sprintf(' data-occasions-id="%1$s" ', $oneLogRow->occasionsID);
1885
+ $data_attrs .= sprintf(' data-ip-address="%1$s" ', esc_attr($oneLogRow->context["_server_remote_addr"]));
1886
 
1887
  // If type is single then include more details
1888
  $more_details_html = "";
1889
+ if ($args["type"] == "single") {
1890
 
1891
  $more_details_html .= sprintf('<h2 class="SimpleHistoryLogitem__moreDetailsHeadline">%1$s</h2>', __("Context data", "simple-history"));
1892
+ $more_details_html .= "<p>" . __("This is potentially useful meta data that a logger has saved.", "simple-history") . "</p>";
1893
  $more_details_html .= "<table class='SimpleHistoryLogitem__moreDetailsContext'>";
1894
  $more_details_html .= sprintf(
1895
  '<tr>
1903
  foreach ($oneLogRow as $rowKey => $rowVal) {
1904
 
1905
  // skip arrays and objects and such
1906
+ if (is_array($rowVal) || is_object($rowVal)) {
1907
  continue;
1908
  }
1909
 
1912
  <td>%1$s</td>
1913
  <td>%2$s</td>
1914
  </tr>',
1915
+ esc_html($rowKey),
1916
+ esc_html($rowVal)
1917
  );
1918
 
1919
  }
1925
  <td>%1$s</td>
1926
  <td>%2$s</td>
1927
  </tr>',
1928
+ esc_html($contextKey),
1929
+ esc_html($contextVal)
1930
  );
1931
 
1932
  }
1940
 
1941
  }
1942
 
1943
+ // Classes to add to log item li element
1944
+ $classes = array(
1945
+ "SimpleHistoryLogitem",
1946
+ "SimpleHistoryLogitem--loglevel-{$oneLogRow->level}",
1947
+ "SimpleHistoryLogitem--logger-{$oneLogRow->logger}",
1948
+ );
1949
+
1950
  if (isset($oneLogRow->initiator) && !empty($oneLogRow->initiator)) {
1951
+ $classes[] = "SimpleHistoryLogitem--initiator-" . esc_attr($oneLogRow->initiator);
1952
  }
1953
 
 
 
 
 
 
1954
  // Always append the log level tag
1955
  $log_level_tag_html = sprintf(
1956
+ ' <span class="SimpleHistoryLogitem--logleveltag SimpleHistoryLogitem--logleveltag-%1$s">%2$s</span>',
1957
+ $oneLogRow->level,
1958
+ $this->getLogLevelTranslated($oneLogRow->level)
1959
  );
1960
 
1961
  $plain_text_html .= $log_level_tag_html;
1962
 
1963
+ /**
1964
+ * Filter to modify classes added to item li element
1965
+ *
1966
+ * @since 2.0.7
1967
+ *
1968
+ * @param $classes Array with classes
1969
+ */
1970
+ $classes = apply_filters("simple_history/logrowhtmloutput/classes", $classes);
1971
+
1972
  // Generate the HTML output for a row
1973
  $output = sprintf(
1974
  '
1975
+ <li %8$s class="%10$s">
1976
  <div class="SimpleHistoryLogitem__firstcol">
1977
  <div class="SimpleHistoryLogitem__senderImage">%3$s</div>
1978
  </div>
1994
  $oneLogRow->logger, // 7
1995
  $data_attrs, // 8 data attributes
1996
  $more_details_html, // 9
1997
+ join(" ", $classes) // 10
1998
  );
1999
 
2000
  // Get the main message row.
2001
+ // Should be as plain as possible, like plain text
2002
  // but with links to for example users and posts
2003
  #SimpleLoggerFormatter::getRowTextOutput($oneLogRow);
2004
 
2010
 
2011
  }
2012
 
2013
+ /**
2014
+ * Return translated loglevel
2015
+ *
2016
+ * @since 2.0.14
2017
+ * @param string $loglevel
2018
+ * @return string translated loglevel
2019
+ */
2020
+ function getLogLevelTranslated($loglevel) {
2021
+
2022
+ $str_translated = "";
2023
+
2024
+ switch ($loglevel) {
2025
+
2026
+ // Lowercase
2027
+ case "emergency":
2028
+ $str_translated = _x("emergency", "Log level in gui", "simple-history");
2029
+ break;
2030
+
2031
+ case "alert":
2032
+ $str_translated = _x("alert", "Log level in gui", "simple-history");
2033
+ break;
2034
+
2035
+ case "critical":
2036
+ $str_translated = _x("critical", "Log level in gui", "simple-history");
2037
+ break;
2038
+
2039
+ case "error":
2040
+ $str_translated = _x("error", "Log level in gui", "simple-history");
2041
+ break;
2042
+
2043
+ case "warning":
2044
+ $str_translated = _x("warning", "Log level in gui", "simple-history");
2045
+ break;
2046
+
2047
+ case "notice":
2048
+ $str_translated = _x("notice", "Log level in gui", "simple-history");
2049
+ break;
2050
+
2051
+ case "info":
2052
+ $str_translated = _x("info", "Log level in gui", "simple-history");
2053
+ break;
2054
+
2055
+ case "debug":
2056
+ $str_translated = _x("debug", "Log level in gui", "simple-history");
2057
+ break;
2058
+
2059
+ // Uppercase
2060
+ case "Emergency":
2061
+ $str_translated = _x("Emergency", "Log level in gui", "simple-history");
2062
+ break;
2063
+
2064
+ case "Alert":
2065
+ $str_translated = _x("Alert", "Log level in gui", "simple-history");
2066
+ break;
2067
+
2068
+ case "Critical":
2069
+ $str_translated = _x("Critical", "Log level in gui", "simple-history");
2070
+ break;
2071
+
2072
+ case "Error":
2073
+ $str_translated = _x("Error", "Log level in gui", "simple-history");
2074
+ break;
2075
+
2076
+ case "Warning":
2077
+ $str_translated = _x("Warning", "Log level in gui", "simple-history");
2078
+ break;
2079
+
2080
+ case "Notice":
2081
+ $str_translated = _x("Notice", "Log level in gui", "simple-history");
2082
+ break;
2083
+
2084
+ case "Info":
2085
+ $str_translated = _x("Info", "Log level in gui", "simple-history");
2086
+ break;
2087
+
2088
+ case "Debug":
2089
+ $str_translated = _x("Debug", "Log level in gui", "simple-history");
2090
+ break;
2091
+
2092
+ default:
2093
+ $str_translated = $loglevel;
2094
+
2095
+ }
2096
+
2097
+ return $str_translated;
2098
+
2099
+ }
2100
+
2101
  public function getInstantiatedLoggers() {
2102
 
2103
  return $this->instantiatedLoggers;
2105
  }
2106
 
2107
  public function getInstantiatedLoggerBySlug($slug = "") {
2108
+
2109
+ if (empty($slug)) {
2110
  return false;
2111
  }
2112
+
2113
  foreach ($this->getInstantiatedLoggers() as $one_logger) {
2114
+
2115
+ if ($slug == $one_logger["instance"]->slug) {
2116
  return $one_logger["instance"];
2117
  }
2118
 
2134
 
2135
  $arr_loggers_user_can_view = array();
2136
 
2137
+ if (!is_numeric($user_id)) {
2138
  $user_id = get_current_user_id();
2139
  }
2140
 
2144
  $logger_capability = $one_logger["instance"]->getCapability();
2145
 
2146
  //$arr_loggers_user_can_view = apply_filters("simple_history/loggers_user_can_read", $user_id, $arr_loggers_user_can_view);
2147
+ $user_can_read_logger = user_can($user_id, $logger_capability);
2148
  $user_can_read_logger = apply_filters("simple_history/loggers_user_can_read/can_read_single_logger", $user_can_read_logger, $one_logger["instance"], $user_id);
2149
 
2150
+ if ($user_can_read_logger) {
2151
  $arr_loggers_user_can_view[] = $one_logger;
2152
  }
2153
 
2154
  }
2155
 
2156
  /**
2157
+ * Fires before Simple History does it's init stuff
2158
+ *
2159
+ * @since 2.0
2160
+ *
2161
+ * @param array $arr_loggers_user_can_view Array with loggers that user $user_id can read
2162
+ * @param int user_id ID of user to check read capability for
2163
+ */
2164
  $arr_loggers_user_can_view = apply_filters("simple_history/loggers_user_can_read", $arr_loggers_user_can_view, $user_id);
2165
 
2166
  // just return array with slugs in parenthesis suitable for sql-where
2167
+ if ("sql" == $format) {
2168
 
2169
  $str_return = "(";
2170
+
2171
  foreach ($arr_loggers_user_can_view as $one_logger) {
2172
+
2173
  $str_return .= sprintf(
2174
  '"%1$s", ',
2175
  $one_logger["instance"]->slug
2176
  );
2177
 
2178
  }
2179
+
2180
  $str_return = rtrim($str_return, " ,");
2181
  $str_return .= ")";
2182
 
2184
 
2185
  }
2186
 
 
2187
  return $arr_loggers_user_can_view;
2188
 
2189
  }
2190
 
2191
  /**
2192
  * Retrieve the avatar for a user who provided a user ID or email address.
2193
+ * A modified version of the function that comes with WordPress, but we
2194
  * want to allow/show gravatars even if they are disabled in discussion settings
2195
  *
2196
  * @since 2.0
2200
  * @param string $default URL to a default image to use if no avatar is available
2201
  * @param string $alt Alternative text to use in image tag. Defaults to blank
2202
  * @return string <img> tag for the user's avatar
2203
+ */
2204
+ function get_avatar($email, $size = '96', $default = '', $alt = false) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2205
 
2206
+ // WP setting for avatars is to show, so just use the built in function
2207
+ if ( get_option('show_avatars') ) {
2208
 
2209
+ $avatar = get_avatar($email, $size, $default, $alt);
2210
+
2211
+ return $avatar;
 
 
 
 
 
2212
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2213
  } else {
 
 
 
2214
 
2215
+ // WP setting for avatar was to not show, but we do it anyway, using the same code as get_avatar() would have used
2216
+
2217
+ if (false === $alt) {
2218
+ $safe_alt = '';
2219
+ } else {
2220
+ $safe_alt = esc_attr($alt);
2221
+ }
2222
+
2223
+ if (!is_numeric($size)) {
2224
+ $size = '96';
2225
+ }
2226
+
2227
+ if (empty($default)) {
2228
+ $avatar_default = get_option('avatar_default');
2229
+ if (empty($avatar_default)) {
2230
+ $default = 'mystery';
2231
+ } else {
2232
+ $default = $avatar_default;
2233
+ }
2234
+
2235
+ }
2236
+
2237
+ if (!empty($email)) {
2238
+ $email_hash = md5(strtolower(trim($email)));
2239
+ }
2240
+
2241
+ if (is_ssl()) {
2242
+ $host = 'https://secure.gravatar.com';
2243
+ } else {
2244
+ if (!empty($email)) {
2245
+ $host = sprintf("http://%d.gravatar.com", (hexdec($email_hash[0]) % 2));
2246
+ } else {
2247
+ $host = 'http://0.gravatar.com';
2248
+ }
2249
+
2250
+ }
2251
+
2252
+ if ('mystery' == $default) {
2253
+ $default = "$host/avatar/ad516503a11cd5ca435acc9bb6523536?s={$size}";
2254
+ }
2255
+ // ad516503a11cd5ca435acc9bb6523536 == md5('unknown@gravatar.com')
2256
+ elseif ('blank' == $default) {
2257
+ $default = $email ? 'blank' : includes_url('images/blank.gif');
2258
+ } elseif (!empty($email) && 'gravatar_default' == $default) {
2259
+ $default = '';
2260
+ } elseif ('gravatar_default' == $default) {
2261
+ $default = "$host/avatar/?s={$size}";
2262
+ } elseif (empty($email)) {
2263
+ $default = "$host/avatar/?d=$default&amp;s={$size}";
2264
+ } elseif (strpos($default, 'http://') === 0) {
2265
+ $default = add_query_arg('s', $size, $default);
2266
+ }
2267
+
2268
+ if (!empty($email)) {
2269
+ $out = "$host/avatar/";
2270
+ $out .= $email_hash;
2271
+ $out .= '?s=' . $size;
2272
+ $out .= '&amp;d=' . urlencode($default);
2273
+
2274
+ $rating = get_option('avatar_rating');
2275
+ if (!empty($rating)) {
2276
+ $out .= "&amp;r={$rating}";
2277
+ }
2278
+
2279
+ $out = str_replace('&#038;', '&amp;', esc_url($out));
2280
+ $avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
2281
+ } else {
2282
+ $out = esc_url($default);
2283
+ $avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
2284
+ }
2285
+
2286
+ /**
2287
+ * Filter the avatar to retrieve.
2288
+ * Same filter WordPress uses
2289
+ *
2290
+ * @since 2.0.19
2291
+ *
2292
+ * @param string $avatar Image tag for the user's avatar.
2293
+ * @param int|object|string $id_or_email A user ID, email address, or comment object.
2294
+ * @param int $size Square avatar width and height in pixels to retrieve.
2295
+ * @param string $alt Alternative text to use in the avatar image tag.
2296
+ * Default empty.
2297
+ */
2298
+ $avatar = apply_filters( 'get_avatar', $avatar, $id_or_email, $size, $default, $alt );
2299
+
2300
+ return $avatar;
2301
+
2302
+ } // else
2303
+
2304
  }
2305
 
2306
  /**
2308
  * Uses filter "simple_history/history_page/before_gui" to output its contents
2309
  */
2310
  public function output_quick_stats() {
2311
+
2312
  global $wpdb;
2313
 
2314
  // Get number of events today
2315
  $logQuery = new SimpleHistoryLogQuery();
2316
  $logResults = $logQuery->query(array(
2317
  "posts_per_page" => 1,
2318
+ "date_from" => strtotime("today"),
2319
  ));
2320
 
2321
+ $total_row_count = (int) $logResults["total_row_count"];
2322
+
2323
+ // Get sql query for where to read only loggers current user is allowed to read/view
2324
  $sql_loggers_in = $this->getLoggersThatUserCanRead(get_current_user_id(), "sql");
2325
+
2326
+ // Get number of users today, i.e. events with wp_user as initiator
2327
  $sql_users_today = sprintf('
2328
+ SELECT
2329
  DISTINCT(c.value) AS user_id
2330
  #h.id, h.logger, h.level, h.initiator, h.date
2331
  FROM %3$s AS h
2332
+ INNER JOIN %4$s AS c
2333
  ON c.history_id = h.id AND c.key = "_user_id"
2334
+ WHERE
2335
  initiator = "wp_user"
2336
  AND logger IN %1$s
2337
  AND date > "%2$s"
2338
+ ',
2339
  $sql_loggers_in,
2340
  date("Y-m-d H:i", strtotime("today")),
2341
  $wpdb->prefix . SimpleHistory::DBTABLE,
2342
  $wpdb->prefix . SimpleHistory::DBTABLE_CONTEXTS
2343
  );
2344
 
2345
+ $cache_key = "quick_stats_users_today_" . md5( serialize( $sql_loggers_in ) );
2346
+ $cache_group = "simple-history-" . $this->get_cache_incrementor();
2347
+ $results_users_today = wp_cache_get($cache_key, $cache_group );
2348
+
2349
+ if ( false === $results_users_today ) {
2350
+ $results_users_today = $wpdb->get_results($sql_users_today);
2351
+ wp_cache_set($cache_key, $results_users_today, $cache_group );
2352
+ }
2353
+
2354
+ $count_users_today = sizeof( $results_users_today );
2355
+
2356
+ // Get number of other sources (not wp_user)
2357
+ $sql_other_sources_where = sprintf(
2358
+ '
2359
+ initiator <> "wp_user"
2360
+ AND logger IN %1$s
2361
+ AND date > "%2$s"
2362
+ ',
2363
+ $sql_loggers_in,
2364
+ date("Y-m-d H:i", strtotime("today")),
2365
+ $wpdb->prefix . SimpleHistory::DBTABLE,
2366
+ $wpdb->prefix . SimpleHistory::DBTABLE_CONTEXTS
2367
+ );
2368
+
2369
+ $sql_other_sources_where = apply_filters("simple_history/quick_stats_where", $sql_other_sources_where);
2370
+
2371
+ $sql_other_sources = sprintf('
2372
+ SELECT
2373
+ DISTINCT(h.initiator) AS initiator
2374
+ FROM %3$s AS h
2375
+ WHERE
2376
+ %5$s
2377
+ ',
2378
+ $sql_loggers_in,
2379
+ date("Y-m-d H:i", strtotime("today")),
2380
+ $wpdb->prefix . SimpleHistory::DBTABLE,
2381
+ $wpdb->prefix . SimpleHistory::DBTABLE_CONTEXTS,
2382
+ $sql_other_sources_where // 5
2383
+ );
2384
+ // sf_d($sql_other_sources, '$sql_other_sources');
2385
+
2386
+ $cache_key = "quick_stats_results_other_sources_today_" . md5( serialize($sql_other_sources) );
2387
+ $results_other_sources_today = wp_cache_get($cache_key, $cache_group);
2388
+
2389
+ if ( false === $results_other_sources_today ) {
2390
+
2391
+ $results_other_sources_today = $wpdb->get_results($sql_other_sources);
2392
+ wp_cache_set($cache_key, $results_other_sources_today, $cache_group);
2393
+
2394
+ }
2395
+
2396
+ $count_other_sources = sizeof($results_other_sources_today);
2397
+
2398
+ #sf_d($logResults, '$logResults');
2399
+ #sf_d($results_users_today, '$sql_users_today');
2400
+ #sf_d($results_other_sources_today, '$results_other_sources_today');
2401
+
2402
  ?>
2403
  <div class="SimpleHistoryQuickStats">
2404
  <p>
2405
  <?php
2406
+
2407
  $msg_tmpl = "";
2408
 
2409
+ // No results today at all
2410
+ if ( $total_row_count == 0 ) {
2411
+
2412
  $msg_tmpl = __("No events today so far.", "simple-history");
2413
 
2414
+ } else {
2415
 
2416
+ /*
2417
+ Type of results
2418
+ x1 event today from 1 user.
2419
+ x1 event today from 1 source.
2420
+ 3 events today from 1 user.
2421
+ x2 events today from 2 users.
2422
+ x2 events today from 1 user and 1 other source.
2423
+ x3 events today from 2 users and 1 other source.
2424
+ x3 events today from 1 user and 2 other sources.
2425
+ x4 events today from 2 users and 2 other sources.
2426
+ */
2427
+
2428
+ // A single event existed and was from a user
2429
+ // 1 event today from 1 user.
2430
+ if ( $total_row_count == 1 && $count_users_today == 1 ) {
2431
+ $msg_tmpl .= __('One event today from one user.', "simple-history");
2432
+ }
2433
 
2434
+ // A single event existed and was from another source
2435
+ // 1 event today from 1 source.
2436
+ if ( $total_row_count == 1 && !$count_users_today ) {
2437
+ $msg_tmpl .= __('One event today from one source.', "simple-history");
2438
+ }
2439
 
2440
+ // Multiple events from a single user
2441
+ // 3 events today from one user.
2442
+ if ( $total_row_count > 1 && $count_users_today == 1 && !$count_other_sources ) {
2443
+ $msg_tmpl .= __('%1$d events today from one user.', "simple-history");
2444
+ }
2445
 
2446
+ // Multiple events from only users
2447
+ // 2 events today from 2 users.
2448
+ if ( $total_row_count > 1 && $count_users_today == $total_row_count ) {
2449
+ $msg_tmpl .= __('%1$d events today from %2$d users.', "simple-history");
2450
+ }
2451
+
2452
+ // Multiple events from 1 single user and 1 single other source
2453
+ // 2 events today from 1 user and 1 other source.
2454
+ if ( $total_row_count && 1 == $count_users_today && 1 == $count_other_sources ) {
2455
+ $msg_tmpl .= __('%1$d events today from one user and one other source.', "simple-history");
2456
+ }
2457
+
2458
+ // Multiple events from multple users but from only 1 single other source
2459
+ // 3 events today from 2 users and 1 other source.
2460
+ if ( $total_row_count > 1 && $count_users_today > 1 && $count_other_sources == 1 ) {
2461
+ $msg_tmpl .= __('%1$d events today from one user and one other source.', "simple-history");
2462
+ }
2463
+
2464
+ // Multiple events from 1 user but from multiple other source
2465
+ // 3 events today from 1 user and 2 other sources.
2466
+ if ( $total_row_count > 1 && 1 == $count_users_today && $count_other_sources > 1 ) {
2467
+ $msg_tmpl .= __('%1$d events today from one user and %3$d other sources.', "simple-history");
2468
+ }
2469
+
2470
+ // Multiple events from multiple user and from multiple other sources
2471
+ // 4 events today from 2 users and 2 other sources.
2472
+ if ( $total_row_count > 1 && $count_users_today > 1 && $count_other_sources > 1 ) {
2473
+ $msg_tmpl .= __('%1$s events today from %2$d users and %3$d other sources.', "simple-history");
2474
+ }
2475
 
2476
  }
2477
 
2480
 
2481
  printf(
2482
  $msg_tmpl,
2483
+ $logResults["total_row_count"], // 1
2484
+ $count_users_today, // 2
2485
+ $count_other_sources // 3
2486
  );
2487
 
2488
  // Space between texts
2489
  /*
2490
+ echo " ";
2491
 
2492
+ // http://playground-root.ep/wp-admin/options-general.php?page=simple_history_settings_menu_slug&selected-tab=stats
2493
+ printf(
2494
+ '<a href="%1$s">View more stats</a>.',
2495
+ add_query_arg("selected-tab", "stats", menu_page_url(SimpleHistory::SETTINGS_MENU_SLUG, 0))
2496
+ );
2497
+ */
2498
 
2499
  }
2500
+
2501
  ?>
2502
  </p>
2503
+ </div>
2504
  <?php
2505
 
2506
+ } // output_quick_stats
2507
+
2508
+ /**
2509
+ * https://www.tollmanz.com/invalidation-schemes/
2510
+ *
2511
+ * @param $refresh bool
2512
+ * @return string
2513
+ */
2514
+ public static function get_cache_incrementor( $refresh = false ) {
2515
+
2516
+ $incrementor_key = 'simple_history_incrementor';
2517
+ $incrementor_value = wp_cache_get( $incrementor_key );
2518
+
2519
+ if ( false === $incrementor_value || true === $refresh ) {
2520
+ $incrementor_value = time();
2521
+ wp_cache_set( $incrementor_key, $incrementor_value );
2522
+ }
2523
+
2524
+ //echo "<br>incrementor_value: $incrementor_value";
2525
+ return $incrementor_value;
2526
+
2527
  }
2528
 
2529
  } // class
2530
 
2531
+
2532
+ /**
2533
+ * Helper function with same name as the SimpleLogger-class
2534
+ *
2535
+ * Makes call like this possible:
2536
+ * SimpleLogger()->info("This is a message sent to the log");
2537
+ */
2538
+ function SimpleLogger() {
2539
+ return new SimpleLogger( SimpleHistory::get_instance() );
2540
+ }
2541
+
2542
+
2543
+ /**
2544
+ * Add event to history table
2545
+ * This is here for backwards compatibility
2546
+ * If you use this please consider using
2547
+ * SimpleHistory()->info();
2548
+ * instead
2549
+ */
2550
+ function simple_history_add($args) {
2551
+
2552
+ $defaults = array(
2553
+ "action" => null,
2554
+ "object_type" => null,
2555
+ "object_subtype" => null,
2556
+ "object_id" => null,
2557
+ "object_name" => null,
2558
+ "user_id" => null,
2559
+ "description" => null
2560
+ );
2561
+
2562
+ $context = wp_parse_args( $args, $defaults );
2563
+
2564
+ $message = "{$context["object_type"]} {$context["object_name"]} {$context["action"]}";
2565
+
2566
+ SimpleLogger()->info($message, $context);
2567
+
2568
+ } // simple_history_add
SimpleHistoryLogQuery.php → inc/SimpleHistoryLogQuery.php RENAMED
@@ -70,6 +70,14 @@ class SimpleHistoryLogQuery {
70
  $args = wp_parse_args( $args, $defaults );
71
  // sf_d($args, "Run log query with args");
72
 
 
 
 
 
 
 
 
 
73
  /*
74
  Subequent occasions query thanks to this Stack Overflow thread:
75
  http://stackoverflow.com/questions/13566303/how-to-group-subsequent-rows-based-on-a-criteria-and-then-count-them-mysql/13567320#13567320
@@ -150,7 +158,7 @@ class SimpleHistoryLogQuery {
150
  %2$s
151
  ';
152
 
153
- $sh = $GLOBALS["simple_history"];
154
 
155
  // Only include loggers that the current user can view
156
  $sql_loggers_user_can_view = $sh->getLoggersThatUserCanRead(get_current_user_id(), "sql");
@@ -734,6 +742,8 @@ class SimpleHistoryLogQuery {
734
 
735
  #sf_d($arr_return, '$arr_return');exit;
736
 
 
 
737
  return $arr_return;
738
 
739
  } // query
70
  $args = wp_parse_args( $args, $defaults );
71
  // sf_d($args, "Run log query with args");
72
 
73
+ $cache_key = "SimpleHistoryLogQuery_" . md5(serialize( $args )) . "_get_" . md5(serialize( $_GET )) . "_userid_" . get_current_user_id();
74
+ $cache_group = "simple-history-" . SimpleHistory::get_cache_incrementor();
75
+ $arr_return = wp_cache_get($cache_key, $cache_group);
76
+
77
+ if ( false !== $arr_return ) {
78
+ return $arr_return;
79
+ }
80
+
81
  /*
82
  Subequent occasions query thanks to this Stack Overflow thread:
83
  http://stackoverflow.com/questions/13566303/how-to-group-subsequent-rows-based-on-a-criteria-and-then-count-them-mysql/13567320#13567320
158
  %2$s
159
  ';
160
 
161
+ $sh = SimpleHistory::get_instance();
162
 
163
  // Only include loggers that the current user can view
164
  $sql_loggers_user_can_view = $sh->getLoggersThatUserCanRead(get_current_user_id(), "sql");
742
 
743
  #sf_d($arr_return, '$arr_return');exit;
744
 
745
+ wp_cache_set($cache_key, $arr_return, $cache_group);
746
+
747
  return $arr_return;
748
 
749
  } // query
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.6
7
  Author: Pär Thernström
8
  Author URI: http://simple-history.com/
9
  License: GPL2
@@ -12,7 +12,7 @@ License: GPL2
12
  /* Copyright 2014 Pär Thernström (email: par.thernstrom@gmail.com)
13
 
14
  This program is free software; you can redistribute it and/or modify
15
- it under the terms of the GNU General Public License, version 2, as
16
  published by the Free Software Foundation.
17
 
18
  This program is distributed in the hope that it will be useful,
@@ -25,13 +25,15 @@ License: GPL2
25
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
26
  */
27
 
 
 
 
28
 
29
  if ( version_compare( phpversion(), "5.3", ">=") ) {
30
-
31
  /** Load required files */
32
- require_once(__DIR__ . "/SimpleHistory.php");
33
- require_once(__DIR__ . "/SimpleHistoryLogQuery.php");
34
- require_once(__DIR__ . "/SimpleHistoryFunctions.php");
35
 
36
  /**
37
  * Register function that is called when plugin is installed
@@ -41,70 +43,26 @@ if ( version_compare( phpversion(), "5.3", ">=") ) {
41
  // register_activation_hook( trailingslashit(WP_PLUGIN_DIR) . trailingslashit( plugin_basename(__DIR__) ) . "index.php" , array("SimpleHistory", "on_plugin_activate" ) );
42
 
43
  /** Boot up */
44
- $GLOBALS["simple_history"] = new SimpleHistory();
45
 
46
  } else {
47
-
48
  // user is running to old version of php, add admin notice about that
49
- add_action( 'admin_notices', 'simple_history_old_version_admin_notice' );
50
 
51
  function simple_history_old_version_admin_notice() {
52
  ?>
53
  <div class="updated error">
54
- <p><?php
55
- printf(
56
- __( 'Simple History is a great plugin, but to use it your server must have at least PHP 5.3 installed (you have version %s).', 'simple-history' ),
57
- phpversion()
58
- );
59
  ?></p>
60
  </div>
61
- <?php
62
- }
63
-
64
- }
65
-
66
- // Test log cron things
67
- /*
68
- wp_schedule_event( time(), "hourly", "simple_history_cron_testhook");
69
- */
70
- /*
71
- wp_clear_scheduled_hook("simple_history_cron_testhook");
72
- add_action( 'simple_history_cron_testhook', 'simple_history_cron_testhook_function' );
73
- function simple_history_cron_testhook_function() {
74
- SimpleLogger()->info("This is a message inside a cron function");
75
- }
76
- */
77
-
78
- /*
79
- add_action("init", function() {
80
-
81
- global $wp_current_filter;
82
-
83
- $doing_cron = get_transient( 'doing_cron' );
84
- $const_doing_cron = defined('DOING_CRON') && DOING_CRON;
85
-
86
- if ($const_doing_cron) {
87
-
88
- $current_filter = current_filter();
89
-
90
- SimpleLogger()->info("This is a message inside init, trying to log crons", array(
91
- "doing_cron" => simpleHistory::json_encode($doing_cron),
92
- "current_filter" => $current_filter,
93
- "wp_current_filter" => $wp_current_filter,
94
- "wp_current_filter" => simpleHistory::json_encode( $wp_current_filter ),
95
- "const_doing_cron" => simpleHistory::json_encode($const_doing_cron)
96
- ));
97
 
98
  }
99
 
100
- }, 100);
101
- */
102
-
103
-
104
- /*
105
- add_action("init", function() {
106
-
107
- #SimpleLogger()->info("This is a regular info message" . time());
108
 
109
- }, 100);
110
- // */
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.22
7
  Author: Pär Thernström
8
  Author URI: http://simple-history.com/
9
  License: GPL2
12
  /* Copyright 2014 Pär Thernström (email: par.thernstrom@gmail.com)
13
 
14
  This program is free software; you can redistribute it and/or modify
15
+ it under the terms of the GNU General Public License, version 2, as
16
  published by the Free Software Foundation.
17
 
18
  This program is distributed in the hope that it will be useful,
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 */
35
+ require_once(__DIR__ . "/inc/SimpleHistory.php");
36
+ require_once(__DIR__ . "/inc/SimpleHistoryLogQuery.php");
 
37
 
38
  /**
39
  * Register function that is called when plugin is installed
43
  // register_activation_hook( trailingslashit(WP_PLUGIN_DIR) . trailingslashit( plugin_basename(__DIR__) ) . "index.php" , array("SimpleHistory", "on_plugin_activate" ) );
44
 
45
  /** Boot up */
46
+ SimpleHistory::get_instance();
47
 
48
  } else {
49
+
50
  // user is running to old version of php, add admin notice about that
51
+ add_action( 'admin_notices', 'simple_history_old_version_admin_notice' );
52
 
53
  function simple_history_old_version_admin_notice() {
54
  ?>
55
  <div class="updated error">
56
+ <p><?php
57
+ printf(
58
+ __( 'Simple History is a great plugin, but to use it your server must have at least PHP 5.3 installed (you have version %s).', 'simple-history' ),
59
+ phpversion()
60
+ );
61
  ?></p>
62
  </div>
63
+ <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
  }
66
 
67
+ }
 
 
 
 
 
 
 
68
 
 
 
js/scripts.js CHANGED
@@ -7,15 +7,15 @@ var simple_history = (function($) {
7
  var debug = function(what) {
8
 
9
  if (typeof what == "object") {
10
-
11
  var newWhat = "";
12
-
13
  _.each(what, function(val, key) {
14
  newWhat += key + ": " + val + "\n";
15
  });
16
-
17
  what = newWhat;
18
-
19
  }
20
 
21
  $(".SimpleHistoryLogitems__debug").append("<br>" + what);
@@ -168,9 +168,9 @@ var simple_history = (function($) {
168
  var logRowID = this.attributes.logRow.data("rowId");
169
  var occasionsCount = this.attributes.logRow.data("occasionsCount");
170
  var occasionsID = this.attributes.logRow.data("occasionsId");
171
-
172
  this.attributes.logRow.addClass("SimpleHistoryLogitem--occasionsOpening");
173
-
174
  this.logRows = new OccasionsLogRowsCollection([], {
175
  logRow: this.attributes.logRow,
176
  logRowID: logRowID,
@@ -188,9 +188,9 @@ var simple_history = (function($) {
188
  },
189
 
190
  render: function() {
191
-
192
  var $html = $([]);
193
-
194
  this.logRows.each(function(model) {
195
  var $li = $(model.get("html"));
196
  $li.addClass("SimpleHistoryLogitem--occasion");
@@ -198,7 +198,7 @@ var simple_history = (function($) {
198
  });
199
 
200
  this.$el.html($html);
201
-
202
  this.attributes.logRow.removeClass("SimpleHistoryLogitem--occasionsOpening").addClass("SimpleHistoryLogitem--occasionsOpened");
203
 
204
  this.$el.addClass("haveOccasionsAdded");
@@ -226,7 +226,7 @@ var simple_history = (function($) {
226
 
227
  this.template = $("#tmpl-simple-history-logitems-modal").html();
228
  this.show();
229
-
230
  this.listenTo(this.model, "change", this.render);
231
 
232
  // also close on esc
@@ -247,14 +247,14 @@ var simple_history = (function($) {
247
  show: function() {
248
 
249
  var $modalEl = $(".SimpleHistory-modal");
250
-
251
  if (!$modalEl.length) {
252
  $modalEl = $(this.template);
253
  $modalEl.appendTo("body");
254
  }
255
 
256
  this.setElement($modalEl);
257
-
258
  var $modalContentEl = $modalEl.find(".SimpleHistory-modal__content");
259
  $modalContentEl.addClass("SimpleHistory-modal__content--enter");
260
 
@@ -265,13 +265,13 @@ var simple_history = (function($) {
265
  },
266
 
267
  close: function() {
268
-
269
  var $modalContentEl = this.$el.find(".SimpleHistory-modal__content");
270
  $modalContentEl.addClass("SimpleHistory-modal__content--leave");
271
-
272
  // Force repaint before adding active class
273
  var offsetHeight = $modalContentEl.get(0).offsetHeight;
274
-
275
  $modalContentEl.addClass("SimpleHistory-modal__content--leave-active");
276
  this.$el.addClass("SimpleHistory-modal__leave-active");
277
 
@@ -287,7 +287,7 @@ var simple_history = (function($) {
287
  },
288
 
289
  render: function() {
290
-
291
  var $modalContentInnerEl = this.$el.find(".SimpleHistory-modal__contentInner");
292
  var logRowLI = this.model.get("data").log_rows[0];
293
  $modalContentInnerEl.html(logRowLI);
@@ -297,9 +297,9 @@ var simple_history = (function($) {
297
  });
298
 
299
  var RowsView = Backbone.View.extend({
300
-
301
  initialize: function() {
302
-
303
  this.collection.on("reset", this.render, this);
304
  this.collection.on("reload", this.onReload, this);
305
  this.collection.on("reloadDone", this.onReloadDone, this);
@@ -313,6 +313,8 @@ var simple_history = (function($) {
313
 
314
  onReload: function() {
315
 
 
 
316
  $("html").addClass("SimpleHistory-isLoadingPage");
317
 
318
  },
@@ -326,7 +328,7 @@ var simple_history = (function($) {
326
  // Add message if no hits
327
  $mainViewElm.removeClass("SimpleHistory--hasNoHits");
328
  if (! this.collection.length ) {
329
-
330
  $mainViewElm.addClass("SimpleHistory--hasNoHits");
331
 
332
  var noHitsClass = "SimpleHistoryLogitems__noHits";
@@ -342,7 +344,7 @@ var simple_history = (function($) {
342
  ;
343
 
344
  } // add msg
345
-
346
  },
347
 
348
  events: {
@@ -363,7 +365,7 @@ var simple_history = (function($) {
363
  var $target = $(e.target);
364
  var $logRow = $target.closest(".SimpleHistoryLogitem");
365
  var logRowID = $logRow.data("rowId");
366
-
367
  Backbone.history.navigate("item/" + logRowID, { trigger: true });
368
 
369
  },
@@ -375,7 +377,7 @@ var simple_history = (function($) {
375
  var $target = $(e.target);
376
  var $logRow = $target.closest(".SimpleHistoryLogitem");
377
  var $occasionsElm = $("<li class='SimpleHistoryLogitem__occasionsItemsWrap'><ul class='SimpleHistoryLogitem__occasionsItems'/></li>");
378
-
379
  $logRow.after($occasionsElm);
380
 
381
  this.occasionsView = new OccasionsView({
@@ -393,7 +395,7 @@ var simple_history = (function($) {
393
  this.collection.each(function(model) {
394
  html += model.get("html");
395
  });
396
-
397
  this.$el.html( html );
398
 
399
  // Rendering of log rows items is done
@@ -406,8 +408,6 @@ var simple_history = (function($) {
406
  var PaginationView = Backbone.View.extend({
407
 
408
  initialize: function() {
409
-
410
- this.template = $("#tmpl-simple-history-logitems-pagination").html();
411
 
412
  $(document).keydown({ view: this }, this.keyboardNav);
413
 
@@ -433,6 +433,12 @@ var simple_history = (function($) {
433
  return;
434
  }
435
 
 
 
 
 
 
 
436
  var paged;
437
 
438
  if (e.keyCode == 37) {
@@ -453,7 +459,7 @@ var simple_history = (function($) {
453
 
454
  // keycode 13 = enter
455
  if (e.keyCode == 13) {
456
-
457
  var $target = $(e.target);
458
  var paged = parseInt( $target.val() );
459
 
@@ -473,7 +479,7 @@ var simple_history = (function($) {
473
  },
474
 
475
  navigateArrow: function(e) {
476
-
477
  e.preventDefault();
478
  var $target = $(e.target);
479
 
@@ -507,7 +513,7 @@ var simple_history = (function($) {
507
  }
508
 
509
  this.fetchPage(paged);
510
-
511
  },
512
 
513
  /**
@@ -516,6 +522,8 @@ var simple_history = (function($) {
516
  */
517
  fetchPage: function(paged) {
518
 
 
 
519
  $("html").addClass("SimpleHistory-isLoadingPage");
520
 
521
  var url_data = {
@@ -543,8 +551,8 @@ var simple_history = (function($) {
543
 
544
  render: function() {
545
 
546
- var compiled = _.template(this.template);
547
-
548
  this.$el.html( compiled({
549
  min_id: this.collection.min_id,
550
  max_id: this.collection.max_id,
@@ -561,7 +569,7 @@ var simple_history = (function($) {
561
  });
562
 
563
  var MainView = Backbone.View.extend({
564
-
565
  el: ".SimpleHistoryGui",
566
 
567
  initialize: function() {
@@ -583,7 +591,7 @@ var simple_history = (function($) {
583
  this.logRowsCollection = new LogRowsCollection([], {
584
  mainView: this,
585
  });
586
-
587
  this.rowsView = new RowsView({
588
  el: this.$el.find(".SimpleHistoryLogitems"),
589
  collection: this.logRowsCollection
@@ -629,7 +637,7 @@ var simple_history = (function($) {
629
  },
630
 
631
  item: function(logRowID) {
632
-
633
  var detailsModel = new DetailsModel({
634
  id: logRowID
635
  });
@@ -653,9 +661,9 @@ var simple_history = (function($) {
653
  // Init MainView on domReady
654
  // This is to make sure dropins and plugins have been loaded
655
  $(document).ready(function() {
656
-
657
  mainView.manualInitialize();
658
-
659
  });
660
 
661
  return mainView;
@@ -663,7 +671,7 @@ var simple_history = (function($) {
663
  })(jQuery);
664
 
665
  jQuery(".js-SimpleHistory-Settings-ClearLog").on("click", function(e) {
666
-
667
  if (confirm(simple_history_script_vars.settingsConfirmClearLog)) {
668
  return;
669
  } else {
@@ -671,4 +679,3 @@ jQuery(".js-SimpleHistory-Settings-ClearLog").on("click", function(e) {
671
  }
672
 
673
  });
674
-
7
  var debug = function(what) {
8
 
9
  if (typeof what == "object") {
10
+
11
  var newWhat = "";
12
+
13
  _.each(what, function(val, key) {
14
  newWhat += key + ": " + val + "\n";
15
  });
16
+
17
  what = newWhat;
18
+
19
  }
20
 
21
  $(".SimpleHistoryLogitems__debug").append("<br>" + what);
168
  var logRowID = this.attributes.logRow.data("rowId");
169
  var occasionsCount = this.attributes.logRow.data("occasionsCount");
170
  var occasionsID = this.attributes.logRow.data("occasionsId");
171
+
172
  this.attributes.logRow.addClass("SimpleHistoryLogitem--occasionsOpening");
173
+
174
  this.logRows = new OccasionsLogRowsCollection([], {
175
  logRow: this.attributes.logRow,
176
  logRowID: logRowID,
188
  },
189
 
190
  render: function() {
191
+
192
  var $html = $([]);
193
+
194
  this.logRows.each(function(model) {
195
  var $li = $(model.get("html"));
196
  $li.addClass("SimpleHistoryLogitem--occasion");
198
  });
199
 
200
  this.$el.html($html);
201
+
202
  this.attributes.logRow.removeClass("SimpleHistoryLogitem--occasionsOpening").addClass("SimpleHistoryLogitem--occasionsOpened");
203
 
204
  this.$el.addClass("haveOccasionsAdded");
226
 
227
  this.template = $("#tmpl-simple-history-logitems-modal").html();
228
  this.show();
229
+
230
  this.listenTo(this.model, "change", this.render);
231
 
232
  // also close on esc
247
  show: function() {
248
 
249
  var $modalEl = $(".SimpleHistory-modal");
250
+
251
  if (!$modalEl.length) {
252
  $modalEl = $(this.template);
253
  $modalEl.appendTo("body");
254
  }
255
 
256
  this.setElement($modalEl);
257
+
258
  var $modalContentEl = $modalEl.find(".SimpleHistory-modal__content");
259
  $modalContentEl.addClass("SimpleHistory-modal__content--enter");
260
 
265
  },
266
 
267
  close: function() {
268
+
269
  var $modalContentEl = this.$el.find(".SimpleHistory-modal__content");
270
  $modalContentEl.addClass("SimpleHistory-modal__content--leave");
271
+
272
  // Force repaint before adding active class
273
  var offsetHeight = $modalContentEl.get(0).offsetHeight;
274
+
275
  $modalContentEl.addClass("SimpleHistory-modal__content--leave-active");
276
  this.$el.addClass("SimpleHistory-modal__leave-active");
277
 
287
  },
288
 
289
  render: function() {
290
+
291
  var $modalContentInnerEl = this.$el.find(".SimpleHistory-modal__contentInner");
292
  var logRowLI = this.model.get("data").log_rows[0];
293
  $modalContentInnerEl.html(logRowLI);
297
  });
298
 
299
  var RowsView = Backbone.View.extend({
300
+
301
  initialize: function() {
302
+
303
  this.collection.on("reset", this.render, this);
304
  this.collection.on("reload", this.onReload, this);
305
  this.collection.on("reloadDone", this.onReloadDone, this);
313
 
314
  onReload: function() {
315
 
316
+ $(document).trigger("SimpleHistory:logReloadStart");
317
+
318
  $("html").addClass("SimpleHistory-isLoadingPage");
319
 
320
  },
328
  // Add message if no hits
329
  $mainViewElm.removeClass("SimpleHistory--hasNoHits");
330
  if (! this.collection.length ) {
331
+
332
  $mainViewElm.addClass("SimpleHistory--hasNoHits");
333
 
334
  var noHitsClass = "SimpleHistoryLogitems__noHits";
344
  ;
345
 
346
  } // add msg
347
+
348
  },
349
 
350
  events: {
365
  var $target = $(e.target);
366
  var $logRow = $target.closest(".SimpleHistoryLogitem");
367
  var logRowID = $logRow.data("rowId");
368
+
369
  Backbone.history.navigate("item/" + logRowID, { trigger: true });
370
 
371
  },
377
  var $target = $(e.target);
378
  var $logRow = $target.closest(".SimpleHistoryLogitem");
379
  var $occasionsElm = $("<li class='SimpleHistoryLogitem__occasionsItemsWrap'><ul class='SimpleHistoryLogitem__occasionsItems'/></li>");
380
+
381
  $logRow.after($occasionsElm);
382
 
383
  this.occasionsView = new OccasionsView({
395
  this.collection.each(function(model) {
396
  html += model.get("html");
397
  });
398
+
399
  this.$el.html( html );
400
 
401
  // Rendering of log rows items is done
408
  var PaginationView = Backbone.View.extend({
409
 
410
  initialize: function() {
 
 
411
 
412
  $(document).keydown({ view: this }, this.keyboardNav);
413
 
433
  return;
434
  }
435
 
436
+ // Don't nav away if a text input (like the search box) is selected
437
+ var $target = $(e.target);
438
+ if ($target.is("input")) {
439
+ return;
440
+ }
441
+
442
  var paged;
443
 
444
  if (e.keyCode == 37) {
459
 
460
  // keycode 13 = enter
461
  if (e.keyCode == 13) {
462
+
463
  var $target = $(e.target);
464
  var paged = parseInt( $target.val() );
465
 
479
  },
480
 
481
  navigateArrow: function(e) {
482
+
483
  e.preventDefault();
484
  var $target = $(e.target);
485
 
513
  }
514
 
515
  this.fetchPage(paged);
516
+
517
  },
518
 
519
  /**
522
  */
523
  fetchPage: function(paged) {
524
 
525
+ $(document).trigger("SimpleHistory:logReloadStart");
526
+
527
  $("html").addClass("SimpleHistory-isLoadingPage");
528
 
529
  var url_data = {
551
 
552
  render: function() {
553
 
554
+ var compiled = wp.template("simple-history-logitems-pagination");
555
+
556
  this.$el.html( compiled({
557
  min_id: this.collection.min_id,
558
  max_id: this.collection.max_id,
569
  });
570
 
571
  var MainView = Backbone.View.extend({
572
+
573
  el: ".SimpleHistoryGui",
574
 
575
  initialize: function() {
591
  this.logRowsCollection = new LogRowsCollection([], {
592
  mainView: this,
593
  });
594
+
595
  this.rowsView = new RowsView({
596
  el: this.$el.find(".SimpleHistoryLogitems"),
597
  collection: this.logRowsCollection
637
  },
638
 
639
  item: function(logRowID) {
640
+
641
  var detailsModel = new DetailsModel({
642
  id: logRowID
643
  });
661
  // Init MainView on domReady
662
  // This is to make sure dropins and plugins have been loaded
663
  $(document).ready(function() {
664
+
665
  mainView.manualInitialize();
666
+
667
  });
668
 
669
  return mainView;
671
  })(jQuery);
672
 
673
  jQuery(".js-SimpleHistory-Settings-ClearLog").on("click", function(e) {
674
+
675
  if (confirm(simple_history_script_vars.settingsConfirmClearLog)) {
676
  return;
677
  } else {
679
  }
680
 
681
  });
 
languages/simple-history-da_DK.mo ADDED
Binary file
languages/simple-history-da_DK.po ADDED
@@ -0,0 +1,1790 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Simple History v2.0.12\n"
4
+ "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/Simple-History\n"
5
+ "POT-Creation-Date: 2015-01-26 15:41:57+00:00\n"
6
+ "PO-Revision-Date: 2015-02-03 08:47+0100\n"
7
+ "Last-Translator: Thomas Blomberg Hansen <thomas@blomberg.it>\n"
8
+ "Language-Team: \n"
9
+ "Language: da_DK\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
+ "X-Generator: Poedit 1.7.1\n"
15
+ "X-Poedit-SourceCharset: utf-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
18
+ "X-Poedit-Basepath: ../\n"
19
+ "X-Textdomain-Support: yes\n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+
22
+ # @ simple-history
23
+ #: SimpleHistory.php:504 SimpleHistory.php:765
24
+ msgid "Settings"
25
+ msgstr "Indstillinger"
26
+
27
+ # @ simple-history
28
+ #: SimpleHistory.php:515
29
+ msgid "Log (debug)"
30
+ msgstr "Log (debug)"
31
+
32
+ # @ simple-history
33
+ #: SimpleHistory.php:520
34
+ msgid "Styles example (debug)"
35
+ msgstr "Styles eksempel (debug)"
36
+
37
+ # @ simple-history
38
+ #. Plugin Name of the plugin/theme
39
+ #: SimpleHistory.php:780
40
+ msgid "Simple History"
41
+ msgstr "Simpel historik"
42
+
43
+ # @ simple-history
44
+ #: SimpleHistory.php:856
45
+ msgid "Remove all log items?"
46
+ msgstr "Fjern alle log elementer?"
47
+
48
+ # @ simple-history
49
+ #: SimpleHistory.php:858
50
+ msgid "Go to the first page"
51
+ msgstr "Gå til den første side"
52
+
53
+ # @ simple-history
54
+ #: SimpleHistory.php:859
55
+ msgid "Go to the previous page"
56
+ msgstr "Gå til den forrige side"
57
+
58
+ # @ simple-history
59
+ #: SimpleHistory.php:860
60
+ msgid "Go to the next page"
61
+ msgstr "Gå til den næste side"
62
+
63
+ # @ simple-history
64
+ #: SimpleHistory.php:861
65
+ msgid "Go to the last page"
66
+ msgstr "Gå til den sidste side"
67
+
68
+ # @ simple-history
69
+ #: SimpleHistory.php:862
70
+ msgid "Current page"
71
+ msgstr "Nuværende side"
72
+
73
+ # @ simple-history
74
+ #: SimpleHistory.php:864
75
+ msgid "Oups, the log could not be loaded right now."
76
+ msgstr "Ups, loggen kunne ikke indlæses lige nu."
77
+
78
+ # @ simple-history
79
+ #: SimpleHistory.php:865
80
+ msgid "Your search did not match any history events."
81
+ msgstr "Din søgning gav ingen resultater."
82
+
83
+ # @ simple-history
84
+ #: SimpleHistory.php:1149 SimpleHistory.php:1250
85
+ msgid "Simple History Settings"
86
+ msgstr "Simpel Historik opsætning"
87
+
88
+ # @ simple-history
89
+ #: SimpleHistory.php:1183
90
+ msgid "No valid callback found"
91
+ msgstr "Ingen gyldig callback fundet "
92
+
93
+ # @ simple-history
94
+ #: SimpleHistory.php:1271
95
+ msgid "Cleared database"
96
+ msgstr "Nulstillet database"
97
+
98
+ # @ simple-history
99
+ #: SimpleHistory.php:1298
100
+ msgid "Show history"
101
+ msgstr "Vis historik"
102
+
103
+ # @ simple-history
104
+ #: SimpleHistory.php:1311
105
+ msgid "Number of items per page"
106
+ msgstr "Antal elementer pr. side"
107
+
108
+ # @ simple-history
109
+ #: SimpleHistory.php:1323
110
+ msgid "Clear log"
111
+ msgstr "Nulstil log"
112
+
113
+ # @ simple-history
114
+ #: SimpleHistory.php:1462
115
+ msgid "on the dashboard"
116
+ msgstr "på kontrolpanelet"
117
+
118
+ # @ simple-history
119
+ #: SimpleHistory.php:1467
120
+ msgid "as a page under the dashboard menu"
121
+ msgstr "som et undermenupunkt til Kontrolpanelet "
122
+
123
+ # @ simple-history
124
+ #: SimpleHistory.php:1483
125
+ msgid "Items in the database are automatically removed after %1$s days."
126
+ msgstr "Elementer i databasen fjernes automatisk efter %1$s dage."
127
+
128
+ # @ simple-history
129
+ #: SimpleHistory.php:1485
130
+ msgid "Items in the database are kept forever."
131
+ msgstr "Elementer i databasen gemmes for evigt."
132
+
133
+ # @ simple-history
134
+ #: SimpleHistory.php:1489
135
+ msgid "Clear log now"
136
+ msgstr "Nulstil log nu"
137
+
138
+ #: SimpleHistory.php:1533
139
+ msgid "The log for Simple History was cleared ({num_rows} rows were removed)."
140
+ msgstr ""
141
+ "Loggen for Simple Historik blev nulstillet ({num_rows} rækker blev fjernet)."
142
+
143
+ #: SimpleHistory.php:1793
144
+ msgid "+%1$s similar event"
145
+ msgid_plural "+%1$s similar events"
146
+ msgstr[0] "+%1$s tilsvarende event"
147
+ msgstr[1] "+%1$s tilsvarende events"
148
+
149
+ # @ simple-history
150
+ #: SimpleHistory.php:1800
151
+ msgid "Loading…"
152
+ msgstr "Indlæser..."
153
+
154
+ # @ simple-history
155
+ #: SimpleHistory.php:1807
156
+ msgid "Showing %1$s more"
157
+ msgstr "%1$s flere vises"
158
+
159
+ # @ simple-history
160
+ #: SimpleHistory.php:1826
161
+ msgid "Context data"
162
+ msgstr "Kontekst data"
163
+
164
+ # @ simple-history
165
+ #: SimpleHistory.php:1827
166
+ msgid "This is potentially useful meta data that a logger has saved."
167
+ msgstr "Dette er potentielt brugbar meta data, som en logger har gemt."
168
+
169
+ # @ simple-history
170
+ #: SimpleHistory.php:2302
171
+ msgid "No events today so far."
172
+ msgstr "Endnu ingen events i dag."
173
+
174
+ #: SimpleHistory.php:2321
175
+ msgid "One event today from one user."
176
+ msgstr "Et event i dag, fra én bruger."
177
+
178
+ #: SimpleHistory.php:2327
179
+ msgid "One event today from one source."
180
+ msgstr "Et event i dag, fra én kilde"
181
+
182
+ # @ simple-history
183
+ #: SimpleHistory.php:2333
184
+ msgid "%1$d events today from one user."
185
+ msgstr "%1$d events i dag fra én bruger."
186
+
187
+ # @ simple-history
188
+ #: SimpleHistory.php:2339
189
+ msgid "%1$d events today from %2$d users."
190
+ msgstr "%1$d events i dag fra %2$d brugere."
191
+
192
+ #: SimpleHistory.php:2345 SimpleHistory.php:2351
193
+ msgid "%1$d events today from one user and one other source."
194
+ msgstr "%1$d events i dag, fra én bruger og én kilde"
195
+
196
+ #: SimpleHistory.php:2357
197
+ msgid "%1$d events today from one user and %3$d other sources."
198
+ msgstr "%1$d events i dag, fra én bruger og %3$d kilder."
199
+
200
+ #: SimpleHistory.php:2363
201
+ msgid "%1$s events today from %2$d users and %3$d other sources."
202
+ msgstr "%1$s events i dag, fra %2$d brugere og %3$d kilder."
203
+
204
+ # @ simple-history
205
+ #: dropins/SimpleHistoryDonateDropin.php:36
206
+ msgid "Donate"
207
+ msgstr "Donér"
208
+
209
+ # @ simple-history
210
+ #: dropins/SimpleHistoryDonateDropin.php:72
211
+ msgid ""
212
+ "If you find Simple History useful please <a href=\"%1$s\">donate</a> or <a "
213
+ "href=\"%2$s\">buy me something from my Amazon wish list</a>."
214
+ msgstr ""
215
+ "Hvis du synes Simpel Historik er brugbar, så kan du <a href=\"%1$s\">donére</"
216
+ "a> eller <a href=\"%2$s\">købe noget til mig på min Amazon wish list</a>."
217
+
218
+ # @ simple-history
219
+ #: dropins/SimpleHistoryFilterDropin.php:44
220
+ msgid "Filter history"
221
+ msgstr "Filtrer historik"
222
+
223
+ #: dropins/SimpleHistoryFilterDropin.php:48
224
+ #: dropins/SimpleHistoryFilterDropin.php:159
225
+ msgid "Search events"
226
+ msgstr "Søg i events"
227
+
228
+ # @ simple-history
229
+ #: dropins/SimpleHistoryFilterDropin.php:56
230
+ msgid "All log levels"
231
+ msgstr "Alle log niveauer"
232
+
233
+ # @ simple-history
234
+ #: dropins/SimpleHistoryFilterDropin.php:70
235
+ msgid "All messages"
236
+ msgstr "Alle beskeder"
237
+
238
+ # @ simple-history
239
+ #: dropins/SimpleHistoryFilterDropin.php:124
240
+ msgid "All users"
241
+ msgstr "Alle brugere"
242
+
243
+ # @ simple-history
244
+ #: dropins/SimpleHistoryFilterDropin.php:145
245
+ msgid "All dates"
246
+ msgstr "Alle datoer"
247
+
248
+ #: dropins/SimpleHistoryFilterDropin.php:168
249
+ msgid "Search"
250
+ msgstr "Søg"
251
+
252
+ # @ simple-history
253
+ #: dropins/SimpleHistoryNewRowsNotifier.php:80
254
+ msgid "1 new row"
255
+ msgid_plural "%d new rows"
256
+ msgstr[0] "1 ny række"
257
+ msgstr[1] "%d nye rækker"
258
+
259
+ # @ simple-history
260
+ #: dropins/SimpleHistoryRSSDropin.php:55
261
+ msgid "Address"
262
+ msgstr "Adresse"
263
+
264
+ # @ simple-history
265
+ #: dropins/SimpleHistoryRSSDropin.php:64
266
+ msgid "Regenerate"
267
+ msgstr "Regenerere"
268
+
269
+ # @ simple-history
270
+ #: dropins/SimpleHistoryRSSDropin.php:81
271
+ msgid "Created new secret RSS address"
272
+ msgstr "Oprettet ny RSS url"
273
+
274
+ # @ simple-history
275
+ #: dropins/SimpleHistoryRSSDropin.php:148
276
+ #: dropins/SimpleHistoryRSSDropin.php:259
277
+ msgid "History for %s"
278
+ msgstr "Historik fra %s"
279
+
280
+ # @ simple-history
281
+ #: dropins/SimpleHistoryRSSDropin.php:149
282
+ #: dropins/SimpleHistoryRSSDropin.php:260
283
+ msgid "WordPress History for %s"
284
+ msgstr "WordPress historik fra %s"
285
+
286
+ # begivenhed er måske ikke det rigtige ord.
287
+ #: dropins/SimpleHistoryRSSDropin.php:196
288
+ msgid "+%1$s occasion"
289
+ msgid_plural "+%1$s occasions"
290
+ msgstr[0] "+%1$s begivenhed"
291
+ msgstr[1] "+%1$s begivenheder"
292
+
293
+ # @ simple-history
294
+ #: dropins/SimpleHistoryRSSDropin.php:263
295
+ msgid "Wrong RSS secret"
296
+ msgstr "Forkert RSS nøgle"
297
+
298
+ # @ simple-history
299
+ #: dropins/SimpleHistoryRSSDropin.php:264
300
+ msgid ""
301
+ "Your RSS secret for Simple History RSS feed is wrong. Please see WordPress "
302
+ "settings for current link to the RSS feed."
303
+ msgstr ""
304
+ "Din RSS nøgle i Simpel Historik RSS feed'et er forkert. Du kan finde den "
305
+ "rigtige url under Indstillinger -> Simpel Historik."
306
+
307
+ # @ simple-history
308
+ #: dropins/SimpleHistoryRSSDropin.php:315
309
+ msgid ""
310
+ "You can generate a new address for the RSS feed. This is useful if you think "
311
+ "that the address has fallen into the wrong hands."
312
+ msgstr ""
313
+ "Du kan generere en ny RSS feed url. Dette kan være nyttigt, hvis du "
314
+ "mistænker at url'en er faldet i de forkerte hænder."
315
+
316
+ # @ simple-history
317
+ #: dropins/SimpleHistoryRSSDropin.php:318
318
+ msgid "Generate new address"
319
+ msgstr "Generere ny url"
320
+
321
+ # @ simple-history
322
+ #: dropins/SimpleHistoryRSSDropin.php:346
323
+ msgid ""
324
+ "Simple History has a RSS feed which you can subscribe to and receive log "
325
+ "updates. Make sure you only share the feed with people you trust, since it "
326
+ "can contain sensitive or confidential information."
327
+ msgstr ""
328
+ "Simpel Historik har et RSS feed, som du kan abonnere på og modtage log "
329
+ "opdateringer. Del kun dette feed med personer du stoler på, da det kan "
330
+ "indeholde følsomme eller fortrolige informationer."
331
+
332
+ # @ simple-history
333
+ #: dropins/SimpleHistorySettingsLogtestDropin.php:20
334
+ msgid "Test data (debug)"
335
+ msgstr "Test data (debug)"
336
+
337
+ # @ simple-history
338
+ #: dropins/SimpleHistorySettingsStatsDropin.php:27
339
+ msgid "Stats"
340
+ msgstr "Statistik"
341
+
342
+ # @ simple-history
343
+ #: dropins/SimpleHistorySidebarDropin.php:159 loggers/SimpleLogger.php:296
344
+ msgid "Just now"
345
+ msgstr "Lige nu"
346
+
347
+ # @ simple-history
348
+ #: index.php:59
349
+ msgid ""
350
+ "Simple History is a great plugin, but to use it your server must have at "
351
+ "least PHP 5.3 installed (you have version %s)."
352
+ msgstr ""
353
+ "Simpel Historik er et fantastisk plugin, men for at bruge det, skal din "
354
+ "server have PHP 5.3 eller nyere installeret (din server har version %s "
355
+ "installeret)."
356
+
357
+ # @ simple-history
358
+ #: loggers/SimpleCommentsLogger.php:685
359
+ msgid "Spam"
360
+ msgstr "Spam"
361
+
362
+ # @ simple-history
363
+ #: loggers/SimpleCommentsLogger.php:687
364
+ msgid "Approved"
365
+ msgstr "Godkendt"
366
+
367
+ # @ simple-history
368
+ #: loggers/SimpleCommentsLogger.php:689
369
+ msgid "Pending"
370
+ msgstr "Afventer"
371
+
372
+ # @ simple-history
373
+ #: loggers/SimpleCommentsLogger.php:703
374
+ msgid "Trackback"
375
+ msgstr "Trackback"
376
+
377
+ # @ simple-history
378
+ #: loggers/SimpleCommentsLogger.php:705
379
+ msgid "Pingback"
380
+ msgstr "Pingback"
381
+
382
+ # @ simple-history
383
+ #: loggers/SimpleCommentsLogger.php:707
384
+ msgid "Comment"
385
+ msgstr "Kommentar"
386
+
387
+ # @ simple-history
388
+ #: loggers/SimpleCoreUpdatesLogger.php:29
389
+ msgid "Updated WordPress from {prev_version} to {new_version}"
390
+ msgstr "Opdaterede WordPress fra {prev_version} til {new_version}"
391
+
392
+ # @ simple-history
393
+ #: loggers/SimpleCoreUpdatesLogger.php:30
394
+ msgid "WordPress auto-updated from {prev_version} to {new_version}"
395
+ msgstr "WordPress auto-opdaterede fra {prev_version} til {new_version}"
396
+
397
+ # @ simple-history
398
+ #: loggers/SimpleExportLogger.php:23
399
+ msgid "Created XML export"
400
+ msgstr "Genereret XML eksport"
401
+
402
+ # @ simple-history
403
+ #: loggers/SimpleLegacyLogger.php:88
404
+ msgid "By %s"
405
+ msgstr "af %s"
406
+
407
+ # @ simple-history
408
+ #: loggers/SimpleLegacyLogger.php:93
409
+ msgid "%d occasions"
410
+ msgstr "%d begivenheder"
411
+
412
+ # @ simple-history
413
+ #: loggers/SimpleLogger.php:203
414
+ msgid "Deleted user (had id %1$s, email %2$s, login %3$s)"
415
+ msgstr "Slettet bruger (havde ID %1$s, E-mail %2$s, brugernavn %3$s)"
416
+
417
+ # @ simple-history
418
+ #: loggers/SimpleLogger.php:218
419
+ msgid "Anonymous web user"
420
+ msgstr "Anonym besøgende"
421
+
422
+ # @ simple-history
423
+ #: loggers/SimpleLogger.php:226
424
+ msgid "Anonymous user from %1$s"
425
+ msgstr "Anonym bruger fra %1$s"
426
+
427
+ # @ simple-history
428
+ #. translators: Date format for log row header, see http:php.net/date
429
+ #: loggers/SimpleLogger.php:301
430
+ msgid "M j, Y \\a\\t G:i"
431
+ msgstr "j. F Y \\k\\l\\. H:i"
432
+
433
+ # @ simple-history
434
+ #. translators: 1: last modified date and time in human time diff-format
435
+ #: loggers/SimpleLogger.php:309
436
+ msgid "%1$s ago"
437
+ msgstr "%1$s siden"
438
+
439
+ # @ simple-history
440
+ #: loggers/SimpleMediaLogger.php:23
441
+ msgid "Created {post_type} \"{attachment_title}\""
442
+ msgstr "Tilføjet {post_type} \"{attachment_title}\""
443
+
444
+ # @ simple-history
445
+ #: loggers/SimpleMediaLogger.php:24
446
+ msgid "Edited {post_type} \"{attachment_title}\""
447
+ msgstr "Redigeret {post_type} \"{attachment_title}\""
448
+
449
+ # @ simple-history
450
+ #: loggers/SimpleMediaLogger.php:25
451
+ msgid "Deleted {post_type} \"{attachment_title}\" (\"{attachment_filename}\")"
452
+ msgstr "Slettet {post_type} \"{attachment_title}\" (\"{attachment_filename}\")"
453
+
454
+ # @ simple-history
455
+ #: loggers/SimpleMediaLogger.php:81
456
+ msgid "Edited {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
457
+ msgstr ""
458
+ "Redigeret {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
459
+
460
+ # @ simple-history
461
+ #: loggers/SimpleMediaLogger.php:85
462
+ msgid "Uploaded {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
463
+ msgstr ""
464
+ "Uploadet {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
465
+
466
+ # @ simple-history
467
+ #: loggers/SimpleMediaLogger.php:197
468
+ msgid "{attachment_thumb}"
469
+ msgstr "{attachment_thumb}"
470
+
471
+ # @ simple-history
472
+ #: loggers/SimpleMediaLogger.php:206
473
+ msgid "{attachment_size_format}"
474
+ msgstr "{attachment_size_format}"
475
+
476
+ # @ simple-history
477
+ #: loggers/SimpleMediaLogger.php:207
478
+ msgid "{attachment_filetype_extension}"
479
+ msgstr "{attachment_filetype_extension}"
480
+
481
+ # @ simple-history
482
+ #: loggers/SimpleMediaLogger.php:209
483
+ msgid "{full_image_width} × {full_image_height}"
484
+ msgstr "{full_image_width} × {full_image_height}"
485
+
486
+ # @ simple-history
487
+ #: loggers/SimpleMenuLogger.php:23
488
+ msgid "Created menu \"{menu_name}\""
489
+ msgstr "Tilføjet menu \"{menu_name}\""
490
+
491
+ # @ simple-history
492
+ #: loggers/SimpleMenuLogger.php:24
493
+ msgid "Edited menu \"{menu_name}\""
494
+ msgstr "Redigeret menu \"{menu_name}\""
495
+
496
+ # @ simple-history
497
+ #: loggers/SimpleMenuLogger.php:25
498
+ msgid "Deleted menu \"{menu_name}\""
499
+ msgstr "Slettet menu \"{menu_name}\""
500
+
501
+ # @ simple-history
502
+ #: loggers/SimpleMenuLogger.php:26
503
+ msgid "Edited a menu item"
504
+ msgstr "Redigerede et menupunkt "
505
+
506
+ # @ simple-history
507
+ #: loggers/SimpleMenuLogger.php:27
508
+ msgid "Updated menu locations"
509
+ msgstr "Opdateret menu områder"
510
+
511
+ # @ simple-history
512
+ #: loggers/SimpleOptionsLogger.php:140
513
+ msgid "Updated option \"{option}\""
514
+ msgstr "Opdateret indstlling \"{option}\""
515
+
516
+ # @ simple-history
517
+ #: loggers/SimpleOptionsLogger.php:242 loggers/SimpleThemeLogger.php:570
518
+ msgid "New value"
519
+ msgstr "Ny værdi"
520
+
521
+ # @ simple-history
522
+ #: loggers/SimpleOptionsLogger.php:253 loggers/SimpleThemeLogger.php:582
523
+ msgid "Old value"
524
+ msgstr "Gammel værdi"
525
+
526
+ # @ simple-history
527
+ #: loggers/SimpleOptionsLogger.php:268 loggers/SimpleOptionsLogger.php:285
528
+ msgid "Settings page"
529
+ msgstr "Indstillinger side"
530
+
531
+ # @ simple-history
532
+ #: loggers/SimplePostLogger.php:30
533
+ msgid "Created {post_type} \"{post_title}\""
534
+ msgstr "Tilføjet {post_type} \"{post_title}\""
535
+
536
+ # @ simple-history
537
+ #: loggers/SimplePostLogger.php:31
538
+ msgid "Updated {post_type} \"{post_title}\""
539
+ msgstr "Opdaterede {post_type} \"{post_title}\""
540
+
541
+ # @ simple-history
542
+ #: loggers/SimplePostLogger.php:32
543
+ msgid "Restored {post_type} \"{post_title}\" from trash"
544
+ msgstr "Gendannede {post_type} \"{post_title}\" fra papirkurven"
545
+
546
+ # @ simple-history
547
+ #: loggers/SimplePostLogger.php:33 loggers/SimplePostLogger.php:236
548
+ msgid "Deleted {post_type} \"{post_title}\""
549
+ msgstr "Slettede {post_type} \"{post_title}\""
550
+
551
+ # @ simple-history
552
+ #: loggers/SimplePostLogger.php:34
553
+ msgid "Moved {post_type} \"{post_title}\" to the trash"
554
+ msgstr "Flyttede {post_type} \"{post_title}\" til papirkurven"
555
+
556
+ # @ simple-history
557
+ #: loggers/SimplePostLogger.php:232
558
+ msgid "Updated {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
559
+ msgstr "Opdaterede {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
560
+
561
+ # @ simple-history
562
+ #: loggers/SimplePostLogger.php:240
563
+ msgid "Created {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
564
+ msgstr "Tilføjede {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
565
+
566
+ # @ simple-history
567
+ #: loggers/SimplePostLogger.php:245
568
+ msgid ""
569
+ "Moved {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> to the trash"
570
+ msgstr ""
571
+ "Flyttede {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> til "
572
+ "papirkurven"
573
+
574
+ # @ simple-history
575
+ #: loggers/SimpleThemeLogger.php:26
576
+ msgid "Switched theme to \"{theme_name}\" from \"{prev_theme_name}\""
577
+ msgstr "Skiftede tema til \"{theme_name}\" from \"{prev_theme_name}\""
578
+
579
+ # @ simple-history
580
+ #: loggers/SimpleThemeLogger.php:27
581
+ msgid "Customized theme appearance \"{setting_id}\""
582
+ msgstr "Tilpassede tema udseende \"{setting_id}\""
583
+
584
+ # @ simple-history
585
+ #: loggers/SimpleThemeLogger.php:28
586
+ msgid "Removed widget \"{widget_id_base}\" from sidebar \"{sidebar_id}\""
587
+ msgstr "Fjernede widget \"{widget_id_base}\" fra sidebar \"{sidebar_id}\""
588
+
589
+ # @ simple-history
590
+ #: loggers/SimpleThemeLogger.php:29
591
+ msgid "Added widget \"{widget_id_base}\" to sidebar \"{sidebar_id}\""
592
+ msgstr "Tilføjede widget \"{widget_id_base}\" to sidebar \"{sidebar_id}\""
593
+
594
+ # @ simple-history
595
+ #: loggers/SimpleThemeLogger.php:30
596
+ msgid "Changed widget order \"{widget_id_base}\" in sidebar \"{sidebar_id}\""
597
+ msgstr ""
598
+ "Ændrede widget rækkefølge \"{widget_id_base}\" i sidebar \"{sidebar_id}\""
599
+
600
+ # @ simple-history
601
+ #: loggers/SimpleThemeLogger.php:31
602
+ msgid "Changed widget \"{widget_id_base}\" in sidebar \"{sidebar_id}\""
603
+ msgstr "Ændrede widget \"{widget_id_base}\" i sidebar \"{sidebar_id}\""
604
+
605
+ # @ simple-history
606
+ #: loggers/SimpleThemeLogger.php:32
607
+ msgid "Changed settings for the theme custom background"
608
+ msgstr "Ændrede tema baggrund"
609
+
610
+ # @ simple-history
611
+ #: loggers/SimpleThemeLogger.php:532
612
+ msgid "Section"
613
+ msgstr "Sektion"
614
+
615
+ # @ simple-history
616
+ #: loggers/SimpleUserLogger.php:22
617
+ msgid ""
618
+ "Failed to login to account with username \"{login_user_login}\" because an "
619
+ "incorrect password was entered"
620
+ msgstr ""
621
+ "Mislykkes at logge ind med brugernavn \"{login_user_login}\" fordi det "
622
+ "forkerte kodeord blev brugt"
623
+
624
+ # @ simple-history
625
+ #: loggers/SimpleUserLogger.php:23
626
+ msgid ""
627
+ "Failed to login with username \"{failed_login_username}\" because no user "
628
+ "with that username exists"
629
+ msgstr ""
630
+ "Mislykkes at logge ind med brugernavn \"{failed_login_username}\" fordi "
631
+ "brugernavnet ikke findes"
632
+
633
+ # @ simple-history
634
+ #: loggers/SimpleUserLogger.php:24
635
+ msgid "Logged in"
636
+ msgstr "Loggede ind"
637
+
638
+ # @ simple-history
639
+ #: loggers/SimpleUserLogger.php:25
640
+ msgid "Unknown user logged in"
641
+ msgstr "Ukendt bruger loggede ind"
642
+
643
+ # @ simple-history
644
+ #: loggers/SimpleUserLogger.php:26
645
+ msgid "Logged out"
646
+ msgstr "Loggede ud"
647
+
648
+ # @ simple-history
649
+ #: loggers/SimpleUserLogger.php:27
650
+ msgid "Edited the profile for user {edited_user_login} ({edited_user_email})"
651
+ msgstr ""
652
+ "Redigerede brugerprofilen for {edited_user_login} ({edited_user_email})"
653
+
654
+ # @ simple-history
655
+ #: loggers/SimpleUserLogger.php:28
656
+ msgid ""
657
+ "Created user {created_user_login} ({created_user_email}) with role "
658
+ "{created_user_role}"
659
+ msgstr ""
660
+ "Tilføjede bruger {created_user_login} ({created_user_email}) med rollen "
661
+ "{created_user_role}"
662
+
663
+ # @ simple-history
664
+ #: loggers/SimpleUserLogger.php:29
665
+ msgid "Deleted user {deleted_user_login} ({deleted_user_email})"
666
+ msgstr "Slettede bruger {deleted_user_login} ({deleted_user_email})"
667
+
668
+ # @ simple-history
669
+ #: loggers/SimpleUserLogger.php:227
670
+ msgid "Edited <a href=\"{edit_profile_link}\">your profile</a>"
671
+ msgstr "Redigerede <a href=\"{edit_profile_link}\">din profil</a>"
672
+
673
+ # @ simple-history
674
+ #: loggers/SimpleUserLogger.php:231
675
+ msgid "Edited <a href=\"{edit_profile_link}\">their profile</a>"
676
+ msgstr "Redigerede <a href=\"{edit_profile_link}\">deres profil</a>"
677
+
678
+ # @ simple-history
679
+ #: loggers/SimpleUserLogger.php:240
680
+ msgid "Edited your profile"
681
+ msgstr "Redigerede din profil"
682
+
683
+ # @ simple-history
684
+ #: loggers/SimpleUserLogger.php:251
685
+ msgid ""
686
+ "Edited the profile for user <a href="
687
+ "\"{edit_profile_link}\">{edited_user_login} ({edited_user_email})</a>"
688
+ msgstr ""
689
+ "Redigerede profilen for <a href=\"{edit_profile_link}\">{edited_user_login} "
690
+ "({edited_user_email})</a>"
691
+
692
+ #: node_modules/grunt-wp-i18n/test/fixtures/basic-theme/exclude/file.php:3
693
+ #: node_modules/grunt-wp-i18n/test/fixtures/plugin-include/plugin-include.php:6
694
+ msgid "Exclude"
695
+ msgstr "Ekskludere"
696
+
697
+ #: node_modules/grunt-wp-i18n/test/fixtures/plugin-include/include/file.php:2
698
+ msgid "Include"
699
+ msgstr "Inkludere"
700
+
701
+ #: node_modules/grunt-wp-i18n/test/fixtures/text-domains/add-domain.php:2
702
+ #: node_modules/grunt-wp-i18n/test/fixtures/text-domains/update-domains.php:2
703
+ #: node_modules/grunt-wp-i18n/test/fixtures/text-domains/update-domains.php:3
704
+ msgid "String"
705
+ msgstr "Streng"
706
+
707
+ # @ simple-history
708
+ #: templates/settings-statsIntro.php:19
709
+ msgid "<b>%1$s rows</b> have been logged the last <b>%2$s days</b>"
710
+ msgstr "<b>%1$s rows</b> er logget de sidste <b>%2$s dage</b>"
711
+
712
+ # @ simple-history
713
+ #: templates/settings-statsLogLevels.php:4
714
+ msgid "Log levels"
715
+ msgstr "Log niveauer"
716
+
717
+ # @ simple-history
718
+ #: templates/settings-statsLogLevels.php:6
719
+ msgid "Number of rows logged for each log level."
720
+ msgstr "Antal rækker logget for hver log niveau."
721
+
722
+ # @ simple-history
723
+ #: templates/settings-statsLoggers.php:4
724
+ msgid "Loggers"
725
+ msgstr "Log metoder"
726
+
727
+ # @ simple-history
728
+ #: templates/settings-statsRowsPerDay.php:4
729
+ msgid "Rows per day"
730
+ msgstr "Rækker pr. dag"
731
+
732
+ # @ simple-history
733
+ #: templates/settings-statsUsers.php:4
734
+ msgid "Users"
735
+ msgstr "Brugere"
736
+
737
+ # @ simple-history
738
+ #: templates/settings-statsUsers.php:6
739
+ msgid "Number of logged items for the 5 users with most logged rows."
740
+ msgstr "Antal logget events for de 5 brugere, med flest antal logget rækker."
741
+
742
+ # @ simple-history
743
+ #: templates/settings-statsUsers.php:7
744
+ msgid "Deleted users are also included."
745
+ msgstr "Slettet brugere er også inkluderet."
746
+
747
+ #. Plugin URI of the plugin/theme
748
+ msgid "http://simple-history.com"
749
+ msgstr "http://simple-history.com"
750
+
751
+ #. Description of the plugin/theme
752
+ msgid ""
753
+ "Plugin that logs various things that occur in WordPress and then presents "
754
+ "those events in a very nice GUI."
755
+ msgstr ""
756
+ "Plugin der logger forskellige ting der sker i WordPress og præsentere dem i "
757
+ "et lækkert GUI."
758
+
759
+ #. Author of the plugin/theme
760
+ msgid "Pär Thernström"
761
+ msgstr "Pär Thernström"
762
+
763
+ #. Author URI of the plugin/theme
764
+ msgid "http://simple-history.com/"
765
+ msgstr "http://simple-history.com/"
766
+
767
+ # @ simple-history
768
+ #: SimpleHistory.php:249
769
+ msgctxt ""
770
+ "Message visible while waiting for log to load from server the first time"
771
+ msgid "Loading history..."
772
+ msgstr "Indlæser historik..."
773
+
774
+ # @ simple-history
775
+ #: SimpleHistory.php:286
776
+ msgctxt "page n of n"
777
+ msgid "of"
778
+ msgstr "af"
779
+
780
+ # @ simple-history
781
+ #: SimpleHistory.php:357
782
+ msgctxt "API: not enought arguments passed"
783
+ msgid "Not enough args specified"
784
+ msgstr "Der er ikke specificeret argumenter nok"
785
+
786
+ # @ simple-history
787
+ #: SimpleHistory.php:1235
788
+ msgctxt "dashboard menu name"
789
+ msgid "Simple History"
790
+ msgstr "Simpel Historik"
791
+
792
+ # @ simple-history
793
+ #: SimpleHistory.php:1359
794
+ msgctxt "history page headline"
795
+ msgid "Simple History"
796
+ msgstr "Simpel Historik"
797
+
798
+ #: SimpleHistory.php:1619
799
+ msgctxt "simple-history"
800
+ msgid "Simple History removed one event that were older than {days} days"
801
+ msgid_plural ""
802
+ "Simple History removed {num_rows} events that were older than {days} days"
803
+ msgstr[0] "Simpel Historik fjernede et event, der var ældre end {days} dage"
804
+ msgstr[1] ""
805
+ "Simpel Historik fjernede {num_events} events, der var ældre end {days} dage"
806
+
807
+ #: SimpleHistory.php:1963
808
+ msgctxt "Log level in gui"
809
+ msgid "emergency"
810
+ msgstr "Nødstilfælde"
811
+
812
+ #: SimpleHistory.php:1967
813
+ msgctxt "Log level in gui"
814
+ msgid "alert"
815
+ msgstr "alarm"
816
+
817
+ #: SimpleHistory.php:1971
818
+ msgctxt "Log level in gui"
819
+ msgid "critical"
820
+ msgstr "kritisk"
821
+
822
+ #: SimpleHistory.php:1975
823
+ msgctxt "Log level in gui"
824
+ msgid "error"
825
+ msgstr "fejl"
826
+
827
+ #: SimpleHistory.php:1979
828
+ msgctxt "Log level in gui"
829
+ msgid "warning"
830
+ msgstr "advarsel"
831
+
832
+ #: SimpleHistory.php:1983
833
+ msgctxt "Log level in gui"
834
+ msgid "notice"
835
+ msgstr "meddelelse"
836
+
837
+ #: SimpleHistory.php:1987
838
+ msgctxt "Log level in gui"
839
+ msgid "info"
840
+ msgstr "info"
841
+
842
+ #: SimpleHistory.php:1991
843
+ msgctxt "Log level in gui"
844
+ msgid "debug"
845
+ msgstr "debug"
846
+
847
+ #: SimpleHistory.php:1996
848
+ msgctxt "Log level in gui"
849
+ msgid "Emergency"
850
+ msgstr "Nødstilfælde"
851
+
852
+ #: SimpleHistory.php:2000
853
+ msgctxt "Log level in gui"
854
+ msgid "Alert"
855
+ msgstr "Alarm"
856
+
857
+ #: SimpleHistory.php:2004
858
+ msgctxt "Log level in gui"
859
+ msgid "Critical"
860
+ msgstr "Kritisk"
861
+
862
+ #: SimpleHistory.php:2008
863
+ msgctxt "Log level in gui"
864
+ msgid "Error"
865
+ msgstr "Fejl"
866
+
867
+ #: SimpleHistory.php:2012
868
+ msgctxt "Log level in gui"
869
+ msgid "Warning"
870
+ msgstr "Advarsel"
871
+
872
+ #: SimpleHistory.php:2016
873
+ msgctxt "Log level in gui"
874
+ msgid "Notice"
875
+ msgstr "Meddelse"
876
+
877
+ #: SimpleHistory.php:2020
878
+ msgctxt "Log level in gui"
879
+ msgid "Info"
880
+ msgstr "Info"
881
+
882
+ #: SimpleHistory.php:2024
883
+ msgctxt "Log level in gui"
884
+ msgid "Debug"
885
+ msgstr "Debug"
886
+
887
+ # @ simple-history
888
+ #: dropins/SimpleHistoryDonateDropin.php:51
889
+ msgctxt "donate settings headline"
890
+ msgid "Donate"
891
+ msgstr "Donér"
892
+
893
+ #: dropins/SimpleHistoryFilterDropin.php:50
894
+ msgctxt "Filter dropin: button to show more search options"
895
+ msgid "Show options"
896
+ msgstr "Vis flere muligheder"
897
+
898
+ #: dropins/SimpleHistoryFilterDropin.php:160
899
+ msgctxt "Filter dropin: button to hide more search options"
900
+ msgid "Hide options"
901
+ msgstr "Skjul muligheder"
902
+
903
+ # @ simple-history
904
+ #: dropins/SimpleHistoryIpInfoDropin.php:66
905
+ msgctxt "IP Info Dropin"
906
+ msgid "That IP address does not seem like a public one."
907
+ msgstr "IP adressen lader ikke til, at være en offentlig(public) IP."
908
+
909
+ # @ simple-history
910
+ #: dropins/SimpleHistoryIpInfoDropin.php:85
911
+ msgctxt "IP Info Dropin"
912
+ msgid "IP address"
913
+ msgstr "IP adresse"
914
+
915
+ # @ simple-history
916
+ #: dropins/SimpleHistoryIpInfoDropin.php:96
917
+ msgctxt "IP Info Dropin"
918
+ msgid "Hostname"
919
+ msgstr "Værtsnavn(Hostname)"
920
+
921
+ # @ simple-history
922
+ #: dropins/SimpleHistoryIpInfoDropin.php:107
923
+ #: dropins/SimpleHistoryIpInfoDropin.php:118
924
+ msgctxt "IP Info Dropin"
925
+ msgid "Network"
926
+ msgstr "Netværk"
927
+
928
+ # @ simple-history
929
+ #: dropins/SimpleHistoryIpInfoDropin.php:129
930
+ msgctxt "IP Info Dropin"
931
+ msgid "City"
932
+ msgstr "By"
933
+
934
+ # @ simple-history
935
+ #: dropins/SimpleHistoryIpInfoDropin.php:140
936
+ msgctxt "IP Info Dropin"
937
+ msgid "Region"
938
+ msgstr "Region"
939
+
940
+ # @ simple-history
941
+ #: dropins/SimpleHistoryIpInfoDropin.php:151
942
+ msgctxt "IP Info Dropin"
943
+ msgid "Country"
944
+ msgstr "Område/Land"
945
+
946
+ # @ simple-history
947
+ #: dropins/SimpleHistoryIpInfoDropin.php:162
948
+ msgctxt "IP Info Dropin"
949
+ msgid "IP info provided by %1$s ipinfo.io %2$s"
950
+ msgstr "IP info leveret af %1$s ipinfo.io %2$s"
951
+
952
+ # @ simple-history
953
+ #: dropins/SimpleHistoryNewRowsNotifier.php:38
954
+ msgctxt "New rows notifier: error while checking for new rows"
955
+ msgid "An error occured while checking for new log rows"
956
+ msgstr "Der forekom en fejl, mens der blev tjekket efter nye log rækker"
957
+
958
+ # @ simple-history
959
+ #: dropins/SimpleHistoryRSSDropin.php:47
960
+ msgctxt "rss settings headline"
961
+ msgid "RSS feed"
962
+ msgstr "RSS feed"
963
+
964
+ #: dropins/SimpleHistorySidebarDropin.php:31
965
+ msgctxt "Sidebar box"
966
+ msgid "Simple History is on GitHub"
967
+ msgstr "Simpel Historik er på GitHub"
968
+
969
+ #: dropins/SimpleHistorySidebarDropin.php:34
970
+ msgctxt "Sidebar box"
971
+ msgid ""
972
+ "You can star, fork, or report issues with this plugin over at the <a href="
973
+ "\"%1$s\">GitHub page</a>."
974
+ msgstr ""
975
+ "Du kan star, fork eller rapportere issues på pluginets <a href=\"%1$s"
976
+ "\">GitHub side</a>."
977
+
978
+ #: dropins/SimpleHistorySidebarDropin.php:48
979
+ msgctxt "Sidebar box"
980
+ msgid "Donate to support development"
981
+ msgstr "Donér for at støtte udviklingen"
982
+
983
+ #: dropins/SimpleHistorySidebarDropin.php:51
984
+ msgctxt "Sidebar box"
985
+ msgid ""
986
+ "If you like and use Simple History you should <a href=\"%1$s\">donate to "
987
+ "keep this plugin free</a>."
988
+ msgstr ""
989
+ "Hvis du synes om og bruger Simpel Historik, burde du <a href=\"%1$s"
990
+ "\">donére</a>, for at bibeholde dette plugin gratis."
991
+
992
+ #: dropins/SimpleHistorySidebarDropin.php:65
993
+ msgctxt "Sidebar box"
994
+ msgid "Review this plugin if you like it"
995
+ msgstr "Bedøm gerne dette plugin"
996
+
997
+ #: dropins/SimpleHistorySidebarDropin.php:68
998
+ msgctxt "Sidebar box"
999
+ msgid ""
1000
+ "If you like Simple History then please <a href=\"%1$s\">give it a nice "
1001
+ "review over at wordpress.org</a>."
1002
+ msgstr ""
1003
+ "Hvis du synes om Simpel Historik, så <a href=\"%1$s\">kan du anmelde det på "
1004
+ "wordpress.org</a>."
1005
+
1006
+ #: dropins/SimpleHistorySidebarDropin.php:72
1007
+ msgctxt "Sidebar box"
1008
+ msgid ""
1009
+ "A good review will help new users find this plugin. And it will make the "
1010
+ "plugin author very happy :)"
1011
+ msgstr ""
1012
+ "En god anmeldelse, vil hjælpe nye brugere til at finde dette plugin. Det vil "
1013
+ "også gøre plugin forfatteren meget glad :)"
1014
+
1015
+ # @ simple-history
1016
+ #: loggers/SimpleCommentsLogger.php:95
1017
+ msgctxt "A comment was added to the database by a non-logged in internet user"
1018
+ msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
1019
+ msgstr ""
1020
+ "Tilføjede en kommentar til {comment_post_type} \"{comment_post_title}\""
1021
+
1022
+ # @ simple-history
1023
+ #: loggers/SimpleCommentsLogger.php:101
1024
+ msgctxt "A comment was added to the database by a logged in user"
1025
+ msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
1026
+ msgstr ""
1027
+ "Tilføjede en kommentar til {comment_post_type} \"{comment_post_title}\""
1028
+
1029
+ # @ simple-history
1030
+ #: loggers/SimpleCommentsLogger.php:107
1031
+ msgctxt "A comment was approved"
1032
+ msgid ""
1033
+ "Approved a comment to \"{comment_post_title}\" by {comment_author} "
1034
+ "({comment_author_email})"
1035
+ msgstr ""
1036
+ "Godkendte en kommentar til \"{comment_post_title}\" af {comment_author} "
1037
+ "({comment_author_email})"
1038
+
1039
+ # @ simple-history
1040
+ #: loggers/SimpleCommentsLogger.php:113
1041
+ msgctxt "A comment was was unapproved"
1042
+ msgid ""
1043
+ "Unapproved a comment to \"{comment_post_title}\" by {comment_author} "
1044
+ "({comment_author_email})"
1045
+ msgstr ""
1046
+ "Afviste en kommentar til \"{comment_post_title}\" af {comment_author} "
1047
+ "({comment_author_email})"
1048
+
1049
+ # @ simple-history
1050
+ #: loggers/SimpleCommentsLogger.php:119
1051
+ msgctxt "A comment was marked as spam"
1052
+ msgid "Marked a comment to post \"{comment_post_title}\" as spam"
1053
+ msgstr "Markerede en kommentar til indlægget \"{comment_post_title}\" som spam"
1054
+
1055
+ # @ simple-history
1056
+ #: loggers/SimpleCommentsLogger.php:125
1057
+ msgctxt "A comment was marked moved to the trash"
1058
+ msgid ""
1059
+ "Trashed a comment to \"{comment_post_title}\" by {comment_author} "
1060
+ "({comment_author_email})"
1061
+ msgstr ""
1062
+ "Flyttede en kommentar til \"{comment_post_title}\" af {comment_author} "
1063
+ "({comment_author_email}) i papirkurven"
1064
+
1065
+ # @ simple-history
1066
+ #: loggers/SimpleCommentsLogger.php:131
1067
+ msgctxt "A comment was restored from the trash"
1068
+ msgid ""
1069
+ "Restored a comment to \"{comment_post_title}\" by {comment_author} "
1070
+ "({comment_author_email}) from the trash"
1071
+ msgstr ""
1072
+ "Gendannede en kommentar til \"{comment_post_title}\" af {comment_author} "
1073
+ "({comment_author_email}) fra papirkurven"
1074
+
1075
+ # @ simple-history
1076
+ #: loggers/SimpleCommentsLogger.php:137
1077
+ msgctxt "A comment was deleted"
1078
+ msgid ""
1079
+ "Deleted a comment to \"{comment_post_title}\" by {comment_author} "
1080
+ "({comment_author_email})"
1081
+ msgstr ""
1082
+ "Slettede en kommentar til \"{comment_post_title}\" af {comment_author} "
1083
+ "({comment_author_email})"
1084
+
1085
+ # @ simple-history
1086
+ #: loggers/SimpleCommentsLogger.php:143
1087
+ msgctxt "A comment was edited"
1088
+ msgid ""
1089
+ "Edited a comment to \"{comment_post_title}\" by {comment_author} "
1090
+ "({comment_author_email})"
1091
+ msgstr ""
1092
+ "Redigerede en kommentar til \"{comment_post_title}\" af {comment_author} "
1093
+ "({comment_author_email})"
1094
+
1095
+ # @ simple-history
1096
+ #: loggers/SimpleCommentsLogger.php:150
1097
+ msgctxt ""
1098
+ "A trackback was added to the database by a non-logged in internet user"
1099
+ msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
1100
+ msgstr ""
1101
+ "Tilføjede en trackback til {comment_post_type} \"{comment_post_title}\""
1102
+
1103
+ # @ simple-history
1104
+ #: loggers/SimpleCommentsLogger.php:205
1105
+ msgctxt ""
1106
+ "A trackback was added to the database by a non-logged in internet user"
1107
+ msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
1108
+ msgstr "Tilføjede en pingback til {comment_post_type} \"{comment_post_title}\""
1109
+
1110
+ # @ simple-history
1111
+ #: loggers/SimpleCommentsLogger.php:156
1112
+ msgctxt "A trackback was added to the database by a logged in user"
1113
+ msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
1114
+ msgstr ""
1115
+ "Tilføjede en trackback til {comment_post_type} \"{comment_post_title}\""
1116
+
1117
+ # @ simple-history
1118
+ #: loggers/SimpleCommentsLogger.php:162
1119
+ msgctxt "A trackback was approved"
1120
+ msgid ""
1121
+ "Approved a trackback to \"{comment_post_title}\" by {comment_author} "
1122
+ "({comment_author_email})"
1123
+ msgstr ""
1124
+ "Godkendte en trackback til \"{comment_post_title}\" af {comment_author} "
1125
+ "({comment_author_email})"
1126
+
1127
+ # @ simple-history
1128
+ #: loggers/SimpleCommentsLogger.php:168
1129
+ msgctxt "A trackback was was unapproved"
1130
+ msgid ""
1131
+ "Unapproved a trackback to \"{comment_post_title}\" by {comment_author} "
1132
+ "({comment_author_email})"
1133
+ msgstr ""
1134
+ "Afviste en trackback til \"{comment_post_title}\" af {comment_author} "
1135
+ "({comment_author_email})"
1136
+
1137
+ # @ simple-history
1138
+ #: loggers/SimpleCommentsLogger.php:174
1139
+ msgctxt "A trackback was marked as spam"
1140
+ msgid "Marked a trackback to post \"{comment_post_title}\" as spam"
1141
+ msgstr "Markerede en trackback til indlægget \"{comment_post_title}\" som spam"
1142
+
1143
+ # @ simple-history
1144
+ #: loggers/SimpleCommentsLogger.php:180
1145
+ msgctxt "A trackback was marked moved to the trash"
1146
+ msgid ""
1147
+ "Trashed a trackback to \"{comment_post_title}\" by {comment_author} "
1148
+ "({comment_author_email})"
1149
+ msgstr ""
1150
+ "Flyttede en trackback til \"{comment_post_title}\" af {comment_author} "
1151
+ "({comment_author_email}) til papirkurven"
1152
+
1153
+ # @ simple-history
1154
+ #: loggers/SimpleCommentsLogger.php:186
1155
+ msgctxt "A trackback was restored from the trash"
1156
+ msgid ""
1157
+ "Restored a trackback to \"{comment_post_title}\" by {comment_author} "
1158
+ "({comment_author_email}) from the trash"
1159
+ msgstr ""
1160
+ "Gendannede en trackback til \"{comment_post_title}\" af {comment_author} "
1161
+ "({comment_author_email}) fra papirkurven"
1162
+
1163
+ # @ simple-history
1164
+ #: loggers/SimpleCommentsLogger.php:192
1165
+ msgctxt "A trackback was deleted"
1166
+ msgid ""
1167
+ "Deleted a trackback to \"{comment_post_title}\" by {comment_author} "
1168
+ "({comment_author_email})"
1169
+ msgstr ""
1170
+ "Slettede en trackback til \"{comment_post_title}\" af {comment_author} "
1171
+ "({comment_author_email})"
1172
+
1173
+ # @ simple-history
1174
+ #: loggers/SimpleCommentsLogger.php:198
1175
+ msgctxt "A trackback was edited"
1176
+ msgid ""
1177
+ "Edited a trackback to \"{comment_post_title}\" by {comment_author} "
1178
+ "({comment_author_email})"
1179
+ msgstr ""
1180
+ "Redigerede en trackback til \"{comment_post_title}\" af {comment_author} "
1181
+ "({comment_author_email})"
1182
+
1183
+ # @ simple-history
1184
+ #: loggers/SimpleCommentsLogger.php:211
1185
+ msgctxt "A pingback was added to the database by a logged in user"
1186
+ msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
1187
+ msgstr "Tilføjede en pingback til {comment_post_type} \"{comment_post_title}\""
1188
+
1189
+ # @ simple-history
1190
+ #: loggers/SimpleCommentsLogger.php:217
1191
+ msgctxt "A pingback was approved"
1192
+ msgid ""
1193
+ "Approved a pingback to \"{comment_post_title}\" by "
1194
+ "\"{comment_author}\"\" ({comment_author_email})"
1195
+ msgstr ""
1196
+ "Godkendte en pingback til \"{comment_post_title}\" af "
1197
+ "\"{comment_author}\"\" ({comment_author_email})"
1198
+
1199
+ # @ simple-history
1200
+ #: loggers/SimpleCommentsLogger.php:223
1201
+ msgctxt "A pingback was was unapproved"
1202
+ msgid ""
1203
+ "Unapproved a pingback to \"{comment_post_title}\" by "
1204
+ "\"{comment_author}\" ({comment_author_email})"
1205
+ msgstr ""
1206
+ "Afviste en pingback til \"{comment_post_title}\" af "
1207
+ "\"{comment_author}\" ({comment_author_email})"
1208
+
1209
+ # @ simple-history
1210
+ #: loggers/SimpleCommentsLogger.php:229
1211
+ msgctxt "A pingback was marked as spam"
1212
+ msgid "Marked a pingback to post \"{comment_post_title}\" as spam"
1213
+ msgstr "Markerede en pingback til indlægget \"{comment_post_title}\" som spam"
1214
+
1215
+ # @ simple-history
1216
+ #: loggers/SimpleCommentsLogger.php:235
1217
+ msgctxt "A pingback was marked moved to the trash"
1218
+ msgid ""
1219
+ "Trashed a pingback to \"{comment_post_title}\" by {comment_author} "
1220
+ "({comment_author_email})"
1221
+ msgstr ""
1222
+ "Flyttede en pingback til \"{comment_post_title}\" af {comment_author} "
1223
+ "({comment_author_email}) til papirkurven"
1224
+
1225
+ # @ simple-history
1226
+ #: loggers/SimpleCommentsLogger.php:241
1227
+ msgctxt "A pingback was restored from the trash"
1228
+ msgid ""
1229
+ "Restored a pingback to \"{comment_post_title}\" by {comment_author} "
1230
+ "({comment_author_email}) from the trash"
1231
+ msgstr ""
1232
+ "Gendannede en pingback til \"{comment_post_title}\" af {comment_author} "
1233
+ "({comment_author_email}) fra papirkurven"
1234
+
1235
+ # @ simple-history
1236
+ #: loggers/SimpleCommentsLogger.php:247
1237
+ msgctxt "A pingback was deleted"
1238
+ msgid ""
1239
+ "Deleted a pingback to \"{comment_post_title}\" by {comment_author} "
1240
+ "({comment_author_email})"
1241
+ msgstr ""
1242
+ "Slettede en pingback til \"{comment_post_title}\" af {comment_author} "
1243
+ "({comment_author_email})"
1244
+
1245
+ # @ simple-history
1246
+ #: loggers/SimpleCommentsLogger.php:253
1247
+ msgctxt "A pingback was edited"
1248
+ msgid ""
1249
+ "Edited a pingback to \"{comment_post_title}\" by {comment_author} "
1250
+ "({comment_author_email})"
1251
+ msgstr ""
1252
+ "Redigerede en pingback til \"{comment_post_title}\" af {comment_author} "
1253
+ "({comment_author_email})"
1254
+
1255
+ # @ simple-history
1256
+ #: loggers/SimpleCommentsLogger.php:264
1257
+ msgctxt "Comments logger: search"
1258
+ msgid "Comments"
1259
+ msgstr "Kommentarer"
1260
+
1261
+ # @ simple-history
1262
+ #: loggers/SimpleCommentsLogger.php:265
1263
+ msgctxt "Comments logger: search"
1264
+ msgid "All comments activity"
1265
+ msgstr "Alt kommentar aktivitet"
1266
+
1267
+ # @ simple-history
1268
+ #: loggers/SimpleCommentsLogger.php:267
1269
+ msgctxt "Comments logger: search"
1270
+ msgid "Added comments"
1271
+ msgstr "Tilføjet kommentarer"
1272
+
1273
+ # @ simple-history
1274
+ #: loggers/SimpleCommentsLogger.php:275
1275
+ msgctxt "Comments logger: search"
1276
+ msgid "Edited comments"
1277
+ msgstr "Redigeret kommentarer"
1278
+
1279
+ # @ simple-history
1280
+ #: loggers/SimpleCommentsLogger.php:280
1281
+ msgctxt "Comments logger: search"
1282
+ msgid "Approved comments"
1283
+ msgstr "Godkendte kommentarer"
1284
+
1285
+ # @ simple-history
1286
+ #: loggers/SimpleCommentsLogger.php:285
1287
+ msgctxt "Comments logger: search"
1288
+ msgid "Held comments"
1289
+ msgstr "Afventer kommentarer"
1290
+
1291
+ # @ simple-history
1292
+ #: loggers/SimpleCommentsLogger.php:290
1293
+ msgctxt "Comments logger: search"
1294
+ msgid "Comments status changed to spam"
1295
+ msgstr "Kommentarer status ændre til spam"
1296
+
1297
+ # @ simple-history
1298
+ #: loggers/SimpleCommentsLogger.php:295
1299
+ msgctxt "Comments logger: search"
1300
+ msgid "Trashed comments"
1301
+ msgstr "Kommentarer flyttet til papirkurven"
1302
+
1303
+ # @ simple-history
1304
+ #: loggers/SimpleCommentsLogger.php:300
1305
+ msgctxt "Comments logger: search"
1306
+ msgid "Untrashed comments"
1307
+ msgstr "Gendannet kommentarer"
1308
+
1309
+ # @ simple-history
1310
+ #: loggers/SimpleCommentsLogger.php:305
1311
+ msgctxt "Comments logger: search"
1312
+ msgid "Deleted comments"
1313
+ msgstr "Slettet kommentarer"
1314
+
1315
+ # @ simple-history
1316
+ #: loggers/SimpleCommentsLogger.php:602 loggers/SimpleCommentsLogger.php:615
1317
+ #: loggers/SimpleCommentsLogger.php:629
1318
+ msgctxt "comments logger - detailed output comment status"
1319
+ msgid "Status"
1320
+ msgstr "Status"
1321
+
1322
+ # @ simple-history
1323
+ #: loggers/SimpleCommentsLogger.php:604 loggers/SimpleCommentsLogger.php:617
1324
+ #: loggers/SimpleCommentsLogger.php:631
1325
+ msgctxt "comments logger - detailed output author"
1326
+ msgid "Name"
1327
+ msgstr "Navn"
1328
+
1329
+ # @ simple-history
1330
+ #: loggers/SimpleCommentsLogger.php:605 loggers/SimpleCommentsLogger.php:618
1331
+ #: loggers/SimpleCommentsLogger.php:632
1332
+ msgctxt "comments logger - detailed output email"
1333
+ msgid "Email"
1334
+ msgstr "E-mail"
1335
+
1336
+ # @ simple-history
1337
+ #: loggers/SimpleCommentsLogger.php:606 loggers/SimpleCommentsLogger.php:619
1338
+ msgctxt "comments logger - detailed output content"
1339
+ msgid "Content"
1340
+ msgstr "Indhold"
1341
+
1342
+ # @ simple-history
1343
+ #: loggers/SimpleCommentsLogger.php:633
1344
+ msgctxt "comments logger - detailed output content"
1345
+ msgid "Comment"
1346
+ msgstr "Kommentar"
1347
+
1348
+ # @ simple-history
1349
+ #: loggers/SimpleCommentsLogger.php:759
1350
+ msgctxt "comments logger - edit comment"
1351
+ msgid "View/Edit"
1352
+ msgstr "Vis/Rediger"
1353
+
1354
+ # @ simple-history
1355
+ #: loggers/SimpleCoreUpdatesLogger.php:34
1356
+ msgctxt "User logger: search"
1357
+ msgid "WordPress Core"
1358
+ msgstr "WordPress Core"
1359
+
1360
+ # @ simple-history
1361
+ #: loggers/SimpleCoreUpdatesLogger.php:36
1362
+ msgctxt "User logger: search"
1363
+ msgid "WordPress core updates"
1364
+ msgstr "WordPress Core opdateringer"
1365
+
1366
+ # @ simple-history
1367
+ #: loggers/SimpleUserLogger.php:54
1368
+ msgctxt "User logger: search"
1369
+ msgid "Users"
1370
+ msgstr "Brugere"
1371
+
1372
+ # @ simple-history
1373
+ #: loggers/SimpleUserLogger.php:55
1374
+ msgctxt "User logger: search"
1375
+ msgid "All user activity"
1376
+ msgstr "Alt bruger aktivitet"
1377
+
1378
+ # @ simple-history
1379
+ #: loggers/SimpleUserLogger.php:57
1380
+ msgctxt "User logger: search"
1381
+ msgid "Successful user logins"
1382
+ msgstr "Succesfulde bruger log ind"
1383
+
1384
+ # @ simple-history
1385
+ #: loggers/SimpleUserLogger.php:61
1386
+ msgctxt "User logger: search"
1387
+ msgid "Failed user logins"
1388
+ msgstr "Mislykket bruger log ind"
1389
+
1390
+ # @ simple-history
1391
+ #: loggers/SimpleUserLogger.php:65
1392
+ msgctxt "User logger: search"
1393
+ msgid "User logouts"
1394
+ msgstr "Bruger log ud"
1395
+
1396
+ # @ simple-history
1397
+ #: loggers/SimpleUserLogger.php:68
1398
+ msgctxt "User logger: search"
1399
+ msgid "Created users"
1400
+ msgstr "Tilføjet brugere"
1401
+
1402
+ # @ simple-history
1403
+ #: loggers/SimpleUserLogger.php:71
1404
+ msgctxt "User logger: search"
1405
+ msgid "User profile updates"
1406
+ msgstr "Brugerprofil opdateringer"
1407
+
1408
+ # @ simple-history
1409
+ #: loggers/SimpleUserLogger.php:74
1410
+ msgctxt "User logger: search"
1411
+ msgid "User deletions"
1412
+ msgstr "Slettet brugere"
1413
+
1414
+ # @ simple-history
1415
+ #: loggers/SimpleExportLogger.php:27
1416
+ msgctxt "Export logger: search"
1417
+ msgid "Export"
1418
+ msgstr "Eksport"
1419
+
1420
+ # @ simple-history
1421
+ #: loggers/SimpleExportLogger.php:29
1422
+ msgctxt "Export logger: search"
1423
+ msgid "Created exports"
1424
+ msgstr "Genereret eksporteringer"
1425
+
1426
+ # @ simple-history
1427
+ #: loggers/SimpleLogger.php:190
1428
+ msgctxt "header output when initiator is the currently logged in user"
1429
+ msgid "You"
1430
+ msgstr "Dig"
1431
+
1432
+ # @ simple-history
1433
+ #: loggers/SimpleMediaLogger.php:29
1434
+ msgctxt "Media logger: search"
1435
+ msgid "Media"
1436
+ msgstr "Medier"
1437
+
1438
+ # @ simple-history
1439
+ #: loggers/SimpleMediaLogger.php:31
1440
+ msgctxt "Media logger: search"
1441
+ msgid "Added media"
1442
+ msgstr "Tilføjet medier"
1443
+
1444
+ # @ simple-history
1445
+ #: loggers/SimpleMediaLogger.php:34
1446
+ msgctxt "Media logger: search"
1447
+ msgid "Updated media"
1448
+ msgstr "Opdateret medier"
1449
+
1450
+ # @ simple-history
1451
+ #: loggers/SimpleMediaLogger.php:37
1452
+ msgctxt "Media logger: search"
1453
+ msgid "Deleted media"
1454
+ msgstr "Slettet medier"
1455
+
1456
+ # @ simple-history
1457
+ #: loggers/SimpleMenuLogger.php:31
1458
+ msgctxt "Menu logger: search"
1459
+ msgid "Menus"
1460
+ msgstr "Menuer"
1461
+
1462
+ # @ simple-history
1463
+ #: loggers/SimpleMenuLogger.php:33
1464
+ msgctxt "Menu updates logger: search"
1465
+ msgid "Created menus"
1466
+ msgstr "Tilføjet menuer"
1467
+
1468
+ # @ simple-history
1469
+ #: loggers/SimpleMenuLogger.php:36
1470
+ msgctxt "Menu updates logger: search"
1471
+ msgid "Edited menus"
1472
+ msgstr "Redigeret menuer"
1473
+
1474
+ # @ simple-history
1475
+ #: loggers/SimpleMenuLogger.php:41
1476
+ msgctxt "Menu updates logger: search"
1477
+ msgid "Deleted menus"
1478
+ msgstr "Slettet menuer"
1479
+
1480
+ # @ simple-history
1481
+ #: loggers/SimpleMenuLogger.php:326
1482
+ msgctxt "menu logger"
1483
+ msgid "%1$s menu item added"
1484
+ msgid_plural "%1$s menu items added"
1485
+ msgstr[0] "%1$s menupunkt tilføjet"
1486
+ msgstr[1] "%1$s menupunkter tilføjet"
1487
+
1488
+ # @ simple-history
1489
+ #: loggers/SimpleMenuLogger.php:333
1490
+ msgctxt "menu logger"
1491
+ msgid "%1$s menu item removed"
1492
+ msgid_plural "%1$s menu items removed"
1493
+ msgstr[0] "%1$s menupunkt fjernet"
1494
+ msgstr[1] "%1$s menupunkter fjernet"
1495
+
1496
+ # @ simple-history
1497
+ #: loggers/SimpleOptionsLogger.php:153
1498
+ msgctxt "Options logger: search"
1499
+ msgid "Options"
1500
+ msgstr "Indstillinger"
1501
+
1502
+ # @ simple-history
1503
+ #: loggers/SimpleOptionsLogger.php:155
1504
+ msgctxt "Options logger: search"
1505
+ msgid "Changed options"
1506
+ msgstr "Ændret indstillinger"
1507
+
1508
+ # @ simple-history
1509
+ #: loggers/SimplePluginLogger.php:51
1510
+ msgctxt "Plugin was non-silently activated by a user"
1511
+ msgid "Activated plugin \"{plugin_name}\""
1512
+ msgstr "Aktiverede pluginet \"{plugin_name}\""
1513
+
1514
+ # @ simple-history
1515
+ #: loggers/SimplePluginLogger.php:57
1516
+ msgctxt "Plugin was non-silently deactivated by a user"
1517
+ msgid "Deactivated plugin \"{plugin_name}\""
1518
+ msgstr "Deaktiverede pluginet \"{plugin_name}\""
1519
+
1520
+ # @ simple-history
1521
+ #: loggers/SimplePluginLogger.php:63
1522
+ msgctxt "Plugin was installed"
1523
+ msgid "Installed plugin \"{plugin_name}\""
1524
+ msgstr "Installerede pluginet \"{plugin_name}\""
1525
+
1526
+ # @ simple-history
1527
+ #: loggers/SimplePluginLogger.php:69
1528
+ msgctxt "Plugin failed to install"
1529
+ msgid "Failed to install plugin \"{plugin_name}\""
1530
+ msgstr "Mislykkede i at installere pluginet \"{plugin_name}\""
1531
+
1532
+ # @ simple-history
1533
+ #: loggers/SimplePluginLogger.php:75
1534
+ msgctxt "Plugin was updated"
1535
+ msgid ""
1536
+ "Updated plugin \"{plugin_name}\" to version {plugin_version} from "
1537
+ "{plugin_prev_version}"
1538
+ msgstr ""
1539
+ "Opdaterede pluginet \"{plugin_name}\" til version {plugin_version} fra "
1540
+ "{plugin_prev_version}"
1541
+
1542
+ # @ simple-history
1543
+ #: loggers/SimplePluginLogger.php:81
1544
+ msgctxt "Plugin update failed"
1545
+ msgid "Updated plugin \"{plugin_name}\""
1546
+ msgstr "Opdaterede pluginet \"{plugin_name}\""
1547
+
1548
+ # @ simple-history
1549
+ #: loggers/SimplePluginLogger.php:87
1550
+ msgctxt "Plugin file edited"
1551
+ msgid "Edited plugin file \"{plugin_edited_file}\""
1552
+ msgstr "Redigerede plugin filen \"{plugin_edited_file}\""
1553
+
1554
+ # @ simple-history
1555
+ #: loggers/SimplePluginLogger.php:93
1556
+ msgctxt "Plugin files was deleted"
1557
+ msgid "Deleted plugin \"{plugin_name}\""
1558
+ msgstr "Slettede pluginet \"{plugin_name}\""
1559
+
1560
+ # @ simple-history
1561
+ #: loggers/SimplePluginLogger.php:100
1562
+ msgctxt "Plugin was updated in bulk"
1563
+ msgid ""
1564
+ "Updated plugin \"{plugin_name}\" to {plugin_version} from "
1565
+ "{plugin_prev_version}"
1566
+ msgstr ""
1567
+ "Opdaterede pluginet \"{plugin_name}\" til {plugin_version} fra "
1568
+ "{plugin_prev_version}"
1569
+
1570
+ # @ simple-history
1571
+ #: loggers/SimplePluginLogger.php:108
1572
+ msgctxt "Plugin logger: search"
1573
+ msgid "Plugins"
1574
+ msgstr "Plugins"
1575
+
1576
+ # @ simple-history
1577
+ #: loggers/SimplePluginLogger.php:110
1578
+ msgctxt "Plugin logger: search"
1579
+ msgid "Activated plugins"
1580
+ msgstr "Aktiveret plugins"
1581
+
1582
+ # @ simple-history
1583
+ #: loggers/SimplePluginLogger.php:113
1584
+ msgctxt "Plugin logger: search"
1585
+ msgid "Deactivated plugins"
1586
+ msgstr "Deaktiveret plugins"
1587
+
1588
+ # @ simple-history
1589
+ #: loggers/SimplePluginLogger.php:116
1590
+ msgctxt "Plugin logger: search"
1591
+ msgid "Installed plugins"
1592
+ msgstr "Installeret plugins"
1593
+
1594
+ # @ simple-history
1595
+ #: loggers/SimplePluginLogger.php:119
1596
+ msgctxt "Plugin logger: search"
1597
+ msgid "Failed plugin installs"
1598
+ msgstr "Mislykket plugin installeringer"
1599
+
1600
+ # @ simple-history
1601
+ #: loggers/SimplePluginLogger.php:122
1602
+ msgctxt "Plugin logger: search"
1603
+ msgid "Updated plugins"
1604
+ msgstr "Opdateret plugins"
1605
+
1606
+ # @ simple-history
1607
+ #: loggers/SimplePluginLogger.php:126
1608
+ msgctxt "Plugin logger: search"
1609
+ msgid "Failed plugin updates"
1610
+ msgstr "Mislykket plugin opdateringer"
1611
+
1612
+ # @ simple-history
1613
+ #: loggers/SimplePluginLogger.php:129
1614
+ msgctxt "Plugin logger: search"
1615
+ msgid "Edited plugin files"
1616
+ msgstr "Redigeret plugin filer"
1617
+
1618
+ # @ simple-history
1619
+ #: loggers/SimplePluginLogger.php:132
1620
+ msgctxt "Plugin logger: search"
1621
+ msgid "Deleted plugins"
1622
+ msgstr "Slettet plugins"
1623
+
1624
+ # @ simple-history
1625
+ #: loggers/SimplePluginLogger.php:887
1626
+ msgctxt "plugin logger - detailed output version"
1627
+ msgid "Version"
1628
+ msgstr "Version"
1629
+
1630
+ # @ simple-history
1631
+ #: loggers/SimplePluginLogger.php:889
1632
+ msgctxt "plugin logger - detailed output author"
1633
+ msgid "Author"
1634
+ msgstr "Forfatter"
1635
+
1636
+ # @ simple-history
1637
+ #: loggers/SimplePluginLogger.php:891
1638
+ msgctxt "plugin logger - detailed output author"
1639
+ msgid "Requires"
1640
+ msgstr "Kræver"
1641
+
1642
+ # @ simple-history
1643
+ #: loggers/SimplePluginLogger.php:890
1644
+ msgctxt "plugin logger - detailed output url"
1645
+ msgid "URL"
1646
+ msgstr "URL"
1647
+
1648
+ # @ simple-history
1649
+ #: loggers/SimplePluginLogger.php:892
1650
+ msgctxt "plugin logger - detailed output compatible"
1651
+ msgid "Compatible up to"
1652
+ msgstr "Kompatible op til"
1653
+
1654
+ # @ simple-history
1655
+ #: loggers/SimplePluginLogger.php:893
1656
+ msgctxt "plugin logger - detailed output downloaded"
1657
+ msgid "Downloads"
1658
+ msgstr "Downloads"
1659
+
1660
+ # @ simple-history
1661
+ #: loggers/SimplePluginLogger.php:953
1662
+ msgctxt "plugin logger: plugin info thickbox title view all info"
1663
+ msgid "View plugin info"
1664
+ msgstr "Vis plugin info"
1665
+
1666
+ # @ simple-history
1667
+ #: loggers/SimplePluginLogger.php:968
1668
+ msgctxt "plugin logger: plugin info thickbox title"
1669
+ msgid "View plugin info"
1670
+ msgstr "Vis plugin info"
1671
+
1672
+ # @ simple-history
1673
+ #: loggers/SimplePluginLogger.php:972
1674
+ msgctxt "plugin logger: plugin info thickbox title"
1675
+ msgid "View changelog"
1676
+ msgstr "Vis changelog"
1677
+
1678
+ # @ simple-history
1679
+ #: loggers/SimplePostLogger.php:38
1680
+ msgctxt "Post logger: search"
1681
+ msgid "Posts & Pages"
1682
+ msgstr "Indlæg & Sider"
1683
+
1684
+ # @ simple-history
1685
+ #: loggers/SimplePostLogger.php:40
1686
+ msgctxt "Post logger: search"
1687
+ msgid "Posts created"
1688
+ msgstr "Indlæg tilføjet"
1689
+
1690
+ # @ simple-history
1691
+ #: loggers/SimplePostLogger.php:43
1692
+ msgctxt "Post logger: search"
1693
+ msgid "Posts updated"
1694
+ msgstr "Indlæg opdateret"
1695
+
1696
+ # @ simple-history
1697
+ #: loggers/SimplePostLogger.php:46
1698
+ msgctxt "Post logger: search"
1699
+ msgid "Posts trashed"
1700
+ msgstr "Indlæg flyttet til papirkurven"
1701
+
1702
+ # @ simple-history
1703
+ #: loggers/SimplePostLogger.php:49
1704
+ msgctxt "Post logger: search"
1705
+ msgid "Posts deleted"
1706
+ msgstr "Indlæg slettet"
1707
+
1708
+ # @ simple-history
1709
+ #: loggers/SimplePostLogger.php:52
1710
+ msgctxt "Post logger: search"
1711
+ msgid "Posts restored"
1712
+ msgstr "Indlæg gendannet"
1713
+
1714
+ # @ simple-history
1715
+ #: loggers/SimpleThemeLogger.php:36
1716
+ msgctxt "Theme logger: search"
1717
+ msgid "Themes & Widgets"
1718
+ msgstr "Tema & Widgets"
1719
+
1720
+ # @ simple-history
1721
+ #: loggers/SimpleThemeLogger.php:38
1722
+ msgctxt "Theme logger: search"
1723
+ msgid "Switched themes"
1724
+ msgstr "Skiftet temaer"
1725
+
1726
+ # @ simple-history
1727
+ #: loggers/SimpleThemeLogger.php:41
1728
+ msgctxt "Theme logger: search"
1729
+ msgid "Changed appearance of themes"
1730
+ msgstr "Skiftet udseende på temaer"
1731
+
1732
+ # @ simple-history
1733
+ #: loggers/SimpleThemeLogger.php:44
1734
+ msgctxt "Theme logger: search"
1735
+ msgid "Added widgets"
1736
+ msgstr "Tilføjet widgets"
1737
+
1738
+ # @ simple-history
1739
+ #: loggers/SimpleThemeLogger.php:47
1740
+ msgctxt "Theme logger: search"
1741
+ msgid "Removed widgets"
1742
+ msgstr "Fjernet widgets"
1743
+
1744
+ # @ simple-history
1745
+ #: loggers/SimpleThemeLogger.php:50
1746
+ msgctxt "Theme logger: search"
1747
+ msgid "Changed widgets order"
1748
+ msgstr "Ændret widget rækkefølge"
1749
+
1750
+ # @ simple-history
1751
+ #: loggers/SimpleThemeLogger.php:53
1752
+ msgctxt "Theme logger: search"
1753
+ msgid "Edited widgets"
1754
+ msgstr "Ændret widgets"
1755
+
1756
+ # @ simple-history
1757
+ #: loggers/SimpleThemeLogger.php:56
1758
+ msgctxt "Theme logger: search"
1759
+ msgid "Background of themes changed"
1760
+ msgstr "Baggrund og tema ændret"
1761
+
1762
+ # @ simple-history
1763
+ #: loggers/SimpleUserLogger.php:36
1764
+ msgctxt "User destroys other login sessions for themself"
1765
+ msgid "Logged out from all other sessions"
1766
+ msgstr "Loggede ud fra alle andre sessioner"
1767
+
1768
+ # @ simple-history
1769
+ #: loggers/SimpleUserLogger.php:45
1770
+ msgctxt "User destroys all login sessions for a user"
1771
+ msgid "Logged out \"{user_display_name}\" from all sessions"
1772
+ msgstr "Loggede ud \"{user_display_name}\" fra alle sessioner"
1773
+
1774
+ # @ simple-history
1775
+ #: templates/settings-statsRowsPerDay.php:36
1776
+ msgctxt "stats: date in rows per day chart"
1777
+ msgid "M j"
1778
+ msgstr "j. F"
1779
+
1780
+ # @ simple-history
1781
+ #~ msgid "+%1$s more"
1782
+ #~ msgstr "+%1$s more"
1783
+
1784
+ # @ simple-history
1785
+ #~ msgid "%1$d event today from one user."
1786
+ #~ msgstr "%1$d event i dag fra én bruger."
1787
+
1788
+ # @ simple-history
1789
+ #~ msgid "Filter"
1790
+ #~ msgstr "Filtrer"
languages/simple-history-de_DE.mo CHANGED
Binary file
languages/simple-history-de_DE.po CHANGED
@@ -1,376 +1,1582 @@
1
- # Translation of the WordPress plugin by .
2
- # Copyright (C) 2010
3
- # This file is distributed under the same license as the package.
4
- # FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
5
- #
6
  msgid ""
7
  msgstr ""
8
- "Project-Id-Version: Simple History 0.4\n"
9
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/simple-history\n"
10
- "POT-Creation-Date: 2012-09-29 16:38:52+00:00\n"
11
- "PO-Revision-Date: 2012-09-29 22:58+0100\n"
12
  "Last-Translator: Ralph Stenzel <ralph@klein-aber-fein.de>\n"
13
  "Language-Team: Ralph Stenzel <ralph@klein-aber-fein.de>\n"
14
  "Language: de_DE\n"
15
  "MIME-Version: 1.0\n"
16
  "Content-Type: text/plain; charset=UTF-8\n"
17
  "Content-Transfer-Encoding: 8bit\n"
18
- "X-Poedit-SourceCharset: utf-8\n"
19
- "X-Generator: Poedit 1.5.3\n"
 
 
 
 
 
 
 
 
 
 
 
20
 
21
- #: index.php:66
22
- msgid "approved"
23
- msgstr "genehmigt"
24
 
25
- #: index.php:67
26
- msgid "unapproved"
27
- msgstr "nicht genehmigt"
28
 
29
- #: index.php:68
30
- msgid "marked as spam"
31
- msgstr "als Spam gekennzeichnet"
 
32
 
33
- #: index.php:69
34
- msgid "trashed"
35
- msgstr "verworfen"
36
 
37
- #: index.php:70
38
- msgid "untrashed"
39
- msgstr "wiederhergestellt"
40
 
41
- #: index.php:71
42
- msgid "created"
43
- msgstr "erzeugt"
44
 
45
- #: index.php:72
46
- msgid "deleted"
47
- msgstr "gelöscht"
48
 
49
- #: index.php:73
50
- msgid "updated"
51
- msgstr "aktualisiert"
52
 
53
- #: index.php:74
54
- msgid "nav_menu_item"
55
- msgstr "nav_menu_item"
56
 
57
- #: index.php:75 index.php:1419
58
- msgid "attachment"
59
- msgstr "Anhang"
60
 
61
- #: index.php:76 index.php:1452
62
- msgid "user"
63
- msgstr "Benutzer"
64
 
65
- #: index.php:77
66
- msgid "settings page"
67
- msgstr "Einstellungen"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
 
69
- #: index.php:90 index.php:238 index.php:878
70
- msgid "History"
71
- msgstr "Änderungsprotokoll"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
 
73
- #: index.php:150
74
- msgid "WordPress %1$s"
75
- msgstr "WordPress %1$s"
76
 
77
- #: index.php:163 index.php:253
78
  msgid "Donate"
79
- msgstr "Spenden Sie"
80
 
81
- #: index.php:224 index.php:245
82
- msgid "Simple History Settings"
83
- msgstr "Simple History-Einstellungen"
 
 
 
 
84
 
85
- #: index.php:250
86
- msgid "Show Simple History"
87
- msgstr "Zeige Änderungsprotokoll"
88
 
89
- #: index.php:251 index.php:1580
90
- msgid "RSS feed"
91
- msgstr "RSS-Feed"
 
92
 
93
- #: index.php:252
94
- msgid "Clear log"
95
- msgstr "Protokoll zurücksetzen"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
 
97
- #: index.php:293 index.php:336
 
 
 
 
 
 
 
 
 
98
  msgid "History for %s"
99
- msgstr "Änderungsprotokoll für %s"
100
 
101
- #: index.php:294 index.php:337
 
102
  msgid "WordPress History for %s"
103
- msgstr "WordPress-Änderungsprotokoll für %s"
104
-
105
- #: index.php:306
106
- msgid "By %s"
107
- msgstr "Von %s"
108
 
109
- #: index.php:310
110
- msgid "%d occasions"
111
- msgstr "%d Ereignisse"
 
 
112
 
113
- #: index.php:341
114
  msgid "Wrong RSS secret"
115
  msgstr "Falsche RSS-Geheimadresse"
116
 
117
- #: index.php:342
118
  msgid ""
119
  "Your RSS secret for Simple History RSS feed is wrong. Please see WordPress "
120
  "settings for current link to the RSS feed."
121
  msgstr ""
122
- "Ihre RSS-Geheimadresse für den Simple History RSS-Feed ist falsch. Bitte "
123
- "überprüfen Sie die WordPress-Einstellungen hinsichtlich des momentanen Links "
124
- "zum RSS-Feed."
125
 
126
- #: index.php:362 index.php:1060
127
- msgid "By all users"
128
- msgstr "Alle Benutzer"
 
 
 
 
129
 
130
- #: index.php:411 index.php:1112
131
- msgid "One item"
132
- msgid_plural "%1$d items"
133
- msgstr[0] ""
134
- msgstr[1] ""
135
 
136
- #: index.php:452
137
- msgid "on the dashboard"
138
- msgstr "auf dem Armaturenbrett (Dashboard)"
 
 
 
 
 
 
 
139
 
140
- #: index.php:457
141
- msgid "as a page under the dashboard menu"
142
- msgstr "als eine Seite im Dashboard-Menü"
143
 
144
- #: index.php:472
145
- msgid "Cleared database"
146
- msgstr "Datenbank geleert!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
 
148
- #: index.php:480
149
- msgid "Items in the database are automatically removed after 60 days."
150
- msgstr "Einträge in der Datenbank werden nach 60 Tagen automatisch entfernt."
151
 
152
- #: index.php:482
153
- msgid "Clear it now."
154
- msgstr "Datenbank jetzt leeren."
155
 
156
- #: index.php:496
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  msgid ""
158
- "\n"
159
- "\t\t\tPlease\n"
160
- "\t\t\t<a href=\"http://eskapism.se/sida/donate/?"
161
- "utm_source=wordpress&utm_medium=settingpage&utm_campaign=simplehistory\">\n"
162
- "\t\t\tdonate\n"
163
- "\t\t\t</a> to support the development of this plugin and to keep it free.\n"
164
- "\t\t\tThanks!\n"
165
- "\t\t\t"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
166
  msgstr ""
167
- "\n"
168
- "\t\t\tBitte\n"
169
- "\t\t\t<a href=\"http://eskapism.se/sida/donate/?"
170
- "utm_source=wordpress&utm_medium=settingpage&utm_campaign=simplehistory\">\n"
171
- "\t\t\tspenden Sie,\n"
172
- "\t\t\t</a> um die Weiterentwicklung dieses Plugins zu unterstützen, und "
173
- "damit es auch in Zukunft kostenlos bleiben kann.\n"
174
- "\t\t\tDanke!\n"
175
- "\t\t\t"
176
 
177
- #: index.php:532
178
- msgid "Created new secret RSS adress"
179
- msgstr "Neue geheime RSS-Adresse erstellt"
180
 
181
- #: index.php:543
182
  msgid ""
183
- "This is a secret RSS feed for Simple History. Only share the link with "
184
- "people you trust"
185
  msgstr ""
186
- "Dies ist ein geheimer RSS-Feed für Simple History. Teilen Sie das Link nur "
187
- "mit Menschen Ihres Vertrauens!"
188
 
189
- #: index.php:546
190
  msgid ""
191
- "You can <a href='%s'>generate a new address</a> for the RSS feed. This is "
192
- "useful if you think that the address has fallen into the wrong hands."
193
  msgstr ""
194
- "Sie können für den RSS-Feed <a href='%s'>eine neue Adresse erstellen</a> "
195
- "lassen. Dies ist hilfreich, wenn Sie den Verdacht haben, daß die bisherige "
196
- "Adresse in falsche Hände gekommen sein könnte."
197
 
198
- #: index.php:569 index.php:585 index.php:617
199
- msgid "From %1$s on %2$s"
200
- msgstr "Von %1$s am %2$s"
201
 
202
- #: index.php:971
203
- msgid "All types"
204
- msgstr "Alle Arten"
205
 
206
- #: index.php:1079
207
- msgid "Search"
208
- msgstr "Suche"
209
 
210
- #: index.php:1116
211
- msgid "Go to the first page"
212
- msgstr "Gehe zur ersten Seite"
 
 
213
 
214
- #: index.php:1117
215
- msgid "Go to the previous page"
216
- msgstr "Gehe zur vorherigen Seite"
 
 
 
 
217
 
218
- #: index.php:1118
219
- msgid "Current page"
220
- msgstr "Aktuelle Seite"
221
 
222
- #: index.php:1119
223
- msgid "of"
224
- msgstr "von"
225
 
226
- #: index.php:1120
227
- msgid "Go to the next page"
228
- msgstr "Gehe zur nächsten Seite"
229
 
230
- #: index.php:1121
231
- msgid "Go to the last page"
232
- msgstr "Gehe zur letzten Seite"
233
 
234
- #: index.php:1381
235
- msgid "Unknown or deleted user"
236
- msgstr "unbekannter oder gelöschter Benutzer"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
 
238
- #: index.php:1502
239
- msgid "activated"
240
- msgstr "aktiviert"
241
 
242
- #: index.php:1505
243
- msgid "deactivated"
244
- msgstr "deaktiviert"
245
 
246
- #: index.php:1508
247
- msgid "enabled"
248
- msgstr "aktiviert"
249
 
250
- #: index.php:1511
251
- msgid "disabled"
252
- msgstr "deaktiviert"
253
 
254
- #: index.php:1526
255
- msgid "<span class=\"when\">%1$s ago</span> by %2$s"
256
- msgstr "<span class=\"when\">vor %1$s</span> durch %2$s"
257
 
258
- #: index.php:1528
259
- msgid "%s at %s"
260
- msgstr "%s um %s"
 
 
261
 
262
- #: index.php:1535
263
- msgid "+ 1 occasion"
264
- msgstr "+ 1 Ereignis"
265
 
266
- #: index.php:1538
267
- msgid "+ %d occasions"
268
- msgstr "+ %d Ereignisse"
269
 
270
- #: index.php:1546
271
- msgid "%s ago (%s at %s)"
272
- msgstr "vor %s (%s um %s)"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
273
 
274
- #: index.php:1571
275
- msgid "Show 5 more"
276
- msgstr "Zeige 5 weitere"
 
277
 
278
- #: index.php:1572
279
- msgid "Show 15 more"
280
- msgstr "Zeige 15 weitere"
 
 
 
 
 
281
 
282
- #: index.php:1573
283
- msgid "Show 50 more"
284
- msgstr "Zeige 50 weitere"
 
285
 
286
- #: index.php:1574
287
- msgid "Show 100 more"
288
- msgstr "Zeige 100 weitere"
 
 
 
 
 
289
 
290
- #: index.php:1577
291
- msgid "Loading..."
292
- msgstr "Lade..."
 
293
 
294
- #: index.php:1579
295
- msgid "No matching items found."
296
- msgstr "Keine passenden Einträge gefunden."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
 
298
- #: index.php:1582
299
- msgid "Show"
300
- msgstr "Zeige"
 
 
 
301
 
302
- #: index.php:1601
303
- msgid "No history items found."
304
- msgstr "Keine Einträge gefunden."
 
 
 
305
 
306
- #: index.php:1602
 
307
  msgid ""
308
- "Please note that Simple History only records things that happen after this "
309
- "plugin have been installed."
310
  msgstr ""
311
- "Bitte beachten Sie, daß Simple History nur Vorgänge aufzeichnet, die nach "
312
- "der Installation des Plugins stattgefunden haben."
313
 
314
- #: index.php:1615
315
- msgid "General Settings"
316
- msgstr "Allgemeine Einstellungen"
 
 
 
 
 
317
 
318
- #: index.php:1616
319
- msgid "Writing Settings"
320
- msgstr "Schreib-Einstellungen"
 
 
 
321
 
322
- #: index.php:1617
323
- msgid "Reading Settings"
324
- msgstr "Lese-Einstellungen"
 
 
 
 
 
325
 
326
- #: index.php:1618
327
- msgid "Discussion Settings"
328
- msgstr "Diskussions-Einstellungen"
 
 
 
 
 
329
 
330
- #: index.php:1619
331
- msgid "Media Settings"
332
- msgstr "Medien-Einstellungen"
 
 
 
 
 
333
 
334
- #: index.php:1620
335
- msgid "Privacy Settings"
336
- msgstr "Privatsphären-Einstellungen"
 
 
 
 
 
337
 
338
- #: index.php:1636
339
- msgid "Permalink Settings"
340
- msgstr "Permalink-Einstellungen"
 
 
 
341
 
342
- #~ msgid "WordPress Core"
343
- #~ msgstr "WordPress-Kern"
 
 
 
344
 
345
- #~ msgid "Plugin"
346
- #~ msgstr "Plugins"
 
 
 
 
347
 
348
- #~ msgid "edited"
349
- #~ msgstr "geändert"
 
 
 
 
 
 
350
 
351
- #~ msgid "Comment"
352
- #~ msgstr "Kommentare"
 
 
 
 
 
 
353
 
354
- #~ msgid "added"
355
- #~ msgstr "hinzugefügt"
 
 
 
 
356
 
357
- #~ msgid "Attachment"
358
- #~ msgstr "Anhänge"
 
 
 
 
 
 
359
 
360
- #~ msgid "User"
361
- #~ msgstr "Benutzer"
 
 
 
 
 
 
362
 
363
- #~ msgid "logged in"
364
- #~ msgstr "angemeldet"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
365
 
366
- #~ msgid "logged out"
367
- #~ msgstr "abgemeldet"
 
 
 
368
 
369
- #~ msgid "Post"
370
- #~ msgstr "Postings"
 
 
 
 
 
 
371
 
372
- #~ msgid "modified"
373
- #~ msgstr "geändert"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
374
 
375
- #~ msgid "No more history items found."
376
- #~ msgstr "Keine weiteren Vorfälle gefunden."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2014 Simple History
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.3\n"
6
+ "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/Simple-History\n"
7
+ "POT-Creation-Date: 2015-01-26 15:41:57+00:00\n"
8
+ "PO-Revision-Date: 2015-02-15 19:00+0100\n"
9
  "Last-Translator: Ralph Stenzel <ralph@klein-aber-fein.de>\n"
10
  "Language-Team: Ralph Stenzel <ralph@klein-aber-fein.de>\n"
11
  "Language: de_DE\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.4\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"
19
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
+ "X-Poedit-SourceCharset: UTF-8\n"
21
+ "X-Poedit-Basepath: ../\n"
22
+ "X-Textdomain-Support: yes\n"
23
+ "X-Poedit-SearchPath-0: .\n"
24
+
25
+ #: SimpleHistory.php:504 SimpleHistory.php:765
26
+ msgid "Settings"
27
+ msgstr "Einstellungen"
28
 
29
+ #: SimpleHistory.php:515
30
+ msgid "Log (debug)"
31
+ msgstr "Logbuch (Fehlersuche)"
32
 
33
+ #: SimpleHistory.php:520
34
+ msgid "Styles example (debug)"
35
+ msgstr "Stil-Beispiel (Fehlersuche)"
36
 
37
+ #. Plugin Name of the plugin/theme
38
+ #: SimpleHistory.php:780
39
+ msgid "Simple History"
40
+ msgstr "Simple History"
41
 
42
+ #: SimpleHistory.php:856
43
+ msgid "Remove all log items?"
44
+ msgstr "Alle Einträge im Logbuch entfernen?"
45
 
46
+ #: SimpleHistory.php:858
47
+ msgid "Go to the first page"
48
+ msgstr "Gehe zur ersten Seite"
49
 
50
+ #: SimpleHistory.php:859
51
+ msgid "Go to the previous page"
52
+ msgstr "Gehe zur vorherigen Seite"
53
 
54
+ #: SimpleHistory.php:860
55
+ msgid "Go to the next page"
56
+ msgstr "Gehe zur nächsten Seite"
57
 
58
+ #: SimpleHistory.php:861
59
+ msgid "Go to the last page"
60
+ msgstr "Gehe zur letzten Seite"
61
 
62
+ #: SimpleHistory.php:862
63
+ msgid "Current page"
64
+ msgstr "Aktuelle Seite"
65
 
66
+ #: SimpleHistory.php:864
67
+ msgid "Oups, the log could not be loaded right now."
68
+ msgstr "Hoppla, das Logbuch konnte eben nicht geladen werden."
69
 
70
+ #: SimpleHistory.php:865
71
+ msgid "Your search did not match any history events."
72
+ msgstr "Deine Suche erbrachte keine Übereinstimmungen mit Ereignissen."
73
 
74
+ #: SimpleHistory.php:1149 SimpleHistory.php:1250
75
+ msgid "Simple History Settings"
76
+ msgstr "Simple History Einstellungen"
77
+
78
+ #: SimpleHistory.php:1183
79
+ msgid "No valid callback found"
80
+ msgstr "Kein valider Rückruf gefunden"
81
+
82
+ #: SimpleHistory.php:1271
83
+ msgid "Cleared database"
84
+ msgstr "Datenbank geleert"
85
+
86
+ #: SimpleHistory.php:1298
87
+ msgid "Show history"
88
+ msgstr "Zeige Logbuch"
89
+
90
+ #: SimpleHistory.php:1311
91
+ msgid "Number of items per page"
92
+ msgstr "Zahl der Einträge pro Seite"
93
+
94
+ #: SimpleHistory.php:1323
95
+ msgid "Clear log"
96
+ msgstr "Logbuch leeren"
97
+
98
+ #: SimpleHistory.php:1462
99
+ msgid "on the dashboard"
100
+ msgstr "auf dem Dashboard"
101
+
102
+ #: SimpleHistory.php:1467
103
+ msgid "as a page under the dashboard menu"
104
+ msgstr "als eine Seite im Dashboard-Menü"
105
+
106
+ #: SimpleHistory.php:1483
107
+ msgid "Items in the database are automatically removed after %1$s days."
108
+ msgstr "Einträge in der Datenbank werden nach %1$s Tagen automatisch entfernt."
109
+
110
+ #: SimpleHistory.php:1485
111
+ msgid "Items in the database are kept forever."
112
+ msgstr "Einträge in der Datenbank werden auf ewig behalten."
113
+
114
+ #: SimpleHistory.php:1489
115
+ msgid "Clear log now"
116
+ msgstr "Logbuch jetzt leeren"
117
 
118
+ #: SimpleHistory.php:1533
119
+ msgid "The log for Simple History was cleared ({num_rows} rows were removed)."
120
+ msgstr ""
121
+ "Das Logbuch von Simple History wurde geleert ({num_rows} Zeilen wurden "
122
+ "entfernt)."
123
+
124
+ #: SimpleHistory.php:1793
125
+ msgid "+%1$s similar event"
126
+ msgid_plural "+%1$s similar events"
127
+ msgstr[0] "+%1$s gleichartiges Ereignis"
128
+ msgstr[1] "+%1$s gleichartige Ereignisse"
129
+
130
+ #: SimpleHistory.php:1800
131
+ msgid "Loading…"
132
+ msgstr "Lade..."
133
+
134
+ #: SimpleHistory.php:1807
135
+ msgid "Showing %1$s more"
136
+ msgstr "Zeige %1$s mehr"
137
+
138
+ #: SimpleHistory.php:1826
139
+ msgid "Context data"
140
+ msgstr "Kontext-Daten"
141
+
142
+ #: SimpleHistory.php:1827
143
+ msgid "This is potentially useful meta data that a logger has saved."
144
+ msgstr ""
145
+ "Dies sind potentiell nützliche Meta-Daten, die ein Logger abgespeichert hat."
146
+
147
+ #: SimpleHistory.php:2302
148
+ msgid "No events today so far."
149
+ msgstr "Heute sind noch keine Ereignisse aufgetreten."
150
+
151
+ #: SimpleHistory.php:2321
152
+ msgid "One event today from one user."
153
+ msgstr "Ein Ereignis heute von einem Benutzer."
154
+
155
+ #: SimpleHistory.php:2327
156
+ msgid "One event today from one source."
157
+ msgstr "Ein Ereignis heute aus einer Quelle."
158
+
159
+ #: SimpleHistory.php:2333
160
+ msgid "%1$d events today from one user."
161
+ msgstr "%1$d Ereignisse heute von einem Benutzer."
162
+
163
+ #: SimpleHistory.php:2339
164
+ msgid "%1$d events today from %2$d users."
165
+ msgstr "%1$d Ereignisse heute von %2$d Benutzern."
166
+
167
+ #: SimpleHistory.php:2345 SimpleHistory.php:2351
168
+ msgid "%1$d events today from one user and one other source."
169
+ msgstr "%1$d Ereignisse heute von einem Benutzer und einer anderen Quelle."
170
+
171
+ #: SimpleHistory.php:2357
172
+ msgid "%1$d events today from one user and %3$d other sources."
173
+ msgstr "%1$d Ereignisse heute von einem Benutzer und %3$d anderen Quellen."
174
 
175
+ #: SimpleHistory.php:2363
176
+ msgid "%1$s events today from %2$d users and %3$d other sources."
177
+ msgstr "%1$s Ereignisse heute von %2$d Benutzern und %3$d anderen Quellen."
178
 
179
+ #: dropins/SimpleHistoryDonateDropin.php:36
180
  msgid "Donate"
181
+ msgstr "Spende"
182
 
183
+ #: dropins/SimpleHistoryDonateDropin.php:72
184
+ msgid ""
185
+ "If you find Simple History useful please <a href=\"%1$s\">donate</a> or <a "
186
+ "href=\"%2$s\">buy me something from my Amazon wish list</a>."
187
+ msgstr ""
188
+ "Falls Du Simple History nützlich findest, <a href=\"%1$s\">spende</a> bitte "
189
+ "oder <a href=\"%2$s\">kaufe mir etwas von meinem Amazon-Wunschzettel</a>."
190
 
191
+ #: dropins/SimpleHistoryFilterDropin.php:44
192
+ msgid "Filter history"
193
+ msgstr "Filter-Historie"
194
 
195
+ #: dropins/SimpleHistoryFilterDropin.php:48
196
+ #: dropins/SimpleHistoryFilterDropin.php:159
197
+ msgid "Search events"
198
+ msgstr "Durchsuche Ereignisse"
199
 
200
+ #: dropins/SimpleHistoryFilterDropin.php:56
201
+ msgid "All log levels"
202
+ msgstr "Alle Logbuch-Ebenen"
203
+
204
+ #: dropins/SimpleHistoryFilterDropin.php:70
205
+ msgid "All messages"
206
+ msgstr "Alle Nachrichten"
207
+
208
+ #: dropins/SimpleHistoryFilterDropin.php:124
209
+ msgid "All users"
210
+ msgstr "Alle Benutzer"
211
+
212
+ #: dropins/SimpleHistoryFilterDropin.php:145
213
+ msgid "All dates"
214
+ msgstr "Alle Tage"
215
+
216
+ #: dropins/SimpleHistoryFilterDropin.php:168
217
+ msgid "Search"
218
+ msgstr "Suche"
219
+
220
+ #: dropins/SimpleHistoryNewRowsNotifier.php:80
221
+ msgid "1 new row"
222
+ msgid_plural "%d new rows"
223
+ msgstr[0] "1 neue Zeile"
224
+ msgstr[1] "%d neue Zeilen"
225
+
226
+ #: dropins/SimpleHistoryRSSDropin.php:55
227
+ msgid "Address"
228
+ msgstr "Adresse"
229
 
230
+ #: dropins/SimpleHistoryRSSDropin.php:64
231
+ msgid "Regenerate"
232
+ msgstr "Wiederherstellen"
233
+
234
+ #: dropins/SimpleHistoryRSSDropin.php:81
235
+ msgid "Created new secret RSS address"
236
+ msgstr "Neue RSS-Geheim-Adresse erzeugt"
237
+
238
+ #: dropins/SimpleHistoryRSSDropin.php:148
239
+ #: dropins/SimpleHistoryRSSDropin.php:259
240
  msgid "History for %s"
241
+ msgstr "Historie für"
242
 
243
+ #: dropins/SimpleHistoryRSSDropin.php:149
244
+ #: dropins/SimpleHistoryRSSDropin.php:260
245
  msgid "WordPress History for %s"
246
+ msgstr "WordPress Historie für %s"
 
 
 
 
247
 
248
+ #: dropins/SimpleHistoryRSSDropin.php:196
249
+ msgid "+%1$s occasion"
250
+ msgid_plural "+%1$s occasions"
251
+ msgstr[0] "+%1$s Vorkommnis"
252
+ msgstr[1] "+%1$s Vorkommnisse"
253
 
254
+ #: dropins/SimpleHistoryRSSDropin.php:263
255
  msgid "Wrong RSS secret"
256
  msgstr "Falsche RSS-Geheimadresse"
257
 
258
+ #: dropins/SimpleHistoryRSSDropin.php:264
259
  msgid ""
260
  "Your RSS secret for Simple History RSS feed is wrong. Please see WordPress "
261
  "settings for current link to the RSS feed."
262
  msgstr ""
263
+ "Deine RSS-Geheimadresse für den Simple-History-RSS-Feed ist falsch. Bitte "
264
+ "schlage in den WordPress-Einstellungen die aktuelle Verlinkung des RSS-Feeds "
265
+ "nach."
266
 
267
+ #: dropins/SimpleHistoryRSSDropin.php:315
268
+ msgid ""
269
+ "You can generate a new address for the RSS feed. This is useful if you think "
270
+ "that the address has fallen into the wrong hands."
271
+ msgstr ""
272
+ "Du kannst eine neue Adresse für den RSS-Feed erzeugen. Dies ist hilfreich "
273
+ "falls Du denkst, daß die Adresse in die falschen Hände geraten sein könnte."
274
 
275
+ #: dropins/SimpleHistoryRSSDropin.php:318
276
+ msgid "Generate new address"
277
+ msgstr "Erzeuge neue Adresse"
 
 
278
 
279
+ #: dropins/SimpleHistoryRSSDropin.php:346
280
+ msgid ""
281
+ "Simple History has a RSS feed which you can subscribe to and receive log "
282
+ "updates. Make sure you only share the feed with people you trust, since it "
283
+ "can contain sensitive or confidential information."
284
+ msgstr ""
285
+ "Simple History hat einen RSS-Feed, den Du abonnieren kannst, um Updates in "
286
+ "der Logdatei zu empfangen. Stelle sicher, daß Du den Feed nur Menschen Deines "
287
+ "Vertrauens zugänglich machst, denn er kann sensible und vertrauliche "
288
+ "Informationen enthalten."
289
 
290
+ #: dropins/SimpleHistorySettingsLogtestDropin.php:20
291
+ msgid "Test data (debug)"
292
+ msgstr "Test-Daten (Fehlersuche)"
293
 
294
+ #: dropins/SimpleHistorySettingsStatsDropin.php:27
295
+ msgid "Stats"
296
+ msgstr "Statistiken"
297
+
298
+ #: dropins/SimpleHistorySidebarDropin.php:159 loggers/SimpleLogger.php:296
299
+ msgid "Just now"
300
+ msgstr "gerade eben"
301
+
302
+ #: index.php:59
303
+ msgid ""
304
+ "Simple History is a great plugin, but to use it your server must have at "
305
+ "least PHP 5.3 installed (you have version %s)."
306
+ msgstr ""
307
+ "Simple History ist ein großartiges Plugin, aber zu seiner Benutzung muß Dein "
308
+ "Server mindestens PHP 5.3 installiert haben (Du hast Version %s)."
309
+
310
+ #: loggers/SimpleCommentsLogger.php:685
311
+ msgid "Spam"
312
+ msgstr "Spam"
313
+
314
+ #: loggers/SimpleCommentsLogger.php:687
315
+ msgid "Approved"
316
+ msgstr "genehmigt"
317
+
318
+ #: loggers/SimpleCommentsLogger.php:689
319
+ msgid "Pending"
320
+ msgstr "schwebend"
321
+
322
+ #: loggers/SimpleCommentsLogger.php:703
323
+ msgid "Trackback"
324
+ msgstr "Trackback"
325
+
326
+ #: loggers/SimpleCommentsLogger.php:705
327
+ msgid "Pingback"
328
+ msgstr "Pingback"
329
+
330
+ #: loggers/SimpleCommentsLogger.php:707
331
+ msgid "Comment"
332
+ msgstr "Kommentar"
333
+
334
+ #: loggers/SimpleCoreUpdatesLogger.php:29
335
+ msgid "Updated WordPress from {prev_version} to {new_version}"
336
+ msgstr "WordPress von {prev_version} auf {new_version} aktualisiert"
337
+
338
+ #: loggers/SimpleCoreUpdatesLogger.php:30
339
+ msgid "WordPress auto-updated from {prev_version} to {new_version}"
340
+ msgstr "WordPress automatisch von {prev_version} auf {new_version} aktualisiert"
341
+
342
+ #: loggers/SimpleExportLogger.php:23
343
+ msgid "Created XML export"
344
+ msgstr "XML-Export erzeugt"
345
+
346
+ #: loggers/SimpleLegacyLogger.php:88
347
+ msgid "By %s"
348
+ msgstr "von %s"
349
+
350
+ #: loggers/SimpleLegacyLogger.php:93
351
+ msgid "%d occasions"
352
+ msgstr "%d Vorkommnisse"
353
+
354
+ #: loggers/SimpleLogger.php:203
355
+ msgid "Deleted user (had id %1$s, email %2$s, login %3$s)"
356
+ msgstr "gelöschter Benutzer (hatte ID %1$s, E-Mail %2$s, Login %3$s)"
357
+
358
+ #: loggers/SimpleLogger.php:218
359
+ msgid "Anonymous web user"
360
+ msgstr "Anonymer Netz-Nutzer"
361
+
362
+ #: loggers/SimpleLogger.php:226
363
+ msgid "Anonymous user from %1$s"
364
+ msgstr "Anonymer Benutzer von %1$s"
365
+
366
+ #. translators: Date format for log row header, see http:php.net/date
367
+ #: loggers/SimpleLogger.php:301
368
+ msgid "M j, Y \\a\\t G:i"
369
+ msgstr "j. M. Y \\u\\m G:i \\U\\h\\r"
370
+
371
+ #. translators: 1: last modified date and time in human time diff-format
372
+ #: loggers/SimpleLogger.php:309
373
+ msgid "%1$s ago"
374
+ msgstr "vor %1$s"
375
+
376
+ #: loggers/SimpleMediaLogger.php:23
377
+ msgid "Created {post_type} \"{attachment_title}\""
378
+ msgstr "hat {post_type} \"{attachment_title}\" erzeugt"
379
+
380
+ #: loggers/SimpleMediaLogger.php:24
381
+ msgid "Edited {post_type} \"{attachment_title}\""
382
+ msgstr "hat {post_type} \"{attachment_title}\" geändert"
383
+
384
+ #: loggers/SimpleMediaLogger.php:25
385
+ msgid "Deleted {post_type} \"{attachment_title}\" (\"{attachment_filename}\")"
386
+ msgstr ""
387
+ "hat {post_type} \"{attachment_title}\" (\"{attachment_filename}\") gelöscht"
388
+
389
+ #: loggers/SimpleMediaLogger.php:81
390
+ msgid "Edited {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
391
+ msgstr ""
392
+ "hat {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a> geändert"
393
+
394
+ #: loggers/SimpleMediaLogger.php:85
395
+ msgid "Uploaded {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
396
+ msgstr ""
397
+ "hat {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a> hochgeladen"
398
+
399
+ #: loggers/SimpleMediaLogger.php:197
400
+ msgid "{attachment_thumb}"
401
+ msgstr "{attachment_thumb}"
402
+
403
+ #: loggers/SimpleMediaLogger.php:206
404
+ msgid "{attachment_size_format}"
405
+ msgstr "{attachment_size_format}"
406
+
407
+ #: loggers/SimpleMediaLogger.php:207
408
+ msgid "{attachment_filetype_extension}"
409
+ msgstr "{attachment_filetype_extension}"
410
+
411
+ #: loggers/SimpleMediaLogger.php:209
412
+ msgid "{full_image_width} × {full_image_height}"
413
+ msgstr "{full_image_width} × {full_image_height}"
414
+
415
+ #: loggers/SimpleMenuLogger.php:23
416
+ msgid "Created menu \"{menu_name}\""
417
+ msgstr "hat Menü \"{menu_name}\" erzeugt"
418
+
419
+ #: loggers/SimpleMenuLogger.php:24
420
+ msgid "Edited menu \"{menu_name}\""
421
+ msgstr "hat Menü \"{menu_name}\" geändert"
422
+
423
+ #: loggers/SimpleMenuLogger.php:25
424
+ msgid "Deleted menu \"{menu_name}\""
425
+ msgstr "hat Menü \"{menu_name}\" gelöscht"
426
+
427
+ #: loggers/SimpleMenuLogger.php:26
428
+ msgid "Edited a menu item"
429
+ msgstr "hat Menü-Eintrag geändert"
430
+
431
+ #: loggers/SimpleMenuLogger.php:27
432
+ msgid "Updated menu locations"
433
+ msgstr "hat Menü-Positionen aktualisiert"
434
+
435
+ #: loggers/SimpleOptionsLogger.php:140
436
+ msgid "Updated option \"{option}\""
437
+ msgstr "hat Option \"{option}\" aktualisiert"
438
+
439
+ #: loggers/SimpleOptionsLogger.php:242 loggers/SimpleThemeLogger.php:570
440
+ msgid "New value"
441
+ msgstr "neuer Wert"
442
+
443
+ #: loggers/SimpleOptionsLogger.php:253 loggers/SimpleThemeLogger.php:582
444
+ msgid "Old value"
445
+ msgstr "alter Wert"
446
 
447
+ #: loggers/SimpleOptionsLogger.php:268 loggers/SimpleOptionsLogger.php:285
448
+ msgid "Settings page"
449
+ msgstr "Einstellungs-Seite"
450
 
451
+ #: loggers/SimplePostLogger.php:30
452
+ msgid "Created {post_type} \"{post_title}\""
453
+ msgstr "hat {post_type} \"{post_title}\" erzeugt"
454
 
455
+ #: loggers/SimplePostLogger.php:31
456
+ msgid "Updated {post_type} \"{post_title}\""
457
+ msgstr "hat {post_type} \"{post_title}\" aktualisiert"
458
+
459
+ #: loggers/SimplePostLogger.php:32
460
+ msgid "Restored {post_type} \"{post_title}\" from trash"
461
+ msgstr "hat {post_type} \"{post_title}\" aus dem Papierkorb wiederhergestellt"
462
+
463
+ #: loggers/SimplePostLogger.php:33 loggers/SimplePostLogger.php:236
464
+ msgid "Deleted {post_type} \"{post_title}\""
465
+ msgstr "hat {post_type} \"{post_title}\" gelöscht"
466
+
467
+ #: loggers/SimplePostLogger.php:34
468
+ msgid "Moved {post_type} \"{post_title}\" to the trash"
469
+ msgstr "hat {post_type} \"{post_title}\" in den Papierkorb verschoben"
470
+
471
+ #: loggers/SimplePostLogger.php:232
472
+ msgid "Updated {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
473
+ msgstr ""
474
+ "hat {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> aktualisiert"
475
+
476
+ #: loggers/SimplePostLogger.php:240
477
+ msgid "Created {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
478
+ msgstr "hat {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> erzeugt"
479
+
480
+ #: loggers/SimplePostLogger.php:245
481
  msgid ""
482
+ "Moved {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> to the trash"
483
+ msgstr ""
484
+ "hat {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> in den "
485
+ "Papierkorb verschoben"
486
+
487
+ #: loggers/SimpleThemeLogger.php:26
488
+ msgid "Switched theme to \"{theme_name}\" from \"{prev_theme_name}\""
489
+ msgstr ""
490
+ "hat zum Theme \"{theme_name}\" umgeschaltet von \"{prev_theme_name}\" aus"
491
+
492
+ #: loggers/SimpleThemeLogger.php:27
493
+ msgid "Customized theme appearance \"{setting_id}\""
494
+ msgstr "hat Theme-Erscheinungsbild \"{setting_id}\" individualisiert"
495
+
496
+ #: loggers/SimpleThemeLogger.php:28
497
+ msgid "Removed widget \"{widget_id_base}\" from sidebar \"{sidebar_id}\""
498
+ msgstr ""
499
+ "hat Widget \"{widget_id_base}\" aus der Sidebar \"{sidebar_id}\" entfernt"
500
+
501
+ #: loggers/SimpleThemeLogger.php:29
502
+ msgid "Added widget \"{widget_id_base}\" to sidebar \"{sidebar_id}\""
503
+ msgstr ""
504
+ "hat Widget \"{widget_id_base}\" zur Sidebar \"{sidebar_id}\" hinzugefügt"
505
+
506
+ #: loggers/SimpleThemeLogger.php:30
507
+ msgid "Changed widget order \"{widget_id_base}\" in sidebar \"{sidebar_id}\""
508
+ msgstr ""
509
+ "hat Widget-Sortierung \"{widget_id_base}\" in der Sidebar \"{sidebar_id}\" "
510
+ "geändert"
511
+
512
+ #: loggers/SimpleThemeLogger.php:31
513
+ msgid "Changed widget \"{widget_id_base}\" in sidebar \"{sidebar_id}\""
514
+ msgstr ""
515
+ "hat Widget \"{widget_id_base}\" in der Sidebar \"{sidebar_id}\" geändert"
516
+
517
+ #: loggers/SimpleThemeLogger.php:32
518
+ msgid "Changed settings for the theme custom background"
519
  msgstr ""
520
+ "hat Einstellungen für den selbstdefinierten Hintergrund des Themes geändert"
 
 
 
 
 
 
 
 
521
 
522
+ #: loggers/SimpleThemeLogger.php:532
523
+ msgid "Section"
524
+ msgstr "Abschnitt"
525
 
526
+ #: loggers/SimpleUserLogger.php:22
527
  msgid ""
528
+ "Failed to login to account with username \"{login_user_login}\" because an "
529
+ "incorrect password was entered"
530
  msgstr ""
531
+ "Anmeldung mit dem Benutzernamen \"{login_user_login}\" fehlgeschlagen, weil "
532
+ "ein falsches Paßwort eingegeben wurde"
533
 
534
+ #: loggers/SimpleUserLogger.php:23
535
  msgid ""
536
+ "Failed to login with username \"{failed_login_username}\" because no user "
537
+ "with that username exists"
538
  msgstr ""
539
+ "Anmeldung mit dem Benutzernamen \"{failed_login_username}\" fehlgeschlagen, "
540
+ "weil kein Benutzer mit diesem Namen existiert"
 
541
 
542
+ #: loggers/SimpleUserLogger.php:24
543
+ msgid "Logged in"
544
+ msgstr "hat sich angemeldet"
545
 
546
+ #: loggers/SimpleUserLogger.php:25
547
+ msgid "Unknown user logged in"
548
+ msgstr "Unbekannter Benutzer hat sich angemeldet"
549
 
550
+ #: loggers/SimpleUserLogger.php:26
551
+ msgid "Logged out"
552
+ msgstr "hat sich abgemeldet"
553
 
554
+ #: loggers/SimpleUserLogger.php:27
555
+ msgid "Edited the profile for user {edited_user_login} ({edited_user_email})"
556
+ msgstr ""
557
+ "hat das Profil des Benutzers {edited_user_login} ({edited_user_email}) "
558
+ "geändert"
559
 
560
+ #: loggers/SimpleUserLogger.php:28
561
+ msgid ""
562
+ "Created user {created_user_login} ({created_user_email}) with role "
563
+ "{created_user_role}"
564
+ msgstr ""
565
+ "hat Benutzer {created_user_login} ({created_user_email}) mit der Rolle "
566
+ "{created_user_role} erzeugt"
567
 
568
+ #: loggers/SimpleUserLogger.php:29
569
+ msgid "Deleted user {deleted_user_login} ({deleted_user_email})"
570
+ msgstr "hat den Benutzer {deleted_user_login} ({deleted_user_email}) gelöscht"
571
 
572
+ #: loggers/SimpleUserLogger.php:227
573
+ msgid "Edited <a href=\"{edit_profile_link}\">your profile</a>"
574
+ msgstr "hat <a href=\"{edit_profile_link}\">Dein Profil</a> geändert"
575
 
576
+ #: loggers/SimpleUserLogger.php:231
577
+ msgid "Edited <a href=\"{edit_profile_link}\">their profile</a>"
578
+ msgstr "hat <a href=\"{edit_profile_link}\">deren Profil</a> geändert"
579
 
580
+ #: loggers/SimpleUserLogger.php:240
581
+ msgid "Edited your profile"
582
+ msgstr "hat Dein Profil geändert"
583
 
584
+ #: loggers/SimpleUserLogger.php:251
585
+ msgid ""
586
+ "Edited the profile for user <a href="
587
+ "\"{edit_profile_link}\">{edited_user_login} ({edited_user_email})</a>"
588
+ msgstr ""
589
+ "hat das Profil für den Benutzer <a href="
590
+ "\"{edit_profile_link}\">{edited_user_login} ({edited_user_email})</a> geändert"
591
+
592
+ #: node_modules/grunt-wp-i18n/test/fixtures/basic-theme/exclude/file.php:3
593
+ #: node_modules/grunt-wp-i18n/test/fixtures/plugin-include/plugin-include.php:6
594
+ msgid "Exclude"
595
+ msgstr "Schließe aus"
596
+
597
+ #: node_modules/grunt-wp-i18n/test/fixtures/plugin-include/include/file.php:2
598
+ msgid "Include"
599
+ msgstr "Schließe ein"
600
+
601
+ #: node_modules/grunt-wp-i18n/test/fixtures/text-domains/add-domain.php:2
602
+ #: node_modules/grunt-wp-i18n/test/fixtures/text-domains/update-domains.php:2
603
+ #: node_modules/grunt-wp-i18n/test/fixtures/text-domains/update-domains.php:3
604
+ msgid "String"
605
+ msgstr "String"
606
+
607
+ #: templates/settings-statsIntro.php:19
608
+ msgid "<b>%1$s rows</b> have been logged the last <b>%2$s days</b>"
609
+ msgstr ""
610
+ "<b>%1$s Einträge</b> sind in den letzten <b>%2$s Tagen</b> registriert worden"
611
 
612
+ #: templates/settings-statsLogLevels.php:4
613
+ msgid "Log levels"
614
+ msgstr "Logbuch-Ebenen"
615
 
616
+ #: templates/settings-statsLogLevels.php:6
617
+ msgid "Number of rows logged for each log level."
618
+ msgstr "Zahl der aufgezeichneten Zeilen pro Logbuch-Ebene"
619
 
620
+ #: templates/settings-statsLoggers.php:4
621
+ msgid "Loggers"
622
+ msgstr "Logger"
623
 
624
+ #: templates/settings-statsRowsPerDay.php:4
625
+ msgid "Rows per day"
626
+ msgstr "Zeilen pro Tag"
627
 
628
+ #: templates/settings-statsUsers.php:4
629
+ msgid "Users"
630
+ msgstr "Benutzer"
631
 
632
+ #: templates/settings-statsUsers.php:6
633
+ msgid "Number of logged items for the 5 users with most logged rows."
634
+ msgstr ""
635
+ "Zahl der aufgezeichneten Vorkommnisse für die fünf Benutzer mit den meisten "
636
+ "Aufzeichnungen."
637
 
638
+ #: templates/settings-statsUsers.php:7
639
+ msgid "Deleted users are also included."
640
+ msgstr "Gelöschte Benutzer sind auch enthalten."
641
 
642
+ #. Plugin URI of the plugin/theme
643
+ msgid "http://simple-history.com"
644
+ msgstr "http://simple-history.com"
645
 
646
+ #. Description of the plugin/theme
647
+ msgid ""
648
+ "Plugin that logs various things that occur in WordPress and then presents "
649
+ "those events in a very nice GUI."
650
+ msgstr ""
651
+ "Ein Plugin, welches diverse Dinge protokolliert, die in einer WordPress-"
652
+ "Installation passieren (und das diese Vorkommnisse dann über eine sehr nette "
653
+ "Bedieneroberfläche präsentiert)."
654
+
655
+ #. Author of the plugin/theme
656
+ msgid "Pär Thernström"
657
+ msgstr "Pär Thernström"
658
+
659
+ #. Author URI of the plugin/theme
660
+ msgid "http://simple-history.com/"
661
+ msgstr "http://simple-history.com/"
662
+
663
+ #: SimpleHistory.php:249
664
+ msgctxt ""
665
+ "Message visible while waiting for log to load from server the first time"
666
+ msgid "Loading history..."
667
+ msgstr "Lade Historie..."
668
+
669
+ #: SimpleHistory.php:286
670
+ msgctxt "page n of n"
671
+ msgid "of"
672
+ msgstr "von"
673
+
674
+ #: SimpleHistory.php:357
675
+ msgctxt "API: not enought arguments passed"
676
+ msgid "Not enough args specified"
677
+ msgstr "Nicht genügend Argumente angegeben"
678
+
679
+ #: SimpleHistory.php:1235
680
+ msgctxt "dashboard menu name"
681
+ msgid "Simple History"
682
+ msgstr "Simple History"
683
+
684
+ #: SimpleHistory.php:1359
685
+ msgctxt "history page headline"
686
+ msgid "Simple History"
687
+ msgstr "Simple History"
688
+
689
+ #: SimpleHistory.php:1619
690
+ msgctxt "simple-history"
691
+ msgid "Simple History removed one event that were older than {days} days"
692
+ msgid_plural ""
693
+ "Simple History removed {num_rows} events that were older than {days} days"
694
+ msgstr[0] ""
695
+ "Simple History hat 1 Ereignis entfernt welches älter als {days} Tage war"
696
+ msgstr[1] ""
697
+ "Simple History hat {num_rows} Ereignisse entfernt welche älter als {days} "
698
+ "Tage waren"
699
+
700
+ #: SimpleHistory.php:1963
701
+ msgctxt "Log level in gui"
702
+ msgid "emergency"
703
+ msgstr "Notfall"
704
+
705
+ #: SimpleHistory.php:1967
706
+ msgctxt "Log level in gui"
707
+ msgid "alert"
708
+ msgstr "Alarm"
709
+
710
+ #: SimpleHistory.php:1971
711
+ msgctxt "Log level in gui"
712
+ msgid "critical"
713
+ msgstr "Kritisch"
714
+
715
+ #: SimpleHistory.php:1975
716
+ msgctxt "Log level in gui"
717
+ msgid "error"
718
+ msgstr "Fehler"
719
+
720
+ #: SimpleHistory.php:1979
721
+ msgctxt "Log level in gui"
722
+ msgid "warning"
723
+ msgstr "Warnung"
724
+
725
+ #: SimpleHistory.php:1983
726
+ msgctxt "Log level in gui"
727
+ msgid "notice"
728
+ msgstr "Hinweis"
729
+
730
+ #: SimpleHistory.php:1987
731
+ msgctxt "Log level in gui"
732
+ msgid "info"
733
+ msgstr "Information"
734
+
735
+ #: SimpleHistory.php:1991
736
+ msgctxt "Log level in gui"
737
+ msgid "debug"
738
+ msgstr "Fehlersuche"
739
+
740
+ #: SimpleHistory.php:1996
741
+ msgctxt "Log level in gui"
742
+ msgid "Emergency"
743
+ msgstr "Notfall"
744
+
745
+ #: SimpleHistory.php:2000
746
+ msgctxt "Log level in gui"
747
+ msgid "Alert"
748
+ msgstr "Alarm"
749
+
750
+ #: SimpleHistory.php:2004
751
+ msgctxt "Log level in gui"
752
+ msgid "Critical"
753
+ msgstr "Kritisch"
754
+
755
+ #: SimpleHistory.php:2008
756
+ msgctxt "Log level in gui"
757
+ msgid "Error"
758
+ msgstr "Fehler"
759
+
760
+ #: SimpleHistory.php:2012
761
+ msgctxt "Log level in gui"
762
+ msgid "Warning"
763
+ msgstr "Warnung"
764
+
765
+ #: SimpleHistory.php:2016
766
+ msgctxt "Log level in gui"
767
+ msgid "Notice"
768
+ msgstr "Hinweis"
769
+
770
+ #: SimpleHistory.php:2020
771
+ msgctxt "Log level in gui"
772
+ msgid "Info"
773
+ msgstr "Information"
774
+
775
+ #: SimpleHistory.php:2024
776
+ msgctxt "Log level in gui"
777
+ msgid "Debug"
778
+ msgstr "Fehlersuche"
779
+
780
+ #: dropins/SimpleHistoryDonateDropin.php:51
781
+ msgctxt "donate settings headline"
782
+ msgid "Donate"
783
+ msgstr "Spende"
784
+
785
+ #: dropins/SimpleHistoryFilterDropin.php:50
786
+ msgctxt "Filter dropin: button to show more search options"
787
+ msgid "Show options"
788
+ msgstr "Zeige Optionen"
789
+
790
+ #: dropins/SimpleHistoryFilterDropin.php:160
791
+ msgctxt "Filter dropin: button to hide more search options"
792
+ msgid "Hide options"
793
+ msgstr "Verberge Optionen"
794
+
795
+ #: dropins/SimpleHistoryIpInfoDropin.php:66
796
+ msgctxt "IP Info Dropin"
797
+ msgid "That IP address does not seem like a public one."
798
+ msgstr "Diese IP-Adresse scheint keine öffentliche zu sein."
799
+
800
+ #: dropins/SimpleHistoryIpInfoDropin.php:85
801
+ msgctxt "IP Info Dropin"
802
+ msgid "IP address"
803
+ msgstr "IP-Adresse"
804
+
805
+ #: dropins/SimpleHistoryIpInfoDropin.php:96
806
+ msgctxt "IP Info Dropin"
807
+ msgid "Hostname"
808
+ msgstr "Hostname"
809
+
810
+ #: dropins/SimpleHistoryIpInfoDropin.php:107
811
+ #: dropins/SimpleHistoryIpInfoDropin.php:118
812
+ msgctxt "IP Info Dropin"
813
+ msgid "Network"
814
+ msgstr "Netzwerk"
815
+
816
+ #: dropins/SimpleHistoryIpInfoDropin.php:129
817
+ msgctxt "IP Info Dropin"
818
+ msgid "City"
819
+ msgstr "Stadt"
820
+
821
+ #: dropins/SimpleHistoryIpInfoDropin.php:140
822
+ msgctxt "IP Info Dropin"
823
+ msgid "Region"
824
+ msgstr "Region"
825
+
826
+ #: dropins/SimpleHistoryIpInfoDropin.php:151
827
+ msgctxt "IP Info Dropin"
828
+ msgid "Country"
829
+ msgstr "Land"
830
+
831
+ #: dropins/SimpleHistoryIpInfoDropin.php:162
832
+ msgctxt "IP Info Dropin"
833
+ msgid "IP info provided by %1$s ipinfo.io %2$s"
834
+ msgstr "IP-Info bereitgestellt durch %1$s ipinfo.io %2$s"
835
+
836
+ #: dropins/SimpleHistoryNewRowsNotifier.php:38
837
+ msgctxt "New rows notifier: error while checking for new rows"
838
+ msgid "An error occured while checking for new log rows"
839
+ msgstr ""
840
+ "Während der Suche nach neuen Logbuch-Einträgen ist ein Fehler aufgetreten"
841
+
842
+ #: dropins/SimpleHistoryRSSDropin.php:47
843
+ msgctxt "rss settings headline"
844
+ msgid "RSS feed"
845
+ msgstr "RSS-Feed"
846
 
847
+ #: dropins/SimpleHistorySidebarDropin.php:31
848
+ msgctxt "Sidebar box"
849
+ msgid "Simple History is on GitHub"
850
+ msgstr "Simple History ist auf GitHub"
851
 
852
+ #: dropins/SimpleHistorySidebarDropin.php:34
853
+ msgctxt "Sidebar box"
854
+ msgid ""
855
+ "You can star, fork, or report issues with this plugin over at the <a href="
856
+ "\"%1$s\">GitHub page</a>."
857
+ msgstr ""
858
+ "Drüben auf der <a href=\"%1$s\">GitHub-Website</a> kannst Du dieses Plugin "
859
+ "bewerten, einen Fork abspalten oder Probleme melden."
860
 
861
+ #: dropins/SimpleHistorySidebarDropin.php:48
862
+ msgctxt "Sidebar box"
863
+ msgid "Donate to support development"
864
+ msgstr "Spende zur Unterstützung der weiteren Entwicklung"
865
 
866
+ #: dropins/SimpleHistorySidebarDropin.php:51
867
+ msgctxt "Sidebar box"
868
+ msgid ""
869
+ "If you like and use Simple History you should <a href=\"%1$s\">donate to keep "
870
+ "this plugin free</a>."
871
+ msgstr ""
872
+ "Falls Dir dieses Plugin gefällt und Du es benutzt, solltest Du <a href=\"%1$s"
873
+ "\">spenden, um das Plugin weiterhin kostenlos zu halten</a>."
874
 
875
+ #: dropins/SimpleHistorySidebarDropin.php:65
876
+ msgctxt "Sidebar box"
877
+ msgid "Review this plugin if you like it"
878
+ msgstr "Bespreche dieses Plugin, wenn es Dir gefällt"
879
 
880
+ #: dropins/SimpleHistorySidebarDropin.php:68
881
+ msgctxt "Sidebar box"
882
+ msgid ""
883
+ "If you like Simple History then please <a href=\"%1$s\">give it a nice review "
884
+ "over at wordpress.org</a>."
885
+ msgstr ""
886
+ "Wenn Du Simple History magst, bitte <a href=\"%1$s\">verfasse drüben bei "
887
+ "wordpress.org eine nette Besprechung darüber</a>."
888
+
889
+ #: dropins/SimpleHistorySidebarDropin.php:72
890
+ msgctxt "Sidebar box"
891
+ msgid ""
892
+ "A good review will help new users find this plugin. And it will make the "
893
+ "plugin author very happy :)"
894
+ msgstr ""
895
+ "Eine positive Besprechung hilft neuen Benutzern, auf dieses Plugin aufmerksam "
896
+ "zu werden. Und sie macht seinen Autor sehr glücklich! :)"
897
 
898
+ #: loggers/SimpleCommentsLogger.php:95
899
+ msgctxt "A comment was added to the database by a non-logged in internet user"
900
+ msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
901
+ msgstr ""
902
+ "hat einen Kommentar zu {comment_post_type} \"{comment_post_title}\" "
903
+ "hinzugefügt"
904
 
905
+ #: loggers/SimpleCommentsLogger.php:101
906
+ msgctxt "A comment was added to the database by a logged in user"
907
+ msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
908
+ msgstr ""
909
+ "hat einen Kommentar zu {comment_post_type} \"{comment_post_title}\" "
910
+ "hinzugefügt"
911
 
912
+ #: loggers/SimpleCommentsLogger.php:107
913
+ msgctxt "A comment was approved"
914
  msgid ""
915
+ "Approved a comment to \"{comment_post_title}\" by {comment_author} "
916
+ "({comment_author_email})"
917
  msgstr ""
918
+ "hat einen Kommentar zu \"{comment_post_title}\" by {comment_author} "
919
+ "({comment_author_email}) genehmigt"
920
 
921
+ #: loggers/SimpleCommentsLogger.php:113
922
+ msgctxt "A comment was was unapproved"
923
+ msgid ""
924
+ "Unapproved a comment to \"{comment_post_title}\" by {comment_author} "
925
+ "({comment_author_email})"
926
+ msgstr ""
927
+ "hat einen Kommentar zu \"{comment_post_title}\" by {comment_author} "
928
+ "({comment_author_email}) verworfen"
929
 
930
+ #: loggers/SimpleCommentsLogger.php:119
931
+ msgctxt "A comment was marked as spam"
932
+ msgid "Marked a comment to post \"{comment_post_title}\" as spam"
933
+ msgstr ""
934
+ "hat einen Kommentar zum Beitrag \"{comment_post_title}\" als Spam "
935
+ "gekennzeichnet"
936
 
937
+ #: loggers/SimpleCommentsLogger.php:125
938
+ msgctxt "A comment was marked moved to the trash"
939
+ msgid ""
940
+ "Trashed a comment to \"{comment_post_title}\" by {comment_author} "
941
+ "({comment_author_email})"
942
+ msgstr ""
943
+ "hat einen Kommentar zu \"{comment_post_title}\" by {comment_author} "
944
+ "({comment_author_email}) in den Papierkorb verschoben"
945
 
946
+ #: loggers/SimpleCommentsLogger.php:131
947
+ msgctxt "A comment was restored from the trash"
948
+ msgid ""
949
+ "Restored a comment to \"{comment_post_title}\" by {comment_author} "
950
+ "({comment_author_email}) from the trash"
951
+ msgstr ""
952
+ "hat einen Kommentar zu \"{comment_post_title}\" von {comment_author} "
953
+ "({comment_author_email}) aus dem Papierkorb wiederhergestellt"
954
 
955
+ #: loggers/SimpleCommentsLogger.php:137
956
+ msgctxt "A comment was deleted"
957
+ msgid ""
958
+ "Deleted a comment to \"{comment_post_title}\" by {comment_author} "
959
+ "({comment_author_email})"
960
+ msgstr ""
961
+ "hat einen Kommentar zu \"{comment_post_title}\" by {comment_author} "
962
+ "({comment_author_email}) gelöscht"
963
 
964
+ #: loggers/SimpleCommentsLogger.php:143
965
+ msgctxt "A comment was edited"
966
+ msgid ""
967
+ "Edited a comment to \"{comment_post_title}\" by {comment_author} "
968
+ "({comment_author_email})"
969
+ msgstr ""
970
+ "hat einen Kommentar zu \"{comment_post_title}\" by {comment_author} "
971
+ "({comment_author_email}) geändert"
972
 
973
+ #: loggers/SimpleCommentsLogger.php:150
974
+ msgctxt "A trackback was added to the database by a non-logged in internet user"
975
+ msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
976
+ msgstr ""
977
+ "hat einen Trackback zu {comment_post_type} \"{comment_post_title}\" "
978
+ "hinzugefügt"
979
 
980
+ #: loggers/SimpleCommentsLogger.php:205
981
+ msgctxt "A trackback was added to the database by a non-logged in internet user"
982
+ msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
983
+ msgstr ""
984
+ "hat ein Pingback zu {comment_post_type} \"{comment_post_title}\" hinzugefügt"
985
 
986
+ #: loggers/SimpleCommentsLogger.php:156
987
+ msgctxt "A trackback was added to the database by a logged in user"
988
+ msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
989
+ msgstr ""
990
+ "hat einen Trackback zu {comment_post_type} \"{comment_post_title}\" "
991
+ "hinzugefügt"
992
 
993
+ #: loggers/SimpleCommentsLogger.php:162
994
+ msgctxt "A trackback was approved"
995
+ msgid ""
996
+ "Approved a trackback to \"{comment_post_title}\" by {comment_author} "
997
+ "({comment_author_email})"
998
+ msgstr ""
999
+ "hat einen Trackback zu \"{comment_post_title}\" by {comment_author} "
1000
+ "({comment_author_email}) genehmigt"
1001
 
1002
+ #: loggers/SimpleCommentsLogger.php:168
1003
+ msgctxt "A trackback was was unapproved"
1004
+ msgid ""
1005
+ "Unapproved a trackback to \"{comment_post_title}\" by {comment_author} "
1006
+ "({comment_author_email})"
1007
+ msgstr ""
1008
+ "hat einen Trackback zu \"{comment_post_title}\" by {comment_author} "
1009
+ "({comment_author_email}) verworfen"
1010
 
1011
+ #: loggers/SimpleCommentsLogger.php:174
1012
+ msgctxt "A trackback was marked as spam"
1013
+ msgid "Marked a trackback to post \"{comment_post_title}\" as spam"
1014
+ msgstr ""
1015
+ "hat einen Trackback zum Beitrag \"{comment_post_title}\" als Spam "
1016
+ "gekennzeichnet"
1017
 
1018
+ #: loggers/SimpleCommentsLogger.php:180
1019
+ msgctxt "A trackback was marked moved to the trash"
1020
+ msgid ""
1021
+ "Trashed a trackback to \"{comment_post_title}\" by {comment_author} "
1022
+ "({comment_author_email})"
1023
+ msgstr ""
1024
+ "hat einen Trackback zu \"{comment_post_title}\" by {comment_author} "
1025
+ "({comment_author_email}) in den Papierkorb verschoben"
1026
 
1027
+ #: loggers/SimpleCommentsLogger.php:186
1028
+ msgctxt "A trackback was restored from the trash"
1029
+ msgid ""
1030
+ "Restored a trackback to \"{comment_post_title}\" by {comment_author} "
1031
+ "({comment_author_email}) from the trash"
1032
+ msgstr ""
1033
+ "hat einen Trackback zu \"{comment_post_title}\" von {comment_author} "
1034
+ "({comment_author_email}) aus dem Papierkorb wiederhergestellt"
1035
 
1036
+ #: loggers/SimpleCommentsLogger.php:192
1037
+ msgctxt "A trackback was deleted"
1038
+ msgid ""
1039
+ "Deleted a trackback to \"{comment_post_title}\" by {comment_author} "
1040
+ "({comment_author_email})"
1041
+ msgstr ""
1042
+ "hat einen Trackback zu \"{comment_post_title}\" by {comment_author} "
1043
+ "({comment_author_email}) gelöscht"
1044
+
1045
+ #: loggers/SimpleCommentsLogger.php:198
1046
+ msgctxt "A trackback was edited"
1047
+ msgid ""
1048
+ "Edited a trackback to \"{comment_post_title}\" by {comment_author} "
1049
+ "({comment_author_email})"
1050
+ msgstr ""
1051
+ "hat einen Trackback zu \"{comment_post_title}\" by {comment_author} "
1052
+ "({comment_author_email}) geändert"
1053
 
1054
+ #: loggers/SimpleCommentsLogger.php:211
1055
+ msgctxt "A pingback was added to the database by a logged in user"
1056
+ msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
1057
+ msgstr ""
1058
+ "hat ein Pingback zu {comment_post_type} \"{comment_post_title}\" hinzugefügt"
1059
 
1060
+ #: loggers/SimpleCommentsLogger.php:217
1061
+ msgctxt "A pingback was approved"
1062
+ msgid ""
1063
+ "Approved a pingback to \"{comment_post_title}\" by "
1064
+ "\"{comment_author}\"\" ({comment_author_email})"
1065
+ msgstr ""
1066
+ "hat ein Pingback zu \"{comment_post_title}\" by "
1067
+ "\"{comment_author}\"\" ({comment_author_email}) genehmigt"
1068
 
1069
+ #: loggers/SimpleCommentsLogger.php:223
1070
+ msgctxt "A pingback was was unapproved"
1071
+ msgid ""
1072
+ "Unapproved a pingback to \"{comment_post_title}\" by "
1073
+ "\"{comment_author}\" ({comment_author_email})"
1074
+ msgstr ""
1075
+ "hat ein Pingback zu \"{comment_post_title}\" by "
1076
+ "\"{comment_author}\" ({comment_author_email}) verworfen"
1077
+
1078
+ #: loggers/SimpleCommentsLogger.php:229
1079
+ msgctxt "A pingback was marked as spam"
1080
+ msgid "Marked a pingback to post \"{comment_post_title}\" as spam"
1081
+ msgstr ""
1082
+ "hat ein Pingback zum Beitrag \"{comment_post_title}\" als Spam gekennzeichnet"
1083
+
1084
+ #: loggers/SimpleCommentsLogger.php:235
1085
+ msgctxt "A pingback was marked moved to the trash"
1086
+ msgid ""
1087
+ "Trashed a pingback to \"{comment_post_title}\" by {comment_author} "
1088
+ "({comment_author_email})"
1089
+ msgstr ""
1090
+ "hat ein Pingback zu \"{comment_post_title}\" by {comment_author} "
1091
+ "({comment_author_email}) in den Papierkorb verschoben"
1092
 
1093
+ #: loggers/SimpleCommentsLogger.php:241
1094
+ msgctxt "A pingback was restored from the trash"
1095
+ msgid ""
1096
+ "Restored a pingback to \"{comment_post_title}\" by {comment_author} "
1097
+ "({comment_author_email}) from the trash"
1098
+ msgstr ""
1099
+ "hat ein Pingback zu \"{comment_post_title}\" von {comment_author} "
1100
+ "({comment_author_email}) aus dem Papierkorb wiederhergestellt"
1101
+
1102
+ #: loggers/SimpleCommentsLogger.php:247
1103
+ msgctxt "A pingback was deleted"
1104
+ msgid ""
1105
+ "Deleted a pingback to \"{comment_post_title}\" by {comment_author} "
1106
+ "({comment_author_email})"
1107
+ msgstr ""
1108
+ "hat ein Pingback zu \"{comment_post_title}\" by {comment_author} "
1109
+ "({comment_author_email}) gelöscht"
1110
+
1111
+ #: loggers/SimpleCommentsLogger.php:253
1112
+ msgctxt "A pingback was edited"
1113
+ msgid ""
1114
+ "Edited a pingback to \"{comment_post_title}\" by {comment_author} "
1115
+ "({comment_author_email})"
1116
+ msgstr ""
1117
+ "hat ein Pingback zu \"{comment_post_title}\" by {comment_author} "
1118
+ "({comment_author_email}) geändert"
1119
+
1120
+ #: loggers/SimpleCommentsLogger.php:264
1121
+ msgctxt "Comments logger: search"
1122
+ msgid "Comments"
1123
+ msgstr "Kommentare"
1124
+
1125
+ #: loggers/SimpleCommentsLogger.php:265
1126
+ msgctxt "Comments logger: search"
1127
+ msgid "All comments activity"
1128
+ msgstr "Alle Kommentar-Aktivitäten"
1129
+
1130
+ #: loggers/SimpleCommentsLogger.php:267
1131
+ msgctxt "Comments logger: search"
1132
+ msgid "Added comments"
1133
+ msgstr "hinzugefügte Kommentare"
1134
+
1135
+ #: loggers/SimpleCommentsLogger.php:275
1136
+ msgctxt "Comments logger: search"
1137
+ msgid "Edited comments"
1138
+ msgstr "geänderte Kommentare"
1139
+
1140
+ #: loggers/SimpleCommentsLogger.php:280
1141
+ msgctxt "Comments logger: search"
1142
+ msgid "Approved comments"
1143
+ msgstr "genehmigte Kommentare"
1144
+
1145
+ #: loggers/SimpleCommentsLogger.php:285
1146
+ msgctxt "Comments logger: search"
1147
+ msgid "Held comments"
1148
+ msgstr "zurückgehaltene Kommentare"
1149
+
1150
+ #: loggers/SimpleCommentsLogger.php:290
1151
+ msgctxt "Comments logger: search"
1152
+ msgid "Comments status changed to spam"
1153
+ msgstr "als Spam markierte Kommentare"
1154
+
1155
+ #: loggers/SimpleCommentsLogger.php:295
1156
+ msgctxt "Comments logger: search"
1157
+ msgid "Trashed comments"
1158
+ msgstr "in den Papierkorb verschobene Kommentare "
1159
+
1160
+ #: loggers/SimpleCommentsLogger.php:300
1161
+ msgctxt "Comments logger: search"
1162
+ msgid "Untrashed comments"
1163
+ msgstr "wiederhergestellte Kommentare"
1164
+
1165
+ #: loggers/SimpleCommentsLogger.php:305
1166
+ msgctxt "Comments logger: search"
1167
+ msgid "Deleted comments"
1168
+ msgstr "gelöschte Kommentare"
1169
+
1170
+ #: loggers/SimpleCommentsLogger.php:602 loggers/SimpleCommentsLogger.php:615
1171
+ #: loggers/SimpleCommentsLogger.php:629
1172
+ msgctxt "comments logger - detailed output comment status"
1173
+ msgid "Status"
1174
+ msgstr "Status"
1175
+
1176
+ #: loggers/SimpleCommentsLogger.php:604 loggers/SimpleCommentsLogger.php:617
1177
+ #: loggers/SimpleCommentsLogger.php:631
1178
+ msgctxt "comments logger - detailed output author"
1179
+ msgid "Name"
1180
+ msgstr "Name"
1181
+
1182
+ #: loggers/SimpleCommentsLogger.php:605 loggers/SimpleCommentsLogger.php:618
1183
+ #: loggers/SimpleCommentsLogger.php:632
1184
+ msgctxt "comments logger - detailed output email"
1185
+ msgid "Email"
1186
+ msgstr "E-Mail"
1187
+
1188
+ #: loggers/SimpleCommentsLogger.php:606 loggers/SimpleCommentsLogger.php:619
1189
+ msgctxt "comments logger - detailed output content"
1190
+ msgid "Content"
1191
+ msgstr "Inhalt"
1192
+
1193
+ #: loggers/SimpleCommentsLogger.php:633
1194
+ msgctxt "comments logger - detailed output content"
1195
+ msgid "Comment"
1196
+ msgstr "Kommentar"
1197
+
1198
+ #: loggers/SimpleCommentsLogger.php:759
1199
+ msgctxt "comments logger - edit comment"
1200
+ msgid "View/Edit"
1201
+ msgstr "Betrachte/Ändere"
1202
+
1203
+ #: loggers/SimpleCoreUpdatesLogger.php:34
1204
+ msgctxt "User logger: search"
1205
+ msgid "WordPress Core"
1206
+ msgstr "WordPress-Kern"
1207
+
1208
+ #: loggers/SimpleCoreUpdatesLogger.php:36
1209
+ msgctxt "User logger: search"
1210
+ msgid "WordPress core updates"
1211
+ msgstr "WordPress-Kern-Aktualisierungen"
1212
+
1213
+ #: loggers/SimpleUserLogger.php:54
1214
+ msgctxt "User logger: search"
1215
+ msgid "Users"
1216
+ msgstr "Benutzer"
1217
+
1218
+ #: loggers/SimpleUserLogger.php:55
1219
+ msgctxt "User logger: search"
1220
+ msgid "All user activity"
1221
+ msgstr "Alle Benutzer-Aktivitäten"
1222
+
1223
+ #: loggers/SimpleUserLogger.php:57
1224
+ msgctxt "User logger: search"
1225
+ msgid "Successful user logins"
1226
+ msgstr "erfolgreiche Benutzer-Anmeldungen"
1227
+
1228
+ #: loggers/SimpleUserLogger.php:61
1229
+ msgctxt "User logger: search"
1230
+ msgid "Failed user logins"
1231
+ msgstr "fehlgeschlagene Benutzer-Anmeldungen"
1232
+
1233
+ #: loggers/SimpleUserLogger.php:65
1234
+ msgctxt "User logger: search"
1235
+ msgid "User logouts"
1236
+ msgstr "Benutzer-Abmeldungen"
1237
+
1238
+ #: loggers/SimpleUserLogger.php:68
1239
+ msgctxt "User logger: search"
1240
+ msgid "Created users"
1241
+ msgstr "Benutzer erzeugt"
1242
+
1243
+ #: loggers/SimpleUserLogger.php:71
1244
+ msgctxt "User logger: search"
1245
+ msgid "User profile updates"
1246
+ msgstr "Benutzerprofil-Aktualisierungen"
1247
+
1248
+ #: loggers/SimpleUserLogger.php:74
1249
+ msgctxt "User logger: search"
1250
+ msgid "User deletions"
1251
+ msgstr "Löschungen von Benutzern"
1252
+
1253
+ #: loggers/SimpleExportLogger.php:27
1254
+ msgctxt "Export logger: search"
1255
+ msgid "Export"
1256
+ msgstr "Export"
1257
+
1258
+ #: loggers/SimpleExportLogger.php:29
1259
+ msgctxt "Export logger: search"
1260
+ msgid "Created exports"
1261
+ msgstr "erstellte Exporte"
1262
+
1263
+ #: loggers/SimpleLogger.php:190
1264
+ msgctxt "header output when initiator is the currently logged in user"
1265
+ msgid "You"
1266
+ msgstr "Dein eigener Benutzername"
1267
+
1268
+ #: loggers/SimpleMediaLogger.php:29
1269
+ msgctxt "Media logger: search"
1270
+ msgid "Media"
1271
+ msgstr "Medien-Dateien"
1272
+
1273
+ #: loggers/SimpleMediaLogger.php:31
1274
+ msgctxt "Media logger: search"
1275
+ msgid "Added media"
1276
+ msgstr "hinzugefügte Medien-Dateien"
1277
+
1278
+ #: loggers/SimpleMediaLogger.php:34
1279
+ msgctxt "Media logger: search"
1280
+ msgid "Updated media"
1281
+ msgstr "aktualsierte Medien-Dateien"
1282
+
1283
+ #: loggers/SimpleMediaLogger.php:37
1284
+ msgctxt "Media logger: search"
1285
+ msgid "Deleted media"
1286
+ msgstr "gelöschte Medien-Dateien"
1287
+
1288
+ #: loggers/SimpleMenuLogger.php:31
1289
+ msgctxt "Menu logger: search"
1290
+ msgid "Menus"
1291
+ msgstr "Menüs"
1292
+
1293
+ #: loggers/SimpleMenuLogger.php:33
1294
+ msgctxt "Menu updates logger: search"
1295
+ msgid "Created menus"
1296
+ msgstr "erstellte Menüs"
1297
+
1298
+ #: loggers/SimpleMenuLogger.php:36
1299
+ msgctxt "Menu updates logger: search"
1300
+ msgid "Edited menus"
1301
+ msgstr "geänderte Menüs"
1302
+
1303
+ #: loggers/SimpleMenuLogger.php:41
1304
+ msgctxt "Menu updates logger: search"
1305
+ msgid "Deleted menus"
1306
+ msgstr "gelöschte Menüs"
1307
+
1308
+ #: loggers/SimpleMenuLogger.php:326
1309
+ msgctxt "menu logger"
1310
+ msgid "%1$s menu item added"
1311
+ msgid_plural "%1$s menu items added"
1312
+ msgstr[0] "%1$s hinzugefügter Menü-Eintrag"
1313
+ msgstr[1] "%1$s hinzugefügte Menü-Einträge"
1314
+
1315
+ #: loggers/SimpleMenuLogger.php:333
1316
+ msgctxt "menu logger"
1317
+ msgid "%1$s menu item removed"
1318
+ msgid_plural "%1$s menu items removed"
1319
+ msgstr[0] "%1$s entfernter Menü-Eintrag"
1320
+ msgstr[1] "%1$s entfernte Menü-Einträge"
1321
+
1322
+ #: loggers/SimpleOptionsLogger.php:153
1323
+ msgctxt "Options logger: search"
1324
+ msgid "Options"
1325
+ msgstr "Optionen"
1326
+
1327
+ #: loggers/SimpleOptionsLogger.php:155
1328
+ msgctxt "Options logger: search"
1329
+ msgid "Changed options"
1330
+ msgstr "geänderte Optionen"
1331
+
1332
+ #: loggers/SimplePluginLogger.php:51
1333
+ msgctxt "Plugin was non-silently activated by a user"
1334
+ msgid "Activated plugin \"{plugin_name}\""
1335
+ msgstr "hat Plugin \"{plugin_name}\" aktiviert"
1336
+
1337
+ #: loggers/SimplePluginLogger.php:57
1338
+ msgctxt "Plugin was non-silently deactivated by a user"
1339
+ msgid "Deactivated plugin \"{plugin_name}\""
1340
+ msgstr "hat Plugin \"{plugin_name}\" deaktiviert"
1341
+
1342
+ #: loggers/SimplePluginLogger.php:63
1343
+ msgctxt "Plugin was installed"
1344
+ msgid "Installed plugin \"{plugin_name}\""
1345
+ msgstr "hat Plugin \"{plugin_name}\" installiert"
1346
+
1347
+ #: loggers/SimplePluginLogger.php:69
1348
+ msgctxt "Plugin failed to install"
1349
+ msgid "Failed to install plugin \"{plugin_name}\""
1350
+ msgstr "hat vergeblich versucht, das Plugin \"{plugin_name}\" zu installieren"
1351
+
1352
+ #: loggers/SimplePluginLogger.php:75
1353
+ msgctxt "Plugin was updated"
1354
+ msgid ""
1355
+ "Updated plugin \"{plugin_name}\" to version {plugin_version} from "
1356
+ "{plugin_prev_version}"
1357
+ msgstr ""
1358
+ "hat Plugin \"{plugin_name}\" auf Version {plugin_version} von "
1359
+ "{plugin_prev_version} aktualisiert"
1360
+
1361
+ #: loggers/SimplePluginLogger.php:81
1362
+ msgctxt "Plugin update failed"
1363
+ msgid "Updated plugin \"{plugin_name}\""
1364
+ msgstr "hat Plugin \"{plugin_name}\" aktualisiert"
1365
+
1366
+ #: loggers/SimplePluginLogger.php:87
1367
+ msgctxt "Plugin file edited"
1368
+ msgid "Edited plugin file \"{plugin_edited_file}\""
1369
+ msgstr "hat die Plugin-Datei \"{plugin_edited_file}\" geändert"
1370
+
1371
+ #: loggers/SimplePluginLogger.php:93
1372
+ msgctxt "Plugin files was deleted"
1373
+ msgid "Deleted plugin \"{plugin_name}\""
1374
+ msgstr "hat Plugin \"{plugin_name}\" gelöscht"
1375
+
1376
+ #: loggers/SimplePluginLogger.php:100
1377
+ msgctxt "Plugin was updated in bulk"
1378
+ msgid ""
1379
+ "Updated plugin \"{plugin_name}\" to {plugin_version} from "
1380
+ "{plugin_prev_version}"
1381
+ msgstr ""
1382
+ "hat Plugin \"{plugin_name}\" auf {plugin_version} von {plugin_prev_version} "
1383
+ "aktualisiert"
1384
+
1385
+ #: loggers/SimplePluginLogger.php:108
1386
+ msgctxt "Plugin logger: search"
1387
+ msgid "Plugins"
1388
+ msgstr "Plugins"
1389
+
1390
+ #: loggers/SimplePluginLogger.php:110
1391
+ msgctxt "Plugin logger: search"
1392
+ msgid "Activated plugins"
1393
+ msgstr "aktivierte Plugins"
1394
+
1395
+ #: loggers/SimplePluginLogger.php:113
1396
+ msgctxt "Plugin logger: search"
1397
+ msgid "Deactivated plugins"
1398
+ msgstr "deaktivierte Plugins"
1399
+
1400
+ #: loggers/SimplePluginLogger.php:116
1401
+ msgctxt "Plugin logger: search"
1402
+ msgid "Installed plugins"
1403
+ msgstr "installierte Plugins"
1404
+
1405
+ #: loggers/SimplePluginLogger.php:119
1406
+ msgctxt "Plugin logger: search"
1407
+ msgid "Failed plugin installs"
1408
+ msgstr "fehlgeschlagene Plugin-Installationen"
1409
+
1410
+ #: loggers/SimplePluginLogger.php:122
1411
+ msgctxt "Plugin logger: search"
1412
+ msgid "Updated plugins"
1413
+ msgstr "aktualisierte Plugins"
1414
+
1415
+ #: loggers/SimplePluginLogger.php:126
1416
+ msgctxt "Plugin logger: search"
1417
+ msgid "Failed plugin updates"
1418
+ msgstr "fehlgeschlagene Plugin-Updates"
1419
+
1420
+ #: loggers/SimplePluginLogger.php:129
1421
+ msgctxt "Plugin logger: search"
1422
+ msgid "Edited plugin files"
1423
+ msgstr "geänderte Plugin-Dateien"
1424
+
1425
+ #: loggers/SimplePluginLogger.php:132
1426
+ msgctxt "Plugin logger: search"
1427
+ msgid "Deleted plugins"
1428
+ msgstr "gelöschte Plugins"
1429
+
1430
+ #: loggers/SimplePluginLogger.php:887
1431
+ msgctxt "plugin logger - detailed output version"
1432
+ msgid "Version"
1433
+ msgstr "Version"
1434
+
1435
+ #: loggers/SimplePluginLogger.php:889
1436
+ msgctxt "plugin logger - detailed output author"
1437
+ msgid "Author"
1438
+ msgstr "Autor"
1439
+
1440
+ #: loggers/SimplePluginLogger.php:891
1441
+ msgctxt "plugin logger - detailed output author"
1442
+ msgid "Requires"
1443
+ msgstr "erfordert"
1444
+
1445
+ #: loggers/SimplePluginLogger.php:890
1446
+ msgctxt "plugin logger - detailed output url"
1447
+ msgid "URL"
1448
+ msgstr "URL"
1449
+
1450
+ #: loggers/SimplePluginLogger.php:892
1451
+ msgctxt "plugin logger - detailed output compatible"
1452
+ msgid "Compatible up to"
1453
+ msgstr "kompatibel bis zu"
1454
+
1455
+ #: loggers/SimplePluginLogger.php:893
1456
+ msgctxt "plugin logger - detailed output downloaded"
1457
+ msgid "Downloads"
1458
+ msgstr "Downloads"
1459
+
1460
+ #: loggers/SimplePluginLogger.php:953
1461
+ msgctxt "plugin logger: plugin info thickbox title view all info"
1462
+ msgid "View plugin info"
1463
+ msgstr "Zeige Plugin-Info"
1464
+
1465
+ #: loggers/SimplePluginLogger.php:968
1466
+ msgctxt "plugin logger: plugin info thickbox title"
1467
+ msgid "View plugin info"
1468
+ msgstr "Zeige Plugin-Info"
1469
+
1470
+ #: loggers/SimplePluginLogger.php:972
1471
+ msgctxt "plugin logger: plugin info thickbox title"
1472
+ msgid "View changelog"
1473
+ msgstr "Zeige Changelog"
1474
+
1475
+ #: loggers/SimplePostLogger.php:38
1476
+ msgctxt "Post logger: search"
1477
+ msgid "Posts & Pages"
1478
+ msgstr "Beiträge & Seiten"
1479
+
1480
+ #: loggers/SimplePostLogger.php:40
1481
+ msgctxt "Post logger: search"
1482
+ msgid "Posts created"
1483
+ msgstr "erzeugte Beiträge"
1484
+
1485
+ #: loggers/SimplePostLogger.php:43
1486
+ msgctxt "Post logger: search"
1487
+ msgid "Posts updated"
1488
+ msgstr "aktualisierte Beiträge"
1489
+
1490
+ #: loggers/SimplePostLogger.php:46
1491
+ msgctxt "Post logger: search"
1492
+ msgid "Posts trashed"
1493
+ msgstr "In den Papierkorb verschobene Beiträge"
1494
+
1495
+ #: loggers/SimplePostLogger.php:49
1496
+ msgctxt "Post logger: search"
1497
+ msgid "Posts deleted"
1498
+ msgstr "gelöschte Beiträge"
1499
+
1500
+ #: loggers/SimplePostLogger.php:52
1501
+ msgctxt "Post logger: search"
1502
+ msgid "Posts restored"
1503
+ msgstr "wiederhergestellte Beiträge"
1504
+
1505
+ #: loggers/SimpleThemeLogger.php:36
1506
+ msgctxt "Theme logger: search"
1507
+ msgid "Themes & Widgets"
1508
+ msgstr "Themes & Widgets"
1509
+
1510
+ #: loggers/SimpleThemeLogger.php:38
1511
+ msgctxt "Theme logger: search"
1512
+ msgid "Switched themes"
1513
+ msgstr "gewechselte Themes"
1514
+
1515
+ #: loggers/SimpleThemeLogger.php:41
1516
+ msgctxt "Theme logger: search"
1517
+ msgid "Changed appearance of themes"
1518
+ msgstr "geänderte Erscheinungsbilder von Themes"
1519
+
1520
+ #: loggers/SimpleThemeLogger.php:44
1521
+ msgctxt "Theme logger: search"
1522
+ msgid "Added widgets"
1523
+ msgstr "hinzugefügte Widgets"
1524
+
1525
+ #: loggers/SimpleThemeLogger.php:47
1526
+ msgctxt "Theme logger: search"
1527
+ msgid "Removed widgets"
1528
+ msgstr "entfernte Widgets"
1529
+
1530
+ #: loggers/SimpleThemeLogger.php:50
1531
+ msgctxt "Theme logger: search"
1532
+ msgid "Changed widgets order"
1533
+ msgstr "umsortierte Widgets"
1534
+
1535
+ #: loggers/SimpleThemeLogger.php:53
1536
+ msgctxt "Theme logger: search"
1537
+ msgid "Edited widgets"
1538
+ msgstr "geänderte Widgets"
1539
+
1540
+ #: loggers/SimpleThemeLogger.php:56
1541
+ msgctxt "Theme logger: search"
1542
+ msgid "Background of themes changed"
1543
+ msgstr "geänderte Theme-Hintergründe"
1544
+
1545
+ #: loggers/SimpleUserLogger.php:36
1546
+ msgctxt "User destroys other login sessions for themself"
1547
+ msgid "Logged out from all other sessions"
1548
+ msgstr "hat sich von allen anderen Sitzungen abgemeldet"
1549
+
1550
+ #: loggers/SimpleUserLogger.php:45
1551
+ msgctxt "User destroys all login sessions for a user"
1552
+ msgid "Logged out \"{user_display_name}\" from all sessions"
1553
+ msgstr "hat den Benutzer \"{user_display_name}\" von allen Sitzungen abgemeldet"
1554
+
1555
+ #: templates/settings-statsRowsPerDay.php:36
1556
+ msgctxt "stats: date in rows per day chart"
1557
+ msgid "M j"
1558
+ msgstr "M j"
1559
+
1560
+ #~ msgid "Filter"
1561
+ #~ msgstr "Filter"
1562
+
1563
+ #~ msgid "+%1$s more"
1564
+ #~ msgstr "+%1$s mehr"
1565
+
1566
+ #~ msgid "%1$d event today from one user."
1567
+ #~ msgstr "%1$d Ereignis heute von einem Benutzer."
1568
+
1569
+ #~ msgid "History"
1570
+ #~ msgstr "Historie"
1571
+
1572
+ #~ msgid "This is potentially useful meta data that a logger have saved."
1573
+ #~ msgstr ""
1574
+ #~ "Dies sind potentiell nützliche Meta-Daten, die ein Logger abgespeichert "
1575
+ #~ "hat."
1576
+
1577
+ #~ msgid ""
1578
+ #~ "Failed to login with username \"{failed_login_username}\" because no user "
1579
+ #~ "with that username exist"
1580
+ #~ msgstr ""
1581
+ #~ "Anmeldung mit dem Benutzernamen \"{failed_login_username}\" "
1582
+ #~ "fehlgeschlagen, weil kein Benutzer mit diesem Namen existiert"
languages/simple-history-nl_NL.mo ADDED
Binary file
languages/simple-history-nl_NL.po ADDED
@@ -0,0 +1,1527 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2015 Simple History
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-26 15:41:57+00:00\n"
8
+ "PO-Revision-Date: 2015-01-28 15:04+0100\n"
9
+ "Last-Translator: Niko Strijbol <strijbol.niko@gmail.com>\n"
10
+ "Language-Team: Niko Strijbol <strijbol.niko@gmail.com>\n"
11
+ "Language: nl\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.4\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"
19
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
+ "X-Poedit-SourceCharset: UTF-8\n"
21
+ "X-Poedit-Basepath: ../\n"
22
+ "X-Textdomain-Support: yes\n"
23
+ "X-Poedit-SearchPath-0: .\n"
24
+
25
+ #: SimpleHistory.php:504 SimpleHistory.php:765
26
+ msgid "Settings"
27
+ msgstr "Instellingen"
28
+
29
+ #: SimpleHistory.php:515
30
+ msgid "Log (debug)"
31
+ msgstr "Log (debug)"
32
+
33
+ #: SimpleHistory.php:520
34
+ msgid "Styles example (debug)"
35
+ msgstr "Stijlvoorbeelden (debug)"
36
+
37
+ #. Plugin Name of the plugin/theme
38
+ #: SimpleHistory.php:780
39
+ msgid "Simple History"
40
+ msgstr "Simple History"
41
+
42
+ #: SimpleHistory.php:856
43
+ msgid "Remove all log items?"
44
+ msgstr "Alle logitems verwijderen?"
45
+
46
+ #: SimpleHistory.php:858
47
+ msgid "Go to the first page"
48
+ msgstr "Ga naar de eerste pagina"
49
+
50
+ #: SimpleHistory.php:859
51
+ msgid "Go to the previous page"
52
+ msgstr "Ga naar de vorige pagina"
53
+
54
+ #: SimpleHistory.php:860
55
+ msgid "Go to the next page"
56
+ msgstr "Ga naar de volgende pagina"
57
+
58
+ #: SimpleHistory.php:861
59
+ msgid "Go to the last page"
60
+ msgstr "Ga naar de laatste pagina"
61
+
62
+ #: SimpleHistory.php:862
63
+ msgid "Current page"
64
+ msgstr "Huidige pagina"
65
+
66
+ #: SimpleHistory.php:864
67
+ msgid "Oups, the log could not be loaded right now."
68
+ msgstr "Oeps, de log kon niet geladen worden."
69
+
70
+ #: SimpleHistory.php:865
71
+ msgid "Your search did not match any history events."
72
+ msgstr "Er kwamen geen geschiedenisevents overeen met je zoekopdracht"
73
+
74
+ #: SimpleHistory.php:1149 SimpleHistory.php:1250
75
+ msgid "Simple History Settings"
76
+ msgstr "Simple History-instellingen"
77
+
78
+ #: SimpleHistory.php:1183
79
+ msgid "No valid callback found"
80
+ msgstr "Geen geldige callback gevonden."
81
+
82
+ #: SimpleHistory.php:1271
83
+ msgid "Cleared database"
84
+ msgstr "Database leeggemaakt"
85
+
86
+ #: SimpleHistory.php:1298
87
+ msgid "Show history"
88
+ msgstr "Geschiedenis tonen"
89
+
90
+ #: SimpleHistory.php:1311
91
+ msgid "Number of items per page"
92
+ msgstr "Aantal items per pagina"
93
+
94
+ #: SimpleHistory.php:1323
95
+ msgid "Clear log"
96
+ msgstr "Log wissen"
97
+
98
+ #: SimpleHistory.php:1462
99
+ msgid "on the dashboard"
100
+ msgstr "op het dashboard"
101
+
102
+ #: SimpleHistory.php:1467
103
+ msgid "as a page under the dashboard menu"
104
+ msgstr "als een pagina onder het dashboardmenu"
105
+
106
+ #: SimpleHistory.php:1483
107
+ msgid "Items in the database are automatically removed after %1$s days."
108
+ msgstr "Items in de database worden automatisch verwijderd na %1$s dagen."
109
+
110
+ #: SimpleHistory.php:1485
111
+ msgid "Items in the database are kept forever."
112
+ msgstr "Items in de database worden voor eeuwig bijgehouden."
113
+
114
+ #: SimpleHistory.php:1489
115
+ msgid "Clear log now"
116
+ msgstr "Log nu wissen"
117
+
118
+ #: SimpleHistory.php:1533
119
+ msgid "The log for Simple History was cleared ({num_rows} rows were removed)."
120
+ msgstr ""
121
+ "De log voor Simple History is gewist ([num_rows} rijen werden verwijderd)."
122
+
123
+ #: SimpleHistory.php:1793
124
+ msgid "+%1$s similar event"
125
+ msgid_plural "+%1$s similar events"
126
+ msgstr[0] "+%1$s gelijkaardige gebeurtenis"
127
+ msgstr[1] "+%1$s gelijkaardige gebeurtenissen"
128
+
129
+ #: SimpleHistory.php:1800
130
+ msgid "Loading…"
131
+ msgstr "Laden…"
132
+
133
+ #: SimpleHistory.php:1807
134
+ msgid "Showing %1$s more"
135
+ msgstr "%1$s meer tonen"
136
+
137
+ #: SimpleHistory.php:1826
138
+ msgid "Context data"
139
+ msgstr "Contextdata"
140
+
141
+ #: SimpleHistory.php:1827
142
+ msgid "This is potentially useful meta data that a logger has saved."
143
+ msgstr "Dit is potentieel bruikbare metadata die de logger opgeslagen heeft."
144
+
145
+ #: SimpleHistory.php:2302
146
+ msgid "No events today so far."
147
+ msgstr "Nog geen events vandaag."
148
+
149
+ #: SimpleHistory.php:2321
150
+ msgid "One event today from one user."
151
+ msgstr "Een gebeurtenis vandaag van een gebruiker."
152
+
153
+ #: SimpleHistory.php:2327
154
+ msgid "One event today from one source."
155
+ msgstr "Een gebeurtenis vandaag van een bron."
156
+
157
+ #: SimpleHistory.php:2333
158
+ msgid "%1$d events today from one user."
159
+ msgstr "%1$d events vandaag van een gebruiker."
160
+
161
+ #: SimpleHistory.php:2339
162
+ msgid "%1$d events today from %2$d users."
163
+ msgstr "%1$d events vandaag van %2$d gebruikers."
164
+
165
+ #: SimpleHistory.php:2345 SimpleHistory.php:2351
166
+ msgid "%1$d events today from one user and one other source."
167
+ msgstr "%1$d gebeurtenissen vandaag van een gebruiker en een andere bron."
168
+
169
+ #: SimpleHistory.php:2357
170
+ msgid "%1$d events today from one user and %3$d other sources."
171
+ msgstr "%1$d gebeurtenissen vandaag van een gebruiker en %3$d andere bronnen."
172
+
173
+ #: SimpleHistory.php:2363
174
+ msgid "%1$s events today from %2$d users and %3$d other sources."
175
+ msgstr "%1$d gebeurtenissen vandaag van %2$d gebruikers en %3$d andere bronnen."
176
+
177
+ #: dropins/SimpleHistoryDonateDropin.php:36
178
+ msgid "Donate"
179
+ msgstr "Doneren"
180
+
181
+ #: dropins/SimpleHistoryDonateDropin.php:72
182
+ msgid ""
183
+ "If you find Simple History useful please <a href=\"%1$s\">donate</a> or <a "
184
+ "href=\"%2$s\">buy me something from my Amazon wish list</a>."
185
+ msgstr ""
186
+ "Als je Simple History nuttig vindt, gelieve dan <a href=\"%1$s\">te doneren</"
187
+ "a> of <a href=\"%2$s\">iets van mijn Amazon-verlanglijst te kopen.</a>."
188
+
189
+ #: dropins/SimpleHistoryFilterDropin.php:44
190
+ msgid "Filter history"
191
+ msgstr "Geschiedenis filteren"
192
+
193
+ #: dropins/SimpleHistoryFilterDropin.php:48
194
+ #: dropins/SimpleHistoryFilterDropin.php:159
195
+ msgid "Search events"
196
+ msgstr "Zoek evenementen"
197
+
198
+ #: dropins/SimpleHistoryFilterDropin.php:56
199
+ msgid "All log levels"
200
+ msgstr "Alle logniveau's"
201
+
202
+ #: dropins/SimpleHistoryFilterDropin.php:70
203
+ msgid "All messages"
204
+ msgstr "Alle berichten"
205
+
206
+ #: dropins/SimpleHistoryFilterDropin.php:124
207
+ msgid "All users"
208
+ msgstr "Alle gebruikers"
209
+
210
+ #: dropins/SimpleHistoryFilterDropin.php:145
211
+ msgid "All dates"
212
+ msgstr "Alle datums"
213
+
214
+ #: dropins/SimpleHistoryFilterDropin.php:168
215
+ msgid "Search"
216
+ msgstr "Zoeken"
217
+
218
+ #: dropins/SimpleHistoryNewRowsNotifier.php:80
219
+ msgid "1 new row"
220
+ msgid_plural "%d new rows"
221
+ msgstr[0] "1 nieuwe rij"
222
+ msgstr[1] "%d nieuwe rijen"
223
+
224
+ #: dropins/SimpleHistoryRSSDropin.php:55
225
+ msgid "Address"
226
+ msgstr "Adres"
227
+
228
+ #: dropins/SimpleHistoryRSSDropin.php:64
229
+ msgid "Regenerate"
230
+ msgstr "Hergenereren"
231
+
232
+ #: dropins/SimpleHistoryRSSDropin.php:81
233
+ msgid "Created new secret RSS address"
234
+ msgstr "Maak nieuw geheim RSS-adres"
235
+
236
+ #: dropins/SimpleHistoryRSSDropin.php:148
237
+ #: dropins/SimpleHistoryRSSDropin.php:259
238
+ msgid "History for %s"
239
+ msgstr "Geschiedenis voor %s"
240
+
241
+ #: dropins/SimpleHistoryRSSDropin.php:149
242
+ #: dropins/SimpleHistoryRSSDropin.php:260
243
+ msgid "WordPress History for %s"
244
+ msgstr "WordPress-geschiedenis voor %s"
245
+
246
+ #: dropins/SimpleHistoryRSSDropin.php:196
247
+ msgid "+%1$s occasion"
248
+ msgid_plural "+%1$s occasions"
249
+ msgstr[0] "+%1$s gelegenheid"
250
+ msgstr[1] "+%1$s gelegenheden"
251
+
252
+ #: dropins/SimpleHistoryRSSDropin.php:263
253
+ msgid "Wrong RSS secret"
254
+ msgstr "Verkeerd RSS-geheim"
255
+
256
+ #: dropins/SimpleHistoryRSSDropin.php:264
257
+ msgid ""
258
+ "Your RSS secret for Simple History RSS feed is wrong. Please see WordPress "
259
+ "settings for current link to the RSS feed."
260
+ msgstr ""
261
+ "Je RSS-geheim voor de RSS-feed van Simple History is verkeerd. Gelieve de "
262
+ "WordPress-instellingen te bekijken voor de huidige link naar de RSS-feed."
263
+
264
+ #: dropins/SimpleHistoryRSSDropin.php:315
265
+ msgid ""
266
+ "You can generate a new address for the RSS feed. This is useful if you think "
267
+ "that the address has fallen into the wrong hands."
268
+ msgstr ""
269
+ "Je kan een nieuw adres voor de RSS-feed genereren. Dit is handig als je denkt "
270
+ "dat het adres in de verkeerde handen gevallen is."
271
+
272
+ #: dropins/SimpleHistoryRSSDropin.php:318
273
+ msgid "Generate new address"
274
+ msgstr "Genereer nieuw adres"
275
+
276
+ #: dropins/SimpleHistoryRSSDropin.php:346
277
+ msgid ""
278
+ "Simple History has a RSS feed which you can subscribe to and receive log "
279
+ "updates. Make sure you only share the feed with people you trust, since it "
280
+ "can contain sensitive or confidential information."
281
+ msgstr ""
282
+ "Simple History heeft een RSS-feed waarop je je kan abonneren om log-updates "
283
+ "te ontvangen. Deel de feed enkel met mensen die je vertrouwt, want deze kan "
284
+ "vertrouwelijke of gevoelige informatie bevatten."
285
+
286
+ #: dropins/SimpleHistorySettingsLogtestDropin.php:20
287
+ msgid "Test data (debug)"
288
+ msgstr "Testdata (debug)"
289
+
290
+ #: dropins/SimpleHistorySettingsStatsDropin.php:27
291
+ msgid "Stats"
292
+ msgstr "Statistieken"
293
+
294
+ #: dropins/SimpleHistorySidebarDropin.php:159 loggers/SimpleLogger.php:296
295
+ msgid "Just now"
296
+ msgstr "Nu juist"
297
+
298
+ #: index.php:59
299
+ msgid ""
300
+ "Simple History is a great plugin, but to use it your server must have at "
301
+ "least PHP 5.3 installed (you have version %s)."
302
+ msgstr ""
303
+ "Simple History is een fantastische plug-in, maar je server moet minstens PHP "
304
+ "5.3 hebben om het te kunnen gebruiken (je hebt versie %s)."
305
+
306
+ #: loggers/SimpleCommentsLogger.php:685
307
+ msgid "Spam"
308
+ msgstr "Spam"
309
+
310
+ #: loggers/SimpleCommentsLogger.php:687
311
+ msgid "Approved"
312
+ msgstr "Goedgekeurd"
313
+
314
+ #: loggers/SimpleCommentsLogger.php:689
315
+ msgid "Pending"
316
+ msgstr "In behandeling"
317
+
318
+ #: loggers/SimpleCommentsLogger.php:703
319
+ msgid "Trackback"
320
+ msgstr "Trackback"
321
+
322
+ #: loggers/SimpleCommentsLogger.php:705
323
+ msgid "Pingback"
324
+ msgstr "Pingback"
325
+
326
+ #: loggers/SimpleCommentsLogger.php:707
327
+ msgid "Comment"
328
+ msgstr "Reactie"
329
+
330
+ #: loggers/SimpleCoreUpdatesLogger.php:29
331
+ msgid "Updated WordPress from {prev_version} to {new_version}"
332
+ msgstr "WordPress bijgewerkt van {prev_version} tot {new_version}"
333
+
334
+ #: loggers/SimpleCoreUpdatesLogger.php:30
335
+ msgid "WordPress auto-updated from {prev_version} to {new_version}"
336
+ msgstr "WordPress automatisch bijgewerkt van {prev_version} tot {new_version}"
337
+
338
+ #: loggers/SimpleExportLogger.php:23
339
+ msgid "Created XML export"
340
+ msgstr "XML-export gemaakt"
341
+
342
+ #: loggers/SimpleLegacyLogger.php:88
343
+ msgid "By %s"
344
+ msgstr "Door %s"
345
+
346
+ #: loggers/SimpleLegacyLogger.php:93
347
+ msgid "%d occasions"
348
+ msgstr "%d gelegenheden"
349
+
350
+ #: loggers/SimpleLogger.php:203
351
+ msgid "Deleted user (had id %1$s, email %2$s, login %3$s)"
352
+ msgstr "Gebruiker verwijderd (had id %1$s, e-mail %2$s, login %3$s)"
353
+
354
+ #: loggers/SimpleLogger.php:218
355
+ msgid "Anonymous web user"
356
+ msgstr "Anonieme webgebruiker"
357
+
358
+ #: loggers/SimpleLogger.php:226
359
+ msgid "Anonymous user from %1$s"
360
+ msgstr "Anonieme gebruiker van %1$s"
361
+
362
+ #. translators: Date format for log row header, see http:php.net/date
363
+ #: loggers/SimpleLogger.php:301
364
+ msgid "M j, Y \\a\\t G:i"
365
+ msgstr "M j, Y \\a\\t G:i"
366
+
367
+ #. translators: 1: last modified date and time in human time diff-format
368
+ #: loggers/SimpleLogger.php:309
369
+ msgid "%1$s ago"
370
+ msgstr "%1$s geleden"
371
+
372
+ #: loggers/SimpleMediaLogger.php:23
373
+ msgid "Created {post_type} \"{attachment_title}\""
374
+ msgstr " {post_type} \"{attachment_title}\" aangemaakt"
375
+
376
+ #: loggers/SimpleMediaLogger.php:24
377
+ msgid "Edited {post_type} \"{attachment_title}\""
378
+ msgstr "{post_type} \"{attachment_title}\" bijgewerkt"
379
+
380
+ #: loggers/SimpleMediaLogger.php:25
381
+ msgid "Deleted {post_type} \"{attachment_title}\" (\"{attachment_filename}\")"
382
+ msgstr ""
383
+ " {post_type} \"{attachment_title}\" (\"{attachment_filename}\") verwijderd"
384
+
385
+ #: loggers/SimpleMediaLogger.php:81
386
+ msgid "Edited {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
387
+ msgstr ""
388
+ "{post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a> bijgewerkt"
389
+
390
+ #: loggers/SimpleMediaLogger.php:85
391
+ msgid "Uploaded {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
392
+ msgstr "{post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a> geüpload"
393
+
394
+ #: loggers/SimpleMediaLogger.php:197
395
+ msgid "{attachment_thumb}"
396
+ msgstr "{attachment_thumb}"
397
+
398
+ #: loggers/SimpleMediaLogger.php:206
399
+ msgid "{attachment_size_format}"
400
+ msgstr "{attachment_size_format}"
401
+
402
+ #: loggers/SimpleMediaLogger.php:207
403
+ msgid "{attachment_filetype_extension}"
404
+ msgstr "{attachment_filetype_extension}"
405
+
406
+ #: loggers/SimpleMediaLogger.php:209
407
+ msgid "{full_image_width} × {full_image_height}"
408
+ msgstr "{full_image_width} × {full_image_height}"
409
+
410
+ #: loggers/SimpleMenuLogger.php:23
411
+ msgid "Created menu \"{menu_name}\""
412
+ msgstr "Menu \"{menu_name}\" aangemaakt"
413
+
414
+ #: loggers/SimpleMenuLogger.php:24
415
+ msgid "Edited menu \"{menu_name}\""
416
+ msgstr "Menu \"{menu_name}\" bijgewerkt"
417
+
418
+ #: loggers/SimpleMenuLogger.php:25
419
+ msgid "Deleted menu \"{menu_name}\""
420
+ msgstr "Menu \"{menu_name}\" verwijderd"
421
+
422
+ #: loggers/SimpleMenuLogger.php:26
423
+ msgid "Edited a menu item"
424
+ msgstr "Een menu-item bijgewerkt"
425
+
426
+ #: loggers/SimpleMenuLogger.php:27
427
+ msgid "Updated menu locations"
428
+ msgstr "Menulocaties bijgewerkt"
429
+
430
+ #: loggers/SimpleOptionsLogger.php:140
431
+ msgid "Updated option \"{option}\""
432
+ msgstr "Optie \"{option}\" bijgewerkt"
433
+
434
+ #: loggers/SimpleOptionsLogger.php:242 loggers/SimpleThemeLogger.php:570
435
+ msgid "New value"
436
+ msgstr "Nieuwe waarde"
437
+
438
+ #: loggers/SimpleOptionsLogger.php:253 loggers/SimpleThemeLogger.php:582
439
+ msgid "Old value"
440
+ msgstr "Oude waarde"
441
+
442
+ #: loggers/SimpleOptionsLogger.php:268 loggers/SimpleOptionsLogger.php:285
443
+ msgid "Settings page"
444
+ msgstr "Instellingenpagina"
445
+
446
+ #: loggers/SimplePostLogger.php:30
447
+ msgid "Created {post_type} \"{post_title}\""
448
+ msgstr "{post_type} \"{post_title}\" aangemaakt"
449
+
450
+ #: loggers/SimplePostLogger.php:31
451
+ msgid "Updated {post_type} \"{post_title}\""
452
+ msgstr "{post_type} \"{post_title}\" bijgewerkt"
453
+
454
+ #: loggers/SimplePostLogger.php:32
455
+ msgid "Restored {post_type} \"{post_title}\" from trash"
456
+ msgstr "{post_type} \"{post_title}\" uit de prullenbak hersteld"
457
+
458
+ #: loggers/SimplePostLogger.php:33 loggers/SimplePostLogger.php:236
459
+ msgid "Deleted {post_type} \"{post_title}\""
460
+ msgstr "{post_type} \"{post_title}\" verwijderd"
461
+
462
+ #: loggers/SimplePostLogger.php:34
463
+ msgid "Moved {post_type} \"{post_title}\" to the trash"
464
+ msgstr "{post_type} \"{post_title}\" verplaatst naar de prullenbak"
465
+
466
+ #: loggers/SimplePostLogger.php:232
467
+ msgid "Updated {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
468
+ msgstr "{post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> bijgewerkt"
469
+
470
+ #: loggers/SimplePostLogger.php:240
471
+ msgid "Created {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
472
+ msgstr "{post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> aangemaakt"
473
+
474
+ #: loggers/SimplePostLogger.php:245
475
+ msgid ""
476
+ "Moved {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> to the trash"
477
+ msgstr ""
478
+ "{post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> verplaatst naar de "
479
+ "prullenbak"
480
+
481
+ #: loggers/SimpleThemeLogger.php:26
482
+ msgid "Switched theme to \"{theme_name}\" from \"{prev_theme_name}\""
483
+ msgstr "Thema gewijzigd naar \"{theme_name}\" van \"{prev_theme_name}\""
484
+
485
+ #: loggers/SimpleThemeLogger.php:27
486
+ msgid "Customized theme appearance \"{setting_id}\""
487
+ msgstr "Themaweergave \"{setting_id}\" aangepast"
488
+
489
+ #: loggers/SimpleThemeLogger.php:28
490
+ msgid "Removed widget \"{widget_id_base}\" from sidebar \"{sidebar_id}\""
491
+ msgstr "Widget \"{widget_id_base}\" verwijderd van zijbalk \"{sidebar_id}\""
492
+
493
+ #: loggers/SimpleThemeLogger.php:29
494
+ msgid "Added widget \"{widget_id_base}\" to sidebar \"{sidebar_id}\""
495
+ msgstr "Widget \"{widget_id_base}\" toegevoegd aan zijbalk \"{sidebar_id}\""
496
+
497
+ #: loggers/SimpleThemeLogger.php:30
498
+ msgid "Changed widget order \"{widget_id_base}\" in sidebar \"{sidebar_id}\""
499
+ msgstr ""
500
+ "Widgetvolgorde \"{widget_id_base}\" van zijbalk \"{sidebar_id}\" gewijzigd"
501
+
502
+ #: loggers/SimpleThemeLogger.php:31
503
+ msgid "Changed widget \"{widget_id_base}\" in sidebar \"{sidebar_id}\""
504
+ msgstr "Widget \"{widget_id_base}\" in zijbalk \"{sidebar_id}\" gewijzigd"
505
+
506
+ #: loggers/SimpleThemeLogger.php:32
507
+ msgid "Changed settings for the theme custom background"
508
+ msgstr "Optie voor aangepaste thema-achtergrond gewijzigd"
509
+
510
+ #: loggers/SimpleThemeLogger.php:532
511
+ msgid "Section"
512
+ msgstr "Sectie"
513
+
514
+ #: loggers/SimpleUserLogger.php:22
515
+ msgid ""
516
+ "Failed to login to account with username \"{login_user_login}\" because an "
517
+ "incorrect password was entered"
518
+ msgstr ""
519
+ "Inloggen met gebruikersnaam \"{login_user_login}\" mislukt door verkeerd "
520
+ "wachtwoord"
521
+
522
+ #: loggers/SimpleUserLogger.php:23
523
+ msgid ""
524
+ "Failed to login with username \"{failed_login_username}\" because no user "
525
+ "with that username exists"
526
+ msgstr ""
527
+ "Inloggen met gebruikersnaam \"{failed_login_username}\" mislukt omdat er geen "
528
+ "gebruiker bestaat met die naam"
529
+
530
+ #: loggers/SimpleUserLogger.php:24
531
+ msgid "Logged in"
532
+ msgstr "Ingelogd"
533
+
534
+ #: loggers/SimpleUserLogger.php:25
535
+ msgid "Unknown user logged in"
536
+ msgstr "Onbekende gebruiker heeft ingelogd"
537
+
538
+ #: loggers/SimpleUserLogger.php:26
539
+ msgid "Logged out"
540
+ msgstr "Uitgelogd"
541
+
542
+ #: loggers/SimpleUserLogger.php:27
543
+ msgid "Edited the profile for user {edited_user_login} ({edited_user_email})"
544
+ msgstr ""
545
+ "Profiel voor gebruiker {edited_user_login} ({edited_user_email}) bewerkt"
546
+
547
+ #: loggers/SimpleUserLogger.php:28
548
+ msgid ""
549
+ "Created user {created_user_login} ({created_user_email}) with role "
550
+ "{created_user_role}"
551
+ msgstr ""
552
+ "Gebruiker {created_user_login} ({created_user_email}) aangemaakt met rol "
553
+ "{created_user_role}"
554
+
555
+ #: loggers/SimpleUserLogger.php:29
556
+ msgid "Deleted user {deleted_user_login} ({deleted_user_email})"
557
+ msgstr "Gebruiker {deleted_user_login} ({deleted_user_email}) verwijderd"
558
+
559
+ #: loggers/SimpleUserLogger.php:227
560
+ msgid "Edited <a href=\"{edit_profile_link}\">your profile</a>"
561
+ msgstr "<a href=\"{edit_profile_link}\">Je profiel</a> aangepast"
562
+
563
+ #: loggers/SimpleUserLogger.php:231
564
+ msgid "Edited <a href=\"{edit_profile_link}\">their profile</a>"
565
+ msgstr "<a href=\"{edit_profile_link}\">Hun profiel</a> aangepast"
566
+
567
+ #: loggers/SimpleUserLogger.php:240
568
+ msgid "Edited your profile"
569
+ msgstr "Je profiel aangepast"
570
+
571
+ #: loggers/SimpleUserLogger.php:251
572
+ msgid ""
573
+ "Edited the profile for user <a href="
574
+ "\"{edit_profile_link}\">{edited_user_login} ({edited_user_email})</a>"
575
+ msgstr ""
576
+ "Profiel voor gebruiker <a href=\"{edit_profile_link}\">{edited_user_login} "
577
+ "({edited_user_email})</a> bewerkt"
578
+
579
+ #: node_modules/grunt-wp-i18n/test/fixtures/basic-theme/exclude/file.php:3
580
+ #: node_modules/grunt-wp-i18n/test/fixtures/plugin-include/plugin-include.php:6
581
+ msgid "Exclude"
582
+ msgstr "Uitsluiten"
583
+
584
+ #: node_modules/grunt-wp-i18n/test/fixtures/plugin-include/include/file.php:2
585
+ msgid "Include"
586
+ msgstr "Inclusief"
587
+
588
+ #: node_modules/grunt-wp-i18n/test/fixtures/text-domains/add-domain.php:2
589
+ #: node_modules/grunt-wp-i18n/test/fixtures/text-domains/update-domains.php:2
590
+ #: node_modules/grunt-wp-i18n/test/fixtures/text-domains/update-domains.php:3
591
+ msgid "String"
592
+ msgstr "String"
593
+
594
+ #: templates/settings-statsIntro.php:19
595
+ msgid "<b>%1$s rows</b> have been logged the last <b>%2$s days</b>"
596
+ msgstr "<b>%1$s rijen</b> werden opgeslagen in de laatste <b>%2$s dagen</b>"
597
+
598
+ #: templates/settings-statsLogLevels.php:4
599
+ msgid "Log levels"
600
+ msgstr "Logniveau's"
601
+
602
+ #: templates/settings-statsLogLevels.php:6
603
+ msgid "Number of rows logged for each log level."
604
+ msgstr "Aantal rijen die gelogd zijn voor elk logniveau."
605
+
606
+ #: templates/settings-statsLoggers.php:4
607
+ msgid "Loggers"
608
+ msgstr "Loggers"
609
+
610
+ #: templates/settings-statsRowsPerDay.php:4
611
+ msgid "Rows per day"
612
+ msgstr "Rijen per dag"
613
+
614
+ #: templates/settings-statsUsers.php:4
615
+ msgid "Users"
616
+ msgstr "Gebruikers"
617
+
618
+ #: templates/settings-statsUsers.php:6
619
+ msgid "Number of logged items for the 5 users with most logged rows."
620
+ msgstr ""
621
+ "Aantal rijen gelogde items voor de 5 gebruikers met de meeste gelogde rijen."
622
+
623
+ #: templates/settings-statsUsers.php:7
624
+ msgid "Deleted users are also included."
625
+ msgstr "Bevat ook verwijderde gebruikers."
626
+
627
+ #. Plugin URI of the plugin/theme
628
+ msgid "http://simple-history.com"
629
+ msgstr "http://simple-history.com"
630
+
631
+ #. Description of the plugin/theme
632
+ msgid ""
633
+ "Plugin that logs various things that occur in WordPress and then presents "
634
+ "those events in a very nice GUI."
635
+ msgstr ""
636
+ "Plu-in die de verschillende dingen die gebeuren in WordPress opslaat en in "
637
+ "een mooie weergave giet."
638
+
639
+ #. Author of the plugin/theme
640
+ msgid "Pär Thernström"
641
+ msgstr "Pär Thernström"
642
+
643
+ #. Author URI of the plugin/theme
644
+ msgid "http://simple-history.com/"
645
+ msgstr "http://simple-history.com/"
646
+
647
+ #: SimpleHistory.php:249
648
+ msgctxt ""
649
+ "Message visible while waiting for log to load from server the first time"
650
+ msgid "Loading history..."
651
+ msgstr "Geschiedenis laden..."
652
+
653
+ #: SimpleHistory.php:286
654
+ msgctxt "page n of n"
655
+ msgid "of"
656
+ msgstr "van"
657
+
658
+ #: SimpleHistory.php:357
659
+ msgctxt "API: not enought arguments passed"
660
+ msgid "Not enough args specified"
661
+ msgstr "Onvoldoende argumenten opgegeven"
662
+
663
+ #: SimpleHistory.php:1235
664
+ msgctxt "dashboard menu name"
665
+ msgid "Simple History"
666
+ msgstr "Simple History"
667
+
668
+ #: SimpleHistory.php:1359
669
+ msgctxt "history page headline"
670
+ msgid "Simple History"
671
+ msgstr "Simple History"
672
+
673
+ #: SimpleHistory.php:1619
674
+ msgctxt "simple-history"
675
+ msgid "Simple History removed one event that were older than {days} days"
676
+ msgid_plural ""
677
+ "Simple History removed {num_rows} events that were older than {days} days"
678
+ msgstr[0] "Simple History verwijderde een gebeurtenis ouder dan {days} dagen"
679
+ msgstr[1] ""
680
+ "Simple History verwijderde {num_rows} gebeurtenissen ouder dan {days} dagen"
681
+
682
+ #: SimpleHistory.php:1963
683
+ msgctxt "Log level in gui"
684
+ msgid "emergency"
685
+ msgstr "noodgeval"
686
+
687
+ #: SimpleHistory.php:1967
688
+ msgctxt "Log level in gui"
689
+ msgid "alert"
690
+ msgstr "waarschuwing"
691
+
692
+ #: SimpleHistory.php:1971
693
+ msgctxt "Log level in gui"
694
+ msgid "critical"
695
+ msgstr "kritiek"
696
+
697
+ #: SimpleHistory.php:1975
698
+ msgctxt "Log level in gui"
699
+ msgid "error"
700
+ msgstr "fout"
701
+
702
+ #: SimpleHistory.php:1979
703
+ msgctxt "Log level in gui"
704
+ msgid "warning"
705
+ msgstr "waarschuwing"
706
+
707
+ #: SimpleHistory.php:1983
708
+ msgctxt "Log level in gui"
709
+ msgid "notice"
710
+ msgstr "melding"
711
+
712
+ #: SimpleHistory.php:1987
713
+ msgctxt "Log level in gui"
714
+ msgid "info"
715
+ msgstr "info"
716
+
717
+ #: SimpleHistory.php:1991
718
+ msgctxt "Log level in gui"
719
+ msgid "debug"
720
+ msgstr "debug"
721
+
722
+ #: SimpleHistory.php:1996
723
+ msgctxt "Log level in gui"
724
+ msgid "Emergency"
725
+ msgstr "Noogeval"
726
+
727
+ #: SimpleHistory.php:2000
728
+ msgctxt "Log level in gui"
729
+ msgid "Alert"
730
+ msgstr "Waarschuwing"
731
+
732
+ #: SimpleHistory.php:2004
733
+ msgctxt "Log level in gui"
734
+ msgid "Critical"
735
+ msgstr "Kritiek"
736
+
737
+ #: SimpleHistory.php:2008
738
+ msgctxt "Log level in gui"
739
+ msgid "Error"
740
+ msgstr "Fout"
741
+
742
+ #: SimpleHistory.php:2012
743
+ msgctxt "Log level in gui"
744
+ msgid "Warning"
745
+ msgstr "Waarschuwing"
746
+
747
+ #: SimpleHistory.php:2016
748
+ msgctxt "Log level in gui"
749
+ msgid "Notice"
750
+ msgstr "Melding"
751
+
752
+ #: SimpleHistory.php:2020
753
+ msgctxt "Log level in gui"
754
+ msgid "Info"
755
+ msgstr "Info"
756
+
757
+ #: SimpleHistory.php:2024
758
+ msgctxt "Log level in gui"
759
+ msgid "Debug"
760
+ msgstr "Debug"
761
+
762
+ #: dropins/SimpleHistoryDonateDropin.php:51
763
+ msgctxt "donate settings headline"
764
+ msgid "Donate"
765
+ msgstr "Doneren"
766
+
767
+ #: dropins/SimpleHistoryFilterDropin.php:50
768
+ msgctxt "Filter dropin: button to show more search options"
769
+ msgid "Show options"
770
+ msgstr "Opties tonen"
771
+
772
+ #: dropins/SimpleHistoryFilterDropin.php:160
773
+ msgctxt "Filter dropin: button to hide more search options"
774
+ msgid "Hide options"
775
+ msgstr "Opties verbergen"
776
+
777
+ #: dropins/SimpleHistoryIpInfoDropin.php:66
778
+ msgctxt "IP Info Dropin"
779
+ msgid "That IP address does not seem like a public one."
780
+ msgstr "Dat IP-adres lijkt niet publiek te zijn."
781
+
782
+ #: dropins/SimpleHistoryIpInfoDropin.php:85
783
+ msgctxt "IP Info Dropin"
784
+ msgid "IP address"
785
+ msgstr "IP-adres"
786
+
787
+ #: dropins/SimpleHistoryIpInfoDropin.php:96
788
+ msgctxt "IP Info Dropin"
789
+ msgid "Hostname"
790
+ msgstr "Hostnaam"
791
+
792
+ #: dropins/SimpleHistoryIpInfoDropin.php:107
793
+ #: dropins/SimpleHistoryIpInfoDropin.php:118
794
+ msgctxt "IP Info Dropin"
795
+ msgid "Network"
796
+ msgstr "Netwerk"
797
+
798
+ #: dropins/SimpleHistoryIpInfoDropin.php:129
799
+ msgctxt "IP Info Dropin"
800
+ msgid "City"
801
+ msgstr "Plaats"
802
+
803
+ #: dropins/SimpleHistoryIpInfoDropin.php:140
804
+ msgctxt "IP Info Dropin"
805
+ msgid "Region"
806
+ msgstr "Regio"
807
+
808
+ #: dropins/SimpleHistoryIpInfoDropin.php:151
809
+ msgctxt "IP Info Dropin"
810
+ msgid "Country"
811
+ msgstr "Land"
812
+
813
+ #: dropins/SimpleHistoryIpInfoDropin.php:162
814
+ msgctxt "IP Info Dropin"
815
+ msgid "IP info provided by %1$s ipinfo.io %2$s"
816
+ msgstr "IP-info door %1$s ipinfo.io %2$s"
817
+
818
+ #: dropins/SimpleHistoryNewRowsNotifier.php:38
819
+ msgctxt "New rows notifier: error while checking for new rows"
820
+ msgid "An error occured while checking for new log rows"
821
+ msgstr "Er trad een fout op bij het controleren op nieuwe rijen"
822
+
823
+ #: dropins/SimpleHistoryRSSDropin.php:47
824
+ msgctxt "rss settings headline"
825
+ msgid "RSS feed"
826
+ msgstr "RSS-feed"
827
+
828
+ #: dropins/SimpleHistorySidebarDropin.php:31
829
+ msgctxt "Sidebar box"
830
+ msgid "Simple History is on GitHub"
831
+ msgstr "Simple History is op GitHub"
832
+
833
+ #: dropins/SimpleHistorySidebarDropin.php:34
834
+ msgctxt "Sidebar box"
835
+ msgid ""
836
+ "You can star, fork, or report issues with this plugin over at the <a href="
837
+ "\"%1$s\">GitHub page</a>."
838
+ msgstr ""
839
+ "Je kan de plugin starren, forken of fouten melden op de <a href=\"%1$s"
840
+ "\">GitHub-pagina</a>."
841
+
842
+ #: dropins/SimpleHistorySidebarDropin.php:48
843
+ msgctxt "Sidebar box"
844
+ msgid "Donate to support development"
845
+ msgstr "Doneer om ontwikkeling te steunen"
846
+
847
+ #: dropins/SimpleHistorySidebarDropin.php:51
848
+ msgctxt "Sidebar box"
849
+ msgid ""
850
+ "If you like and use Simple History you should <a href=\"%1$s\">donate to keep "
851
+ "this plugin free</a>."
852
+ msgstr ""
853
+ "Je zou moeten <a href=\"%1$s\">doneren om de plug-in gratis te houden</a> als "
854
+ "je Simple History nuttig vindt en gebruikt."
855
+
856
+ #: dropins/SimpleHistorySidebarDropin.php:65
857
+ msgctxt "Sidebar box"
858
+ msgid "Review this plugin if you like it"
859
+ msgstr "Review de plug-in als je ze leuk vindt"
860
+
861
+ #: dropins/SimpleHistorySidebarDropin.php:68
862
+ msgctxt "Sidebar box"
863
+ msgid ""
864
+ "If you like Simple History then please <a href=\"%1$s\">give it a nice review "
865
+ "over at wordpress.org</a>."
866
+ msgstr ""
867
+ "Als je Simple History leuk vindt, gelieve het dan <a href=\"%1$s\">een goede "
868
+ "review te geven op wordpress.org</a>."
869
+
870
+ #: dropins/SimpleHistorySidebarDropin.php:72
871
+ msgctxt "Sidebar box"
872
+ msgid ""
873
+ "A good review will help new users find this plugin. And it will make the "
874
+ "plugin author very happy :)"
875
+ msgstr ""
876
+ "Een goede review zal nieuwe gebruikers helpen deze plug-in te ontdekken. En "
877
+ "het zal de plug-inauter heel blij maken :)"
878
+
879
+ #: loggers/SimpleCommentsLogger.php:95
880
+ msgctxt "A comment was added to the database by a non-logged in internet user"
881
+ msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
882
+ msgstr "Reactie toegevoegd aan {comment_post_type} \"{comment_post_title}\""
883
+
884
+ #: loggers/SimpleCommentsLogger.php:101
885
+ msgctxt "A comment was added to the database by a logged in user"
886
+ msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
887
+ msgstr "Reactie toegevoegd aan {comment_post_type} \"{comment_post_title}\""
888
+
889
+ #: loggers/SimpleCommentsLogger.php:107
890
+ msgctxt "A comment was approved"
891
+ msgid ""
892
+ "Approved a comment to \"{comment_post_title}\" by {comment_author} "
893
+ "({comment_author_email})"
894
+ msgstr ""
895
+ "Reactie op \"{comment_post_title}\" door {comment_author} "
896
+ "({comment_author_email}) goedgekeurd"
897
+
898
+ #: loggers/SimpleCommentsLogger.php:113
899
+ msgctxt "A comment was was unapproved"
900
+ msgid ""
901
+ "Unapproved a comment to \"{comment_post_title}\" by {comment_author} "
902
+ "({comment_author_email})"
903
+ msgstr ""
904
+ "Reactie op \"{comment_post_title}\" door {comment_author} "
905
+ "({comment_author_email}) afgekeurd"
906
+
907
+ #: loggers/SimpleCommentsLogger.php:119
908
+ msgctxt "A comment was marked as spam"
909
+ msgid "Marked a comment to post \"{comment_post_title}\" as spam"
910
+ msgstr "Reactie op \"{comment_post_title}\" gemarkeerd als spam"
911
+
912
+ #: loggers/SimpleCommentsLogger.php:125
913
+ msgctxt "A comment was marked moved to the trash"
914
+ msgid ""
915
+ "Trashed a comment to \"{comment_post_title}\" by {comment_author} "
916
+ "({comment_author_email})"
917
+ msgstr ""
918
+ "Reactie op \"{comment_post_title}\" door {comment_author} "
919
+ "({comment_author_email}) naar de prullenbak verplaatst"
920
+
921
+ #: loggers/SimpleCommentsLogger.php:131
922
+ msgctxt "A comment was restored from the trash"
923
+ msgid ""
924
+ "Restored a comment to \"{comment_post_title}\" by {comment_author} "
925
+ "({comment_author_email}) from the trash"
926
+ msgstr ""
927
+ "Reactie op \"{comment_post_title}\" door {comment_author} "
928
+ "({comment_author_email}) teruggezet uit de prullenbak"
929
+
930
+ #: loggers/SimpleCommentsLogger.php:137
931
+ msgctxt "A comment was deleted"
932
+ msgid ""
933
+ "Deleted a comment to \"{comment_post_title}\" by {comment_author} "
934
+ "({comment_author_email})"
935
+ msgstr ""
936
+ "Reactie op \"{comment_post_title}\" door {comment_author} "
937
+ "({comment_author_email}) verwijderd"
938
+
939
+ #: loggers/SimpleCommentsLogger.php:143
940
+ msgctxt "A comment was edited"
941
+ msgid ""
942
+ "Edited a comment to \"{comment_post_title}\" by {comment_author} "
943
+ "({comment_author_email})"
944
+ msgstr ""
945
+ "Reactie op \"{comment_post_title}\" door {comment_author} "
946
+ "({comment_author_email}) aangepast"
947
+
948
+ #: loggers/SimpleCommentsLogger.php:150
949
+ msgctxt "A trackback was added to the database by a non-logged in internet user"
950
+ msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
951
+ msgstr "Trackback aan {comment_post_type} \"{comment_post_title}\" toegevoegd"
952
+
953
+ #: loggers/SimpleCommentsLogger.php:205
954
+ msgctxt "A trackback was added to the database by a non-logged in internet user"
955
+ msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
956
+ msgstr "Pingback aan {comment_post_type} \"{comment_post_title}\" toegevoegd"
957
+
958
+ #: loggers/SimpleCommentsLogger.php:156
959
+ msgctxt "A trackback was added to the database by a logged in user"
960
+ msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
961
+ msgstr "Trackback aan {comment_post_type} \"{comment_post_title}\" toegevoegd"
962
+
963
+ #: loggers/SimpleCommentsLogger.php:162
964
+ msgctxt "A trackback was approved"
965
+ msgid ""
966
+ "Approved a trackback to \"{comment_post_title}\" by {comment_author} "
967
+ "({comment_author_email})"
968
+ msgstr ""
969
+ "Trackback naar \"{comment_post_title}\" door {comment_author} "
970
+ "({comment_author_email}) goedgekeurd"
971
+
972
+ #: loggers/SimpleCommentsLogger.php:168
973
+ msgctxt "A trackback was was unapproved"
974
+ msgid ""
975
+ "Unapproved a trackback to \"{comment_post_title}\" by {comment_author} "
976
+ "({comment_author_email})"
977
+ msgstr ""
978
+ "Trackback naar \"{comment_post_title}\" door {comment_author} "
979
+ "({comment_author_email}) afgekeurd"
980
+
981
+ #: loggers/SimpleCommentsLogger.php:174
982
+ msgctxt "A trackback was marked as spam"
983
+ msgid "Marked a trackback to post \"{comment_post_title}\" as spam"
984
+ msgstr "Trackback naar bericht \"{comment_post_title}\" gemarkeerd als spam"
985
+
986
+ #: loggers/SimpleCommentsLogger.php:180
987
+ msgctxt "A trackback was marked moved to the trash"
988
+ msgid ""
989
+ "Trashed a trackback to \"{comment_post_title}\" by {comment_author} "
990
+ "({comment_author_email})"
991
+ msgstr ""
992
+ "Trackback naar \"{comment_post_title}\" door {comment_author} "
993
+ "({comment_author_email}) naar de prullenbak verplaatst"
994
+
995
+ #: loggers/SimpleCommentsLogger.php:186
996
+ msgctxt "A trackback was restored from the trash"
997
+ msgid ""
998
+ "Restored a trackback to \"{comment_post_title}\" by {comment_author} "
999
+ "({comment_author_email}) from the trash"
1000
+ msgstr ""
1001
+ "Trackback naar \"{comment_post_title}\" door {comment_author} "
1002
+ "({comment_author_email}) teruggezet uit de prullenbak"
1003
+
1004
+ #: loggers/SimpleCommentsLogger.php:192
1005
+ msgctxt "A trackback was deleted"
1006
+ msgid ""
1007
+ "Deleted a trackback to \"{comment_post_title}\" by {comment_author} "
1008
+ "({comment_author_email})"
1009
+ msgstr ""
1010
+ "Trackback naar \"{comment_post_title}\" door {comment_author} "
1011
+ "({comment_author_email}) verwijderd"
1012
+
1013
+ #: loggers/SimpleCommentsLogger.php:198
1014
+ msgctxt "A trackback was edited"
1015
+ msgid ""
1016
+ "Edited a trackback to \"{comment_post_title}\" by {comment_author} "
1017
+ "({comment_author_email})"
1018
+ msgstr ""
1019
+ "Trackback naar \"{comment_post_title}\" naar {comment_author} "
1020
+ "({comment_author_email}) bewerkt"
1021
+
1022
+ #: loggers/SimpleCommentsLogger.php:211
1023
+ msgctxt "A pingback was added to the database by a logged in user"
1024
+ msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
1025
+ msgstr "Pingback naar {comment_post_type} \"{comment_post_title}\" toegevoegd"
1026
+
1027
+ #: loggers/SimpleCommentsLogger.php:217
1028
+ msgctxt "A pingback was approved"
1029
+ msgid ""
1030
+ "Approved a pingback to \"{comment_post_title}\" by "
1031
+ "\"{comment_author}\"\" ({comment_author_email})"
1032
+ msgstr ""
1033
+ "Pingback naar \"{comment_post_title}\" door "
1034
+ "\"{comment_author}\"\" ({comment_author_email}) goedgekeurd"
1035
+
1036
+ #: loggers/SimpleCommentsLogger.php:223
1037
+ msgctxt "A pingback was was unapproved"
1038
+ msgid ""
1039
+ "Unapproved a pingback to \"{comment_post_title}\" by "
1040
+ "\"{comment_author}\" ({comment_author_email})"
1041
+ msgstr ""
1042
+ "Pingback naar \"{comment_post_title}\" door "
1043
+ "\"{comment_author}\"\" ({comment_author_email}) afgekeurd"
1044
+
1045
+ #: loggers/SimpleCommentsLogger.php:229
1046
+ msgctxt "A pingback was marked as spam"
1047
+ msgid "Marked a pingback to post \"{comment_post_title}\" as spam"
1048
+ msgstr "Pingback naar bericht \"{comment_post_title}\" gemarkeerd als spam"
1049
+
1050
+ #: loggers/SimpleCommentsLogger.php:235
1051
+ msgctxt "A pingback was marked moved to the trash"
1052
+ msgid ""
1053
+ "Trashed a pingback to \"{comment_post_title}\" by {comment_author} "
1054
+ "({comment_author_email})"
1055
+ msgstr ""
1056
+ "Pingback naar \"{comment_post_title}\" door "
1057
+ "\"{comment_author}\"\" ({comment_author_email}) naar prullenbak verplaatst"
1058
+
1059
+ #: loggers/SimpleCommentsLogger.php:241
1060
+ msgctxt "A pingback was restored from the trash"
1061
+ msgid ""
1062
+ "Restored a pingback to \"{comment_post_title}\" by {comment_author} "
1063
+ "({comment_author_email}) from the trash"
1064
+ msgstr ""
1065
+ "Pingback naar \"{comment_post_title}\" door "
1066
+ "\"{comment_author}\"\" ({comment_author_email}) teruggezet uit de prullenbak"
1067
+
1068
+ #: loggers/SimpleCommentsLogger.php:247
1069
+ msgctxt "A pingback was deleted"
1070
+ msgid ""
1071
+ "Deleted a pingback to \"{comment_post_title}\" by {comment_author} "
1072
+ "({comment_author_email})"
1073
+ msgstr ""
1074
+ "Pingback naar \"{comment_post_title}\" door "
1075
+ "\"{comment_author}\"\" ({comment_author_email}) verwijderd"
1076
+
1077
+ #: loggers/SimpleCommentsLogger.php:253
1078
+ msgctxt "A pingback was edited"
1079
+ msgid ""
1080
+ "Edited a pingback to \"{comment_post_title}\" by {comment_author} "
1081
+ "({comment_author_email})"
1082
+ msgstr ""
1083
+ "Pingback naar \"{comment_post_title}\" door "
1084
+ "\"{comment_author}\"\" ({comment_author_email}) bewerkt"
1085
+
1086
+ #: loggers/SimpleCommentsLogger.php:264
1087
+ msgctxt "Comments logger: search"
1088
+ msgid "Comments"
1089
+ msgstr "Reacties"
1090
+
1091
+ #: loggers/SimpleCommentsLogger.php:265
1092
+ msgctxt "Comments logger: search"
1093
+ msgid "All comments activity"
1094
+ msgstr "Alle reactie-activiteit"
1095
+
1096
+ #: loggers/SimpleCommentsLogger.php:267
1097
+ msgctxt "Comments logger: search"
1098
+ msgid "Added comments"
1099
+ msgstr "Toegevoegde reacties"
1100
+
1101
+ #: loggers/SimpleCommentsLogger.php:275
1102
+ msgctxt "Comments logger: search"
1103
+ msgid "Edited comments"
1104
+ msgstr "Bewerkte reacties"
1105
+
1106
+ #: loggers/SimpleCommentsLogger.php:280
1107
+ msgctxt "Comments logger: search"
1108
+ msgid "Approved comments"
1109
+ msgstr "Goedgekeurde reacties"
1110
+
1111
+ #: loggers/SimpleCommentsLogger.php:285
1112
+ msgctxt "Comments logger: search"
1113
+ msgid "Held comments"
1114
+ msgstr "Vastgehouden reacties"
1115
+
1116
+ #: loggers/SimpleCommentsLogger.php:290
1117
+ msgctxt "Comments logger: search"
1118
+ msgid "Comments status changed to spam"
1119
+ msgstr "Naar-spam-gewijzigde reacties"
1120
+
1121
+ #: loggers/SimpleCommentsLogger.php:295
1122
+ msgctxt "Comments logger: search"
1123
+ msgid "Trashed comments"
1124
+ msgstr "Weggegooide reacties"
1125
+
1126
+ #: loggers/SimpleCommentsLogger.php:300
1127
+ msgctxt "Comments logger: search"
1128
+ msgid "Untrashed comments"
1129
+ msgstr "Herstelde reacties"
1130
+
1131
+ #: loggers/SimpleCommentsLogger.php:305
1132
+ msgctxt "Comments logger: search"
1133
+ msgid "Deleted comments"
1134
+ msgstr "Verwijderde reacties"
1135
+
1136
+ #: loggers/SimpleCommentsLogger.php:602 loggers/SimpleCommentsLogger.php:615
1137
+ #: loggers/SimpleCommentsLogger.php:629
1138
+ msgctxt "comments logger - detailed output comment status"
1139
+ msgid "Status"
1140
+ msgstr "Status"
1141
+
1142
+ #: loggers/SimpleCommentsLogger.php:604 loggers/SimpleCommentsLogger.php:617
1143
+ #: loggers/SimpleCommentsLogger.php:631
1144
+ msgctxt "comments logger - detailed output author"
1145
+ msgid "Name"
1146
+ msgstr "Naam"
1147
+
1148
+ #: loggers/SimpleCommentsLogger.php:605 loggers/SimpleCommentsLogger.php:618
1149
+ #: loggers/SimpleCommentsLogger.php:632
1150
+ msgctxt "comments logger - detailed output email"
1151
+ msgid "Email"
1152
+ msgstr "E-mail"
1153
+
1154
+ #: loggers/SimpleCommentsLogger.php:606 loggers/SimpleCommentsLogger.php:619
1155
+ msgctxt "comments logger - detailed output content"
1156
+ msgid "Content"
1157
+ msgstr "Inhoud"
1158
+
1159
+ #: loggers/SimpleCommentsLogger.php:633
1160
+ msgctxt "comments logger - detailed output content"
1161
+ msgid "Comment"
1162
+ msgstr "Reactie"
1163
+
1164
+ #: loggers/SimpleCommentsLogger.php:759
1165
+ msgctxt "comments logger - edit comment"
1166
+ msgid "View/Edit"
1167
+ msgstr "Bekijken/Bewerken"
1168
+
1169
+ #: loggers/SimpleCoreUpdatesLogger.php:34
1170
+ msgctxt "User logger: search"
1171
+ msgid "WordPress Core"
1172
+ msgstr "WordPress Core"
1173
+
1174
+ #: loggers/SimpleCoreUpdatesLogger.php:36
1175
+ msgctxt "User logger: search"
1176
+ msgid "WordPress core updates"
1177
+ msgstr "Updates aan WordPress core"
1178
+
1179
+ #: loggers/SimpleUserLogger.php:54
1180
+ msgctxt "User logger: search"
1181
+ msgid "Users"
1182
+ msgstr "Gebruikers"
1183
+
1184
+ #: loggers/SimpleUserLogger.php:55
1185
+ msgctxt "User logger: search"
1186
+ msgid "All user activity"
1187
+ msgstr "Alle gebruikersactiviteit"
1188
+
1189
+ #: loggers/SimpleUserLogger.php:57
1190
+ msgctxt "User logger: search"
1191
+ msgid "Successful user logins"
1192
+ msgstr "Geslaagde gebruikersaanmeldingen"
1193
+
1194
+ #: loggers/SimpleUserLogger.php:61
1195
+ msgctxt "User logger: search"
1196
+ msgid "Failed user logins"
1197
+ msgstr "Mislukte gebruikersaanmeldingen"
1198
+
1199
+ #: loggers/SimpleUserLogger.php:65
1200
+ msgctxt "User logger: search"
1201
+ msgid "User logouts"
1202
+ msgstr "Gebruiker-uitlogs"
1203
+
1204
+ #: loggers/SimpleUserLogger.php:68
1205
+ msgctxt "User logger: search"
1206
+ msgid "Created users"
1207
+ msgstr "Aangemaakte gebruikers"
1208
+
1209
+ #: loggers/SimpleUserLogger.php:71
1210
+ msgctxt "User logger: search"
1211
+ msgid "User profile updates"
1212
+ msgstr "Gebruikersprofiel-updates"
1213
+
1214
+ #: loggers/SimpleUserLogger.php:74
1215
+ msgctxt "User logger: search"
1216
+ msgid "User deletions"
1217
+ msgstr "Verwijderde gebruikers"
1218
+
1219
+ #: loggers/SimpleExportLogger.php:27
1220
+ msgctxt "Export logger: search"
1221
+ msgid "Export"
1222
+ msgstr "Export"
1223
+
1224
+ #: loggers/SimpleExportLogger.php:29
1225
+ msgctxt "Export logger: search"
1226
+ msgid "Created exports"
1227
+ msgstr "Aangemaakte exports"
1228
+
1229
+ #: loggers/SimpleLogger.php:190
1230
+ msgctxt "header output when initiator is the currently logged in user"
1231
+ msgid "You"
1232
+ msgstr "Jij"
1233
+
1234
+ #: loggers/SimpleMediaLogger.php:29
1235
+ msgctxt "Media logger: search"
1236
+ msgid "Media"
1237
+ msgstr "Media"
1238
+
1239
+ #: loggers/SimpleMediaLogger.php:31
1240
+ msgctxt "Media logger: search"
1241
+ msgid "Added media"
1242
+ msgstr "Toegevoegde media"
1243
+
1244
+ #: loggers/SimpleMediaLogger.php:34
1245
+ msgctxt "Media logger: search"
1246
+ msgid "Updated media"
1247
+ msgstr "Bijgewerkte media"
1248
+
1249
+ #: loggers/SimpleMediaLogger.php:37
1250
+ msgctxt "Media logger: search"
1251
+ msgid "Deleted media"
1252
+ msgstr "Verwijderde media"
1253
+
1254
+ #: loggers/SimpleMenuLogger.php:31
1255
+ msgctxt "Menu logger: search"
1256
+ msgid "Menus"
1257
+ msgstr "Menu's"
1258
+
1259
+ #: loggers/SimpleMenuLogger.php:33
1260
+ msgctxt "Menu updates logger: search"
1261
+ msgid "Created menus"
1262
+ msgstr "Aangemaakte menu's"
1263
+
1264
+ #: loggers/SimpleMenuLogger.php:36
1265
+ msgctxt "Menu updates logger: search"
1266
+ msgid "Edited menus"
1267
+ msgstr "Bewerkte menu's"
1268
+
1269
+ #: loggers/SimpleMenuLogger.php:41
1270
+ msgctxt "Menu updates logger: search"
1271
+ msgid "Deleted menus"
1272
+ msgstr "Verwijderede menu's"
1273
+
1274
+ #: loggers/SimpleMenuLogger.php:326
1275
+ msgctxt "menu logger"
1276
+ msgid "%1$s menu item added"
1277
+ msgid_plural "%1$s menu items added"
1278
+ msgstr[0] "%1$s menu-item toegevoegd"
1279
+ msgstr[1] "%1$s menu-items toegevoegd"
1280
+
1281
+ #: loggers/SimpleMenuLogger.php:333
1282
+ msgctxt "menu logger"
1283
+ msgid "%1$s menu item removed"
1284
+ msgid_plural "%1$s menu items removed"
1285
+ msgstr[0] "%1$s menu-item verwijderd"
1286
+ msgstr[1] "%1$s menu-items verwijderd"
1287
+
1288
+ #: loggers/SimpleOptionsLogger.php:153
1289
+ msgctxt "Options logger: search"
1290
+ msgid "Options"
1291
+ msgstr "Opties"
1292
+
1293
+ #: loggers/SimpleOptionsLogger.php:155
1294
+ msgctxt "Options logger: search"
1295
+ msgid "Changed options"
1296
+ msgstr "Gewijzigde opties"
1297
+
1298
+ #: loggers/SimplePluginLogger.php:51
1299
+ msgctxt "Plugin was non-silently activated by a user"
1300
+ msgid "Activated plugin \"{plugin_name}\""
1301
+ msgstr "Plug-in \"{plugin_name}\" geactiveerd"
1302
+
1303
+ #: loggers/SimplePluginLogger.php:57
1304
+ msgctxt "Plugin was non-silently deactivated by a user"
1305
+ msgid "Deactivated plugin \"{plugin_name}\""
1306
+ msgstr "Plug-in \"{plugin_name}\" gedeactiveerd"
1307
+
1308
+ #: loggers/SimplePluginLogger.php:63
1309
+ msgctxt "Plugin was installed"
1310
+ msgid "Installed plugin \"{plugin_name}\""
1311
+ msgstr "Plug-in \"{plugin_name}\" geïnstalleerd"
1312
+
1313
+ #: loggers/SimplePluginLogger.php:69
1314
+ msgctxt "Plugin failed to install"
1315
+ msgid "Failed to install plugin \"{plugin_name}\""
1316
+ msgstr "Installatie plug-in \"{plugin_name}\" mislukt"
1317
+
1318
+ #: loggers/SimplePluginLogger.php:75
1319
+ msgctxt "Plugin was updated"
1320
+ msgid ""
1321
+ "Updated plugin \"{plugin_name}\" to version {plugin_version} from "
1322
+ "{plugin_prev_version}"
1323
+ msgstr ""
1324
+ "Plug-in \"{plugin_name}\" bijgewerkt naar versie {plugin_version} van "
1325
+ "{plugin_prev_version}"
1326
+
1327
+ #: loggers/SimplePluginLogger.php:81
1328
+ msgctxt "Plugin update failed"
1329
+ msgid "Updated plugin \"{plugin_name}\""
1330
+ msgstr "Plug-in \"{plugin_name}\" bijgewerkt"
1331
+
1332
+ #: loggers/SimplePluginLogger.php:87
1333
+ msgctxt "Plugin file edited"
1334
+ msgid "Edited plugin file \"{plugin_edited_file}\""
1335
+ msgstr "Plug-in-bestand \"{plugin_edited_file}\" bewerkt"
1336
+
1337
+ #: loggers/SimplePluginLogger.php:93
1338
+ msgctxt "Plugin files was deleted"
1339
+ msgid "Deleted plugin \"{plugin_name}\""
1340
+ msgstr "Plug-in \"{plugin_name}\" verwijderd"
1341
+
1342
+ #: loggers/SimplePluginLogger.php:100
1343
+ msgctxt "Plugin was updated in bulk"
1344
+ msgid ""
1345
+ "Updated plugin \"{plugin_name}\" to {plugin_version} from "
1346
+ "{plugin_prev_version}"
1347
+ msgstr ""
1348
+ "Plug-in \"{plugin_name}\" bijgewerkt naar versie {plugin_version} van "
1349
+ "{plugin_prev_version}"
1350
+
1351
+ #: loggers/SimplePluginLogger.php:108
1352
+ msgctxt "Plugin logger: search"
1353
+ msgid "Plugins"
1354
+ msgstr "Plug-ins"
1355
+
1356
+ #: loggers/SimplePluginLogger.php:110
1357
+ msgctxt "Plugin logger: search"
1358
+ msgid "Activated plugins"
1359
+ msgstr "Geactiveerde plug-ins"
1360
+
1361
+ #: loggers/SimplePluginLogger.php:113
1362
+ msgctxt "Plugin logger: search"
1363
+ msgid "Deactivated plugins"
1364
+ msgstr "Gedeactiveerde plug-ins"
1365
+
1366
+ #: loggers/SimplePluginLogger.php:116
1367
+ msgctxt "Plugin logger: search"
1368
+ msgid "Installed plugins"
1369
+ msgstr "Geïnstalleerde plug-ins"
1370
+
1371
+ #: loggers/SimplePluginLogger.php:119
1372
+ msgctxt "Plugin logger: search"
1373
+ msgid "Failed plugin installs"
1374
+ msgstr "Mislukte plug-in-installaties"
1375
+
1376
+ #: loggers/SimplePluginLogger.php:122
1377
+ msgctxt "Plugin logger: search"
1378
+ msgid "Updated plugins"
1379
+ msgstr "Bijgewerkte plug-ins"
1380
+
1381
+ #: loggers/SimplePluginLogger.php:126
1382
+ msgctxt "Plugin logger: search"
1383
+ msgid "Failed plugin updates"
1384
+ msgstr "Mislukte plug-in-updates"
1385
+
1386
+ #: loggers/SimplePluginLogger.php:129
1387
+ msgctxt "Plugin logger: search"
1388
+ msgid "Edited plugin files"
1389
+ msgstr "Plug-in-bestanden bewerkt"
1390
+
1391
+ #: loggers/SimplePluginLogger.php:132
1392
+ msgctxt "Plugin logger: search"
1393
+ msgid "Deleted plugins"
1394
+ msgstr "Verwijderde plug-ins"
1395
+
1396
+ #: loggers/SimplePluginLogger.php:887
1397
+ msgctxt "plugin logger - detailed output version"
1398
+ msgid "Version"
1399
+ msgstr "Versie"
1400
+
1401
+ #: loggers/SimplePluginLogger.php:889
1402
+ msgctxt "plugin logger - detailed output author"
1403
+ msgid "Author"
1404
+ msgstr "Auteur"
1405
+
1406
+ #: loggers/SimplePluginLogger.php:891
1407
+ msgctxt "plugin logger - detailed output author"
1408
+ msgid "Requires"
1409
+ msgstr "Vereist"
1410
+
1411
+ #: loggers/SimplePluginLogger.php:890
1412
+ msgctxt "plugin logger - detailed output url"
1413
+ msgid "URL"
1414
+ msgstr "URL"
1415
+
1416
+ #: loggers/SimplePluginLogger.php:892
1417
+ msgctxt "plugin logger - detailed output compatible"
1418
+ msgid "Compatible up to"
1419
+ msgstr "Compatibel tot"
1420
+
1421
+ #: loggers/SimplePluginLogger.php:893
1422
+ msgctxt "plugin logger - detailed output downloaded"
1423
+ msgid "Downloads"
1424
+ msgstr "Downloads"
1425
+
1426
+ #: loggers/SimplePluginLogger.php:953
1427
+ msgctxt "plugin logger: plugin info thickbox title view all info"
1428
+ msgid "View plugin info"
1429
+ msgstr "Plug-in-informatie bekijken"
1430
+
1431
+ #: loggers/SimplePluginLogger.php:968
1432
+ msgctxt "plugin logger: plugin info thickbox title"
1433
+ msgid "View plugin info"
1434
+ msgstr "Plug-in-informatie bekijken"
1435
+
1436
+ #: loggers/SimplePluginLogger.php:972
1437
+ msgctxt "plugin logger: plugin info thickbox title"
1438
+ msgid "View changelog"
1439
+ msgstr "Bekijk wijzigingen"
1440
+
1441
+ #: loggers/SimplePostLogger.php:38
1442
+ msgctxt "Post logger: search"
1443
+ msgid "Posts & Pages"
1444
+ msgstr "Berichten en pagina's"
1445
+
1446
+ #: loggers/SimplePostLogger.php:40
1447
+ msgctxt "Post logger: search"
1448
+ msgid "Posts created"
1449
+ msgstr "Aangemaakte berichten"
1450
+
1451
+ #: loggers/SimplePostLogger.php:43
1452
+ msgctxt "Post logger: search"
1453
+ msgid "Posts updated"
1454
+ msgstr "Bijgewerkte berichten"
1455
+
1456
+ #: loggers/SimplePostLogger.php:46
1457
+ msgctxt "Post logger: search"
1458
+ msgid "Posts trashed"
1459
+ msgstr "Weggegooide berichten"
1460
+
1461
+ #: loggers/SimplePostLogger.php:49
1462
+ msgctxt "Post logger: search"
1463
+ msgid "Posts deleted"
1464
+ msgstr "Verwijderede berichten"
1465
+
1466
+ #: loggers/SimplePostLogger.php:52
1467
+ msgctxt "Post logger: search"
1468
+ msgid "Posts restored"
1469
+ msgstr "Herstelde berichten"
1470
+
1471
+ #: loggers/SimpleThemeLogger.php:36
1472
+ msgctxt "Theme logger: search"
1473
+ msgid "Themes & Widgets"
1474
+ msgstr "Thema's en widgets"
1475
+
1476
+ #: loggers/SimpleThemeLogger.php:38
1477
+ msgctxt "Theme logger: search"
1478
+ msgid "Switched themes"
1479
+ msgstr "Gewisselde thema's"
1480
+
1481
+ #: loggers/SimpleThemeLogger.php:41
1482
+ msgctxt "Theme logger: search"
1483
+ msgid "Changed appearance of themes"
1484
+ msgstr "Gewijzigde thema-weergave"
1485
+
1486
+ #: loggers/SimpleThemeLogger.php:44
1487
+ msgctxt "Theme logger: search"
1488
+ msgid "Added widgets"
1489
+ msgstr "Toegevoegde widgets"
1490
+
1491
+ #: loggers/SimpleThemeLogger.php:47
1492
+ msgctxt "Theme logger: search"
1493
+ msgid "Removed widgets"
1494
+ msgstr "Verwijderde widgets"
1495
+
1496
+ #: loggers/SimpleThemeLogger.php:50
1497
+ msgctxt "Theme logger: search"
1498
+ msgid "Changed widgets order"
1499
+ msgstr "Gewijzigde widgetvolgorde"
1500
+
1501
+ #: loggers/SimpleThemeLogger.php:53
1502
+ msgctxt "Theme logger: search"
1503
+ msgid "Edited widgets"
1504
+ msgstr "Bijgewerkte widgets"
1505
+
1506
+ #: loggers/SimpleThemeLogger.php:56
1507
+ msgctxt "Theme logger: search"
1508
+ msgid "Background of themes changed"
1509
+ msgstr "Gewijzigde thema-achtergrond"
1510
+
1511
+ #: loggers/SimpleUserLogger.php:36
1512
+ msgctxt "User destroys other login sessions for themself"
1513
+ msgid "Logged out from all other sessions"
1514
+ msgstr "Uitgelogd van alle andere sessies"
1515
+
1516
+ #: loggers/SimpleUserLogger.php:45
1517
+ msgctxt "User destroys all login sessions for a user"
1518
+ msgid "Logged out \"{user_display_name}\" from all sessions"
1519
+ msgstr "\"{user_display_name}\" uitgelogd van alle sessies"
1520
+
1521
+ #: templates/settings-statsRowsPerDay.php:36
1522
+ msgctxt "stats: date in rows per day chart"
1523
+ msgid "M j"
1524
+ msgstr "M j"
1525
+
1526
+ #~ msgid "Filter"
1527
+ #~ msgstr "Filteren"
languages/simple-history-pl_PL.mo CHANGED
Binary file
languages/simple-history-pl_PL.po CHANGED
@@ -4,733 +4,1484 @@ msgid ""
4
  msgstr ""
5
  "Project-Id-Version: Simple History\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/simple-history\n"
7
- "POT-Creation-Date: 2013-05-22 13:16:18+00:00\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2013-10-10 09:11+0100\n"
12
  "Last-Translator: Mateusz Czardybon <mczardybon@netizens.pl>\n"
13
  "Language-Team: Mateusz Czardybon <mczardybon@netizens.pl>\n"
14
- "X-Generator: Poedit 1.5.7\n"
15
  "Language: pl_PL\n"
 
 
 
 
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
- "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
18
- "|| n%100>=20) ? 1 : 2;\n"
19
  "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
20
  "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
21
  "esc_attr_x:1,2c\n"
 
22
  "X-Poedit-Basepath: ../\n"
23
- "X-Poedit-SearchPath-0: ..\n"
24
-
25
- #: index.php:88 index.php:105
26
- msgid "added"
27
- msgstr "dodano"
28
 
29
- #: index.php:89
30
- msgid "approved"
31
- msgstr "zatwierdzony"
 
 
32
 
33
- #: index.php:90
34
- msgid "unapproved"
35
- msgstr "niezatwierdzony"
36
-
37
- #: index.php:91 simple-history-extender/class.simple-history-extend.php:92
38
- msgid "marked as spam"
39
- msgstr "oznaczony jako spam"
40
-
41
- #: index.php:92 simple-history-extender/class.simple-history-extend.php:94
42
- msgid "trashed"
43
- msgstr "wyrzucono do kosza"
44
-
45
- #: index.php:93 simple-history-extender/class.simple-history-extend.php:95
46
- msgid "untrashed"
47
- msgstr "przywrócono z kosza"
48
-
49
- #: index.php:94 simple-history-extender/class.simple-history-extend.php:89
50
- msgid "created"
51
- msgstr "utworzono"
52
 
53
- #: index.php:95 simple-history-extender/class.simple-history-extend.php:91
54
- msgid "deleted"
55
- msgstr "usunięto"
 
56
 
57
- #: index.php:96 simple-history-extender/class.simple-history-extend.php:239
58
- msgid "updated"
59
- msgstr "zaktualizowano"
60
 
61
- #: index.php:97
62
- msgid "nav_menu_item"
63
- msgstr "element menu"
64
 
65
- #: index.php:98 index.php:1770
66
- msgid "attachment"
67
- msgstr "załącznik"
68
 
69
- #: index.php:99 index.php:1851
70
- msgid "user"
71
- msgstr "użytkownik"
72
 
73
- #: index.php:100
74
- msgid "settings page"
75
- msgstr "strona z ustawieniami"
76
 
77
- #: index.php:101 simple-history-extender/class.simple-history-extend.php:90
78
- msgid "edited"
79
- msgstr "edytowano"
80
 
81
- #: index.php:102
82
- msgid "comment"
83
- msgstr "komentarz"
84
 
85
- #: index.php:103
86
- msgid "logged in"
87
- msgstr "zalogowany"
88
 
89
- #: index.php:104
90
- msgid "logged out"
91
- msgstr "wylogowany"
92
 
93
- #: index.php:106
94
- msgid "modified"
95
- msgstr "zmienono"
96
 
97
- #: index.php:107
98
- msgid "upgraded it\\'s database"
99
- msgstr "zaktualizował swoją bazę danych"
100
 
101
- #: index.php:108
102
- msgid "plugin"
103
- msgstr "wtyczka"
104
 
105
- #: index.php:121 index.php:283 index.php:1078
106
- msgid "History"
107
- msgstr "Historia"
108
 
109
- #: index.php:181
110
- msgid "WordPress %1$s"
111
- msgstr "WordPress %1$s"
112
 
113
- #: index.php:194 index.php:299
114
- msgid "Donate"
115
- msgstr "Darowizna"
 
116
 
117
- #: index.php:269 index.php:290
118
- msgid "Simple History Settings"
119
- msgstr "Historia zdarzeń - ustawienia"
120
 
121
- #: index.php:295
122
- msgid "Show Simple History"
123
- msgstr "Pokaż historię zdarzeń"
124
 
125
- #: index.php:296
126
  msgid "Number of items per page"
127
  msgstr "Liczba elementów na stronie"
128
 
129
- #: index.php:297 index.php:2024
130
- msgid "RSS feed"
131
- msgstr "Kanał RSS"
132
-
133
- #: index.php:298
134
  msgid "Clear log"
135
  msgstr "Wyczyść historię"
136
 
137
- #: index.php:315
138
- msgid "failed to log in because they entered the wrong password"
139
- msgstr "nie umiał(-a) się zalogować, ponieważ wpisywane hasło było niepoprawne"
140
-
141
- #: index.php:391 index.php:450
142
- msgid "History for %s"
143
- msgstr "Historia dla %s"
144
-
145
- #: index.php:392 index.php:451
146
- msgid "WordPress History for %s"
147
- msgstr "Historia WordPressa dla %s"
148
-
149
- #: index.php:415
150
- msgid "By %s"
151
- msgstr "Przez %s"
152
-
153
- #: index.php:419
154
- msgid "%d occasions"
155
- msgstr "%d więcej"
156
-
157
- #: index.php:454
158
- msgid "Wrong RSS secret"
159
- msgstr "Błędny klucz kanału RSS"
160
-
161
- #: index.php:455
162
- msgid ""
163
- "Your RSS secret for Simple History RSS feed is wrong. Please see WordPress "
164
- "settings for current link to the RSS feed."
165
- msgstr ""
166
- "Twój sekretny link z dostępem do kanału RSS Historii zdarzeń jest błędny. "
167
- "Przejdź do ustawień WordPressa, żeby zobaczyć aktualny adres tego kanału."
168
-
169
- #: index.php:534 index.php:1448
170
- msgid "One item"
171
- msgid_plural "%1$d items"
172
- msgstr[0] "1 element"
173
- msgstr[1] "%1$d elementy"
174
- msgstr[2] "%1$d elementów"
175
 
176
- #: index.php:597
177
  msgid "on the dashboard"
178
  msgstr "jako widget w Kokpicie"
179
 
180
- #: index.php:602
181
  msgid "as a page under the dashboard menu"
182
  msgstr "jako podstronę w menu Kokpit"
183
 
184
- #: index.php:617
185
- msgid "Cleared database"
186
- msgstr "Wyczyść bazę danych"
 
187
 
188
- #: index.php:625
189
- msgid "Items in the database are automatically removed after 60 days."
190
- msgstr "Zdarzenia będą usuwane automatycznie z bazy danych po 60 dniach."
191
 
192
- #: index.php:627
193
- msgid "Clear it now."
194
- msgstr "Wyczyść teraz."
195
 
196
- #: index.php:641
197
- msgid ""
198
- "\n"
199
- "\t\t\tPlease\n"
200
- "\t\t\t<a href=\"http://eskapism.se/sida/donate/?"
201
- "utm_source=wordpress&utm_medium=settingpage&utm_campaign=simplehistory\">\n"
202
- "\t\t\tdonate\n"
203
- "\t\t\t</a> to support the development of this plugin and to keep it free.\n"
204
- "\t\t\tThanks!\n"
205
- "\t\t\t"
206
- msgstr ""
207
- "\n"
208
- "\t\t\tProsimy\n"
209
- "\t\t\t<a href=\"http://eskapism.se/sida/donate/?"
210
- "utm_source=wordpress&utm_medium=settingpage&utm_campaign=simplehistory\">\n"
211
- "\t\t\to wsparcie\n"
212
- "\t\t\t</a> procesu tworzenia wtyczki.\n"
213
- "\t\t\tDzięki!!\n"
214
- "\t\t\t"
215
-
216
- #: index.php:675
217
- msgid "Created new secret RSS address"
218
- msgstr "Utworzono nowy sekretny link do kanału RSS"
219
 
220
- #: index.php:686
221
- msgid ""
222
- "This is a secret RSS feed for Simple History. Only share the link with "
223
- "people you trust"
224
- msgstr ""
225
- "To jest sekretny link do kanału RSS Historii zdarzeń. Nie publikuj go "
226
- "nigdzie."
227
 
228
- #: index.php:689
229
- msgid ""
230
- "You can <a href='%s'>generate a new address</a> for the RSS feed. This is "
231
- "useful if you think that the address has fallen into the wrong hands."
232
- msgstr ""
233
- "Możesz <a href='%s'>wygenerować nowy link</a> kanału RSS. Ta opcja jest "
234
- "przydatna, jeśli poprzednii link wpadł w niepowołane ręce."
 
235
 
236
- #: index.php:740 index.php:756 index.php:788
237
- msgid "From %1$s on %2$s"
238
  msgstr ""
 
239
 
240
- #: index.php:1195
241
- msgid "All types"
242
- msgstr "Wszystkie wydarzenia"
243
 
244
- #: index.php:1356 index.php:1360
245
- msgid "By all users"
246
- msgstr "Wszyscy użytkownicy"
 
247
 
248
- #: index.php:1414
249
- msgid "Search"
250
- msgstr "Szukaj"
 
251
 
252
- #: index.php:1452
253
- msgid "Go to the first page"
254
- msgstr "Idź na pierwszą stronę"
 
255
 
256
- #: index.php:1453
257
- msgid "Go to the previous page"
258
- msgstr "Poprzednia strona"
259
 
260
- #: index.php:1454
261
- msgid "Current page"
262
- msgstr "Aktualna strona"
 
263
 
264
- #: index.php:1455
265
- msgid "of"
266
- msgstr "z"
 
 
 
 
 
 
267
 
268
- #: index.php:1456
269
- msgid "Go to the next page"
270
- msgstr "Następna strona"
271
 
272
- #: index.php:1457
273
- msgid "Go to the last page"
274
- msgstr "Ostatnia strona"
275
-
276
- #: index.php:1724
277
- msgid "Unknown or deleted user"
278
- msgstr "Nieznany lub usunięty użytkownik"
279
 
280
- #: index.php:1819
281
- msgid "File name:"
282
- msgstr "Nazwa pliku:"
283
 
284
- #: index.php:1820
285
- msgid "File size:"
286
- msgstr "Rozmiar pliku:"
287
 
288
- #: index.php:1822
289
- msgid "Dimensions:"
290
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
291
 
292
- #: index.php:1823
293
- msgid "Length:"
294
- msgstr ""
295
 
296
- #: index.php:1894 simple-history-extender/simple-history-extender.php:274
297
- msgid "activated"
298
- msgstr "aktywowano"
299
 
300
- #: index.php:1897 simple-history-extender/simple-history-extender.php:274
301
- msgid "deactivated"
302
- msgstr "deaktywowano"
303
 
304
- #: index.php:1900
305
- msgid "enabled"
306
- msgstr "włączono"
 
 
307
 
308
- #: index.php:1903
309
- msgid "disabled"
310
- msgstr "wyłączono"
 
 
311
 
312
- #: index.php:1919
313
- msgid "<span class=\"when\">%1$s ago</span> by %2$s"
314
- msgstr "<span class=\"when\">%1$s temu</span> przez %2$s"
 
 
 
 
315
 
316
- #: index.php:1921
317
- msgid "%s at %s"
318
- msgstr "%s o %s"
319
 
320
- #: index.php:1933 index.php:1981
321
- msgid "Details"
322
- msgstr "Szczegóły"
 
 
 
 
323
 
324
- #: index.php:1957
325
- msgid "+ 1 occasion"
326
- msgstr "+ 1 więcej"
 
 
 
 
327
 
328
- #: index.php:1960
329
- msgid "+ %d occasions"
330
- msgstr "+ %d więcej"
331
 
332
- #: index.php:1974
333
- msgid "%s ago (%s at %s)"
334
- msgstr "%s temu (%s o %s)"
 
 
 
 
 
 
335
 
336
- #: index.php:2017
337
- msgid "Show 5 more"
338
- msgstr "Pokaż 5 więcej"
339
 
340
- #: index.php:2018
341
- msgid "Show 15 more"
342
- msgstr "Pokaż 15 więcej"
343
 
344
- #: index.php:2019
345
- msgid "Show 50 more"
346
- msgstr "Pokaż 50 więcej"
 
 
 
 
 
347
 
348
- #: index.php:2020
349
- msgid "Show 100 more"
350
- msgstr "Pokaż 100 więcej"
 
351
 
352
- #: index.php:2023
353
- msgid "No matching items found."
354
- msgstr "Brak pasujących wyników"
 
355
 
356
- #: index.php:2026
357
- msgid "Show"
358
- msgstr "Pokaż"
 
 
 
 
 
359
 
360
- #: index.php:2032
361
- msgid "Loading..."
362
- msgstr "Ładowanie..."
 
 
 
 
 
363
 
364
- #: index.php:2051
365
- msgid "No history items found."
366
- msgstr "Nie ma elementów w historii."
 
367
 
368
- #: index.php:2052
 
369
  msgid ""
370
- "Please note that Simple History only records things that happen after this "
371
- "plugin have been installed."
372
  msgstr ""
 
 
373
 
374
- #: index.php:2065
375
- msgid "General Settings"
376
- msgstr "Ustawienia ogólne"
377
-
378
- #: index.php:2066
379
- msgid "Writing Settings"
380
- msgstr "Ustawienia pisania"
 
381
 
382
- #: index.php:2067
383
- msgid "Reading Settings"
384
- msgstr "Ustawienia czytania"
 
 
 
 
 
385
 
386
- #: index.php:2068
387
- msgid "Discussion Settings"
388
- msgstr "Ustawienia dyskusji"
 
 
 
 
 
389
 
390
- #: index.php:2069
391
- msgid "Media Settings"
392
- msgstr "Ustawienia mediów"
 
 
393
 
394
- #: index.php:2070
395
- msgid "Privacy Settings"
396
- msgstr "Ustawienia prywatności"
 
397
 
398
- #: index.php:2086
399
- msgid "Permalink Settings"
400
- msgstr "Ustawienia odnośników bezpośrednich"
 
 
 
 
 
401
 
402
- #: simple-history-extender/class.simple-history-extend.php:68
403
- msgid "Log events for the %s plugin."
404
- msgstr "Loguj zdarzenia dla wtyczki: %s."
 
 
 
 
 
405
 
406
- #: simple-history-extender/class.simple-history-extend.php:69
407
- msgid "Log events for %s."
408
- msgstr "Loguj wydarzenia dla: %s."
 
409
 
410
- #: simple-history-extender/class.simple-history-extend.php:93
411
- msgid "unmarked as spam"
 
 
 
412
  msgstr ""
 
 
413
 
414
- #: simple-history-extender/class.simple-history-extend.php:96
415
- msgid "submitted"
 
 
 
416
  msgstr ""
 
 
417
 
418
- #: simple-history-extender/class.simple-history-extend.php:150
419
- msgid "The %s module logs the following events:"
 
 
 
420
  msgstr ""
 
 
421
 
422
- #: simple-history-extender/class.simple-history-extend.php:165
423
- msgid "The %s module does not support the following events:"
 
 
 
424
  msgstr ""
 
 
425
 
426
- #: simple-history-extender/class.simple-history-extend.php:263
427
- msgid "User"
428
- msgstr "Użytkownik"
 
 
429
 
430
- #: simple-history-extender/modules/bbpress.php:28
431
- msgid "BBPress"
432
- msgstr ""
 
433
 
434
- #: simple-history-extender/modules/bbpress.php:32
435
- msgid "Creating, editing and deleting a forum, topic, reply."
 
 
 
436
  msgstr ""
 
 
437
 
438
- #: simple-history-extender/modules/bbpress.php:33
439
- msgid "Setting the type of a forum to category or forum."
 
 
 
440
  msgstr ""
 
 
441
 
442
- #: simple-history-extender/modules/bbpress.php:34
443
- msgid "Setting the status of a forum, topic to open or closed."
444
- msgstr ""
 
445
 
446
- #: simple-history-extender/modules/bbpress.php:35
447
- msgid "Setting the forum visibility to public, private or hidden."
 
 
 
448
  msgstr ""
 
 
449
 
450
- #: simple-history-extender/modules/bbpress.php:36
451
- msgid "Trashing and untrashing a forum, topic, reply."
 
 
 
452
  msgstr ""
 
 
453
 
454
- #: simple-history-extender/modules/bbpress.php:37
455
- msgid "Marking and unmarking a topic, reply as spam."
 
 
 
456
  msgstr ""
 
 
457
 
458
- #: simple-history-extender/modules/bbpress.php:38
459
- msgid "Marking and unmarking a topic as sticky."
460
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
461
 
462
- #: simple-history-extender/modules/bbpress.php:39
463
- msgid "Merging and splitting a topic."
464
- msgstr ""
 
465
 
466
- #: simple-history-extender/modules/bbpress.php:40
467
- msgid "Updating, merging and deleting a topic tag."
468
- msgstr ""
 
469
 
470
- #: simple-history-extender/modules/bbpress.php:41
471
- msgid "A user (un)favoriting and (un)subscribing to a topic."
472
- msgstr ""
 
473
 
474
- #: simple-history-extender/modules/bbpress.php:42
475
- msgid "A user saving his/her profile."
476
- msgstr ""
477
 
478
- #: simple-history-extender/modules/bbpress.php:53
479
- msgid "closed"
480
- msgstr ""
 
481
 
482
- #: simple-history-extender/modules/bbpress.php:54
483
- msgid "opened"
484
- msgstr ""
485
 
486
- #: simple-history-extender/modules/bbpress.php:55
487
- msgid "marked as sticky"
488
- msgstr ""
489
 
490
- #: simple-history-extender/modules/bbpress.php:56
491
- msgid "marked as super sticky"
492
- msgstr ""
 
493
 
494
- #: simple-history-extender/modules/bbpress.php:57
495
- msgid "unmarked as sticky"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
496
  msgstr ""
 
 
497
 
498
- #: simple-history-extender/modules/bbpress.php:58
499
- msgid "set to category type"
500
- msgstr ""
 
501
 
502
- #: simple-history-extender/modules/bbpress.php:59
503
- msgid "set to forum type"
504
- msgstr ""
 
505
 
506
- #: simple-history-extender/modules/bbpress.php:60
507
- msgid "set to public"
508
- msgstr ""
 
509
 
510
- #: simple-history-extender/modules/bbpress.php:61
511
- msgid "set to private"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
512
  msgstr ""
 
 
513
 
514
- #: simple-history-extender/modules/bbpress.php:62
515
- msgid "set to hidden"
516
- msgstr ""
517
 
518
- #: simple-history-extender/modules/bbpress.php:63
519
- msgid "in forum %s merged into %s"
520
- msgstr ""
521
 
522
- #: simple-history-extender/modules/bbpress.php:64
523
- msgid "in forum %s split from reply %s by %s into %s in forum %s"
524
  msgstr ""
 
525
 
526
- #: simple-history-extender/modules/bbpress.php:131
527
- msgid "Forum"
528
- msgstr ""
529
 
530
- #: simple-history-extender/modules/bbpress.php:141
531
- msgid "Topic"
532
  msgstr ""
 
 
533
 
534
- #: simple-history-extender/modules/bbpress.php:150
535
- msgid "Topic Tag"
536
- msgstr ""
537
 
538
- #: simple-history-extender/modules/bbpress.php:161
539
- msgid "by %s"
540
- msgstr ""
541
 
542
- #: simple-history-extender/modules/bbpress.php:162
543
- msgid "Reply"
544
- msgstr ""
 
545
 
546
- #: simple-history-extender/modules/bbpress.php:174
547
- msgid "as child of %s"
548
- msgstr ""
 
549
 
550
- #: simple-history-extender/modules/bbpress.php:235
551
- #: simple-history-extender/modules/bbpress.php:245
552
- msgid "in forum %s"
553
- msgstr ""
554
 
555
- #: simple-history-extender/modules/bbpress.php:358
556
- msgid "favorited"
557
- msgstr ""
 
558
 
559
- #: simple-history-extender/modules/bbpress.php:362
560
- msgid "unfavorited"
561
- msgstr ""
 
562
 
563
- #: simple-history-extender/modules/bbpress.php:366
564
- msgid "subscribed"
565
- msgstr ""
 
566
 
567
- #: simple-history-extender/modules/bbpress.php:370
568
- msgid "unsubscribed"
569
- msgstr ""
 
570
 
571
- #: simple-history-extender/modules/bbpress.php:374
572
- msgid "profile updated"
573
- msgstr ""
 
574
 
575
- #: simple-history-extender/modules/bbpress.php:378
576
- msgid "registered"
577
- msgstr ""
578
 
579
- #: simple-history-extender/modules/bbpress.php:390
580
- msgid "changed forum role to %s"
 
 
581
  msgstr ""
 
 
582
 
583
- #: simple-history-extender/modules/bbpress.php:390
584
- msgid "none"
 
 
585
  msgstr ""
 
 
586
 
587
- #: simple-history-extender/modules/gravityforms.php:28
588
- msgid "Gravity Forms"
589
- msgstr ""
590
 
591
- #: simple-history-extender/modules/gravityforms.php:32
592
- msgid "Creating, editing and deleting a form."
593
- msgstr ""
594
 
595
- #: simple-history-extender/modules/gravityforms.php:33
596
- msgid "Deleting a field from an existing form."
597
- msgstr ""
598
 
599
- #: simple-history-extender/modules/gravityforms.php:34
600
- msgid "Submitting, editing and deleting an entry."
601
- msgstr ""
602
 
603
- #: simple-history-extender/modules/gravityforms.php:35
604
- msgid "Changing the status of an entry, including read/unread and star/unstar."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
605
  msgstr ""
 
 
606
 
607
- #: simple-history-extender/modules/gravityforms.php:38
608
- msgid "Duplicating a form."
609
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
610
 
611
- #: simple-history-extender/modules/gravityforms.php:39
612
- msgid "Setting a form to active/inactive."
613
- msgstr ""
614
 
615
- #: simple-history-extender/modules/gravityforms.php:48
616
- msgid "starred"
617
  msgstr ""
 
618
 
619
- #: simple-history-extender/modules/gravityforms.php:49
620
- msgid "unstarred"
621
- msgstr ""
622
 
623
- #: simple-history-extender/modules/gravityforms.php:50
624
- msgid "marked as read"
625
- msgstr ""
626
 
627
- #: simple-history-extender/modules/gravityforms.php:51
628
- msgid "marked as unread"
629
- msgstr ""
630
 
631
- #: simple-history-extender/modules/gravityforms.php:110
632
- msgid "from %s"
633
- msgstr ""
634
 
635
- #: simple-history-extender/modules/gravityforms.php:112
636
- msgid "from unknown"
637
- msgstr ""
638
 
639
- #: simple-history-extender/modules/gravityforms.php:120
640
- msgid "Form"
641
- msgstr ""
642
 
643
- #: simple-history-extender/modules/gravityforms.php:129
644
- msgid "Form entry"
645
- msgstr ""
646
 
647
- #: simple-history-extender/modules/gravityforms.php:150
648
- msgid "without entries deleted"
649
- msgstr ""
650
 
651
- #: simple-history-extender/modules/gravityforms.php:151
652
- msgid "with %d entries deleted"
653
- msgstr ""
654
 
655
- #: simple-history-extender/modules/gravityforms.php:160
656
- msgid "field %s deleted"
657
- msgstr ""
658
 
659
- #: simple-history-extender/modules/gravityforms.php:201
660
- msgid "restored"
661
- msgstr ""
662
 
663
- #: simple-history-extender/modules/gravityforms.php:206
664
- msgid "changed status"
665
- msgstr ""
666
 
667
- #: simple-history-extender/modules/widgets.php:25
668
- msgid "Widgets"
669
- msgstr ""
 
 
670
 
671
- #: simple-history-extender/modules/widgets.php:27
672
- msgid "Log events for the Widgets section of your WP install."
673
- msgstr ""
674
 
675
- #: simple-history-extender/modules/widgets.php:30
676
- msgid "Adding, updating and deleting widgets in/from a sidebar."
677
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
678
 
679
- #: simple-history-extender/modules/widgets.php:33
680
- msgid "Moving widgets between sidebars."
681
- msgstr ""
 
 
 
682
 
683
- #: simple-history-extender/modules/widgets.php:34
684
- msgid "Setting a widget to active/inactive."
685
- msgstr ""
686
 
687
- #: simple-history-extender/modules/widgets.php:86
688
- msgid "removed from sidebar %s"
689
- msgstr ""
690
 
691
- #: simple-history-extender/modules/widgets.php:88
692
- msgid "updated in sidebar %s"
693
- msgstr ""
694
 
695
- #: simple-history-extender/modules/widgets.php:90
696
- msgid "added to sidebar %s"
697
- msgstr ""
698
 
699
- #: simple-history-extender/modules/widgets.php:95
700
- msgid "Widget"
701
- msgstr ""
702
 
703
- #: simple-history-extender/simple-history-extender.php:139
704
- msgid "Settings"
705
- msgstr "Ustawienia"
706
 
707
- #: simple-history-extender/simple-history-extender.php:162
708
- msgid ""
709
- "The Simple History Extender plugin was deactivated because the Simple "
710
- "History plugin was not found installed or active."
711
- msgstr ""
712
 
713
- #: simple-history-extender/simple-history-extender.php:163
714
- msgid "The Simple History Extender plugin was deactivated."
715
- msgstr ""
716
 
717
- #: simple-history-extender/simple-history-extender.php:167
718
- msgid "Return"
719
- msgstr ""
720
 
721
- #: simple-history-extender/simple-history-extender.php:226
722
- msgid "Simple History Extender Modules"
723
- msgstr "Historia zdarzeń - moduły rozszerzeń"
724
 
725
- #: simple-history-extender/simple-history-extender.php:236
726
- msgid ""
727
- "Activate or deactivate the events you want to log. Read the Help tab if you "
728
- "want to know which actions are supported and which aren't."
729
- msgstr ""
730
- "Zaznacz te zdarzenia, które mają być zapisywane w historii. Otwórz zakładnkę "
731
- "Pomoc u góry ekranu, aby dowiedzieć się jakie akcje są wspierane w ramach "
732
- "danego rozszerzenia."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
733
 
734
- #: simple-history-extender/simple-history-extender.php:275
735
- msgid "Simple History Extender Module"
736
- msgstr "Historia zdarzeń - moduł rozszerzeń"
4
  msgstr ""
5
  "Project-Id-Version: Simple History\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/simple-history\n"
7
+ "POT-Creation-Date: 2014-12-29 08:36+0100\n"
8
+ "PO-Revision-Date: 2014-12-29 08:42+0100\n"
 
 
 
9
  "Last-Translator: Mateusz Czardybon <mczardybon@netizens.pl>\n"
10
  "Language-Team: Mateusz Czardybon <mczardybon@netizens.pl>\n"
 
11
  "Language: pl_PL\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-SourceCharset: UTF-8\n"
17
+ "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
18
+ "|| n%100>=20) ? 1 : 2);\n"
19
  "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
20
  "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
21
  "esc_attr_x:1,2c\n"
22
+ "X-Poedit-SourceCharset: UTF-8\n"
23
  "X-Poedit-Basepath: ../\n"
24
+ "X-Textdomain-Support: yes\n"
25
+ "X-Poedit-SearchPath-0: .\n"
 
 
 
26
 
27
+ #: SimpleHistory.php:177
28
+ msgctxt ""
29
+ "Message visible while waiting for log to load from server the first time"
30
+ msgid "Loading history..."
31
+ msgstr "Ładowanie zdarzeń..."
32
 
33
+ #: SimpleHistory.php:214
34
+ msgctxt "page n of n"
35
+ msgid "of"
36
+ msgstr "z"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
 
38
+ #: SimpleHistory.php:285
39
+ msgctxt "API: not enought arguments passed"
40
+ msgid "Not enough args specified"
41
+ msgstr "Brak potrzebnych argumentów"
42
 
43
+ #: SimpleHistory.php:434 SimpleHistory.php:696
44
+ msgid "Settings"
45
+ msgstr "Ustawienia"
46
 
47
+ #: SimpleHistory.php:445
48
+ msgid "Log (debug)"
49
+ msgstr "Zdarzenia (debug)"
50
 
51
+ #: SimpleHistory.php:450
52
+ msgid "Styles example (debug)"
53
+ msgstr "Przykłady styli (debug)"
54
 
55
+ #: SimpleHistory.php:711
56
+ msgid "Simple History"
57
+ msgstr "Historia zdarzeń"
58
 
59
+ #: SimpleHistory.php:787
60
+ msgid "Remove all log items?"
61
+ msgstr "Czy na pewno chcesz usunąć wszystkie zdarzenia z bazy danych?"
62
 
63
+ #: SimpleHistory.php:789
64
+ msgid "Go to the first page"
65
+ msgstr "Pierwsza strona"
66
 
67
+ #: SimpleHistory.php:790
68
+ msgid "Go to the previous page"
69
+ msgstr "Poprzednia strona"
70
 
71
+ #: SimpleHistory.php:791
72
+ msgid "Go to the next page"
73
+ msgstr "Następna strona"
74
 
75
+ #: SimpleHistory.php:792
76
+ msgid "Go to the last page"
77
+ msgstr "Ostatnia strona"
78
 
79
+ #: SimpleHistory.php:793
80
+ msgid "Current page"
81
+ msgstr "Aktualna strona"
82
 
83
+ #: SimpleHistory.php:795
84
+ msgid "Oups, the log could not be loaded right now."
85
+ msgstr "Ups, zdarzenie nie może być teraz załadowane."
86
 
87
+ #: SimpleHistory.php:796
88
+ msgid "Your search did not match any history events."
89
+ msgstr "Nie ma zdarzeń odpowiadającym Twoim kryteriom wyszukiwania."
90
 
91
+ #: SimpleHistory.php:1090 SimpleHistory.php:1193
92
+ msgid "Simple History Settings"
93
+ msgstr "Historia zdarzeń - ustawienia"
94
 
95
+ #: SimpleHistory.php:1124
96
+ msgid "No valid callback found"
97
+ msgstr "Nie znaleziono odpowiedniej funkcji"
98
 
99
+ #: SimpleHistory.php:1178
100
+ msgctxt "dashboard menu name"
101
+ msgid "Simple History"
102
+ msgstr "Historia zdarzeń"
103
 
104
+ #: SimpleHistory.php:1214
105
+ msgid "Cleared database"
106
+ msgstr "Wyczyść bazę danych"
107
 
108
+ #: SimpleHistory.php:1241
109
+ msgid "Show history"
110
+ msgstr "Pokaż zdarzenia"
111
 
112
+ #: SimpleHistory.php:1254
113
  msgid "Number of items per page"
114
  msgstr "Liczba elementów na stronie"
115
 
116
+ #: SimpleHistory.php:1266
 
 
 
 
117
  msgid "Clear log"
118
  msgstr "Wyczyść historię"
119
 
120
+ #: SimpleHistory.php:1303
121
+ msgctxt "history page headline"
122
+ msgid "Simple History"
123
+ msgstr "Historia zdarzeń"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
 
125
+ #: SimpleHistory.php:1406
126
  msgid "on the dashboard"
127
  msgstr "jako widget w Kokpicie"
128
 
129
+ #: SimpleHistory.php:1411
130
  msgid "as a page under the dashboard menu"
131
  msgstr "jako podstronę w menu Kokpit"
132
 
133
+ #: SimpleHistory.php:1427
134
+ #, php-format
135
+ msgid "Items in the database are automatically removed after %1$s days."
136
+ msgstr "Zdarzenia będą usuwane automatycznie z bazy danych po %1$s dniach."
137
 
138
+ #: SimpleHistory.php:1429
139
+ msgid "Items in the database are kept forever."
140
+ msgstr "Zdarzenia nigdy nie będą usuwane z bazy danych."
141
 
142
+ #: SimpleHistory.php:1433
143
+ msgid "Clear log now"
144
+ msgstr "Wyczyść zdarzenia"
145
 
146
+ #: SimpleHistory.php:1658
147
+ #, php-format
148
+ msgid "+%1$s more"
149
+ msgstr "+%1$s więcej"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
 
151
+ #: SimpleHistory.php:1665
152
+ msgid "Loading…"
153
+ msgstr "Ładuję..."
 
 
 
 
154
 
155
+ #: SimpleHistory.php:1672
156
+ #, php-format
157
+ msgid "Showing %1$s more"
158
+ msgstr "Pokazuję %1$s więcej"
159
+
160
+ #: SimpleHistory.php:1691
161
+ msgid "Context data"
162
+ msgstr "Dane kontekstowe"
163
 
164
+ #: SimpleHistory.php:1692
165
+ msgid "This is potentially useful meta data that a logger have saved."
166
  msgstr ""
167
+ "To są potencjalnie przydatne informacje dodane podczas zapisywania zdarzenia."
168
 
169
+ #: SimpleHistory.php:2029
170
+ msgid "No events today so far."
171
+ msgstr "Brak zdarzeń z dzisiejszego dnia."
172
 
173
+ #: SimpleHistory.php:2033
174
+ #, php-format
175
+ msgid "%1$d event today from one user."
176
+ msgstr "Dziś: %1$d zdarzenie od jednego użytkownika."
177
 
178
+ #: SimpleHistory.php:2037
179
+ #, php-format
180
+ msgid "%1$d events today from %2$d users."
181
+ msgstr "Dziś: %1$d zdarzeń od %2$d użytkowników."
182
 
183
+ #: SimpleHistory.php:2041
184
+ #, php-format
185
+ msgid "%1$d events today from one user."
186
+ msgstr "Dziś: %1$d zdarzeń od jednego użytkownika."
187
 
188
+ #: dropins/SimpleHistoryDonateDropin.php:36
189
+ msgid "Donate"
190
+ msgstr "Darowizna"
191
 
192
+ #: dropins/SimpleHistoryDonateDropin.php:51
193
+ msgctxt "donate settings headline"
194
+ msgid "Donate"
195
+ msgstr "Darowizna"
196
 
197
+ #: dropins/SimpleHistoryDonateDropin.php:72
198
+ #, php-format
199
+ msgid ""
200
+ "If you find Simple History useful please <a href=\"%1$s\">donate</a> or <a "
201
+ "href=\"%2$s\">buy me something from my Amazon wish list</a>."
202
+ msgstr ""
203
+ "Jeśli podoba Ci się moja wtyczka i uważasz że jest przydatna, to możesz mnie "
204
+ "wesprzeć <a href=\"%1$s\">przekazując darowiznę</a> lub <a href=\"%2$s"
205
+ "\">kupując mi coś z listy życzeń na Amazonie</a>."
206
 
207
+ #: dropins/SimpleHistoryFilterDropin.php:43
208
+ msgid "Filter history"
209
+ msgstr "Filtry zdarzeń"
210
 
211
+ #: dropins/SimpleHistoryFilterDropin.php:50
212
+ msgid "All log levels"
213
+ msgstr "Wszystkie poziomy zdarzeń"
 
 
 
 
214
 
215
+ #: dropins/SimpleHistoryFilterDropin.php:64
216
+ msgid "All messages"
217
+ msgstr "Wszystkie rodzaje zdarzeń"
218
 
219
+ #: dropins/SimpleHistoryFilterDropin.php:118
220
+ msgid "All users"
221
+ msgstr "Wszyscy użytkownicy"
222
 
223
+ #: dropins/SimpleHistoryFilterDropin.php:139
224
+ msgid "All dates"
225
+ msgstr "Wszystkie daty"
226
+
227
+ #: dropins/SimpleHistoryFilterDropin.php:153
228
+ msgid "Filter"
229
+ msgstr "Filtruj"
230
+
231
+ #: dropins/SimpleHistoryIpInfoDropin.php:66
232
+ msgctxt "IP Info Dropin"
233
+ msgid "That IP address does not seem like a public one."
234
+ msgstr "Wydaje się, że ten adres IP nie jest adresem publicznym."
235
+
236
+ #: dropins/SimpleHistoryIpInfoDropin.php:85
237
+ msgctxt "IP Info Dropin"
238
+ msgid "IP address"
239
+ msgstr "Adres IP"
240
+
241
+ #: dropins/SimpleHistoryIpInfoDropin.php:96
242
+ msgctxt "IP Info Dropin"
243
+ msgid "Hostname"
244
+ msgstr "Nazwa hosta"
245
+
246
+ #: dropins/SimpleHistoryIpInfoDropin.php:107
247
+ #: dropins/SimpleHistoryIpInfoDropin.php:118
248
+ msgctxt "IP Info Dropin"
249
+ msgid "Network"
250
+ msgstr "Sieć"
251
+
252
+ #: dropins/SimpleHistoryIpInfoDropin.php:129
253
+ msgctxt "IP Info Dropin"
254
+ msgid "City"
255
+ msgstr "Miasto"
256
+
257
+ #: dropins/SimpleHistoryIpInfoDropin.php:140
258
+ msgctxt "IP Info Dropin"
259
+ msgid "Region"
260
+ msgstr "Region"
261
+
262
+ #: dropins/SimpleHistoryIpInfoDropin.php:151
263
+ msgctxt "IP Info Dropin"
264
+ msgid "Country"
265
+ msgstr "Kraj"
266
+
267
+ #: dropins/SimpleHistoryIpInfoDropin.php:162
268
+ #, php-format
269
+ msgctxt "IP Info Dropin"
270
+ msgid "IP info provided by %1$s ipinfo.io %2$s"
271
+ msgstr "Informacje o adresie IP dostarczone przez %1$s ipinfo.io %2$s"
272
+
273
+ #: dropins/SimpleHistoryNewRowsNotifier.php:38
274
+ msgctxt "New rows notifier: error while checking for new rows"
275
+ msgid "An error occured while checking for new log rows"
276
+ msgstr "Wystąpił błąd podczas sprawdzania czy są nowe zdarzenia"
277
+
278
+ #: dropins/SimpleHistoryNewRowsNotifier.php:80
279
+ #, php-format
280
+ msgid "1 new row"
281
+ msgid_plural "%d new rows"
282
+ msgstr[0] "1 nowe zdarzenie"
283
+ msgstr[1] "%d nowe zdarzenia"
284
+ msgstr[2] "%d nowych zdarzeń"
285
+
286
+ #: dropins/SimpleHistoryRSSDropin.php:47
287
+ msgctxt "rss settings headline"
288
+ msgid "RSS feed"
289
+ msgstr "Kanał RSS"
290
 
291
+ #: dropins/SimpleHistoryRSSDropin.php:55
292
+ msgid "Address"
293
+ msgstr "Adres URL"
294
 
295
+ #: dropins/SimpleHistoryRSSDropin.php:64
296
+ msgid "Regenerate"
297
+ msgstr "Resetowanie adresu URL kanału"
298
 
299
+ #: dropins/SimpleHistoryRSSDropin.php:81
300
+ msgid "Created new secret RSS address"
301
+ msgstr "Utworzono nowy sekretny link do kanału RSS"
302
 
303
+ #: dropins/SimpleHistoryRSSDropin.php:148
304
+ #: dropins/SimpleHistoryRSSDropin.php:256
305
+ #, php-format
306
+ msgid "History for %s"
307
+ msgstr "Historia dla %s"
308
 
309
+ #: dropins/SimpleHistoryRSSDropin.php:149
310
+ #: dropins/SimpleHistoryRSSDropin.php:257
311
+ #, php-format
312
+ msgid "WordPress History for %s"
313
+ msgstr "Historia WordPressa dla %s"
314
 
315
+ #: dropins/SimpleHistoryRSSDropin.php:196
316
+ #, php-format
317
+ msgid "+%1$s occasion"
318
+ msgid_plural "+%1$s occasions"
319
+ msgstr[0] "+ 1 wystąpienie"
320
+ msgstr[1] "+ %1$s wystąpienia"
321
+ msgstr[2] "+ %1$s wystąpień"
322
 
323
+ #: dropins/SimpleHistoryRSSDropin.php:260
324
+ msgid "Wrong RSS secret"
325
+ msgstr "Błędny klucz kanału RSS"
326
 
327
+ #: dropins/SimpleHistoryRSSDropin.php:261
328
+ msgid ""
329
+ "Your RSS secret for Simple History RSS feed is wrong. Please see WordPress "
330
+ "settings for current link to the RSS feed."
331
+ msgstr ""
332
+ "Twój sekretny link z dostępem do kanału RSS Historii zdarzeń jest błędny. "
333
+ "Przejdź do ustawień WordPressa, żeby zobaczyć aktualny adres tego kanału."
334
 
335
+ #: dropins/SimpleHistoryRSSDropin.php:312
336
+ msgid ""
337
+ "You can generate a new address for the RSS feed. This is useful if you think "
338
+ "that the address has fallen into the wrong hands."
339
+ msgstr ""
340
+ "Możesz wygenerować nowy adres kanału RSS. Ta opcja jest przydatna, jeśli "
341
+ "poprzednii link wpadł w niepowołane ręce."
342
 
343
+ #: dropins/SimpleHistoryRSSDropin.php:315
344
+ msgid "Generate new address"
345
+ msgstr "Utwórz nowy adres URL"
346
 
347
+ #: dropins/SimpleHistoryRSSDropin.php:343
348
+ msgid ""
349
+ "Simple History has a RSS feed which you can subscribe to and receive log "
350
+ "updates. Make sure you only share the feed with people you trust, since it "
351
+ "can contain sensitive or confidential information."
352
+ msgstr ""
353
+ "Wtyczka Simple History udostępnia kanał RSS, który możesz zasubskrybować i w "
354
+ "ten sposób otrzymywać powiadomienia o zdarzeniach. Upewnij się, adres tego "
355
+ "kanału znają tylko zaufane osoby, ponieważ może on zawierać dane poufne."
356
 
357
+ #: dropins/SimpleHistorySettingsLogtestDropin.php:20
358
+ msgid "Test data (debug)"
359
+ msgstr "Dane testowe (debug)"
360
 
361
+ #: dropins/SimpleHistorySettingsStatsDropin.php:27
362
+ msgid "Stats"
363
+ msgstr "Statystyki"
364
 
365
+ #: index.php:55
366
+ #, php-format
367
+ msgid ""
368
+ "Simple History is a great plugin, but to use it your server must have at "
369
+ "least PHP 5.3 installed (you have version %s)."
370
+ msgstr ""
371
+ "Wtyczka Simple History do prawidłowego działania wymaga serwera z obsługą "
372
+ "PHP co najmniej 5.3 (aktualnie jest %s)."
373
 
374
+ #: loggers/SimpleCommentsLogger.php:95
375
+ msgctxt "A comment was added to the database by a non-logged in internet user"
376
+ msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
377
+ msgstr "Dodano komentarz do {comment_post_type} \"{comment_post_title}\""
378
 
379
+ #: loggers/SimpleCommentsLogger.php:101
380
+ msgctxt "A comment was added to the database by a logged in user"
381
+ msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
382
+ msgstr "Dodano komentarz do {comment_post_type} \"{comment_post_title}\""
383
 
384
+ #: loggers/SimpleCommentsLogger.php:107
385
+ msgctxt "A comment was approved"
386
+ msgid ""
387
+ "Approved a comment to \"{comment_post_title}\" by {comment_author} "
388
+ "({comment_author_email})"
389
+ msgstr ""
390
+ "Zatwierdzono komentarz dla \"{comment_post_title}\" dodany przez "
391
+ "{comment_author} ({comment_author_email})"
392
 
393
+ #: loggers/SimpleCommentsLogger.php:113
394
+ msgctxt "A comment was was unapproved"
395
+ msgid ""
396
+ "Unapproved a comment to \"{comment_post_title}\" by {comment_author} "
397
+ "({comment_author_email})"
398
+ msgstr ""
399
+ "Odrzucono komentarz \"{comment_post_title}\" dodany przez {comment_author} "
400
+ "({comment_author_email})"
401
 
402
+ #: loggers/SimpleCommentsLogger.php:119
403
+ msgctxt "A comment was marked as spam"
404
+ msgid "Marked a comment to post \"{comment_post_title}\" as spam"
405
+ msgstr "Komentarz dodany do \"{comment_post_title}\" oznaczono jako spam"
406
 
407
+ #: loggers/SimpleCommentsLogger.php:125
408
+ msgctxt "A comment was marked moved to the trash"
409
  msgid ""
410
+ "Trashed a comment to \"{comment_post_title}\" by {comment_author} "
411
+ "({comment_author_email})"
412
  msgstr ""
413
+ "Komentarz dodany do \"{comment_post_title}\" przez {comment_author} "
414
+ "({comment_author_email}) przeniesiono do Kosza"
415
 
416
+ #: loggers/SimpleCommentsLogger.php:131
417
+ msgctxt "A comment was restored from the trash"
418
+ msgid ""
419
+ "Restored a comment to \"{comment_post_title}\" by {comment_author} "
420
+ "({comment_author_email}) from the trash"
421
+ msgstr ""
422
+ "Przywrócono z Kosza komentarz dodany do \"{comment_post_title}\" przez "
423
+ "{comment_author} ({comment_author_email})"
424
 
425
+ #: loggers/SimpleCommentsLogger.php:137
426
+ msgctxt "A comment was deleted"
427
+ msgid ""
428
+ "Deleted a comment to \"{comment_post_title}\" by {comment_author} "
429
+ "({comment_author_email})"
430
+ msgstr ""
431
+ "Usunięto komentarz dodany do \"{comment_post_title}\" przez {comment_author} "
432
+ "({comment_author_email})"
433
 
434
+ #: loggers/SimpleCommentsLogger.php:143
435
+ msgctxt "A comment was edited"
436
+ msgid ""
437
+ "Edited a comment to \"{comment_post_title}\" by {comment_author} "
438
+ "({comment_author_email})"
439
+ msgstr ""
440
+ "Edytowano komentarz dodany do \"{comment_post_title}\" przez "
441
+ "{comment_author} ({comment_author_email})"
442
 
443
+ #: loggers/SimpleCommentsLogger.php:150
444
+ msgctxt ""
445
+ "A trackback was added to the database by a non-logged in internet user"
446
+ msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
447
+ msgstr "Dodano trackback do {comment_post_type} \"{comment_post_title}\""
448
 
449
+ #: loggers/SimpleCommentsLogger.php:156
450
+ msgctxt "A trackback was added to the database by a logged in user"
451
+ msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
452
+ msgstr "Dodano trackback do {comment_post_type} \"{comment_post_title}\""
453
 
454
+ #: loggers/SimpleCommentsLogger.php:162
455
+ msgctxt "A trackback was approved"
456
+ msgid ""
457
+ "Approved a trackback to \"{comment_post_title}\" by {comment_author} "
458
+ "({comment_author_email})"
459
+ msgstr ""
460
+ "Zatwierdzono trackback do \"{comment_post_title}\" dodany przez "
461
+ "{comment_author} ({comment_author_email})"
462
 
463
+ #: loggers/SimpleCommentsLogger.php:168
464
+ msgctxt "A trackback was was unapproved"
465
+ msgid ""
466
+ "Unapproved a trackback to \"{comment_post_title}\" by {comment_author} "
467
+ "({comment_author_email})"
468
+ msgstr ""
469
+ "Odrzucono trackback do \"{comment_post_title}\" dodany przez "
470
+ "{comment_author} ({comment_author_email})"
471
 
472
+ #: loggers/SimpleCommentsLogger.php:174
473
+ msgctxt "A trackback was marked as spam"
474
+ msgid "Marked a trackback to post \"{comment_post_title}\" as spam"
475
+ msgstr "Trackback dodany do \"{comment_post_title}\" oznaczono jako spam"
476
 
477
+ #: loggers/SimpleCommentsLogger.php:180
478
+ msgctxt "A trackback was marked moved to the trash"
479
+ msgid ""
480
+ "Trashed a trackback to \"{comment_post_title}\" by {comment_author} "
481
+ "({comment_author_email})"
482
  msgstr ""
483
+ "Przeniesiono do Kosza trackback do \"{comment_post_title}\" dodany przez "
484
+ "{comment_author} ({comment_author_email})"
485
 
486
+ #: loggers/SimpleCommentsLogger.php:186
487
+ msgctxt "A trackback was restored from the trash"
488
+ msgid ""
489
+ "Restored a trackback to \"{comment_post_title}\" by {comment_author} "
490
+ "({comment_author_email}) from the trash"
491
  msgstr ""
492
+ "Przywrócono z Kosza trackback do \"{comment_post_title}\" dodany przez "
493
+ "{comment_author} ({comment_author_email})"
494
 
495
+ #: loggers/SimpleCommentsLogger.php:192
496
+ msgctxt "A trackback was deleted"
497
+ msgid ""
498
+ "Deleted a trackback to \"{comment_post_title}\" by {comment_author} "
499
+ "({comment_author_email})"
500
  msgstr ""
501
+ "Usunięto trackback do \"{comment_post_title}\" dodany przez {comment_author} "
502
+ "({comment_author_email})"
503
 
504
+ #: loggers/SimpleCommentsLogger.php:198
505
+ msgctxt "A trackback was edited"
506
+ msgid ""
507
+ "Edited a trackback to \"{comment_post_title}\" by {comment_author} "
508
+ "({comment_author_email})"
509
  msgstr ""
510
+ "Edytowano trackback do \"{comment_post_title}\" dodany przez "
511
+ "{comment_author} ({comment_author_email})"
512
 
513
+ #: loggers/SimpleCommentsLogger.php:205
514
+ msgctxt ""
515
+ "A trackback was added to the database by a non-logged in internet user"
516
+ msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
517
+ msgstr "Dodano pingback do {comment_post_type} \"{comment_post_title}\""
518
 
519
+ #: loggers/SimpleCommentsLogger.php:211
520
+ msgctxt "A pingback was added to the database by a logged in user"
521
+ msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
522
+ msgstr "Dodano pingback do {comment_post_type} \"{comment_post_title}\""
523
 
524
+ #: loggers/SimpleCommentsLogger.php:217
525
+ msgctxt "A pingback was approved"
526
+ msgid ""
527
+ "Approved a pingback to \"{comment_post_title}\" by "
528
+ "\"{comment_author}\"\" ({comment_author_email})"
529
  msgstr ""
530
+ "Zatwierdzono pingback do \"{comment_post_title}\" dodany przez "
531
+ "\"{comment_author}\"\" ({comment_author_email})"
532
 
533
+ #: loggers/SimpleCommentsLogger.php:223
534
+ msgctxt "A pingback was was unapproved"
535
+ msgid ""
536
+ "Unapproved a pingback to \"{comment_post_title}\" by "
537
+ "\"{comment_author}\" ({comment_author_email})"
538
  msgstr ""
539
+ "Odrzucono pingback do \"{comment_post_title}\" dodany przez "
540
+ "\"{comment_author}\" ({comment_author_email})"
541
 
542
+ #: loggers/SimpleCommentsLogger.php:229
543
+ msgctxt "A pingback was marked as spam"
544
+ msgid "Marked a pingback to post \"{comment_post_title}\" as spam"
545
+ msgstr "Pingback do wpisu \"{comment_post_title}\" oznaczono jako spam"
546
 
547
+ #: loggers/SimpleCommentsLogger.php:235
548
+ msgctxt "A pingback was marked moved to the trash"
549
+ msgid ""
550
+ "Trashed a pingback to \"{comment_post_title}\" by {comment_author} "
551
+ "({comment_author_email})"
552
  msgstr ""
553
+ "Przeniesiono do Kosza pingback do \"{comment_post_title}\" dodany przez "
554
+ "{comment_author} ({comment_author_email})"
555
 
556
+ #: loggers/SimpleCommentsLogger.php:241
557
+ msgctxt "A pingback was restored from the trash"
558
+ msgid ""
559
+ "Restored a pingback to \"{comment_post_title}\" by {comment_author} "
560
+ "({comment_author_email}) from the trash"
561
  msgstr ""
562
+ "Przywrócono z Kosza pingback do \"{comment_post_title}\" dodany przez "
563
+ "{comment_author} ({comment_author_email})"
564
 
565
+ #: loggers/SimpleCommentsLogger.php:247
566
+ msgctxt "A pingback was deleted"
567
+ msgid ""
568
+ "Deleted a pingback to \"{comment_post_title}\" by {comment_author} "
569
+ "({comment_author_email})"
570
  msgstr ""
571
+ "Usunięto pingback do \"{comment_post_title}\" dodany przez {comment_author} "
572
+ "({comment_author_email})"
573
 
574
+ #: loggers/SimpleCommentsLogger.php:253
575
+ msgctxt "A pingback was edited"
576
+ msgid ""
577
+ "Edited a pingback to \"{comment_post_title}\" by {comment_author} "
578
+ "({comment_author_email})"
579
+ msgstr ""
580
+ "Edytowano pingback do \"{comment_post_title}\" dodany przez {comment_author} "
581
+ "({comment_author_email})"
582
+
583
+ #: loggers/SimpleCommentsLogger.php:263
584
+ msgctxt "Comments logger: search"
585
+ msgid "Comments"
586
+ msgstr "Komentarze"
587
+
588
+ #: loggers/SimpleCommentsLogger.php:264
589
+ msgctxt "Comments logger: search"
590
+ msgid "All comments activity"
591
+ msgstr "Wszystkie aktywności związane z komentarzami"
592
+
593
+ #: loggers/SimpleCommentsLogger.php:266
594
+ msgctxt "Comments logger: search"
595
+ msgid "Added comments"
596
+ msgstr "Dodanie komentarzy"
597
+
598
+ #: loggers/SimpleCommentsLogger.php:274
599
+ msgctxt "Comments logger: search"
600
+ msgid "Edited comments"
601
+ msgstr "Edytowanie komentarzy"
602
+
603
+ #: loggers/SimpleCommentsLogger.php:279
604
+ msgctxt "Comments logger: search"
605
+ msgid "Approved comments"
606
+ msgstr "Zatwierdzanie komentarzy"
607
+
608
+ #: loggers/SimpleCommentsLogger.php:284
609
+ msgctxt "Comments logger: search"
610
+ msgid "Held comments"
611
+ msgstr "Wstrzymanie komentarzy"
612
+
613
+ #: loggers/SimpleCommentsLogger.php:289
614
+ msgctxt "Comments logger: search"
615
+ msgid "Comments status changed to spam"
616
+ msgstr "Oznaczenie komentarzy jako spam"
617
+
618
+ #: loggers/SimpleCommentsLogger.php:294
619
+ msgctxt "Comments logger: search"
620
+ msgid "Trashed comments"
621
+ msgstr "Przeniesienie komentarzy do Kosza"
622
+
623
+ #: loggers/SimpleCommentsLogger.php:299
624
+ msgctxt "Comments logger: search"
625
+ msgid "Untrashed comments"
626
+ msgstr "Przywrócenie komentarzy z Kosza"
627
+
628
+ #: loggers/SimpleCommentsLogger.php:304
629
+ msgctxt "Comments logger: search"
630
+ msgid "Deleted comments"
631
+ msgstr "Usunięcie komentarzy"
632
+
633
+ #: loggers/SimpleCommentsLogger.php:599 loggers/SimpleCommentsLogger.php:612
634
+ #: loggers/SimpleCommentsLogger.php:626
635
+ msgctxt "comments logger - detailed output comment status"
636
+ msgid "Status"
637
+ msgstr "Status"
638
+
639
+ #: loggers/SimpleCommentsLogger.php:601 loggers/SimpleCommentsLogger.php:614
640
+ #: loggers/SimpleCommentsLogger.php:628
641
+ msgctxt "comments logger - detailed output author"
642
+ msgid "Name"
643
+ msgstr "Imię"
644
+
645
+ #: loggers/SimpleCommentsLogger.php:602 loggers/SimpleCommentsLogger.php:615
646
+ #: loggers/SimpleCommentsLogger.php:629
647
+ msgctxt "comments logger - detailed output email"
648
+ msgid "Email"
649
+ msgstr "E-mail"
650
+
651
+ #: loggers/SimpleCommentsLogger.php:603 loggers/SimpleCommentsLogger.php:616
652
+ msgctxt "comments logger - detailed output content"
653
+ msgid "Content"
654
+ msgstr "Treść"
655
+
656
+ #: loggers/SimpleCommentsLogger.php:630
657
+ msgctxt "comments logger - detailed output content"
658
+ msgid "Comment"
659
+ msgstr "Komentarz"
660
+
661
+ #: loggers/SimpleCommentsLogger.php:682
662
+ msgid "Spam"
663
+ msgstr "Spam"
664
+
665
+ #: loggers/SimpleCommentsLogger.php:684
666
+ msgid "Approved"
667
+ msgstr "Zatwierdzony"
668
+
669
+ #: loggers/SimpleCommentsLogger.php:686
670
+ msgid "Pending"
671
+ msgstr "Oczekujący"
672
+
673
+ #: loggers/SimpleCommentsLogger.php:700
674
+ msgid "Trackback"
675
+ msgstr "Trackback"
676
+
677
+ #: loggers/SimpleCommentsLogger.php:702
678
+ msgid "Pingback"
679
+ msgstr "Pingback"
680
+
681
+ #: loggers/SimpleCommentsLogger.php:704
682
+ msgid "Comment"
683
+ msgstr "Komentarz"
684
+
685
+ #: loggers/SimpleCommentsLogger.php:756
686
+ msgctxt "comments logger - edit comment"
687
+ msgid "View/Edit"
688
+ msgstr "Zobacz/Edytuj"
689
+
690
+ #: loggers/SimpleCoreUpdatesLogger.php:29
691
+ msgid "Updated WordPress from {prev_version} to {new_version}"
692
+ msgstr "Zaktualizowano WordPressa z wersji {prev_version} do {new_version}"
693
+
694
+ #: loggers/SimpleCoreUpdatesLogger.php:30
695
+ msgid "WordPress auto-updated from {prev_version} to {new_version}"
696
+ msgstr ""
697
+ "WordPress sam się zaktualizował z wersji {prev_version} do {new_version}"
698
+
699
+ #: loggers/SimpleCoreUpdatesLogger.php:34
700
+ msgctxt "User logger: search"
701
+ msgid "WordPress Core"
702
+ msgstr "WordPress"
703
+
704
+ #: loggers/SimpleCoreUpdatesLogger.php:36
705
+ msgctxt "User logger: search"
706
+ msgid "WordPress core updates"
707
+ msgstr "Aktualizacje WordPressa"
708
+
709
+ #: loggers/SimpleExportLogger.php:23
710
+ msgid "Created XML export"
711
+ msgstr "Utworzono plik eksportu XML"
712
+
713
+ #: loggers/SimpleExportLogger.php:27
714
+ msgctxt "Export logger: search"
715
+ msgid "Export"
716
+ msgstr "Eksport"
717
+
718
+ #: loggers/SimpleExportLogger.php:29
719
+ msgctxt "Export logger: search"
720
+ msgid "Created exports"
721
+ msgstr "Utworzenie plików eksportu"
722
+
723
+ #: loggers/SimpleLegacyLogger.php:88
724
+ #, php-format
725
+ msgid "By %s"
726
+ msgstr "Przez %s"
727
 
728
+ #: loggers/SimpleLegacyLogger.php:93
729
+ #, php-format
730
+ msgid "%d occasions"
731
+ msgstr "%d więcej"
732
 
733
+ #: loggers/SimpleLogger.php:192
734
+ msgctxt "header output when initiator is the currently logged in user"
735
+ msgid "You"
736
+ msgstr "Ty"
737
 
738
+ #: loggers/SimpleLogger.php:205
739
+ #, php-format
740
+ msgid "Deleted user (had id %1$s, email %2$s, login %3$s)"
741
+ msgstr "Usunięto użytkownika (id: %1$s, e-mail: %2$s, login: %3$s)"
742
 
743
+ #: loggers/SimpleLogger.php:220
744
+ msgid "Anonymous web user"
745
+ msgstr "Użytkownik anonimowy"
746
 
747
+ #: loggers/SimpleLogger.php:228
748
+ #, php-format
749
+ msgid "Anonymous user from %1$s"
750
+ msgstr "Nieznany użytkownik z %1$s"
751
 
752
+ #: loggers/SimpleLogger.php:299
753
+ msgid "Just now"
754
+ msgstr "Teraz"
755
 
756
+ #: loggers/SimpleLogger.php:304
757
+ msgid "M j, Y \\a\\t G:i"
758
+ msgstr "Y-m-d \\o H:i"
759
 
760
+ #: loggers/SimpleLogger.php:312
761
+ #, php-format
762
+ msgid "%1$s ago"
763
+ msgstr "%1$s temu"
764
 
765
+ #: loggers/SimpleMediaLogger.php:23
766
+ msgid "Created {post_type} \"{attachment_title}\""
767
+ msgstr "Utworzono {post_type} \"{attachment_title}\""
768
+
769
+ #: loggers/SimpleMediaLogger.php:24
770
+ msgid "Edited {post_type} \"{attachment_title}\""
771
+ msgstr "Edytowano {post_type} \"{attachment_title}\""
772
+
773
+ #: loggers/SimpleMediaLogger.php:25
774
+ msgid "Deleted {post_type} \"{attachment_title}\" (\"{attachment_filename}\")"
775
+ msgstr ""
776
+ "Usunięto {post_type} \"{attachment_title}\" (\"{attachment_filename}\")"
777
+
778
+ #: loggers/SimpleMediaLogger.php:29
779
+ msgctxt "Media logger: search"
780
+ msgid "Media"
781
+ msgstr "Media"
782
+
783
+ #: loggers/SimpleMediaLogger.php:31
784
+ msgctxt "Media logger: search"
785
+ msgid "Added media"
786
+ msgstr "Dodanie medium"
787
+
788
+ #: loggers/SimpleMediaLogger.php:34
789
+ msgctxt "Media logger: search"
790
+ msgid "Updated media"
791
+ msgstr "Zaktualizowanie medium"
792
+
793
+ #: loggers/SimpleMediaLogger.php:37
794
+ msgctxt "Media logger: search"
795
+ msgid "Deleted media"
796
+ msgstr "Usunięcie medium"
797
+
798
+ #: loggers/SimpleMediaLogger.php:81
799
+ msgid "Edited {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
800
+ msgstr ""
801
+ "Edytowano {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
802
+
803
+ #: loggers/SimpleMediaLogger.php:85
804
+ msgid "Uploaded {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
805
+ msgstr ""
806
+ "Zaktualizowano {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
807
+
808
+ #: loggers/SimpleMediaLogger.php:180
809
+ msgid "{attachment_thumb}"
810
+ msgstr "{attachment_thumb}"
811
+
812
+ #: loggers/SimpleMediaLogger.php:189
813
+ msgid "{attachment_size_format}"
814
+ msgstr "{attachment_size_format}"
815
+
816
+ #: loggers/SimpleMediaLogger.php:190
817
+ msgid "{attachment_filetype_extension}"
818
+ msgstr "{attachment_filetype_extension}"
819
+
820
+ #: loggers/SimpleMediaLogger.php:192
821
+ msgid "{full_image_width} × {full_image_height}"
822
+ msgstr "{full_image_width} × {full_image_height}"
823
+
824
+ #: loggers/SimpleMenuLogger.php:23
825
+ msgid "Created menu \"{menu_name}\""
826
+ msgstr "Utworzono menu \"{menu_name}\""
827
+
828
+ #: loggers/SimpleMenuLogger.php:24
829
+ msgid "Edited menu \"{menu_name}\""
830
+ msgstr "Edytowano menu \"{menu_name}\""
831
+
832
+ #: loggers/SimpleMenuLogger.php:25
833
+ msgid "Deleted menu \"{menu_name}\""
834
+ msgstr "Usunięto menu \"{menu_name}\""
835
+
836
+ #: loggers/SimpleMenuLogger.php:26
837
+ msgid "Edited a menu item"
838
+ msgstr "Edytowano element menu"
839
+
840
+ #: loggers/SimpleMenuLogger.php:27
841
+ msgid "Updated menu locations"
842
+ msgstr "Zaktualizowano pozycję menu"
843
+
844
+ #: loggers/SimpleMenuLogger.php:31
845
+ msgctxt "Menu logger: search"
846
+ msgid "Menus"
847
+ msgstr "Menu"
848
+
849
+ #: loggers/SimpleMenuLogger.php:33
850
+ msgctxt "Menu updates logger: search"
851
+ msgid "Created menus"
852
+ msgstr "Utworzenie menu"
853
+
854
+ #: loggers/SimpleMenuLogger.php:36
855
+ msgctxt "Menu updates logger: search"
856
+ msgid "Edited menus"
857
+ msgstr "Edytowanie menu"
858
+
859
+ #: loggers/SimpleMenuLogger.php:41
860
+ msgctxt "Menu updates logger: search"
861
+ msgid "Deleted menus"
862
+ msgstr "Usunięcie menu"
863
+
864
+ #: loggers/SimpleMenuLogger.php:326
865
+ #, php-format
866
+ msgctxt "menu logger"
867
+ msgid "%1$s menu item added"
868
+ msgid_plural "%1$s menu items added"
869
+ msgstr[0] "%1$s element menu został dodany"
870
+ msgstr[1] "%1$s elementy menu zostały dodane"
871
+ msgstr[2] "%1$s elementów menu zostało dodanych"
872
+
873
+ #: loggers/SimpleMenuLogger.php:333
874
+ #, php-format
875
+ msgctxt "menu logger"
876
+ msgid "%1$s menu item removed"
877
+ msgid_plural "%1$s menu items removed"
878
+ msgstr[0] "%1$s element menu został usunięty"
879
+ msgstr[1] "%1$s elementy menu zostały usunięte"
880
+ msgstr[2] "%1$s elementów menu zostało usuniętych"
881
+
882
+ #: loggers/SimpleOptionsLogger.php:140
883
+ msgid "Updated option \"{option}\""
884
+ msgstr "Zaktualizowano opcję \"{option}\""
885
+
886
+ #: loggers/SimpleOptionsLogger.php:153
887
+ msgctxt "Options logger: search"
888
+ msgid "Options"
889
+ msgstr "Opcje"
890
+
891
+ #: loggers/SimpleOptionsLogger.php:155
892
+ msgctxt "Options logger: search"
893
+ msgid "Changed options"
894
+ msgstr "Zmiana opcji"
895
+
896
+ #: loggers/SimpleOptionsLogger.php:242 loggers/SimpleThemeLogger.php:570
897
+ msgid "New value"
898
+ msgstr "Nowa wartość"
899
+
900
+ #: loggers/SimpleOptionsLogger.php:253 loggers/SimpleThemeLogger.php:582
901
+ msgid "Old value"
902
+ msgstr "Stara wartość"
903
+
904
+ #: loggers/SimpleOptionsLogger.php:268 loggers/SimpleOptionsLogger.php:285
905
+ msgid "Settings page"
906
+ msgstr "Strona ustawień"
907
+
908
+ #: loggers/SimplePluginLogger.php:52
909
+ msgctxt "Plugin was non-silently activated by a user"
910
+ msgid "Activated plugin \"{plugin_name}\""
911
+ msgstr "Załączono wtyczkę \"{plugin_name}\""
912
+
913
+ #: loggers/SimplePluginLogger.php:58
914
+ msgctxt "Plugin was non-silently deactivated by a user"
915
+ msgid "Deactivated plugin \"{plugin_name}\""
916
+ msgstr "Wyłączono wtyczkę \"{plugin_name}\""
917
+
918
+ #: loggers/SimplePluginLogger.php:64
919
+ msgctxt "Plugin was installed"
920
+ msgid "Installed plugin \"{plugin_name}\""
921
+ msgstr "Zainstalowano wtyczkę \"{plugin_name}\""
922
+
923
+ #: loggers/SimplePluginLogger.php:70
924
+ msgctxt "Plugin failed to install"
925
+ msgid "Failed to install plugin \"{plugin_name}\""
926
+ msgstr "Nie udało się zainstalować wtyczki \"{plugin_name}\""
927
+
928
+ #: loggers/SimplePluginLogger.php:76
929
+ msgctxt "Plugin was updated"
930
+ msgid ""
931
+ "Updated plugin \"{plugin_name}\" to version {plugin_version} from "
932
+ "{plugin_prev_version}"
933
  msgstr ""
934
+ "Zaktualizowano wtyczkę \"{plugin_name}\" z wersji {plugin_prev_version} do "
935
+ "{plugin_version}"
936
 
937
+ #: loggers/SimplePluginLogger.php:82
938
+ msgctxt "Plugin update failed"
939
+ msgid "Updated plugin \"{plugin_name}\""
940
+ msgstr "Zaktualizowano wtyczkę \"{plugin_name}\""
941
 
942
+ #: loggers/SimplePluginLogger.php:88
943
+ msgctxt "Plugin file edited"
944
+ msgid "Edited plugin file \"{plugin_edited_file}\""
945
+ msgstr "Edytowano plik wtyczki \"{plugin_edited_file}\""
946
 
947
+ #: loggers/SimplePluginLogger.php:94
948
+ msgctxt "Plugin files was deleted"
949
+ msgid "Deleted plugin \"{plugin_name}\""
950
+ msgstr "Usunięto wtyczkę \"{plugin_name}\""
951
 
952
+ #: loggers/SimplePluginLogger.php:101
953
+ msgctxt "Plugin was updated in bulk"
954
+ msgid ""
955
+ "Updated plugin \"{plugin_name}\" to {plugin_version} from "
956
+ "{plugin_prev_version}"
957
+ msgstr ""
958
+ "Zaktualizowano wtyczkę \"{plugin_name}\" z wersji {plugin_prev_version} do "
959
+ "{plugin_version}"
960
+
961
+ #: loggers/SimplePluginLogger.php:108
962
+ msgctxt "Plugin logger: search"
963
+ msgid "Plugins"
964
+ msgstr "Wtyczki"
965
+
966
+ #: loggers/SimplePluginLogger.php:110
967
+ msgctxt "Plugin logger: search"
968
+ msgid "Activated plugins"
969
+ msgstr "Załączenie wtyczek"
970
+
971
+ #: loggers/SimplePluginLogger.php:113
972
+ msgctxt "Plugin logger: search"
973
+ msgid "Deactivated plugins"
974
+ msgstr "Wyłączenie wtyczkek"
975
+
976
+ #: loggers/SimplePluginLogger.php:116
977
+ msgctxt "Plugin logger: search"
978
+ msgid "Installed plugins"
979
+ msgstr "Instalacje wtyczek"
980
+
981
+ #: loggers/SimplePluginLogger.php:119
982
+ msgctxt "Plugin logger: search"
983
+ msgid "Failed plugin installs"
984
+ msgstr "Nieudane instalacje wtyczek"
985
+
986
+ #: loggers/SimplePluginLogger.php:122
987
+ msgctxt "Plugin logger: search"
988
+ msgid "Updated plugins"
989
+ msgstr "Zaktualizowanie wtyczek"
990
+
991
+ #: loggers/SimplePluginLogger.php:126
992
+ msgctxt "Plugin logger: search"
993
+ msgid "Failed plugin updates"
994
+ msgstr "Nieudane zaktualizowanie wtyczek"
995
+
996
+ #: loggers/SimplePluginLogger.php:129
997
+ msgctxt "Plugin logger: search"
998
+ msgid "Edited plugin files"
999
+ msgstr "Edycja plików wtyczek"
1000
+
1001
+ #: loggers/SimplePluginLogger.php:132
1002
+ msgctxt "Plugin logger: search"
1003
+ msgid "Deleted plugins"
1004
+ msgstr "Usunięcie wtyczek"
1005
+
1006
+ #: loggers/SimplePluginLogger.php:858
1007
+ msgctxt "plugin logger - detailed output version"
1008
+ msgid "Version"
1009
+ msgstr "Wersja"
1010
+
1011
+ #: loggers/SimplePluginLogger.php:860
1012
+ msgctxt "plugin logger - detailed output author"
1013
+ msgid "Author"
1014
+ msgstr "Autor"
1015
+
1016
+ #: loggers/SimplePluginLogger.php:861
1017
+ msgctxt "plugin logger - detailed output url"
1018
+ msgid "URL"
1019
+ msgstr "Adres URL"
1020
+
1021
+ #: loggers/SimplePluginLogger.php:862
1022
+ msgctxt "plugin logger - detailed output author"
1023
+ msgid "Requires"
1024
+ msgstr "Wymagania"
1025
+
1026
+ #: loggers/SimplePluginLogger.php:863
1027
+ msgctxt "plugin logger - detailed output compatible"
1028
+ msgid "Compatible up to"
1029
+ msgstr "Kompatybilna do"
1030
+
1031
+ #: loggers/SimplePluginLogger.php:864
1032
+ msgctxt "plugin logger - detailed output downloaded"
1033
+ msgid "Downloads"
1034
+ msgstr "Pobrania"
1035
+
1036
+ #: loggers/SimplePostLogger.php:30
1037
+ msgid "Created {post_type} \"{post_title}\""
1038
+ msgstr "Utworzono {post_type} \"{post_title}\""
1039
+
1040
+ #: loggers/SimplePostLogger.php:31
1041
+ msgid "Updated {post_type} \"{post_title}\""
1042
+ msgstr "Zaktualizowano {post_type} \"{post_title}\""
1043
+
1044
+ #: loggers/SimplePostLogger.php:32
1045
+ msgid "Restored {post_type} \"{post_title}\" from trash"
1046
+ msgstr "Przywrócono {post_type} \"{post_title}\" z Kosza"
1047
+
1048
+ #: loggers/SimplePostLogger.php:33 loggers/SimplePostLogger.php:236
1049
+ msgid "Deleted {post_type} \"{post_title}\""
1050
+ msgstr "Usunięto {post_type} \"{post_title}\""
1051
+
1052
+ #: loggers/SimplePostLogger.php:34
1053
+ msgid "Moved {post_type} \"{post_title}\" to the trash"
1054
+ msgstr "Przeniesiono {post_type} \"{post_title}\" do Kosza"
1055
+
1056
+ #: loggers/SimplePostLogger.php:38
1057
+ msgctxt "Post logger: search"
1058
+ msgid "Posts & Pages"
1059
+ msgstr "Wpisy i Strony"
1060
+
1061
+ #: loggers/SimplePostLogger.php:40
1062
+ msgctxt "Post logger: search"
1063
+ msgid "Posts created"
1064
+ msgstr "Dodanie wpisów"
1065
+
1066
+ #: loggers/SimplePostLogger.php:43
1067
+ msgctxt "Post logger: search"
1068
+ msgid "Posts updated"
1069
+ msgstr "Aktualizacja wpisów"
1070
+
1071
+ #: loggers/SimplePostLogger.php:46
1072
+ msgctxt "Post logger: search"
1073
+ msgid "Posts trashed"
1074
+ msgstr "Przeniesienie wpisów do Kosza"
1075
+
1076
+ #: loggers/SimplePostLogger.php:49
1077
+ msgctxt "Post logger: search"
1078
+ msgid "Posts deleted"
1079
+ msgstr "Usunięcie wpisów"
1080
+
1081
+ #: loggers/SimplePostLogger.php:52
1082
+ msgctxt "Post logger: search"
1083
+ msgid "Posts restored"
1084
+ msgstr "Przywrócenie wpisów z Kosza"
1085
+
1086
+ #: loggers/SimplePostLogger.php:232
1087
+ msgid "Updated {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
1088
+ msgstr ""
1089
+ "Zaktualizowano {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
1090
+
1091
+ #: loggers/SimplePostLogger.php:240
1092
+ msgid "Created {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
1093
+ msgstr "Utworzono {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
1094
+
1095
+ #: loggers/SimplePostLogger.php:245
1096
+ msgid ""
1097
+ "Moved {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> to the trash"
1098
  msgstr ""
1099
+ "Przeniesiono {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> do "
1100
+ "Kosza"
1101
 
1102
+ #: loggers/SimpleThemeLogger.php:26
1103
+ msgid "Switched theme to \"{theme_name}\" from \"{prev_theme_name}\""
1104
+ msgstr "Przełączono motyw z \"{theme_name}\" na \"{prev_theme_name}\""
1105
 
1106
+ #: loggers/SimpleThemeLogger.php:27
1107
+ msgid "Customized theme appearance \"{setting_id}\""
1108
+ msgstr "Zmieniono ustawienia motywu \"{setting_id}\""
1109
 
1110
+ #: loggers/SimpleThemeLogger.php:28
1111
+ msgid "Removed widget \"{widget_id_base}\" from sidebar \"{sidebar_id}\""
1112
  msgstr ""
1113
+ "Usunięto widżet \"{widget_id_base}\" z panelu bocznego \"{sidebar_id}\""
1114
 
1115
+ #: loggers/SimpleThemeLogger.php:29
1116
+ msgid "Added widget \"{widget_id_base}\" to sidebar \"{sidebar_id}\""
1117
+ msgstr "Dodano widżet \"{widget_id_base}\" do panelu bocznego \"{sidebar_id}\""
1118
 
1119
+ #: loggers/SimpleThemeLogger.php:30
1120
+ msgid "Changed widget order \"{widget_id_base}\" in sidebar \"{sidebar_id}\""
1121
  msgstr ""
1122
+ "Zmienino kolejność widżetu \"{widget_id_base}\" w panelu bocznym "
1123
+ "\"{sidebar_id}\""
1124
 
1125
+ #: loggers/SimpleThemeLogger.php:31
1126
+ msgid "Changed widget \"{widget_id_base}\" in sidebar \"{sidebar_id}\""
1127
+ msgstr "Zmienono widżet \"{widget_id_base}\" w panelu bocznym \"{sidebar_id}\""
1128
 
1129
+ #: loggers/SimpleThemeLogger.php:32
1130
+ msgid "Changed settings for the theme custom background"
1131
+ msgstr "Zmieniono ustawienia dotyczące tła motywu"
1132
 
1133
+ #: loggers/SimpleThemeLogger.php:36
1134
+ msgctxt "Theme logger: search"
1135
+ msgid "Themes & Widgets"
1136
+ msgstr "Motywy i Widżety"
1137
 
1138
+ #: loggers/SimpleThemeLogger.php:38
1139
+ msgctxt "Theme logger: search"
1140
+ msgid "Switched themes"
1141
+ msgstr "Zmiany motywów"
1142
 
1143
+ #: loggers/SimpleThemeLogger.php:41
1144
+ msgctxt "Theme logger: search"
1145
+ msgid "Changed appearance of themes"
1146
+ msgstr "Zmiany wyglądu motywów"
1147
 
1148
+ #: loggers/SimpleThemeLogger.php:44
1149
+ msgctxt "Theme logger: search"
1150
+ msgid "Added widgets"
1151
+ msgstr "Dodanie widżetów"
1152
 
1153
+ #: loggers/SimpleThemeLogger.php:47
1154
+ msgctxt "Theme logger: search"
1155
+ msgid "Removed widgets"
1156
+ msgstr "Usunięcie widżetów"
1157
 
1158
+ #: loggers/SimpleThemeLogger.php:50
1159
+ msgctxt "Theme logger: search"
1160
+ msgid "Changed widgets order"
1161
+ msgstr "Zmiana kolejności widżetów"
1162
 
1163
+ #: loggers/SimpleThemeLogger.php:53
1164
+ msgctxt "Theme logger: search"
1165
+ msgid "Edited widgets"
1166
+ msgstr "Edycje widżetów"
1167
 
1168
+ #: loggers/SimpleThemeLogger.php:56
1169
+ msgctxt "Theme logger: search"
1170
+ msgid "Background of themes changed"
1171
+ msgstr "Zmiany tła motywów"
1172
 
1173
+ #: loggers/SimpleThemeLogger.php:532
1174
+ msgid "Section"
1175
+ msgstr "Sekcja"
1176
 
1177
+ #: loggers/SimpleUserLogger.php:23
1178
+ msgid ""
1179
+ "Failed to login to account with username \"{login_user_login}\" because an "
1180
+ "incorrect password was entered"
1181
  msgstr ""
1182
+ "Wystąpił błąd logowania użytkownika z loginem \"{login_user_login}\" z "
1183
+ "powodu wpisania błędnego hasła"
1184
 
1185
+ #: loggers/SimpleUserLogger.php:24
1186
+ msgid ""
1187
+ "Failed to login with username \"{failed_login_username}\" because no user "
1188
+ "with that username exist"
1189
  msgstr ""
1190
+ "Wystąpił błąd logowania z wykorzystaniem loginu \"{login_user_login}\" "
1191
+ "ponieważ taki nie istnieje"
1192
 
1193
+ #: loggers/SimpleUserLogger.php:25
1194
+ msgid "Logged in"
1195
+ msgstr "Zalogowano"
1196
 
1197
+ #: loggers/SimpleUserLogger.php:26
1198
+ msgid "Unknown user logged in"
1199
+ msgstr "Zalogował się nieznany użytkownik"
1200
 
1201
+ #: loggers/SimpleUserLogger.php:27
1202
+ msgid "Logged out"
1203
+ msgstr "Wylogowano"
1204
 
1205
+ #: loggers/SimpleUserLogger.php:28
1206
+ msgid "Edited the profile for user {edited_user_login} ({edited_user_email})"
1207
+ msgstr "Edytowano profil użytkownika {edited_user_login} ({edited_user_email})"
1208
 
1209
+ #: loggers/SimpleUserLogger.php:29
1210
+ msgid ""
1211
+ "Created user {created_user_login} ({created_user_email}) with role "
1212
+ "{created_user_role}"
1213
+ msgstr ""
1214
+ "Utworzono użytkonika {created_user_login} ({created_user_email}) z rolą "
1215
+ "{created_user_role}"
1216
+
1217
+ #: loggers/SimpleUserLogger.php:30
1218
+ msgid "Deleted user {deleted_user_login} ({deleted_user_email})"
1219
+ msgstr "Usunięto użytkonika {deleted_user_login} ({deleted_user_email})"
1220
+
1221
+ #: loggers/SimpleUserLogger.php:38
1222
+ msgctxt "User destroys other login sessions for themself"
1223
+ msgid "Logged out from all other sessions"
1224
+ msgstr "Wylogowano z pozostałych sesji"
1225
+
1226
+ #: loggers/SimpleUserLogger.php:47
1227
+ msgctxt "User destroys all login sessions for a user"
1228
+ msgid "Logged out \"{user_display_name}\" from all sessions"
1229
+ msgstr "Wylogowano użytkownika \"{user_display_name}\" z pozostałch sesji"
1230
+
1231
+ #: loggers/SimpleUserLogger.php:55
1232
+ msgctxt "User logger: search"
1233
+ msgid "Users"
1234
+ msgstr "Użytkownicy"
1235
+
1236
+ #: loggers/SimpleUserLogger.php:56
1237
+ msgctxt "User logger: search"
1238
+ msgid "All user activity"
1239
+ msgstr "Aktywność użytkowniów"
1240
+
1241
+ #: loggers/SimpleUserLogger.php:58
1242
+ msgctxt "User logger: search"
1243
+ msgid "Successful user logins"
1244
+ msgstr "Udane logowania"
1245
+
1246
+ #: loggers/SimpleUserLogger.php:62
1247
+ msgctxt "User logger: search"
1248
+ msgid "Failed user logins"
1249
+ msgstr "Nieudane logowania"
1250
+
1251
+ #: loggers/SimpleUserLogger.php:66
1252
+ msgctxt "User logger: search"
1253
+ msgid "User logouts"
1254
+ msgstr "Wylogowania"
1255
+
1256
+ #: loggers/SimpleUserLogger.php:69
1257
+ msgctxt "User logger: search"
1258
+ msgid "Created users"
1259
+ msgstr "Dodanie użytkowników"
1260
+
1261
+ #: loggers/SimpleUserLogger.php:72
1262
+ msgctxt "User logger: search"
1263
+ msgid "User profile updates"
1264
+ msgstr "Aktualizacje profilów użytkowników"
1265
+
1266
+ #: loggers/SimpleUserLogger.php:75
1267
+ msgctxt "User logger: search"
1268
+ msgid "User deletions"
1269
+ msgstr "Usunięcie użytkowników"
1270
+
1271
+ #: loggers/SimpleUserLogger.php:229
1272
+ msgid "Edited <a href=\"{edit_profile_link}\">your profile</a>"
1273
+ msgstr "Edytowano <a href=\"{edit_profile_link}\">Twój profil</a>"
1274
+
1275
+ #: loggers/SimpleUserLogger.php:233
1276
+ msgid "Edited <a href=\"{edit_profile_link}\">their profile</a>"
1277
+ msgstr "Edytowano <a href=\"{edit_profile_link}\">jego profil</a>"
1278
+
1279
+ #: loggers/SimpleUserLogger.php:242
1280
+ msgid "Edited your profile"
1281
+ msgstr "Edycja Twojego profilu"
1282
+
1283
+ #: loggers/SimpleUserLogger.php:253
1284
+ msgid ""
1285
+ "Edited the profile for user <a href="
1286
+ "\"{edit_profile_link}\">{edited_user_login} ({edited_user_email})</a>"
1287
  msgstr ""
1288
+ "Edytowano profil użytkownika <a href="
1289
+ "\"{edit_profile_link}\">{edited_user_login} ({edited_user_email})</a>"
1290
 
1291
+ #: templates/settings-statsIntro.php:19
1292
+ #, php-format
1293
+ msgid "<b>%1$s rows</b> have been logged the last <b>%2$s days</b>"
1294
+ msgstr ""
1295
+ "<b>%1$s zdarzeń</b> zostało zalogowanych w ostatnich <b>%2$s dniach</b>"
1296
+
1297
+ #: templates/settings-statsLogLevels.php:4
1298
+ msgid "Log levels"
1299
+ msgstr "Poziomy zdarzeń"
1300
+
1301
+ #: templates/settings-statsLogLevels.php:6
1302
+ msgid "Number of rows logged for each log level."
1303
+ msgstr "Liczba zdarzeń zalogowanych dla każdego poziomu logowania."
1304
+
1305
+ #: templates/settings-statsLoggers.php:4
1306
+ msgid "Loggers"
1307
+ msgstr "Moduły logowania zdarzeń"
1308
+
1309
+ #: templates/settings-statsRowsPerDay.php:4
1310
+ msgid "Rows per day"
1311
+ msgstr "Zdarzenia na dzień"
1312
+
1313
+ #: templates/settings-statsRowsPerDay.php:36
1314
+ msgctxt "stats: date in rows per day chart"
1315
+ msgid "M j"
1316
+ msgstr "d.m.Y \\o H:i"
1317
 
1318
+ #: templates/settings-statsUsers.php:4
1319
+ msgid "Users"
1320
+ msgstr "Użytkownicy"
1321
 
1322
+ #: templates/settings-statsUsers.php:6
1323
+ msgid "Number of logged items for the 5 users with most logged rows."
1324
  msgstr ""
1325
+ "Liczba zalogowanych zdarzeń dla 5 użytkowników z największą liczbą zdarzeń."
1326
 
1327
+ #: templates/settings-statsUsers.php:7
1328
+ msgid "Deleted users are also included."
1329
+ msgstr "Usunięci użytkownicy również zostali uwzględnieni."
1330
 
1331
+ #~ msgid "added"
1332
+ #~ msgstr "dodano"
 
1333
 
1334
+ #~ msgid "unapproved"
1335
+ #~ msgstr "niezatwierdzony"
 
1336
 
1337
+ #~ msgid "marked as spam"
1338
+ #~ msgstr "oznaczony jako spam"
 
1339
 
1340
+ #~ msgid "untrashed"
1341
+ #~ msgstr "przywrócono z kosza"
 
1342
 
1343
+ #~ msgid "nav_menu_item"
1344
+ #~ msgstr "element menu"
 
1345
 
1346
+ #~ msgid "user"
1347
+ #~ msgstr "użytkownik"
 
1348
 
1349
+ #~ msgid "edited"
1350
+ #~ msgstr "edytowano"
 
1351
 
1352
+ #~ msgid "modified"
1353
+ #~ msgstr "zmienono"
 
1354
 
1355
+ #~ msgid "upgraded it\\'s database"
1356
+ #~ msgstr "zaktualizował swoją bazę danych"
 
1357
 
1358
+ #~ msgid "History"
1359
+ #~ msgstr "Historia"
 
1360
 
1361
+ #~ msgid "failed to log in because they entered the wrong password"
1362
+ #~ msgstr ""
1363
+ #~ "nie umiał(-a) się zalogować, ponieważ wpisywane hasło było niepoprawne"
1364
 
1365
+ #~ msgid "One item"
1366
+ #~ msgid_plural "%1$d items"
1367
+ #~ msgstr[0] "1 element"
1368
+ #~ msgstr[1] "%1$d elementy"
1369
+ #~ msgstr[2] "%1$d elementów"
1370
 
1371
+ #~ msgid "Clear it now."
1372
+ #~ msgstr "Wyczyść teraz."
 
1373
 
1374
+ #~ msgid ""
1375
+ #~ "\n"
1376
+ #~ "\t\t\tPlease\n"
1377
+ #~ "\t\t\t<a href=\"http://eskapism.se/sida/donate/?"
1378
+ #~ "utm_source=wordpress&utm_medium=settingpage&utm_campaign=simplehistory"
1379
+ #~ "\">\n"
1380
+ #~ "\t\t\tdonate\n"
1381
+ #~ "\t\t\t</a> to support the development of this plugin and to keep it "
1382
+ #~ "free.\n"
1383
+ #~ "\t\t\tThanks!\n"
1384
+ #~ "\t\t\t"
1385
+ #~ msgstr ""
1386
+ #~ "\n"
1387
+ #~ "\t\t\tProsimy\n"
1388
+ #~ "\t\t\t<a href=\"http://eskapism.se/sida/donate/?"
1389
+ #~ "utm_source=wordpress&utm_medium=settingpage&utm_campaign=simplehistory"
1390
+ #~ "\">\n"
1391
+ #~ "\t\t\to wsparcie\n"
1392
+ #~ "\t\t\t</a> procesu tworzenia wtyczki.\n"
1393
+ #~ "\t\t\tDzięki!!\n"
1394
+ #~ "\t\t\t"
1395
 
1396
+ #~ msgid ""
1397
+ #~ "This is a secret RSS feed for Simple History. Only share the link with "
1398
+ #~ "people you trust"
1399
+ #~ msgstr ""
1400
+ #~ "To jest sekretny link do kanału RSS Historii zdarzeń. Nie publikuj go "
1401
+ #~ "nigdzie."
1402
 
1403
+ #~ msgid "Search"
1404
+ #~ msgstr "Szukaj"
 
1405
 
1406
+ #~ msgid "File name:"
1407
+ #~ msgstr "Nazwa pliku:"
 
1408
 
1409
+ #~ msgid "File size:"
1410
+ #~ msgstr "Rozmiar pliku:"
 
1411
 
1412
+ #~ msgid "enabled"
1413
+ #~ msgstr "włączono"
 
1414
 
1415
+ #~ msgid "disabled"
1416
+ #~ msgstr "wyłączono"
 
1417
 
1418
+ #~ msgid "<span class=\"when\">%1$s ago</span> by %2$s"
1419
+ #~ msgstr "<span class=\"when\">%1$s temu</span> przez %2$s"
 
1420
 
1421
+ #~ msgid "%s at %s"
1422
+ #~ msgstr "%s o %s"
 
 
 
1423
 
1424
+ #~ msgid "Details"
1425
+ #~ msgstr "Szczegóły"
 
1426
 
1427
+ #~ msgid "+ %d occasions"
1428
+ #~ msgstr "+ %d więcej"
 
1429
 
1430
+ #~ msgid "%s ago (%s at %s)"
1431
+ #~ msgstr "%s temu (%s o %s)"
 
1432
 
1433
+ #~ msgid "Show 5 more"
1434
+ #~ msgstr "Pokaż 5 więcej"
1435
+
1436
+ #~ msgid "Show 50 more"
1437
+ #~ msgstr "Pokaż 50 więcej"
1438
+
1439
+ #~ msgid "Show 100 more"
1440
+ #~ msgstr "Pokaż 100 więcej"
1441
+
1442
+ #~ msgid "No matching items found."
1443
+ #~ msgstr "Brak pasujących wyników"
1444
+
1445
+ #~ msgid "Show"
1446
+ #~ msgstr "Pokaż"
1447
+
1448
+ #~ msgid "No history items found."
1449
+ #~ msgstr "Nie ma elementów w historii."
1450
+
1451
+ #~ msgid "General Settings"
1452
+ #~ msgstr "Ustawienia ogólne"
1453
+
1454
+ #~ msgid "Writing Settings"
1455
+ #~ msgstr "Ustawienia pisania"
1456
+
1457
+ #~ msgid "Reading Settings"
1458
+ #~ msgstr "Ustawienia czytania"
1459
+
1460
+ #~ msgid "Discussion Settings"
1461
+ #~ msgstr "Ustawienia dyskusji"
1462
+
1463
+ #~ msgid "Media Settings"
1464
+ #~ msgstr "Ustawienia mediów"
1465
+
1466
+ #~ msgid "Privacy Settings"
1467
+ #~ msgstr "Ustawienia prywatności"
1468
+
1469
+ #~ msgid "Permalink Settings"
1470
+ #~ msgstr "Ustawienia odnośników bezpośrednich"
1471
+
1472
+ #~ msgid "Log events for the %s plugin."
1473
+ #~ msgstr "Loguj zdarzenia dla wtyczki: %s."
1474
+
1475
+ #~ msgid "Simple History Extender Modules"
1476
+ #~ msgstr "Historia zdarzeń - moduły rozszerzeń"
1477
+
1478
+ #~ msgid ""
1479
+ #~ "Activate or deactivate the events you want to log. Read the Help tab if "
1480
+ #~ "you want to know which actions are supported and which aren't."
1481
+ #~ msgstr ""
1482
+ #~ "Zaznacz te zdarzenia, które mają być zapisywane w historii. Otwórz "
1483
+ #~ "zakładnkę Pomoc u góry ekranu, aby dowiedzieć się jakie akcje są "
1484
+ #~ "wspierane w ramach danego rozszerzenia."
1485
 
1486
+ #~ msgid "Simple History Extender Module"
1487
+ #~ msgstr "Historia zdarzeń - moduł rozszerzeń"
 
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: 2014-12-17 06:57:05+00:00\n"
8
- "PO-Revision-Date: 2014-12-17 07:59+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"
@@ -22,134 +22,157 @@ msgstr ""
22
  "X-Textdomain-Support: yes\n"
23
  "X-Poedit-SearchPath-0: .\n"
24
 
25
- #: SimpleHistory.php:423 SimpleHistory.php:667
26
  msgid "Settings"
27
  msgstr "Inställningar"
28
 
29
- #: SimpleHistory.php:434
30
  msgid "Log (debug)"
31
  msgstr "Logg (debug)"
32
 
33
- #: SimpleHistory.php:439
34
  msgid "Styles example (debug)"
35
  msgstr "Stilexempel (debug)"
36
 
37
- #: SimpleHistory.php:682
38
- msgid "History"
39
- msgstr "Historik"
 
40
 
41
- #: SimpleHistory.php:758
42
  msgid "Remove all log items?"
43
  msgstr "Ta bort alla händelser?"
44
 
45
- #: SimpleHistory.php:760
46
  msgid "Go to the first page"
47
  msgstr "Gå till första sidan"
48
 
49
- #: SimpleHistory.php:761
50
  msgid "Go to the previous page"
51
  msgstr "Gå till föregående sida"
52
 
53
- #: SimpleHistory.php:762
54
  msgid "Go to the next page"
55
  msgstr "Gå till nästa sida"
56
 
57
- #: SimpleHistory.php:763
58
  msgid "Go to the last page"
59
  msgstr "Gå till sista sidan"
60
 
61
- #: SimpleHistory.php:764
62
  msgid "Current page"
63
  msgstr "Aktuell sida"
64
 
65
- #: SimpleHistory.php:766
66
  msgid "Oups, the log could not be loaded right now."
67
  msgstr "Hoppsan, historiken kunde inte laddas just nu."
68
 
69
- #: SimpleHistory.php:767
70
  msgid "Your search did not match any history events."
71
  msgstr "Din sökning matchade inte några händelser i historiken."
72
 
73
- #: SimpleHistory.php:1061 SimpleHistory.php:1164
74
  msgid "Simple History Settings"
75
  msgstr "Inställningar för Simple History"
76
 
77
- #: SimpleHistory.php:1095
78
  msgid "No valid callback found"
79
  msgstr "Inget giltigt callback hittades."
80
 
81
- #: SimpleHistory.php:1185
82
  msgid "Cleared database"
83
  msgstr "Databasen rensades"
84
 
85
- #: SimpleHistory.php:1212
86
  msgid "Show history"
87
  msgstr "Visa historik"
88
 
89
- #: SimpleHistory.php:1225
90
  msgid "Number of items per page"
91
  msgstr "Antal händelser per sida"
92
 
93
- #: SimpleHistory.php:1237
94
  msgid "Clear log"
95
  msgstr "Rensa logg"
96
 
97
- #: SimpleHistory.php:1457
98
  msgid "on the dashboard"
99
  msgstr "i panelen"
100
 
101
- #: SimpleHistory.php:1462
102
  msgid "as a page under the dashboard menu"
103
  msgstr "som en sida under panel-menyn"
104
 
105
- #: SimpleHistory.php:1478
106
  msgid "Items in the database are automatically removed after %1$s days."
107
  msgstr "Händelser i databasen tas automatiskt bort efter %1$s dagar."
108
 
109
- #: SimpleHistory.php:1480
110
  msgid "Items in the database are kept forever."
111
  msgstr "Händelser i databasen lagras för evigt."
112
 
113
- #: SimpleHistory.php:1484
114
  msgid "Clear log now"
115
  msgstr "Rensa loggen nu"
116
 
117
- #: SimpleHistory.php:1709
118
- msgid "+%1$s more"
119
- msgstr "+%1$s fler"
 
 
 
 
 
 
120
 
121
- #: SimpleHistory.php:1716
122
  msgid "Loading…"
123
  msgstr "Laddar historik..."
124
 
125
- #: SimpleHistory.php:1723
126
  msgid "Showing %1$s more"
127
  msgstr "+%1$s fler"
128
 
129
- #: SimpleHistory.php:1742
130
  msgid "Context data"
131
  msgstr "Kontextuell data"
132
 
133
- #: SimpleHistory.php:1743
134
- msgid "This is potentially useful meta data that a logger have saved."
135
  msgstr "Detta eventuellt användbar metadata som en logger har sparat."
136
 
137
- #: SimpleHistory.php:2065
138
  msgid "No events today so far."
139
  msgstr "Inga händelser idag ännu."
140
 
141
- #: SimpleHistory.php:2069
142
- msgid "%1$d event today from one user."
143
- msgstr "%1$d händelse idag från en användare."
144
 
145
- #: SimpleHistory.php:2073
146
- msgid "%1$d events today from %2$d users."
147
- msgstr "%1$d händelser idag från %2$d användare."
148
 
149
- #: SimpleHistory.php:2077
150
  msgid "%1$d events today from one user."
151
  msgstr "%1$d händelser idag från en användare."
152
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  #: dropins/SimpleHistoryDonateDropin.php:36
154
  msgid "Donate"
155
  msgstr "Donera"
@@ -162,29 +185,34 @@ msgstr ""
162
  "Om Simple History är användbar för dig så <a href=\"%1$s\">donera</a> eller "
163
  "<a href=\"%2$s\">köp mig något från min Amazon wish list</a>."
164
 
165
- #: dropins/SimpleHistoryFilterDropin.php:43
166
  msgid "Filter history"
167
  msgstr "Filtrera historik"
168
 
169
- #: dropins/SimpleHistoryFilterDropin.php:50
 
 
 
 
 
170
  msgid "All log levels"
171
  msgstr "Alla loggnivåer"
172
 
173
- #: dropins/SimpleHistoryFilterDropin.php:64
174
  msgid "All messages"
175
  msgstr "Alla meddelanden"
176
 
177
- #: dropins/SimpleHistoryFilterDropin.php:118
178
  msgid "All users"
179
  msgstr "Alla användare"
180
 
181
- #: dropins/SimpleHistoryFilterDropin.php:139
182
  msgid "All dates"
183
  msgstr "Alla datum"
184
 
185
- #: dropins/SimpleHistoryFilterDropin.php:153
186
- msgid "Filter"
187
- msgstr "Filtrera"
188
 
189
  #: dropins/SimpleHistoryNewRowsNotifier.php:80
190
  msgid "1 new row"
@@ -205,12 +233,12 @@ msgid "Created new secret RSS address"
205
  msgstr "Skapade en ny hemlig RSS-adress"
206
 
207
  #: dropins/SimpleHistoryRSSDropin.php:148
208
- #: dropins/SimpleHistoryRSSDropin.php:256
209
  msgid "History for %s"
210
  msgstr "Historik för %s"
211
 
212
  #: dropins/SimpleHistoryRSSDropin.php:149
213
- #: dropins/SimpleHistoryRSSDropin.php:257
214
  msgid "WordPress History for %s"
215
  msgstr "WordPress-historik för %s"
216
 
@@ -220,11 +248,11 @@ msgid_plural "+%1$s occasions"
220
  msgstr[0] "+%1$s tillfälle"
221
  msgstr[1] "+%1$s tillfällen"
222
 
223
- #: dropins/SimpleHistoryRSSDropin.php:260
224
  msgid "Wrong RSS secret"
225
  msgstr "Fel RSS-lösenord"
226
 
227
- #: dropins/SimpleHistoryRSSDropin.php:261
228
  msgid ""
229
  "Your RSS secret for Simple History RSS feed is wrong. Please see WordPress "
230
  "settings for current link to the RSS feed."
@@ -232,7 +260,7 @@ msgstr ""
232
  "Ditt RSS-lösenord för RSS-flödet för Simple History är felaktigt. Gå till "
233
  "WordPress-inställningarna för att få en aktuell länk till RSS-flöded."
234
 
235
- #: dropins/SimpleHistoryRSSDropin.php:312
236
  msgid ""
237
  "You can generate a new address for the RSS feed. This is useful if you think "
238
  "that the address has fallen into the wrong hands."
@@ -240,11 +268,11 @@ msgstr ""
240
  "Du kan skapa en ny adress för RSS-flödet. Detta är användbart om du "
241
  "misstänker att adressen kommit i orätta händer."
242
 
243
- #: dropins/SimpleHistoryRSSDropin.php:315
244
  msgid "Generate new address"
245
  msgstr "Skapa ny adress"
246
 
247
- #: dropins/SimpleHistoryRSSDropin.php:343
248
  msgid ""
249
  "Simple History has a RSS feed which you can subscribe to and receive log "
250
  "updates. Make sure you only share the feed with people you trust, since it "
@@ -262,7 +290,11 @@ msgstr "Testdata (debug)"
262
  msgid "Stats"
263
  msgstr "Statistik"
264
 
265
- #: index.php:56
 
 
 
 
266
  msgid ""
267
  "Simple History is a great plugin, but to use it your server must have at "
268
  "least PHP 5.3 installed (you have version %s)."
@@ -270,27 +302,27 @@ msgstr ""
270
  "Simple History är en rackarns bra plugin, men för att använda den måste din "
271
  "server ha minst PHP 5.3 installerat (du har version %s)."
272
 
273
- #: loggers/SimpleCommentsLogger.php:682
274
  msgid "Spam"
275
  msgstr "Skräp"
276
 
277
- #: loggers/SimpleCommentsLogger.php:684
278
  msgid "Approved"
279
  msgstr "Godkänd"
280
 
281
- #: loggers/SimpleCommentsLogger.php:686
282
  msgid "Pending"
283
  msgstr "Väntande"
284
 
285
- #: loggers/SimpleCommentsLogger.php:700
286
  msgid "Trackback"
287
  msgstr "Trackback"
288
 
289
- #: loggers/SimpleCommentsLogger.php:702
290
  msgid "Pingback"
291
  msgstr "Pingback"
292
 
293
- #: loggers/SimpleCommentsLogger.php:704
294
  msgid "Comment"
295
  msgstr "Kommentar"
296
 
@@ -315,29 +347,25 @@ msgstr "Av %s"
315
  msgid "%d occasions"
316
  msgstr "%d tillfällen"
317
 
318
- #: loggers/SimpleLogger.php:205
319
  msgid "Deleted user (had id %1$s, email %2$s, login %3$s)"
320
  msgstr "Raderad användare (hade id %1$s, epost %2$s, login %3$s)"
321
 
322
- #: loggers/SimpleLogger.php:220
323
  msgid "Anonymous web user"
324
  msgstr "Anonym webbanvändare"
325
 
326
- #: loggers/SimpleLogger.php:228
327
  msgid "Anonymous user from %1$s"
328
  msgstr "Anonym användare från %1$s"
329
 
330
- #: loggers/SimpleLogger.php:299
331
- msgid "Just now"
332
- msgstr "Just nu"
333
-
334
  #. translators: Date format for log row header, see http:php.net/date
335
- #: loggers/SimpleLogger.php:304
336
  msgid "M j, Y \\a\\t G:i"
337
  msgstr "M j, Y \\a\\t G:i"
338
 
339
  #. translators: 1: last modified date and time in human time diff-format
340
- #: loggers/SimpleLogger.php:312
341
  msgid "%1$s ago"
342
  msgstr "%1$s sedan"
343
 
@@ -363,19 +391,19 @@ msgid "Uploaded {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
363
  msgstr ""
364
  "Laddade upp {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
365
 
366
- #: loggers/SimpleMediaLogger.php:180
367
  msgid "{attachment_thumb}"
368
  msgstr "{attachment_thumb}"
369
 
370
- #: loggers/SimpleMediaLogger.php:189
371
  msgid "{attachment_size_format}"
372
  msgstr "{attachment_size_format}"
373
 
374
- #: loggers/SimpleMediaLogger.php:190
375
  msgid "{attachment_filetype_extension}"
376
  msgstr "{attachment_filetype_extension}"
377
 
378
- #: loggers/SimpleMediaLogger.php:192
379
  msgid "{full_image_width} × {full_image_height}"
380
  msgstr "{full_image_width} × {full_image_height}"
381
 
@@ -483,7 +511,7 @@ msgstr "Ändrade inställningar för temats anpassade bakgrund"
483
  msgid "Section"
484
  msgstr "Sektion"
485
 
486
- #: loggers/SimpleUserLogger.php:23
487
  msgid ""
488
  "Failed to login to account with username \"{login_user_login}\" because an "
489
  "incorrect password was entered"
@@ -491,32 +519,32 @@ msgstr ""
491
  "Misslyckades att logga in på kontot med användarnamnet \"{login_user_login}\" "
492
  "eftersom ett felaktigt lösenord angavs"
493
 
494
- #: loggers/SimpleUserLogger.php:24
495
  msgid ""
496
  "Failed to login with username \"{failed_login_username}\" because no user "
497
- "with that username exist"
498
  msgstr ""
499
- "Misslyckades att logga in med användarnamn \"{failed_login_username}\" "
500
- "eftersom ingen användare med det användarnamnet finns"
501
 
502
- #: loggers/SimpleUserLogger.php:25
503
  msgid "Logged in"
504
  msgstr "Loggade in"
505
 
506
- #: loggers/SimpleUserLogger.php:26
507
  msgid "Unknown user logged in"
508
  msgstr "Okänd användare loggade in"
509
 
510
- #: loggers/SimpleUserLogger.php:27
511
  msgid "Logged out"
512
  msgstr "Loggade ut"
513
 
514
- #: loggers/SimpleUserLogger.php:28
515
  msgid "Edited the profile for user {edited_user_login} ({edited_user_email})"
516
  msgstr ""
517
  "Redigerade profilen för användaren {edited_user_login} ({edited_user_email})"
518
 
519
- #: loggers/SimpleUserLogger.php:29
520
  msgid ""
521
  "Created user {created_user_login} ({created_user_email}) with role "
522
  "{created_user_role}"
@@ -524,23 +552,23 @@ msgstr ""
524
  "Skapade användare {created_user_login} ({created_user_email}) med rollen "
525
  "{created_user_role}"
526
 
527
- #: loggers/SimpleUserLogger.php:30
528
  msgid "Deleted user {deleted_user_login} ({deleted_user_email})"
529
  msgstr "Raderade användaren {deleted_user_login} ({deleted_user_email})"
530
 
531
- #: loggers/SimpleUserLogger.php:153
532
  msgid "Edited <a href=\"{edit_profile_link}\">your profile</a>"
533
  msgstr "Redigerade <a href=\"{edit_profile_link}\">din profl</a>"
534
 
535
- #: loggers/SimpleUserLogger.php:157
536
  msgid "Edited <a href=\"{edit_profile_link}\">their profile</a>"
537
  msgstr "Redigerade <a href=\"{edit_profile_link}\">sin profil</a>"
538
 
539
- #: loggers/SimpleUserLogger.php:166
540
  msgid "Edited your profile"
541
  msgstr "Redigerade din profil"
542
 
543
- #: loggers/SimpleUserLogger.php:177
544
  msgid ""
545
  "Edited the profile for user <a href="
546
  "\"{edit_profile_link}\">{edited_user_login} ({edited_user_email})</a>"
@@ -596,10 +624,6 @@ msgstr ""
596
  msgid "Deleted users are also included."
597
  msgstr "Raderade användare är också inkluderade."
598
 
599
- #. Plugin Name of the plugin/theme
600
- msgid "Simple History"
601
- msgstr "Simple History"
602
-
603
  #. Plugin URI of the plugin/theme
604
  msgid "http://simple-history.com"
605
  msgstr "http://simple-history.com"
@@ -620,37 +644,177 @@ msgstr "Pär Thernström"
620
  msgid "http://simple-history.com/"
621
  msgstr "http://simple-history.com"
622
 
623
- #: SimpleHistory.php:166
624
  msgctxt ""
625
  "Message visible while waiting for log to load from server the first time"
626
  msgid "Loading history..."
627
  msgstr "Laddar historik..."
628
 
629
- #: SimpleHistory.php:203
630
  msgctxt "page n of n"
631
  msgid "of"
632
  msgstr "av"
633
 
634
- #: SimpleHistory.php:274
635
  msgctxt "API: not enought arguments passed"
636
  msgid "Not enough args specified"
637
  msgstr "Inte tillräckligt med arguments specifierade"
638
 
639
- #: SimpleHistory.php:1149
640
  msgctxt "dashboard menu name"
641
  msgid "Simple History"
642
  msgstr "Simple History"
643
 
644
- #: SimpleHistory.php:1274
645
  msgctxt "history page headline"
646
  msgid "Simple History"
647
  msgstr "Simple History"
648
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
649
  #: dropins/SimpleHistoryDonateDropin.php:51
650
  msgctxt "donate settings headline"
651
  msgid "Donate"
652
  msgstr "Donera"
653
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
654
  #: dropins/SimpleHistoryNewRowsNotifier.php:38
655
  msgctxt "New rows notifier: error while checking for new rows"
656
  msgid "An error occured while checking for new log rows"
@@ -661,19 +825,70 @@ msgctxt "rss settings headline"
661
  msgid "RSS feed"
662
  msgstr "RSS-flöde"
663
 
664
- #: loggers/SimpleCommentsLogger.php:94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
665
  msgctxt "A comment was added to the database by a non-logged in internet user"
666
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
667
  msgstr ""
668
  "Lade till en kommentar till {comment_post_type} \"{comment_post_title}\""
669
 
670
- #: loggers/SimpleCommentsLogger.php:100
671
  msgctxt "A comment was added to the database by a logged in user"
672
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
673
  msgstr ""
674
  "Lade till en kommentar till {comment_post_type} \"{comment_post_title}\""
675
 
676
- #: loggers/SimpleCommentsLogger.php:106
677
  msgctxt "A comment was approved"
678
  msgid ""
679
  "Approved a comment to \"{comment_post_title}\" by {comment_author} "
@@ -682,7 +897,7 @@ msgstr ""
682
  "Godkände en kommentar till \"{comment_post_title}\" av {comment_author} "
683
  "({comment_author_email})"
684
 
685
- #: loggers/SimpleCommentsLogger.php:112
686
  msgctxt "A comment was was unapproved"
687
  msgid ""
688
  "Unapproved a comment to \"{comment_post_title}\" by {comment_author} "
@@ -691,12 +906,12 @@ msgstr ""
691
  "Godkände inte en kommentar till \"{comment_post_title}\" av {comment_author} "
692
  "({comment_author_email})"
693
 
694
- #: loggers/SimpleCommentsLogger.php:118
695
  msgctxt "A comment was marked as spam"
696
  msgid "Marked a comment to post \"{comment_post_title}\" as spam"
697
  msgstr "Markerade en kommentar till \"{comment_post_title}\" som spam"
698
 
699
- #: loggers/SimpleCommentsLogger.php:124
700
  msgctxt "A comment was marked moved to the trash"
701
  msgid ""
702
  "Trashed a comment to \"{comment_post_title}\" by {comment_author} "
@@ -705,7 +920,7 @@ msgstr ""
705
  "Kastade en kommentar till \"{comment_post_title}\" av {comment_author} "
706
  "({comment_author_email}) i papperskorgen"
707
 
708
- #: loggers/SimpleCommentsLogger.php:130
709
  msgctxt "A comment was restored from the trash"
710
  msgid ""
711
  "Restored a comment to \"{comment_post_title}\" by {comment_author} "
@@ -714,7 +929,7 @@ msgstr ""
714
  "Återställde en kommentar till \"{comment_post_title}\" av {comment_author} "
715
  "({comment_author_email}) från papperskorgen"
716
 
717
- #: loggers/SimpleCommentsLogger.php:136
718
  msgctxt "A comment was deleted"
719
  msgid ""
720
  "Deleted a comment to \"{comment_post_title}\" by {comment_author} "
@@ -723,7 +938,7 @@ msgstr ""
723
  "Raderade en kommentar kommentar till \"{comment_post_title}\" av "
724
  "{comment_author} ({comment_author_email})"
725
 
726
- #: loggers/SimpleCommentsLogger.php:142
727
  msgctxt "A comment was edited"
728
  msgid ""
729
  "Edited a comment to \"{comment_post_title}\" by {comment_author} "
@@ -732,24 +947,24 @@ msgstr ""
732
  "Redigerade en kommentar till \"{comment_post_title}\" av {comment_author} "
733
  "({comment_author_email})"
734
 
735
- #: loggers/SimpleCommentsLogger.php:149
736
  msgctxt "A trackback was added to the database by a non-logged in internet user"
737
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
738
  msgstr ""
739
  "Lade till en trackback till {comment_post_type} \"{comment_post_title}\""
740
 
741
- #: loggers/SimpleCommentsLogger.php:204
742
  msgctxt "A trackback was added to the database by a non-logged in internet user"
743
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
744
  msgstr "Lade till en pingback till {comment_post_type} \"{comment_post_title}\""
745
 
746
- #: loggers/SimpleCommentsLogger.php:155
747
  msgctxt "A trackback was added to the database by a logged in user"
748
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
749
  msgstr ""
750
  "Lade till en trackback till {comment_post_type} \"{comment_post_title}\""
751
 
752
- #: loggers/SimpleCommentsLogger.php:161
753
  msgctxt "A trackback was approved"
754
  msgid ""
755
  "Approved a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -758,7 +973,7 @@ msgstr ""
758
  "Godkände en trackback till \"{comment_post_title}\" av {comment_author} "
759
  "({comment_author_email})"
760
 
761
- #: loggers/SimpleCommentsLogger.php:167
762
  msgctxt "A trackback was was unapproved"
763
  msgid ""
764
  "Unapproved a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -767,12 +982,12 @@ msgstr ""
767
  "Godkände inte en trackback till \"{comment_post_title}\" av {comment_author} "
768
  "({comment_author_email})"
769
 
770
- #: loggers/SimpleCommentsLogger.php:173
771
  msgctxt "A trackback was marked as spam"
772
  msgid "Marked a trackback to post \"{comment_post_title}\" as spam"
773
  msgstr "Markerade en trackback till \"{comment_post_title}\" som spam"
774
 
775
- #: loggers/SimpleCommentsLogger.php:179
776
  msgctxt "A trackback was marked moved to the trash"
777
  msgid ""
778
  "Trashed a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -781,7 +996,7 @@ msgstr ""
781
  "Kastade en trackback till \"{comment_post_title}\" av {comment_author} "
782
  "({comment_author_email}) i papperskorgen"
783
 
784
- #: loggers/SimpleCommentsLogger.php:185
785
  msgctxt "A trackback was restored from the trash"
786
  msgid ""
787
  "Restored a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -790,7 +1005,7 @@ msgstr ""
790
  "Återställde en trackback till \"{comment_post_title}\" av {comment_author} "
791
  "({comment_author_email}) från papperskorgen"
792
 
793
- #: loggers/SimpleCommentsLogger.php:191
794
  msgctxt "A trackback was deleted"
795
  msgid ""
796
  "Deleted a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -799,7 +1014,7 @@ msgstr ""
799
  "Raderade en trackback till \"{comment_post_title}\" av {comment_author} "
800
  "({comment_author_email})"
801
 
802
- #: loggers/SimpleCommentsLogger.php:197
803
  msgctxt "A trackback was edited"
804
  msgid ""
805
  "Edited a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -808,12 +1023,12 @@ msgstr ""
808
  "Redigerade en trackback till \"{comment_post_title}\" av {comment_author} "
809
  "({comment_author_email})"
810
 
811
- #: loggers/SimpleCommentsLogger.php:210
812
  msgctxt "A pingback was added to the database by a logged in user"
813
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
814
  msgstr "Lade till en pingback till {comment_post_type} \"{comment_post_title}\""
815
 
816
- #: loggers/SimpleCommentsLogger.php:216
817
  msgctxt "A pingback was approved"
818
  msgid ""
819
  "Approved a pingback to \"{comment_post_title}\" by "
@@ -822,7 +1037,7 @@ msgstr ""
822
  "Godkände en pingback till \"{comment_post_title}\" av {comment_author} "
823
  "({comment_author_email}) från papperskorgen"
824
 
825
- #: loggers/SimpleCommentsLogger.php:222
826
  msgctxt "A pingback was was unapproved"
827
  msgid ""
828
  "Unapproved a pingback to \"{comment_post_title}\" by "
@@ -831,12 +1046,12 @@ msgstr ""
831
  "Ångrade godkännande av en pingack till \"{comment_post_title}\" av "
832
  "{comment_author} ({comment_author_email})"
833
 
834
- #: loggers/SimpleCommentsLogger.php:228
835
  msgctxt "A pingback was marked as spam"
836
  msgid "Marked a pingback to post \"{comment_post_title}\" as spam"
837
  msgstr "Markerade en pingback till \"{comment_post_title}\" som spam"
838
 
839
- #: loggers/SimpleCommentsLogger.php:234
840
  msgctxt "A pingback was marked moved to the trash"
841
  msgid ""
842
  "Trashed a pingback to \"{comment_post_title}\" by {comment_author} "
@@ -845,7 +1060,7 @@ msgstr ""
845
  "Kastade en pingback till \"{comment_post_title}\" av {comment_author} "
846
  "({comment_author_email}) i papperskorgen"
847
 
848
- #: loggers/SimpleCommentsLogger.php:240
849
  msgctxt "A pingback was restored from the trash"
850
  msgid ""
851
  "Restored a pingback to \"{comment_post_title}\" by {comment_author} "
@@ -854,7 +1069,7 @@ msgstr ""
854
  "Ångrade godkännandet av en kommentar till \"{comment_post_title}\" av "
855
  "{comment_author} ({comment_author_email})"
856
 
857
- #: loggers/SimpleCommentsLogger.php:246
858
  msgctxt "A pingback was deleted"
859
  msgid ""
860
  "Deleted a pingback to \"{comment_post_title}\" by {comment_author} "
@@ -863,7 +1078,7 @@ msgstr ""
863
  "Raderade en pingback till \"{comment_post_title}\" av {comment_author} "
864
  "({comment_author_email})"
865
 
866
- #: loggers/SimpleCommentsLogger.php:252
867
  msgctxt "A pingback was edited"
868
  msgid ""
869
  "Edited a pingback to \"{comment_post_title}\" by {comment_author} "
@@ -872,85 +1087,85 @@ msgstr ""
872
  "Redigerade en pingback till \"{comment_post_title}\" av {comment_author} "
873
  "({comment_author_email})"
874
 
875
- #: loggers/SimpleCommentsLogger.php:263
876
  msgctxt "Comments logger: search"
877
  msgid "Comments"
878
  msgstr "Kommentarer"
879
 
880
- #: loggers/SimpleCommentsLogger.php:264
881
  msgctxt "Comments logger: search"
882
  msgid "All comments activity"
883
  msgstr "Alla kommentarshändelser"
884
 
885
- #: loggers/SimpleCommentsLogger.php:266
886
  msgctxt "Comments logger: search"
887
  msgid "Added comments"
888
  msgstr "Tillagda kommentarer"
889
 
890
- #: loggers/SimpleCommentsLogger.php:274
891
  msgctxt "Comments logger: search"
892
  msgid "Edited comments"
893
  msgstr "Redigerade kommentarer"
894
 
895
- #: loggers/SimpleCommentsLogger.php:279
896
  msgctxt "Comments logger: search"
897
  msgid "Approved comments"
898
  msgstr "Godkända kommentarer"
899
 
900
- #: loggers/SimpleCommentsLogger.php:284
901
  msgctxt "Comments logger: search"
902
  msgid "Held comments"
903
  msgstr "Tillbakahållna kommentar"
904
 
905
- #: loggers/SimpleCommentsLogger.php:289
906
  msgctxt "Comments logger: search"
907
  msgid "Comments status changed to spam"
908
  msgstr "Status på kommentar ändrad till spam"
909
 
910
- #: loggers/SimpleCommentsLogger.php:294
911
  msgctxt "Comments logger: search"
912
  msgid "Trashed comments"
913
  msgstr "Kastade kommentarer"
914
 
915
- #: loggers/SimpleCommentsLogger.php:299
916
  msgctxt "Comments logger: search"
917
  msgid "Untrashed comments"
918
  msgstr "Kommentarer tillbakatagna från papperskorgen"
919
 
920
- #: loggers/SimpleCommentsLogger.php:304
921
  msgctxt "Comments logger: search"
922
  msgid "Deleted comments"
923
  msgstr "Borttagna kommentarer"
924
 
925
- #: loggers/SimpleCommentsLogger.php:599 loggers/SimpleCommentsLogger.php:612
926
- #: loggers/SimpleCommentsLogger.php:626
927
  msgctxt "comments logger - detailed output comment status"
928
  msgid "Status"
929
  msgstr "Status"
930
 
931
- #: loggers/SimpleCommentsLogger.php:601 loggers/SimpleCommentsLogger.php:614
932
- #: loggers/SimpleCommentsLogger.php:628
933
  msgctxt "comments logger - detailed output author"
934
  msgid "Name"
935
  msgstr "Namn"
936
 
937
- #: loggers/SimpleCommentsLogger.php:602 loggers/SimpleCommentsLogger.php:615
938
- #: loggers/SimpleCommentsLogger.php:629
939
  msgctxt "comments logger - detailed output email"
940
  msgid "Email"
941
  msgstr "E-post"
942
 
943
- #: loggers/SimpleCommentsLogger.php:603 loggers/SimpleCommentsLogger.php:616
944
  msgctxt "comments logger - detailed output content"
945
  msgid "Content"
946
  msgstr "Innehåll"
947
 
948
- #: loggers/SimpleCommentsLogger.php:630
949
  msgctxt "comments logger - detailed output content"
950
  msgid "Comment"
951
  msgstr "Kommentar"
952
 
953
- #: loggers/SimpleCommentsLogger.php:756
954
  msgctxt "comments logger - edit comment"
955
  msgid "View/Edit"
956
  msgstr "Visa/Redigera"
@@ -965,42 +1180,42 @@ msgctxt "User logger: search"
965
  msgid "WordPress core updates"
966
  msgstr "WordPress core uppdateringar"
967
 
968
- #: loggers/SimpleUserLogger.php:35
969
  msgctxt "User logger: search"
970
  msgid "Users"
971
  msgstr "Användare"
972
 
973
- #: loggers/SimpleUserLogger.php:36
974
  msgctxt "User logger: search"
975
  msgid "All user activity"
976
  msgstr "All användaraktivitet"
977
 
978
- #: loggers/SimpleUserLogger.php:38
979
  msgctxt "User logger: search"
980
  msgid "Successful user logins"
981
  msgstr "Lyckade inloggningar av användare"
982
 
983
- #: loggers/SimpleUserLogger.php:42
984
  msgctxt "User logger: search"
985
  msgid "Failed user logins"
986
  msgstr "Misslyckade inloggningar av användare"
987
 
988
- #: loggers/SimpleUserLogger.php:46
989
  msgctxt "User logger: search"
990
  msgid "User logouts"
991
  msgstr "Utloggning av användare"
992
 
993
- #: loggers/SimpleUserLogger.php:49
994
  msgctxt "User logger: search"
995
  msgid "Created users"
996
  msgstr "Skapade användare"
997
 
998
- #: loggers/SimpleUserLogger.php:52
999
  msgctxt "User logger: search"
1000
  msgid "User profile updates"
1001
  msgstr "Uppdateringar av användarprofiler"
1002
 
1003
- #: loggers/SimpleUserLogger.php:55
1004
  msgctxt "User logger: search"
1005
  msgid "User deletions"
1006
  msgstr "Radering av användare"
@@ -1015,7 +1230,7 @@ msgctxt "Export logger: search"
1015
  msgid "Created exports"
1016
  msgstr "Skapade exporter"
1017
 
1018
- #: loggers/SimpleLogger.php:192
1019
  msgctxt "header output when initiator is the currently logged in user"
1020
  msgid "You"
1021
  msgstr "Du"
@@ -1116,7 +1331,7 @@ msgstr ""
1116
  #: loggers/SimplePluginLogger.php:81
1117
  msgctxt "Plugin update failed"
1118
  msgid "Updated plugin \"{plugin_name}\""
1119
- msgstr "Uppdaterade plugin \"{plugin_name}\""
1120
 
1121
  #: loggers/SimplePluginLogger.php:87
1122
  msgctxt "Plugin file edited"
@@ -1134,7 +1349,7 @@ msgid ""
1134
  "Updated plugin \"{plugin_name}\" to {plugin_version} from "
1135
  "{plugin_prev_version}"
1136
  msgstr ""
1137
- "Uppdaterade plugin \"{plugin_name}\" till {plugin_version} från "
1138
  "{plugin_prev_version}"
1139
 
1140
  #: loggers/SimplePluginLogger.php:108
@@ -1182,47 +1397,47 @@ msgctxt "Plugin logger: search"
1182
  msgid "Deleted plugins"
1183
  msgstr "Raderade plugins"
1184
 
1185
- #: loggers/SimplePluginLogger.php:863
1186
  msgctxt "plugin logger - detailed output version"
1187
  msgid "Version"
1188
  msgstr "Version"
1189
 
1190
- #: loggers/SimplePluginLogger.php:865
1191
  msgctxt "plugin logger - detailed output author"
1192
  msgid "Author"
1193
  msgstr "Författare"
1194
 
1195
- #: loggers/SimplePluginLogger.php:867
1196
  msgctxt "plugin logger - detailed output author"
1197
  msgid "Requires"
1198
  msgstr "Kräver"
1199
 
1200
- #: loggers/SimplePluginLogger.php:866
1201
  msgctxt "plugin logger - detailed output url"
1202
  msgid "URL"
1203
  msgstr "URL"
1204
 
1205
- #: loggers/SimplePluginLogger.php:868
1206
  msgctxt "plugin logger - detailed output compatible"
1207
  msgid "Compatible up to"
1208
  msgstr "Kompatibel upp till"
1209
 
1210
- #: loggers/SimplePluginLogger.php:869
1211
  msgctxt "plugin logger - detailed output downloaded"
1212
  msgid "Downloads"
1213
  msgstr "Nedladdningar"
1214
 
1215
- #: loggers/SimplePluginLogger.php:929
1216
  msgctxt "plugin logger: plugin info thickbox title view all info"
1217
  msgid "View plugin info"
1218
  msgstr "Visa information om plugin"
1219
 
1220
- #: loggers/SimplePluginLogger.php:944
1221
  msgctxt "plugin logger: plugin info thickbox title"
1222
  msgid "View plugin info"
1223
  msgstr "Visa information om plugin"
1224
 
1225
- #: loggers/SimplePluginLogger.php:948
1226
  msgctxt "plugin logger: plugin info thickbox title"
1227
  msgid "View changelog"
1228
  msgstr "Visa ändringslogg"
@@ -1297,11 +1512,30 @@ msgctxt "Theme logger: search"
1297
  msgid "Background of themes changed"
1298
  msgstr "Ändrade bakgrunder för teman"
1299
 
 
 
 
 
 
 
 
 
 
 
1300
  #: templates/settings-statsRowsPerDay.php:36
1301
  msgctxt "stats: date in rows per day chart"
1302
  msgid "M j"
1303
  msgstr "M j"
1304
 
 
 
 
 
 
 
 
 
 
1305
  #~ msgctxt "dashboard menu name"
1306
  #~ msgid "History"
1307
  #~ msgstr "Historik"
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-26 15:41:57+00:00\n"
8
+ "PO-Revision-Date: 2015-02-11 13:42+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"
22
  "X-Textdomain-Support: yes\n"
23
  "X-Poedit-SearchPath-0: .\n"
24
 
25
+ #: SimpleHistory.php:504 SimpleHistory.php:765
26
  msgid "Settings"
27
  msgstr "Inställningar"
28
 
29
+ #: SimpleHistory.php:515
30
  msgid "Log (debug)"
31
  msgstr "Logg (debug)"
32
 
33
+ #: SimpleHistory.php:520
34
  msgid "Styles example (debug)"
35
  msgstr "Stilexempel (debug)"
36
 
37
+ #. Plugin Name of the plugin/theme
38
+ #: SimpleHistory.php:780
39
+ msgid "Simple History"
40
+ msgstr "Simple History"
41
 
42
+ #: SimpleHistory.php:856
43
  msgid "Remove all log items?"
44
  msgstr "Ta bort alla händelser?"
45
 
46
+ #: SimpleHistory.php:858
47
  msgid "Go to the first page"
48
  msgstr "Gå till första sidan"
49
 
50
+ #: SimpleHistory.php:859
51
  msgid "Go to the previous page"
52
  msgstr "Gå till föregående sida"
53
 
54
+ #: SimpleHistory.php:860
55
  msgid "Go to the next page"
56
  msgstr "Gå till nästa sida"
57
 
58
+ #: SimpleHistory.php:861
59
  msgid "Go to the last page"
60
  msgstr "Gå till sista sidan"
61
 
62
+ #: SimpleHistory.php:862
63
  msgid "Current page"
64
  msgstr "Aktuell sida"
65
 
66
+ #: SimpleHistory.php:864
67
  msgid "Oups, the log could not be loaded right now."
68
  msgstr "Hoppsan, historiken kunde inte laddas just nu."
69
 
70
+ #: SimpleHistory.php:865
71
  msgid "Your search did not match any history events."
72
  msgstr "Din sökning matchade inte några händelser i historiken."
73
 
74
+ #: SimpleHistory.php:1149 SimpleHistory.php:1250
75
  msgid "Simple History Settings"
76
  msgstr "Inställningar för Simple History"
77
 
78
+ #: SimpleHistory.php:1183
79
  msgid "No valid callback found"
80
  msgstr "Inget giltigt callback hittades."
81
 
82
+ #: SimpleHistory.php:1271
83
  msgid "Cleared database"
84
  msgstr "Databasen rensades"
85
 
86
+ #: SimpleHistory.php:1298
87
  msgid "Show history"
88
  msgstr "Visa historik"
89
 
90
+ #: SimpleHistory.php:1311
91
  msgid "Number of items per page"
92
  msgstr "Antal händelser per sida"
93
 
94
+ #: SimpleHistory.php:1323
95
  msgid "Clear log"
96
  msgstr "Rensa logg"
97
 
98
+ #: SimpleHistory.php:1462
99
  msgid "on the dashboard"
100
  msgstr "i panelen"
101
 
102
+ #: SimpleHistory.php:1467
103
  msgid "as a page under the dashboard menu"
104
  msgstr "som en sida under panel-menyn"
105
 
106
+ #: SimpleHistory.php:1483
107
  msgid "Items in the database are automatically removed after %1$s days."
108
  msgstr "Händelser i databasen tas automatiskt bort efter %1$s dagar."
109
 
110
+ #: SimpleHistory.php:1485
111
  msgid "Items in the database are kept forever."
112
  msgstr "Händelser i databasen lagras för evigt."
113
 
114
+ #: SimpleHistory.php:1489
115
  msgid "Clear log now"
116
  msgstr "Rensa loggen nu"
117
 
118
+ #: SimpleHistory.php:1533
119
+ msgid "The log for Simple History was cleared ({num_rows} rows were removed)."
120
+ msgstr "Rensade historiken för Simple History. ({num_rows} rader togs bort)."
121
+
122
+ #: SimpleHistory.php:1793
123
+ msgid "+%1$s similar event"
124
+ msgid_plural "+%1$s similar events"
125
+ msgstr[0] "+%1$s liknande händelse"
126
+ msgstr[1] "+%1$s liknande händelser"
127
 
128
+ #: SimpleHistory.php:1800
129
  msgid "Loading…"
130
  msgstr "Laddar historik..."
131
 
132
+ #: SimpleHistory.php:1807
133
  msgid "Showing %1$s more"
134
  msgstr "+%1$s fler"
135
 
136
+ #: SimpleHistory.php:1826
137
  msgid "Context data"
138
  msgstr "Kontextuell data"
139
 
140
+ #: SimpleHistory.php:1827
141
+ msgid "This is potentially useful meta data that a logger has saved."
142
  msgstr "Detta eventuellt användbar metadata som en logger har sparat."
143
 
144
+ #: SimpleHistory.php:2302
145
  msgid "No events today so far."
146
  msgstr "Inga händelser idag ännu."
147
 
148
+ #: SimpleHistory.php:2321
149
+ msgid "One event today from one user."
150
+ msgstr "En händelse idag från en användare."
151
 
152
+ #: SimpleHistory.php:2327
153
+ msgid "One event today from one source."
154
+ msgstr "En händelse idag från en källa."
155
 
156
+ #: SimpleHistory.php:2333
157
  msgid "%1$d events today from one user."
158
  msgstr "%1$d händelser idag från en användare."
159
 
160
+ #: SimpleHistory.php:2339
161
+ msgid "%1$d events today from %2$d users."
162
+ msgstr "%1$d händelser idag från %2$d användare."
163
+
164
+ #: SimpleHistory.php:2345 SimpleHistory.php:2351
165
+ msgid "%1$d events today from one user and one other source."
166
+ msgstr "%1$d händelser idag från en användare och från en annan källa."
167
+
168
+ #: SimpleHistory.php:2357
169
+ msgid "%1$d events today from one user and %3$d other sources."
170
+ msgstr "%1$d händelser idag från en användare och från %3$d andra källor."
171
+
172
+ #: SimpleHistory.php:2363
173
+ msgid "%1$s events today from %2$d users and %3$d other sources."
174
+ msgstr "%1$s händelser idag från %2$d användare och %3$d andra källor."
175
+
176
  #: dropins/SimpleHistoryDonateDropin.php:36
177
  msgid "Donate"
178
  msgstr "Donera"
185
  "Om Simple History är användbar för dig så <a href=\"%1$s\">donera</a> eller "
186
  "<a href=\"%2$s\">köp mig något från min Amazon wish list</a>."
187
 
188
+ #: dropins/SimpleHistoryFilterDropin.php:44
189
  msgid "Filter history"
190
  msgstr "Filtrera historik"
191
 
192
+ #: dropins/SimpleHistoryFilterDropin.php:48
193
+ #: dropins/SimpleHistoryFilterDropin.php:159
194
+ msgid "Search events"
195
+ msgstr "Sök händelser"
196
+
197
+ #: dropins/SimpleHistoryFilterDropin.php:56
198
  msgid "All log levels"
199
  msgstr "Alla loggnivåer"
200
 
201
+ #: dropins/SimpleHistoryFilterDropin.php:70
202
  msgid "All messages"
203
  msgstr "Alla meddelanden"
204
 
205
+ #: dropins/SimpleHistoryFilterDropin.php:124
206
  msgid "All users"
207
  msgstr "Alla användare"
208
 
209
+ #: dropins/SimpleHistoryFilterDropin.php:145
210
  msgid "All dates"
211
  msgstr "Alla datum"
212
 
213
+ #: dropins/SimpleHistoryFilterDropin.php:168
214
+ msgid "Search"
215
+ msgstr "Sök"
216
 
217
  #: dropins/SimpleHistoryNewRowsNotifier.php:80
218
  msgid "1 new row"
233
  msgstr "Skapade en ny hemlig RSS-adress"
234
 
235
  #: dropins/SimpleHistoryRSSDropin.php:148
236
+ #: dropins/SimpleHistoryRSSDropin.php:259
237
  msgid "History for %s"
238
  msgstr "Historik för %s"
239
 
240
  #: dropins/SimpleHistoryRSSDropin.php:149
241
+ #: dropins/SimpleHistoryRSSDropin.php:260
242
  msgid "WordPress History for %s"
243
  msgstr "WordPress-historik för %s"
244
 
248
  msgstr[0] "+%1$s tillfälle"
249
  msgstr[1] "+%1$s tillfällen"
250
 
251
+ #: dropins/SimpleHistoryRSSDropin.php:263
252
  msgid "Wrong RSS secret"
253
  msgstr "Fel RSS-lösenord"
254
 
255
+ #: dropins/SimpleHistoryRSSDropin.php:264
256
  msgid ""
257
  "Your RSS secret for Simple History RSS feed is wrong. Please see WordPress "
258
  "settings for current link to the RSS feed."
260
  "Ditt RSS-lösenord för RSS-flödet för Simple History är felaktigt. Gå till "
261
  "WordPress-inställningarna för att få en aktuell länk till RSS-flöded."
262
 
263
+ #: dropins/SimpleHistoryRSSDropin.php:315
264
  msgid ""
265
  "You can generate a new address for the RSS feed. This is useful if you think "
266
  "that the address has fallen into the wrong hands."
268
  "Du kan skapa en ny adress för RSS-flödet. Detta är användbart om du "
269
  "misstänker att adressen kommit i orätta händer."
270
 
271
+ #: dropins/SimpleHistoryRSSDropin.php:318
272
  msgid "Generate new address"
273
  msgstr "Skapa ny adress"
274
 
275
+ #: dropins/SimpleHistoryRSSDropin.php:346
276
  msgid ""
277
  "Simple History has a RSS feed which you can subscribe to and receive log "
278
  "updates. Make sure you only share the feed with people you trust, since it "
290
  msgid "Stats"
291
  msgstr "Statistik"
292
 
293
+ #: dropins/SimpleHistorySidebarDropin.php:159 loggers/SimpleLogger.php:296
294
+ msgid "Just now"
295
+ msgstr "Just nu"
296
+
297
+ #: index.php:59
298
  msgid ""
299
  "Simple History is a great plugin, but to use it your server must have at "
300
  "least PHP 5.3 installed (you have version %s)."
302
  "Simple History är en rackarns bra plugin, men för att använda den måste din "
303
  "server ha minst PHP 5.3 installerat (du har version %s)."
304
 
305
+ #: loggers/SimpleCommentsLogger.php:685
306
  msgid "Spam"
307
  msgstr "Skräp"
308
 
309
+ #: loggers/SimpleCommentsLogger.php:687
310
  msgid "Approved"
311
  msgstr "Godkänd"
312
 
313
+ #: loggers/SimpleCommentsLogger.php:689
314
  msgid "Pending"
315
  msgstr "Väntande"
316
 
317
+ #: loggers/SimpleCommentsLogger.php:703
318
  msgid "Trackback"
319
  msgstr "Trackback"
320
 
321
+ #: loggers/SimpleCommentsLogger.php:705
322
  msgid "Pingback"
323
  msgstr "Pingback"
324
 
325
+ #: loggers/SimpleCommentsLogger.php:707
326
  msgid "Comment"
327
  msgstr "Kommentar"
328
 
347
  msgid "%d occasions"
348
  msgstr "%d tillfällen"
349
 
350
+ #: loggers/SimpleLogger.php:203
351
  msgid "Deleted user (had id %1$s, email %2$s, login %3$s)"
352
  msgstr "Raderad användare (hade id %1$s, epost %2$s, login %3$s)"
353
 
354
+ #: loggers/SimpleLogger.php:218
355
  msgid "Anonymous web user"
356
  msgstr "Anonym webbanvändare"
357
 
358
+ #: loggers/SimpleLogger.php:226
359
  msgid "Anonymous user from %1$s"
360
  msgstr "Anonym användare från %1$s"
361
 
 
 
 
 
362
  #. translators: Date format for log row header, see http:php.net/date
363
+ #: loggers/SimpleLogger.php:301
364
  msgid "M j, Y \\a\\t G:i"
365
  msgstr "M j, Y \\a\\t G:i"
366
 
367
  #. translators: 1: last modified date and time in human time diff-format
368
+ #: loggers/SimpleLogger.php:309
369
  msgid "%1$s ago"
370
  msgstr "%1$s sedan"
371
 
391
  msgstr ""
392
  "Laddade upp {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
393
 
394
+ #: loggers/SimpleMediaLogger.php:197
395
  msgid "{attachment_thumb}"
396
  msgstr "{attachment_thumb}"
397
 
398
+ #: loggers/SimpleMediaLogger.php:206
399
  msgid "{attachment_size_format}"
400
  msgstr "{attachment_size_format}"
401
 
402
+ #: loggers/SimpleMediaLogger.php:207
403
  msgid "{attachment_filetype_extension}"
404
  msgstr "{attachment_filetype_extension}"
405
 
406
+ #: loggers/SimpleMediaLogger.php:209
407
  msgid "{full_image_width} × {full_image_height}"
408
  msgstr "{full_image_width} × {full_image_height}"
409
 
511
  msgid "Section"
512
  msgstr "Sektion"
513
 
514
+ #: loggers/SimpleUserLogger.php:22
515
  msgid ""
516
  "Failed to login to account with username \"{login_user_login}\" because an "
517
  "incorrect password was entered"
519
  "Misslyckades att logga in på kontot med användarnamnet \"{login_user_login}\" "
520
  "eftersom ett felaktigt lösenord angavs"
521
 
522
+ #: loggers/SimpleUserLogger.php:23
523
  msgid ""
524
  "Failed to login with username \"{failed_login_username}\" because no user "
525
+ "with that username exists"
526
  msgstr ""
527
+ "Det gick inte att logga in med användarnamn \"{failed_login_username}\" "
528
+ "eftersom ingen användare med det användarnamnet existerar"
529
 
530
+ #: loggers/SimpleUserLogger.php:24
531
  msgid "Logged in"
532
  msgstr "Loggade in"
533
 
534
+ #: loggers/SimpleUserLogger.php:25
535
  msgid "Unknown user logged in"
536
  msgstr "Okänd användare loggade in"
537
 
538
+ #: loggers/SimpleUserLogger.php:26
539
  msgid "Logged out"
540
  msgstr "Loggade ut"
541
 
542
+ #: loggers/SimpleUserLogger.php:27
543
  msgid "Edited the profile for user {edited_user_login} ({edited_user_email})"
544
  msgstr ""
545
  "Redigerade profilen för användaren {edited_user_login} ({edited_user_email})"
546
 
547
+ #: loggers/SimpleUserLogger.php:28
548
  msgid ""
549
  "Created user {created_user_login} ({created_user_email}) with role "
550
  "{created_user_role}"
552
  "Skapade användare {created_user_login} ({created_user_email}) med rollen "
553
  "{created_user_role}"
554
 
555
+ #: loggers/SimpleUserLogger.php:29
556
  msgid "Deleted user {deleted_user_login} ({deleted_user_email})"
557
  msgstr "Raderade användaren {deleted_user_login} ({deleted_user_email})"
558
 
559
+ #: loggers/SimpleUserLogger.php:227
560
  msgid "Edited <a href=\"{edit_profile_link}\">your profile</a>"
561
  msgstr "Redigerade <a href=\"{edit_profile_link}\">din profl</a>"
562
 
563
+ #: loggers/SimpleUserLogger.php:231
564
  msgid "Edited <a href=\"{edit_profile_link}\">their profile</a>"
565
  msgstr "Redigerade <a href=\"{edit_profile_link}\">sin profil</a>"
566
 
567
+ #: loggers/SimpleUserLogger.php:240
568
  msgid "Edited your profile"
569
  msgstr "Redigerade din profil"
570
 
571
+ #: loggers/SimpleUserLogger.php:251
572
  msgid ""
573
  "Edited the profile for user <a href="
574
  "\"{edit_profile_link}\">{edited_user_login} ({edited_user_email})</a>"
624
  msgid "Deleted users are also included."
625
  msgstr "Raderade användare är också inkluderade."
626
 
 
 
 
 
627
  #. Plugin URI of the plugin/theme
628
  msgid "http://simple-history.com"
629
  msgstr "http://simple-history.com"
644
  msgid "http://simple-history.com/"
645
  msgstr "http://simple-history.com"
646
 
647
+ #: SimpleHistory.php:249
648
  msgctxt ""
649
  "Message visible while waiting for log to load from server the first time"
650
  msgid "Loading history..."
651
  msgstr "Laddar historik..."
652
 
653
+ #: SimpleHistory.php:286
654
  msgctxt "page n of n"
655
  msgid "of"
656
  msgstr "av"
657
 
658
+ #: SimpleHistory.php:357
659
  msgctxt "API: not enought arguments passed"
660
  msgid "Not enough args specified"
661
  msgstr "Inte tillräckligt med arguments specifierade"
662
 
663
+ #: SimpleHistory.php:1235
664
  msgctxt "dashboard menu name"
665
  msgid "Simple History"
666
  msgstr "Simple History"
667
 
668
+ #: SimpleHistory.php:1359
669
  msgctxt "history page headline"
670
  msgid "Simple History"
671
  msgstr "Simple History"
672
 
673
+ #: SimpleHistory.php:1619
674
+ msgctxt "simple-history"
675
+ msgid "Simple History removed one event that were older than {days} days"
676
+ msgid_plural ""
677
+ "Simple History removed {num_rows} events that were older than {days} days"
678
+ msgstr[0] "Simple History raderade en händelse som var äldre än {days} dagar."
679
+ msgstr[1] ""
680
+ "Simple History radera {num_rows} händelser som var äldre än {days} dagar"
681
+
682
+ #: SimpleHistory.php:1963
683
+ msgctxt "Log level in gui"
684
+ msgid "emergency"
685
+ msgstr "kritiskt"
686
+
687
+ #: SimpleHistory.php:1967
688
+ msgctxt "Log level in gui"
689
+ msgid "alert"
690
+ msgstr "alert"
691
+
692
+ #: SimpleHistory.php:1971
693
+ msgctxt "Log level in gui"
694
+ msgid "critical"
695
+ msgstr "kritiskt"
696
+
697
+ #: SimpleHistory.php:1975
698
+ msgctxt "Log level in gui"
699
+ msgid "error"
700
+ msgstr "error"
701
+
702
+ #: SimpleHistory.php:1979
703
+ msgctxt "Log level in gui"
704
+ msgid "warning"
705
+ msgstr "warning"
706
+
707
+ #: SimpleHistory.php:1983
708
+ msgctxt "Log level in gui"
709
+ msgid "notice"
710
+ msgstr "notice"
711
+
712
+ #: SimpleHistory.php:1987
713
+ msgctxt "Log level in gui"
714
+ msgid "info"
715
+ msgstr "info"
716
+
717
+ #: SimpleHistory.php:1991
718
+ msgctxt "Log level in gui"
719
+ msgid "debug"
720
+ msgstr "debug"
721
+
722
+ #: SimpleHistory.php:1996
723
+ msgctxt "Log level in gui"
724
+ msgid "Emergency"
725
+ msgstr "Emergency"
726
+
727
+ #: SimpleHistory.php:2000
728
+ msgctxt "Log level in gui"
729
+ msgid "Alert"
730
+ msgstr "Alert"
731
+
732
+ #: SimpleHistory.php:2004
733
+ msgctxt "Log level in gui"
734
+ msgid "Critical"
735
+ msgstr "Critical"
736
+
737
+ #: SimpleHistory.php:2008
738
+ msgctxt "Log level in gui"
739
+ msgid "Error"
740
+ msgstr "Error"
741
+
742
+ #: SimpleHistory.php:2012
743
+ msgctxt "Log level in gui"
744
+ msgid "Warning"
745
+ msgstr "Warning"
746
+
747
+ #: SimpleHistory.php:2016
748
+ msgctxt "Log level in gui"
749
+ msgid "Notice"
750
+ msgstr "Notice"
751
+
752
+ #: SimpleHistory.php:2020
753
+ msgctxt "Log level in gui"
754
+ msgid "Info"
755
+ msgstr "Info"
756
+
757
+ #: SimpleHistory.php:2024
758
+ msgctxt "Log level in gui"
759
+ msgid "Debug"
760
+ msgstr "Debug"
761
+
762
  #: dropins/SimpleHistoryDonateDropin.php:51
763
  msgctxt "donate settings headline"
764
  msgid "Donate"
765
  msgstr "Donera"
766
 
767
+ #: dropins/SimpleHistoryFilterDropin.php:50
768
+ msgctxt "Filter dropin: button to show more search options"
769
+ msgid "Show options"
770
+ msgstr "Visa alternativ"
771
+
772
+ #: dropins/SimpleHistoryFilterDropin.php:160
773
+ msgctxt "Filter dropin: button to hide more search options"
774
+ msgid "Hide options"
775
+ msgstr "Göm alternativ"
776
+
777
+ #: dropins/SimpleHistoryIpInfoDropin.php:66
778
+ msgctxt "IP Info Dropin"
779
+ msgid "That IP address does not seem like a public one."
780
+ msgstr "Det IP-numret verkar inte vara publikt."
781
+
782
+ #: dropins/SimpleHistoryIpInfoDropin.php:85
783
+ msgctxt "IP Info Dropin"
784
+ msgid "IP address"
785
+ msgstr "IP-adress"
786
+
787
+ #: dropins/SimpleHistoryIpInfoDropin.php:96
788
+ msgctxt "IP Info Dropin"
789
+ msgid "Hostname"
790
+ msgstr "Värdnamn"
791
+
792
+ #: dropins/SimpleHistoryIpInfoDropin.php:107
793
+ #: dropins/SimpleHistoryIpInfoDropin.php:118
794
+ msgctxt "IP Info Dropin"
795
+ msgid "Network"
796
+ msgstr "Nätverk"
797
+
798
+ #: dropins/SimpleHistoryIpInfoDropin.php:129
799
+ msgctxt "IP Info Dropin"
800
+ msgid "City"
801
+ msgstr "Stad"
802
+
803
+ #: dropins/SimpleHistoryIpInfoDropin.php:140
804
+ msgctxt "IP Info Dropin"
805
+ msgid "Region"
806
+ msgstr "Region"
807
+
808
+ #: dropins/SimpleHistoryIpInfoDropin.php:151
809
+ msgctxt "IP Info Dropin"
810
+ msgid "Country"
811
+ msgstr "Land"
812
+
813
+ #: dropins/SimpleHistoryIpInfoDropin.php:162
814
+ msgctxt "IP Info Dropin"
815
+ msgid "IP info provided by %1$s ipinfo.io %2$s"
816
+ msgstr "IP-informationen kommer från %1$s ipinfo.io %2$s"
817
+
818
  #: dropins/SimpleHistoryNewRowsNotifier.php:38
819
  msgctxt "New rows notifier: error while checking for new rows"
820
  msgid "An error occured while checking for new log rows"
825
  msgid "RSS feed"
826
  msgstr "RSS-flöde"
827
 
828
+ #: dropins/SimpleHistorySidebarDropin.php:31
829
+ msgctxt "Sidebar box"
830
+ msgid "Simple History is on GitHub"
831
+ msgstr "Simple History finns på GitHub"
832
+
833
+ #: dropins/SimpleHistorySidebarDropin.php:34
834
+ msgctxt "Sidebar box"
835
+ msgid ""
836
+ "You can star, fork, or report issues with this plugin over at the <a href="
837
+ "\"%1$s\">GitHub page</a>."
838
+ msgstr ""
839
+ "Du kan stjärnmärka, forka, eller rapportera problem med tillägget på dess "
840
+ "sida på <a href=\"%1$s\">GitHub</a>."
841
+
842
+ #: dropins/SimpleHistorySidebarDropin.php:48
843
+ msgctxt "Sidebar box"
844
+ msgid "Donate to support development"
845
+ msgstr "Donera för att stödja utvecklingen"
846
+
847
+ #: dropins/SimpleHistorySidebarDropin.php:51
848
+ msgctxt "Sidebar box"
849
+ msgid ""
850
+ "If you like and use Simple History you should <a href=\"%1$s\">donate to keep "
851
+ "this plugin free</a>."
852
+ msgstr ""
853
+ "Om du gillar och använder Simple History så <a href=\"%1$s\">donera så att "
854
+ "tillägget kan fortsätta vara gratis</a>."
855
+
856
+ #: dropins/SimpleHistorySidebarDropin.php:65
857
+ msgctxt "Sidebar box"
858
+ msgid "Review this plugin if you like it"
859
+ msgstr "Recensera tillägget om du gillar det"
860
+
861
+ #: dropins/SimpleHistorySidebarDropin.php:68
862
+ msgctxt "Sidebar box"
863
+ msgid ""
864
+ "If you like Simple History then please <a href=\"%1$s\">give it a nice review "
865
+ "over at wordpress.org</a>."
866
+ msgstr ""
867
+ "Om du gillar Simple History så <a href=\"%1$s\">ge gärna en positiv recension "
868
+ "på wordpress.org</a>."
869
+
870
+ #: dropins/SimpleHistorySidebarDropin.php:72
871
+ msgctxt "Sidebar box"
872
+ msgid ""
873
+ "A good review will help new users find this plugin. And it will make the "
874
+ "plugin author very happy :)"
875
+ msgstr ""
876
+ "En bra recension hjälper nya användare att hitta tillägget. Och det kommer "
877
+ "göra utvecklaren väldigt glad!"
878
+
879
+ #: loggers/SimpleCommentsLogger.php:95
880
  msgctxt "A comment was added to the database by a non-logged in internet user"
881
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
882
  msgstr ""
883
  "Lade till en kommentar till {comment_post_type} \"{comment_post_title}\""
884
 
885
+ #: loggers/SimpleCommentsLogger.php:101
886
  msgctxt "A comment was added to the database by a logged in user"
887
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
888
  msgstr ""
889
  "Lade till en kommentar till {comment_post_type} \"{comment_post_title}\""
890
 
891
+ #: loggers/SimpleCommentsLogger.php:107
892
  msgctxt "A comment was approved"
893
  msgid ""
894
  "Approved a comment to \"{comment_post_title}\" by {comment_author} "
897
  "Godkände en kommentar till \"{comment_post_title}\" av {comment_author} "
898
  "({comment_author_email})"
899
 
900
+ #: loggers/SimpleCommentsLogger.php:113
901
  msgctxt "A comment was was unapproved"
902
  msgid ""
903
  "Unapproved a comment to \"{comment_post_title}\" by {comment_author} "
906
  "Godkände inte en kommentar till \"{comment_post_title}\" av {comment_author} "
907
  "({comment_author_email})"
908
 
909
+ #: loggers/SimpleCommentsLogger.php:119
910
  msgctxt "A comment was marked as spam"
911
  msgid "Marked a comment to post \"{comment_post_title}\" as spam"
912
  msgstr "Markerade en kommentar till \"{comment_post_title}\" som spam"
913
 
914
+ #: loggers/SimpleCommentsLogger.php:125
915
  msgctxt "A comment was marked moved to the trash"
916
  msgid ""
917
  "Trashed a comment to \"{comment_post_title}\" by {comment_author} "
920
  "Kastade en kommentar till \"{comment_post_title}\" av {comment_author} "
921
  "({comment_author_email}) i papperskorgen"
922
 
923
+ #: loggers/SimpleCommentsLogger.php:131
924
  msgctxt "A comment was restored from the trash"
925
  msgid ""
926
  "Restored a comment to \"{comment_post_title}\" by {comment_author} "
929
  "Återställde en kommentar till \"{comment_post_title}\" av {comment_author} "
930
  "({comment_author_email}) från papperskorgen"
931
 
932
+ #: loggers/SimpleCommentsLogger.php:137
933
  msgctxt "A comment was deleted"
934
  msgid ""
935
  "Deleted a comment to \"{comment_post_title}\" by {comment_author} "
938
  "Raderade en kommentar kommentar till \"{comment_post_title}\" av "
939
  "{comment_author} ({comment_author_email})"
940
 
941
+ #: loggers/SimpleCommentsLogger.php:143
942
  msgctxt "A comment was edited"
943
  msgid ""
944
  "Edited a comment to \"{comment_post_title}\" by {comment_author} "
947
  "Redigerade en kommentar till \"{comment_post_title}\" av {comment_author} "
948
  "({comment_author_email})"
949
 
950
+ #: loggers/SimpleCommentsLogger.php:150
951
  msgctxt "A trackback was added to the database by a non-logged in internet user"
952
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
953
  msgstr ""
954
  "Lade till en trackback till {comment_post_type} \"{comment_post_title}\""
955
 
956
+ #: loggers/SimpleCommentsLogger.php:205
957
  msgctxt "A trackback was added to the database by a non-logged in internet user"
958
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
959
  msgstr "Lade till en pingback till {comment_post_type} \"{comment_post_title}\""
960
 
961
+ #: loggers/SimpleCommentsLogger.php:156
962
  msgctxt "A trackback was added to the database by a logged in user"
963
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
964
  msgstr ""
965
  "Lade till en trackback till {comment_post_type} \"{comment_post_title}\""
966
 
967
+ #: loggers/SimpleCommentsLogger.php:162
968
  msgctxt "A trackback was approved"
969
  msgid ""
970
  "Approved a trackback to \"{comment_post_title}\" by {comment_author} "
973
  "Godkände en trackback till \"{comment_post_title}\" av {comment_author} "
974
  "({comment_author_email})"
975
 
976
+ #: loggers/SimpleCommentsLogger.php:168
977
  msgctxt "A trackback was was unapproved"
978
  msgid ""
979
  "Unapproved a trackback to \"{comment_post_title}\" by {comment_author} "
982
  "Godkände inte en trackback till \"{comment_post_title}\" av {comment_author} "
983
  "({comment_author_email})"
984
 
985
+ #: loggers/SimpleCommentsLogger.php:174
986
  msgctxt "A trackback was marked as spam"
987
  msgid "Marked a trackback to post \"{comment_post_title}\" as spam"
988
  msgstr "Markerade en trackback till \"{comment_post_title}\" som spam"
989
 
990
+ #: loggers/SimpleCommentsLogger.php:180
991
  msgctxt "A trackback was marked moved to the trash"
992
  msgid ""
993
  "Trashed a trackback to \"{comment_post_title}\" by {comment_author} "
996
  "Kastade en trackback till \"{comment_post_title}\" av {comment_author} "
997
  "({comment_author_email}) i papperskorgen"
998
 
999
+ #: loggers/SimpleCommentsLogger.php:186
1000
  msgctxt "A trackback was restored from the trash"
1001
  msgid ""
1002
  "Restored a trackback to \"{comment_post_title}\" by {comment_author} "
1005
  "Återställde en trackback till \"{comment_post_title}\" av {comment_author} "
1006
  "({comment_author_email}) från papperskorgen"
1007
 
1008
+ #: loggers/SimpleCommentsLogger.php:192
1009
  msgctxt "A trackback was deleted"
1010
  msgid ""
1011
  "Deleted a trackback to \"{comment_post_title}\" by {comment_author} "
1014
  "Raderade en trackback till \"{comment_post_title}\" av {comment_author} "
1015
  "({comment_author_email})"
1016
 
1017
+ #: loggers/SimpleCommentsLogger.php:198
1018
  msgctxt "A trackback was edited"
1019
  msgid ""
1020
  "Edited a trackback to \"{comment_post_title}\" by {comment_author} "
1023
  "Redigerade en trackback till \"{comment_post_title}\" av {comment_author} "
1024
  "({comment_author_email})"
1025
 
1026
+ #: loggers/SimpleCommentsLogger.php:211
1027
  msgctxt "A pingback was added to the database by a logged in user"
1028
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
1029
  msgstr "Lade till en pingback till {comment_post_type} \"{comment_post_title}\""
1030
 
1031
+ #: loggers/SimpleCommentsLogger.php:217
1032
  msgctxt "A pingback was approved"
1033
  msgid ""
1034
  "Approved a pingback to \"{comment_post_title}\" by "
1037
  "Godkände en pingback till \"{comment_post_title}\" av {comment_author} "
1038
  "({comment_author_email}) från papperskorgen"
1039
 
1040
+ #: loggers/SimpleCommentsLogger.php:223
1041
  msgctxt "A pingback was was unapproved"
1042
  msgid ""
1043
  "Unapproved a pingback to \"{comment_post_title}\" by "
1046
  "Ångrade godkännande av en pingack till \"{comment_post_title}\" av "
1047
  "{comment_author} ({comment_author_email})"
1048
 
1049
+ #: loggers/SimpleCommentsLogger.php:229
1050
  msgctxt "A pingback was marked as spam"
1051
  msgid "Marked a pingback to post \"{comment_post_title}\" as spam"
1052
  msgstr "Markerade en pingback till \"{comment_post_title}\" som spam"
1053
 
1054
+ #: loggers/SimpleCommentsLogger.php:235
1055
  msgctxt "A pingback was marked moved to the trash"
1056
  msgid ""
1057
  "Trashed a pingback to \"{comment_post_title}\" by {comment_author} "
1060
  "Kastade en pingback till \"{comment_post_title}\" av {comment_author} "
1061
  "({comment_author_email}) i papperskorgen"
1062
 
1063
+ #: loggers/SimpleCommentsLogger.php:241
1064
  msgctxt "A pingback was restored from the trash"
1065
  msgid ""
1066
  "Restored a pingback to \"{comment_post_title}\" by {comment_author} "
1069
  "Ångrade godkännandet av en kommentar till \"{comment_post_title}\" av "
1070
  "{comment_author} ({comment_author_email})"
1071
 
1072
+ #: loggers/SimpleCommentsLogger.php:247
1073
  msgctxt "A pingback was deleted"
1074
  msgid ""
1075
  "Deleted a pingback to \"{comment_post_title}\" by {comment_author} "
1078
  "Raderade en pingback till \"{comment_post_title}\" av {comment_author} "
1079
  "({comment_author_email})"
1080
 
1081
+ #: loggers/SimpleCommentsLogger.php:253
1082
  msgctxt "A pingback was edited"
1083
  msgid ""
1084
  "Edited a pingback to \"{comment_post_title}\" by {comment_author} "
1087
  "Redigerade en pingback till \"{comment_post_title}\" av {comment_author} "
1088
  "({comment_author_email})"
1089
 
1090
+ #: loggers/SimpleCommentsLogger.php:264
1091
  msgctxt "Comments logger: search"
1092
  msgid "Comments"
1093
  msgstr "Kommentarer"
1094
 
1095
+ #: loggers/SimpleCommentsLogger.php:265
1096
  msgctxt "Comments logger: search"
1097
  msgid "All comments activity"
1098
  msgstr "Alla kommentarshändelser"
1099
 
1100
+ #: loggers/SimpleCommentsLogger.php:267
1101
  msgctxt "Comments logger: search"
1102
  msgid "Added comments"
1103
  msgstr "Tillagda kommentarer"
1104
 
1105
+ #: loggers/SimpleCommentsLogger.php:275
1106
  msgctxt "Comments logger: search"
1107
  msgid "Edited comments"
1108
  msgstr "Redigerade kommentarer"
1109
 
1110
+ #: loggers/SimpleCommentsLogger.php:280
1111
  msgctxt "Comments logger: search"
1112
  msgid "Approved comments"
1113
  msgstr "Godkända kommentarer"
1114
 
1115
+ #: loggers/SimpleCommentsLogger.php:285
1116
  msgctxt "Comments logger: search"
1117
  msgid "Held comments"
1118
  msgstr "Tillbakahållna kommentar"
1119
 
1120
+ #: loggers/SimpleCommentsLogger.php:290
1121
  msgctxt "Comments logger: search"
1122
  msgid "Comments status changed to spam"
1123
  msgstr "Status på kommentar ändrad till spam"
1124
 
1125
+ #: loggers/SimpleCommentsLogger.php:295
1126
  msgctxt "Comments logger: search"
1127
  msgid "Trashed comments"
1128
  msgstr "Kastade kommentarer"
1129
 
1130
+ #: loggers/SimpleCommentsLogger.php:300
1131
  msgctxt "Comments logger: search"
1132
  msgid "Untrashed comments"
1133
  msgstr "Kommentarer tillbakatagna från papperskorgen"
1134
 
1135
+ #: loggers/SimpleCommentsLogger.php:305
1136
  msgctxt "Comments logger: search"
1137
  msgid "Deleted comments"
1138
  msgstr "Borttagna kommentarer"
1139
 
1140
+ #: loggers/SimpleCommentsLogger.php:602 loggers/SimpleCommentsLogger.php:615
1141
+ #: loggers/SimpleCommentsLogger.php:629
1142
  msgctxt "comments logger - detailed output comment status"
1143
  msgid "Status"
1144
  msgstr "Status"
1145
 
1146
+ #: loggers/SimpleCommentsLogger.php:604 loggers/SimpleCommentsLogger.php:617
1147
+ #: loggers/SimpleCommentsLogger.php:631
1148
  msgctxt "comments logger - detailed output author"
1149
  msgid "Name"
1150
  msgstr "Namn"
1151
 
1152
+ #: loggers/SimpleCommentsLogger.php:605 loggers/SimpleCommentsLogger.php:618
1153
+ #: loggers/SimpleCommentsLogger.php:632
1154
  msgctxt "comments logger - detailed output email"
1155
  msgid "Email"
1156
  msgstr "E-post"
1157
 
1158
+ #: loggers/SimpleCommentsLogger.php:606 loggers/SimpleCommentsLogger.php:619
1159
  msgctxt "comments logger - detailed output content"
1160
  msgid "Content"
1161
  msgstr "Innehåll"
1162
 
1163
+ #: loggers/SimpleCommentsLogger.php:633
1164
  msgctxt "comments logger - detailed output content"
1165
  msgid "Comment"
1166
  msgstr "Kommentar"
1167
 
1168
+ #: loggers/SimpleCommentsLogger.php:759
1169
  msgctxt "comments logger - edit comment"
1170
  msgid "View/Edit"
1171
  msgstr "Visa/Redigera"
1180
  msgid "WordPress core updates"
1181
  msgstr "WordPress core uppdateringar"
1182
 
1183
+ #: loggers/SimpleUserLogger.php:54
1184
  msgctxt "User logger: search"
1185
  msgid "Users"
1186
  msgstr "Användare"
1187
 
1188
+ #: loggers/SimpleUserLogger.php:55
1189
  msgctxt "User logger: search"
1190
  msgid "All user activity"
1191
  msgstr "All användaraktivitet"
1192
 
1193
+ #: loggers/SimpleUserLogger.php:57
1194
  msgctxt "User logger: search"
1195
  msgid "Successful user logins"
1196
  msgstr "Lyckade inloggningar av användare"
1197
 
1198
+ #: loggers/SimpleUserLogger.php:61
1199
  msgctxt "User logger: search"
1200
  msgid "Failed user logins"
1201
  msgstr "Misslyckade inloggningar av användare"
1202
 
1203
+ #: loggers/SimpleUserLogger.php:65
1204
  msgctxt "User logger: search"
1205
  msgid "User logouts"
1206
  msgstr "Utloggning av användare"
1207
 
1208
+ #: loggers/SimpleUserLogger.php:68
1209
  msgctxt "User logger: search"
1210
  msgid "Created users"
1211
  msgstr "Skapade användare"
1212
 
1213
+ #: loggers/SimpleUserLogger.php:71
1214
  msgctxt "User logger: search"
1215
  msgid "User profile updates"
1216
  msgstr "Uppdateringar av användarprofiler"
1217
 
1218
+ #: loggers/SimpleUserLogger.php:74
1219
  msgctxt "User logger: search"
1220
  msgid "User deletions"
1221
  msgstr "Radering av användare"
1230
  msgid "Created exports"
1231
  msgstr "Skapade exporter"
1232
 
1233
+ #: loggers/SimpleLogger.php:190
1234
  msgctxt "header output when initiator is the currently logged in user"
1235
  msgid "You"
1236
  msgstr "Du"
1331
  #: loggers/SimplePluginLogger.php:81
1332
  msgctxt "Plugin update failed"
1333
  msgid "Updated plugin \"{plugin_name}\""
1334
+ msgstr "Uppdaterade tillägget \"{plugin_name}\""
1335
 
1336
  #: loggers/SimplePluginLogger.php:87
1337
  msgctxt "Plugin file edited"
1349
  "Updated plugin \"{plugin_name}\" to {plugin_version} from "
1350
  "{plugin_prev_version}"
1351
  msgstr ""
1352
+ "Uppdaterade tillägget \"{plugin_name}\" till {plugin_version} från "
1353
  "{plugin_prev_version}"
1354
 
1355
  #: loggers/SimplePluginLogger.php:108
1397
  msgid "Deleted plugins"
1398
  msgstr "Raderade plugins"
1399
 
1400
+ #: loggers/SimplePluginLogger.php:887
1401
  msgctxt "plugin logger - detailed output version"
1402
  msgid "Version"
1403
  msgstr "Version"
1404
 
1405
+ #: loggers/SimplePluginLogger.php:889
1406
  msgctxt "plugin logger - detailed output author"
1407
  msgid "Author"
1408
  msgstr "Författare"
1409
 
1410
+ #: loggers/SimplePluginLogger.php:891
1411
  msgctxt "plugin logger - detailed output author"
1412
  msgid "Requires"
1413
  msgstr "Kräver"
1414
 
1415
+ #: loggers/SimplePluginLogger.php:890
1416
  msgctxt "plugin logger - detailed output url"
1417
  msgid "URL"
1418
  msgstr "URL"
1419
 
1420
+ #: loggers/SimplePluginLogger.php:892
1421
  msgctxt "plugin logger - detailed output compatible"
1422
  msgid "Compatible up to"
1423
  msgstr "Kompatibel upp till"
1424
 
1425
+ #: loggers/SimplePluginLogger.php:893
1426
  msgctxt "plugin logger - detailed output downloaded"
1427
  msgid "Downloads"
1428
  msgstr "Nedladdningar"
1429
 
1430
+ #: loggers/SimplePluginLogger.php:953
1431
  msgctxt "plugin logger: plugin info thickbox title view all info"
1432
  msgid "View plugin info"
1433
  msgstr "Visa information om plugin"
1434
 
1435
+ #: loggers/SimplePluginLogger.php:968
1436
  msgctxt "plugin logger: plugin info thickbox title"
1437
  msgid "View plugin info"
1438
  msgstr "Visa information om plugin"
1439
 
1440
+ #: loggers/SimplePluginLogger.php:972
1441
  msgctxt "plugin logger: plugin info thickbox title"
1442
  msgid "View changelog"
1443
  msgstr "Visa ändringslogg"
1512
  msgid "Background of themes changed"
1513
  msgstr "Ändrade bakgrunder för teman"
1514
 
1515
+ #: loggers/SimpleUserLogger.php:36
1516
+ msgctxt "User destroys other login sessions for themself"
1517
+ msgid "Logged out from all other sessions"
1518
+ msgstr "Loggade ut från alla andra sessioner"
1519
+
1520
+ #: loggers/SimpleUserLogger.php:45
1521
+ msgctxt "User destroys all login sessions for a user"
1522
+ msgid "Logged out \"{user_display_name}\" from all sessions"
1523
+ msgstr "Loggade ut \"{user_display_name}\" från alla sessioner"
1524
+
1525
  #: templates/settings-statsRowsPerDay.php:36
1526
  msgctxt "stats: date in rows per day chart"
1527
  msgid "M j"
1528
  msgstr "M j"
1529
 
1530
+ #~ msgid "Filter"
1531
+ #~ msgstr "Filtrera"
1532
+
1533
+ #~ msgid "%1$d events today from one user and %3$d other source."
1534
+ #~ msgstr "%1$d händelser idag från en användare och från en annan källa."
1535
+
1536
+ #~ msgid "History"
1537
+ #~ msgstr "Historik"
1538
+
1539
  #~ msgctxt "dashboard menu name"
1540
  #~ msgid "History"
1541
  #~ msgstr "Historik"
languages/simple-history.pot CHANGED
@@ -1,14 +1,14 @@
1
- # Copyright (C) 2014 Simple History
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.3\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/Simple-History\n"
7
- "POT-Creation-Date: 2014-12-17 06:57:05+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2014-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
  "X-Generator: grunt-wp-i18n 0.4.9\n"
@@ -24,264 +24,309 @@ msgstr ""
24
  "X-Poedit-Bookmarks: \n"
25
  "X-Textdomain-Support: yes\n"
26
 
27
- #: SimpleHistory.php:423 SimpleHistory.php:667
28
- msgid "Settings"
29
  msgstr ""
30
 
31
- #: SimpleHistory.php:434
32
- msgid "Log (debug)"
 
 
33
  msgstr ""
34
 
35
- #: SimpleHistory.php:439
36
- msgid "Styles example (debug)"
37
  msgstr ""
38
 
39
- #: SimpleHistory.php:682
40
- msgid "History"
 
41
  msgstr ""
42
 
43
- #: SimpleHistory.php:758
44
- msgid "Remove all log items?"
45
  msgstr ""
46
 
47
- #: SimpleHistory.php:760
48
- msgid "Go to the first page"
49
  msgstr ""
50
 
51
- #: SimpleHistory.php:761
52
- msgid "Go to the previous page"
53
  msgstr ""
54
 
55
- #: SimpleHistory.php:762
56
- msgid "Go to the next page"
57
  msgstr ""
58
 
59
- #: SimpleHistory.php:763
60
- msgid "Go to the last page"
61
  msgstr ""
62
 
63
- #: SimpleHistory.php:764
64
- msgid "Current page"
 
 
 
 
 
 
65
  msgstr ""
66
 
67
- #: SimpleHistory.php:766
68
- msgid "Oups, the log could not be loaded right now."
69
  msgstr ""
70
 
71
- #: SimpleHistory.php:767
72
- msgid "Your search did not match any history events."
73
  msgstr ""
74
 
75
- #: SimpleHistory.php:1061 SimpleHistory.php:1164
76
- msgid "Simple History Settings"
 
77
  msgstr ""
78
 
79
- #: SimpleHistory.php:1095
80
- msgid "No valid callback found"
 
81
  msgstr ""
82
 
83
- #: SimpleHistory.php:1185
84
- msgid "Cleared database"
85
  msgstr ""
86
 
87
- #: SimpleHistory.php:1212
88
- msgid "Show history"
 
 
 
 
 
 
89
  msgstr ""
90
 
91
- #: SimpleHistory.php:1225
92
- msgid "Number of items per page"
 
 
93
  msgstr ""
94
 
95
- #: SimpleHistory.php:1237
96
- msgid "Clear log"
 
 
97
  msgstr ""
98
 
99
- #: SimpleHistory.php:1457
100
- msgid "on the dashboard"
101
  msgstr ""
102
 
103
- #: SimpleHistory.php:1462
104
- msgid "as a page under the dashboard menu"
 
 
 
105
  msgstr ""
106
 
107
- #: SimpleHistory.php:1478
108
- msgid "Items in the database are automatically removed after %1$s days."
109
  msgstr ""
110
 
111
- #: SimpleHistory.php:1480
112
- msgid "Items in the database are kept forever."
113
  msgstr ""
114
 
115
- #: SimpleHistory.php:1484
116
- msgid "Clear log now"
117
  msgstr ""
118
 
119
- #: SimpleHistory.php:1709
120
- msgid "+%1$s more"
121
  msgstr ""
122
 
123
- #: SimpleHistory.php:1716
124
- msgid "Loading…"
125
  msgstr ""
126
 
127
- #: SimpleHistory.php:1723
128
- msgid "Showing %1$s more"
129
  msgstr ""
130
 
131
- #: SimpleHistory.php:1742
132
- msgid "Context data"
133
  msgstr ""
134
 
135
- #: SimpleHistory.php:1743
136
- msgid "This is potentially useful meta data that a logger have saved."
137
  msgstr ""
138
 
139
- #: SimpleHistory.php:2065
140
- msgid "No events today so far."
 
 
141
  msgstr ""
142
 
143
- #: SimpleHistory.php:2069
144
- msgid "%1$d event today from one user."
145
  msgstr ""
146
 
147
- #: SimpleHistory.php:2073
148
- msgid "%1$d events today from %2$d users."
149
  msgstr ""
150
 
151
- #: SimpleHistory.php:2077
152
- msgid "%1$d events today from one user."
153
  msgstr ""
154
 
155
- #: dropins/SimpleHistoryDonateDropin.php:36
156
- msgid "Donate"
157
  msgstr ""
158
 
159
- #: dropins/SimpleHistoryDonateDropin.php:72
160
- msgid ""
161
- "If you find Simple History useful please <a href=\"%1$s\">donate</a> or <a "
162
- "href=\"%2$s\">buy me something from my Amazon wish list</a>."
163
  msgstr ""
164
 
165
- #: dropins/SimpleHistoryFilterDropin.php:43
166
- msgid "Filter history"
167
  msgstr ""
168
 
169
- #: dropins/SimpleHistoryFilterDropin.php:50
170
- msgid "All log levels"
171
  msgstr ""
172
 
173
- #: dropins/SimpleHistoryFilterDropin.php:64
174
- msgid "All messages"
175
  msgstr ""
176
 
177
- #: dropins/SimpleHistoryFilterDropin.php:118
178
- msgid "All users"
179
  msgstr ""
180
 
181
- #: dropins/SimpleHistoryFilterDropin.php:139
182
- msgid "All dates"
183
  msgstr ""
184
 
185
- #: dropins/SimpleHistoryFilterDropin.php:153
186
- msgid "Filter"
187
  msgstr ""
188
 
189
- #: dropins/SimpleHistoryNewRowsNotifier.php:80
190
- msgid "1 new row"
191
- msgid_plural "%d new rows"
192
- msgstr[0] ""
193
- msgstr[1] ""
194
 
195
- #: dropins/SimpleHistoryRSSDropin.php:55
196
- msgid "Address"
197
  msgstr ""
198
 
199
- #: dropins/SimpleHistoryRSSDropin.php:64
200
- msgid "Regenerate"
201
  msgstr ""
202
 
203
- #: dropins/SimpleHistoryRSSDropin.php:81
204
- msgid "Created new secret RSS address"
205
  msgstr ""
206
 
207
- #: dropins/SimpleHistoryRSSDropin.php:148
208
- #: dropins/SimpleHistoryRSSDropin.php:256
209
- msgid "History for %s"
210
  msgstr ""
211
 
212
- #: dropins/SimpleHistoryRSSDropin.php:149
213
- #: dropins/SimpleHistoryRSSDropin.php:257
214
- msgid "WordPress History for %s"
215
  msgstr ""
216
 
217
- #: dropins/SimpleHistoryRSSDropin.php:196
218
- msgid "+%1$s occasion"
219
- msgid_plural "+%1$s occasions"
 
 
 
 
 
 
 
 
 
 
 
 
220
  msgstr[0] ""
221
  msgstr[1] ""
222
 
223
- #: dropins/SimpleHistoryRSSDropin.php:260
224
- msgid "Wrong RSS secret"
225
  msgstr ""
226
 
227
- #: dropins/SimpleHistoryRSSDropin.php:261
228
- msgid ""
229
- "Your RSS secret for Simple History RSS feed is wrong. Please see WordPress "
230
- "settings for current link to the RSS feed."
231
  msgstr ""
232
 
233
- #: dropins/SimpleHistoryRSSDropin.php:312
234
- msgid ""
235
- "You can generate a new address for the RSS feed. This is useful if you "
236
- "think that the address has fallen into the wrong hands."
237
  msgstr ""
238
 
239
- #: dropins/SimpleHistoryRSSDropin.php:315
240
- msgid "Generate new address"
241
  msgstr ""
242
 
243
- #: dropins/SimpleHistoryRSSDropin.php:343
244
- msgid ""
245
- "Simple History has a RSS feed which you can subscribe to and receive log "
246
- "updates. Make sure you only share the feed with people you trust, since it "
247
- "can contain sensitive or confidential information."
248
  msgstr ""
249
 
250
- #: dropins/SimpleHistorySettingsLogtestDropin.php:20
251
- msgid "Test data (debug)"
252
  msgstr ""
253
 
254
- #: dropins/SimpleHistorySettingsStatsDropin.php:27
255
- msgid "Stats"
256
  msgstr ""
257
 
258
- #: index.php:56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
259
  msgid ""
260
  "Simple History is a great plugin, but to use it your server must have at "
261
  "least PHP 5.3 installed (you have version %s)."
262
  msgstr ""
263
 
264
- #: loggers/SimpleCommentsLogger.php:682
265
  msgid "Spam"
266
  msgstr ""
267
 
268
- #: loggers/SimpleCommentsLogger.php:684
269
  msgid "Approved"
270
  msgstr ""
271
 
272
- #: loggers/SimpleCommentsLogger.php:686
273
  msgid "Pending"
274
  msgstr ""
275
 
276
- #: loggers/SimpleCommentsLogger.php:700
277
  msgid "Trackback"
278
  msgstr ""
279
 
280
- #: loggers/SimpleCommentsLogger.php:702
281
  msgid "Pingback"
282
  msgstr ""
283
 
284
- #: loggers/SimpleCommentsLogger.php:704
285
  msgid "Comment"
286
  msgstr ""
287
 
@@ -290,7 +335,7 @@ msgid "Updated WordPress from {prev_version} to {new_version}"
290
  msgstr ""
291
 
292
  #: loggers/SimpleCoreUpdatesLogger.php:30
293
- msgid "WordPress auto-updated from {prev_version} to {new_version}"
294
  msgstr ""
295
 
296
  #: loggers/SimpleExportLogger.php:23
@@ -305,28 +350,24 @@ msgstr ""
305
  msgid "%d occasions"
306
  msgstr ""
307
 
308
- #: loggers/SimpleLogger.php:205
309
  msgid "Deleted user (had id %1$s, email %2$s, login %3$s)"
310
  msgstr ""
311
 
312
- #: loggers/SimpleLogger.php:220
313
  msgid "Anonymous web user"
314
  msgstr ""
315
 
316
- #: loggers/SimpleLogger.php:228
317
  msgid "Anonymous user from %1$s"
318
  msgstr ""
319
 
320
- #: loggers/SimpleLogger.php:299
321
- msgid "Just now"
322
- msgstr ""
323
-
324
- #: loggers/SimpleLogger.php:304
325
  #. translators: Date format for log row header, see http:php.net/date
326
  msgid "M j, Y \\a\\t G:i"
327
  msgstr ""
328
 
329
- #: loggers/SimpleLogger.php:312
330
  #. translators: 1: last modified date and time in human time diff-format
331
  msgid "%1$s ago"
332
  msgstr ""
@@ -343,27 +384,27 @@ msgstr ""
343
  msgid "Deleted {post_type} \"{attachment_title}\" (\"{attachment_filename}\")"
344
  msgstr ""
345
 
346
- #: loggers/SimpleMediaLogger.php:81
347
  msgid "Edited {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
348
  msgstr ""
349
 
350
- #: loggers/SimpleMediaLogger.php:85
351
  msgid "Uploaded {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
352
  msgstr ""
353
 
354
- #: loggers/SimpleMediaLogger.php:180
355
  msgid "{attachment_thumb}"
356
  msgstr ""
357
 
358
- #: loggers/SimpleMediaLogger.php:189
359
  msgid "{attachment_size_format}"
360
  msgstr ""
361
 
362
- #: loggers/SimpleMediaLogger.php:190
363
  msgid "{attachment_filetype_extension}"
364
  msgstr ""
365
 
366
- #: loggers/SimpleMediaLogger.php:192
367
  msgid "{full_image_width} × {full_image_height}"
368
  msgstr ""
369
 
@@ -403,35 +444,39 @@ msgstr ""
403
  msgid "Settings page"
404
  msgstr ""
405
 
406
- #: loggers/SimplePostLogger.php:30
 
 
 
 
407
  msgid "Created {post_type} \"{post_title}\""
408
  msgstr ""
409
 
410
- #: loggers/SimplePostLogger.php:31
411
  msgid "Updated {post_type} \"{post_title}\""
412
  msgstr ""
413
 
414
- #: loggers/SimplePostLogger.php:32
415
  msgid "Restored {post_type} \"{post_title}\" from trash"
416
  msgstr ""
417
 
418
- #: loggers/SimplePostLogger.php:33 loggers/SimplePostLogger.php:236
419
  msgid "Deleted {post_type} \"{post_title}\""
420
  msgstr ""
421
 
422
- #: loggers/SimplePostLogger.php:34
423
  msgid "Moved {post_type} \"{post_title}\" to the trash"
424
  msgstr ""
425
 
426
- #: loggers/SimplePostLogger.php:232
427
  msgid "Updated {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
428
  msgstr ""
429
 
430
- #: loggers/SimplePostLogger.php:240
431
  msgid "Created {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
432
  msgstr ""
433
 
434
- #: loggers/SimplePostLogger.php:245
435
  msgid "Moved {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> to the trash"
436
  msgstr ""
437
 
@@ -467,57 +512,57 @@ msgstr ""
467
  msgid "Section"
468
  msgstr ""
469
 
470
- #: loggers/SimpleUserLogger.php:23
471
  msgid ""
472
  "Failed to login to account with username \"{login_user_login}\" because an "
473
  "incorrect password was entered"
474
  msgstr ""
475
 
476
- #: loggers/SimpleUserLogger.php:24
477
  msgid ""
478
  "Failed to login with username \"{failed_login_username}\" because no user "
479
- "with that username exist"
480
  msgstr ""
481
 
482
- #: loggers/SimpleUserLogger.php:25
483
  msgid "Logged in"
484
  msgstr ""
485
 
486
- #: loggers/SimpleUserLogger.php:26
487
  msgid "Unknown user logged in"
488
  msgstr ""
489
 
490
- #: loggers/SimpleUserLogger.php:27
491
  msgid "Logged out"
492
  msgstr ""
493
 
494
- #: loggers/SimpleUserLogger.php:28
495
  msgid "Edited the profile for user {edited_user_login} ({edited_user_email})"
496
  msgstr ""
497
 
498
- #: loggers/SimpleUserLogger.php:29
499
  msgid ""
500
  "Created user {created_user_login} ({created_user_email}) with role "
501
  "{created_user_role}"
502
  msgstr ""
503
 
504
- #: loggers/SimpleUserLogger.php:30
505
  msgid "Deleted user {deleted_user_login} ({deleted_user_email})"
506
  msgstr ""
507
 
508
- #: loggers/SimpleUserLogger.php:153
509
  msgid "Edited <a href=\"{edit_profile_link}\">your profile</a>"
510
  msgstr ""
511
 
512
- #: loggers/SimpleUserLogger.php:157
513
  msgid "Edited <a href=\"{edit_profile_link}\">their profile</a>"
514
  msgstr ""
515
 
516
- #: loggers/SimpleUserLogger.php:166
517
  msgid "Edited your profile"
518
  msgstr ""
519
 
520
- #: loggers/SimpleUserLogger.php:177
521
  msgid ""
522
  "Edited the profile for user <a "
523
  "href=\"{edit_profile_link}\">{edited_user_login} ({edited_user_email})</a>"
@@ -570,10 +615,6 @@ msgstr ""
570
  msgid "Deleted users are also included."
571
  msgstr ""
572
 
573
- #. Plugin Name of the plugin/theme
574
- msgid "Simple History"
575
- msgstr ""
576
-
577
  #. Plugin URI of the plugin/theme
578
  msgid "http://simple-history.com"
579
  msgstr ""
@@ -592,296 +633,477 @@ msgstr ""
592
  msgid "http://simple-history.com/"
593
  msgstr ""
594
 
595
- #: SimpleHistory.php:166
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
596
  msgctxt "Message visible while waiting for log to load from server the first time"
597
  msgid "Loading history..."
598
  msgstr ""
599
 
600
- #: SimpleHistory.php:203
601
  msgctxt "page n of n"
602
  msgid "of"
603
  msgstr ""
604
 
605
- #: SimpleHistory.php:274
606
  msgctxt "API: not enought arguments passed"
607
  msgid "Not enough args specified"
608
  msgstr ""
609
 
610
- #: SimpleHistory.php:1149
611
  msgctxt "dashboard menu name"
612
  msgid "Simple History"
613
  msgstr ""
614
 
615
- #: SimpleHistory.php:1274
616
  msgctxt "history page headline"
617
  msgid "Simple History"
618
  msgstr ""
619
 
620
- #: dropins/SimpleHistoryDonateDropin.php:51
621
- msgctxt "donate settings headline"
622
- msgid "Donate"
 
 
 
 
 
 
 
623
  msgstr ""
624
 
625
- #: dropins/SimpleHistoryNewRowsNotifier.php:38
626
- msgctxt "New rows notifier: error while checking for new rows"
627
- msgid "An error occured while checking for new log rows"
628
  msgstr ""
629
 
630
- #: dropins/SimpleHistoryRSSDropin.php:47
631
- msgctxt "rss settings headline"
632
- msgid "RSS feed"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
633
  msgstr ""
634
 
635
- #: loggers/SimpleCommentsLogger.php:94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
636
  msgctxt "A comment was added to the database by a non-logged in internet user"
637
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
638
  msgstr ""
639
 
640
- #: loggers/SimpleCommentsLogger.php:100
641
  msgctxt "A comment was added to the database by a logged in user"
642
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
643
  msgstr ""
644
 
645
- #: loggers/SimpleCommentsLogger.php:106
646
  msgctxt "A comment was approved"
647
  msgid ""
648
  "Approved a comment to \"{comment_post_title}\" by {comment_author} "
649
  "({comment_author_email})"
650
  msgstr ""
651
 
652
- #: loggers/SimpleCommentsLogger.php:112
653
  msgctxt "A comment was was unapproved"
654
  msgid ""
655
  "Unapproved a comment to \"{comment_post_title}\" by {comment_author} "
656
  "({comment_author_email})"
657
  msgstr ""
658
 
659
- #: loggers/SimpleCommentsLogger.php:118
660
  msgctxt "A comment was marked as spam"
661
  msgid "Marked a comment to post \"{comment_post_title}\" as spam"
662
  msgstr ""
663
 
664
- #: loggers/SimpleCommentsLogger.php:124
665
  msgctxt "A comment was marked moved to the trash"
666
  msgid ""
667
  "Trashed a comment to \"{comment_post_title}\" by {comment_author} "
668
  "({comment_author_email})"
669
  msgstr ""
670
 
671
- #: loggers/SimpleCommentsLogger.php:130
672
  msgctxt "A comment was restored from the trash"
673
  msgid ""
674
  "Restored a comment to \"{comment_post_title}\" by {comment_author} "
675
  "({comment_author_email}) from the trash"
676
  msgstr ""
677
 
678
- #: loggers/SimpleCommentsLogger.php:136
679
  msgctxt "A comment was deleted"
680
  msgid ""
681
  "Deleted a comment to \"{comment_post_title}\" by {comment_author} "
682
  "({comment_author_email})"
683
  msgstr ""
684
 
685
- #: loggers/SimpleCommentsLogger.php:142
686
  msgctxt "A comment was edited"
687
  msgid ""
688
  "Edited a comment to \"{comment_post_title}\" by {comment_author} "
689
  "({comment_author_email})"
690
  msgstr ""
691
 
692
- #: loggers/SimpleCommentsLogger.php:149
693
  msgctxt "A trackback was added to the database by a non-logged in internet user"
694
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
695
  msgstr ""
696
 
697
- #: loggers/SimpleCommentsLogger.php:204
698
  msgctxt "A trackback was added to the database by a non-logged in internet user"
699
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
700
  msgstr ""
701
 
702
- #: loggers/SimpleCommentsLogger.php:155
703
  msgctxt "A trackback was added to the database by a logged in user"
704
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
705
  msgstr ""
706
 
707
- #: loggers/SimpleCommentsLogger.php:161
708
  msgctxt "A trackback was approved"
709
  msgid ""
710
  "Approved a trackback to \"{comment_post_title}\" by {comment_author} "
711
  "({comment_author_email})"
712
  msgstr ""
713
 
714
- #: loggers/SimpleCommentsLogger.php:167
715
  msgctxt "A trackback was was unapproved"
716
  msgid ""
717
  "Unapproved a trackback to \"{comment_post_title}\" by {comment_author} "
718
  "({comment_author_email})"
719
  msgstr ""
720
 
721
- #: loggers/SimpleCommentsLogger.php:173
722
  msgctxt "A trackback was marked as spam"
723
  msgid "Marked a trackback to post \"{comment_post_title}\" as spam"
724
  msgstr ""
725
 
726
- #: loggers/SimpleCommentsLogger.php:179
727
  msgctxt "A trackback was marked moved to the trash"
728
  msgid ""
729
  "Trashed a trackback to \"{comment_post_title}\" by {comment_author} "
730
  "({comment_author_email})"
731
  msgstr ""
732
 
733
- #: loggers/SimpleCommentsLogger.php:185
734
  msgctxt "A trackback was restored from the trash"
735
  msgid ""
736
  "Restored a trackback to \"{comment_post_title}\" by {comment_author} "
737
  "({comment_author_email}) from the trash"
738
  msgstr ""
739
 
740
- #: loggers/SimpleCommentsLogger.php:191
741
  msgctxt "A trackback was deleted"
742
  msgid ""
743
  "Deleted a trackback to \"{comment_post_title}\" by {comment_author} "
744
  "({comment_author_email})"
745
  msgstr ""
746
 
747
- #: loggers/SimpleCommentsLogger.php:197
748
  msgctxt "A trackback was edited"
749
  msgid ""
750
  "Edited a trackback to \"{comment_post_title}\" by {comment_author} "
751
  "({comment_author_email})"
752
  msgstr ""
753
 
754
- #: loggers/SimpleCommentsLogger.php:210
755
  msgctxt "A pingback was added to the database by a logged in user"
756
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
757
  msgstr ""
758
 
759
- #: loggers/SimpleCommentsLogger.php:216
760
  msgctxt "A pingback was approved"
761
  msgid ""
762
  "Approved a pingback to \"{comment_post_title}\" by \"{comment_author}\"\" "
763
  "({comment_author_email})"
764
  msgstr ""
765
 
766
- #: loggers/SimpleCommentsLogger.php:222
767
  msgctxt "A pingback was was unapproved"
768
  msgid ""
769
  "Unapproved a pingback to \"{comment_post_title}\" by \"{comment_author}\" "
770
  "({comment_author_email})"
771
  msgstr ""
772
 
773
- #: loggers/SimpleCommentsLogger.php:228
774
  msgctxt "A pingback was marked as spam"
775
  msgid "Marked a pingback to post \"{comment_post_title}\" as spam"
776
  msgstr ""
777
 
778
- #: loggers/SimpleCommentsLogger.php:234
779
  msgctxt "A pingback was marked moved to the trash"
780
  msgid ""
781
  "Trashed a pingback to \"{comment_post_title}\" by {comment_author} "
782
  "({comment_author_email})"
783
  msgstr ""
784
 
785
- #: loggers/SimpleCommentsLogger.php:240
786
  msgctxt "A pingback was restored from the trash"
787
  msgid ""
788
  "Restored a pingback to \"{comment_post_title}\" by {comment_author} "
789
  "({comment_author_email}) from the trash"
790
  msgstr ""
791
 
792
- #: loggers/SimpleCommentsLogger.php:246
793
  msgctxt "A pingback was deleted"
794
  msgid ""
795
  "Deleted a pingback to \"{comment_post_title}\" by {comment_author} "
796
  "({comment_author_email})"
797
  msgstr ""
798
 
799
- #: loggers/SimpleCommentsLogger.php:252
800
  msgctxt "A pingback was edited"
801
  msgid ""
802
  "Edited a pingback to \"{comment_post_title}\" by {comment_author} "
803
  "({comment_author_email})"
804
  msgstr ""
805
 
806
- #: loggers/SimpleCommentsLogger.php:263
807
  msgctxt "Comments logger: search"
808
  msgid "Comments"
809
  msgstr ""
810
 
811
- #: loggers/SimpleCommentsLogger.php:264
812
  msgctxt "Comments logger: search"
813
  msgid "All comments activity"
814
  msgstr ""
815
 
816
- #: loggers/SimpleCommentsLogger.php:266
817
  msgctxt "Comments logger: search"
818
  msgid "Added comments"
819
  msgstr ""
820
 
821
- #: loggers/SimpleCommentsLogger.php:274
822
  msgctxt "Comments logger: search"
823
  msgid "Edited comments"
824
  msgstr ""
825
 
826
- #: loggers/SimpleCommentsLogger.php:279
827
  msgctxt "Comments logger: search"
828
  msgid "Approved comments"
829
  msgstr ""
830
 
831
- #: loggers/SimpleCommentsLogger.php:284
832
  msgctxt "Comments logger: search"
833
  msgid "Held comments"
834
  msgstr ""
835
 
836
- #: loggers/SimpleCommentsLogger.php:289
837
  msgctxt "Comments logger: search"
838
  msgid "Comments status changed to spam"
839
  msgstr ""
840
 
841
- #: loggers/SimpleCommentsLogger.php:294
842
  msgctxt "Comments logger: search"
843
  msgid "Trashed comments"
844
  msgstr ""
845
 
846
- #: loggers/SimpleCommentsLogger.php:299
847
  msgctxt "Comments logger: search"
848
  msgid "Untrashed comments"
849
  msgstr ""
850
 
851
- #: loggers/SimpleCommentsLogger.php:304
852
  msgctxt "Comments logger: search"
853
  msgid "Deleted comments"
854
  msgstr ""
855
 
856
- #: loggers/SimpleCommentsLogger.php:599 loggers/SimpleCommentsLogger.php:612
857
- #: loggers/SimpleCommentsLogger.php:626
858
  msgctxt "comments logger - detailed output comment status"
859
  msgid "Status"
860
  msgstr ""
861
 
862
- #: loggers/SimpleCommentsLogger.php:601 loggers/SimpleCommentsLogger.php:614
863
- #: loggers/SimpleCommentsLogger.php:628
864
  msgctxt "comments logger - detailed output author"
865
  msgid "Name"
866
  msgstr ""
867
 
868
- #: loggers/SimpleCommentsLogger.php:602 loggers/SimpleCommentsLogger.php:615
869
- #: loggers/SimpleCommentsLogger.php:629
870
  msgctxt "comments logger - detailed output email"
871
  msgid "Email"
872
  msgstr ""
873
 
874
- #: loggers/SimpleCommentsLogger.php:603 loggers/SimpleCommentsLogger.php:616
875
  msgctxt "comments logger - detailed output content"
876
  msgid "Content"
877
  msgstr ""
878
 
879
- #: loggers/SimpleCommentsLogger.php:630
880
  msgctxt "comments logger - detailed output content"
881
  msgid "Comment"
882
  msgstr ""
883
 
884
- #: loggers/SimpleCommentsLogger.php:756
885
  msgctxt "comments logger - edit comment"
886
  msgid "View/Edit"
887
  msgstr ""
@@ -896,42 +1118,42 @@ msgctxt "User logger: search"
896
  msgid "WordPress core updates"
897
  msgstr ""
898
 
899
- #: loggers/SimpleUserLogger.php:35
900
  msgctxt "User logger: search"
901
  msgid "Users"
902
  msgstr ""
903
 
904
- #: loggers/SimpleUserLogger.php:36
905
  msgctxt "User logger: search"
906
  msgid "All user activity"
907
  msgstr ""
908
 
909
- #: loggers/SimpleUserLogger.php:38
910
  msgctxt "User logger: search"
911
  msgid "Successful user logins"
912
  msgstr ""
913
 
914
- #: loggers/SimpleUserLogger.php:42
915
  msgctxt "User logger: search"
916
  msgid "Failed user logins"
917
  msgstr ""
918
 
919
- #: loggers/SimpleUserLogger.php:46
920
  msgctxt "User logger: search"
921
  msgid "User logouts"
922
  msgstr ""
923
 
924
- #: loggers/SimpleUserLogger.php:49
925
  msgctxt "User logger: search"
926
  msgid "Created users"
927
  msgstr ""
928
 
929
- #: loggers/SimpleUserLogger.php:52
930
  msgctxt "User logger: search"
931
  msgid "User profile updates"
932
  msgstr ""
933
 
934
- #: loggers/SimpleUserLogger.php:55
935
  msgctxt "User logger: search"
936
  msgid "User deletions"
937
  msgstr ""
@@ -946,7 +1168,7 @@ msgctxt "Export logger: search"
946
  msgid "Created exports"
947
  msgstr ""
948
 
949
- #: loggers/SimpleLogger.php:192
950
  msgctxt "header output when initiator is the currently logged in user"
951
  msgid "You"
952
  msgstr ""
@@ -1015,171 +1237,171 @@ msgctxt "Options logger: search"
1015
  msgid "Changed options"
1016
  msgstr ""
1017
 
1018
- #: loggers/SimplePluginLogger.php:51
1019
  msgctxt "Plugin was non-silently activated by a user"
1020
  msgid "Activated plugin \"{plugin_name}\""
1021
  msgstr ""
1022
 
1023
- #: loggers/SimplePluginLogger.php:57
1024
  msgctxt "Plugin was non-silently deactivated by a user"
1025
  msgid "Deactivated plugin \"{plugin_name}\""
1026
  msgstr ""
1027
 
1028
- #: loggers/SimplePluginLogger.php:63
1029
  msgctxt "Plugin was installed"
1030
  msgid "Installed plugin \"{plugin_name}\""
1031
  msgstr ""
1032
 
1033
- #: loggers/SimplePluginLogger.php:69
1034
  msgctxt "Plugin failed to install"
1035
  msgid "Failed to install plugin \"{plugin_name}\""
1036
  msgstr ""
1037
 
1038
- #: loggers/SimplePluginLogger.php:75
1039
  msgctxt "Plugin was updated"
1040
  msgid ""
1041
  "Updated plugin \"{plugin_name}\" to version {plugin_version} from "
1042
  "{plugin_prev_version}"
1043
  msgstr ""
1044
 
1045
- #: loggers/SimplePluginLogger.php:81
1046
  msgctxt "Plugin update failed"
1047
  msgid "Updated plugin \"{plugin_name}\""
1048
  msgstr ""
1049
 
1050
- #: loggers/SimplePluginLogger.php:87
1051
  msgctxt "Plugin file edited"
1052
  msgid "Edited plugin file \"{plugin_edited_file}\""
1053
  msgstr ""
1054
 
1055
- #: loggers/SimplePluginLogger.php:93
1056
  msgctxt "Plugin files was deleted"
1057
  msgid "Deleted plugin \"{plugin_name}\""
1058
  msgstr ""
1059
 
1060
- #: loggers/SimplePluginLogger.php:100
1061
  msgctxt "Plugin was updated in bulk"
1062
  msgid ""
1063
  "Updated plugin \"{plugin_name}\" to {plugin_version} from "
1064
  "{plugin_prev_version}"
1065
  msgstr ""
1066
 
1067
- #: loggers/SimplePluginLogger.php:108
1068
  msgctxt "Plugin logger: search"
1069
  msgid "Plugins"
1070
  msgstr ""
1071
 
1072
- #: loggers/SimplePluginLogger.php:110
1073
  msgctxt "Plugin logger: search"
1074
  msgid "Activated plugins"
1075
  msgstr ""
1076
 
1077
- #: loggers/SimplePluginLogger.php:113
1078
  msgctxt "Plugin logger: search"
1079
  msgid "Deactivated plugins"
1080
  msgstr ""
1081
 
1082
- #: loggers/SimplePluginLogger.php:116
1083
  msgctxt "Plugin logger: search"
1084
  msgid "Installed plugins"
1085
  msgstr ""
1086
 
1087
- #: loggers/SimplePluginLogger.php:119
1088
  msgctxt "Plugin logger: search"
1089
  msgid "Failed plugin installs"
1090
  msgstr ""
1091
 
1092
- #: loggers/SimplePluginLogger.php:122
1093
  msgctxt "Plugin logger: search"
1094
  msgid "Updated plugins"
1095
  msgstr ""
1096
 
1097
- #: loggers/SimplePluginLogger.php:126
1098
  msgctxt "Plugin logger: search"
1099
  msgid "Failed plugin updates"
1100
  msgstr ""
1101
 
1102
- #: loggers/SimplePluginLogger.php:129
1103
  msgctxt "Plugin logger: search"
1104
  msgid "Edited plugin files"
1105
  msgstr ""
1106
 
1107
- #: loggers/SimplePluginLogger.php:132
1108
  msgctxt "Plugin logger: search"
1109
  msgid "Deleted plugins"
1110
  msgstr ""
1111
 
1112
- #: loggers/SimplePluginLogger.php:863
1113
  msgctxt "plugin logger - detailed output version"
1114
  msgid "Version"
1115
  msgstr ""
1116
 
1117
- #: loggers/SimplePluginLogger.php:865
1118
  msgctxt "plugin logger - detailed output author"
1119
  msgid "Author"
1120
  msgstr ""
1121
 
1122
- #: loggers/SimplePluginLogger.php:867
1123
  msgctxt "plugin logger - detailed output author"
1124
  msgid "Requires"
1125
  msgstr ""
1126
 
1127
- #: loggers/SimplePluginLogger.php:866
1128
  msgctxt "plugin logger - detailed output url"
1129
  msgid "URL"
1130
  msgstr ""
1131
 
1132
- #: loggers/SimplePluginLogger.php:868
1133
  msgctxt "plugin logger - detailed output compatible"
1134
  msgid "Compatible up to"
1135
  msgstr ""
1136
 
1137
- #: loggers/SimplePluginLogger.php:869
1138
  msgctxt "plugin logger - detailed output downloaded"
1139
  msgid "Downloads"
1140
  msgstr ""
1141
 
1142
- #: loggers/SimplePluginLogger.php:929
1143
  msgctxt "plugin logger: plugin info thickbox title view all info"
1144
  msgid "View plugin info"
1145
  msgstr ""
1146
 
1147
- #: loggers/SimplePluginLogger.php:944
1148
  msgctxt "plugin logger: plugin info thickbox title"
1149
  msgid "View plugin info"
1150
  msgstr ""
1151
 
1152
- #: loggers/SimplePluginLogger.php:948
1153
  msgctxt "plugin logger: plugin info thickbox title"
1154
  msgid "View changelog"
1155
  msgstr ""
1156
 
1157
- #: loggers/SimplePostLogger.php:38
1158
  msgctxt "Post logger: search"
1159
  msgid "Posts & Pages"
1160
  msgstr ""
1161
 
1162
- #: loggers/SimplePostLogger.php:40
1163
  msgctxt "Post logger: search"
1164
  msgid "Posts created"
1165
  msgstr ""
1166
 
1167
- #: loggers/SimplePostLogger.php:43
1168
  msgctxt "Post logger: search"
1169
  msgid "Posts updated"
1170
  msgstr ""
1171
 
1172
- #: loggers/SimplePostLogger.php:46
1173
  msgctxt "Post logger: search"
1174
  msgid "Posts trashed"
1175
  msgstr ""
1176
 
1177
- #: loggers/SimplePostLogger.php:49
1178
  msgctxt "Post logger: search"
1179
  msgid "Posts deleted"
1180
  msgstr ""
1181
 
1182
- #: loggers/SimplePostLogger.php:52
1183
  msgctxt "Post logger: search"
1184
  msgid "Posts restored"
1185
  msgstr ""
@@ -1224,6 +1446,16 @@ msgctxt "Theme logger: search"
1224
  msgid "Background of themes changed"
1225
  msgstr ""
1226
 
 
 
 
 
 
 
 
 
 
 
1227
  #: templates/settings-statsRowsPerDay.php:36
1228
  msgctxt "stats: date in rows per day chart"
1229
  msgid "M j"
1
+ # Copyright (C) 2015 Simple History
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.22\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/Simple-History\n"
7
+ "POT-Creation-Date: 2015-02-28 22:22:18+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2015-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
  "X-Generator: grunt-wp-i18n 0.4.9\n"
24
  "X-Poedit-Bookmarks: \n"
25
  "X-Textdomain-Support: yes\n"
26
 
27
+ #: dropins/SimpleHistoryDonateDropin.php:36
28
+ msgid "Donate"
29
  msgstr ""
30
 
31
+ #: dropins/SimpleHistoryDonateDropin.php:72
32
+ msgid ""
33
+ "If you find Simple History useful please <a href=\"%1$s\">donate</a> or <a "
34
+ "href=\"%2$s\">buy me something from my Amazon wish list</a>."
35
  msgstr ""
36
 
37
+ #: dropins/SimpleHistoryFilterDropin.php:44
38
+ msgid "Filter history"
39
  msgstr ""
40
 
41
+ #: dropins/SimpleHistoryFilterDropin.php:48
42
+ #: dropins/SimpleHistoryFilterDropin.php:159
43
+ msgid "Search events"
44
  msgstr ""
45
 
46
+ #: dropins/SimpleHistoryFilterDropin.php:56
47
+ msgid "All log levels"
48
  msgstr ""
49
 
50
+ #: dropins/SimpleHistoryFilterDropin.php:70
51
+ msgid "All messages"
52
  msgstr ""
53
 
54
+ #: dropins/SimpleHistoryFilterDropin.php:124
55
+ msgid "All users"
56
  msgstr ""
57
 
58
+ #: dropins/SimpleHistoryFilterDropin.php:145
59
+ msgid "All dates"
60
  msgstr ""
61
 
62
+ #: dropins/SimpleHistoryFilterDropin.php:168
63
+ msgid "Search"
64
  msgstr ""
65
 
66
+ #: dropins/SimpleHistoryNewRowsNotifier.php:80
67
+ msgid "1 new row"
68
+ msgid_plural "%d new rows"
69
+ msgstr[0] ""
70
+ msgstr[1] ""
71
+
72
+ #: dropins/SimpleHistoryRSSDropin.php:55
73
+ msgid "Address"
74
  msgstr ""
75
 
76
+ #: dropins/SimpleHistoryRSSDropin.php:64
77
+ msgid "Regenerate"
78
  msgstr ""
79
 
80
+ #: dropins/SimpleHistoryRSSDropin.php:81
81
+ msgid "Created new secret RSS address"
82
  msgstr ""
83
 
84
+ #: dropins/SimpleHistoryRSSDropin.php:148
85
+ #: dropins/SimpleHistoryRSSDropin.php:262
86
+ msgid "History for %s"
87
  msgstr ""
88
 
89
+ #: dropins/SimpleHistoryRSSDropin.php:149
90
+ #: dropins/SimpleHistoryRSSDropin.php:263
91
+ msgid "WordPress History for %s"
92
  msgstr ""
93
 
94
+ #: dropins/SimpleHistoryRSSDropin.php:186
95
+ msgid "Severity level: %1$s"
96
  msgstr ""
97
 
98
+ #: dropins/SimpleHistoryRSSDropin.php:199
99
+ msgid "+%1$s occasion"
100
+ msgid_plural "+%1$s occasions"
101
+ msgstr[0] ""
102
+ msgstr[1] ""
103
+
104
+ #: dropins/SimpleHistoryRSSDropin.php:266
105
+ msgid "Wrong RSS secret"
106
  msgstr ""
107
 
108
+ #: dropins/SimpleHistoryRSSDropin.php:267
109
+ msgid ""
110
+ "Your RSS secret for Simple History RSS feed is wrong. Please see WordPress "
111
+ "settings for current link to the RSS feed."
112
  msgstr ""
113
 
114
+ #: dropins/SimpleHistoryRSSDropin.php:318
115
+ msgid ""
116
+ "You can generate a new address for the RSS feed. This is useful if you "
117
+ "think that the address has fallen into the wrong hands."
118
  msgstr ""
119
 
120
+ #: dropins/SimpleHistoryRSSDropin.php:321
121
+ msgid "Generate new address"
122
  msgstr ""
123
 
124
+ #: dropins/SimpleHistoryRSSDropin.php:349
125
+ msgid ""
126
+ "Simple History has a RSS feed which you can subscribe to and receive log "
127
+ "updates. Make sure you only share the feed with people you trust, since it "
128
+ "can contain sensitive or confidential information."
129
  msgstr ""
130
 
131
+ #: dropins/SimpleHistorySettingsLogtestDropin.php:20
132
+ msgid "Test data (debug)"
133
  msgstr ""
134
 
135
+ #: dropins/SimpleHistorySettingsLogtestDropin.php:225
136
+ msgid "Plugin"
137
  msgstr ""
138
 
139
+ #: dropins/SimpleHistorySettingsLogtestDropin.php:226
140
+ msgid "Enter title of new page"
141
  msgstr ""
142
 
143
+ #: dropins/SimpleHistorySettingsStatsDropin.php:27
144
+ msgid "Stats"
145
  msgstr ""
146
 
147
+ #: dropins/SimpleHistorySidebarDropin.php:159 loggers/SimpleLogger.php:300
148
+ msgid "Just now"
149
  msgstr ""
150
 
151
+ #: inc/SimpleHistory.php:533 inc/SimpleHistory.php:826
152
+ msgid "Settings"
153
  msgstr ""
154
 
155
+ #: inc/SimpleHistory.php:544
156
+ msgid "Log (debug)"
157
  msgstr ""
158
 
159
+ #: inc/SimpleHistory.php:549
160
+ msgid "Styles example (debug)"
161
  msgstr ""
162
 
163
+ #: inc/SimpleHistory.php:841
164
+ #. #-#-#-#-# Simple-History.pot (Simple History 2.0.22) #-#-#-#-#
165
+ #. Plugin Name of the plugin/theme
166
+ msgid "Simple History"
167
  msgstr ""
168
 
169
+ #: inc/SimpleHistory.php:917
170
+ msgid "Remove all log items?"
171
  msgstr ""
172
 
173
+ #: inc/SimpleHistory.php:919
174
+ msgid "Go to the first page"
175
  msgstr ""
176
 
177
+ #: inc/SimpleHistory.php:920
178
+ msgid "Go to the previous page"
179
  msgstr ""
180
 
181
+ #: inc/SimpleHistory.php:921
182
+ msgid "Go to the next page"
183
  msgstr ""
184
 
185
+ #: inc/SimpleHistory.php:922
186
+ msgid "Go to the last page"
 
 
187
  msgstr ""
188
 
189
+ #: inc/SimpleHistory.php:923
190
+ msgid "Current page"
191
  msgstr ""
192
 
193
+ #: inc/SimpleHistory.php:925
194
+ msgid "Oups, the log could not be loaded right now."
195
  msgstr ""
196
 
197
+ #: inc/SimpleHistory.php:926
198
+ msgid "Your search did not match any history events."
199
  msgstr ""
200
 
201
+ #: inc/SimpleHistory.php:1210 inc/SimpleHistory.php:1311
202
+ msgid "Simple History Settings"
203
  msgstr ""
204
 
205
+ #: inc/SimpleHistory.php:1244
206
+ msgid "No valid callback found"
207
  msgstr ""
208
 
209
+ #: inc/SimpleHistory.php:1332
210
+ msgid "Cleared database"
211
  msgstr ""
212
 
213
+ #: inc/SimpleHistory.php:1359
214
+ msgid "Show history"
215
+ msgstr ""
 
 
216
 
217
+ #: inc/SimpleHistory.php:1372
218
+ msgid "Number of items per page"
219
  msgstr ""
220
 
221
+ #: inc/SimpleHistory.php:1384
222
+ msgid "Clear log"
223
  msgstr ""
224
 
225
+ #: inc/SimpleHistory.php:1523
226
+ msgid "on the dashboard"
227
  msgstr ""
228
 
229
+ #: inc/SimpleHistory.php:1528
230
+ msgid "as a page under the dashboard menu"
 
231
  msgstr ""
232
 
233
+ #: inc/SimpleHistory.php:1544
234
+ msgid "Items in the database are automatically removed after %1$s days."
 
235
  msgstr ""
236
 
237
+ #: inc/SimpleHistory.php:1546
238
+ msgid "Items in the database are kept forever."
239
+ msgstr ""
240
+
241
+ #: inc/SimpleHistory.php:1550
242
+ msgid "Clear log now"
243
+ msgstr ""
244
+
245
+ #: inc/SimpleHistory.php:1594
246
+ msgid "The log for Simple History was cleared ({num_rows} rows were removed)."
247
+ msgstr ""
248
+
249
+ #: inc/SimpleHistory.php:1858
250
+ msgid "+%1$s similar event"
251
+ msgid_plural "+%1$s similar events"
252
  msgstr[0] ""
253
  msgstr[1] ""
254
 
255
+ #: inc/SimpleHistory.php:1865
256
+ msgid "Loading…"
257
  msgstr ""
258
 
259
+ #: inc/SimpleHistory.php:1872
260
+ msgid "Showing %1$s more"
 
 
261
  msgstr ""
262
 
263
+ #: inc/SimpleHistory.php:1891
264
+ msgid "Context data"
 
 
265
  msgstr ""
266
 
267
+ #: inc/SimpleHistory.php:1892
268
+ msgid "This is potentially useful meta data that a logger has saved."
269
  msgstr ""
270
 
271
+ #: inc/SimpleHistory.php:2412
272
+ msgid "No events today so far."
 
 
 
273
  msgstr ""
274
 
275
+ #: inc/SimpleHistory.php:2431
276
+ msgid "One event today from one user."
277
  msgstr ""
278
 
279
+ #: inc/SimpleHistory.php:2437
280
+ msgid "One event today from one source."
281
  msgstr ""
282
 
283
+ #: inc/SimpleHistory.php:2443
284
+ msgid "%1$d events today from one user."
285
+ msgstr ""
286
+
287
+ #: inc/SimpleHistory.php:2449
288
+ msgid "%1$d events today from %2$d users."
289
+ msgstr ""
290
+
291
+ #: inc/SimpleHistory.php:2455 inc/SimpleHistory.php:2461
292
+ msgid "%1$d events today from one user and one other source."
293
+ msgstr ""
294
+
295
+ #: inc/SimpleHistory.php:2467
296
+ msgid "%1$d events today from one user and %3$d other sources."
297
+ msgstr ""
298
+
299
+ #: inc/SimpleHistory.php:2473
300
+ msgid "%1$s events today from %2$d users and %3$d other sources."
301
+ msgstr ""
302
+
303
+ #: index.php:58
304
  msgid ""
305
  "Simple History is a great plugin, but to use it your server must have at "
306
  "least PHP 5.3 installed (you have version %s)."
307
  msgstr ""
308
 
309
+ #: loggers/SimpleCommentsLogger.php:685
310
  msgid "Spam"
311
  msgstr ""
312
 
313
+ #: loggers/SimpleCommentsLogger.php:687
314
  msgid "Approved"
315
  msgstr ""
316
 
317
+ #: loggers/SimpleCommentsLogger.php:689
318
  msgid "Pending"
319
  msgstr ""
320
 
321
+ #: loggers/SimpleCommentsLogger.php:703
322
  msgid "Trackback"
323
  msgstr ""
324
 
325
+ #: loggers/SimpleCommentsLogger.php:705
326
  msgid "Pingback"
327
  msgstr ""
328
 
329
+ #: loggers/SimpleCommentsLogger.php:707
330
  msgid "Comment"
331
  msgstr ""
332
 
335
  msgstr ""
336
 
337
  #: loggers/SimpleCoreUpdatesLogger.php:30
338
+ msgid "WordPress auto-updated to {new_version} from {prev_version}"
339
  msgstr ""
340
 
341
  #: loggers/SimpleExportLogger.php:23
350
  msgid "%d occasions"
351
  msgstr ""
352
 
353
+ #: loggers/SimpleLogger.php:207
354
  msgid "Deleted user (had id %1$s, email %2$s, login %3$s)"
355
  msgstr ""
356
 
357
+ #: loggers/SimpleLogger.php:222
358
  msgid "Anonymous web user"
359
  msgstr ""
360
 
361
+ #: loggers/SimpleLogger.php:230
362
  msgid "Anonymous user from %1$s"
363
  msgstr ""
364
 
365
+ #: loggers/SimpleLogger.php:305
 
 
 
 
366
  #. translators: Date format for log row header, see http:php.net/date
367
  msgid "M j, Y \\a\\t G:i"
368
  msgstr ""
369
 
370
+ #: loggers/SimpleLogger.php:313
371
  #. translators: 1: last modified date and time in human time diff-format
372
  msgid "%1$s ago"
373
  msgstr ""
384
  msgid "Deleted {post_type} \"{attachment_title}\" (\"{attachment_filename}\")"
385
  msgstr ""
386
 
387
+ #: loggers/SimpleMediaLogger.php:117
388
  msgid "Edited {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
389
  msgstr ""
390
 
391
+ #: loggers/SimpleMediaLogger.php:121
392
  msgid "Uploaded {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
393
  msgstr ""
394
 
395
+ #: loggers/SimpleMediaLogger.php:233
396
  msgid "{attachment_thumb}"
397
  msgstr ""
398
 
399
+ #: loggers/SimpleMediaLogger.php:242
400
  msgid "{attachment_size_format}"
401
  msgstr ""
402
 
403
+ #: loggers/SimpleMediaLogger.php:243
404
  msgid "{attachment_filetype_extension}"
405
  msgstr ""
406
 
407
+ #: loggers/SimpleMediaLogger.php:245
408
  msgid "{full_image_width} × {full_image_height}"
409
  msgstr ""
410
 
444
  msgid "Settings page"
445
  msgstr ""
446
 
447
+ #: loggers/SimplePluginLogger.php:169
448
+ msgid "You do not have sufficient permissions to delete plugins for this site."
449
+ msgstr ""
450
+
451
+ #: loggers/SimplePostLogger.php:180
452
  msgid "Created {post_type} \"{post_title}\""
453
  msgstr ""
454
 
455
+ #: loggers/SimplePostLogger.php:181
456
  msgid "Updated {post_type} \"{post_title}\""
457
  msgstr ""
458
 
459
+ #: loggers/SimplePostLogger.php:182
460
  msgid "Restored {post_type} \"{post_title}\" from trash"
461
  msgstr ""
462
 
463
+ #: loggers/SimplePostLogger.php:183 loggers/SimplePostLogger.php:452
464
  msgid "Deleted {post_type} \"{post_title}\""
465
  msgstr ""
466
 
467
+ #: loggers/SimplePostLogger.php:184
468
  msgid "Moved {post_type} \"{post_title}\" to the trash"
469
  msgstr ""
470
 
471
+ #: loggers/SimplePostLogger.php:448
472
  msgid "Updated {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
473
  msgstr ""
474
 
475
+ #: loggers/SimplePostLogger.php:456
476
  msgid "Created {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
477
  msgstr ""
478
 
479
+ #: loggers/SimplePostLogger.php:461
480
  msgid "Moved {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> to the trash"
481
  msgstr ""
482
 
512
  msgid "Section"
513
  msgstr ""
514
 
515
+ #: loggers/SimpleUserLogger.php:22
516
  msgid ""
517
  "Failed to login to account with username \"{login_user_login}\" because an "
518
  "incorrect password was entered"
519
  msgstr ""
520
 
521
+ #: loggers/SimpleUserLogger.php:23
522
  msgid ""
523
  "Failed to login with username \"{failed_login_username}\" because no user "
524
+ "with that username exists"
525
  msgstr ""
526
 
527
+ #: loggers/SimpleUserLogger.php:24
528
  msgid "Logged in"
529
  msgstr ""
530
 
531
+ #: loggers/SimpleUserLogger.php:25
532
  msgid "Unknown user logged in"
533
  msgstr ""
534
 
535
+ #: loggers/SimpleUserLogger.php:26
536
  msgid "Logged out"
537
  msgstr ""
538
 
539
+ #: loggers/SimpleUserLogger.php:27
540
  msgid "Edited the profile for user {edited_user_login} ({edited_user_email})"
541
  msgstr ""
542
 
543
+ #: loggers/SimpleUserLogger.php:28
544
  msgid ""
545
  "Created user {created_user_login} ({created_user_email}) with role "
546
  "{created_user_role}"
547
  msgstr ""
548
 
549
+ #: loggers/SimpleUserLogger.php:29
550
  msgid "Deleted user {deleted_user_login} ({deleted_user_email})"
551
  msgstr ""
552
 
553
+ #: loggers/SimpleUserLogger.php:227
554
  msgid "Edited <a href=\"{edit_profile_link}\">your profile</a>"
555
  msgstr ""
556
 
557
+ #: loggers/SimpleUserLogger.php:231
558
  msgid "Edited <a href=\"{edit_profile_link}\">their profile</a>"
559
  msgstr ""
560
 
561
+ #: loggers/SimpleUserLogger.php:240
562
  msgid "Edited your profile"
563
  msgstr ""
564
 
565
+ #: loggers/SimpleUserLogger.php:251
566
  msgid ""
567
  "Edited the profile for user <a "
568
  "href=\"{edit_profile_link}\">{edited_user_login} ({edited_user_email})</a>"
615
  msgid "Deleted users are also included."
616
  msgstr ""
617
 
 
 
 
 
618
  #. Plugin URI of the plugin/theme
619
  msgid "http://simple-history.com"
620
  msgstr ""
633
  msgid "http://simple-history.com/"
634
  msgstr ""
635
 
636
+ #: dropins/SimpleHistoryDonateDropin.php:51
637
+ msgctxt "donate settings headline"
638
+ msgid "Donate"
639
+ msgstr ""
640
+
641
+ #: dropins/SimpleHistoryFilterDropin.php:50
642
+ msgctxt "Filter dropin: button to show more search options"
643
+ msgid "Show options"
644
+ msgstr ""
645
+
646
+ #: dropins/SimpleHistoryFilterDropin.php:160
647
+ msgctxt "Filter dropin: button to hide more search options"
648
+ msgid "Hide options"
649
+ msgstr ""
650
+
651
+ #: dropins/SimpleHistoryIpInfoDropin.php:66
652
+ msgctxt "IP Info Dropin"
653
+ msgid "That IP address does not seem like a public one."
654
+ msgstr ""
655
+
656
+ #: dropins/SimpleHistoryIpInfoDropin.php:85
657
+ msgctxt "IP Info Dropin"
658
+ msgid "IP address"
659
+ msgstr ""
660
+
661
+ #: dropins/SimpleHistoryIpInfoDropin.php:96
662
+ msgctxt "IP Info Dropin"
663
+ msgid "Hostname"
664
+ msgstr ""
665
+
666
+ #: dropins/SimpleHistoryIpInfoDropin.php:107
667
+ #: dropins/SimpleHistoryIpInfoDropin.php:118
668
+ msgctxt "IP Info Dropin"
669
+ msgid "Network"
670
+ msgstr ""
671
+
672
+ #: dropins/SimpleHistoryIpInfoDropin.php:129
673
+ msgctxt "IP Info Dropin"
674
+ msgid "City"
675
+ msgstr ""
676
+
677
+ #: dropins/SimpleHistoryIpInfoDropin.php:140
678
+ msgctxt "IP Info Dropin"
679
+ msgid "Region"
680
+ msgstr ""
681
+
682
+ #: dropins/SimpleHistoryIpInfoDropin.php:151
683
+ msgctxt "IP Info Dropin"
684
+ msgid "Country"
685
+ msgstr ""
686
+
687
+ #: dropins/SimpleHistoryIpInfoDropin.php:162
688
+ msgctxt "IP Info Dropin"
689
+ msgid "IP info provided by %1$s ipinfo.io %2$s"
690
+ msgstr ""
691
+
692
+ #: dropins/SimpleHistoryNewRowsNotifier.php:38
693
+ msgctxt "New rows notifier: error while checking for new rows"
694
+ msgid "An error occured while checking for new log rows"
695
+ msgstr ""
696
+
697
+ #: dropins/SimpleHistoryRSSDropin.php:47
698
+ msgctxt "rss settings headline"
699
+ msgid "RSS feed"
700
+ msgstr ""
701
+
702
+ #: dropins/SimpleHistorySidebarDropin.php:31
703
+ msgctxt "Sidebar box"
704
+ msgid "Simple History is on GitHub"
705
+ msgstr ""
706
+
707
+ #: dropins/SimpleHistorySidebarDropin.php:34
708
+ msgctxt "Sidebar box"
709
+ msgid ""
710
+ "You can star, fork, or report issues with this plugin over at the <a "
711
+ "href=\"%1$s\">GitHub page</a>."
712
+ msgstr ""
713
+
714
+ #: dropins/SimpleHistorySidebarDropin.php:48
715
+ msgctxt "Sidebar box"
716
+ msgid "Donate to support development"
717
+ msgstr ""
718
+
719
+ #: dropins/SimpleHistorySidebarDropin.php:51
720
+ msgctxt "Sidebar box"
721
+ msgid ""
722
+ "If you like and use Simple History you should <a href=\"%1$s\">donate to "
723
+ "keep this plugin free</a>."
724
+ msgstr ""
725
+
726
+ #: dropins/SimpleHistorySidebarDropin.php:65
727
+ msgctxt "Sidebar box"
728
+ msgid "Review this plugin if you like it"
729
+ msgstr ""
730
+
731
+ #: dropins/SimpleHistorySidebarDropin.php:68
732
+ msgctxt "Sidebar box"
733
+ msgid ""
734
+ "If you like Simple History then please <a href=\"%1$s\">give it a nice "
735
+ "review over at wordpress.org</a>."
736
+ msgstr ""
737
+
738
+ #: dropins/SimpleHistorySidebarDropin.php:72
739
+ msgctxt "Sidebar box"
740
+ msgid ""
741
+ "A good review will help new users find this plugin. And it will make the "
742
+ "plugin author very happy :)"
743
+ msgstr ""
744
+
745
+ #: inc/SimpleHistory.php:277
746
  msgctxt "Message visible while waiting for log to load from server the first time"
747
  msgid "Loading history..."
748
  msgstr ""
749
 
750
+ #: inc/SimpleHistory.php:314
751
  msgctxt "page n of n"
752
  msgid "of"
753
  msgstr ""
754
 
755
+ #: inc/SimpleHistory.php:385
756
  msgctxt "API: not enought arguments passed"
757
  msgid "Not enough args specified"
758
  msgstr ""
759
 
760
+ #: inc/SimpleHistory.php:1296
761
  msgctxt "dashboard menu name"
762
  msgid "Simple History"
763
  msgstr ""
764
 
765
+ #: inc/SimpleHistory.php:1420
766
  msgctxt "history page headline"
767
  msgid "Simple History"
768
  msgstr ""
769
 
770
+ #: inc/SimpleHistory.php:1682
771
+ msgctxt "simple-history"
772
+ msgid "Simple History removed one event that were older than {days} days"
773
+ msgid_plural "Simple History removed {num_rows} events that were older than {days} days"
774
+ msgstr[0] ""
775
+ msgstr[1] ""
776
+
777
+ #: inc/SimpleHistory.php:2028
778
+ msgctxt "Log level in gui"
779
+ msgid "emergency"
780
  msgstr ""
781
 
782
+ #: inc/SimpleHistory.php:2032
783
+ msgctxt "Log level in gui"
784
+ msgid "alert"
785
  msgstr ""
786
 
787
+ #: inc/SimpleHistory.php:2036
788
+ msgctxt "Log level in gui"
789
+ msgid "critical"
790
+ msgstr ""
791
+
792
+ #: inc/SimpleHistory.php:2040
793
+ msgctxt "Log level in gui"
794
+ msgid "error"
795
+ msgstr ""
796
+
797
+ #: inc/SimpleHistory.php:2044
798
+ msgctxt "Log level in gui"
799
+ msgid "warning"
800
+ msgstr ""
801
+
802
+ #: inc/SimpleHistory.php:2048
803
+ msgctxt "Log level in gui"
804
+ msgid "notice"
805
+ msgstr ""
806
+
807
+ #: inc/SimpleHistory.php:2052
808
+ msgctxt "Log level in gui"
809
+ msgid "info"
810
  msgstr ""
811
 
812
+ #: inc/SimpleHistory.php:2056
813
+ msgctxt "Log level in gui"
814
+ msgid "debug"
815
+ msgstr ""
816
+
817
+ #: inc/SimpleHistory.php:2061
818
+ msgctxt "Log level in gui"
819
+ msgid "Emergency"
820
+ msgstr ""
821
+
822
+ #: inc/SimpleHistory.php:2065
823
+ msgctxt "Log level in gui"
824
+ msgid "Alert"
825
+ msgstr ""
826
+
827
+ #: inc/SimpleHistory.php:2069
828
+ msgctxt "Log level in gui"
829
+ msgid "Critical"
830
+ msgstr ""
831
+
832
+ #: inc/SimpleHistory.php:2073
833
+ msgctxt "Log level in gui"
834
+ msgid "Error"
835
+ msgstr ""
836
+
837
+ #: inc/SimpleHistory.php:2077
838
+ msgctxt "Log level in gui"
839
+ msgid "Warning"
840
+ msgstr ""
841
+
842
+ #: inc/SimpleHistory.php:2081
843
+ msgctxt "Log level in gui"
844
+ msgid "Notice"
845
+ msgstr ""
846
+
847
+ #: inc/SimpleHistory.php:2085
848
+ msgctxt "Log level in gui"
849
+ msgid "Info"
850
+ msgstr ""
851
+
852
+ #: inc/SimpleHistory.php:2089
853
+ msgctxt "Log level in gui"
854
+ msgid "Debug"
855
+ msgstr ""
856
+
857
+ #: loggers/SimpleCommentsLogger.php:95
858
  msgctxt "A comment was added to the database by a non-logged in internet user"
859
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
860
  msgstr ""
861
 
862
+ #: loggers/SimpleCommentsLogger.php:101
863
  msgctxt "A comment was added to the database by a logged in user"
864
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
865
  msgstr ""
866
 
867
+ #: loggers/SimpleCommentsLogger.php:107
868
  msgctxt "A comment was approved"
869
  msgid ""
870
  "Approved a comment to \"{comment_post_title}\" by {comment_author} "
871
  "({comment_author_email})"
872
  msgstr ""
873
 
874
+ #: loggers/SimpleCommentsLogger.php:113
875
  msgctxt "A comment was was unapproved"
876
  msgid ""
877
  "Unapproved a comment to \"{comment_post_title}\" by {comment_author} "
878
  "({comment_author_email})"
879
  msgstr ""
880
 
881
+ #: loggers/SimpleCommentsLogger.php:119
882
  msgctxt "A comment was marked as spam"
883
  msgid "Marked a comment to post \"{comment_post_title}\" as spam"
884
  msgstr ""
885
 
886
+ #: loggers/SimpleCommentsLogger.php:125
887
  msgctxt "A comment was marked moved to the trash"
888
  msgid ""
889
  "Trashed a comment to \"{comment_post_title}\" by {comment_author} "
890
  "({comment_author_email})"
891
  msgstr ""
892
 
893
+ #: loggers/SimpleCommentsLogger.php:131
894
  msgctxt "A comment was restored from the trash"
895
  msgid ""
896
  "Restored a comment to \"{comment_post_title}\" by {comment_author} "
897
  "({comment_author_email}) from the trash"
898
  msgstr ""
899
 
900
+ #: loggers/SimpleCommentsLogger.php:137
901
  msgctxt "A comment was deleted"
902
  msgid ""
903
  "Deleted a comment to \"{comment_post_title}\" by {comment_author} "
904
  "({comment_author_email})"
905
  msgstr ""
906
 
907
+ #: loggers/SimpleCommentsLogger.php:143
908
  msgctxt "A comment was edited"
909
  msgid ""
910
  "Edited a comment to \"{comment_post_title}\" by {comment_author} "
911
  "({comment_author_email})"
912
  msgstr ""
913
 
914
+ #: loggers/SimpleCommentsLogger.php:150
915
  msgctxt "A trackback was added to the database by a non-logged in internet user"
916
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
917
  msgstr ""
918
 
919
+ #: loggers/SimpleCommentsLogger.php:205
920
  msgctxt "A trackback was added to the database by a non-logged in internet user"
921
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
922
  msgstr ""
923
 
924
+ #: loggers/SimpleCommentsLogger.php:156
925
  msgctxt "A trackback was added to the database by a logged in user"
926
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
927
  msgstr ""
928
 
929
+ #: loggers/SimpleCommentsLogger.php:162
930
  msgctxt "A trackback was approved"
931
  msgid ""
932
  "Approved a trackback to \"{comment_post_title}\" by {comment_author} "
933
  "({comment_author_email})"
934
  msgstr ""
935
 
936
+ #: loggers/SimpleCommentsLogger.php:168
937
  msgctxt "A trackback was was unapproved"
938
  msgid ""
939
  "Unapproved a trackback to \"{comment_post_title}\" by {comment_author} "
940
  "({comment_author_email})"
941
  msgstr ""
942
 
943
+ #: loggers/SimpleCommentsLogger.php:174
944
  msgctxt "A trackback was marked as spam"
945
  msgid "Marked a trackback to post \"{comment_post_title}\" as spam"
946
  msgstr ""
947
 
948
+ #: loggers/SimpleCommentsLogger.php:180
949
  msgctxt "A trackback was marked moved to the trash"
950
  msgid ""
951
  "Trashed a trackback to \"{comment_post_title}\" by {comment_author} "
952
  "({comment_author_email})"
953
  msgstr ""
954
 
955
+ #: loggers/SimpleCommentsLogger.php:186
956
  msgctxt "A trackback was restored from the trash"
957
  msgid ""
958
  "Restored a trackback to \"{comment_post_title}\" by {comment_author} "
959
  "({comment_author_email}) from the trash"
960
  msgstr ""
961
 
962
+ #: loggers/SimpleCommentsLogger.php:192
963
  msgctxt "A trackback was deleted"
964
  msgid ""
965
  "Deleted a trackback to \"{comment_post_title}\" by {comment_author} "
966
  "({comment_author_email})"
967
  msgstr ""
968
 
969
+ #: loggers/SimpleCommentsLogger.php:198
970
  msgctxt "A trackback was edited"
971
  msgid ""
972
  "Edited a trackback to \"{comment_post_title}\" by {comment_author} "
973
  "({comment_author_email})"
974
  msgstr ""
975
 
976
+ #: loggers/SimpleCommentsLogger.php:211
977
  msgctxt "A pingback was added to the database by a logged in user"
978
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
979
  msgstr ""
980
 
981
+ #: loggers/SimpleCommentsLogger.php:217
982
  msgctxt "A pingback was approved"
983
  msgid ""
984
  "Approved a pingback to \"{comment_post_title}\" by \"{comment_author}\"\" "
985
  "({comment_author_email})"
986
  msgstr ""
987
 
988
+ #: loggers/SimpleCommentsLogger.php:223
989
  msgctxt "A pingback was was unapproved"
990
  msgid ""
991
  "Unapproved a pingback to \"{comment_post_title}\" by \"{comment_author}\" "
992
  "({comment_author_email})"
993
  msgstr ""
994
 
995
+ #: loggers/SimpleCommentsLogger.php:229
996
  msgctxt "A pingback was marked as spam"
997
  msgid "Marked a pingback to post \"{comment_post_title}\" as spam"
998
  msgstr ""
999
 
1000
+ #: loggers/SimpleCommentsLogger.php:235
1001
  msgctxt "A pingback was marked moved to the trash"
1002
  msgid ""
1003
  "Trashed a pingback to \"{comment_post_title}\" by {comment_author} "
1004
  "({comment_author_email})"
1005
  msgstr ""
1006
 
1007
+ #: loggers/SimpleCommentsLogger.php:241
1008
  msgctxt "A pingback was restored from the trash"
1009
  msgid ""
1010
  "Restored a pingback to \"{comment_post_title}\" by {comment_author} "
1011
  "({comment_author_email}) from the trash"
1012
  msgstr ""
1013
 
1014
+ #: loggers/SimpleCommentsLogger.php:247
1015
  msgctxt "A pingback was deleted"
1016
  msgid ""
1017
  "Deleted a pingback to \"{comment_post_title}\" by {comment_author} "
1018
  "({comment_author_email})"
1019
  msgstr ""
1020
 
1021
+ #: loggers/SimpleCommentsLogger.php:253
1022
  msgctxt "A pingback was edited"
1023
  msgid ""
1024
  "Edited a pingback to \"{comment_post_title}\" by {comment_author} "
1025
  "({comment_author_email})"
1026
  msgstr ""
1027
 
1028
+ #: loggers/SimpleCommentsLogger.php:264
1029
  msgctxt "Comments logger: search"
1030
  msgid "Comments"
1031
  msgstr ""
1032
 
1033
+ #: loggers/SimpleCommentsLogger.php:265
1034
  msgctxt "Comments logger: search"
1035
  msgid "All comments activity"
1036
  msgstr ""
1037
 
1038
+ #: loggers/SimpleCommentsLogger.php:267
1039
  msgctxt "Comments logger: search"
1040
  msgid "Added comments"
1041
  msgstr ""
1042
 
1043
+ #: loggers/SimpleCommentsLogger.php:275
1044
  msgctxt "Comments logger: search"
1045
  msgid "Edited comments"
1046
  msgstr ""
1047
 
1048
+ #: loggers/SimpleCommentsLogger.php:280
1049
  msgctxt "Comments logger: search"
1050
  msgid "Approved comments"
1051
  msgstr ""
1052
 
1053
+ #: loggers/SimpleCommentsLogger.php:285
1054
  msgctxt "Comments logger: search"
1055
  msgid "Held comments"
1056
  msgstr ""
1057
 
1058
+ #: loggers/SimpleCommentsLogger.php:290
1059
  msgctxt "Comments logger: search"
1060
  msgid "Comments status changed to spam"
1061
  msgstr ""
1062
 
1063
+ #: loggers/SimpleCommentsLogger.php:295
1064
  msgctxt "Comments logger: search"
1065
  msgid "Trashed comments"
1066
  msgstr ""
1067
 
1068
+ #: loggers/SimpleCommentsLogger.php:300
1069
  msgctxt "Comments logger: search"
1070
  msgid "Untrashed comments"
1071
  msgstr ""
1072
 
1073
+ #: loggers/SimpleCommentsLogger.php:305
1074
  msgctxt "Comments logger: search"
1075
  msgid "Deleted comments"
1076
  msgstr ""
1077
 
1078
+ #: loggers/SimpleCommentsLogger.php:602 loggers/SimpleCommentsLogger.php:615
1079
+ #: loggers/SimpleCommentsLogger.php:629
1080
  msgctxt "comments logger - detailed output comment status"
1081
  msgid "Status"
1082
  msgstr ""
1083
 
1084
+ #: loggers/SimpleCommentsLogger.php:604 loggers/SimpleCommentsLogger.php:617
1085
+ #: loggers/SimpleCommentsLogger.php:631
1086
  msgctxt "comments logger - detailed output author"
1087
  msgid "Name"
1088
  msgstr ""
1089
 
1090
+ #: loggers/SimpleCommentsLogger.php:605 loggers/SimpleCommentsLogger.php:618
1091
+ #: loggers/SimpleCommentsLogger.php:632
1092
  msgctxt "comments logger - detailed output email"
1093
  msgid "Email"
1094
  msgstr ""
1095
 
1096
+ #: loggers/SimpleCommentsLogger.php:606 loggers/SimpleCommentsLogger.php:619
1097
  msgctxt "comments logger - detailed output content"
1098
  msgid "Content"
1099
  msgstr ""
1100
 
1101
+ #: loggers/SimpleCommentsLogger.php:633
1102
  msgctxt "comments logger - detailed output content"
1103
  msgid "Comment"
1104
  msgstr ""
1105
 
1106
+ #: loggers/SimpleCommentsLogger.php:759
1107
  msgctxt "comments logger - edit comment"
1108
  msgid "View/Edit"
1109
  msgstr ""
1118
  msgid "WordPress core updates"
1119
  msgstr ""
1120
 
1121
+ #: loggers/SimpleUserLogger.php:54
1122
  msgctxt "User logger: search"
1123
  msgid "Users"
1124
  msgstr ""
1125
 
1126
+ #: loggers/SimpleUserLogger.php:55
1127
  msgctxt "User logger: search"
1128
  msgid "All user activity"
1129
  msgstr ""
1130
 
1131
+ #: loggers/SimpleUserLogger.php:57
1132
  msgctxt "User logger: search"
1133
  msgid "Successful user logins"
1134
  msgstr ""
1135
 
1136
+ #: loggers/SimpleUserLogger.php:61
1137
  msgctxt "User logger: search"
1138
  msgid "Failed user logins"
1139
  msgstr ""
1140
 
1141
+ #: loggers/SimpleUserLogger.php:65
1142
  msgctxt "User logger: search"
1143
  msgid "User logouts"
1144
  msgstr ""
1145
 
1146
+ #: loggers/SimpleUserLogger.php:68
1147
  msgctxt "User logger: search"
1148
  msgid "Created users"
1149
  msgstr ""
1150
 
1151
+ #: loggers/SimpleUserLogger.php:71
1152
  msgctxt "User logger: search"
1153
  msgid "User profile updates"
1154
  msgstr ""
1155
 
1156
+ #: loggers/SimpleUserLogger.php:74
1157
  msgctxt "User logger: search"
1158
  msgid "User deletions"
1159
  msgstr ""
1168
  msgid "Created exports"
1169
  msgstr ""
1170
 
1171
+ #: loggers/SimpleLogger.php:194
1172
  msgctxt "header output when initiator is the currently logged in user"
1173
  msgid "You"
1174
  msgstr ""
1237
  msgid "Changed options"
1238
  msgstr ""
1239
 
1240
+ #: loggers/SimplePluginLogger.php:25
1241
  msgctxt "Plugin was non-silently activated by a user"
1242
  msgid "Activated plugin \"{plugin_name}\""
1243
  msgstr ""
1244
 
1245
+ #: loggers/SimplePluginLogger.php:31
1246
  msgctxt "Plugin was non-silently deactivated by a user"
1247
  msgid "Deactivated plugin \"{plugin_name}\""
1248
  msgstr ""
1249
 
1250
+ #: loggers/SimplePluginLogger.php:37
1251
  msgctxt "Plugin was installed"
1252
  msgid "Installed plugin \"{plugin_name}\""
1253
  msgstr ""
1254
 
1255
+ #: loggers/SimplePluginLogger.php:43
1256
  msgctxt "Plugin failed to install"
1257
  msgid "Failed to install plugin \"{plugin_name}\""
1258
  msgstr ""
1259
 
1260
+ #: loggers/SimplePluginLogger.php:49
1261
  msgctxt "Plugin was updated"
1262
  msgid ""
1263
  "Updated plugin \"{plugin_name}\" to version {plugin_version} from "
1264
  "{plugin_prev_version}"
1265
  msgstr ""
1266
 
1267
+ #: loggers/SimplePluginLogger.php:55
1268
  msgctxt "Plugin update failed"
1269
  msgid "Updated plugin \"{plugin_name}\""
1270
  msgstr ""
1271
 
1272
+ #: loggers/SimplePluginLogger.php:61
1273
  msgctxt "Plugin file edited"
1274
  msgid "Edited plugin file \"{plugin_edited_file}\""
1275
  msgstr ""
1276
 
1277
+ #: loggers/SimplePluginLogger.php:67
1278
  msgctxt "Plugin files was deleted"
1279
  msgid "Deleted plugin \"{plugin_name}\""
1280
  msgstr ""
1281
 
1282
+ #: loggers/SimplePluginLogger.php:74
1283
  msgctxt "Plugin was updated in bulk"
1284
  msgid ""
1285
  "Updated plugin \"{plugin_name}\" to {plugin_version} from "
1286
  "{plugin_prev_version}"
1287
  msgstr ""
1288
 
1289
+ #: loggers/SimplePluginLogger.php:82
1290
  msgctxt "Plugin logger: search"
1291
  msgid "Plugins"
1292
  msgstr ""
1293
 
1294
+ #: loggers/SimplePluginLogger.php:84
1295
  msgctxt "Plugin logger: search"
1296
  msgid "Activated plugins"
1297
  msgstr ""
1298
 
1299
+ #: loggers/SimplePluginLogger.php:87
1300
  msgctxt "Plugin logger: search"
1301
  msgid "Deactivated plugins"
1302
  msgstr ""
1303
 
1304
+ #: loggers/SimplePluginLogger.php:90
1305
  msgctxt "Plugin logger: search"
1306
  msgid "Installed plugins"
1307
  msgstr ""
1308
 
1309
+ #: loggers/SimplePluginLogger.php:93
1310
  msgctxt "Plugin logger: search"
1311
  msgid "Failed plugin installs"
1312
  msgstr ""
1313
 
1314
+ #: loggers/SimplePluginLogger.php:96
1315
  msgctxt "Plugin logger: search"
1316
  msgid "Updated plugins"
1317
  msgstr ""
1318
 
1319
+ #: loggers/SimplePluginLogger.php:100
1320
  msgctxt "Plugin logger: search"
1321
  msgid "Failed plugin updates"
1322
  msgstr ""
1323
 
1324
+ #: loggers/SimplePluginLogger.php:103
1325
  msgctxt "Plugin logger: search"
1326
  msgid "Edited plugin files"
1327
  msgstr ""
1328
 
1329
+ #: loggers/SimplePluginLogger.php:106
1330
  msgctxt "Plugin logger: search"
1331
  msgid "Deleted plugins"
1332
  msgstr ""
1333
 
1334
+ #: loggers/SimplePluginLogger.php:891
1335
  msgctxt "plugin logger - detailed output version"
1336
  msgid "Version"
1337
  msgstr ""
1338
 
1339
+ #: loggers/SimplePluginLogger.php:893
1340
  msgctxt "plugin logger - detailed output author"
1341
  msgid "Author"
1342
  msgstr ""
1343
 
1344
+ #: loggers/SimplePluginLogger.php:895
1345
  msgctxt "plugin logger - detailed output author"
1346
  msgid "Requires"
1347
  msgstr ""
1348
 
1349
+ #: loggers/SimplePluginLogger.php:894
1350
  msgctxt "plugin logger - detailed output url"
1351
  msgid "URL"
1352
  msgstr ""
1353
 
1354
+ #: loggers/SimplePluginLogger.php:896
1355
  msgctxt "plugin logger - detailed output compatible"
1356
  msgid "Compatible up to"
1357
  msgstr ""
1358
 
1359
+ #: loggers/SimplePluginLogger.php:897
1360
  msgctxt "plugin logger - detailed output downloaded"
1361
  msgid "Downloads"
1362
  msgstr ""
1363
 
1364
+ #: loggers/SimplePluginLogger.php:957
1365
  msgctxt "plugin logger: plugin info thickbox title view all info"
1366
  msgid "View plugin info"
1367
  msgstr ""
1368
 
1369
+ #: loggers/SimplePluginLogger.php:972
1370
  msgctxt "plugin logger: plugin info thickbox title"
1371
  msgid "View plugin info"
1372
  msgstr ""
1373
 
1374
+ #: loggers/SimplePluginLogger.php:976
1375
  msgctxt "plugin logger: plugin info thickbox title"
1376
  msgid "View changelog"
1377
  msgstr ""
1378
 
1379
+ #: loggers/SimplePostLogger.php:188
1380
  msgctxt "Post logger: search"
1381
  msgid "Posts & Pages"
1382
  msgstr ""
1383
 
1384
+ #: loggers/SimplePostLogger.php:190
1385
  msgctxt "Post logger: search"
1386
  msgid "Posts created"
1387
  msgstr ""
1388
 
1389
+ #: loggers/SimplePostLogger.php:193
1390
  msgctxt "Post logger: search"
1391
  msgid "Posts updated"
1392
  msgstr ""
1393
 
1394
+ #: loggers/SimplePostLogger.php:196
1395
  msgctxt "Post logger: search"
1396
  msgid "Posts trashed"
1397
  msgstr ""
1398
 
1399
+ #: loggers/SimplePostLogger.php:199
1400
  msgctxt "Post logger: search"
1401
  msgid "Posts deleted"
1402
  msgstr ""
1403
 
1404
+ #: loggers/SimplePostLogger.php:202
1405
  msgctxt "Post logger: search"
1406
  msgid "Posts restored"
1407
  msgstr ""
1446
  msgid "Background of themes changed"
1447
  msgstr ""
1448
 
1449
+ #: loggers/SimpleUserLogger.php:36
1450
+ msgctxt "User destroys other login sessions for themself"
1451
+ msgid "Logged out from all other sessions"
1452
+ msgstr ""
1453
+
1454
+ #: loggers/SimpleUserLogger.php:45
1455
+ msgctxt "User destroys all login sessions for a user"
1456
+ msgid "Logged out \"{user_display_name}\" from all sessions"
1457
+ msgstr ""
1458
+
1459
  #: templates/settings-statsRowsPerDay.php:36
1460
  msgctxt "stats: date in rows per day chart"
1461
  msgid "M j"
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
  */
@@ -383,6 +384,11 @@ class SimpleCommentsLogger extends SimpleLogger
383
  "comment_post_type" => $comment_parent_post->post_type,
384
  );
385
 
 
 
 
 
 
386
  return $context;
387
 
388
  }
@@ -397,7 +403,7 @@ class SimpleCommentsLogger extends SimpleLogger
397
  $this->infoMessage(
398
  "{$context["comment_type"]}_edited",
399
  $context
400
- );
401
 
402
  }
403
 
@@ -421,7 +427,7 @@ class SimpleCommentsLogger extends SimpleLogger
421
  $this->infoMessage(
422
  "{$context["comment_type"]}_deleted",
423
  $context
424
- );
425
 
426
  }
427
 
@@ -435,7 +441,7 @@ class SimpleCommentsLogger extends SimpleLogger
435
  $this->infoMessage(
436
  "{$context["comment_type"]}_untrashed",
437
  $context
438
- );
439
 
440
  }
441
 
@@ -446,7 +452,7 @@ class SimpleCommentsLogger extends SimpleLogger
446
  * @param string|bool $comment_status The comment status. Possible values include 'hold',
447
  * 'approve', 'spam', 'trash', or false.
448
  * do_action( 'wp_set_comment_status', $comment_id, $comment_status );
449
- */
450
  public function on_wp_set_comment_status($comment_ID, $comment_status) {
451
 
452
  $context = $this->get_context_for_comment($comment_ID);
@@ -481,7 +487,7 @@ class SimpleCommentsLogger extends SimpleLogger
481
  public function on_comment_post($comment_ID, $comment_approved) {
482
 
483
  $context = $this->get_context_for_comment($comment_ID);
484
-
485
  if ( ! $context ) {
486
  return;
487
  }
@@ -489,14 +495,14 @@ class SimpleCommentsLogger extends SimpleLogger
489
  $comment_data = get_comment( $comment_ID );
490
 
491
  $message = "";
492
-
493
  if ( $comment_data->user_id ) {
494
-
495
  // comment was from a logged in user
496
  $message = "user_{$context["comment_type"]}_added";
497
 
498
  } else {
499
-
500
  // comment was from a non-logged in user
501
  $message = "anon_{$context["comment_type"]}_added";
502
  $context["_initiator"] = SimpleLoggerLogInitiators::WEB_USER;
@@ -509,16 +515,6 @@ class SimpleCommentsLogger extends SimpleLogger
509
 
510
  }
511
 
512
- // @TODO: group comments by comment_type comment | trackback | pingback
513
- // OR: different messages for different comment types?
514
- /*
515
- if ( isset( $comment_data["comment_type"] ) ) {
516
-
517
- $comment_type = $comment_data["comment_type"];
518
-
519
- }
520
- */
521
-
522
  $this->infoMessage(
523
  $message,
524
  $context
@@ -532,11 +528,17 @@ class SimpleCommentsLogger extends SimpleLogger
532
  * and link to comment
533
  */
534
  public function getLogRowPlainTextOutput($row) {
535
-
536
  $message = $row->message;
537
  $context = $row->context;
538
  $message_key = $context["_message_key"];
539
 
 
 
 
 
 
 
540
  // Wrap links around {comment_post_title}
541
  $comment_post_ID = isset( $context["comment_post_ID"] ) ? (int) $context["comment_post_ID"] : null;
542
  if ( $comment_post_ID && $comment_post = get_post( $comment_post_ID ) ) {
@@ -544,7 +546,7 @@ class SimpleCommentsLogger extends SimpleLogger
544
  $edit_post_link = get_edit_post_link( $comment_post_ID );
545
 
546
  if ( $edit_post_link ) {
547
-
548
  $message = str_replace(
549
  '"{comment_post_title}"',
550
  "<a href='{$edit_post_link}'>\"{comment_post_title}\"</a>",
@@ -552,9 +554,10 @@ class SimpleCommentsLogger extends SimpleLogger
552
  );
553
 
554
  }
555
-
556
  }
557
 
 
558
  return $this->interpolate($message, $context);
559
 
560
  }
@@ -568,8 +571,8 @@ class SimpleCommentsLogger extends SimpleLogger
568
  $context = $row->context;
569
  $message_key = $context["_message_key"];
570
  $output = "";
571
-
572
- /*
573
  if ( 'spam' !== $commentdata['comment_approved'] ) { // If it's spam save it silently for later crunching
574
  if ( '0' == $commentdata['comment_approved'] ) { // comment not spam, but not auto-approved
575
  wp_notify_moderator( $comment_ID );
@@ -586,7 +589,7 @@ class SimpleCommentsLogger extends SimpleLogger
586
  $comment_text = wp_trim_words( $comment_text, 20 );
587
  $comment_text = wpautop( $comment_text );
588
  }
589
-
590
  // Keys to show
591
  $arr_plugin_keys = array();
592
  $comment_type = isset( $context["comment_type"] ) ? $context["comment_type"] : "";
@@ -621,7 +624,7 @@ class SimpleCommentsLogger extends SimpleLogger
621
 
622
  case "comment";
623
  default;
624
-
625
  $arr_plugin_keys = array(
626
  "comment_status" => _x("Status", "comments logger - detailed output comment status", "simple-history"),
627
  #"comment_type" => _x("Comment type", "comments logger - detailed output comment type", "simple-history"),
@@ -643,7 +646,7 @@ class SimpleCommentsLogger extends SimpleLogger
643
  $output .= "<table class='SimpleHistoryLogitem__keyValueTable'>";
644
 
645
  foreach ( $arr_plugin_keys as $key => $desc ) {
646
-
647
  switch ( $key ) {
648
 
649
  case "comment_content":
@@ -655,18 +658,18 @@ class SimpleCommentsLogger extends SimpleLogger
655
  case "comment_author":
656
  case "trackback_author":
657
  case "pingback_author":
658
-
659
  $desc_output = "";
660
 
661
  $desc_output .= esc_html( $context[ $key ] );
662
 
663
  /*
664
  if ( isset( $context["comment_author_email"] ) ) {
665
-
666
  $gravatar_email = $context["comment_author_email"];
667
  $avatar = $this->simpleHistory->get_avatar( $gravatar_email, 14, "blank" );
668
  $desc_output .= "<span class='SimpleCommentsLogger__gravatar'>{$avatar}</span>";
669
-
670
  }
671
  */
672
 
@@ -735,17 +738,17 @@ class SimpleCommentsLogger extends SimpleLogger
735
 
736
  // Add link to edit comment
737
  $comment_ID = isset( $context["comment_ID"] ) && is_numeric( $context["comment_ID"] ) ? (int) $context["comment_ID"] : false;
738
-
739
  if ( $comment_ID ) {
740
-
741
  // http://site.local/wp/wp-admin/comment.php?action=editcomment&c=
742
  $edit_comment_link = get_edit_comment_link( $comment_ID );
743
-
744
  // Edit link sometimes does not contain comment ID
745
  // Probably because comment has been removed or something
746
  // So only continue if link does not end with "=""
747
  if ( $edit_comment_link && $edit_comment_link[strlen($edit_comment_link)-1] !== "=" ) {
748
-
749
  $output .= sprintf(
750
  '
751
  <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
  */
384
  "comment_post_type" => $comment_parent_post->post_type,
385
  );
386
 
387
+ // Note: comment type is empty for normal comments
388
+ if (empty( $context["comment_type"] ) ) {
389
+ $context["comment_type"] = "comment";
390
+ }
391
+
392
  return $context;
393
 
394
  }
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);
487
  public function on_comment_post($comment_ID, $comment_approved) {
488
 
489
  $context = $this->get_context_for_comment($comment_ID);
490
+
491
  if ( ! $context ) {
492
  return;
493
  }
495
  $comment_data = get_comment( $comment_ID );
496
 
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;
515
 
516
  }
517
 
 
 
 
 
 
 
 
 
 
 
518
  $this->infoMessage(
519
  $message,
520
  $context
528
  * and link to comment
529
  */
530
  public function getLogRowPlainTextOutput($row) {
531
+
532
  $message = $row->message;
533
  $context = $row->context;
534
  $message_key = $context["_message_key"];
535
 
536
+ // Message is untranslated here, so get translated text
537
+ // Can't call parent __FUNCTION__ because it will interpolate too, which we don't want
538
+ if ( ! empty( $message_key ) ) {
539
+ $message = $this->messages[ $message_key ]["translated_text"];
540
+ }
541
+
542
  // Wrap links around {comment_post_title}
543
  $comment_post_ID = isset( $context["comment_post_ID"] ) ? (int) $context["comment_post_ID"] : null;
544
  if ( $comment_post_ID && $comment_post = get_post( $comment_post_ID ) ) {
546
  $edit_post_link = get_edit_post_link( $comment_post_ID );
547
 
548
  if ( $edit_post_link ) {
549
+
550
  $message = str_replace(
551
  '"{comment_post_title}"',
552
  "<a href='{$edit_post_link}'>\"{comment_post_title}\"</a>",
554
  );
555
 
556
  }
557
+
558
  }
559
 
560
+
561
  return $this->interpolate($message, $context);
562
 
563
  }
571
  $context = $row->context;
572
  $message_key = $context["_message_key"];
573
  $output = "";
574
+ #print_r($row);exit;
575
+ /*
576
  if ( 'spam' !== $commentdata['comment_approved'] ) { // If it's spam save it silently for later crunching
577
  if ( '0' == $commentdata['comment_approved'] ) { // comment not spam, but not auto-approved
578
  wp_notify_moderator( $comment_ID );
589
  $comment_text = wp_trim_words( $comment_text, 20 );
590
  $comment_text = wpautop( $comment_text );
591
  }
592
+
593
  // Keys to show
594
  $arr_plugin_keys = array();
595
  $comment_type = isset( $context["comment_type"] ) ? $context["comment_type"] : "";
624
 
625
  case "comment";
626
  default;
627
+
628
  $arr_plugin_keys = array(
629
  "comment_status" => _x("Status", "comments logger - detailed output comment status", "simple-history"),
630
  #"comment_type" => _x("Comment type", "comments logger - detailed output comment type", "simple-history"),
646
  $output .= "<table class='SimpleHistoryLogitem__keyValueTable'>";
647
 
648
  foreach ( $arr_plugin_keys as $key => $desc ) {
649
+
650
  switch ( $key ) {
651
 
652
  case "comment_content":
658
  case "comment_author":
659
  case "trackback_author":
660
  case "pingback_author":
661
+
662
  $desc_output = "";
663
 
664
  $desc_output .= esc_html( $context[ $key ] );
665
 
666
  /*
667
  if ( isset( $context["comment_author_email"] ) ) {
668
+
669
  $gravatar_email = $context["comment_author_email"];
670
  $avatar = $this->simpleHistory->get_avatar( $gravatar_email, 14, "blank" );
671
  $desc_output .= "<span class='SimpleCommentsLogger__gravatar'>{$avatar}</span>";
672
+
673
  }
674
  */
675
 
738
 
739
  // Add link to edit comment
740
  $comment_ID = isset( $context["comment_ID"] ) && is_numeric( $context["comment_ID"] ) ? (int) $context["comment_ID"] : false;
741
+
742
  if ( $comment_ID ) {
743
+
744
  // http://site.local/wp/wp-admin/comment.php?action=editcomment&c=
745
  $edit_comment_link = get_edit_comment_link( $comment_ID );
746
+
747
  // Edit link sometimes does not contain comment ID
748
  // Probably because comment has been removed or something
749
  // So only continue if link does not end with "=""
750
  if ( $edit_comment_link && $edit_comment_link[strlen($edit_comment_link)-1] !== "=" ) {
751
+
752
  $output .= sprintf(
753
  '
754
  <tr>
loggers/SimpleCoreUpdatesLogger.php CHANGED
@@ -27,7 +27,7 @@ class SimpleCoreUpdatesLogger extends SimpleLogger
27
  "capability" => "update_core",
28
  "messages" => array(
29
  'core_updated' => __('Updated WordPress from {prev_version} to {new_version}', 'simple-history'),
30
- 'core_auto_updated' => __('WordPress auto-updated from {prev_version} to {new_version}', 'simple-history')
31
  ),
32
  "labels" => array(
33
  "search" => array(
27
  "capability" => "update_core",
28
  "messages" => array(
29
  'core_updated' => __('Updated WordPress from {prev_version} to {new_version}', 'simple-history'),
30
+ 'core_auto_updated' => __('WordPress auto-updated to {new_version} from {prev_version}', 'simple-history')
31
  ),
32
  "labels" => array(
33
  "search" => array(
loggers/SimpleLogger.php CHANGED
@@ -8,8 +8,7 @@
8
  *
9
  * @link https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md PSR-3 specification
10
  */
11
- class SimpleLogger
12
- {
13
 
14
  /**
15
  * Unique slug for this logger
@@ -46,10 +45,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 +63,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,13 +77,13 @@ 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(
85
  // No pre-defined variants
86
  // when adding messages __() or _x() must be used
87
- )
88
 
89
  );
90
 
@@ -106,12 +105,11 @@ class SimpleLogger
106
  }
107
 
108
  /**
109
- * Interpolates context values into the message placeholders.
110
- */
111
- function interpolate($message, $context = array())
112
- {
113
 
114
- if ( ! is_array($context) ) {
115
  return $message;
116
  }
117
 
@@ -133,80 +131,84 @@ 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
 
143
- switch ( $initiator ) {
144
 
145
  case "wp":
146
  $initiator_html .= '<strong class="SimpleHistoryLogitem__inlineDivided">WordPress</strong> ';
147
  break;
148
 
 
 
 
 
149
  // wp_user = wordpress uses, but user may have been deleted since log entry was added
150
  case "wp_user":
151
 
152
- $user_id = isset( $row->context["_user_id"] ) ? $row->context["_user_id"] : null;
153
 
154
- if ( $user_id > 0 && $user = get_user_by("id", $user_id) ) {
155
 
156
  // Sender is user and user still exists
157
- $is_current_user = ( $user_id == get_current_user_id() ) ? true : false;
158
 
159
  // get user role, as done in user-edit.php
160
- $user_roles = array_intersect( array_values( $user->roles ), array_keys( get_editable_roles() ) );
161
- $user_role = array_shift( $user_roles );
162
  $user_display_name = $user->display_name;
163
 
164
  $tmpl_initiator_html = '
165
  <strong class="SimpleHistoryLogitem__inlineDivided">%3$s</strong>
166
  <span class="SimpleHistoryLogitem__inlineDivided SimpleHistoryLogitem__headerEmail">%2$s</span>
167
- ';
168
 
169
  // If user who logged this is the currently logged in user
170
  // we replace name and email with just "You"
171
  if ($is_current_user) {
172
  $tmpl_initiator_html = '
173
  <strong class="SimpleHistoryLogitem__inlineDivided">%5$s</strong>
174
- ';
175
  }
176
 
177
  /**
178
- * Filter the format for the user output
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
 
186
  $initiator_html .= sprintf(
187
  $tmpl_initiator_html,
188
- esc_html( $user->user_login ), // 1
189
- esc_html( $user->user_email ), // 2
190
- esc_html( $user_display_name ), // 3
191
- $user_role, // 4
192
- _x("You", "header output when initiator is the currently logged in user", "simple-history") // 5
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"] ),
208
- esc_html( $context["_user_email"] ),
209
- esc_html( $context["_user_login"] )
210
  );
211
 
212
  }
@@ -215,19 +217,19 @@ class SimpleLogger
215
 
216
  case "web_user":
217
 
218
- if ( empty( $context["_server_remote_addr"] ) ) {
219
 
220
- $initiator_html .= "<strong class='SimpleHistoryLogitem__inlineDivided'>" . __("Anonymous web user") . "</strong> ";
221
 
222
  } else {
223
 
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> ";
232
 
233
  // $initiator_html .= "<strong>" . __("<br><br>Unknown user from {$context["_server_remote_addr"]}") . "</strong>";
@@ -249,67 +251,66 @@ class SimpleLogger
249
  break;
250
 
251
  default:
252
- $initiator_html .= "<strong class='SimpleHistoryLogitem__inlineDivided'>" . esc_html( $initiator ) . "</strong>";
253
 
254
  }
255
 
256
  /**
257
- * Filter generated html for the initiator row header html
258
- *
259
- * @since 2.0
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
-
267
  // HTML for date
268
  // Date (should...) always exist
269
  // http://developers.whatwg.org/text-level-semantics.html#the-time-element
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
277
- *
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
 
285
  /**
286
- * Filter how many seconds as most that can pass since an
287
- * event occured to show "just now" instead of exact date
288
- *
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
 
296
- if ( time() - $date_datetime->getTimestamp() <= $time_ago_just_now_max_time ) {
297
 
298
  // show "just now" if event is very recent
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 */
312
- $str_when = sprintf( __( '%1$s ago', 'simple-history' ), $date_human_time_diff );
313
 
314
  }
315
 
@@ -330,10 +331,10 @@ class SimpleLogger
330
  // SimpleHistoryLogitem--loglevel-warning
331
  /*
332
  $level_html = sprintf(
333
- '<span class="SimpleHistoryLogitem--logleveltag SimpleHistoryLogitem--logleveltag-%1$s">%1$s</span>',
334
- $row->level
335
  );
336
- */
337
 
338
  // Glue together final result
339
  $template = '%1$s%2$s';
@@ -349,13 +350,13 @@ class SimpleLogger
349
  );
350
 
351
  /**
352
- * Filter generated html for the log row header
353
- *
354
- * @since 2.0
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,38 +380,41 @@ 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
 
386
  // Message is translated here, but translation must be added in
387
  // plain text before
388
 
389
- if ( empty( $message_key ) ) {
390
 
391
- // Leave message alone
 
 
 
392
 
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);
405
 
406
  /**
407
- * Filter generated output for plain text output
408
- *
409
- * @since 2.0
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;
@@ -429,40 +433,40 @@ class SimpleLogger
429
 
430
  $initiator = $row->initiator;
431
 
432
- switch ( $initiator ) {
433
 
434
  // wp_user = wordpress uses, but user may have been deleted since log entry was added
435
  case "wp_user":
436
 
437
  $user_id = isset($row->context["_user_id"]) ? $row->context["_user_id"] : null;
438
 
439
- if ( $user_id > 0 && $user = get_user_by("id", $user_id) ) {
440
 
441
  // Sender was user
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
 
457
  }
458
  /**
459
- * Filter generated output for row image (sender image)
460
- *
461
- * @since 2.0
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 +478,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) {
@@ -482,20 +486,19 @@ class SimpleLogger
482
  $html = "";
483
 
484
  /**
485
- * Filter generated output for details
486
- *
487
- * @since 2.0
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;
495
 
496
  }
497
 
498
-
499
  /**
500
  * System is unusable.
501
  *
@@ -503,13 +506,12 @@ class SimpleLogger
503
  * @param array $context
504
  * @return null
505
  */
506
- public static function emergency($message, array $context = array())
507
- {
508
 
509
  return $this->log(SimpleLoggerLogLevels::EMERGENCY, $message, $context);
510
 
511
  }
512
-
513
  /**
514
  * System is unusable.
515
  *
@@ -517,18 +519,50 @@ class SimpleLogger
517
  * @param array $context
518
  * @return null
519
  */
520
- public function emergencyMessage($message, array $context = array())
521
- {
 
 
 
522
 
523
- if ( ! isset( $this->messages[ $message ]["untranslated_text"] ) ) {
 
 
 
 
 
 
 
 
 
 
 
524
  return;
525
  }
526
 
527
- $context["_message_key"] = $message;
528
- $message = $this->messages[ $message ]["untranslated_text"];
529
-
530
- $this->log(SimpleLoggerLogLevels::EMERGENCY, $message, $context);
 
 
 
 
 
 
 
 
 
531
 
 
 
 
 
 
 
 
 
 
532
  }
533
 
534
 
@@ -539,10 +573,9 @@ class SimpleLogger
539
  * @param array $context
540
  * @return null
541
  */
542
- public static function alert($message, array $context = array())
543
- {
544
  return $this->log(SimpleLoggerLogLevels::ALERT, $message, $context);
545
-
546
  }
547
 
548
  /**
@@ -552,21 +585,12 @@ class SimpleLogger
552
  * @param array $context
553
  * @return null
554
  */
555
- public function alertMessage($message, array $context = array())
556
- {
557
 
558
- if ( ! isset( $this->messages[ $message ]["untranslated_text"] ) ) {
559
- return;
560
- }
561
 
562
- $context["_message_key"] = $message;
563
- $message = $this->messages[ $message ]["untranslated_text"];
564
-
565
- $this->log(SimpleLoggerLogLevels::ALERT, $message, $context);
566
-
567
  }
568
 
569
-
570
  /**
571
  * Critical conditions.
572
  *
@@ -576,8 +600,7 @@ class SimpleLogger
576
  * @param array $context
577
  * @return null
578
  */
579
- public static function critical($message, array $context = array())
580
- {
581
 
582
  return $this->log(SimpleLoggerLogLevels::CRITICAL, $message, $context);
583
 
@@ -590,20 +613,18 @@ class SimpleLogger
590
  * @param array $context
591
  * @return null
592
  */
593
- public function criticalMessage($message, array $context = array())
594
- {
595
 
596
- if ( ! isset( $this->messages[ $message ]["untranslated_text"] ) ) {
597
  return;
598
  }
599
 
600
  $context["_message_key"] = $message;
601
- $message = $this->messages[ $message ]["untranslated_text"];
602
 
603
  $this->log(SimpleLoggerLogLevels::CRITICAL, $message, $context);
604
-
605
- }
606
 
 
607
 
608
  /**
609
  * Runtime errors that do not require immediate action but should typically
@@ -613,11 +634,10 @@ class SimpleLogger
613
  * @param array $context
614
  * @return null
615
  */
616
- public function error($message, array $context = array())
617
- {
618
 
619
  return $this->log(SimpleLoggerLogLevels::ERROR, $message, $context);
620
-
621
  }
622
 
623
  /**
@@ -628,21 +648,12 @@ class SimpleLogger
628
  * @param array $context
629
  * @return null
630
  */
631
- public function errorMessage($message, array $context = array())
632
- {
633
-
634
- if ( ! isset( $this->messages[ $message ]["untranslated_text"] ) ) {
635
- return;
636
- }
637
 
638
- $context["_message_key"] = $message;
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
  *
@@ -653,13 +664,12 @@ class SimpleLogger
653
  * @param array $context
654
  * @return null
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
  *
@@ -667,21 +677,12 @@ class SimpleLogger
667
  * @param array $context
668
  * @return null
669
  */
670
- public function warningMessage($message, array $context = array())
671
- {
672
-
673
- if ( ! isset( $this->messages[ $message ]["untranslated_text"] ) ) {
674
- return;
675
- }
676
 
677
- $context["_message_key"] = $message;
678
- $message = $this->messages[ $message ]["untranslated_text"];
679
 
680
- $this->log(SimpleLoggerLogLevels::WARNING, $message, $context);
681
-
682
  }
683
 
684
-
685
  /**
686
  * Normal but significant events.
687
  *
@@ -689,13 +690,12 @@ class SimpleLogger
689
  * @param array $context
690
  * @return null
691
  */
692
- public function notice($message, array $context = array())
693
- {
694
 
695
  return $this->log(SimpleLoggerLogLevels::NOTICE, $message, $context);
696
 
697
  }
698
-
699
  /**
700
  * Normal but significant events.
701
  *
@@ -703,21 +703,12 @@ class SimpleLogger
703
  * @param array $context
704
  * @return null
705
  */
706
- public function noticeMessage($message, array $context = array())
707
- {
708
-
709
- if ( ! isset( $this->messages[ $message ]["untranslated_text"] ) ) {
710
- return;
711
- }
712
 
713
- $context["_message_key"] = $message;
714
- $message = $this->messages[ $message ]["untranslated_text"];
715
 
716
- $this->log(SimpleLoggerLogLevels::NOTICE, $message, $context);
717
-
718
  }
719
 
720
-
721
  /**
722
  * Interesting events.
723
  *
@@ -727,11 +718,10 @@ class SimpleLogger
727
  * @param array $context
728
  * @return null
729
  */
730
- public function info($message, array $context = array())
731
- {
732
 
733
  return $this->log(SimpleLoggerLogLevels::INFO, $message, $context);
734
-
735
  }
736
 
737
  /**
@@ -743,20 +733,12 @@ class SimpleLogger
743
  * @param array $context
744
  * @return null
745
  */
746
- public function infoMessage($message, array $context = array())
747
- {
748
-
749
- if ( ! isset( $this->messages[ $message ]["untranslated_text"] ) ) {
750
- return;
751
- }
752
 
753
- $context["_message_key"] = $message;
754
- $message = $this->messages[ $message ]["untranslated_text"];
755
 
756
- $this->log(SimpleLoggerLogLevels::INFO, $message, $context);
757
-
758
  }
759
-
760
  /**
761
  * Detailed debug information.
762
  *
@@ -764,11 +746,10 @@ class SimpleLogger
764
  * @param array $context
765
  * @return null
766
  */
767
- public function debug($message, array $context = array())
768
- {
769
 
770
  return $this->log(SimpleLoggerLogLevels::DEBUG, $message, $context);
771
-
772
  }
773
 
774
  /**
@@ -778,20 +759,12 @@ class SimpleLogger
778
  * @param array $context
779
  * @return null
780
  */
781
- public function debugMessage($message, array $context = array())
782
- {
783
-
784
- if ( ! isset( $this->messages[ $message ]["untranslated_text"] ) ) {
785
- return;
786
- }
787
 
788
- $context["_message_key"] = $message;
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
  *
@@ -800,21 +773,45 @@ class SimpleLogger
800
  * @param array $context
801
  * @return null
802
  */
803
- public function log($level, $message, array $context = array())
804
- {
805
-
806
  global $wpdb;
807
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
808
  /**
809
- * Filter arguments passed to log funtion
810
- *
811
- * @since 2.0
812
- *
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?
820
  * Some info here:
@@ -822,7 +819,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);
@@ -830,14 +827,14 @@ class SimpleLogger
830
  $db_table = $wpdb->prefix . SimpleHistory::DBTABLE;
831
 
832
  /**
833
- * Filter db table used for simple history events
834
- *
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,
@@ -847,23 +844,23 @@ class SimpleLogger
847
 
848
  // Allow date to be override
849
  // Date must be in format 'Y-m-d H:i:s'
850
- if ( isset( $context["_date"] ) ) {
851
  $data["date"] = $context["_date"];
852
  unset($context["_date"]);
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
860
  // by always adding logger slug
861
  $occasions_data = array(
862
  "_occasionsID" => $context["_occasionsID"],
863
- "_loggerSlug" => $this->slug
864
  );
865
- $occasions_id = md5( json_encode($occasions_data) );
866
- unset( $context["_occasionsID"] );
867
 
868
  } else {
869
 
@@ -874,7 +871,7 @@ class SimpleLogger
874
  unset($occasions_data["date"]);
875
 
876
  //sf_d($occasions_data);exit;
877
- $occasions_id = md5( json_encode($occasions_data) );
878
 
879
  }
880
 
@@ -883,12 +880,12 @@ class SimpleLogger
883
  // Log event type, defaults to other if not set
884
  /*
885
  if ( isset( $context["_type"] ) ) {
886
- $data["type"] = $context["_type"];
887
- unset( $context["_type"] );
888
  } else {
889
- $data["type"] = SimpleLoggerLogTypes::OTHER;
890
  }
891
- */
892
 
893
  // Log initiator, defaults to current user if exists, or other if not user exist
894
  if ( isset( $context["_initiator"] ) ) {
@@ -896,21 +893,22 @@ 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
 
909
  $current_user = wp_get_current_user();
910
 
911
- if ( isset( $current_user->ID ) && $current_user->ID) {
912
 
913
- $data["initiator"] = SimpleLoggerLogInitiators::WP_USER;;
914
  $context["_user_id"] = $current_user->ID;
915
  $context["_user_login"] = $current_user->user_login;
916
  $context["_user_email"] = $current_user->user_email;
@@ -924,60 +922,79 @@ class SimpleLogger
924
 
925
  // Seems to be wp cron running and doing this
926
  $data["initiator"] = SimpleLoggerLogInitiators::WORDPRESS;
927
- $context["_wordpress_cron_running"] = true;
 
 
 
 
 
 
 
 
 
 
 
 
928
 
929
  }
930
 
931
  }
932
 
 
 
 
 
 
 
 
933
  /**
934
- * Filter data to be saved to db
935
- *
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
943
  // sf_d($db_table, '$db_table');exit;
944
- $result = $wpdb->insert( $db_table, $data );
945
 
946
  // Only save context if able to store row
947
- if ( false === $result ) {
948
 
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
 
957
  /**
958
- * Filter table name for contexts
959
- *
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) ) {
967
  $context = array();
968
  }
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
976
- if ( function_exists("wp_get_current_user") ) {
977
 
978
  $current_user = wp_get_current_user();
979
 
980
- if ( isset( $current_user->ID ) && $current_user->ID) {
981
  $context["_user_id"] = $current_user->ID;
982
  $context["_user_login"] = $current_user->user_login;
983
  $context["_user_email"] = $current_user->user_email;
@@ -986,21 +1003,63 @@ 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
997
  // Also good to always have!
998
- if ( ! isset( $context["_server_http_referer"] ) && isset( $_SERVER["HTTP_REFERER"] ) ) {
999
  $context["_server_http_referer"] = $_SERVER["HTTP_REFERER"];
1000
  }
1001
 
1002
  // Insert all context values into db
1003
- foreach ( $context as $key => $value ) {
1004
 
1005
  $data = array(
1006
  "history_id" => $history_inserted_id,
@@ -1008,59 +1067,74 @@ class SimpleLogger
1008
  "value" => $value,
1009
  );
1010
 
1011
- $result = $wpdb->insert( $db_table_contexts, $data );
1012
 
1013
  }
1014
 
1015
  }
1016
-
1017
  $this->lastInsertID = $history_inserted_id;
1018
 
 
 
1019
  // Return $this so we can chain methods
1020
  return $this;
1021
 
1022
  } // log
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() {
1030
  /*
1031
- ?>
1032
- <style>
1033
- body {
1034
- border: 2px solid red;
1035
- }
1036
- </style>
1037
- <?php
1038
- */
1039
  }
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() {
1047
  /*
1048
- ?>
1049
- <script>
1050
- console.log("This is outputed in the footer");
1051
- </script>
1052
- <?php
1053
- */
1054
  }
1055
-
1056
  }
1057
 
1058
  /**
1059
  * Describes log initiator, i.e. who caused to log event to happend
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';
@@ -1073,11 +1147,13 @@ class SimpleLoggerLogInitiators
1073
  // WordPress core or plugins updated automatically via wp-cron
1074
  const WORDPRESS = "wp";
1075
 
 
 
 
1076
  // I dunno
1077
  const OTHER = 'other';
1078
  }
1079
 
1080
-
1081
  /**
1082
  * Describes log event type
1083
  * Based on the CRUD-types
@@ -1085,8 +1161,7 @@ class SimpleLoggerLogInitiators
1085
  * More may be added later on if needed
1086
  * Note: not in use at the moment
1087
  */
1088
- class SimpleLoggerLogTypes
1089
- {
1090
  const CREATE = 'create';
1091
  const READ = 'read';
1092
  const UPDATE = 'update';
@@ -1097,8 +1172,7 @@ class SimpleLoggerLogTypes
1097
  /**
1098
  * Describes log levels
1099
  */
1100
- class SimpleLoggerLogLevels
1101
- {
1102
  const EMERGENCY = 'emergency';
1103
  const ALERT = 'alert';
1104
  const CRITICAL = 'critical';
@@ -1108,4 +1182,3 @@ class SimpleLoggerLogLevels
1108
  const INFO = 'info';
1109
  const DEBUG = 'debug';
1110
  }
1111
-
8
  *
9
  * @link https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md PSR-3 specification
10
  */
11
+ class SimpleLogger {
 
12
 
13
  /**
14
  * Unique slug for this logger
45
  public function __construct($simpleHistory) {
46
 
47
  global $wpdb;
48
+
49
  $this->db_table = $wpdb->prefix . SimpleHistory::DBTABLE;
50
  $this->db_table_contexts = $wpdb->prefix . SimpleHistory::DBTABLE_CONTEXTS;
51
+
52
  $this->simpleHistory = $simpleHistory;
53
 
54
  }
63
 
64
  /**
65
  * Get array with information about this logger
66
+ *
67
  * @return array
68
  */
69
  function getInfo() {
70
 
71
  $arr_info = array(
72
+
73
  // The logger slug. Defaulting to the class name is nice and logical I think
74
  "slug" => __CLASS__,
75
 
77
  // an admin what your logger is used for
78
  "name" => "SimpleLogger",
79
  "description" => "The built in logger for Simple History",
80
+
81
  // Capability required to view log entries from this logger
82
  "capability" => "edit_pages",
83
  "messages" => array(
84
  // No pre-defined variants
85
  // when adding messages __() or _x() must be used
86
+ ),
87
 
88
  );
89
 
105
  }
106
 
107
  /**
108
+ * Interpolates context values into the message placeholders.
109
+ */
110
+ function interpolate($message, $context = array()) {
 
111
 
112
+ if (!is_array($context)) {
113
  return $message;
114
  }
115
 
131
  * @return string HTML
132
  */
133
  function getLogRowHeaderOutput($row) {
134
+
135
  // HTML for initiator
136
  $initiator_html = "";
137
+
138
  $initiator = $row->initiator;
139
  $context = $row->context;
140
 
141
+ switch ($initiator) {
142
 
143
  case "wp":
144
  $initiator_html .= '<strong class="SimpleHistoryLogitem__inlineDivided">WordPress</strong> ';
145
  break;
146
 
147
+ case "wp_cli":
148
+ $initiator_html .= '<strong class="SimpleHistoryLogitem__inlineDivided">WP-CLI</strong> ';
149
+ break;
150
+
151
  // wp_user = wordpress uses, but user may have been deleted since log entry was added
152
  case "wp_user":
153
 
154
+ $user_id = isset($row->context["_user_id"]) ? $row->context["_user_id"] : null;
155
 
156
+ if ($user_id > 0 && $user = get_user_by("id", $user_id)) {
157
 
158
  // Sender is user and user still exists
159
+ $is_current_user = ($user_id == get_current_user_id()) ? true : false;
160
 
161
  // get user role, as done in user-edit.php
162
+ $user_roles = array_intersect(array_values($user->roles), array_keys(get_editable_roles()));
163
+ $user_role = array_shift($user_roles);
164
  $user_display_name = $user->display_name;
165
 
166
  $tmpl_initiator_html = '
167
  <strong class="SimpleHistoryLogitem__inlineDivided">%3$s</strong>
168
  <span class="SimpleHistoryLogitem__inlineDivided SimpleHistoryLogitem__headerEmail">%2$s</span>
169
+ ' ;
170
 
171
  // If user who logged this is the currently logged in user
172
  // we replace name and email with just "You"
173
  if ($is_current_user) {
174
  $tmpl_initiator_html = '
175
  <strong class="SimpleHistoryLogitem__inlineDivided">%5$s</strong>
176
+ ' ;
177
  }
178
 
179
  /**
180
+ * Filter the format for the user output
181
+ *
182
+ * @since 2.0
183
+ *
184
+ * @param string $format.
185
+ */
186
+ $tmpl_initiator_html = apply_filters("simple_history/header_initiator_html_existing_user", $tmpl_initiator_html);
187
 
188
  $initiator_html .= sprintf(
189
  $tmpl_initiator_html,
190
+ esc_html($user->user_login), // 1
191
+ esc_html($user->user_email), // 2
192
+ esc_html($user_display_name), // 3
193
+ $user_role, // 4
194
+ _x("You", "header output when initiator is the currently logged in user", "simple-history") // 5
195
  );
196
 
197
  } else if ($user_id > 0) {
198
+
199
  // Sender was a user, but user is deleted now
200
  // output all info we have
201
  // _user_id
202
  // _username
203
  // _user_login
204
  // _user_email
205
+ $initiator_html .= sprintf(
206
+ '<strong class="SimpleHistoryLogitem__inlineDivided">' .
207
+ __('Deleted user (had id %1$s, email %2$s, login %3$s)', "simple-history") .
208
+ '</strong>',
209
+ esc_html($context["_user_id"]),
210
+ esc_html($context["_user_email"]),
211
+ esc_html($context["_user_login"])
212
  );
213
 
214
  }
217
 
218
  case "web_user":
219
 
220
+ if (empty($context["_server_remote_addr"])) {
221
 
222
+ $initiator_html .= "<strong class='SimpleHistoryLogitem__inlineDivided'>" . __("Anonymous web user", "simple-history") . "</strong> ";
223
 
224
  } else {
225
 
226
+ $iplookup_link = sprintf('https://ipinfo.io/%1$s', esc_attr($context["_server_remote_addr"]));
227
 
228
  $initiator_html .= "<strong class='SimpleHistoryLogitem__inlineDivided SimpleHistoryLogitem__anonUserWithIp'>";
229
+ $initiator_html .= sprintf(
230
+ __('Anonymous user from %1$s', "simple-history"),
231
+ "<a target='_blank' href={$iplookup_link} class='SimpleHistoryLogitem__anonUserWithIp__theIp'>" . esc_attr($context["_server_remote_addr"]) . "</a>"
232
+ );
233
  $initiator_html .= "</strong> ";
234
 
235
  // $initiator_html .= "<strong>" . __("<br><br>Unknown user from {$context["_server_remote_addr"]}") . "</strong>";
251
  break;
252
 
253
  default:
254
+ $initiator_html .= "<strong class='SimpleHistoryLogitem__inlineDivided'>" . esc_html($initiator) . "</strong>";
255
 
256
  }
257
 
258
  /**
259
+ * Filter generated html for the initiator row header html
260
+ *
261
+ * @since 2.0
262
+ *
263
+ * @param string $initiator_html
264
+ * @param object $row Log row
265
+ */
266
  $initiator_html = apply_filters("simple_history/row_header_initiator_output", $initiator_html, $row);
267
 
 
268
  // HTML for date
269
  // Date (should...) always exist
270
  // http://developers.whatwg.org/text-level-semantics.html#the-time-element
271
  $date_html = "";
272
  $str_when = "";
273
  $date_datetime = new DateTime($row->date);
274
+
275
  /**
276
+ * Filter how many seconds as most that can pass since an
277
+ * event occured to show "nn minutes ago" (human diff time-format) instead of exact date
278
+ *
279
+ * @since 2.0
280
+ *
281
+ * @param int $time_ago_max_time Seconds
282
+ */
283
  $time_ago_max_time = DAY_IN_SECONDS * 2;
284
  $time_ago_max_time = apply_filters("simple_history/header_time_ago_max_time", $time_ago_max_time);
285
 
286
  /**
287
+ * Filter how many seconds as most that can pass since an
288
+ * event occured to show "just now" instead of exact date
289
+ *
290
+ * @since 2.0
291
+ *
292
+ * @param int $time_ago_max_time Seconds
293
+ */
294
  $time_ago_just_now_max_time = 30;
295
  $time_ago_just_now_max_time = apply_filters("simple_history/header_just_now_max_time", $time_ago_just_now_max_time);
296
 
297
+ if (time() - $date_datetime->getTimestamp() <= $time_ago_just_now_max_time) {
298
 
299
  // show "just now" if event is very recent
300
  $str_when = __("Just now", "simple-history");
301
 
302
+ } else if (time() - $date_datetime->getTimestamp() > $time_ago_max_time) {
303
+
304
  /* translators: Date format for log row header, see http://php.net/date */
305
+ $datef = __('M j, Y \a\t G:i', "simple-history");
306
+ $str_when = date_i18n($datef, $date_datetime->getTimestamp());
307
 
308
  } else {
309
+
310
  // Show "nn minutes ago" when event is xx seconds ago or earlier
311
+ $date_human_time_diff = human_time_diff($date_datetime->getTimestamp(), time());
312
  /* translators: 1: last modified date and time in human time diff-format */
313
+ $str_when = sprintf(__('%1$s ago', 'simple-history'), $date_human_time_diff);
314
 
315
  }
316
 
331
  // SimpleHistoryLogitem--loglevel-warning
332
  /*
333
  $level_html = sprintf(
334
+ '<span class="SimpleHistoryLogitem--logleveltag SimpleHistoryLogitem--logleveltag-%1$s">%1$s</span>',
335
+ $row->level
336
  );
337
+ */
338
 
339
  // Glue together final result
340
  $template = '%1$s%2$s';
350
  );
351
 
352
  /**
353
+ * Filter generated html for the log row header
354
+ *
355
+ * @since 2.0
356
+ *
357
+ * @param string $html
358
+ * @param object $row Log row
359
+ */
360
  $html = apply_filters("simple_history/row_header_output", $html, $row);
361
 
362
  return $html;
380
  * Jessie James: Edited post "About the company"
381
  */
382
  public function getLogRowPlainTextOutput($row) {
383
+
384
  $message = $row->message;
385
  $message_key = $row->context["_message_key"];
386
 
387
  // Message is translated here, but translation must be added in
388
  // plain text before
389
 
390
+ if (empty( $message_key )) {
391
 
392
+ // Message key did not exist, so check if we should translate using textdomain
393
+ if ( ! empty( $row->context["_gettext_domain"] ) ) {
394
+ $message = __( $message, $row->context["_gettext_domain"] );
395
+ }
396
 
397
  } else {
398
 
399
+ $message = $this->messages[$message_key]["translated_text"];
400
+
401
  }
 
 
402
 
403
+ $html = $this->interpolate($message, $row->context);
404
+
405
+ // All messages are escaped by default.
406
  // If you need unescaped output override this method
407
  // in your own logger
408
  $html = esc_html($html);
409
 
410
  /**
411
+ * Filter generated output for plain text output
412
+ *
413
+ * @since 2.0
414
+ *
415
+ * @param string $html
416
+ * @param object $row Log row
417
+ */
418
  $html = apply_filters("simple_history/row_plain_text_output", $html, $row);
419
 
420
  return $html;
433
 
434
  $initiator = $row->initiator;
435
 
436
+ switch ($initiator) {
437
 
438
  // wp_user = wordpress uses, but user may have been deleted since log entry was added
439
  case "wp_user":
440
 
441
  $user_id = isset($row->context["_user_id"]) ? $row->context["_user_id"] : null;
442
 
443
+ if ($user_id > 0 && $user = get_user_by("id", $user_id)) {
444
 
445
  // Sender was user
446
+ $sender_image_html = $this->simpleHistory->get_avatar($user->user_email, $sender_image_size);
447
 
448
  } else if ($user_id > 0) {
449
+
450
  // Sender was a user, but user is deleted now
451
+ $sender_image_html = $this->simpleHistory->get_avatar("", $sender_image_size);
452
 
453
  } else {
454
 
455
+ $sender_image_html = $this->simpleHistory->get_avatar("", $sender_image_size);
456
 
457
+ }
458
 
459
  break;
460
 
461
  }
462
  /**
463
+ * Filter generated output for row image (sender image)
464
+ *
465
+ * @since 2.0
466
+ *
467
+ * @param string $sender_image_html
468
+ * @param object $row Log row
469
+ */
470
  $sender_image_html = apply_filters("simple_history/row_sender_image_output", $sender_image_html, $row);
471
 
472
  return $sender_image_html;
478
  * Example usage is if a user has uploaded an image then a
479
  * thumbnail of that image can bo outputed here
480
  *
481
+ * @param object $row
482
  * @return string HTML-formatted output
483
  */
484
  public function getLogRowDetailsOutput($row) {
486
  $html = "";
487
 
488
  /**
489
+ * Filter generated output for details
490
+ *
491
+ * @since 2.0
492
+ *
493
+ * @param string $html
494
+ * @param object $row Log row
495
+ */
496
  $html = apply_filters("simple_history/row_details_output", $html, $row);
497
 
498
  return $html;
499
 
500
  }
501
 
 
502
  /**
503
  * System is unusable.
504
  *
506
  * @param array $context
507
  * @return null
508
  */
509
+ public static function emergency($message, array $context = array()) {
 
510
 
511
  return $this->log(SimpleLoggerLogLevels::EMERGENCY, $message, $context);
512
 
513
  }
514
+
515
  /**
516
  * System is unusable.
517
  *
519
  * @param array $context
520
  * @return null
521
  */
522
+ public function emergencyMessage($message, array $context = array()) {
523
+
524
+ return $this->logByMessageKey(SimpleLoggerLogLevels::EMERGENCY, $message, $context);
525
+
526
+ }
527
 
528
+ /**
529
+ * Log with message
530
+ * Called from infoMessage(), errorMessage(), and so on
531
+ *
532
+ * Call like this:
533
+ *
534
+ * return $this->logByMessageKey(SimpleLoggerLogLevels::EMERGENCY, $message, $context);
535
+ */
536
+ private function logByMessageKey($SimpleLoggerLogLevelsLevel, $messageKey, $context) {
537
+
538
+ // When logging by message then the key must exist
539
+ if ( ! isset( $this->messages[ $messageKey ]["untranslated_text"] ) ) {
540
  return;
541
  }
542
 
543
+ /**
544
+ * Filter so plugins etc. can shortut logging
545
+ *
546
+ * @since 2.0.20
547
+ *
548
+ * @param true yes, we default to do the logging
549
+ * @param string logger slug
550
+ * @param string messageKey
551
+ * @param string log level
552
+ * @param array context
553
+ * @return bool false to abort logging
554
+ */
555
+ $doLog = apply_filters("simple_history/simple_logger/log_message_key", true, $this->slug, $messageKey, $SimpleLoggerLogLevelsLevel, $context);
556
 
557
+ if ( ! $doLog ) {
558
+ return;
559
+ }
560
+
561
+ $context["_message_key"] = $messageKey;
562
+ $message = $this->messages[ $messageKey ]["untranslated_text"];
563
+
564
+ $this->log( $SimpleLoggerLogLevelsLevel, $message, $context );
565
+
566
  }
567
 
568
 
573
  * @param array $context
574
  * @return null
575
  */
576
+ public static function alert($message, array $context = array()) {
 
577
  return $this->log(SimpleLoggerLogLevels::ALERT, $message, $context);
578
+
579
  }
580
 
581
  /**
585
  * @param array $context
586
  * @return null
587
  */
588
+ public function alertMessage($message, array $context = array()) {
 
589
 
590
+ return $this->logByMessageKey(SimpleLoggerLogLevels::ALERT, $message, $context);
 
 
591
 
 
 
 
 
 
592
  }
593
 
 
594
  /**
595
  * Critical conditions.
596
  *
600
  * @param array $context
601
  * @return null
602
  */
603
+ public static function critical($message, array $context = array()) {
 
604
 
605
  return $this->log(SimpleLoggerLogLevels::CRITICAL, $message, $context);
606
 
613
  * @param array $context
614
  * @return null
615
  */
616
+ public function criticalMessage($message, array $context = array()) {
 
617
 
618
+ if (!isset($this->messages[$message]["untranslated_text"])) {
619
  return;
620
  }
621
 
622
  $context["_message_key"] = $message;
623
+ $message = $this->messages[$message]["untranslated_text"];
624
 
625
  $this->log(SimpleLoggerLogLevels::CRITICAL, $message, $context);
 
 
626
 
627
+ }
628
 
629
  /**
630
  * Runtime errors that do not require immediate action but should typically
634
  * @param array $context
635
  * @return null
636
  */
637
+ public function error($message, array $context = array()) {
 
638
 
639
  return $this->log(SimpleLoggerLogLevels::ERROR, $message, $context);
640
+
641
  }
642
 
643
  /**
648
  * @param array $context
649
  * @return null
650
  */
651
+ public function errorMessage($message, array $context = array()) {
 
 
 
 
 
652
 
653
+ return $this->logByMessageKey(SimpleLoggerLogLevels::ERROR, $message, $context);
 
654
 
 
 
655
  }
656
 
 
657
  /**
658
  * Exceptional occurrences that are not errors.
659
  *
664
  * @param array $context
665
  * @return null
666
  */
667
+ public function warning($message, array $context = array()) {
668
+
 
669
  return $this->log(SimpleLoggerLogLevels::WARNING, $message, $context);
670
 
671
  }
672
+
673
  /**
674
  * Exceptional occurrences that are not errors.
675
  *
677
  * @param array $context
678
  * @return null
679
  */
680
+ public function warningMessage($message, array $context = array()) {
 
 
 
 
 
681
 
682
+ return $this->logByMessageKey(SimpleLoggerLogLevels::WARNING, $message, $context);
 
683
 
 
 
684
  }
685
 
 
686
  /**
687
  * Normal but significant events.
688
  *
690
  * @param array $context
691
  * @return null
692
  */
693
+ public function notice($message, array $context = array()) {
 
694
 
695
  return $this->log(SimpleLoggerLogLevels::NOTICE, $message, $context);
696
 
697
  }
698
+
699
  /**
700
  * Normal but significant events.
701
  *
703
  * @param array $context
704
  * @return null
705
  */
706
+ public function noticeMessage($message, array $context = array()) {
 
 
 
 
 
707
 
708
+ return $this->logByMessageKey(SimpleLoggerLogLevels::NOTICE, $message, $context);
 
709
 
 
 
710
  }
711
 
 
712
  /**
713
  * Interesting events.
714
  *
718
  * @param array $context
719
  * @return null
720
  */
721
+ public function info($message, array $context = array()) {
 
722
 
723
  return $this->log(SimpleLoggerLogLevels::INFO, $message, $context);
724
+
725
  }
726
 
727
  /**
733
  * @param array $context
734
  * @return null
735
  */
736
+ public function infoMessage($message, array $context = array()) {
 
 
 
 
 
737
 
738
+ return $this->logByMessageKey(SimpleLoggerLogLevels::INFO, $message, $context);
 
739
 
 
 
740
  }
741
+
742
  /**
743
  * Detailed debug information.
744
  *
746
  * @param array $context
747
  * @return null
748
  */
749
+ public function debug($message, array $context = array()) {
 
750
 
751
  return $this->log(SimpleLoggerLogLevels::DEBUG, $message, $context);
752
+
753
  }
754
 
755
  /**
759
  * @param array $context
760
  * @return null
761
  */
762
+ public function debugMessage($message, array $context = array()) {
 
 
 
 
 
763
 
764
+ return $this->logByMessageKey(SimpleLoggerLogLevels::DEBUG, $message, $context);
 
765
 
 
 
766
  }
767
+
768
  /**
769
  * Logs with an arbitrary level.
770
  *
773
  * @param array $context
774
  * @return null
775
  */
776
+ public function log($level, $message, array $context = array()) {
777
+
 
778
  global $wpdb;
779
 
780
+ // Check if $message is a translated message, and if so then fetch original
781
+ $sh_latest_translations = $this->simpleHistory->gettextLatestTranslations;
782
+
783
+ if ( ! empty( $sh_latest_translations ) ) {
784
+
785
+ if ( isset( $sh_latest_translations[ $message ] ) ) {
786
+
787
+ // Translation of this phrase was found, so use original phrase instead of translated one
788
+
789
+ // Store textdomain since it's required to translate
790
+ $context["_gettext_domain"] = $sh_latest_translations[$message]["domain"];
791
+
792
+ // These are good to keep when debugging
793
+ // $context["_gettext_org_message"] = $sh_latest_translations[$message]["text"];
794
+ // $context["_gettext_translated_message"] = $sh_latest_translations[$message]["translation"];
795
+
796
+ $message = $sh_latest_translations[ $message ]["text"];
797
+ }
798
+
799
+ }
800
+
801
  /**
802
+ * Filter arguments passed to log funtion
803
+ *
804
+ * @since 2.0
805
+ *
806
+ * @param string $level
807
+ * @param string $message
808
+ * @param array $context
809
+ * @param object SimpleLogger object
810
+ */
811
+ apply_filters("simple_history/log_arguments", $level, $message, $context, $this);
812
+ $context = apply_filters("simple_history/log_argument/context", $context, $level, $message, $this);
813
+ $level = apply_filters("simple_history/log_argument/level", $level, $context, $message, $this);
814
+ $message = apply_filters("simple_history/log_argument/message", $message, $level, $context, $this);
815
 
816
  /* Store date at utc or local time?
817
  * Some info here:
819
  * UNIX timestamp = no timezone = UTC
820
  * anything is better than now() anyway!
821
  * WP seems to use the local time, so I will go with that too I think
822
+ * GMT/UTC-time is: date_i18n($timezone_format, false, 'gmt'));
823
  * local time is: date_i18n($timezone_format));
824
  */
825
  $localtime = current_time("mysql", 1);
827
  $db_table = $wpdb->prefix . SimpleHistory::DBTABLE;
828
 
829
  /**
830
+ * Filter db table used for simple history events
831
+ *
832
+ * @since 2.0
833
+ *
834
+ * @param string $db_table
835
+ */
836
  $db_table = apply_filters("simple_history/db_table", $db_table);
837
+
838
  $data = array(
839
  "logger" => $this->slug,
840
  "level" => $level,
844
 
845
  // Allow date to be override
846
  // Date must be in format 'Y-m-d H:i:s'
847
+ if (isset($context["_date"])) {
848
  $data["date"] = $context["_date"];
849
  unset($context["_date"]);
850
  }
851
 
852
  // Add occasions id
853
+ $occasions_id = null;
854
+ if (isset($context["_occasionsID"])) {
855
 
856
  // Minimize risk of similar loggers logging same messages and such and resulting in same occasions id
857
  // by always adding logger slug
858
  $occasions_data = array(
859
  "_occasionsID" => $context["_occasionsID"],
860
+ "_loggerSlug" => $this->slug,
861
  );
862
+ $occasions_id = md5(json_encode($occasions_data));
863
+ unset($context["_occasionsID"]);
864
 
865
  } else {
866
 
871
  unset($occasions_data["date"]);
872
 
873
  //sf_d($occasions_data);exit;
874
+ $occasions_id = md5(json_encode($occasions_data));
875
 
876
  }
877
 
880
  // Log event type, defaults to other if not set
881
  /*
882
  if ( isset( $context["_type"] ) ) {
883
+ $data["type"] = $context["_type"];
884
+ unset( $context["_type"] );
885
  } else {
886
+ $data["type"] = SimpleLoggerLogTypes::OTHER;
887
  }
888
+ */
889
 
890
  // Log initiator, defaults to current user if exists, or other if not user exist
891
  if ( isset( $context["_initiator"] ) ) {
893
  // Manually set in context
894
  $data["initiator"] = $context["_initiator"];
895
  unset( $context["_initiator"] );
896
+
897
  } else {
 
 
898
 
899
+ // No initiator set, try to determine
900
+
901
+ // Default to other
902
  $data["initiator"] = SimpleLoggerLogInitiators::OTHER;
903
+
904
  // Check if user is responsible.
905
  if ( function_exists("wp_get_current_user") ) {
906
 
907
  $current_user = wp_get_current_user();
908
 
909
+ if ( isset( $current_user->ID ) && $current_user->ID ) {
910
 
911
+ $data["initiator"] = SimpleLoggerLogInitiators::WP_USER;
912
  $context["_user_id"] = $current_user->ID;
913
  $context["_user_login"] = $current_user->user_login;
914
  $context["_user_email"] = $current_user->user_email;
922
 
923
  // Seems to be wp cron running and doing this
924
  $data["initiator"] = SimpleLoggerLogInitiators::WORDPRESS;
925
+ $context["_wp_cron_running"] = true;
926
+
927
+ }
928
+
929
+ // If running as CLI and WP_CLI_PHP_USED is set then it is WP CLI that is doing it
930
+ // How to log this? Is this a user, is it WordPress, or what?
931
+ // I'm thinking:
932
+ // - it is a user that is manually doing this, on purpose, with intent, so not auto wordpress
933
+ // - it is a specific user, but we don't know who
934
+ // - sounds like a special case, set initiator to wp_cli
935
+ if ( isset( $_SERVER["WP_CLI_PHP_USED"] ) && "cli" == php_sapi_name() ) {
936
+
937
+ $data["initiator"] = SimpleLoggerLogInitiators::WP_CLI;
938
 
939
  }
940
 
941
  }
942
 
943
+ // Detect XML-RPC calls and append to context, if not already there
944
+ if ( defined("XMLRPC_REQUEST") && XMLRPC_REQUEST && ! isset( $context["_xmlrpc_request"] ) ) {
945
+
946
+ $context["_xmlrpc_request"] = true;
947
+
948
+ }
949
+
950
  /**
951
+ * Filter data to be saved to db
952
+ *
953
+ * @since 2.0
954
+ *
955
+ * @param array $data
956
+ */
957
  $data = apply_filters("simple_history/log_insert_data", $data);
958
 
959
  // Insert data into db
960
  // sf_d($db_table, '$db_table');exit;
961
+ $result = $wpdb->insert($db_table, $data);
962
 
963
  // Only save context if able to store row
964
+ if (false === $result) {
965
 
966
  $history_inserted_id = null;
967
 
968
  } else {
969
+
970
+ $history_inserted_id = $wpdb->insert_id;
971
 
972
  $db_table_contexts = $wpdb->prefix . SimpleHistory::DBTABLE_CONTEXTS;
973
 
974
  /**
975
+ * Filter table name for contexts
976
+ *
977
+ * @since 2.0
978
+ *
979
+ * @param string $db_table_contexts
980
+ */
981
  $db_table_contexts = apply_filters("simple_history/logger_db_table_contexts", $db_table_contexts);
982
 
983
+ if (!is_array($context)) {
984
  $context = array();
985
  }
986
 
987
  // Append user id to context, if not already added
988
+ if (!isset($context["_user_id"])) {
989
+
990
  // wp_get_current_user is ont available early
991
  // http://codex.wordpress.org/Function_Reference/wp_get_current_user
992
  // https://core.trac.wordpress.org/ticket/14024
993
+ if (function_exists("wp_get_current_user")) {
994
 
995
  $current_user = wp_get_current_user();
996
 
997
+ if (isset($current_user->ID) && $current_user->ID) {
998
  $context["_user_id"] = $current_user->ID;
999
  $context["_user_login"] = $current_user->user_login;
1000
  $context["_user_email"] = $current_user->user_email;
1003
  }
1004
 
1005
  }
1006
+
1007
+ // Add remote addr to context
1008
  // Good to always have
1009
+ if (!isset($context["_server_remote_addr"])) {
1010
+
1011
  $context["_server_remote_addr"] = $_SERVER["REMOTE_ADDR"];
1012
+
1013
+ // If web server is behind a load balancer then the ip address will always be the same
1014
+ // See bug report: https://wordpress.org/support/topic/use-x-forwarded-for-http-header-when-logging-remote_addr?replies=1#post-6422981
1015
+ // Note that the x-forwarded-for header can contain multiple ips
1016
+ // Also note that the header can be faked
1017
+ // Ref: http://stackoverflow.com/questions/753645/how-do-i-get-the-correct-ip-from-http-x-forwarded-for-if-it-contains-multiple-ip
1018
+ // Ref: http://blackbe.lt/advanced-method-to-obtain-the-client-ip-in-php/
1019
+
1020
+ // Check for IP in lots of headers
1021
+ // Based on code found here:
1022
+ // http://blackbe.lt/advanced-method-to-obtain-the-client-ip-in-php/
1023
+ $ip_keys = array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED');
1024
+
1025
+ foreach ($ip_keys as $key) {
1026
+
1027
+ if (array_key_exists($key, $_SERVER) === true) {
1028
+
1029
+ // Loop through all IPs
1030
+ $ip_loop_num = 0;
1031
+ foreach (explode(',', $_SERVER[$key]) as $ip) {
1032
+
1033
+ // trim for safety measures
1034
+ $ip = trim($ip);
1035
+
1036
+ // attempt to validate IP
1037
+ if ($this->validate_ip($ip)) {
1038
+
1039
+ // valid, add to context, with loop index appended so we can store many IPs
1040
+ $key_lower = strtolower($key);
1041
+ $context["_server_{$key_lower}_{$ip_loop_num}"] = $ip;
1042
+
1043
+ }
1044
+
1045
+ $ip_loop_num++;
1046
+
1047
+ }
1048
+
1049
+ }
1050
+
1051
+ }
1052
+
1053
  }
1054
 
1055
  // Append http referer
1056
  // Also good to always have!
1057
+ if (!isset($context["_server_http_referer"]) && isset($_SERVER["HTTP_REFERER"])) {
1058
  $context["_server_http_referer"] = $_SERVER["HTTP_REFERER"];
1059
  }
1060
 
1061
  // Insert all context values into db
1062
+ foreach ($context as $key => $value) {
1063
 
1064
  $data = array(
1065
  "history_id" => $history_inserted_id,
1067
  "value" => $value,
1068
  );
1069
 
1070
+ $result = $wpdb->insert($db_table_contexts, $data);
1071
 
1072
  }
1073
 
1074
  }
1075
+
1076
  $this->lastInsertID = $history_inserted_id;
1077
 
1078
+ $this->simpleHistory->get_cache_incrementor(true);
1079
+
1080
  // Return $this so we can chain methods
1081
  return $this;
1082
 
1083
  } // log
1084
 
1085
+ /**
1086
+ * Ensures an ip address is both a valid IP and does not fall within
1087
+ * a private network range.
1088
+ */
1089
+ function validate_ip($ip) {
1090
+
1091
+ if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4|FILTER_FLAG_NO_PRIV_RANGE|FILTER_FLAG_NO_RES_RANGE) === false) {
1092
+ return false;
1093
+ }
1094
+
1095
+ return true;
1096
+
1097
+ }
1098
+
1099
  /**
1100
  * Override this to add CSS in <head> for your logger.
1101
+ * The CSS that you output will only be outputed
1102
  * on pages where Simple History is used.
1103
  */
1104
  function adminCSS() {
1105
  /*
1106
+ ?>
1107
+ <style>
1108
+ body {
1109
+ border: 2px solid red;
1110
+ }
1111
+ </style>
1112
+ <?php
1113
+ */
1114
  }
1115
 
1116
  /**
1117
  * Override this to add JavaScript in the footer for your logger.
1118
+ * The JS that you output will only be outputed
1119
  * on pages where Simple History is used.
1120
  */
1121
  function adminJS() {
1122
  /*
1123
+ ?>
1124
+ <script>
1125
+ console.log("This is outputed in the footer");
1126
+ </script>
1127
+ <?php
1128
+ */
1129
  }
1130
+
1131
  }
1132
 
1133
  /**
1134
  * Describes log initiator, i.e. who caused to log event to happend
1135
  */
1136
+ class SimpleLoggerLogInitiators {
1137
+
 
1138
  // A wordpress user that at the log event created did exist in the wp database
1139
  // May have been deleted when the log is viewed
1140
  const WP_USER = 'wp_user';
1147
  // WordPress core or plugins updated automatically via wp-cron
1148
  const WORDPRESS = "wp";
1149
 
1150
+ // WP CLI / terminal
1151
+ const WP_CLI = "wp_cli";
1152
+
1153
  // I dunno
1154
  const OTHER = 'other';
1155
  }
1156
 
 
1157
  /**
1158
  * Describes log event type
1159
  * Based on the CRUD-types
1161
  * More may be added later on if needed
1162
  * Note: not in use at the moment
1163
  */
1164
+ class SimpleLoggerLogTypes {
 
1165
  const CREATE = 'create';
1166
  const READ = 'read';
1167
  const UPDATE = 'update';
1172
  /**
1173
  * Describes log levels
1174
  */
1175
+ class SimpleLoggerLogLevels {
 
1176
  const EMERGENCY = 'emergency';
1177
  const ALERT = 'alert';
1178
  const CRITICAL = 'critical';
1182
  const INFO = 'info';
1183
  const DEBUG = 'debug';
1184
  }
 
loggers/SimpleMediaLogger.php CHANGED
@@ -10,12 +10,12 @@ class SimpleMediaLogger extends SimpleLogger
10
 
11
  /**
12
  * Get array with information about this logger
13
- *
14
  * @return array
15
  */
16
  function getInfo() {
17
 
18
- $arr_info = array(
19
  "name" => "Media/Attachments Logger",
20
  "description" => "Logs media uploads and edits",
21
  "capability" => "edit_pages",
@@ -30,26 +30,28 @@ class SimpleMediaLogger extends SimpleLogger
30
  "options" => array(
31
  _x("Added media", "Media logger: search", "simple-history") => array(
32
  "attachment_created"
33
- ),
34
  _x("Updated media", "Media logger: search", "simple-history") => array(
35
  "attachment_updated"
36
- ),
37
  _x("Deleted media", "Media logger: search", "simple-history") => array(
38
  "attachment_deleted"
39
- ),
40
  )
41
  ) // end search array
42
  ) // end labels
43
  );
44
-
45
  return $arr_info;
46
 
47
  }
48
 
49
  public function loaded() {
50
-
51
  add_action("admin_init", array($this, "on_admin_init"));
52
 
 
 
53
  }
54
 
55
  function on_admin_init() {
@@ -60,11 +62,45 @@ class SimpleMediaLogger extends SimpleLogger
60
 
61
  }
62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  /**
64
  * Modify plain output to inlcude link to post
65
  */
66
  public function getLogRowPlainTextOutput($row) {
67
-
68
  $message = $row->message;
69
  $context = $row->context;
70
  $message_key = $context["_message_key"];
@@ -72,7 +108,7 @@ class SimpleMediaLogger extends SimpleLogger
72
  $attachment_id = $context["attachment_id"];
73
  $attachment_post = get_post( $attachment_id );
74
  $attachment_is_available = is_a($attachment_post, "WP_Post");
75
-
76
  // Only link to attachment if it is still available
77
  if ( $attachment_is_available ) {
78
 
@@ -83,16 +119,23 @@ class SimpleMediaLogger extends SimpleLogger
83
  } else if ( "attachment_created" == $message_key ) {
84
 
85
  $message = __('Uploaded {post_type} <a href="{edit_link}">"{attachment_title}"</a>', "simple-history");
86
-
87
  }
88
 
89
- }
 
 
90
 
91
- $context["post_type"] = esc_html( $context["post_type"] );
92
- $context["attachment_filename"] = esc_html( $context["attachment_filename"] );
93
- $context["edit_link"] = get_edit_post_link( $attachment_id );
94
 
95
- return $this->interpolate($message, $context);
 
 
 
 
 
 
 
96
 
97
  }
98
 
@@ -105,12 +148,16 @@ class SimpleMediaLogger extends SimpleLogger
105
  $message_key = $context["_message_key"];
106
  $output = "";
107
 
 
 
 
 
108
  if ( "attachment_updated" == $message_key ) {
109
-
110
  // Attachment is changed = don't show thumbs and all
111
 
112
  } else if ( "attachment_deleted" == $message_key ) {
113
-
114
  // Attachment is deleted = don't show thumbs and all
115
 
116
  } else if ( "attachment_created" == $message_key ) {
@@ -146,9 +193,9 @@ class SimpleMediaLogger extends SimpleLogger
146
  if ( $full_image_width && $full_image_height ) {
147
 
148
  $context["full_image_width"] = $full_image_width;
149
- $context["full_image_height"] = $full_image_width;
150
  $context["attachment_thumb"] = sprintf('<div class="SimpleHistoryLogitemThumbnail"><img src="%1$s"></div>', $thumb_src[0] );
151
-
152
  }
153
 
154
  } else if ($is_audio) {
@@ -164,22 +211,28 @@ class SimpleMediaLogger extends SimpleLogger
164
  } else {
165
 
166
  // use wordpress icon for other media types
167
- $context["attachment_thumb"] = wp_get_attachment_image( $attachment_id, null, true );
 
 
 
 
 
 
168
 
169
  }
170
-
171
  $context["attachment_size_format"] = size_format( $row->context["attachment_filesize"] );
172
  $context["attachment_filetype_extension"] = strtoupper( $filetype["ext"] );
173
 
174
  if ( ! empty( $context["attachment_thumb"] ) ) {
175
-
176
- if ($is_image) {
177
- $message .= "<a href='".$edit_link."'>";
178
  }
179
-
180
  $message .= __('{attachment_thumb}', 'simple-history');
181
-
182
- if ($is_image) {
183
  $message .= "</a>";
184
  }
185
 
@@ -189,7 +242,7 @@ class SimpleMediaLogger extends SimpleLogger
189
  $message .= "<span class='SimpleHistoryLogitem__inlineDivided'>" . __('{attachment_size_format}', "simple-history") . "</span> ";
190
  $message .= "<span class='SimpleHistoryLogitem__inlineDivided'>" . __('{attachment_filetype_extension}', "simple-history") . "</span>";
191
  if ($full_image_width && $full_image_height) {
192
- $message .= " <span class='SimpleHistoryLogitem__inlineDivided'>" . __('{full_image_width} × {full_image_height}') . "</span>";
193
  }
194
  //$message .= " <span class='SimpleHistoryLogitem__inlineDivided'>" . sprintf( __('<a href="%1$s">Edit attachment</a>'), $edit_link ) . "</span>";
195
  $message .= "</p>";
@@ -216,7 +269,7 @@ class SimpleMediaLogger extends SimpleLogger
216
  if ( file_exists( $file ) ) {
217
  $file_size = filesize( $file );
218
  }
219
-
220
  $this->infoMessage(
221
  'attachment_created',
222
  array(
@@ -230,7 +283,7 @@ class SimpleMediaLogger extends SimpleLogger
230
  );
231
 
232
  }
233
-
234
  /**
235
  * An attachmet is changed
236
  * is this only being called if the title of the attachment is changed?!
@@ -238,7 +291,7 @@ class SimpleMediaLogger extends SimpleLogger
238
  * @param int $attachment_id
239
  */
240
  function on_edit_attachment($attachment_id) {
241
-
242
  $attachment_post = get_post( $attachment_id );
243
  $filename = esc_html( wp_basename( $attachment_post->guid ) );
244
  $mime = get_post_mime_type( $attachment_post );
@@ -257,11 +310,11 @@ class SimpleMediaLogger extends SimpleLogger
257
 
258
  }
259
 
260
- /**
261
  * Called when an attachment is deleted
262
  */
263
  function on_delete_attachment($attachment_id) {
264
-
265
  $attachment_post = get_post( $attachment_id );
266
  $filename = esc_html( wp_basename( $attachment_post->guid ) );
267
  $mime = get_post_mime_type( $attachment_post );
10
 
11
  /**
12
  * Get array with information about this logger
13
+ *
14
  * @return array
15
  */
16
  function getInfo() {
17
 
18
+ $arr_info = array(
19
  "name" => "Media/Attachments Logger",
20
  "description" => "Logs media uploads and edits",
21
  "capability" => "edit_pages",
30
  "options" => array(
31
  _x("Added media", "Media logger: search", "simple-history") => array(
32
  "attachment_created"
33
+ ),
34
  _x("Updated media", "Media logger: search", "simple-history") => array(
35
  "attachment_updated"
36
+ ),
37
  _x("Deleted media", "Media logger: search", "simple-history") => array(
38
  "attachment_deleted"
39
+ ),
40
  )
41
  ) // end search array
42
  ) // end labels
43
  );
44
+
45
  return $arr_info;
46
 
47
  }
48
 
49
  public function loaded() {
50
+
51
  add_action("admin_init", array($this, "on_admin_init"));
52
 
53
+ add_action( 'xmlrpc_call_success_mw_newMediaObject', array($this, "on_mw_newMediaObject"), 10, 2 );
54
+
55
  }
56
 
57
  function on_admin_init() {
62
 
63
  }
64
 
65
+ /**
66
+ * Filter that fires after a new attachment has been added via the XML-RPC MovableType API.
67
+ *
68
+ * @since 2.0.21
69
+ *
70
+ * @param int $id ID of the new attachment.
71
+ * @param array $args An array of arguments to add the attachment.
72
+ */
73
+ function on_mw_newMediaObject($attachment_id, $args) {
74
+
75
+ $attachment_post = get_post( $attachment_id );
76
+ $filename = esc_html( wp_basename( $attachment_post->guid ) );
77
+ $mime = get_post_mime_type( $attachment_post );
78
+ $file = get_attached_file( $attachment_id );
79
+ $file_size = false;
80
+
81
+ if ( file_exists( $file ) ) {
82
+ $file_size = filesize( $file );
83
+ }
84
+
85
+ $this->infoMessage(
86
+ 'attachment_created',
87
+ array(
88
+ "post_type" => get_post_type( $attachment_post ),
89
+ "attachment_id" => $attachment_id,
90
+ "attachment_title" => get_the_title( $attachment_post ),
91
+ "attachment_filename" => $filename,
92
+ "attachment_mime" => $mime,
93
+ "attachment_filesize" => $file_size
94
+ )
95
+ );
96
+
97
+ }
98
+
99
  /**
100
  * Modify plain output to inlcude link to post
101
  */
102
  public function getLogRowPlainTextOutput($row) {
103
+
104
  $message = $row->message;
105
  $context = $row->context;
106
  $message_key = $context["_message_key"];
108
  $attachment_id = $context["attachment_id"];
109
  $attachment_post = get_post( $attachment_id );
110
  $attachment_is_available = is_a($attachment_post, "WP_Post");
111
+
112
  // Only link to attachment if it is still available
113
  if ( $attachment_is_available ) {
114
 
119
  } else if ( "attachment_created" == $message_key ) {
120
 
121
  $message = __('Uploaded {post_type} <a href="{edit_link}">"{attachment_title}"</a>', "simple-history");
122
+
123
  }
124
 
125
+ $context["post_type"] = esc_html( $context["post_type"] );
126
+ $context["attachment_filename"] = esc_html( $context["attachment_filename"] );
127
+ $context["edit_link"] = get_edit_post_link( $attachment_id );
128
 
129
+ $message = $this->interpolate($message, $context);
 
 
130
 
131
+ } else {
132
+
133
+ // Attachment post is not available, attachment has probably been deleted
134
+ $message = parent::getLogRowPlainTextOutput( $row );
135
+
136
+ }
137
+
138
+ return $message;
139
 
140
  }
141
 
148
  $message_key = $context["_message_key"];
149
  $output = "";
150
 
151
+ $attachment_id = $context["attachment_id"];
152
+ $attachment_post = get_post( $attachment_id );
153
+ $attachment_is_available = is_a($attachment_post, "WP_Post");
154
+
155
  if ( "attachment_updated" == $message_key ) {
156
+
157
  // Attachment is changed = don't show thumbs and all
158
 
159
  } else if ( "attachment_deleted" == $message_key ) {
160
+
161
  // Attachment is deleted = don't show thumbs and all
162
 
163
  } else if ( "attachment_created" == $message_key ) {
193
  if ( $full_image_width && $full_image_height ) {
194
 
195
  $context["full_image_width"] = $full_image_width;
196
+ $context["full_image_height"] = $full_image_height;
197
  $context["attachment_thumb"] = sprintf('<div class="SimpleHistoryLogitemThumbnail"><img src="%1$s"></div>', $thumb_src[0] );
198
+
199
  }
200
 
201
  } else if ($is_audio) {
211
  } else {
212
 
213
  // use wordpress icon for other media types
214
+ if ( $attachment_is_available ) {
215
+ $context["attachment_thumb"] = wp_get_attachment_image( $attachment_id, null, true );
216
+ }
217
+ /*else {
218
+ // Add icon for deleted media?
219
+ $context["attachment_thumb"] = "thumb";
220
+ }*/
221
 
222
  }
223
+
224
  $context["attachment_size_format"] = size_format( $row->context["attachment_filesize"] );
225
  $context["attachment_filetype_extension"] = strtoupper( $filetype["ext"] );
226
 
227
  if ( ! empty( $context["attachment_thumb"] ) ) {
228
+
229
+ if ( $is_image ) {
230
+ $message .= "<a class='SimpleHistoryLogitemThumbnailLink' href='".$edit_link."'>";
231
  }
232
+
233
  $message .= __('{attachment_thumb}', 'simple-history');
234
+
235
+ if ( $is_image ) {
236
  $message .= "</a>";
237
  }
238
 
242
  $message .= "<span class='SimpleHistoryLogitem__inlineDivided'>" . __('{attachment_size_format}', "simple-history") . "</span> ";
243
  $message .= "<span class='SimpleHistoryLogitem__inlineDivided'>" . __('{attachment_filetype_extension}', "simple-history") . "</span>";
244
  if ($full_image_width && $full_image_height) {
245
+ $message .= " <span class='SimpleHistoryLogitem__inlineDivided'>" . __('{full_image_width} × {full_image_height}', "simple-history") . "</span>";
246
  }
247
  //$message .= " <span class='SimpleHistoryLogitem__inlineDivided'>" . sprintf( __('<a href="%1$s">Edit attachment</a>'), $edit_link ) . "</span>";
248
  $message .= "</p>";
269
  if ( file_exists( $file ) ) {
270
  $file_size = filesize( $file );
271
  }
272
+
273
  $this->infoMessage(
274
  'attachment_created',
275
  array(
283
  );
284
 
285
  }
286
+
287
  /**
288
  * An attachmet is changed
289
  * is this only being called if the title of the attachment is changed?!
291
  * @param int $attachment_id
292
  */
293
  function on_edit_attachment($attachment_id) {
294
+
295
  $attachment_post = get_post( $attachment_id );
296
  $filename = esc_html( wp_basename( $attachment_post->guid ) );
297
  $mime = get_post_mime_type( $attachment_post );
310
 
311
  }
312
 
313
+ /**
314
  * Called when an attachment is deleted
315
  */
316
  function on_delete_attachment($attachment_id) {
317
+
318
  $attachment_post = get_post( $attachment_id );
319
  $filename = esc_html( wp_basename( $attachment_post->guid ) );
320
  $mime = get_post_mime_type( $attachment_post );
loggers/SimpleOptionsLogger.php CHANGED
@@ -202,14 +202,14 @@ class SimpleOptionsLogger extends SimpleLogger
202
  return;
203
  }
204
 
205
- $this->debugMessage( "option_updated", array(
206
- "option" => $option,
207
- "old_value" => $old_value,
208
- "new_value" => $new_value,
209
- "REQUEST_URI" => $_SERVER["REQUEST_URI"],
210
- "referer" => wp_get_referer(),
211
- "option_page" => $option_page,
212
- "$_REQUEST" => print_r($_REQUEST, true),
213
  ) );
214
 
215
 
@@ -240,7 +240,7 @@ class SimpleOptionsLogger extends SimpleLogger
240
  </tr>
241
  ',
242
  __("New value", "simple-history"),
243
- esc_html( $context["new_value"] )
244
  );
245
 
246
  $output .= sprintf(
@@ -251,7 +251,7 @@ class SimpleOptionsLogger extends SimpleLogger
251
  </tr>
252
  ',
253
  __("Old value", "simple-history"),
254
- esc_html( $context["old_value"] )
255
  );
256
  }
257
 
202
  return;
203
  }
204
 
205
+ $this->debugMessage( 'option_updated', array(
206
+ 'option' => $option,
207
+ 'old_value' => $old_value,
208
+ 'new_value' => $new_value,
209
+ 'REQUEST_URI' => $_SERVER['REQUEST_URI'],
210
+ 'referer' => wp_get_referer(),
211
+ 'option_page' => $option_page,
212
+ '$_REQUEST' => print_r($_REQUEST, true),
213
  ) );
214
 
215
 
240
  </tr>
241
  ',
242
  __("New value", "simple-history"),
243
+ esc_html( mb_strimwidth( $context["new_value"], 0, 250, "..." ) )
244
  );
245
 
246
  $output .= sprintf(
251
  </tr>
252
  ',
253
  __("Old value", "simple-history"),
254
+ esc_html( mb_strimwidth( $context["old_value"], 0, 250, "..." ) )
255
  );
256
  }
257
 
loggers/SimplePluginLogger.php CHANGED
@@ -1,33 +1,7 @@
1
  <?php
2
 
3
- /*
4
-
5
-
6
- # logga installs/updates av plugins som är silent
7
-
8
- // Innan update körs en av dessa
9
- $current = get_site_option( 'active_sitewide_plugins', array() );
10
- $current = get_option( 'active_plugins', array() );
11
-
12
- // efter update körs en av dessa
13
- update_site_option( 'active_sitewide_plugins', $current );
14
- update_option('active_plugins', $current);
15
-
16
- // så: jämför om arrayen har ändrats, och om den har det = ny plugin aktiverats
17
-
18
-
19
-
20
-
21
- # extra stuff
22
- vid aktivering/installation av plugin: spara resultat från
23
- get_plugin_files($plugin)
24
- så vid ev intrång/skadlig kod uppladdad så kan man analysera lite
25
-
26
- */
27
-
28
-
29
  /**
30
- * Logs plugins installs and updates
31
  */
32
  class SimplePluginLogger extends SimpleLogger
33
  {
@@ -147,7 +121,15 @@ class SimplePluginLogger extends SimpleLogger
147
 
148
  //do_action( 'current_screen', $current_screen );
149
  // The first hook where current screen is available
150
- add_action( 'current_screen', array( $this, "save_versions_before_update" ) );
 
 
 
 
 
 
 
 
151
  add_action( 'delete_site_transient_update_plugins', array( $this, "remove_saved_versions" ) );
152
 
153
  // Fires after a plugin has been activated.
@@ -160,10 +142,8 @@ class SimplePluginLogger extends SimpleLogger
160
  // this hook does not fire.
161
  add_action( 'deactivated_plugin', array( $this, "on_deactivated_plugin" ), 10, 2 );
162
 
163
-
164
  // Fires after the upgrades has done it's thing
165
  // Check hook extra for upgrader initiator
166
- //add_action( 'upgrader_post_install', array( $this, "on_upgrader_post_install" ), 10, 3 );
167
  add_action( 'upgrader_process_complete', array( $this, "on_upgrader_process_complete" ), 10, 2 );
168
 
169
  // Dirty check for things that we can't catch using filters or actions
@@ -172,14 +152,55 @@ class SimplePluginLogger extends SimpleLogger
172
  // Detect files removed
173
  add_action( 'setted_transient', array( $this, 'on_setted_transient_for_remove_files' ), 10, 2 );
174
 
175
- /*
176
- do_action( 'automatic_updates_complete', $this->update_results );
177
- * Fires after all automatic updates have run.
178
- *
179
- * @since 3.8.0
180
- *
181
- * @param array $update_results The results of all attempted updates.
182
- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
 
184
  }
185
 
@@ -220,10 +241,10 @@ class SimplePluginLogger extends SimpleLogger
220
  $plugins_deleted = $_POST["checked"];
221
  $plugins_before_update = json_decode( get_option( $this->slug . "_plugin_info_before_update", false ), true );
222
 
223
- foreach ($plugins_deleted as $plugin) {
224
 
225
  $context = array(
226
- "plugin" => $plugin
227
  );
228
 
229
  if ( is_array( $plugins_before_update ) && isset( $plugins_before_update[ $plugin ] ) ) {
@@ -252,7 +273,7 @@ class SimplePluginLogger extends SimpleLogger
252
  * Save all plugin information before a plugin is updated or removed.
253
  * This way we can know both the old (pre updated/removed) and the current version of the plugin
254
  */
255
- public function save_versions_before_update() {
256
 
257
  $current_screen = get_current_screen();
258
  $request_uri = $_SERVER["SCRIPT_NAME"];
@@ -286,10 +307,11 @@ class SimplePluginLogger extends SimpleLogger
286
  }
287
 
288
  }
 
289
 
290
  /**
291
  * when plugin updates are done wp_clean_plugins_cache() is called,
292
- * which in it's turn run:
293
  * delete_site_transient( 'update_plugins' );
294
  * do_action( 'delete_site_transient_' . $transient, $transient );
295
  * delete_site_transient_update_plugins
@@ -359,13 +381,24 @@ class SimplePluginLogger extends SimpleLogger
359
  }
360
 
361
  /**
362
- * Called when a single plugin is updated or installed
363
- * (not bulk)
364
  */
365
  function on_upgrader_process_complete( $plugin_upgrader_instance, $arr_data ) {
366
 
 
 
 
 
367
  /*
368
-
 
 
 
 
 
 
 
 
369
  # WordPress core update
370
 
371
  $arr_data:
1
  <?php
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  /**
4
+ * Logs plugin installs, updates, and deletions
5
  */
6
  class SimplePluginLogger extends SimpleLogger
7
  {
121
 
122
  //do_action( 'current_screen', $current_screen );
123
  // The first hook where current screen is available
124
+ //add_action( 'current_screen', array( $this, "save_versions_before_update" ) );
125
+
126
+ /**
127
+ * At least the plugin bulk upgrades fires this action before upgrade
128
+ * We use it to fetch the current version of all plugins, before they are upgraded
129
+ */
130
+ add_filter( 'upgrader_pre_install', array( $this, "save_versions_before_update"), 10, 2);
131
+
132
+ // Clear our transient after an update is done
133
  add_action( 'delete_site_transient_update_plugins', array( $this, "remove_saved_versions" ) );
134
 
135
  // Fires after a plugin has been activated.
142
  // this hook does not fire.
143
  add_action( 'deactivated_plugin', array( $this, "on_deactivated_plugin" ), 10, 2 );
144
 
 
145
  // Fires after the upgrades has done it's thing
146
  // Check hook extra for upgrader initiator
 
147
  add_action( 'upgrader_process_complete', array( $this, "on_upgrader_process_complete" ), 10, 2 );
148
 
149
  // Dirty check for things that we can't catch using filters or actions
152
  // Detect files removed
153
  add_action( 'setted_transient', array( $this, 'on_setted_transient_for_remove_files' ), 10, 2 );
154
 
155
+ add_action("admin_action_delete-selected", array($this, "on_action_delete_selected"), 10, 1);
156
+
157
+
158
+ }
159
+
160
+ /*
161
+ * When a plugin has been deleted there is no way for us to get
162
+ * the real name of the plugin, only the dir and main index file.
163
+ * So before a plugin is deleted we save all needed info in a transient
164
+ */
165
+ function on_action_delete_selected() {
166
+
167
+ // Same as in plugins.php
168
+ if ( ! current_user_can('delete_plugins') ) {
169
+ wp_die(__('You do not have sufficient permissions to delete plugins for this site.'));
170
+ }
171
+
172
+ // Same as in plugins.php
173
+ check_admin_referer('bulk-plugins');
174
+
175
+ // Verify delete must be set
176
+ if ( ! isset( $_POST["verify-delete"] ) || ! $_POST["verify-delete"] ) {
177
+ return;
178
+ }
179
+
180
+ // An arr of plugins must be set
181
+ if ( ! isset( $_POST["checked"] ) || ! is_array( $_POST["checked"] ) ) {
182
+ return;
183
+ }
184
+
185
+ // If we get this far it looks like a plugin is begin deleted
186
+ // Get and save info about it
187
+
188
+ $this->save_versions_before_update();
189
+
190
+
191
+ }
192
+
193
+ /**
194
+ * Saves info about all installed plugins to an option.
195
+ * When we are done logging then we remove the option.
196
+ */
197
+ function save_versions_before_update($bool, $hook_extra) {
198
+
199
+ $plugins = get_plugins();
200
+
201
+ update_option( $this->slug . "_plugin_info_before_update", SimpleHistory::json_encode( $plugins ) );
202
+
203
+ return $bool;
204
 
205
  }
206
 
241
  $plugins_deleted = $_POST["checked"];
242
  $plugins_before_update = json_decode( get_option( $this->slug . "_plugin_info_before_update", false ), true );
243
 
244
+ foreach ( $plugins_deleted as $plugin ) {
245
 
246
  $context = array(
247
+ "plugin" => $plugin // plugin-name-folder/plugin-main-file.php
248
  );
249
 
250
  if ( is_array( $plugins_before_update ) && isset( $plugins_before_update[ $plugin ] ) ) {
273
  * Save all plugin information before a plugin is updated or removed.
274
  * This way we can know both the old (pre updated/removed) and the current version of the plugin
275
  */
276
+ /*public function save_versions_before_update() {
277
 
278
  $current_screen = get_current_screen();
279
  $request_uri = $_SERVER["SCRIPT_NAME"];
307
  }
308
 
309
  }
310
+ */
311
 
312
  /**
313
  * when plugin updates are done wp_clean_plugins_cache() is called,
314
+ * which in its turn run:
315
  * delete_site_transient( 'update_plugins' );
316
  * do_action( 'delete_site_transient_' . $transient, $transient );
317
  * delete_site_transient_update_plugins
381
  }
382
 
383
  /**
384
+ * Called when plugins is updated or installed
 
385
  */
386
  function on_upgrader_process_complete( $plugin_upgrader_instance, $arr_data ) {
387
 
388
+ // Can't use get_plugins() here to get version of plugins updated from
389
+ // Tested that, and it will get the new version (and that's the correct answer I guess. but too bad for us..)
390
+ // $plugs = get_plugins();
391
+ // $context["_debug_get_plugins"] = SimpleHistory::json_encode( $plugs );
392
  /*
393
+
394
+ Try with these instead:
395
+ $current = get_site_transient( 'update_plugins' );
396
+ add_filter('upgrader_clear_destination', array($this, 'delete_old_plugin'), 10, 4);
397
+
398
+ */
399
+
400
+ /*
401
+
402
  # WordPress core update
403
 
404
  $arr_data:
loggers/SimplePostLogger.php CHANGED
@@ -1,5 +1,74 @@
1
  <?php
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  /**
4
  * Logs changes to posts and pages, including custom post types
5
  */
@@ -13,8 +82,89 @@ class SimplePostLogger extends SimpleLogger
13
 
14
  add_action("admin_init", array($this, "on_admin_init"));
15
 
 
 
16
  }
17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  /**
19
  * Get array with information about this logger
20
  *
@@ -70,19 +220,85 @@ class SimplePostLogger extends SimpleLogger
70
 
71
  }
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  /**
74
  * Called when a post is restored from the trash
75
  */
76
  function on_untrash_post($post_id) {
77
 
78
- $post = get_post($post_id);
79
 
80
- $this->info(
81
- $this->messages["post_restored"],
82
  array(
83
  "post_id" => $post_id,
84
- "post_type" => get_post_type($post),
85
- "post_title" => get_the_title($post)
86
  )
87
  );
88
 
@@ -233,7 +449,7 @@ class SimplePostLogger extends SimpleLogger
233
 
234
  } else if ( "post_deleted" == $message_key ) {
235
 
236
- $message = __('Deleted {post_type} "{post_title}"');
237
 
238
  } else if ( "post_created" == $message_key ) {
239
 
1
  <?php
2
 
3
+ /*
4
+ - vid start av app: login, körs titt som tätt
5
+ - XMLRPC_REQUEST": true
6
+ do_action( 'xmlrpc_call', 'wp.editPost' );
7
+
8
+ * All built-in XML-RPC methods use the action xmlrpc_call, with a parameter
9
+ * equal to the method's name, e.g., wp.getUsersBlogs, wp.newPost, etc.
10
+ do_action( 'xmlrpc_call', 'wp.getUsersBlogs' );
11
+ */
12
+
13
+
14
+
15
+ /**
16
+ * Fires after a new category has been successfully created via XML-RPC.
17
+ *
18
+ * @since 3.4.0
19
+ *
20
+ * @param int $cat_id ID of the new category.
21
+ * @param array $args An array of new category arguments.
22
+ */
23
+ # do_action( 'xmlrpc_call_success_wp_newCategory', $cat_id, $args );
24
+
25
+
26
+ /**
27
+ * Fires after a category has been successfully deleted via XML-RPC.
28
+ *
29
+ * @since 3.4.0
30
+ *
31
+ * @param int $category_id ID of the deleted category.
32
+ * @param array $args An array of arguments to delete the category.
33
+ */
34
+ # do_action( 'xmlrpc_call_success_wp_deleteCategory', $category_id, $args );
35
+
36
+
37
+ /**
38
+ * Fires after a comment has been successfully deleted via XML-RPC.
39
+ *
40
+ * @since 3.4.0
41
+ *
42
+ * @param int $comment_ID ID of the deleted comment.
43
+ * @param array $args An array of arguments to delete the comment.
44
+ */
45
+ # do_action( 'xmlrpc_call_success_wp_deleteComment', $comment_ID, $args );
46
+
47
+
48
+ /**
49
+ * Fires after a comment has been successfully updated via XML-RPC.
50
+ *
51
+ * @since 3.4.0
52
+ *
53
+ * @param int $comment_ID ID of the updated comment.
54
+ * @param array $args An array of arguments to update the comment.
55
+ */
56
+ # do_action( 'xmlrpc_call_success_wp_editComment', $comment_ID, $args );
57
+
58
+
59
+ /**
60
+ * Fires after a new comment has been successfully created via XML-RPC.
61
+ *
62
+ * @since 3.4.0
63
+ *
64
+ * @param int $comment_ID ID of the new comment.
65
+ * @param array $args An array of new comment arguments.
66
+ */
67
+ # do_action( 'xmlrpc_call_success_wp_newComment', $comment_ID, $args );
68
+
69
+
70
+
71
+
72
  /**
73
  * Logs changes to posts and pages, including custom post types
74
  */
82
 
83
  add_action("admin_init", array($this, "on_admin_init"));
84
 
85
+ $this->add_xml_rpc_hooks();
86
+
87
  }
88
 
89
+ /**
90
+ * Filters to XML RPC calls needs to be added early, admin_init is to late
91
+ */
92
+ function add_xml_rpc_hooks() {
93
+
94
+ // Debug: log all XML-RPC requests
95
+ /*
96
+ add_action("xmlrpc_call", function($method) {
97
+ SimpleLogger()->debug("XML-RPC call for method '{method}'", array("method" => $method));
98
+ }, 10, 1);
99
+ */
100
+
101
+ add_action('xmlrpc_call_success_blogger_newPost', array($this, "on_xmlrpc_newPost"), 10, 2);
102
+ add_action('xmlrpc_call_success_mw_newPost', array($this, "on_xmlrpc_newPost"), 10,2 );
103
+
104
+ add_action('xmlrpc_call_success_blogger_editPost', array($this, "on_xmlrpc_editPost"), 10, 2);
105
+ add_action('xmlrpc_call_success_mw_editPost', array($this, "on_xmlrpc_editPost"), 10, 2);
106
+
107
+ add_action('xmlrpc_call_success_blogger_deletePost', array($this, "on_xmlrpc_deletePost"), 10, 2);
108
+ add_action('xmlrpc_call_success_wp_deletePage', array($this, "on_xmlrpc_deletePost"), 10, 2);
109
+
110
+ add_action("xmlrpc_call", array($this, "on_xmlrpc_call"), 10, 1);
111
+
112
+ }
113
+
114
+ function on_xmlrpc_call($method) {
115
+
116
+ $arr_methods_to_act_on = array(
117
+ "wp.deletePost"
118
+ );
119
+
120
+ $raw_post_data = null;
121
+ $message = null;
122
+ $context = array();
123
+
124
+ if ( in_array( $method, $arr_methods_to_act_on ) ) {
125
+
126
+ // Setup common stuff
127
+ $raw_post_data = file_get_contents("php://input");
128
+ $context["wp.deletePost.xmldata"] = $this->simpleHistory->json_encode( $raw_post_data );
129
+ $message = new IXR_Message( $raw_post_data );
130
+
131
+ if ( ! $message->parse() ) {
132
+ return;
133
+ }
134
+
135
+ $context["wp.deletePost.xmlrpc_message"] = $this->simpleHistory->json_encode( $message );
136
+ $context["wp.deletePost.xmlrpc_message.messageType"] = $this->simpleHistory->json_encode( $message->messageType );
137
+ $context["wp.deletePost.xmlrpc_message.methodName"] = $this->simpleHistory->json_encode( $message->methodName );
138
+ $context["wp.deletePost.xmlrpc_message.messageParams"] = $this->simpleHistory->json_encode( $message->params );
139
+
140
+ // Actions for delete post
141
+ if ( "wp.deletePost" == $method ) {
142
+
143
+ // 4 params, where the last is the post id
144
+ if ( ! isset( $message->params[3] ) ) {
145
+ return;
146
+ }
147
+
148
+ $post_ID = $message->params[3];
149
+
150
+ $post = get_post( $post_ID );
151
+
152
+ $context = array(
153
+ "post_id" => $post->ID,
154
+ "post_type" => get_post_type( $post ),
155
+ "post_title" => get_the_title( $post )
156
+ );
157
+
158
+ $this->infoMessage( "post_trashed", $context );
159
+
160
+
161
+ } // if delete post
162
+
163
+ }
164
+
165
+ }
166
+
167
+
168
  /**
169
  * Get array with information about this logger
170
  *
220
 
221
  }
222
 
223
+ /**
224
+ * Fires after a post has been successfully deleted via the XML-RPC Blogger API.
225
+ *
226
+ * @since 2.0.21
227
+ *
228
+ * @param int $post_ID ID of the deleted post.
229
+ * @param array $args An array of arguments to delete the post.
230
+ */
231
+ function on_xmlrpc_deletePost($post_ID, $args) {
232
+
233
+ $post = get_post( $post_ID );
234
+
235
+ $context = array(
236
+ "post_id" => $post->ID,
237
+ "post_type" => get_post_type( $post ),
238
+ "post_title" => get_the_title( $post )
239
+ );
240
+
241
+ $this->infoMessage( "post_deleted", $context );
242
+
243
+ }
244
+
245
+ /**
246
+ * Fires after a post has been successfully updated via the XML-RPC API.
247
+ *
248
+ * @since 2.0.21
249
+ *
250
+ * @param int $post_ID ID of the updated post.
251
+ * @param array $args An array of arguments for the post to edit.
252
+ */
253
+ function on_xmlrpc_editPost($post_ID, $args) {
254
+
255
+ $post = get_post( $post_ID );
256
+
257
+ $context = array(
258
+ "post_id" => $post->ID,
259
+ "post_type" => get_post_type( $post ),
260
+ "post_title" => get_the_title( $post )
261
+ );
262
+
263
+ $this->infoMessage( "post_updated", $context );
264
+
265
+ }
266
+
267
+ /**
268
+ * Fires after a new post has been successfully created via the XML-RPC API.
269
+ *
270
+ * @since 2.0.21
271
+ *
272
+ * @param int $post_ID ID of the new post.
273
+ * @param array $args An array of new post arguments.
274
+ */
275
+ function on_xmlrpc_newPost($post_ID, $args) {
276
+
277
+ $post = get_post( $post_ID );
278
+
279
+ $context = array(
280
+ "post_id" => $post->ID,
281
+ "post_type" => get_post_type( $post ),
282
+ "post_title" => get_the_title( $post )
283
+ );
284
+
285
+ $this->infoMessage( "post_created", $context );
286
+
287
+ }
288
+
289
  /**
290
  * Called when a post is restored from the trash
291
  */
292
  function on_untrash_post($post_id) {
293
 
294
+ $post = get_post( $post_id );
295
 
296
+ $this->infoMessage(
297
+ "post_restored",
298
  array(
299
  "post_id" => $post_id,
300
+ "post_type" => get_post_type( $post ),
301
+ "post_title" => get_the_title( $post )
302
  )
303
  );
304
 
449
 
450
  } else if ( "post_deleted" == $message_key ) {
451
 
452
+ $message = __('Deleted {post_type} "{post_title}"', 'simple-history');
453
 
454
  } else if ( "post_created" == $message_key ) {
455
 
loggers/SimpleThemeLogger.php CHANGED
@@ -29,7 +29,7 @@ class SimpleThemeLogger extends SimpleLogger
29
  'widget_added' => __('Added widget "{widget_id_base}" to sidebar "{sidebar_id}"', "simple-history"),
30
  'widget_order_changed' => __('Changed widget order "{widget_id_base}" in sidebar "{sidebar_id}"', "simple-history"),
31
  'widget_edited' => __('Changed widget "{widget_id_base}" in sidebar "{sidebar_id}"', "simple-history"),
32
- "custom_background_changed" => __("Changed settings for the theme custom background", "simple_history")
33
  ),
34
  "labels" => array(
35
  "search" => array(
@@ -605,6 +605,7 @@ return;
605
 
606
  $context = $row->context;
607
  $message_key = $context["_message_key"];
 
608
  $output = "";
609
 
610
  // Widget changed or added or removed
@@ -616,7 +617,10 @@ return;
616
 
617
  if ( $widget && $sidebar ) {
618
 
619
- $message = $this->interpolate( $row->message, array(
 
 
 
620
  "widget_id_base" => $widget->name,
621
  "sidebar_id" => $sidebar["name"],
622
  ) );
@@ -628,9 +632,9 @@ return;
628
 
629
  }
630
 
631
- // Fallback to default/parent output
632
  if ( ! $output ) {
633
-
634
  $output .= parent::getLogRowPlainTextOutput($row);
635
 
636
  }
29
  'widget_added' => __('Added widget "{widget_id_base}" to sidebar "{sidebar_id}"', "simple-history"),
30
  'widget_order_changed' => __('Changed widget order "{widget_id_base}" in sidebar "{sidebar_id}"', "simple-history"),
31
  'widget_edited' => __('Changed widget "{widget_id_base}" in sidebar "{sidebar_id}"', "simple-history"),
32
+ "custom_background_changed" => __("Changed settings for the theme custom background", "simple-history")
33
  ),
34
  "labels" => array(
35
  "search" => array(
605
 
606
  $context = $row->context;
607
  $message_key = $context["_message_key"];
608
+ $message = $row->message;
609
  $output = "";
610
 
611
  // Widget changed or added or removed
617
 
618
  if ( $widget && $sidebar ) {
619
 
620
+ // Translate message first
621
+ $message = $this->messages[ $message_key ]["translated_text"];
622
+
623
+ $message = $this->interpolate( $message, array(
624
  "widget_id_base" => $widget->name,
625
  "sidebar_id" => $sidebar["name"],
626
  ) );
632
 
633
  }
634
 
635
+ // Fallback to default/parent output if nothing was added to output
636
  if ( ! $output ) {
637
+
638
  $output .= parent::getLogRowPlainTextOutput($row);
639
 
640
  }
loggers/SimpleUserLogger.php CHANGED
@@ -3,8 +3,7 @@
3
  /**
4
  * Logs changes to user logins (and logouts)
5
  */
6
- class SimpleUserLogger extends SimpleLogger
7
- {
8
 
9
  public $slug = __CLASS__;
10
 
@@ -21,7 +20,7 @@ class SimpleUserLogger extends SimpleLogger
21
  "capability" => "edit_users",
22
  "messages" => array(
23
  'user_login_failed' => __('Failed to login to account with username "{login_user_login}" because an incorrect password was entered', "simple-history"),
24
- 'user_unknown_login_failed' => __('Failed to login with username "{failed_login_username}" because no user with that username exist', "simple-history"),
25
  'user_logged_in' => __('Logged in', "simple-history"),
26
  'user_unknown_logged_in' => __("Unknown user logged in", "simple-history"),
27
  'user_logged_out' => __("Logged out", "simple-history"),
@@ -33,7 +32,7 @@ class SimpleUserLogger extends SimpleLogger
33
  Text used in admin:
34
  Log Out of All Other Sessions
35
  Left your account logged in at a public computer? Lost your phone? This will log you out everywhere except your current browser
36
- */
37
  'user_session_destroy_others' => _x(
38
  'Logged out from all other sessions',
39
  'User destroys other login sessions for themself',
@@ -42,7 +41,7 @@ class SimpleUserLogger extends SimpleLogger
42
  /*
43
  Text used in admin:
44
  'Log %s out of all sessions' ), $profileuser->display_name );
45
- */
46
  'user_session_destroy_everywhere' => _x(
47
  'Logged out "{user_display_name}" from all sessions',
48
  'User destroys all login sessions for a user',
@@ -57,29 +56,29 @@ class SimpleUserLogger extends SimpleLogger
57
  "options" => array(
58
  _x("Successful user logins", "User logger: search", "simple-history") => array(
59
  "user_logged_in",
60
- "user_unknown_logged_in"
61
  ),
62
  _x("Failed user logins", "User logger: search", "simple-history") => array(
63
  'user_login_failed',
64
- 'user_unknown_login_failed'
65
  ),
66
- _x('User logouts', 'User logger: search', 'simple-history') => array(
67
- "user_logged_out"
68
  ),
69
- _x('Created users', 'User logger: search', 'simple-history') => array(
70
- "user_created"
71
  ),
72
  _x("User profile updates", "User logger: search", "simple-history") => array(
73
- "user_updated_profile"
 
 
 
74
  ),
75
- _x('User deletions', 'User logger: search', 'simple-history') => array(
76
- "user_deleted"
77
- )
78
 
79
- )
80
- ) // end search
81
 
82
- ) // end labels
83
 
84
  );
85
  #sf_d($arr_info);exit;
@@ -93,14 +92,14 @@ class SimpleUserLogger extends SimpleLogger
93
  public function loaded() {
94
 
95
  // Plain logins and logouts
96
- add_action("wp_login", array($this, "on_wp_login" ), 10, 3 );
97
- add_action("wp_logout", array($this, "on_wp_logout" ) );
98
 
99
  // Failed login attempt to username that exists
100
  add_action("wp_authenticate_user", array($this, "on_wp_authenticate_user"), 10, 2);
101
 
102
  // Failed to login to user that did not exist (perhaps brute force)
103
- add_filter( 'authenticate', array($this, "on_authenticate"), 10, 3);
104
 
105
  // User is changed
106
  add_action("profile_update", array($this, "on_profile_update"), 10, 2);
@@ -109,14 +108,13 @@ class SimpleUserLogger extends SimpleLogger
109
  add_action("user_register", array($this, "on_user_register"), 10, 2);
110
 
111
  // User is deleted
112
- add_action( 'delete_user', array($this, "on_delete_user"), 10, 2 );
113
 
114
  // User sessions is destroyed. AJAX call that we hook onto early.
115
  add_action("wp_ajax_destroy-sessions", array($this, "on_destroy_user_session"), 0);
116
 
117
  }
118
 
119
-
120
  /**
121
  * Called when user dessions are destroyed from admin
122
  * Can be called for current logged in user = destroy all other sessions
@@ -129,31 +127,31 @@ class SimpleUserLogger extends SimpleLogger
129
 
130
  /*
131
  Post params:
132
- nonce: a14df12195
133
- user_id: 1
134
- action: destroy-sessions
135
- */
136
 
137
- $user = get_userdata( (int) $_POST['user_id'] );
138
 
139
- if ( $user ) {
140
- if ( ! current_user_can( 'edit_user', $user->ID ) ) {
141
  $user = false;
142
- } elseif ( ! wp_verify_nonce( $_POST['nonce'], 'update-user_' . $user->ID ) ) {
143
  $user = false;
144
  }
145
  }
146
 
147
- if ( ! $user ) {
148
  // Could not log out user sessions. Please try again.
149
  return;
150
  }
151
 
152
- $sessions = WP_Session_Tokens::get_instance( $user->ID );
153
 
154
  $context = array();
155
 
156
- if ( $user->ID === get_current_user_id() ) {
157
 
158
  $this->infoMessage("user_session_destroy_others");
159
 
@@ -178,11 +176,11 @@ class SimpleUserLogger extends SimpleLogger
178
  */
179
  public function on_delete_user($user_id, $reassign) {
180
 
181
- $wp_user_to_delete = get_userdata( $user_id );
182
 
183
  // wp_user->roles (array) - the roles the user is part of.
184
  $role = null;
185
- if ( is_array( $wp_user_to_delete->roles ) && ! empty( $wp_user_to_delete->roles[0] ) ) {
186
  $role = $wp_user_to_delete->roles[0];
187
  }
188
 
@@ -210,20 +208,20 @@ class SimpleUserLogger extends SimpleLogger
210
  $output = parent::getLogRowPlainTextOutput($row);
211
  $current_user_id = get_current_user_id();
212
 
213
- if ( "user_updated_profile" == $context["_message_key"]) {
214
 
215
- $wp_user = get_user_by( "id", $context["edited_user_id"] );
216
 
217
  // If edited_user_id and _user_id is the same then a user edited their own profile
218
  // Note: it's not the same thing as the currently logged in user (but.. it can be!)
219
- if ( $context["edited_user_id"] === $context["_user_id"] ) {
220
 
221
  if ($wp_user) {
222
 
223
- $context["edit_profile_link"] = get_edit_user_link( $wp_user->ID );
224
 
225
  // User still exist, so link to their profile
226
- if ( $current_user_id === $context["_user_id"] ) {
227
 
228
  // User that is viewing the log is the same as the edited user
229
  $msg = __('Edited <a href="{edit_profile_link}">your profile</a>', "simple-history");
@@ -251,7 +249,7 @@ class SimpleUserLogger extends SimpleLogger
251
  // Edited user still exist, so link to their profile
252
  $context["edit_profile_link"] = get_edit_user_link($wp_user->ID);
253
  $msg = __('Edited the profile for user <a href="{edit_profile_link}">{edited_user_login} ({edited_user_email})</a>', "simple-history");
254
- $output = $this->interpolate( $msg, $context );
255
 
256
  } else {
257
 
@@ -261,58 +259,11 @@ class SimpleUserLogger extends SimpleLogger
261
 
262
  }
263
 
264
- } // if user_updated_profile
265
 
266
  return $output;
267
  }
268
 
269
-
270
- /**
271
- * Log failed login attempt to username that exists
272
- *
273
- * @param object $user user object that was tried to gain access to
274
- * @param string password used
275
- */
276
- function on_wp_authenticate_user($user, $password) {
277
-
278
- // Only log failed attempts
279
- if ( ! wp_check_password($password, $user->user_pass, $user->ID) ) {
280
-
281
- // Overwrite some vars that Simple History set automagically
282
- $context = array(
283
- "_initiator" => SimpleLoggerLogInitiators::WEB_USER,
284
- "_user_id" => null,
285
- "_user_login" => null,
286
- "_user_email" => null,
287
- "login_user_id" => $user->ID,
288
- "login_user_email" => $user->user_email,
289
- "login_user_login" => $user->user_login,
290
- "server_http_user_agent" => $_SERVER["HTTP_USER_AGENT"],
291
- "_occasionsID" => __CLASS__ . '/' . __FUNCTION__ . "/failed_user_login/userid:{$user->ID}"
292
- );
293
-
294
- /**
295
- * Maybe store password too
296
- * Default is to not do this because of privacy and security
297
- *
298
- * @since 2.0
299
- *
300
- * @param bool $log_password
301
- */
302
- $log_password = false;
303
- $log_password = apply_filters("simple_history/comments_logger/log_failed_password", $log_password);
304
- if ($log_password) {
305
- $context["login_user_password"] = $password;
306
- }
307
-
308
- $this->warningMessage("user_login_failed", $context);
309
-
310
- }
311
-
312
- return $user;
313
-
314
- }
315
-
316
  /**
317
  * User logs in
318
  *
@@ -321,34 +272,44 @@ class SimpleUserLogger extends SimpleLogger
321
  */
322
  function on_wp_login($user_login, $user) {
323
 
324
- $context = array();
 
 
 
 
325
 
326
- if ( $user->ID ) {
 
 
 
 
 
 
 
 
327
 
328
  $context = array(
329
- "user_id" => $user->ID,
330
- "user_email" => $user->user_email,
331
- "user_login" => $user->user_login
332
  );
333
 
334
  // Override some data that is usually set automagically by Simple History
335
  // Because wp_get_current_user() does not return any data yet at this point
336
  $context["_initiator"] = SimpleLoggerLogInitiators::WP_USER;
337
- $context["_user_id"] = $user->ID;
338
- $context["_user_login"] = $user->user_login;
339
- $context["_user_email"] = $user->user_email;
340
  $context["server_http_user_agent"] = $_SERVER["HTTP_USER_AGENT"];
341
 
342
  $this->infoMessage("user_logged_in", $context);
343
 
344
  } else {
345
 
346
- // when does this happen?
347
- $this->warningMessage("user_unknown_logged_in", $context );
348
-
349
-
350
  }
351
-
352
  }
353
 
354
  /**
@@ -366,10 +327,11 @@ class SimpleUserLogger extends SimpleLogger
366
  */
367
  function on_profile_update($user_id) {
368
 
369
- if ( ! $user_id || ! is_numeric($user_id))
370
  return;
 
371
 
372
- $wp_user_edited = get_userdata( $user_id );
373
 
374
  $context = array(
375
  "edited_user_id" => $wp_user_edited->ID,
@@ -387,14 +349,15 @@ class SimpleUserLogger extends SimpleLogger
387
  */
388
  function on_user_register($user_id) {
389
 
390
- if ( ! $user_id || ! is_numeric($user_id))
391
  return;
 
392
 
393
- $wp_user_added = get_userdata( $user_id );
394
 
395
  // wp_user->roles (array) - the roles the user is part of.
396
  $role = null;
397
- if ( is_array( $wp_user_added->roles ) && ! empty( $wp_user_added->roles[0] ) ) {
398
  $role = $wp_user_added->roles[0];
399
  }
400
 
@@ -410,19 +373,66 @@ class SimpleUserLogger extends SimpleLogger
410
 
411
  }
412
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
413
  /**
414
  * Attempt to login to user that does not exist
415
  */
416
  function on_authenticate($user, $username, $password) {
417
 
418
  // Don't log empty usernames
419
- if ( ! trim($username)) {
420
  return $user;
421
  }
422
 
423
  // If username is not a user in the system then this
424
  // is consideraded a failed login attempt
425
- $wp_user = get_user_by( "login", $username );
426
 
427
  if (false === $wp_user) {
428
 
@@ -432,7 +442,11 @@ class SimpleUserLogger extends SimpleLogger
432
  "server_http_user_agent" => $_SERVER["HTTP_USER_AGENT"],
433
  // count all failed logins to unknown users as the same occasions,
434
  // to prevent log being flooded with login/hack attempts
435
- "_occasionsID" => __CLASS__ . '/' . __FUNCTION__
 
 
 
 
436
  );
437
 
438
  /**
@@ -455,7 +469,6 @@ class SimpleUserLogger extends SimpleLogger
455
 
456
  return $user;
457
 
458
-
459
  }
460
 
461
  }
3
  /**
4
  * Logs changes to user logins (and logouts)
5
  */
6
+ class SimpleUserLogger extends SimpleLogger {
 
7
 
8
  public $slug = __CLASS__;
9
 
20
  "capability" => "edit_users",
21
  "messages" => array(
22
  'user_login_failed' => __('Failed to login to account with username "{login_user_login}" because an incorrect password was entered', "simple-history"),
23
+ 'user_unknown_login_failed' => __('Failed to login with username "{failed_login_username}" because no user with that username exists', "simple-history"),
24
  'user_logged_in' => __('Logged in', "simple-history"),
25
  'user_unknown_logged_in' => __("Unknown user logged in", "simple-history"),
26
  'user_logged_out' => __("Logged out", "simple-history"),
32
  Text used in admin:
33
  Log Out of All Other Sessions
34
  Left your account logged in at a public computer? Lost your phone? This will log you out everywhere except your current browser
35
+ */
36
  'user_session_destroy_others' => _x(
37
  'Logged out from all other sessions',
38
  'User destroys other login sessions for themself',
41
  /*
42
  Text used in admin:
43
  'Log %s out of all sessions' ), $profileuser->display_name );
44
+ */
45
  'user_session_destroy_everywhere' => _x(
46
  'Logged out "{user_display_name}" from all sessions',
47
  'User destroys all login sessions for a user',
56
  "options" => array(
57
  _x("Successful user logins", "User logger: search", "simple-history") => array(
58
  "user_logged_in",
59
+ "user_unknown_logged_in",
60
  ),
61
  _x("Failed user logins", "User logger: search", "simple-history") => array(
62
  'user_login_failed',
63
+ 'user_unknown_login_failed',
64
  ),
65
+ _x('User logouts', 'User logger: search', 'simple-history') => array(
66
+ "user_logged_out",
67
  ),
68
+ _x('Created users', 'User logger: search', 'simple-history') => array(
69
+ "user_created",
70
  ),
71
  _x("User profile updates", "User logger: search", "simple-history") => array(
72
+ "user_updated_profile",
73
+ ),
74
+ _x('User deletions', 'User logger: search', 'simple-history') => array(
75
+ "user_deleted",
76
  ),
 
 
 
77
 
78
+ ),
79
+ ), // end search
80
 
81
+ ), // end labels
82
 
83
  );
84
  #sf_d($arr_info);exit;
92
  public function loaded() {
93
 
94
  // Plain logins and logouts
95
+ add_action("wp_login", array($this, "on_wp_login"), 10, 3);
96
+ add_action("wp_logout", array($this, "on_wp_logout"));
97
 
98
  // Failed login attempt to username that exists
99
  add_action("wp_authenticate_user", array($this, "on_wp_authenticate_user"), 10, 2);
100
 
101
  // Failed to login to user that did not exist (perhaps brute force)
102
+ add_filter('authenticate', array($this, "on_authenticate"), 10, 3);
103
 
104
  // User is changed
105
  add_action("profile_update", array($this, "on_profile_update"), 10, 2);
108
  add_action("user_register", array($this, "on_user_register"), 10, 2);
109
 
110
  // User is deleted
111
+ add_action('delete_user', array($this, "on_delete_user"), 10, 2);
112
 
113
  // User sessions is destroyed. AJAX call that we hook onto early.
114
  add_action("wp_ajax_destroy-sessions", array($this, "on_destroy_user_session"), 0);
115
 
116
  }
117
 
 
118
  /**
119
  * Called when user dessions are destroyed from admin
120
  * Can be called for current logged in user = destroy all other sessions
127
 
128
  /*
129
  Post params:
130
+ nonce: a14df12195
131
+ user_id: 1
132
+ action: destroy-sessions
133
+ */
134
 
135
+ $user = get_userdata((int) $_POST['user_id']);
136
 
137
+ if ($user) {
138
+ if (!current_user_can('edit_user', $user->ID)) {
139
  $user = false;
140
+ } elseif (!wp_verify_nonce($_POST['nonce'], 'update-user_' . $user->ID)) {
141
  $user = false;
142
  }
143
  }
144
 
145
+ if (!$user) {
146
  // Could not log out user sessions. Please try again.
147
  return;
148
  }
149
 
150
+ $sessions = WP_Session_Tokens::get_instance($user->ID);
151
 
152
  $context = array();
153
 
154
+ if ($user->ID === get_current_user_id()) {
155
 
156
  $this->infoMessage("user_session_destroy_others");
157
 
176
  */
177
  public function on_delete_user($user_id, $reassign) {
178
 
179
+ $wp_user_to_delete = get_userdata($user_id);
180
 
181
  // wp_user->roles (array) - the roles the user is part of.
182
  $role = null;
183
+ if (is_array($wp_user_to_delete->roles) && !empty($wp_user_to_delete->roles[0])) {
184
  $role = $wp_user_to_delete->roles[0];
185
  }
186
 
208
  $output = parent::getLogRowPlainTextOutput($row);
209
  $current_user_id = get_current_user_id();
210
 
211
+ if ("user_updated_profile" == $context["_message_key"]) {
212
 
213
+ $wp_user = get_user_by("id", $context["edited_user_id"]);
214
 
215
  // If edited_user_id and _user_id is the same then a user edited their own profile
216
  // Note: it's not the same thing as the currently logged in user (but.. it can be!)
217
+ if ($context["edited_user_id"] === $context["_user_id"]) {
218
 
219
  if ($wp_user) {
220
 
221
+ $context["edit_profile_link"] = get_edit_user_link($wp_user->ID);
222
 
223
  // User still exist, so link to their profile
224
+ if ($current_user_id === $context["_user_id"]) {
225
 
226
  // User that is viewing the log is the same as the edited user
227
  $msg = __('Edited <a href="{edit_profile_link}">your profile</a>', "simple-history");
249
  // Edited user still exist, so link to their profile
250
  $context["edit_profile_link"] = get_edit_user_link($wp_user->ID);
251
  $msg = __('Edited the profile for user <a href="{edit_profile_link}">{edited_user_login} ({edited_user_email})</a>', "simple-history");
252
+ $output = $this->interpolate($msg, $context);
253
 
254
  } else {
255
 
259
 
260
  }
261
 
262
+ }// if user_updated_profile
263
 
264
  return $output;
265
  }
266
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
267
  /**
268
  * User logs in
269
  *
272
  */
273
  function on_wp_login($user_login, $user) {
274
 
275
+ $context = array(
276
+ "user_login" => $user_login
277
+ );
278
+
279
+ if ( isset( $user_login ) ) {
280
 
281
+ $user_obj = get_user_by( "login", $user_login );
282
+
283
+ } else if ( isset( $user ) && isset( $user->ID ) ) {
284
+
285
+ $user_obj = get_user_by( "id", $user->ID );
286
+
287
+ }
288
+
289
+ if ( is_a( $user_obj, "WP_User" ) ) {
290
 
291
  $context = array(
292
+ "user_id" => $user_obj->ID,
293
+ "user_email" => $user_obj->user_email,
294
+ "user_login" => $user_obj->user_login,
295
  );
296
 
297
  // Override some data that is usually set automagically by Simple History
298
  // Because wp_get_current_user() does not return any data yet at this point
299
  $context["_initiator"] = SimpleLoggerLogInitiators::WP_USER;
300
+ $context["_user_id"] = $user_obj->ID;
301
+ $context["_user_login"] = $user_obj->user_login;
302
+ $context["_user_email"] = $user_obj->user_email;
303
  $context["server_http_user_agent"] = $_SERVER["HTTP_USER_AGENT"];
304
 
305
  $this->infoMessage("user_logged_in", $context);
306
 
307
  } else {
308
 
309
+ // Could not get any info about the user logging in
310
+ $this->warningMessage("user_unknown_logged_in", $context);
 
 
311
  }
312
+
313
  }
314
 
315
  /**
327
  */
328
  function on_profile_update($user_id) {
329
 
330
+ if (!$user_id || !is_numeric($user_id)) {
331
  return;
332
+ }
333
 
334
+ $wp_user_edited = get_userdata($user_id);
335
 
336
  $context = array(
337
  "edited_user_id" => $wp_user_edited->ID,
349
  */
350
  function on_user_register($user_id) {
351
 
352
+ if (!$user_id || !is_numeric($user_id)) {
353
  return;
354
+ }
355
 
356
+ $wp_user_added = get_userdata($user_id);
357
 
358
  // wp_user->roles (array) - the roles the user is part of.
359
  $role = null;
360
+ if (is_array($wp_user_added->roles) && !empty($wp_user_added->roles[0])) {
361
  $role = $wp_user_added->roles[0];
362
  }
363
 
373
 
374
  }
375
 
376
+ /**
377
+ * Log failed login attempt to username that exists
378
+ *
379
+ * @param object $user user object that was tried to gain access to
380
+ * @param string password used
381
+ */
382
+ function on_wp_authenticate_user($user, $password) {
383
+
384
+ // Only log failed attempts
385
+ if (!wp_check_password($password, $user->user_pass, $user->ID)) {
386
+
387
+ // Overwrite some vars that Simple History set automagically
388
+ $context = array(
389
+ "_initiator" => SimpleLoggerLogInitiators::WEB_USER,
390
+ "_user_id" => null,
391
+ "_user_login" => null,
392
+ "_user_email" => null,
393
+ "login_user_id" => $user->ID,
394
+ "login_user_email" => $user->user_email,
395
+ "login_user_login" => $user->user_login,
396
+ "server_http_user_agent" => $_SERVER["HTTP_USER_AGENT"],
397
+ //"_occasionsID" => __CLASS__ . '/' . __FUNCTION__ . "/failed_user_login/userid:{$user->ID}"
398
+ "_occasionsID" => __CLASS__ . '/failed_user_login',
399
+ );
400
+
401
+ /**
402
+ * Maybe store password too
403
+ * Default is to not do this because of privacy and security
404
+ *
405
+ * @since 2.0
406
+ *
407
+ * @param bool $log_password
408
+ */
409
+ $log_password = false;
410
+ $log_password = apply_filters("simple_history/comments_logger/log_failed_password", $log_password);
411
+ if ($log_password) {
412
+ $context["login_user_password"] = $password;
413
+ }
414
+
415
+ $this->warningMessage("user_login_failed", $context);
416
+
417
+ }
418
+
419
+ return $user;
420
+
421
+ }
422
+
423
  /**
424
  * Attempt to login to user that does not exist
425
  */
426
  function on_authenticate($user, $username, $password) {
427
 
428
  // Don't log empty usernames
429
+ if (!trim($username)) {
430
  return $user;
431
  }
432
 
433
  // If username is not a user in the system then this
434
  // is consideraded a failed login attempt
435
+ $wp_user = get_user_by("login", $username);
436
 
437
  if (false === $wp_user) {
438
 
442
  "server_http_user_agent" => $_SERVER["HTTP_USER_AGENT"],
443
  // count all failed logins to unknown users as the same occasions,
444
  // to prevent log being flooded with login/hack attempts
445
+ // "_occasionsID" => __CLASS__ . '/' . __FUNCTION__
446
+ // Use same occasionsID as for failed login attempts to existing users,
447
+ // because log can flood otherwise if hacker is rotating existing and non-existing usernames
448
+ //"_occasionsID" => __CLASS__ . '/' . __FUNCTION__ . "/failed_user_login/userid:{$user->ID}"
449
+ "_occasionsID" => __CLASS__ . '/failed_user_login',
450
  );
451
 
452
  /**
469
 
470
  return $user;
471
 
 
472
  }
473
 
474
  }
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.6
8
 
9
  View changes made by users within WordPress. See who created a page, uploaded an attachment or approved an comment, and more.
10
 
@@ -76,9 +76,15 @@ if ( function_exists("SimpleLogger") ) {
76
 
77
  #### Translations/Languages
78
 
79
- I'm looking for translations of Simple History!
80
 
81
- Check out the [localization](https://developer.wordpress.org/plugins/internationalization/localization/) part of the Plugin Handbook for info on how to translate plugins. When you're done with your translation email it to me at par.thernstrom@gmail.com, or [add a pull request](https://github.com/bonny/WordPress-Simple-History/tree/v2).
 
 
 
 
 
 
82
 
83
  #### Contribute at GitHub
84
 
@@ -101,12 +107,120 @@ initiated by a specific user.
101
 
102
  3. Events have context with extra details - Each logged event can include useful rich formatted extra information. For example: a plugin install can contain author info and a the url to the plugin, and an uploaded image can contain a thumbnail of the image.
103
 
 
104
 
105
  == Changelog ==
106
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  = 2.0.6 (November 2014) =
108
 
109
- - Added: [WordPress 4.1 added the feature to log out a user from all their sessions](http://codex.wordpress.org/Version_4.1#Users). Simple History now logs when a user is logged out from all their sessions except the current browser, or if an admin destroys all sessions for a user. [View screenshot of new session logout log item](http://glui.me/?d=k4cmfmncekmfiib/2014-12-simple-history-changelog-user-sessions.png/)
110
 
111
  - Added: filter to shortcut loading of a dropin. Example that completely skips loading the RSS-feed-dropin:
112
  `add_filter("simple_history/dropin/load_dropin_SimpleHistoryRSSDropin", "__return_false");`
@@ -150,6 +264,25 @@ I've spend hundreds of hours making this update, so if you use it and like it pl
150
  - Users see different logs depending on their capability, for example an administrator will see what plugins have been installed, but an editor will not see any plugin related logs
151
  - Much much more.
152
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  = 1.3.6 =
154
  - Added Polish translation
155
  - Added correct XML encoding and header
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.22
8
 
9
  View changes made by users within WordPress. See who created a page, uploaded an attachment or approved an comment, and more.
10
 
76
 
77
  #### Translations/Languages
78
 
79
+ So far Simple History is translated to:
80
 
81
+ * Swedish
82
+ * German
83
+ * Polish
84
+ * Danish
85
+ * Dutch
86
+
87
+ I'm looking for translations of Simple History in more languages! If you're interested please check out the [localization](https://developer.wordpress.org/plugins/internationalization/localization/) part of the Plugin Handbook for info on how to translate plugins. When you're done with your translation email it to me at par.thernstrom@gmail.com, or [add a pull request](https://github.com/bonny/WordPress-Simple-History/).
88
 
89
  #### Contribute at GitHub
90
 
107
 
108
  3. Events have context with extra details - Each logged event can include useful rich formatted extra information. For example: a plugin install can contain author info and a the url to the plugin, and an uploaded image can contain a thumbnail of the image.
109
 
110
+ 4. Click on the IP address of an entry to view the location of for example a failed login attempt.
111
 
112
  == Changelog ==
113
 
114
+ = 2.0.22 (February 2015) =
115
+
116
+ - Fixed: Deleted plugins were not logged correctly (name and other info was missing).
117
+ - Added: Filter `simple_history/logger/load_logger` and `simple_history/dropin/load_dropin` that can be used to control the loading of each logger or dropin. See [example file](https://github.com/bonny/WordPress-Simple-History/blob/master/examples.php) for usage examples.
118
+ - Fixed: modal window with context data now works better on small screens.
119
+ - Changed: Misc internal changes.
120
+
121
+ = 2.0.21 (February 2015) =
122
+
123
+ - Added: Updates via XML RPC are now logged, for example when using the WordPress app for iOS or Android. Supported actions for now is post/page created, edited, deleted, and media uploads.
124
+ - Added: `_xmlrpc_request` is added to context of event when an event is initiated through a XML-RPC all.
125
+ - Changed: RSS feed now has loglevel of event prepended to the title.
126
+ - Changed: Options logger now only shows the first 250 chars of new and old option values. Really long values could make the log look strange.
127
+ - Added: If constant SIMPLE_HISTORY_LOG_DEBUG is defined and true automatically adds $_GET, $_POST, and more info to each logged event. Mostly useful for the developer, but maybe some of you are a bit paranoid and want it too.
128
+ - Updated: German translation updated.
129
+
130
+ = 2.0.20 (February 2015) =
131
+
132
+ - Added: changes via [WP-CLI](http://wp-cli.org) is now detected (was previously shown as "other").
133
+ - Added: severity level (info, warning, debug, etc.) of event is includes in the RSS output.
134
+ - Changed the way user login is logged. Should fix https://github.com/bonny/WordPress-Simple-History/issues/40 + possible more related issues.
135
+ - Added: filter `simple_history/simple_logger/log_message_key` added, that can be used to shortcut log messages. See [example file](https://github.com/bonny/WordPress-Simple-History/blob/master/examples.php) for usage. Fixes https://wordpress.org/support/topic/stop-logging-certain-types-of-activity.
136
+ - Added: now uses object caching at some places. Should speed up some parts of the plugin for users with caching enabled.
137
+ - Fixed: IP info popup can now be closed with `esc`.
138
+ - Fixed: works better on small screens (like mobile phones) + misc other style related fixes.
139
+
140
+ = 2.0.19 (February 2015) =
141
+
142
+ - Added: Dutch translation by [https://github.com/niknetniko](https://github.com/niknetniko). Thanks!
143
+ - Changed: better compatibilty with plugins like [WP User Avatar](https://wordpress.org/plugins/wp-user-avatar/).
144
+ - Updated: German translation update.
145
+
146
+ = 2.0.18 (January 2015) =
147
+
148
+ - Fixed: really correctly show the version number of the previous version!
149
+
150
+ = 2.0.17 (January 2015) =
151
+
152
+ - Added: messages added using for example `SimpleLogger()->info( __("My log message") )` that have translations now auto translated the message back to english before storing the message (together with the text domain). Then upon retrieval it uses the english message + the text domain to translate the message to the currently selected language. This makes it easier to make multilingual log entries. (Yeah, I know its hard to understand what the heck this does, but it's something good and cool, trust me!)
153
+ - Added: A sidebar with text contents on the history page.
154
+ - Changed: Search now shows only the search box by default, with a link to show all search options.
155
+ - Fixed: Search is now available at the dashboard again. Hooray!
156
+ - Fixed: Old entries were not cleared automatically. Now it correctly removes old events, so your database will not risk growing to large.
157
+ - Fixed: Quick stats could show two messages sometimes.
158
+ - Fixed: When headers like `HTTP_X_FORWARDED_FOR` exists all valid IPs in that header is now stored.
159
+ - Fixed: Plugin updates via third party software like [InfiniteWP](http://infinitewp.com/) should now correctly show the version number of the previous version.
160
+ - Updated: German translation updated.
161
+ - Notice: Do you read these messages? Then you must love this plugin! Come on then, [go and give it a nice review](https://wordpress.org/support/view/plugin-reviews/simple-history).
162
+
163
+ = 2.0.16 (January 2015) =
164
+
165
+ - 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.
166
+ - 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.
167
+ - Changed: use "n similar events" instead of "n more", to more cleary mark that the grouped events are not necessary exactly the same kind.
168
+ - 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.
169
+
170
+ = 2.0.15 (January 2015) =
171
+
172
+ - Fixed: Widget changes where not always translated.
173
+ - Fixed: More RSS fixes to make feed valid. Maybe even for real this time.
174
+ - Updated: German translation updated.
175
+
176
+ = 2.0.14 (January 2015) =
177
+
178
+ - Added: Danish translation added. Thanks [ThomasDK81](https://github.com/ThomasDK81)!
179
+ - Misc translation fixes, for example the log levels where not translateable (it may be a good idea to keep the original English ones however because they are the ones that are common in other software).
180
+
181
+ = 2.0.13 (January 2015) =
182
+
183
+ - Fixed: RSS feed is now valid according to http://validator.w3.org/. Fixes https://wordpress.org/support/topic/a-feed-which-was-valid-under-v206-is-no-longer-under-v209-latest.
184
+ - Translation fixes. Thanks [ThomasDK81](https://github.com/ThomasDK81)!
185
+
186
+ = 2.0.12 (January 2015) =
187
+
188
+ - Fixed: Deleted attachments did not get translations.
189
+ - Fixed: A notice when showing details for a deleted attachment.
190
+
191
+ = 2.0.11 (January 2015) =
192
+
193
+ - Fixed: Comments where not logged correctly.
194
+ - Fixed: Comments where not translated correctly.
195
+ - Updated: German translation updated.
196
+
197
+ = 2.0.10 (January 2015) =
198
+
199
+ - Updated: Polish translation updated. Thanks [https://github.com/m-czardybon](m-czardybon)!
200
+ - Updated: German translation updated. Thanks [http://klein-aber-fein.de/](Ralph)!
201
+ - Updated: Swedish translation updated.
202
+
203
+ = 2.0.9 (December 2014) =
204
+
205
+ - Actually enable IP address lookup for all users. Sorry for missing to do that! ;)
206
+
207
+ = 2.0.8 (December 2014) =
208
+
209
+ - Added: IP addresses can now be clicked to view IP address info from [ipinfo.io](http://ipinfo.io). This will get you the location and network of an IP address and help you determine from where for example a failed login attempt originates from. [See screenshot of IP address info in action](http://glui.me/?d=y89nbgmvmfnxl4r/ip%20address%20information%20popup.png/).
210
+ - Added: new action `simple_history/admin_footer`, to output HTML and JavaScript in footer on pages that belong to Simple History
211
+ - Added: new trigger for JavaScript: `SimpleHistory:logReloadStart`. Fired when the log starts to reload, like when using the pagination or using the filter function.
212
+ - Fixed: use Mustache-inspired template tags instead of Underscore default ones, because they don't work with PHP with asp_tags on.
213
+ - Updated: Swedish translation updated
214
+
215
+ = 2.0.7 (December 2014) =
216
+
217
+ - Fix: no message when restoring page from trash
218
+ - Fix: use correct width for media attachment
219
+ - Add: filter `simple_history/logrowhtmloutput/classes`, to modify HTML classes added to each log row item
220
+
221
  = 2.0.6 (November 2014) =
222
 
223
+ - Added: [WordPress 4.1 added the feature to log out a user from all their sessions](http://codex.wordpress.org/Version_4.1#Users). Simple History now logs when a user is logged out from all their sessions except the current browser, or if an admin destroys all sessions for a user. [View screenshot of new session logout log item](https://dl.dropboxusercontent.com/s/k4cmfmncekmfiib/2014-12-simple-history-changelog-user-sessions.png)
224
 
225
  - Added: filter to shortcut loading of a dropin. Example that completely skips loading the RSS-feed-dropin:
226
  `add_filter("simple_history/dropin/load_dropin_SimpleHistoryRSSDropin", "__return_false");`
264
  - Users see different logs depending on their capability, for example an administrator will see what plugins have been installed, but an editor will not see any plugin related logs
265
  - Much much more.
266
 
267
+ = 1.3.11 =
268
+ - Don't use deprecated function get_commentdata(). Fixes https://wordpress.org/support/topic/get_commentdata-function-is-deprecated.
269
+ - Don't use mysql_query() directly. Fixes https://wordpress.org/support/topic/deprecated-mysql-warning.
270
+ - Beta testers wanted! I'm working on the next version of Simple History and now I need some beta testers. If you want to try out the shiny new and cool version please download the [v2 branch](https://github.com/bonny/WordPress-Simple-History/tree/v2) over at GitHub. Thanks!
271
+
272
+ = 1.3.10 =
273
+ - Fix: correct usage of "its"
274
+ - Fix: removed serif font in log. Fixes https://wordpress.org/support/topic/two-irritations-and-pleas-for-change.
275
+
276
+ = 1.3.9 =
277
+ - Fixed strict standards warning
278
+ - Tested on WordPress 4.0
279
+
280
+ = 1.3.8 =
281
+ - Added filter for rss feed: `simple_history/rss_feed_show`. Fixes more things in this thread: http://wordpress.org/support/topic/more-rss-feed-items.
282
+
283
+ = 1.3.7 =
284
+ - Added filter for rss feed: `simple_history/rss_feed_args`. Fixes http://wordpress.org/support/topic/more-rss-feed-items.
285
+
286
  = 1.3.6 =
287
  - Added Polish translation
288
  - Added correct XML encoding and header
screenshot-1.png DELETED
Binary file
screenshot-2.png DELETED
Binary file
screenshot-3.png DELETED
Binary file
templates/settings-statsForGeeks.php CHANGED
@@ -100,9 +100,9 @@ echo "<p class='hide-if-no-js'><button class='button js-SimpleHistoryShowsStatsF
100
  echo "
101
  <thead>
102
  <tr>
103
- <th>Slug</th>
104
- <th>Name</th>
105
  <th>Description</th>
 
106
  <th>Capability</th>
107
  <th>Rows count</th>
108
  </tr>
@@ -143,23 +143,36 @@ echo "<p class='hide-if-no-js'><button class='button js-SimpleHistoryShowsStatsF
143
  }
144
 
145
  $logger_info = $logger->getInfo();
 
 
 
 
 
 
 
 
 
146
 
147
  printf(
148
  '
149
  <tr class="%6$s">
150
- <td>%2$s</td>
151
- <td>%3$s</td>
152
- <td>%4$s</td>
153
- <td>%5$s</td>
154
- <td>%1$s</td>
 
 
 
155
  </tr>
156
  ',
157
  $one_logger_count->count,
158
  $one_logger_slug,
159
  esc_html( $logger_info["name"]),
160
- esc_html( $logger_info["description"]),
161
  esc_html( $logger_info["capability"]),
162
- $loopnum % 2 ? " alt " : "" // 6
 
163
  );
164
 
165
  $loopnum++;
100
  echo "
101
  <thead>
102
  <tr>
103
+ <th>Name + Slug</th>
 
104
  <th>Description</th>
105
+ <th>Messages</th>
106
  <th>Capability</th>
107
  <th>Rows count</th>
108
  </tr>
143
  }
144
 
145
  $logger_info = $logger->getInfo();
146
+ $logger_messages = $logger_info["messages"];
147
+
148
+ $html_logger_messages = "";
149
+ foreach ($logger_messages as $message_key => $message) {
150
+ $html_logger_messages .= sprintf('<li>%1$s</li>', esc_html($message));
151
+ }
152
+ if ($html_logger_messages) {
153
+ $html_logger_messages = "<ul>{$html_logger_messages}</ul>";
154
+ }
155
 
156
  printf(
157
  '
158
  <tr class="%6$s">
159
+ <td>
160
+ <p><strong>%3$s</strong>
161
+ <br><code>%2$s</code></p>
162
+ </td>
163
+ <td><p>%4$s</p></td>
164
+ <td>%7$s</td>
165
+ <td><p>%5$s</p></td>
166
+ <td><p>%1$s</p></td>
167
  </tr>
168
  ',
169
  $one_logger_count->count,
170
  $one_logger_slug,
171
  esc_html( $logger_info["name"]),
172
+ esc_html( $logger_info["description"]), // 4
173
  esc_html( $logger_info["capability"]),
174
+ $loopnum % 2 ? " alt " : "", // 6
175
+ $html_logger_messages // 7
176
  );
177
 
178
  $loopnum++;