PageRenderTime 45ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/backuplib.php

https://github.com/eviweb/moodle-mod_turnitintool
PHP | 347 lines | 299 code | 34 blank | 14 comment | 43 complexity | c0c4256a0ff3a619dd01e24912a4dcfc MD5 | raw file
Possible License(s): GPL-3.0
  1. <?php
  2. function turnitintool_backup_mods($bf,$preferences) {
  3. global $CFG, $DB;
  4. $status = true;
  5. // Add check to determine the database call to enable backward compatibility
  6. if (is_callable(array($DB,'get_records'))) {
  7. $turnitintools = $DB->get_records("turnitintool", array("course"=>$preferences->backup_course),"id");
  8. } else {
  9. $turnitintools = get_records("turnitintool","course",$preferences->backup_course,"id");
  10. }
  11. if ($turnitintools) {
  12. foreach ($turnitintools as $turnitintool) {
  13. if (backup_mod_selected($preferences,'turnitintool',$turnitintool)) {
  14. $status = turnitintool_backup_one_mod($bf,$preferences,$turnitintool);
  15. }
  16. }
  17. }
  18. return $status;
  19. }
  20. function turnitintool_backup_one_mod($bf,$preferences,$turnitintool) {
  21. global $CFG, $DB;
  22. // Add check to determine the database call to enable backward compatibility
  23. if (is_numeric($turnitintool) AND is_callable(array($DB,'get_records'))) {
  24. $turnitintool = $DB->get_record('turnitintool', array('id'=>$turnitintool));
  25. } else if (is_numeric($turnitintool)) {
  26. $turnitintool = get_record('turnitintool','id',$turnitintool);
  27. }
  28. $status = true;
  29. fwrite ($bf,start_tag("MOD",3,true));
  30. fwrite ($bf,full_tag("ID",4,false,$turnitintool->id));
  31. fwrite ($bf,full_tag("MODTYPE",4,false,"turnitintool"));
  32. fwrite ($bf,full_tag("NAME",4,false,$turnitintool->name));
  33. fwrite ($bf,full_tag("GRADE",4,false,$turnitintool->grade));
  34. fwrite ($bf,full_tag("NUMPARTS",4,false,$turnitintool->numparts));
  35. fwrite ($bf,full_tag("TIIACCOUNT",4,false,$CFG->turnitin_account_id));
  36. fwrite ($bf,full_tag("DEFAULTDTSTART",4,false,$turnitintool->defaultdtstart));
  37. fwrite ($bf,full_tag("DEFAULTDTDUE",4,false,$turnitintool->defaultdtdue));
  38. fwrite ($bf,full_tag("DEFAULTDTPOST",4,false,$turnitintool->defaultdtpost));
  39. fwrite ($bf,full_tag("ANON",4,false,$turnitintool->anon));
  40. fwrite ($bf,full_tag("PORTFOLIO",4,false,$turnitintool->portfolio));
  41. fwrite ($bf,full_tag("ALLOWLATE",4,false,$turnitintool->allowlate));
  42. fwrite ($bf,full_tag("REPORTGENSPEED",4,false,$turnitintool->reportgenspeed));
  43. fwrite ($bf,full_tag("SUBMITPAPERSTO",4,false,$turnitintool->submitpapersto));
  44. fwrite ($bf,full_tag("SPAPERCHECK",4,false,$turnitintool->spapercheck));
  45. fwrite ($bf,full_tag("INTERNETCHECK",4,false,$turnitintool->internetcheck));
  46. fwrite ($bf,full_tag("JOURNALCHECK",4,false,$turnitintool->journalcheck));
  47. fwrite ($bf,full_tag("MAXFILESIZE",4,false,$turnitintool->maxfilesize));
  48. fwrite ($bf,full_tag("INTRO",4,false,$turnitintool->intro));
  49. fwrite ($bf,full_tag("INTROFORMAT",4,false,$turnitintool->introformat));
  50. fwrite ($bf,full_tag("TIMECREATED",4,false,$turnitintool->timecreated));
  51. fwrite ($bf,full_tag("TIMEMODIFIED",4,false,$turnitintool->timemodified));
  52. fwrite ($bf,full_tag("STUDENTREPORTS",4,false,$turnitintool->studentreports));
  53. fwrite ($bf,full_tag("DATEFORMAT",4,false,$turnitintool->dateformat));
  54. fwrite ($bf,full_tag("USEGRADEMARK",4,false,$turnitintool->usegrademark));
  55. fwrite ($bf,full_tag("GRADEDISPLAY",4,false,$turnitintool->gradedisplay));
  56. fwrite ($bf,full_tag("AUTOUPDATES",4,false,$turnitintool->autoupdates));
  57. fwrite ($bf,full_tag("COMMENTEDITTIME",4,false,$turnitintool->commentedittime));
  58. fwrite ($bf,full_tag("COMMENTMAXSIZE",4,false,$turnitintool->commentmaxsize));
  59. fwrite ($bf,full_tag("AUTOSUBMISSION",4,false,$turnitintool->autosubmission));
  60. fwrite ($bf,full_tag("SHOWNONSUBMISSION",4,false,$turnitintool->shownonsubmission));
  61. fwrite ($bf,full_tag("EXCLUDEBIBLIO",4,false,$turnitintool->excludebiblio));
  62. fwrite ($bf,full_tag("EXCLUDEQUOTED",4,false,$turnitintool->excludequoted));
  63. fwrite ($bf,full_tag("EXCLUDEVALUE",4,false,$turnitintool->excludevalue));
  64. fwrite ($bf,full_tag("EXCLUDETYPE",4,false,$turnitintool->excludetype));
  65. fwrite ($bf,full_tag("ERATER",4,false,$turnitintool->erater));
  66. fwrite ($bf,full_tag("ERATERHANDBOOK",4,false,$turnitintool->erater_handbook));
  67. fwrite ($bf,full_tag("ERATERDICTIONARY",4,false,$turnitintool->erater_dictionary));
  68. fwrite ($bf,full_tag("ERATERSPELLING",4,false,$turnitintool->erater_spelling));
  69. fwrite ($bf,full_tag("ERATERGRAMMAR",4,false,$turnitintool->erater_grammar));
  70. fwrite ($bf,full_tag("ERATERUSAGE",4,false,$turnitintool->erater_usage));
  71. fwrite ($bf,full_tag("ERATERMECHANICS",4,false,$turnitintool->erater_mechanics));
  72. fwrite ($bf,full_tag("ERATERSTYLE",4,false,$turnitintool->erater_style));
  73. fwrite ($bf,full_tag("TRANSMATCH",4,false,$turnitintool->transmatch));
  74. // Get the parts for this assignment, add check to determine the database call to enable backward compatibility
  75. if (is_callable(array($DB,'get_records'))) {
  76. $parts = $DB->get_records('turnitintool_parts', array('turnitintoolid'=>$turnitintool->id));
  77. } else {
  78. $parts = get_records('turnitintool_parts','turnitintoolid',$turnitintool->id);
  79. }
  80. $parts = (!$parts) ? array() : $parts;
  81. fwrite ($bf,start_tag("PARTS",4,true));
  82. foreach ($parts as $part) {
  83. fwrite ($bf,start_tag("PART",5,true));
  84. fwrite ($bf,full_tag("ID",6,false,$part->id));
  85. fwrite ($bf,full_tag("TURNITINTOOLID",6,false,$part->turnitintoolid));
  86. fwrite ($bf,full_tag("PARTNAME",6,false,$part->partname));
  87. fwrite ($bf,full_tag("TIIASSIGNID",6,false,$part->tiiassignid));
  88. fwrite ($bf,full_tag("DTSTART",6,false,$part->dtstart));
  89. fwrite ($bf,full_tag("DTDUE",6,false,$part->dtdue));
  90. fwrite ($bf,full_tag("DTPOST",6,false,$part->dtpost));
  91. fwrite ($bf,full_tag("MAXMARKS",6,false,$part->maxmarks));
  92. fwrite ($bf,full_tag("DELETED",6,false,$part->deleted));
  93. fwrite ($bf,end_tag("PART",5,true));
  94. }
  95. fwrite ($bf,end_tag("PARTS",4,true));
  96. // Get the course data for this assignment, add check to determine the database call to enable backward compatibility
  97. if (is_callable(array($DB,'get_records'))) {
  98. $course = $DB->get_record('turnitintool_courses', array('courseid'=>$turnitintool->course));
  99. } else {
  100. $course = get_record('turnitintool_courses','courseid',$turnitintool->course);
  101. }
  102. // Get the turnitin course owner data for this assignment, add check to determine the database call to enable backward compatibility
  103. if (is_callable(array($DB,'get_records'))) {
  104. $owner = $DB->get_record('user', array('id'=>$course->ownerid));
  105. $tiiuser = $DB->get_record('turnitintool_users', array('userid'=>$course->ownerid));
  106. } else {
  107. $owner = get_record('user','id',$course->ownerid);
  108. $tiiuser = get_record('turnitintool_users', 'userid', $course->ownerid);
  109. }
  110. fwrite ($bf,start_tag("COURSE",4,true));
  111. fwrite ($bf,full_tag("ID",5,false,$course->id));
  112. fwrite ($bf,full_tag("COURSEID",5,false,$course->courseid));
  113. fwrite ($bf,full_tag("OWNERID",5,false,$course->ownerid));
  114. fwrite ($bf,full_tag("OWNERTIIUID",5,false,$tiiuser->turnitin_uid));
  115. fwrite ($bf,full_tag("OWNEREMAIL",5,false,$owner->email));
  116. fwrite ($bf,full_tag("OWNERUN",5,false,$owner->username));
  117. fwrite ($bf,full_tag("OWNERFN",5,false,$owner->firstname));
  118. fwrite ($bf,full_tag("OWNERLN",5,false,$owner->lastname));
  119. fwrite ($bf,full_tag("TURNITIN_CTL",5,false,$course->turnitin_ctl));
  120. fwrite ($bf,full_tag("TURNITIN_CID",5,false,$course->turnitin_cid));
  121. fwrite ($bf,end_tag("COURSE",4,true));
  122. if (backup_userdata_selected($preferences,'turnitintool',$turnitintool->id)) {
  123. $status = backup_turnitintool_submissions($bf,$preferences,$turnitintool->id);
  124. if ($status) {
  125. $status = backup_turnitintool_files_instance($bf,$preferences,$turnitintool->id);
  126. }
  127. }
  128. $status = fwrite ($bf,end_tag("MOD",3,true));
  129. return $status;
  130. }
  131. function backup_turnitintool_submissions($bf,$preferences,$turnitintool) {
  132. global $CFG, $DB;
  133. $status = true;
  134. // Get the course data for this assignment, add check to determine the database call to enable backward compatibility
  135. if (is_callable(array($DB,'get_records'))) {
  136. $turnitintool_submissions = $DB->get_record('turnitintool_submissions', array('turnitintoolid'=>$tii_sub->id));
  137. } else {
  138. $turnitintool_submissions = get_records("turnitintool_submissions","turnitintoolid",$turnitintool,"id");
  139. }
  140. if ($turnitintool_submissions) {
  141. $status =fwrite ($bf,start_tag("SUBMISSIONS",4,true));
  142. foreach ($turnitintool_submissions as $tii_sub) {
  143. $status =fwrite ($bf,start_tag("SUBMISSION",5,true));
  144. fwrite ($bf,full_tag("ID",6,false,$tii_sub->id));
  145. fwrite ($bf,full_tag("USERID",6,false,$tii_sub->userid));
  146. fwrite ($bf,full_tag("SUBMISSION_PART",6,false,$tii_sub->submission_part));
  147. fwrite ($bf,full_tag("SUBMISSION_TITLE",6,false,$tii_sub->submission_title));
  148. fwrite ($bf,full_tag("SUBMISSION_TYPE",6,false,$tii_sub->submission_type));
  149. fwrite ($bf,full_tag("SUBMISSION_FILENAME",6,false,$tii_sub->submission_filename));
  150. fwrite ($bf,full_tag("SUBMISSION_OBJECTID",6,false,$tii_sub->submission_objectid));
  151. fwrite ($bf,full_tag("SUBMISSION_SCORE",6,false,$tii_sub->submission_score));
  152. fwrite ($bf,full_tag("SUBMISSION_GRADE",6,false,$tii_sub->submission_grade));
  153. fwrite ($bf,full_tag("SUBMISSION_GMIMAGED",6,false,$tii_sub->submission_gmimaged));
  154. fwrite ($bf,full_tag("SUBMISSION_STATUS",6,false,$tii_sub->submission_status));
  155. fwrite ($bf,full_tag("SUBMISSION_QUEUED",6,false,$tii_sub->submission_queued));
  156. fwrite ($bf,full_tag("SUBMISSION_ATTEMPTS",6,false,$tii_sub->submission_attempts));
  157. fwrite ($bf,full_tag("SUBMISSION_MODIFIED",6,false,$tii_sub->submission_modified));
  158. fwrite ($bf,full_tag("SUBMISSION_PARENT",6,false,$tii_sub->submission_parent));
  159. fwrite ($bf,full_tag("SUBMISSION_NMUSERID",6,false,$tii_sub->submission_nmuserid));
  160. fwrite ($bf,full_tag("SUBMISSION_NMFIRSTNAME",6,false,$tii_sub->submission_nmfirstname));
  161. fwrite ($bf,full_tag("SUBMISSION_NMLASTNAME",6,false,$tii_sub->submission_nmlastname));
  162. fwrite ($bf,full_tag("SUBMISSION_UNANON",6,false,$tii_sub->submission_unanon));
  163. fwrite ($bf,full_tag("SUBMISSION_UNANONREASON",6,false,$tii_sub->submission_unanonreason));
  164. fwrite ($bf,full_tag("SUBMISSION_TRANSMATCH",6,false,$tii_sub->submission_transmatch));
  165. // Get the turnitin user data for this submission, add check to determine the database call to enable backward compatibility
  166. if (is_callable(array($DB,'get_record'))) {
  167. $user = $DB->get_record('turnitintool_users', array('userid'=>$tii_sub->userid));
  168. } else {
  169. $user = get_record('turnitintool_users','userid',$tii_sub->userid);
  170. }
  171. fwrite($bf,full_tag("TIIUSERID",6,false,$user->turnitin_uid));
  172. // Get the course data for this assignment, add check to determine the database call to enable backward compatibility
  173. if (is_callable(array($DB,'get_record'))) {
  174. $comments = $DB->get_records('turnitintool_comments', array('submissionid'=>$tii_sub->id));
  175. } else {
  176. $comments = get_records('turnitintool_comments','submissionid',$tii_sub->id);
  177. }
  178. $comments = (!$comments) ? array() : $comments;
  179. fwrite ($bf,start_tag("COMMENTS",6,true));
  180. foreach ($comments as $comment) {
  181. fwrite ($bf,start_tag("COMMENT",7,true));
  182. fwrite ($bf,full_tag("ID",8,false,$comment->id));
  183. fwrite ($bf,full_tag("SUBMISSIONID",8,false,$comment->submissionid));
  184. fwrite ($bf,full_tag("USERID",8,false,$comment->userid));
  185. fwrite ($bf,full_tag("COMMENT",8,false,$comment->commenttext));
  186. fwrite ($bf,full_tag("DATE",8,false,$comment->dateupdated));
  187. fwrite ($bf,full_tag("DELETED",8,false,$comment->deleted));
  188. fwrite ($bf,end_tag("COMMENT",7,true));
  189. }
  190. fwrite ($bf,end_tag("COMMENTS",6,true));
  191. $status = fwrite($bf,end_tag("SUBMISSION",5,true));
  192. }
  193. $status = fwrite($bf,end_tag("SUBMISSIONS",4,true));
  194. }
  195. return $status;
  196. }
  197. function backup_turnitintool_files($bf,$preferences) {
  198. global $CFG;
  199. $status = true;
  200. $status = check_and_create_moddata_dir($preferences->backup_unique_code);
  201. if ($status) {
  202. if (is_dir($CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/turnitintool")) {
  203. $status = backup_copy_file($CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/turnitintool",
  204. $CFG->dataroot."/temp/backup/".$preferences->backup_unique_code."/moddata/turnitintool");
  205. }
  206. }
  207. return $status;
  208. }
  209. function backup_turnitintool_files_instance($bf,$preferences,$instanceid) {
  210. global $CFG;
  211. $status = true;
  212. $status = check_and_create_moddata_dir($preferences->backup_unique_code);
  213. $status = check_dir_exists($CFG->dataroot."/temp/backup/".$preferences->backup_unique_code."/moddata/turnitintool/",true);
  214. if ($status) {
  215. if (is_dir($CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/turnitintool/".$instanceid)) {
  216. $status = backup_copy_file($CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/turnitintool/".$instanceid,
  217. $CFG->dataroot."/temp/backup/".$preferences->backup_unique_code."/moddata/turnitintool/".$instanceid);
  218. }
  219. }
  220. return $status;
  221. }
  222. function turnitintool_encode_content_links($content,$preferences) {
  223. global $CFG;
  224. $base = preg_quote($CFG->wwwroot,"/");
  225. //Link to the list of turnitintool
  226. $buscar="/(".$base."\/mod\/turnitintool\/index.php\?id\=)([0-9]+)/";
  227. $result= preg_replace($buscar,'$@TURNITINTOOLINDEX*$2@$',$content);
  228. //Link to turnitintool view by moduleid
  229. $buscar="/(".$base."\/mod\/turnitintool\/view.php\?id\=)([0-9]+)/";
  230. $result= preg_replace($buscar,'$@TURNITINTOOLVIEWBYID*$2@$',$result);
  231. return $result;
  232. }
  233. function turnitintool_check_backup_mods($course,$user_data=false,$backup_unique_code,$instances=null) {
  234. if (!empty($instances) && is_array($instances) && count($instances)) {
  235. $info = array();
  236. foreach ($instances as $id => $instance) {
  237. $info += turnitintool_check_backup_mods_instances($instance,$backup_unique_code);
  238. }
  239. return $info;
  240. }
  241. $info[0][0] = get_string("modulenameplural","turnitintool");
  242. if ($ids = turnitintool_ids($course)) {
  243. $info[0][1] = count($ids);
  244. } else {
  245. $info[0][1] = 0;
  246. }
  247. if ($user_data) {
  248. $info[1][0] = get_string("submissions","turnitintool");
  249. if ($ids = turnitintool_submission_ids_by_course($course)) {
  250. $info[1][1] = count($ids);
  251. } else {
  252. $info[1][1] = 0;
  253. }
  254. }
  255. return $info;
  256. }
  257. function turnitintool_check_backup_mods_instances($instance,$backup_unique_code) {
  258. $info[$instance->id.'0'][0] = '<b>'.$instance->name.'</b>';
  259. $info[$instance->id.'0'][1] = '';
  260. if (!empty($instance->userdata)) {
  261. $info[$instance->id.'1'][0] = get_string("submissions","turnitintool");
  262. if ($ids = turnitintool_submission_ids_by_instance($instance->id)) {
  263. $info[$instance->id.'1'][1] = count($ids);
  264. } else {
  265. $info[$instance->id.'1'][1] = 0;
  266. }
  267. }
  268. return $info;
  269. }
  270. function turnitintool_ids($course) {
  271. global $CFG, $DB;
  272. // Add check to determine the database call to enable backward compatibility
  273. if (is_callable(array($DB,'get_records'))) {
  274. return $DB->get_records_sql("SELECT t.id, t.course
  275. FROM {$CFG->prefix}turnitintool t
  276. WHERE t.course = '$course'");
  277. } else {
  278. return get_records_sql("SELECT t.id, t.course
  279. FROM {$CFG->prefix}turnitintool t
  280. WHERE t.course = '$course'");
  281. }
  282. }
  283. function turnitintool_submission_ids_by_course($course) {
  284. global $CFG, $DB;
  285. // Add check to determine the database call to enable backward compatibility
  286. if (is_callable(array($DB,'get_records'))) {
  287. return $DB->get_records_sql("SELECT s.id , s.turnitintoolid
  288. FROM {$CFG->prefix}turnitintool_submissions s,
  289. {$CFG->prefix}turnitintool t
  290. WHERE t.course = '$course' AND
  291. s.turnitintoolid = t.id");
  292. } else {
  293. return get_records_sql("SELECT s.id , s.turnitintoolid
  294. FROM {$CFG->prefix}turnitintool_submissions s,
  295. {$CFG->prefix}turnitintool t
  296. WHERE t.course = '$course' AND
  297. s.turnitintoolid = t.id");
  298. }
  299. }
  300. function turnitintool_submission_ids_by_instance($instanceid) {
  301. global $CFG, $DB;
  302. // Add check to determine the database call to enable backward compatibility
  303. if (is_callable(array($DB,'get_records'))) {
  304. return $DB->get_records_sql("SELECT s.id, s.turnitintoolid
  305. FROM {$CFG->prefix}turnitintool_submissions s
  306. WHERE s.turnitintoolid = $instanceid");
  307. } else {
  308. return get_records_sql("SELECT s.id , s.turnitintoolid
  309. FROM {$CFG->prefix}turnitintool_submissions s
  310. WHERE s.turnitintoolid = $instanceid");
  311. }
  312. }
  313. /* ?> */