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

/admin/project_submission.php

https://github.com/cmerlo441/Open-Course-Software
PHP | 131 lines | 104 code | 20 blank | 7 comment | 22 complexity | b2c2ce7c89bc16d092d91b060094de75 MD5 | raw file
  1. <?php
  2. $title_stub = 'Project Submission';
  3. require_once( '../_header.inc' );
  4. if( $_SESSION[ 'admin' ] == 1 ) {
  5. $student = $db->real_escape_string( $_GET[ 'student' ] );
  6. $assignment = $db->real_escape_string( $_GET [ 'assignment' ] );
  7. $student_query = 'select first, middle, last from students '
  8. . "where id = $student";
  9. $student_result = $db->query( $student_query );
  10. $student_row = $student_result->fetch_assoc( );
  11. $name = name( $student_row );
  12. $assignment_query = 'select a.grade_type, a.posted_date, a.due_date, a.title, '
  13. . 'c.dept, c.course, s.section, s.id '
  14. . 'from courses as c, sections as s, assignments as a '
  15. . 'where s.course = c.id '
  16. . 'and a.section = s.id '
  17. . "and a.id = $assignment";
  18. $assignment_result = $db->query( $assignment_query );
  19. $assignment_row = $assignment_result->fetch_assoc( );
  20. $section = $assignment_row[ 'dept' ] . ' ' . $assignment_row[ 'course' ] . ' '
  21. . $assignment_row[ 'section' ];
  22. print "<h2>$name, $section</h2>\n";
  23. $sequence_query = 'select * from assignments '
  24. . "where section = {$assignment_row[ 'id' ]} "
  25. . "and grade_type = {$assignment_row[ 'grade_type' ]} "
  26. . "and due_date <= \"{$assignment_row[ 'due_date' ]}\"";
  27. $sequence_result = $db->query( $sequence_query );
  28. $sequence = $sequence_result->num_rows;
  29. print "<h3>Project #$sequence: {$assignment_row[ 'title' ]}</h3>\n";
  30. print "<div class=\"student_uploads\" id=\"$student\">\n";
  31. /*
  32. $uploads_query = 'select * from assignment_uploads '
  33. . "where student = $student "
  34. . "and assignment = $assignment "
  35. . "order by filename";
  36. */
  37. $uploads_query = 'select u.student, u.filename, u.filesize, u.filetype, '
  38. . 'u.datetime, u.file '
  39. . 'from assignment_uploads as u, assignment_upload_requirements as r '
  40. . 'where u.assignment_upload_requirement = r.id '
  41. . "and u.student = $student "
  42. . "and r.assignment = $assignment "
  43. . 'order by u.filename';
  44. $uploads_result = $db->query( $uploads_query );
  45. while( $upload = $uploads_result->fetch_assoc( ) ) {
  46. print '<h3><a href="#">' . $upload[ 'filename' ] . ': '
  47. . date( 'l, n/j g:i a', strtotime( $upload[ 'datetime' ] ) );
  48. if( $upload[ 'datetime' ] > $assignment_row[ 'due_date' ] ) {
  49. $diff = strtotime( $upload[ 'datetime' ] ) - strtotime( $assignment_row[ 'due_date' ] );
  50. $seconds_in_a_day = 60 * 60 * 24;
  51. $days_late = ceil( $diff / $seconds_in_a_day );
  52. print ", <span class=\"late\">$days_late day"
  53. . ( $days_late == 1 ? '' : 's' ) . " late</span>\n";
  54. }
  55. print "</a></h3>\n";
  56. print "<div class=\"upload\" id=\"{$upload[ 'id' ]}\">\n";
  57. if( substr( $upload[ 'filename' ], -5, 5 ) == '.java' ) {
  58. print "<pre class=\"brush:java\">";
  59. } else if( substr( $upload[ 'filename' ], -3, 3 ) == '.js' ) {
  60. print "<pre class=\"brush:js\">";
  61. } else if( substr( $upload[ 'filename' ], -4, 4 ) == '.php' ) {
  62. print "<pre class=\"brush:php\">";
  63. } else if( substr( $upload[ 'filename' ], -2, 2 ) == '.c' ) {
  64. print "<pre class=\"brush:c\">";
  65. } else if( substr( $upload[ 'filename' ], -4, 4 ) == '.cpp' ) {
  66. print "<pre class=\"brush:cpp\">";
  67. } else {
  68. print "<pre class=\"brush:plain\">";
  69. }
  70. print htmlentities( $upload[ 'file' ] ) . "</pre>\n";
  71. print "</div> <!-- div.upload#{$upload[ 'id' ]} -->\n";
  72. }
  73. print "</div> <!-- div.student_uploads#{$student[ 'student' ]} -->\n";
  74. // See if a grade has been posted
  75. $grade_query = 'select g.grade '
  76. . 'from grades as g, grade_events as e '
  77. . "where grade_event = e.id "
  78. . "and e.assignment = $assignment "
  79. . "and student = $student";
  80. $grade_result = $db->query( $grade_query );
  81. if( $grade_result->num_rows == 1 ) {
  82. $grade_row = $grade_result->fetch_assoc( );
  83. $grade = $grade_row[ 'grade' ];
  84. $sum += $grade;
  85. }
  86. print "Grade: "
  87. . "<span class=\"grade\" id=\"$student\" size=\"4\" "
  88. . "id=\"$assignment\">$grade</span>\n";
  89. ?>
  90. <script type="text/javascript">
  91. $(document).ready(function(){
  92. $('div.student_uploads').accordion({
  93. active: false,
  94. autoHeight: false,
  95. collapsible: true
  96. });
  97. $('span.grade').editInPlace({
  98. url: 'update_grade.php',
  99. default_text: '(No grade recorded yet)',
  100. params: "ajax=yes&assignment_id=<?php echo $assignment; ?>",
  101. saving_image: "<?php echo $docroot; ?>/images/ajax-loader.gif"
  102. })
  103. })
  104. </script>
  105. <?php
  106. } else {
  107. print $no_admin;
  108. }
  109. $lastmod = filemtime( $_SERVER[ 'SCRIPT_FILENAME' ] );
  110. include( "$fileroot/_footer.inc" );
  111. ?>