settings-settings-logs.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. $GLOBALS['organizrPages'][] = 'settings_settings_logs';
  3. function get_page_settings_settings_logs($Organizr)
  4. {
  5. if (!$Organizr) {
  6. $Organizr = new Organizr();
  7. }
  8. if ((!$Organizr->hasDB())) {
  9. return false;
  10. }
  11. if (!$Organizr->qualifyRequest(1, true)) {
  12. return false;
  13. }
  14. $logsDropdown = $Organizr->buildLogDropdown();
  15. $filterDropdown = $Organizr->buildFilterDropdown();
  16. return '
  17. <div class="btn-group m-b-20 pull-left">' . $logsDropdown . '</div>
  18. <button class="btn btn-danger waves-effect waves-light pull-right purgeLog" type="button" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="Purge Log"><i class="fa fa-trash"></i></button>
  19. <button onclick="shortcut(\'log-settings\')" class="btn btn-inverse waves-effect waves-light pull-right m-r-5" type="button" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="Log Settings"><i class="fa fa-cog"></i></button>
  20. <button onclick="exportLogs()" class="btn btn-success waves-effect waves-light pull-right m-r-5" type="button" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="Export Logs"><i class="fa fa-download"></i></button>
  21. <button onclick="organizrLogTable.clear().draw().ajax.reload(null, false)" class="btn btn-info waves-effect waves-light pull-right reloadLog m-r-5" type="button" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="Reload Log"><i class="fa fa-refresh"></i></button>
  22. <button onclick="toggleKillOrganizrLiveUpdate(' . $Organizr->config['logLiveUpdateRefresh'] . ');" class="btn btn-primary waves-effect waves-light pull-right organizr-log-live-update m-r-5" type="button" data-toggle="tooltip" data-placement="bottom" title="" data-original-title="Live Update"><i class="fa fa-clock-o"></i></button>
  23. ' . $filterDropdown . '
  24. <div class="clearfix"></div>
  25. <div class="white-box bg-org logTable orgLogDiv">
  26. <h3 class="box-title m-b-0" lang="en">Organizr Logs</h3>
  27. <div class="table-responsive">
  28. <table id="organizrLogTable" class="table table-striped compact nowrap">
  29. <thead>
  30. <tr>
  31. <th lang="en">Date</th>
  32. <th lang="en">Severity</th>
  33. <th lang="en">Function</th>
  34. <th lang="en">Message</th>
  35. <th lang="en">IP Address</th>
  36. <th lang="en">User</th>
  37. <th></th>
  38. </tr>
  39. </thead>
  40. <tbody></tbody>
  41. </table>
  42. </div>
  43. </div>
  44. <!-- /.container-fluid -->
  45. <script>
  46. clearTimeout(timeouts[\'organizr-log\']);
  47. $.fn.dataTable.ext.errMode = "none";
  48. var organizrLogTable = $("#organizrLogTable")
  49. .on("error.dt", function(e, settings, techNote, message) {
  50. console.log("An error has been reported by DataTables: ", message);
  51. organizrLogTable.draw();
  52. })
  53. .DataTable({
  54. "ajax": {
  55. "url": "api/v2/log/0?filter=NONE&pageSize=1000&offset=0",
  56. "dataSrc": function(json) {
  57. return json.response.data.results;
  58. }
  59. },
  60. "deferRender": true,
  61. "pageLength": ' . (int)$Organizr->config['logPageSize'] . ',
  62. "columns": [{
  63. data: "datetime",
  64. render: function(data, type, row) {
  65. if (type === "display" || type === "filter") {
  66. var m = moment.tz(data + "Z", activeInfo.timezone);
  67. return moment(m).format("LLL");
  68. }
  69. return data;
  70. }
  71. }, {
  72. data: "log_level",
  73. render: function(data, type, row) {
  74. if (type === "display" || type === "filter") {
  75. return logIcon(data);
  76. }
  77. return logIcon(data);
  78. }
  79. }, {
  80. data: "channel"
  81. }, {
  82. data: "message"
  83. }, {
  84. data: "remote_ip_address",
  85. "width": "5%",
  86. render: function(data, type, row) {
  87. return ipInfoSpan(data);
  88. }
  89. }, {
  90. "data": "username"
  91. }, {
  92. data: "context",
  93. render: function(data, type, row) {
  94. return logContext(row);
  95. },
  96. orderable: false
  97. }, ],
  98. "order": [
  99. [0, "desc"]
  100. ],
  101. })
  102. </script>
  103. ';
  104. }