PageRenderTime 50ms CodeModel.GetById 24ms RepoModel.GetById 1ms app.codeStats 0ms

/admin/approvals_xy.php

https://github.com/xmarcosx/enroll
PHP | 336 lines | 324 code | 1 blank | 11 comment | 31 complexity | 9e07d22873700a40c11519b8a60ff05d MD5 | raw file
  1. <?php
  2. session_start();
  3. //Credentials aren't legit or user isn't an admin, kick back to login screen
  4. if (!isset($_SESSION['username']) ||
  5. $_SESSION['login']!=true ||
  6. $_SESSION['admin']!=true) {
  7. header("Location: ../login.html");
  8. }
  9. include_once 'settings.php';
  10. //Connects to MySQL and Selects Database
  11. $con = mysql_connect($host,$db_username,$db_password);
  12. if (!$con)
  13. die('Could not connect: ' . mysql_error());
  14. //Select DB
  15. mysql_select_db($db, $con);
  16. //Get list of classrooms
  17. $get_classrooms_result=mysql_query(
  18. "SELECT rooms FROM settings LIMIT 1") or die(mysql_error());
  19. $get_classrooms_array=mysql_fetch_array($get_classrooms_result);
  20. //Get the date of the next XY
  21. $next_date=null;
  22. $next_date_id=null;
  23. $next_xy_result=mysql_query(
  24. "SELECT *
  25. FROM course_schedule
  26. WHERE date >= " . date('Y-m-d') . " AND (x=1 OR y=1) ORDER BY date LIMIT 1") or die(mysql_error());
  27. $next_xy_row= mysql_fetch_array($next_xy_result);
  28. $next_date=$next_xy_row['date'];
  29. $next_date_id=$next_xy_row['id'];
  30. //Get all dates where XY is offered
  31. $dates_result=mysql_query("SELECT * FROM course_schedule WHERE x=1 OR y=1") or die(mysql_error());
  32. $xy_assignments_result=mysql_query(
  33. "SELECT users.lastname, users.firstname, assignments.xy_date_id AS date_id, assignments.id,
  34. assignments.final, courses.name, assignments.class_size, assignments.room,
  35. assignments.xy_preferred_block AS preferred_block, assignments.xy_block AS block, courses.preferred_class_size,
  36. courses.preferred_room, assignments.notes, courses.description
  37. FROM `users`
  38. INNER JOIN `courses` on courses.teacher_id=users.id
  39. INNER JOIN `assignments` on assignments.course_id=courses.id
  40. WHERE courses.type='xy' ") or die(mysql_error());
  41. $xy_assignments_array=mysql_fetch_array($xy_assignments_result);
  42. //Ghost usernames
  43. $ghost_usernames=array();
  44. $get_ghost_usernames=mysql_query(
  45. "SELECT username FROM users WHERE role='teacher' OR role='student'") or die(mysql_error());
  46. while($row=mysql_fetch_array($get_ghost_usernames)){
  47. $ghost_usernames[]="\"" . $row['username'] . "\"";
  48. }
  49. mysql_close();
  50. ?>
  51. <!DOCTYPE html>
  52. <html lang='en'>
  53. <head>
  54. <meta charset='utf-8'>
  55. <title>Enroll: <?php echo $school_name; ?></title>
  56. <meta name='viewport' content='width=device-width, initial-scale=1.0'>
  57. <meta name='description' content="Flexible Scheduling for Today's Classroom">
  58. <meta name='author' content='Marcos Alcozer'>
  59. <meta name='keywords' content='Education, Scheduling'>
  60. <!-- CSS -->
  61. <style>
  62. body {
  63. padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */
  64. }
  65. </style>
  66. <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet">
  67. <link href="../css/admin.css" rel="stylesheet">
  68. <!-- JQUERY -->
  69. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  70. <!-- BOOTSTRAP -->
  71. <script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
  72. <!-- AJAX UPLOAD BY BRYAN GENTRY -->
  73. <!-- http://bryangentry.us/ajax-upload-with-javascript-and-php-upload-an-image-and-display-a-preview/ -->
  74. <script src="../js/ajaxupload.js"></script>
  75. <!-- FORM VALIDATION USING JQUERY -->
  76. <!-- http://alittlecode.com/jquery-form-validation-with-styles-from-twitter-bootstrap/ -->
  77. <!-- <script src="../js/jquery.validate.min.js"></script> -->
  78. <!-- <script src="../js/validate.js"></script> -->
  79. <!-- INHOUSE JAVASCRIPT -->
  80. <script src="../js/admin.js"></script>
  81. <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
  82. <!--[if lt IE 9]>
  83. <script src="../js/html5shiv.js"></script>
  84. <![endif]-->
  85. </head>
  86. <body data-spy="scroll" data-target=".bs-docs-sidebar">
  87. <?php include_once("analyticstracking.php") ?>
  88. <div class="navbar navbar-inverse navbar-fixed-top">
  89. <div class="navbar-inner">
  90. <div class="container">
  91. <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
  92. <span class="icon-bar"></span>
  93. <span class="icon-bar"></span>
  94. <span class="icon-bar"></span>
  95. </button>
  96. <a class="brand appname" href="#">Enroll<img src='../img/beta-icon.png' style="vertical-align:text-top;"/></a>
  97. <div class="nav-collapse collapse">
  98. <ul class="nav">
  99. <li><a href="index.php">Dashboard</a></li>
  100. <li class="dropdown active">
  101. <a href="#" class="dropdown-toggle" data-toggle="dropdown">Approvals <b class="caret"></b></a>
  102. <ul class="dropdown-menu">
  103. <li><a href='approvals_xy.php'>XY</a></li>
  104. <li class="dropdown-submenu">
  105. <a tabindex="-1" href="#">Colloquium</a>
  106. <ul class="dropdown-menu">
  107. <li><a href='approvals_col.php?semester=1'>Semester 1</a></li>
  108. <li><a href='approvals_col.php?semester=2'>Semester 2</a></li>
  109. </ul>
  110. </li>
  111. </ul>
  112. </li>
  113. <li class="dropdown">
  114. <a href="#" class="dropdown-toggle" data-toggle="dropdown">Enrollments <b class="caret"></b></a>
  115. <ul class="dropdown-menu">
  116. <li><a href='enroll_xy.php'>XY</a></li>
  117. <li class="dropdown-submenu">
  118. <a tabindex="-1" href="#">Colloquium</a>
  119. <ul class="dropdown-menu">
  120. <li><a href='enroll_col.php?semester=1'>Semester 1</a></li>
  121. <li><a href='enroll_col.php?semester=2'>Semester 2</a></li>
  122. </ul>
  123. </li>
  124. </ul>
  125. </li>
  126. <li class="dropdown">
  127. <a href="#" class="dropdown-toggle" data-toggle="dropdown">Activity <b class="caret"></b></a>
  128. <ul class="dropdown-menu">
  129. <li><a href='activity_xy.php'>XY</a></li>
  130. <li><a href='activity_col.php'>Colloquium</a></li>
  131. </ul>
  132. </li>
  133. <?php if($_SESSION['teacher']){
  134. echo "<li><a href='../teacher/agenda.php'>My Courses</a></li>";
  135. }?>
  136. <li><a href="options.php">Settings</a></li>
  137. </ul>
  138. <ul class="nav pull-right">
  139. <li>
  140. <form id="ghostuserform" class="navbar-form pull-right">
  141. <input class="span2 search-query" name="username" type="text"
  142. data-provide="typeahead" autocomplete="off" placeholder="Login as..."
  143. data-source='[<?php echo implode(',',$ghost_usernames); ?>]' />
  144. </form>
  145. </li>
  146. <?php
  147. if(!isset($_SESSION['username']))
  148. echo "<li class='login-button'><a href='../login.html' style='color:#FFFFFF'>Login</a></li>";
  149. else
  150. echo "<li class='login-button'><a href='../logout.php' style='color:#FFFFFF'>Logout</a></li>";
  151. ?>
  152. </ul>
  153. </div><!--/.nav-collapse -->
  154. </div>
  155. </div>
  156. </div>
  157. <div class='container'>
  158. <div class="row">
  159. <div class="span3 bs-docs-sidebar hidden-phone hidden-tablet">
  160. <ul class="nav nav-list bs-docs-sidenav">
  161. <?php
  162. //Iterate through the dates and create side navigation menu
  163. while($row=mysql_fetch_array($dates_result)){
  164. if(in_array($row['id'], $xy_assignments_array)){
  165. echo "<li";
  166. if(strcmp($row['date'], $next_date)==0)
  167. echo " class='active' ";
  168. echo "><a href='#" . $row['id'] . "'><i class='icon-chevron-right'></i>" . date('D F jS, Y', strtotime($row['date'])) . "</a></li>";
  169. }
  170. }
  171. ?>
  172. </ul>
  173. </div>
  174. <div class="span9">
  175. <?php
  176. //Iterate through the dates and create a section for each date that will house current assigned courses
  177. mysql_data_seek($dates_result,0);
  178. while($date=mysql_fetch_array($dates_result)){
  179. if(in_array($date['id'], $xy_assignments_array)){
  180. $classrooms=explode(",",$get_classrooms_array['rooms']);
  181. //Iterate through xy assignments
  182. mysql_data_seek($xy_assignments_result,0);
  183. while ($row=mysql_fetch_array($xy_assignments_result)) {
  184. if($date['id']==$row['date_id'] && $row['final']){
  185. unset( $classrooms[ array_search($row['room'], $classrooms) ] );
  186. }
  187. }
  188. $seats_assigned=0;
  189. ?>
  190. <section id="<?php echo $date['id']; ?>">
  191. <div class='page-header'>
  192. <h1><?php echo date('F jS, Y', strtotime($date['date'])); ?></h1>
  193. </div>
  194. <table class="table table-striped">
  195. <thead>
  196. <tr>
  197. <th>Name</th>
  198. <th>XY</th>
  199. <th>Preferred Class Size</th>
  200. <th>Class Size</th>
  201. <th>Preferred Room</th>
  202. <th>Room</th>
  203. <th>Preferred Block</th>
  204. <th>Block</th>
  205. <th>Notes</th>
  206. <th></th>
  207. </tr>
  208. </thead>
  209. <tbody>
  210. <?php
  211. //Iterate through xy assignments
  212. mysql_data_seek($xy_assignments_result,0);
  213. while ($row=mysql_fetch_array($xy_assignments_result)) {
  214. if($date['id']==$row['date_id']){
  215. if($row['final'])
  216. $seats_assigned+=$row['class_size'];
  217. echo "<tr>";
  218. if(!$row['final']){
  219. echo "<form action='finalize.php' method='post'>";
  220. }
  221. else{
  222. echo "<form id='unfinalize" . $row['id'] . "' action='unfinalize.php' method='post'>";
  223. }
  224. echo "<input name='id' type='hidden' value='" . $row['id'] . "' />";
  225. echo "<input name='type' type='hidden' value='xy' />";
  226. echo "<input id='keepstudents" . $row['id'] . "' name='keepstudents' type='hidden' value=1 />";
  227. echo "<td>" . $row['lastname'] . ", " . $row['firstname'] . "</td>";
  228. echo "<td><span class='tooltip' data-toggle='tooltip' data-placement='top' title='" . $row['description'] . "'>Tooltip</span>";
  229. echo $row['name'] . "</td>";
  230. echo "<td>" . $row['preferred_class_size'] . "</td>";
  231. if(!$row['final']){
  232. if($row['class_size']!=0)
  233. echo "<td><input class='input-mini' name='class_size' type='number' maxlength='4' value='" . $row['class_size'] . "' required /></td>";
  234. else
  235. echo "<td><input class='input-mini' name='class_size' type='number' maxlength='4' value='" . $row['preferred_class_size'] . "' required /></td>";
  236. }
  237. else{
  238. echo "<td>" . $row['class_size'] . "</td>";
  239. }
  240. echo "<td>" . $row['preferred_room'] . "</td>";
  241. if(!$row['final']){
  242. echo "<td><select class='input-medium' name='room' required>";
  243. if(!is_null($row['room'])){
  244. foreach($classrooms as $room){
  245. echo "<option ";
  246. if(strcmp($room,$row['room'])==0) echo ' selected ';
  247. echo " value='$room'>$room</option>";
  248. }
  249. }
  250. else{
  251. foreach($classrooms as $room){
  252. echo "<option ";
  253. if(strcmp($room,$row['preferred_room'])==0) echo ' selected ';
  254. echo " value='$room'>$room</option>";
  255. }
  256. }
  257. echo "</select></td>";
  258. }
  259. else{
  260. echo "<td>" . $row['room'] . "</td>";
  261. }
  262. echo "<td>" . strtoupper($row['preferred_block']) . "</td>";
  263. if(!$row['final']){
  264. if(!is_null($row['block'])){ ?>
  265. <td>
  266. <select class='input-mini' name='block' required>
  267. <option value=''></option>
  268. <option <?php if(strcmp($row['block'],'x')==0) echo ' selected '; ?> value='x'>X</option>
  269. <option <?php if(strcmp($row['block'],'y')==0) echo ' selected '; ?> value='y'>Y</option>
  270. <option <?php if(strcmp($row['block'],'xy')==0) echo ' selected '; ?> value='xy'>XY</option>
  271. </select>
  272. </td>
  273. <?php } else{ ?>
  274. <td>
  275. <select class='input-mini' name='block' required>
  276. <option value=''></option>
  277. <option <?php if(strcmp($row['preferred_block'],'x')==0) echo ' selected '; ?> value='x'>X</option>
  278. <option <?php if(strcmp($row['preferred_block'],'y')==0) echo ' selected '; ?> value='y'>Y</option>
  279. <option <?php if(strcmp($row['preferred_block'],'xy')==0) echo ' selected '; ?> value='xy'>XY</option>
  280. </select>
  281. </td>
  282. <?php
  283. }}
  284. else{
  285. echo "<td>" . strtoupper($row['block']) . "</td>";
  286. }
  287. echo "<td>";
  288. if(strcmp($row['notes'],"")!=0)
  289. echo "<a href='#' class='tooltip' title='" . $row['notes'] . "'>Note</a>Note";
  290. echo "</td>";
  291. if(!$row['final']){
  292. echo "<td><button class='btn btn-medium btn-warning' type='submit'>Finalize</button></td>";
  293. }
  294. else{
  295. ?>
  296. <!-- Modal -->
  297. <div id="<?php echo $row['id']; ?>" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  298. <div class="modal-header">
  299. <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
  300. <h3 id="myModalLabel">Unfinalize Course</h3>
  301. </div>
  302. <div class="modal-body">
  303. <p>If there are already students enrolled in this course, what should happen to the current enrollments?</p>
  304. </div>
  305. <div class="modal-footer">
  306. <button id="<?php echo $row['id']; ?>" class="btn btn-warning unenroll_students" type='submit'>Unenroll Students</button>
  307. <button class="btn btn-primary" type='submit'>Keep Enrollments</button>
  308. </div>
  309. </div>
  310. <?php
  311. echo "<td><button class='btn btn-medium btn-success unfinalize_button' data-toggle='modal' data-target='#" . $row['id'] . "'>Unfinalize</button></td>";
  312. }
  313. echo "</form>";
  314. echo "</tr>";
  315. }
  316. }
  317. ?>
  318. <p class="lead pull-right">
  319. <?php echo $seats_assigned; ?> seats assigned.
  320. </p>
  321. </tbody>
  322. </table>
  323. </section>
  324. <?php
  325. }
  326. }
  327. ?>
  328. </div>
  329. </div>
  330. </div>
  331. </body>
  332. </html>