settings-settings-logs.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  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. return '
  15. <script>
  16. $(document).on("click", ".swapLog", function(e) {
  17. switch ($(this).attr(\'data-name\')){
  18. case \'loginLog\':
  19. loginLogTable.ajax.reload(null, false);
  20. break;
  21. case \'orgLog\':
  22. organizrLogTable.ajax.reload(null, false);
  23. break;
  24. default:
  25. //nada
  26. //loginLogTable
  27. }
  28. var log = $(this).attr(\'data-name\')+\'Div\';
  29. $(\'.logTable\').addClass(\'hidden\');
  30. $(\'.\'+log).addClass(\'show\').removeClass(\'hidden\');
  31. $(\'.swapLog\').removeClass(\'active\');
  32. $(this).addClass(\'active\');
  33. });
  34. </script>
  35. <div class="btn-group m-b-20 pull-left">
  36. <button type="button" class="btn btn-default btn-outline waves-effect bg-org swapLog active" data-name="loginLog" data-path="' . $Organizr->organizrLoginLog . '" lang="en">Login Log</button>
  37. <button type="button" class="btn btn-default btn-outline waves-effect bg-org swapLog" data-name="orgLog" data-path="' . $Organizr->organizrLog . '" lang="en">Organizr Log</button>
  38. </div>
  39. <button class="btn btn-danger btn-sm waves-effect waves-light pull-right purgeLog" type="button"><span class="btn-label"><i class="fa fa-trash"></i></span>Purge Log</button>
  40. <div class="clearfix"></div>
  41. <div class="white-box bg-org logTable loginLogDiv">
  42. <h3 class="box-title m-b-0" lang="en">Login Logs</h3>
  43. <div class="table-responsive">
  44. <table id="loginLogTable" class="table table-striped">
  45. <thead>
  46. <tr>
  47. <th lang="en">Date</th>
  48. <th lang="en">Username</th>
  49. <th lang="en">IP Address</th>
  50. <th lang="en">Type</th>
  51. </tr>
  52. </thead>
  53. <tfoot>
  54. <tr>
  55. <th lang="en">Date</th>
  56. <th lang="en">Username</th>
  57. <th lang="en">IP Address</th>
  58. <th lang="en">Type</th>
  59. </tr>
  60. </tfoot>
  61. <tbody></tbody>
  62. </table>
  63. </div>
  64. </div>
  65. <div class="white-box bg-org logTable orgLogDiv hidden">
  66. <h3 class="box-title m-b-0" lang="en">Organizr Logs</h3>
  67. <div class="table-responsive">
  68. <table id="organizrLogTable" class="table table-striped">
  69. <thead>
  70. <tr>
  71. <th lang="en">Date</th>
  72. <th lang="en">Username</th>
  73. <th lang="en">IP Address</th>
  74. <th lang="en">Message</th>
  75. <th lang="en">Type</th>
  76. </tr>
  77. </thead>
  78. <tfoot>
  79. <tr>
  80. <th lang="en">Date</th>
  81. <th lang="en">Username</th>
  82. <th lang="en">IP Address</th>
  83. <th lang="en">Message</th>
  84. <th lang="en">Type</th>
  85. </tr>
  86. </tfoot>
  87. <tbody></tbody>
  88. </table>
  89. </div>
  90. </div>
  91. <!-- /.container-fluid -->
  92. <script>
  93. //$.fn.dataTable.moment(\'DD-MMM-Y HH:mm:ss\');
  94. $.fn.dataTable.ext.errMode = \'none\';
  95. var loginLogTable = $("#loginLogTable")
  96. .on( \'error.dt\', function ( e, settings, techNote, message ) {
  97. console.log( \'An error has been reported by DataTables: \', message );
  98. loginLogTable.draw();
  99. } )
  100. .DataTable( {
  101. "ajax": {
  102. "url": "api/v2/log/login",
  103. "dataSrc": function ( json ) {
  104. return json.response.data;
  105. }
  106. },
  107. "columns": [
  108. { data: \'utc_date\',
  109. render: function ( data, type, row ) {
  110. if ( type === \'display\' || type === \'filter\' ) {
  111. var m = moment.tz(data, activeInfo.timezone);
  112. return moment(m).format(\'LLL\');
  113. }
  114. return data;
  115. }
  116. },
  117. { "data": "username" },
  118. { data: \'ip\',
  119. render: function ( data, type, row ) {
  120. return ipInfoSpan(data);
  121. }
  122. },
  123. { data: \'auth_type\',
  124. render: function ( data, type, row ) {
  125. if ( type === \'display\' || type === \'filter\' ) {
  126. return logIcon(data);
  127. }
  128. return logIcon(data);
  129. }
  130. }
  131. ],
  132. "order": [[ 0, \'desc\' ]],
  133. } );
  134. var organizrLogTable = $("#organizrLogTable")
  135. .on( \'error.dt\', function ( e, settings, techNote, message ) {
  136. console.log( \'An error has been reported by DataTables: \', message );
  137. organizrLogTable.draw();
  138. } )
  139. .DataTable( {
  140. "ajax": {
  141. "url": "api/v2/log/organizr",
  142. "dataSrc": function ( json ) {
  143. return json.response.data;
  144. }
  145. },
  146. "columns": [
  147. { data: \'utc_date\',
  148. render: function ( data, type, row ) {
  149. if ( type === \'display\' || type === \'filter\' ) {
  150. var m = moment.tz(data, activeInfo.timezone);
  151. return moment(m).format(\'LLL\');
  152. }
  153. return data;}
  154. },
  155. { "data": "username" },
  156. { data: \'ip\',
  157. render: function ( data, type, row ) {
  158. return ipInfoSpan(data);
  159. }
  160. },
  161. { "data": "message" },
  162. { data: \'type\',
  163. render: function ( data, type, row ) {
  164. if ( type === \'display\' || type === \'filter\' ) {
  165. return logIcon(data);
  166. }
  167. return logIcon(data);
  168. }
  169. }
  170. ],
  171. "order": [[ 0, \'desc\' ]],
  172. } );
  173. </script>
  174. ';
  175. }