PageRenderTime 59ms CodeModel.GetById 30ms RepoModel.GetById 0ms app.codeStats 1ms

/admin/log.php

https://github.com/Fusion/n2
PHP | 848 lines | 571 code | 178 blank | 99 comment | 90 complexity | 686bf67fa127298db58a08afe52149a4 MD5 | raw file
Possible License(s): BSD-2-Clause
  1. <?php
  2. /*
  3. * "n2" - Forum Software - a nBBS v0.6 + wtcBB remix.
  4. * Copyright (C) 2009 Chris F. Ravenscroft
  5. *
  6. * This program is free software; you can redistribute it and/or modify it under
  7. * the terms of the GNU General Public License as published by the Free Software
  8. * Foundation; either version 2 of the License, or (at your option) any later
  9. * version.
  10. *
  11. * This program is distributed in the hope that it will be useful, but WITHOUT
  12. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  13. * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  14. * details.
  15. *
  16. * You should have received a copy of the GNU General Public License along with
  17. * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  18. * Place, Suite 330, Boston, MA 02111-1307 USA
  19. *
  20. * Questions? We can be reached at http://www.nextbbs.com
  21. */
  22. // ************************************************** \\
  23. ## ************************************************** ##
  24. ## ****************** wtcBB LOGS ******************** ##
  25. ## ************************************************** ##
  26. ## ************************************************** ##
  27. // ************************************************** \\
  28. // Do CONSTANTS
  29. define('AREA', 'ADMIN-LOGS');
  30. define('FILE_ACTION', 'Logs');
  31. // require files
  32. require_once('./includes/global_admin.php');
  33. // log action
  34. new LogAdmin();
  35. // admin logs
  36. if($_GET['do'] == 'admin') {
  37. // make sure we have appropriate permissions...
  38. if(!$User->canAdmin('logAdmin') AND !$User->canAdmin('pruneLogs')) {
  39. new WtcBBException($lang['admin_error_privilegesAdmin']);
  40. }
  41. // build nows
  42. $nows = WtcDate::buildNows();
  43. if(isset($_REQUEST['type'])) {
  44. if($_REQUEST['type'] == 'view') {
  45. // all users?
  46. if($_REQUEST['log']['userid'] == -1) {
  47. $userCond = '%';
  48. }
  49. else {
  50. $userCond = $_REQUEST['log']['userid'];
  51. }
  52. // all scripts?
  53. if($_REQUEST['log']['script'] == -1) {
  54. $scriptCond = '%';
  55. }
  56. else {
  57. $scriptCond = $_REQUEST['log']['script'];
  58. }
  59. // invalid order?
  60. if($_REQUEST['log']['orderBy'] != 'log_date' AND $_REQUEST['log']['orderBy'] != 'log_username' AND $_REQUEST['log']['orderBy'] != 'log_ip') {
  61. $_REQUEST['log']['orderBy'] = 'log_date';
  62. }
  63. // add DESC to log_date...
  64. if($_REQUEST['log']['orderBy'] == 'log_date') {
  65. $_REQUEST['log']['orderBy'] .= ' DESC';
  66. }
  67. // form query...
  68. $search = new Query($query['log_admin']['search'], Array(1 => $userCond, $scriptCond, $_REQUEST['log']['orderBy']));
  69. // nothin? o_0
  70. if(!$wtcDB->numRows($search)) {
  71. new WtcBBException($lang['admin_error_noResults']);
  72. }
  73. new AdminHTML('header', $lang['admin_log_admin_results'] . ' ' . $wtcDB->numRows($search), true);
  74. new AdminHTML('tableBegin', $lang['admin_log_admin_showing'], true, Array('form' => false, 'colspan' => 6));
  75. $thCells = Array(
  76. $lang['admin_log_logid'] => Array('th' => true),
  77. $lang['users_username'] => Array('th' => true),
  78. $lang['admin_log_date'] => Array('th' => true),
  79. $lang['admin_log_admin_filePath'] => Array('th' => true),
  80. $lang['admin_log_admin_fileAction'] => Array('th' => true),
  81. $lang['users_ip'] => Array('th' => true)
  82. );
  83. new AdminHTML('tableCells', '', true, Array('cells' => $thCells));
  84. $count = -1;
  85. $start = ($_REQUEST['page'] - 1) * $_REQUEST['log']['perpage'];
  86. $end = $start + $_REQUEST['log']['perpage'];
  87. while($log = $wtcDB->fetchArray($search)) {
  88. $count++;
  89. // should we skip..?
  90. if($count < $start) {
  91. continue;
  92. }
  93. // save some time and break
  94. if($count >= $end) {
  95. break;
  96. }
  97. $logDate = new WtcDate('date', $log['log_date']);
  98. $logTime = new WtcDate('time', $log['log_date']);
  99. $cells = Array(
  100. $log['log_adminid'] => Array('class' => 'center'),
  101. '<a href="admin.php?file=user&amp;edit=' . $log['log_userid'] . '">' . $log['log_username'] . '</a>' => Array(),
  102. $logDate->getDate() . ' ' . $lang['global_at'] . ' ' . $logTime->getDate() => Array('class' => 'small'),
  103. $log['log_filePath'] => Array(),
  104. $log['log_fileAction'] => Array(),
  105. $log['log_ip'] => Array()
  106. );
  107. new AdminHTML('tableCells', '', true, Array('cells' => $cells));
  108. }
  109. // form our URL...
  110. $url = 'admin.php?file=log&amp;do=admin&amp;type=view';
  111. // loop through our request...
  112. foreach($_REQUEST['log'] as $key => $v) {
  113. $url .= '&amp;log%5B' . $key . '%5D=' . $v;
  114. }
  115. // instantiate page numbers
  116. $pageNums = new PageNumbers($_REQUEST['page'], $wtcDB->numRows($search), $_REQUEST['log']['perpage'], $url, true);
  117. new AdminHTML('tableEnd', '', true, Array('form' => -1, 'footerText' => $pageNums->getPageNumbers(), 'colspan' => 6));
  118. new AdminHTML('footer', '', true);
  119. exit;
  120. }
  121. // prune
  122. else {
  123. // invalid date?
  124. if(empty($_POST['delete']['day']) OR empty($_POST['delete']['year'])) {
  125. new WtcBBException($lang['admin_error_invalidDates']);
  126. }
  127. // form date stamp
  128. $dateStamp = mktime(0, 0, 0, $_POST['delete']['month'], $_POST['delete']['day'], $_POST['delete']['year']);
  129. // all users?
  130. if($_POST['log']['userid'] == -1) {
  131. $userCond = '%';
  132. }
  133. else {
  134. $userCond = $_POST['log']['userid'];
  135. }
  136. // all scripts?
  137. if($_POST['log']['script'] == -1) {
  138. $scriptCond = '%';
  139. }
  140. else {
  141. $scriptCond = $_POST['log']['script'];
  142. }
  143. // form query...
  144. $delete = new Query($query['log_admin']['delete'], Array(1 => $userCond, $scriptCond, $dateStamp));
  145. new WtcBBThanks($lang['admin_thanks_msg'], 'admin.php?file=log&amp;do=admin');
  146. }
  147. }
  148. new AdminHTML('header', $lang['admin_log_admin'], true);
  149. if($User->canAdmin('logAdmin')) {
  150. new AdminHTML('tableBegin', $lang['admin_log_view'], true, Array(
  151. 'hiddenInputs' => Array(
  152. 'type' => 'view',
  153. 'page' => 1
  154. )
  155. ));
  156. new AdminHTML('tableRow', Array(
  157. 'title' => $lang['admin_log_perpage'],
  158. 'desc' => $lang['admin_log_perpage_desc'],
  159. 'type' => 'text',
  160. 'name' => 'log[perpage]',
  161. 'value' => 15
  162. ), true);
  163. // get usernames...
  164. $getUsernames = new Query($query['log_admin']['get_usernames']);
  165. $logUsers = Array();
  166. $logUsers[$lang['admin_allUsers']] = -1;
  167. while($logger = $wtcDB->fetchArray($getUsernames)) {
  168. $logUsers[$logger['log_username']] = $logger['log_userid'];
  169. }
  170. new AdminHTML('tableRow', Array(
  171. 'title' => $lang['admin_log_admin_user'],
  172. 'desc' => $lang['admin_log_admin_user_desc'],
  173. 'type' => 'select',
  174. 'name' => 'log[userid]',
  175. 'select' => Array('fields' => $logUsers, 'select' => -1)
  176. ), true);
  177. // get file scripts...
  178. $getScripts = new Query($query['log_admin']['get_scripts']);
  179. $logScripts = Array();
  180. $logScripts[$lang['admin_log_allScripts']] = -1;
  181. while($script = $wtcDB->fetchArray($getScripts)) {
  182. $logScripts[$script['log_fileAction']] = $script['log_fileAction'];
  183. }
  184. new AdminHTML('tableRow', Array(
  185. 'title' => $lang['admin_log_admin_script'],
  186. 'desc' => $lang['admin_log_admin_script_desc'],
  187. 'type' => 'select',
  188. 'name' => 'log[script]',
  189. 'select' => Array('fields' => $logScripts, 'select' => -1)
  190. ), true);
  191. // form order by
  192. $orderBy = Array(
  193. $lang['admin_log_date'] => 'log_date',
  194. $lang['admin_log_username'] => 'log_username',
  195. $lang['admin_log_ip'] => 'log_ip'
  196. );
  197. new AdminHTML('tableRow', Array(
  198. 'title' => $lang['admin_log_orderBy'],
  199. 'desc' => $lang['admin_log_orderBy_desc'],
  200. 'type' => 'select',
  201. 'name' => 'log[orderBy]',
  202. 'select' => Array('fields' => $orderBy, 'select' => 'log_date')
  203. ), true);
  204. new AdminHTML('tableEnd', '', true);
  205. }
  206. if($User->canAdmin('pruneLogs')) {
  207. new AdminHTML('tableBegin', $lang['admin_log_prune'], true, Array(
  208. 'hiddenInputs' => Array(
  209. 'type' => 'prune'
  210. )
  211. ));
  212. // get usernames...
  213. $getUsernames = new Query($query['log_admin']['get_usernames']);
  214. $logUsers = Array();
  215. $logUsers[$lang['admin_allUsers']] = -1;
  216. while($logger = $wtcDB->fetchArray($getUsernames)) {
  217. $logUsers[$logger['log_username']] = $logger['log_userid'];
  218. }
  219. new AdminHTML('tableRow', Array(
  220. 'title' => $lang['admin_log_admin_user'],
  221. 'desc' => $lang['admin_log_admin_user_desc'],
  222. 'type' => 'select',
  223. 'name' => 'log[userid]',
  224. 'select' => Array('fields' => $logUsers, 'select' => -1)
  225. ), true);
  226. // get file scripts...
  227. $getScripts = new Query($query['log_admin']['get_scripts']);
  228. $logScripts = Array();
  229. $logScripts[$lang['admin_log_allScripts']] = -1;
  230. while($script = $wtcDB->fetchArray($getScripts)) {
  231. $logScripts[$script['log_fileAction']] = $script['log_fileAction'];
  232. }
  233. new AdminHTML('tableRow', Array(
  234. 'title' => $lang['admin_log_admin_script'],
  235. 'desc' => $lang['admin_log_admin_script_desc'],
  236. 'type' => 'select',
  237. 'name' => 'log[script]',
  238. 'select' => Array('fields' => $logScripts, 'select' => -1)
  239. ), true);
  240. new AdminHTML('tableRow', Array(
  241. 'title' => $lang['admin_log_delete'],
  242. 'desc' => $lang['admin_log_delete_desc'],
  243. 'type' => 'date',
  244. 'month' => Array(
  245. 'name' => 'delete[month]',
  246. 'value' => $nows['month']
  247. ),
  248. 'day' => Array(
  249. 'name' => 'delete[day]',
  250. 'value' => ((($nows['date'] + 1) > $nows['numDays']) ? 1 : (date('j', NOW) + 1))
  251. ),
  252. 'year' => Array(
  253. 'name' => 'delete[year]',
  254. 'value' => $nows['year']
  255. )
  256. ), true);
  257. new AdminHTML('tableEnd', '', true);
  258. }
  259. new AdminHTML('footer', '', true);
  260. }
  261. // moderator logs
  262. else if($_GET['do'] == 'mod') {
  263. // make sure we have appropriate permissions...
  264. if(!$User->canAdmin('logMod') AND !$User->canAdmin('pruneLogs')) {
  265. new WtcBBException($lang['admin_error_privilegesAdmin']);
  266. }
  267. // build nows
  268. $nows = WtcDate::buildNows();
  269. if(isset($_REQUEST['type'])) {
  270. if($_REQUEST['type'] == 'view') {
  271. // all users?
  272. if($_REQUEST['log']['userid'] == -1) {
  273. $userCond = '%';
  274. }
  275. else {
  276. $userCond = $_REQUEST['log']['userid'];
  277. }
  278. // all scripts?
  279. if($_REQUEST['log']['modAction'] == -1) {
  280. $actionCond = '%';
  281. }
  282. else {
  283. $actionCond = $_REQUEST['log']['modAction'];
  284. }
  285. // invalid order?
  286. if($_REQUEST['log']['orderBy'] != 'log_date' AND $_REQUEST['log']['orderBy'] != 'log_username' AND $_REQUEST['log']['orderBy'] != 'log_ip' AND $_REQUEST['log']['orderBy'] != 'log_modAction') {
  287. $_REQUEST['log']['orderBy'] = 'log_date';
  288. }
  289. // add DESC to log_date...
  290. if($_REQUEST['log']['orderBy'] == 'log_date') {
  291. $_REQUEST['log']['orderBy'] .= ' DESC';
  292. }
  293. // form query...
  294. $search = new Query($query['log_mod']['search'], Array(1 => $userCond, $actionCond, $_REQUEST['log']['orderBy']));
  295. // nothin? o_0
  296. if(!$wtcDB->numRows($search)) {
  297. new WtcBBException($lang['admin_error_noResults']);
  298. }
  299. new AdminHTML('header', $lang['admin_log_mod_results'] . ' ' . $wtcDB->numRows($search), true);
  300. new AdminHTML('tableBegin', $lang['admin_log_admin_showing'], true, Array('form' => false, 'colspan' => 6));
  301. $thCells = Array(
  302. $lang['admin_log_logid'] => Array('th' => true),
  303. $lang['users_username'] => Array('th' => true),
  304. $lang['admin_log_date'] => Array('th' => true),
  305. $lang['admin_log_mod_oAction'] => Array('th' => true),
  306. $lang['admin_log_cron_cronResult'] => Array('th' => true),
  307. $lang['users_ip'] => Array('th' => true)
  308. );
  309. new AdminHTML('tableCells', '', true, Array('cells' => $thCells));
  310. $count = -1;
  311. $start = ($_REQUEST['page'] - 1) * $_REQUEST['log']['perpage'];
  312. $end = $start + $_REQUEST['log']['perpage'];
  313. while($log = $wtcDB->fetchArray($search)) {
  314. $count++;
  315. // should we skip..?
  316. if($count < $start) {
  317. continue;
  318. }
  319. // save some time and break
  320. if($count >= $end) {
  321. break;
  322. }
  323. $logDate = new WtcDate('date', $log['log_date']);
  324. $logTime = new WtcDate('time', $log['log_date']);
  325. $cells = Array(
  326. $log['log_modid'] => Array('class' => 'center'),
  327. '<a href="admin.php?file=user&amp;edit=' . $log['log_userid'] . '">' . $log['log_username'] . '</a>' => Array(),
  328. $logDate->getDate() . ' ' . $lang['global_at'] . ' ' . $logTime->getDate() => Array('class' => 'small'),
  329. $log['log_modAction'] => Array(),
  330. $log['log_results'] => Array('class' => 'small'),
  331. $log['log_ip'] => Array()
  332. );
  333. new AdminHTML('tableCells', '', true, Array('cells' => $cells));
  334. }
  335. // form our URL...
  336. $url = 'admin.php?file=log&amp;do=mod&amp;type=view';
  337. // loop through our request...
  338. foreach($_REQUEST['log'] as $key => $v) {
  339. $url .= '&amp;log%5B' . $key . '%5D=' . $v;
  340. }
  341. // instantiate page numbers
  342. $pageNums = new PageNumbers($_REQUEST['page'], $wtcDB->numRows($search), $_REQUEST['log']['perpage'], $url, true);
  343. new AdminHTML('tableEnd', '', true, Array('form' => -1, 'footerText' => $pageNums->getPageNumbers(), 'colspan' => 6));
  344. new AdminHTML('footer', '', true);
  345. exit;
  346. }
  347. // prune
  348. else {
  349. // invalid date?
  350. if(empty($_POST['delete']['day']) OR empty($_POST['delete']['year'])) {
  351. new WtcBBException($lang['admin_error_invalidDates']);
  352. }
  353. // form date stamp
  354. $dateStamp = mktime(0, 0, 0, $_POST['delete']['month'], $_POST['delete']['day'], $_POST['delete']['year']);
  355. // all users?
  356. if($_POST['log']['userid'] == -1) {
  357. $userCond = '%';
  358. }
  359. else {
  360. $userCond = $_POST['log']['userid'];
  361. }
  362. // all scripts?
  363. if($_POST['log']['modAction'] == -1) {
  364. $actionCond = '%';
  365. }
  366. else {
  367. $actionCond = $_POST['log']['modAction'];
  368. }
  369. // form query...
  370. $delete = new Query($query['log_mod']['delete'], Array(1 => $userCond, $actionCond, $dateStamp));
  371. _DEBUG($delete->getFinalSql());
  372. new WtcBBThanks($lang['admin_thanks_msg'], 'admin.php?file=log&amp;do=mod');
  373. }
  374. }
  375. new AdminHTML('header', $lang['admin_log_admin'], true);
  376. if($User->canAdmin('logMod')) {
  377. new AdminHTML('tableBegin', $lang['admin_log_view'], true, Array(
  378. 'hiddenInputs' => Array(
  379. 'type' => 'view',
  380. 'page' => 1
  381. )
  382. ));
  383. new AdminHTML('tableRow', Array(
  384. 'title' => $lang['admin_log_perpage'],
  385. 'desc' => $lang['admin_log_perpage_desc'],
  386. 'type' => 'text',
  387. 'name' => 'log[perpage]',
  388. 'value' => 15
  389. ), true);
  390. // get usernames...
  391. $getUsernames = new Query($query['log_mod']['get_usernames']);
  392. $logUsers = Array();
  393. $logUsers[$lang['admin_allUsers']] = -1;
  394. while($logger = $wtcDB->fetchArray($getUsernames)) {
  395. $logUsers[$logger['log_username']] = $logger['log_userid'];
  396. }
  397. new AdminHTML('tableRow', Array(
  398. 'title' => $lang['admin_log_admin_user'],
  399. 'desc' => $lang['admin_log_admin_user_desc'],
  400. 'type' => 'select',
  401. 'name' => 'log[userid]',
  402. 'select' => Array('fields' => $logUsers, 'select' => -1)
  403. ), true);
  404. // get mod actions...
  405. $getActions = new Query($query['log_mod']['get_actions']);
  406. $logActions = Array();
  407. $logActions[$lang['admin_log_mod_allActions']] = -1;
  408. while($action = $wtcDB->fetchArray($getActions)) {
  409. $logActions[$action['log_modAction']] = $action['log_modAction'];
  410. }
  411. new AdminHTML('tableRow', Array(
  412. 'title' => $lang['admin_log_mod_action'],
  413. 'desc' => $lang['admin_log_mod_action_desc'],
  414. 'type' => 'select',
  415. 'name' => 'log[modAction]',
  416. 'select' => Array('fields' => $logActions, 'select' => -1)
  417. ), true);
  418. // form order by
  419. $orderBy = Array(
  420. $lang['admin_log_date'] => 'log_date',
  421. $lang['admin_log_username'] => 'log_username',
  422. $lang['admin_log_ip'] => 'log_ip',
  423. $lang['admin_log_mod_oAction'] => 'log_modAction'
  424. );
  425. new AdminHTML('tableRow', Array(
  426. 'title' => $lang['admin_log_orderBy'],
  427. 'desc' => $lang['admin_log_orderBy_desc'],
  428. 'type' => 'select',
  429. 'name' => 'log[orderBy]',
  430. 'select' => Array('fields' => $orderBy, 'select' => 'log_date')
  431. ), true);
  432. new AdminHTML('tableEnd', '', true);
  433. }
  434. if($User->canAdmin('pruneLogs')) {
  435. new AdminHTML('tableBegin', $lang['admin_log_prune'], true, Array(
  436. 'hiddenInputs' => Array(
  437. 'type' => 'prune'
  438. )
  439. ));
  440. // get usernames...
  441. $getUsernames = new Query($query['log_mod']['get_usernames']);
  442. $logUsers = Array();
  443. $logUsers[$lang['admin_allUsers']] = -1;
  444. while($logger = $wtcDB->fetchArray($getUsernames)) {
  445. $logUsers[$logger['log_username']] = $logger['log_userid'];
  446. }
  447. new AdminHTML('tableRow', Array(
  448. 'title' => $lang['admin_log_admin_user'],
  449. 'desc' => $lang['admin_log_admin_user_desc'],
  450. 'type' => 'select',
  451. 'name' => 'log[userid]',
  452. 'select' => Array('fields' => $logUsers, 'select' => -1)
  453. ), true);
  454. // get mod actions...
  455. $getActions = new Query($query['log_mod']['get_actions']);
  456. $logActions = Array();
  457. $logActions[$lang['admin_log_mod_allActions']] = -1;
  458. while($action = $wtcDB->fetchArray($getActions)) {
  459. $logActions[$action['log_modAction']] = $action['log_modAction'];
  460. }
  461. new AdminHTML('tableRow', Array(
  462. 'title' => $lang['admin_log_mod_action'],
  463. 'desc' => $lang['admin_log_mod_action_desc'],
  464. 'type' => 'select',
  465. 'name' => 'log[modAction]',
  466. 'select' => Array('fields' => $logActions, 'select' => -1)
  467. ), true);
  468. new AdminHTML('tableRow', Array(
  469. 'title' => $lang['admin_log_delete'],
  470. 'desc' => $lang['admin_log_delete_desc'],
  471. 'type' => 'date',
  472. 'month' => Array(
  473. 'name' => 'delete[month]',
  474. 'value' => $nows['month']
  475. ),
  476. 'day' => Array(
  477. 'name' => 'delete[day]',
  478. 'value' => ((($nows['date'] + 1) > $nows['numDays']) ? 1 : ($nows['date'] + 1))
  479. ),
  480. 'year' => Array(
  481. 'name' => 'delete[year]',
  482. 'value' => $nows['year']
  483. )
  484. ), true);
  485. new AdminHTML('tableEnd', '', true);
  486. }
  487. new AdminHTML('footer', '', true);
  488. }
  489. // cron logs
  490. else if($_GET['do'] == 'cron') {
  491. // make sure we have appropriate permissions...
  492. if(!$User->canAdmin('logCron') AND !$User->canAdmin('pruneLogs')) {
  493. new WtcBBException($lang['admin_error_privilegesAdmin']);
  494. }
  495. $nows = WtcDate::buildNows();
  496. if(isset($_REQUEST['type'])) {
  497. if($_REQUEST['type'] == 'view') {
  498. // all scripts?
  499. if($_REQUEST['log']['script'] == -1) {
  500. $scriptCond = '%';
  501. }
  502. else {
  503. $scriptCond = $_REQUEST['log']['script'];
  504. }
  505. // invalid order?
  506. if($_REQUEST['log']['orderBy'] != 'log_date' AND $_REQUEST['log']['orderBy'] != 'log_file' AND $_REQUEST['log']['orderBy'] != 'log_crontitle') {
  507. $_REQUEST['log']['orderBy'] = 'log_date';
  508. }
  509. // add DESC to log_date...
  510. if($_REQUEST['log']['orderBy'] == 'log_date') {
  511. $_REQUEST['log']['orderBy'] .= ' DESC';
  512. }
  513. // form query...
  514. $search = new Query($query['log_cron']['search'], Array(1 => $scriptCond, $_REQUEST['log']['orderBy']));
  515. // nothin? o_0
  516. if(!$wtcDB->numRows($search)) {
  517. new WtcBBException($lang['admin_error_noResults']);
  518. }
  519. new AdminHTML('header', $lang['admin_log_cron_results'] . ' ' . $wtcDB->numRows($search), true);
  520. new AdminHTML('tableBegin', $lang['admin_log_admin_showing'], true, Array('form' => false, 'colspan' => 5));
  521. $thCells = Array(
  522. $lang['admin_log_logid'] => Array('th' => true),
  523. $lang['admin_log_cron_title'] => Array('th' => true),
  524. $lang['admin_log_date'] => Array('th' => true),
  525. $lang['admin_log_cron_file'] => Array('th' => true),
  526. $lang['admin_log_cron_cronResult'] => Array('th' => true)
  527. );
  528. new AdminHTML('tableCells', '', true, Array('cells' => $thCells));
  529. $count = -1;
  530. $start = ($_REQUEST['page'] - 1) * $_REQUEST['log']['perpage'];
  531. $end = $start + $_REQUEST['log']['perpage'];
  532. while($log = $wtcDB->fetchArray($search)) {
  533. $count++;
  534. // should we skip..?
  535. if($count < $start) {
  536. continue;
  537. }
  538. // save some time and break
  539. if($count >= $end) {
  540. break;
  541. }
  542. $logDate = new WtcDate('date', $log['log_date']);
  543. $logTime = new WtcDate('time', $log['log_date']);
  544. $cells = Array(
  545. $log['log_cronid'] => Array('class' => 'center'),
  546. $log['log_crontitle'] => Array(),
  547. $logDate->getDate() . ' ' . $lang['global_at'] . ' ' . $logTime->getDate() => Array('class' => 'small'),
  548. $log['log_file'] => Array(),
  549. $log['log_results'] => Array('class' => 'small')
  550. );
  551. new AdminHTML('tableCells', '', true, Array('cells' => $cells));
  552. }
  553. // form our URL...
  554. $url = 'admin.php?file=log&amp;do=cron&amp;type=view';
  555. // loop through our request...
  556. foreach($_REQUEST['log'] as $key => $v) {
  557. $url .= '&amp;log%5B' . $key . '%5D=' . $v;
  558. }
  559. // instantiate page numbers
  560. $pageNums = new PageNumbers($_REQUEST['page'], $wtcDB->numRows($search), $_REQUEST['log']['perpage'], $url, true);
  561. new AdminHTML('tableEnd', '', true, Array('form' => -1, 'footerText' => $pageNums->getPageNumbers(), 'colspan' => 5));
  562. new AdminHTML('footer', '', true);
  563. exit;
  564. }
  565. // prune
  566. else {
  567. // invalid date?
  568. if(empty($_POST['delete']['day']) OR empty($_POST['delete']['year'])) {
  569. new WtcBBException($lang['admin_error_invalidDates']);
  570. }
  571. // form date stamp
  572. $dateStamp = mktime(0, 0, 0, $_POST['delete']['month'], $_POST['delete']['day'], $_POST['delete']['year']);
  573. // all scripts?
  574. if($_POST['log']['script'] == -1) {
  575. $scriptCond = '%';
  576. }
  577. else {
  578. $scriptCond = $_POST['log']['script'];
  579. }
  580. // form query...
  581. $delete = new Query($query['log_cron']['delete'], Array(1 => $scriptCond, $dateStamp));
  582. new WtcBBThanks($lang['admin_thanks_msg'], 'admin.php?file=log&amp;do=cron');
  583. }
  584. }
  585. new AdminHTML('header', $lang['admin_log_cron'], true);
  586. if($User->canAdmin('logCron')) {
  587. new AdminHTML('tableBegin', $lang['admin_log_view'], true, Array(
  588. 'hiddenInputs' => Array(
  589. 'type' => 'view',
  590. 'page' => 1
  591. )
  592. ));
  593. new AdminHTML('tableRow', Array(
  594. 'title' => $lang['admin_log_perpage'],
  595. 'desc' => $lang['admin_log_perpage_desc'],
  596. 'type' => 'text',
  597. 'name' => 'log[perpage]',
  598. 'value' => 15
  599. ), true);
  600. // get cron scripts...
  601. $getScripts = new Query($query['log_cron']['get_scripts']);
  602. $logScripts = Array();
  603. $logScripts[$lang['admin_log_cron_allCrons']] = -1;
  604. while($logger = $wtcDB->fetchArray($getScripts)) {
  605. $logScripts[$logger['log_file']] = $logger['log_file'];
  606. }
  607. new AdminHTML('tableRow', Array(
  608. 'title' => $lang['admin_log_cron_cron'],
  609. 'desc' => $lang['admin_log_cron_cron_desc'],
  610. 'type' => 'select',
  611. 'name' => 'log[script]',
  612. 'select' => Array('fields' => $logScripts, 'select' => -1)
  613. ), true);
  614. // form order by
  615. $orderBy = Array(
  616. $lang['admin_log_date'] => 'log_date',
  617. $lang['admin_log_cron_file'] => 'log_file',
  618. $lang['admin_log_cron_title'] => 'log_crontitle'
  619. );
  620. new AdminHTML('tableRow', Array(
  621. 'title' => $lang['admin_log_orderBy'],
  622. 'desc' => $lang['admin_log_orderBy_desc'],
  623. 'type' => 'select',
  624. 'name' => 'log[orderBy]',
  625. 'select' => Array('fields' => $orderBy, 'select' => 'log_date')
  626. ), true);
  627. new AdminHTML('tableEnd', '', true);
  628. }
  629. if($User->canAdmin('pruneLogs')) {
  630. new AdminHTML('tableBegin', $lang['admin_log_prune'], true, Array(
  631. 'hiddenInputs' => Array(
  632. 'type' => 'prune'
  633. )
  634. ));
  635. // get cron scripts...
  636. $getScripts = new Query($query['log_cron']['get_scripts']);
  637. $logScripts = Array();
  638. $logScripts[$lang['admin_log_cron_allCrons']] = -1;
  639. while($logger = $wtcDB->fetchArray($getScripts)) {
  640. $logScripts[$logger['log_file']] = $logger['log_file'];
  641. }
  642. new AdminHTML('tableRow', Array(
  643. 'title' => $lang['admin_log_cron_cron'],
  644. 'desc' => $lang['admin_log_cron_cron_desc'],
  645. 'type' => 'select',
  646. 'name' => 'log[script]',
  647. 'select' => Array('fields' => $logScripts, 'select' => -1)
  648. ), true);
  649. new AdminHTML('tableRow', Array(
  650. 'title' => $lang['admin_log_delete'],
  651. 'desc' => $lang['admin_log_delete_desc'],
  652. 'type' => 'date',
  653. 'month' => Array(
  654. 'name' => 'delete[month]',
  655. 'value' => $nows['month']
  656. ),
  657. 'day' => Array(
  658. 'name' => 'delete[day]',
  659. 'value' => ((($nows['date'] + 1) > $nows['numDays']) ? 1 : ($nows['date'] + 1))
  660. ),
  661. 'year' => Array(
  662. 'name' => 'delete[year]',
  663. 'value' => $nows['year']
  664. )
  665. ), true);
  666. new AdminHTML('tableEnd', '', true);
  667. }
  668. new AdminHTML('footer', '', true);
  669. }
  670. ?>