online.php
上传用户:gzy2002
上传日期:2010-02-11
资源大小:1785k
文件大小:9k
源码类别:

电子政务应用

开发平台:

Java

  1. <?php
  2. // +-------------------------------------------------------------+
  3. // | DeskPRO v [2.0.1 Production]
  4. // | Copyright (C) 2001 - 2004 Headstart Solutions Limited
  5. // | Supplied by WTN-WDYL
  6. // | Nullified by WTN-WDYL
  7. // | Distribution via WebForum, ForumRU and associated file dumps
  8. // +-------------------------------------------------------------+
  9. // | DESKPRO IS NOT FREE SOFTWARE
  10. // +-------------------------------------------------------------+
  11. // | License ID : Full Enterprise License =) ...
  12. // | License Owner : WTN-WDYL Team
  13. // +-------------------------------------------------------------+
  14. // | $RCSfile: online.php,v $
  15. // | $Date: 2004/02/10 01:34:25 $
  16. // | $Revision: 1.14 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Technician activity log and online/offline status viewer
  20. // |   (administration interface)
  21. // +-------------------------------------------------------------+
  22. error_reporting(E_ALL & ~E_NOTICE);
  23. require_once('./global.php');
  24. //Nullify WTN-WDYL Team
  25. if ($_REQUEST['do'] == 'csv') {
  26. $data = $db->query_return_array('SELECT * FROM tech_timelog_archive');
  27. if (is_array($data)) {
  28. header('Content-type: text/comma-separated-values');
  29. print "id,techid,activity,stampnn";
  30. foreach ($data AS $val) {
  31. print join(',', $val) . "n";
  32. }
  33. }
  34. exit;
  35. }
  36. $technames = $db->query_return_array_id("SELECT id, username FROM tech", 'username');
  37. admin_header('Technician Activity', 'History');
  38. if ($_REQUEST['do'] == 'archive') {
  39. $data = $db->query_return_array("SELECT * FROM tech_timelog");
  40. if (is_array($data)) {
  41. $db->query('INSERT INTO tech_timelog_archive (id, techid, activity, stamp) VALUES ' . multi_array2sql($data));
  42. foreach ($data AS $row) {
  43. $ids[] = $row['id'];
  44. }
  45. $db->query('DELETE FROM tech_timelog WHERE id IN ' . array2sql($ids));
  46. print '<P>Activity (' . count($data) .  ' item(s)) archived.</P>';
  47. } else {
  48. print "<P>No activity to archive.</P>";
  49. }
  50. }
  51. if ($_REQUEST['do'] == 'restore') {
  52. $data = $db->query_return_array("SELECT * FROM tech_timelog_archive");
  53. if (is_array($data)) {
  54. $db->query('INSERT INTO tech_timelog (id, techid, activity, stamp) VALUES ' . multi_array2sql($data));
  55. foreach ($data AS $row) {
  56. $ids[] = $row['id'];
  57. }
  58. $db->query('DELETE FROM tech_timelog_archive WHERE id IN ' . array2sql($ids));
  59. print '<P>Activity (' . count($data) .  ' item(s)) restored.</P>';
  60. } else {
  61. print "<P>No activity to restore.</P>";
  62. }
  63. }
  64. if ($_REQUEST['do'] == 'purge') {
  65. $db->query('DELETE FROM tech_timelog_archive');
  66. if ($rows = $db->affected_rows()) {
  67. print "<P>Activity ($rows item(s)) purged.</P>";
  68. } else {
  69. print '<P>No activity to purge.</P>';
  70. }
  71. }
  72. if (!$_REQUEST['range']) {
  73. $_REQUEST['range'] = 'span';
  74. }
  75. if ($_REQUEST['range'] == 'span') {
  76. if ((int)$_REQUEST['duration']) {
  77. $duration = (int)$_REQUEST['duration'];
  78. switch ($_REQUEST['units']) {
  79. case 'seconds':
  80. case 'minutes':
  81. case 'hours':
  82. case 'days':
  83. case 'weeks':
  84. case 'months':
  85. case 'years':
  86. $when = strtotime(date('r') . " -$duration $_REQUEST[units]");
  87. $text = "Viewing events for the past $duration $_REQUEST[units]";
  88. break;
  89. default:
  90. $_REQUEST['units'] = 'minutes';
  91. $duration = 30;
  92. $when = strtotime(date('r') . " -$duration days");
  93. $text = "Viewing events for the past 30 minutes";
  94. break;
  95. }
  96. } else {
  97. $when = strtotime(date('r') . ' -30 minutes');
  98. $duration = 30;
  99. $_REQUEST['units'] = 'minutes';
  100. }
  101. $terms[] = "stamp >= $when";
  102. $from = date('Y-m-d', strtotime(date('Y-m-d') . ' -1 week'));
  103. $to = date('Y-m-d');
  104. } else {
  105. $from = "$_REQUEST[yfrom]-$_REQUEST[mfrom]-$_REQUEST[dfrom]";
  106. $fromstamp = strtotime($from);
  107. $to = "$_REQUEST[yto]-$_REQUEST[mto]-$_REQUEST[dto] 23:59:59";
  108. $tostamp = strtotime($to);
  109. $terms[] = "stamp >= $fromstamp AND stamp <= $tostamp";
  110. }
  111. $text = " <A HREF="#history">Activity&nbsp;History</A>&nbsp;|&nbsp;<A HREF="#sessions">View&nbsp;Currently&nbsp;Active&nbsp;Sessions</A><BR>Archive:&nbsp;<A HREF="online.php?do=archive">Archive&nbsp;Current&nbsp;Activity</A> |&nbsp;<A HREF="online.php?do=csv">Archive&nbsp;Download&nbsp;(CSV)</A> |&nbsp;<A HREF="online.php?do=restore">Restore&nbsp;Archived&nbsp;Data&nbsp;(doesn't&nbsp;overwrite&nbsp;current&nbsp;data)</A> |&nbsp;<A HREF="online.php?do=purge">Purge&nbsp;Archived&nbsp;Data</A><BR>" . $text;
  112. if (is_array($_REQUEST['techid'])) {
  113. if (!(count($_REQUEST['techid']) == 1 AND !$_REQUEST['techid'][0])) {
  114. $terms[] = 'techid IN '.array2sql($_REQUEST['techid']);
  115. $text .= " <I>(restricting to selected technicians, listed below)</I>";
  116. }
  117. }
  118. $where = 'WHERE ' . join(' AND ', $terms);
  119. // Tech activity log
  120. $techs = array();
  121. $techtime = array();
  122. $datetime = array();
  123. $db->query("SELECT tech.username AS username, techid, activity, stamp FROM tech_timelog, tech $where
  124. AND tech.id = tech_timelog.techid ORDER BY stamp, tech.username");
  125. if ($db->num_rows()) {
  126. $logcols = array('<B>Technician</B>', '<B>Activity</B>', '<B>Date/Time</B>');
  127. while ($result = $db->row_array()) {
  128. if ($techs[$result['techid']]) {
  129. if (($diff = $result['stamp'] - $techs[$result['techid']]) <= $settings['max_log_duration']) {
  130. $techtime[$result['techid']][date('Y-m-d', $result['stamp'])] += $diff;
  131. $techtime[$result['techid']]['total'] += $diff;
  132. $datetime[date('Y-m-d', $result['stamp'])][$result['techid']] += $diff;
  133. $total += $diff;
  134. }
  135. }
  136. $techs[$result['techid']] = $result['stamp'];
  137. $log[] = array("<A HREF="tech.php?do=edit&id=$result[techid]">$result[username]</A>", $result['activity'], date('r', $result['stamp']));
  138. }
  139. } else {
  140. $log[] = array('<CENTER><I>No activity for specified user(s).</I></CENTER>');
  141. }
  142. // Tech list
  143. $db->query("SELECT username, id FROM tech ORDER BY username");
  144. $users[0] = 'All';
  145. while ($result = $db->row_array()) {
  146. $users[$result[id]] = $result[username];
  147. }
  148. $form[] = array('<FORM METHOD="post" ACTION="online.php"><B>List Specific Technicians</B>', 
  149. form_select('techid', $users, '', $_REQUEST['techid'], 0, '', 5));
  150. $form[] = array('<B>Show Events From the Last ...</B>',
  151. form_radio_single('range', 'span', iff($_REQUEST['range'] == 'span', 1, 0)) . ' ' .
  152. form_input('duration', $duration, 5) .
  153. form_select('units', array('seconds', 'minutes', 'hours', 'days', 'weeks', 'months', 'years'), '', $_REQUEST['units'], 1));
  154. $form[] = array('<B>... or between the dates<B>',
  155. form_radio_single('range', 'range', iff($_REQUEST['range'] == 'range', 1, 0)) . ' ' .
  156. form_date('from', NULL, NULL, NULL, NULL, $from) . ' and ' .
  157. form_date('to', NULL, NULL, NULL, NULL, $to));
  158. $form[] = array('<B>Show Individual Entries</B>',
  159. form_radio_yn('detail', NULL, $_REQUEST['detail']));
  160. $form[] = array('<B>Show Totals by Date</B>',
  161. form_radio_yn('bydate', NULL, $_REQUEST['bydate']));
  162. $form[] = array('<B>Show Totals by Technician</B>',
  163. form_radio_yn('bytech', NULL, $_REQUEST['bytech']));
  164. $form[] = array('', form_submit('Update'));
  165. // Current sessions
  166. $db->query("SELECT tech.username AS username, techid, lastactivity, location
  167. FROM tech, tech_session
  168. WHERE tech.id = tech_session.techid
  169. ORDER BY username");
  170. if ($db->num_rows()) {
  171. $sessions[] = array('<B>Technician</B>', '<B>Last Activity</B>', '<B>Last Access Time/Date</B>');
  172. while ($result = $db->row_array()) {
  173. $sessions[] = array("<A HREF="tech.php?do=edit&id=$result[techid]">$result[username]</A>", $result['location'], date('r', $result['lastactivity']));
  174. }
  175. } else {
  176. $sessions[] = array('<CENTER><I>No active sessions.</I></CENTER>');
  177. }
  178. print $text."</P>";
  179. print "<A NAME="sessions"></A>";
  180. table_header('Currently Active Sessions');
  181. table_content('', $sessions);
  182. table_footer();
  183. print "<A NAME="options"></A>";
  184. table_header('History Options');
  185. table_content('', $form);
  186. table_footer();
  187. if ($_REQUEST['bydate'] OR $_REQUEST['bytech']) {
  188. print "<A NAME="stats"></A>";
  189. }
  190. if ($_REQUEST['bydate']) {
  191. $row = array();
  192. foreach ($datetime AS $key => $day) {
  193. $row[] = array('<B>' . date('D, M jS Y', strtotime($key)) . "</B>");
  194. foreach ($day AS $tech => $data) {
  195. $date = split('-', date('Y-m-d', $data));
  196. $row[] = array($technames[$tech], "<A HREF="online.php?yfrom=$date[0]&mfrom=$date[1]&dfrom=$date[2]&yto=$date[0]&mto=$date[1]&dto=$date[2]&bydate=1&detail=1">" . clean_time($data) . "</A>");
  197. }
  198. }
  199. $row[] = '<CENTER><B>Total: ' . clean_time($total) . '</CENTER>';
  200. table_header("Totals by Date");
  201. table_content(NULL, $row);
  202. table_footer();
  203. }
  204. if ($_REQUEST['bytech']) {
  205. $row = array();
  206. foreach ($techtime AS $key => $tech) {
  207. $row[] = array("<B>{$technames[$key]}</B>");
  208. foreach ($tech AS $date => $data) {
  209. if ($date != 'total') {
  210. $datetmp = split('-', date('Y-m-d', $data));
  211. $row[] = array(date('D, M jS Y', strtotime($date)), "<A HREF="online.php?techid=$user[id]&yfrom=$datetmp[0]&mfrom=$datetmp[1]&dfrom=$datetmp[2]&yto=$datetmp[0]&mto=$datetmp[1]&dto=$datetmp[2]&bytech=1&detail=1">" . clean_time($data) . "</A>");
  212. }
  213. }
  214. }
  215. $row[] = '<CENTER><B>Total: ' . clean_time($total) . '</CENTER>';
  216. table_header("Totals by Technician");
  217. table_content(NULL, $row);
  218. table_footer();
  219. }
  220. if ($_REQUEST['detail']) {
  221. print "<A NAME="history"></A>";
  222. table_header('Technician Activity Log');
  223. table_content($logcols, $log);
  224. table_footer();
  225. print "<A HREF="#top">View Active Sessions</A>";
  226. }
  227. ?>