Context-detection API for Android developed as a university project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

admin.php 7.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. <?PHP
  2. require('auth.php');
  3. require('common.php');
  4. # -------------- Form handling -----------------
  5. function process_activity_add($args) {
  6. $sql = 'INSERT INTO activities (activity_name, activity_parent) VALUES (\'';
  7. $sql .= m($args['name']) . '\', ' . ((int) $args['parent']) . ')';
  8. mysql_query($sql);
  9. }
  10. function process_activity_delete($args) {
  11. $sql = 'DELETE FROM windowclassifications WHERE activity_id = ' . ((int) $args['id']);
  12. mysql_query($sql);
  13. $sql = 'SELECT activity_id FROM activities WHERE activity_parent = ' . ((int) $args['id']);
  14. $res = mysql_query($sql);
  15. while ($row = mysql_fetch_assoc($res)) {
  16. process_activity_delete(array('id' => $row['activity_id']));
  17. }
  18. $sql = 'DELETE FROM activities WHERE activity_id = ' . ((int) $args['id']);
  19. mysql_query($sql);
  20. }
  21. function process_sample_edit($args) {
  22. $sql = 'SELECT wc_id, activity_id, log_id, wc_offset FROM windowclassifications';
  23. $res = mysql_query($sql);
  24. $acs = getActivityArray();
  25. while ($row = mysql_fetch_assoc($res)) {
  26. $name = 'value_' . $row['log_id'] . '_' . $row['wc_offset'];
  27. if (isset($args[$name])) {
  28. if ((int) $args[$name] == (int) $row['activity_id']) {
  29. unset($args[$name]);
  30. } else {
  31. mysql_query('UPDATE windowclassifications SET activity_id = ' . ((int) $args[$name]) . ' WHERE wc_id = ' . $row['wc_id']);
  32. }
  33. }
  34. }
  35. foreach ($args as $name => $val) {
  36. if ($acs[$val] == 'UNCLASSIFIED/PENDING') { continue; }
  37. list($value, $log, $offset) = explode('_', $name);
  38. mysql_query('INSERT INTO windowclassifications (activity_id, log_id, wc_offset) VALUES ('. ((int) $val) . ', ' . ((int) $log) . ', ' . ((int) $offset) . ')');
  39. }
  40. }
  41. function process_export($args) {
  42. $acs = getActivityArray();
  43. $sql = 'SELECT wc_offset, activity_id, log_data FROM activities NATURAL JOIN windowclassifications NATURAL JOIN sensorlogger WHERE log_statuscode = 1 AND (0';
  44. foreach ($acs as $id => $name) {
  45. if (substr($name, 0, 10) == 'CLASSIFIED') {
  46. $sql .= ' OR activity_id = ' . $id;
  47. }
  48. }
  49. $sql .= ')';
  50. $res = mysql_query($sql);
  51. header('Content-type: text/plain');
  52. header('Content-disposition: attachment; filename=data.txt');
  53. while ($row = mysql_fetch_assoc($res)) {
  54. echo 'Activity: ', $acs[$row['activity_id']], "\n";
  55. $data = array_slice(explode("\n", $row['log_data']), $row['wc_offset'], 128);
  56. echo implode("\n", $data);
  57. echo "\n";
  58. }
  59. exit;
  60. }
  61. if (isset($_POST['action'])) {
  62. $args = array();
  63. $action = str_replace('.', '_', $_POST['action']) . '_';
  64. foreach ($_POST as $k => $v) {
  65. if (substr($k, 0, strlen($action)) == $action) {
  66. $args[substr($k, strlen($action))] = $v;
  67. }
  68. }
  69. call_user_func('process_' . str_replace('.', '_', $_POST['action']), $args);
  70. header('Location: /android/admin.php');
  71. exit;
  72. }
  73. # ------------------- End of form handling ----------------------
  74. $acs = getActivityArray();
  75. ?>
  76. <h1>Activity management</h1>
  77. <h2>Add an activity</h2>
  78. <form action="admin.php" method="post">
  79. <input type="hidden" name="action" value="activity.add">
  80. <select name="activity.add.parent">
  81. <?PHP
  82. asort($acs);
  83. foreach ($acs as $id => $name) {
  84. echo ' <option value="', $id, '">', htmlentities($name), '</option>';
  85. }
  86. ?>
  87. </select> /
  88. <input type="text" name="activity.add.name">
  89. <input type="submit" value="Add">
  90. </form>
  91. <h2>Delete an activity</h2>
  92. <form action="admin.php" method="post">
  93. <input type="hidden" name="action" value="activity.delete">
  94. <select name="activity.delete.id">
  95. <?PHP
  96. asort($acs);
  97. foreach ($acs as $id => $name) {
  98. echo ' <option value="', $id, '">', htmlentities($name), '</option>';
  99. }
  100. ?>
  101. <input type="submit" value="Delete">
  102. </form>
  103. <h1>Export</h1>
  104. <form action="admin.php" method="post">
  105. <input type="hidden" name="action" value="export">
  106. <input type="submit" value="Export classified windows">
  107. </form>
  108. <h1>Sample management</h1>
  109. <?PHP
  110. $sql = 'SELECT log_id, log_imei, log_version, log_time, log_activity, log_headers, log_data FROM sensorlogger WHERE log_statuscode = 1';
  111. $res = mysql_query($sql);
  112. ?>
  113. <style type="text/css">
  114. .windowed { background: url('windowbg.png') repeat-y -256px 0px; }
  115. .windowboxes { margin: 0px; padding: 0px; border-right: 1px solid black; display: inline-block; }
  116. .windowboxes li { display: inline-block; width: 255px; text-align: center; border: 1px solid black; margin: 0px; padding: 0px; border-right: 0; }
  117. .windowboxes.odd { padding-left: 128px; }
  118. .windowboxes li select { width: 253px; }
  119. </style>
  120. <script type="text/javascript">
  121. function showWindow(id, offset) {
  122. document.getElementById('window_' + id).style.backgroundPosition = (offset * 2) + "px 0px";
  123. }
  124. function hideWindow(id) {
  125. showWindow(id, -128);
  126. }
  127. function classifyAll(select) {
  128. var tr = select.parentNode.parentNode;
  129. var selects = tr.getElementsByTagName('select');
  130. for (var i = 0; i < selects.length; i++) {
  131. selects[i].value = select.value;
  132. }
  133. }
  134. </script>
  135. <form action="admin.php" method="post">
  136. <input type="hidden" name="action" value="sample.edit">
  137. <?PHP
  138. echo '<table border="1">';
  139. while ($row = mysql_fetch_assoc($res)) {
  140. $sql2 = 'SELECT wc_offset, activity_id FROM windowclassifications WHERE log_id = ' . $row['log_id'];
  141. $res2 = mysql_query($sql2);
  142. $wcs = array();
  143. while ($row2 = mysql_fetch_assoc($res2)) {
  144. $wcs[(int) $row2['wc_offset']] = (int) $row2['activity_id'];
  145. }
  146. $points = 0;
  147. echo '<tr><td><table>';
  148. foreach ($row as $k => $v) { echo '<tr><th>', $k, '</th><td>', $k == 'log_data' ? ($points = count(explode("\n", $v))) . ' line(s)' : nl2br(htmlentities($v)), '</td></tr>'; }
  149. echo '</table>';
  150. echo '<select onChange="classifyAll(this)">';
  151. echo ' <option value="">Classify all as...</option>';
  152. foreach ($acs as $id => $name) {
  153. echo '<option value="', $id, '">', htmlentities($name), '</option>';
  154. }
  155. echo '</select>';
  156. echo '</td><td>';
  157. echo '<ol class="windowboxes even">';
  158. for ($i = 0; $i + 128 < $points; $i += 128) {
  159. echo '<li onMouseOver="showWindow(', $row['log_id'], ', ', $i, ')" onMouseOut="hideWindow(', $row['log_id'], ')">';
  160. echo '<select name="sample.edit.value_', $row['log_id'], '_', $i, '">';
  161. foreach ($acs as $id => $name) {
  162. echo '<option value="', $id, '"', (isset($wcs[$i]) && $wcs[$i] == $id) || (!isset($wcs[$i]) && $name == 'UNCLASSIFIED/PENDING') ? ' selected="selected"' : '','>', htmlentities($name), '</option>';
  163. }
  164. echo '</select>';
  165. echo '</li>';
  166. }
  167. echo '</ol>';
  168. echo '<div class="windowed" id="window_', $row['log_id'], '" styleb"background-color: orange;">';
  169. echo '<img src="data.php?graph=', $row['log_id'], '&amp;ds=1&amp;imei=', $row['log_imei'], '" height="330">';
  170. echo '<br><img src="data.php?graph=', $row['log_id'], '&amp;ds=2&amp;imei=', $row['log_imei'], '" height="330">';
  171. echo '</div>';
  172. echo '<ol class="windowboxes odd">';
  173. for ($i = 64; $i + 128 < $points; $i += 128) {
  174. echo '<li onMouseOver="showWindow(', $row['log_id'], ', ', $i, ')" onMouseOut="hideWindow(', $row['log_id'], ')">';
  175. echo '<select name="sample.edit.value_', $row['log_id'], '_', $i, '">';
  176. foreach ($acs as $id => $name) {
  177. echo '<option value="', $id, '"', (isset($wcs[$i]) && $wcs[$i] == $id) || (!isset($wcs[$i]) && $name == 'UNCLASSIFIED/PENDING') ? ' selected="selected"' : '','>', htmlentities($name), '</option>';
  178. }
  179. echo '</select>';
  180. echo '</li>';
  181. }
  182. echo '</ol>';
  183. echo '</td>';
  184. echo '</tr>';
  185. }
  186. echo '</table>';
  187. ?>
  188. <input type="submit" value="SUBMIT ALL MODIFICATIONS">
  189. </form>