PageRenderTime 49ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/filestable.php

https://github.com/eviweb/moodle-mod_turnitintool
PHP | 175 lines | 154 code | 16 blank | 5 comment | 35 complexity | 9593a42cd4966f256259c3861d743d44 MD5 | raw file
Possible License(s): GPL-3.0
  1. <?php
  2. /*
  3. * To change this template, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. require_once('../../config.php');
  7. require_once('../../course/lib.php');
  8. require_once($CFG->libdir.'/adminlib.php');
  9. require_once($CFG->libdir.'/tablelib.php');
  10. require_once("lib.php");
  11. if (!is_callable('groups_get_activity_group')) {
  12. $adminroot = admin_get_root();
  13. admin_externalpage_setup('managemodules',$adminroot);
  14. } else {
  15. admin_externalpage_setup('managemodules');
  16. }
  17. $param_module = optional_param('module', null, PARAM_INT); // module
  18. $param_displaystart = optional_param('iDisplayStart', null, PARAM_INT); // displaystart
  19. $param_displaylength = optional_param('iDisplayLength', null, PARAM_INT); // displaylength
  20. $aColumns = array( 'tu.name', 'cs.shortname', 'cs.fullname', 'sb.submission_filename', 'us.firstname', 'us.lastname', 'us.email', 'fl.filename', 'sb.submission_objectid' );
  21. $sQuery = 'SELECT
  22. fl.id AS id,
  23. cm.id AS cmid,
  24. tu.id AS activityid,
  25. tu.name AS activity,
  26. sb.submission_unanon AS unanon,
  27. us.firstname AS firstname,
  28. us.lastname AS lastname,
  29. us.email AS email,
  30. us.id AS userid,
  31. fl.mimetype AS mimetype,
  32. fl.filesize AS filesize,
  33. fl.timecreated AS created,
  34. fl.pathnamehash AS hash,
  35. fl.filename AS rawfilename,
  36. cs.fullname AS coursetitle,
  37. cs.shortname AS courseshort,
  38. cs.id AS course,
  39. sb.submission_filename AS filename,
  40. sb.submission_objectid AS objectid
  41. FROM '.$CFG->prefix.'files fl
  42. LEFT JOIN
  43. '.$CFG->prefix.'turnitintool_submissions sb ON fl.itemid = sb.id
  44. LEFT JOIN
  45. '.$CFG->prefix.'user us ON fl.userid = us.id
  46. LEFT JOIN
  47. '.$CFG->prefix.'course_modules cm ON fl.contextid = cm.id AND cm.module = '.$param_module.'
  48. LEFT JOIN
  49. '.$CFG->prefix.'turnitintool tu ON cm.instance = tu.id
  50. LEFT JOIN
  51. '.$CFG->prefix.'course cs ON tu.course = cs.id
  52. WHERE
  53. fl.component = \'mod_turnitintool\' AND fl.filesize != 0';
  54. $sCountQuery = 'SELECT
  55. fl.id AS id
  56. FROM
  57. '.$CFG->prefix.'files fl
  58. LEFT JOIN
  59. '.$CFG->prefix.'turnitintool_submissions sb ON fl.itemid = sb.id
  60. WHERE
  61. fl.component = "mod_turnitintool" AND fl.filesize != 0';
  62. $param_sortcol[0] = optional_param('iSortCol_0', null, PARAM_INT); // sortcol
  63. $param_sortingcols = optional_param('iSortingCols', 0, PARAM_INT); // sortingcols
  64. $sOrder = "";
  65. if ( !is_null( $param_sortcol[0] ) ) {
  66. $sOrder = " ORDER BY ";
  67. $startOrder = $sOrder;
  68. for ( $i=0; $i < intval( $param_sortingcols ); $i++ ) {
  69. $param_sortcol[$i] = optional_param('iSortCol_'.$i, null, PARAM_INT); // sortcol
  70. $param_sortable[$i] = optional_param('bSortable_'.$param_sortcol[$i], null, PARAM_TEXT); // sortable
  71. $param_sortdir[$i] = optional_param('sSortDir_'.$i, null, PARAM_TEXT); // sortdir
  72. if ( $param_sortable[$i] == "true" ) {
  73. $sOrder .= $aColumns[ $param_sortcol[$i] ] . " " . $param_sortdir[$i] . ", ";
  74. }
  75. }
  76. $sOrder = substr_replace( $sOrder, "", -2 );
  77. if ( $sOrder == $startOrder ) $sOrder = "";
  78. }
  79. $sOrder .= ",tu.id asc ";
  80. $param_search = optional_param('sSearch', null, PARAM_TEXT); // sortingcols
  81. $start = true;
  82. $sWhere = ' AND ( ';
  83. $nobracket = false;
  84. for ( $i=0; $i < count($aColumns); $i++ ) {
  85. $param_searchable[$i] = optional_param('bSearchable_'.$i, null, PARAM_TEXT);
  86. $param_search_n[$i] = optional_param('sSearch_'.$i, null, PARAM_TEXT);
  87. if ( !is_null($param_searchable[$i]) && $param_searchable[$i] == "true" && ( $param_search != '' OR $param_search_n[$i] != '' ) ) {
  88. if ( !$start ) $sWhere .= " OR ";
  89. if ( $aColumns[$i] == 'sb.submission_objectid' AND $param_search_n[$i] == '##deletable##' ) {
  90. $sWhere = ( $sWhere == ' AND ( ' ) ? '' : substr_replace( $sWhere, "", -3 ) . ' )';
  91. $sWhere .= " AND ( sb.submission_objectid IS NOT NULL OR sb.submission_filename IS NULL )";
  92. $nobracket = true;
  93. } else if ( $aColumns[$i] != ' ' ) {
  94. $sWhere .= "CAST(" . $aColumns[$i] . " AS CHAR) LIKE '%" . $param_search . "%'";
  95. $start = false;
  96. }
  97. }
  98. }
  99. if ( $sWhere != ' AND ( ' AND !$nobracket ) {
  100. $sWhere .= " ) ";
  101. } else if ( $nobracket ) {
  102. $sWhere .= " ";
  103. } else {
  104. $sWhere = "";
  105. }
  106. $sLimit = "";
  107. if ( !is_null( $param_displaystart ) && $param_displaylength != '-1' ) {
  108. $limitfrom = $param_displaystart;
  109. $limitnum = $param_displaylength;
  110. } else {
  111. $limitfrom = ( isset($DB) AND is_callable(array($DB,'get_records_sql')) ) ? 0 : '';
  112. $limitnum = ( isset($DB) AND is_callable(array($DB,'get_records_sql')) ) ? 0 : '';
  113. }
  114. $sQuery .= $sWhere;
  115. $cResult = ( isset($DB) AND is_callable(array($DB,'get_records_sql')) ) ? $DB->get_records_sql( $sQuery, array() ) : get_records_sql( $sQuery );
  116. $iTotal = count( $cResult );
  117. $sQuery .= $sOrder . $sLimit;
  118. $rResult = ( isset($DB) AND is_callable(array($DB,'get_records_sql')) )
  119. ? $DB->get_records_sql( $sQuery, array(), $limitfrom, $limitnum )
  120. : get_records_sql( $sQuery, $limitfrom, $limitnum );
  121. $iFilteredTotal = $iTotal; //count( $rResult );
  122. $param_echo = optional_param('sEcho', 0, PARAM_INT); // echo
  123. $output = array(
  124. "sEcho" => $param_echo,
  125. "iTotalRecords" => $iTotal,
  126. "iTotalDisplayRecords" => $iFilteredTotal,
  127. "aaData" => array()
  128. );
  129. foreach ( $rResult as $result ) {
  130. // 'cs.fullname', 'tu.name', 'fl.filename', 'us.firstname', 'us.lastname', 'us.email', 'fl.timecreated'
  131. if ( !empty( $param_search ) AND !is_null( $result->unanon ) AND !$result->unanon ) {
  132. $output['iTotalDisplayRecords'] = $output['iTotalDisplayRecords'] - 1;
  133. continue; // If these are search results and this is anonymised skip it
  134. }
  135. $row = array();
  136. if ( is_null( $result->filename ) OR is_null( $result->activityid ) ) {
  137. $row[] = '<i><b>'.get_string('assigngeterror','turnitintool').'</b></i>';
  138. } else {
  139. $row[] = '<a href="'.$CFG->wwwroot.'/mod/turnitintool/view.php?id='.$result->cmid.'&do=allsubmissions">' . $result->coursetitle . ' (' . $result->courseshort . ') - ' . $result->activity . '</a>';
  140. }
  141. $row[] = $result->courseshort;
  142. $row[] = $result->coursetitle;
  143. $row[] = '<a href="'.$CFG->wwwroot.'/mod/turnitintool/extras.php?do=files&fileid='.$result->id.'&filehash='.$result->hash.'" class="fileicon">'
  144. . ( is_null( $result->filename ) ? $result->rawfilename : $result->filename ) . '</a>';
  145. $row[] = ' ';
  146. $row[] = ( !is_null( $result->unanon ) AND !$result->unanon ) ? get_string( 'anonenabled', 'turnitintool' ) : '<a href="'.$CFG->wwwroot.'/user/view.php?id='.$result->userid.'">'
  147. .$result->lastname . ', ' . $result->firstname . '</a> (' . $result->email . ')';
  148. $row[] = ' ';
  149. $row[] = userdate( $result->created );
  150. $fnd = array("\n","\r");
  151. $rep = array('\n','\r');
  152. $row[] = ( !is_null( $result->objectid ) OR is_null( $result->filename ) ) ? '<a href="'.$CFG->wwwroot.'/mod/turnitintool/extras.php?do=files&fileid='
  153. .$result->id.'&filehash='.$result->hash.'&filerem=true" '
  154. .' onclick="return confirm(\''.str_replace($fnd, $rep, get_string('filedeleteconfirm','turnitintool')).'\')">'
  155. .'<img src="pix/delete.png" class="tiiicons" alt="'.get_string('delete','turnitintool').'" /></a>' : '';
  156. $output['aaData'][] = $row;
  157. }
  158. $output['query']=$sQuery;
  159. echo json_encode( $output );