PageRenderTime 27ms CodeModel.GetById 30ms RepoModel.GetById 0ms app.codeStats 0ms

/mod/certificate/backuplib.php

https://github.com/nadavkav/MoodleTAO
PHP | 273 lines | 186 code | 41 blank | 46 comment | 22 complexity | 6f4150298e9daca15f8fa1752643b93b MD5 | raw file
  1. <?php //$Id: version.php,v 3.1.9.3
  2. //This php script contains all the stuff to backup/restore
  3. //-----------------------------------------------------------
  4. function certificate_backup_mods($bf,$preferences) {
  5. global $CFG;
  6. $status = true;
  7. //Iterate over certificate table
  8. if ($certificates = get_records('certificate','course',$preferences->backup_course,"id")) {
  9. foreach ($certificates as $certificate) {
  10. $backup_mod_selected = backup_mod_selected($preferences, 'certificate', $certificate->id);
  11. if ($backup_mod_selected) {
  12. $status = certificate_backup_one_mod($bf,$preferences,$data);
  13. // backup files happens in backup_one_mod now too.
  14. }
  15. }
  16. }
  17. return $status;
  18. }
  19. function certificate_backup_one_mod($bf,$preferences,$certificate) {
  20. global $CFG;
  21. if (is_numeric($certificate)) {
  22. $certificate = get_record('certificate','id',$certificate);
  23. }
  24. $status = true;
  25. //Start mod
  26. fwrite ($bf,start_tag("MOD",3,true));
  27. //Print certificate data
  28. fwrite ($bf,full_tag("ID",4,false,$certificate->id));
  29. fwrite ($bf,full_tag("MODTYPE",4,false,"certificate"));
  30. fwrite ($bf,full_tag("NAME",4,false,$certificate->name));
  31. fwrite ($bf,full_tag("INTRO",4,false,$certificate->intro));
  32. fwrite ($bf,full_tag("EMAILTEACHERS",4,false,$certificate->emailteachers));
  33. fwrite ($bf,full_tag("EMAILOTHERS",4,false,$certificate->emailothers));
  34. fwrite ($bf,full_tag("SAVECERT",4,false,$certificate->savecert));
  35. fwrite ($bf,full_tag("REPORTCERT",4,false,$certificate->reportcert));
  36. fwrite ($bf,full_tag("DELIVERY",4,false,$certificate->delivery));
  37. fwrite ($bf,full_tag("TYPE",4,false,$certificate->certificatetype));
  38. fwrite ($bf,full_tag("BORDERSTYLE",4,false,$certificate->borderstyle));
  39. fwrite ($bf,full_tag("BORDERCOLOR",4,false,$certificate->bordercolor));
  40. fwrite ($bf,full_tag("PRINTWMARK",4,false,$certificate->printwmark));
  41. fwrite ($bf,full_tag("PRINTDATE",4,false,$certificate->printdate));
  42. fwrite ($bf,full_tag("DATEFMT",4,false,$certificate->datefmt));
  43. fwrite ($bf,full_tag("PRINTOUTCOME",4,false,$certificate->printoutcome));
  44. fwrite ($bf,full_tag("PRINTNUMBER",4,false,$certificate->printnumber));
  45. fwrite ($bf,full_tag("PRINTGRADE",4,false,$certificate->printgrade));
  46. fwrite ($bf,full_tag("GRADEFMT",4,false,$certificate->gradefmt));
  47. fwrite ($bf,full_tag("PRINTHOURS",4,false,$certificate->printhours));
  48. fwrite ($bf,full_tag("SETCERTIFICATION",4,false,$certificate->setcertification));
  49. fwrite ($bf,full_tag("REQUIREDCERTIFICATION",4,false,$certificate->requiredcertification));
  50. fwrite ($bf,full_tag("LOCKGRADE",4,false,$certificate->lockgrade));
  51. fwrite ($bf,full_tag("REQUIREDGRADE",4,false,$certificate->requiredgrade));
  52. fwrite ($bf,full_tag("PRINTTEACHER",4,false,$certificate->printteacher));
  53. fwrite ($bf,full_tag("CUSTOMTEXT",4,false,$certificate->customtext));
  54. fwrite ($bf,full_tag("PRINTSIGNATURE",4,false,$certificate->printsignature));
  55. fwrite ($bf,full_tag("PRINTSEAL",4,false,$certificate->printseal));
  56. fwrite ($bf,full_tag("TIMEMODIFIED",4,false,$certificate->timemodified));
  57. //if we've selected to backup users info, then execute backup_certificate_issues and
  58. //backup_certificate_files_instance
  59. if (backup_userdata_selected($preferences,'certificate',$certificate->id)) {
  60. $status = backup_certificate_issues($bf,$preferences,$certificate->id);
  61. if ($status) {
  62. $status = backup_certificate_file_instance($bf,$preferences,$certificate->id);
  63. }
  64. }
  65. //now backup the linked stuff
  66. $status = backup_certificate_linked_modules ($bf,$preferences,$certificate->id);
  67. //End mod
  68. fwrite ($bf,end_tag("MOD",3,true));
  69. return $status;
  70. }
  71. //Backup certificate_issues contents (executed from certificate_backup_mods)
  72. function backup_certificate_issues ($bf,$preferences,$certificateid) {
  73. global $CFG;
  74. $status = true;
  75. $certificate_issues = get_records("certificate_issues","certificateid",$certificateid);
  76. //If there is issues
  77. if ($certificate_issues) {
  78. //Write start tag
  79. $status =fwrite ($bf,start_tag("ISSUES",4,true));
  80. //Iterate over each issue
  81. foreach ($certificate_issues as $cert_iss) {
  82. //Start issues
  83. $status =fwrite ($bf,start_tag("ISSUE",5,true));
  84. //Print viewed contents
  85. fwrite ($bf,full_tag("ID",6,false,$cert_iss->id));
  86. fwrite ($bf,full_tag("CERTIFICATEID",6,false,$cert_iss->certificateid));
  87. fwrite ($bf,full_tag("USERID",6,false,$cert_iss->userid));
  88. fwrite ($bf,full_tag("TIMECREATED",6,false,$cert_iss->timecreated));
  89. fwrite ($bf,full_tag("STUDENTNAME",6,false,$cert_iss->studentname));
  90. fwrite ($bf,full_tag("CODE",6,false,$cert_iss->code));
  91. fwrite ($bf,full_tag("CLASSNAME",6,false,$cert_iss->classname));
  92. fwrite ($bf,full_tag("CERTDATE",6,false,$cert_iss->certdate));
  93. fwrite ($bf,full_tag("REPORTGRADE",6,false,$cert_iss->reportgrade));
  94. fwrite ($bf,full_tag("MAILED",6,false,$cert_iss->mailed));
  95. //End viewed
  96. $status =fwrite ($bf,end_tag("ISSUE",5,true));
  97. }
  98. //Write end tag
  99. $status =fwrite ($bf,end_tag("ISSUES",4,true));
  100. }
  101. return $status;
  102. }
  103. //Backup certificate_linked_modules contents (executed from certificate_backup_mods)
  104. function backup_certificate_linked_modules ($bf,$preferences,$certificate_id) {
  105. global $CFG;
  106. $status = true;
  107. $certificate_linked_modules = get_records("certificate_linked_modules","certificate_id",$certificate_id);
  108. //If there is issues
  109. if ($certificate_linked_modules) {
  110. //Write start tag
  111. $status =fwrite ($bf,start_tag("LINKS",4,true));
  112. //Iterate over each issue
  113. foreach ($certificate_linked_modules as $cert_link) {
  114. //Start issues
  115. $status =fwrite ($bf,start_tag("LINK",5,true));
  116. //Print viewed contents
  117. fwrite ($bf,full_tag("ID",6,false,$cert_link->id));
  118. fwrite ($bf,full_tag("CERTIFICATE_ID",6,false,$cert_link->certificate_id));
  119. fwrite ($bf,full_tag("LINKID",6,false,$cert_link->linkid));
  120. fwrite ($bf,full_tag("LINKGRADE",6,false,$cert_link->linkgrade));
  121. fwrite ($bf,full_tag("TIMEMODIFIED",6,false,$cert_link->timemodified));
  122. //End viewed
  123. $status =fwrite ($bf,end_tag("LINK",5,true));
  124. }
  125. //Write end tag
  126. $status =fwrite ($bf,end_tag("LINKS",4,true));
  127. }
  128. return $status;
  129. }
  130. //Backup certificate files because we've selected to backup user info
  131. //and files are user info's level
  132. function backup_certificate_files($bf,$preferences) {
  133. global $CFG;
  134. $status = true;
  135. //First we check to moddata exists and create it as necessary
  136. //in temp/backup/$backup_code dir
  137. $status = check_and_create_moddata_dir($preferences->backup_unique_code);
  138. //Now copy the certificate dir
  139. if ($status) {
  140. //Only if it exists !! Thanks to Daniel Miksik.
  141. if (is_dir($CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/certificate")) {
  142. $status = backup_copy_file($CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/certificate",
  143. $CFG->dataroot."/temp/backup/".$preferences->backup_unique_code."/moddata/certificate");
  144. }
  145. }
  146. return $status;
  147. }
  148. function backup_certificate_file_instance($bf,$preferences,$instanceid) {
  149. global $course, $certificate, $CFG;
  150. $status = true;
  151. //First we check to moddata exists and create it as necessary
  152. //in temp/backup/$backup_code dir
  153. $status = check_and_create_moddata_dir($preferences->backup_unique_code);
  154. $status = check_dir_exists($CFG->dataroot."/temp/backup/".$preferences->backup_unique_code."/moddata/certificate/",true);
  155. //Now copy the certificate dir
  156. if ($status) {
  157. //Only if it exists !! Thanks to Daniel Miksik.
  158. if (is_dir($CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/certificate/".$instanceid)) {
  159. $status = backup_copy_file($CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/certificate/".$instanceid,
  160. $CFG->dataroot."/temp/backup/".$preferences->backup_unique_code."/moddata/certificate/".$instanceid);
  161. }
  162. }
  163. return $status;
  164. }
  165. ////Return an array of info (name,value)
  166. function certificate_check_backup_mods($course,$user_data=false,$backup_unique_code,$instances=null) {
  167. if (!empty($instances) && is_array($instances) && count($instances)) {
  168. $info = array();
  169. foreach ($instances as $id => $instance) {
  170. $info += certificate_check_backup_mods_instances($instance,$backup_unique_code);
  171. }
  172. return $info;
  173. }
  174. //First the course data
  175. $info[0][0] = get_string('modulenameplural','certificate');
  176. if ($ids = certificate_ids ($course)) {
  177. $info[0][1] = count($ids);
  178. } else {
  179. $info[0][1] = 0;
  180. }
  181. //Now, if requested, the user_data
  182. if ($user_data) {
  183. $info[1][0] = get_string('receivedcerts','certificate');
  184. if ($ids = certificate_issues_ids_by_course ($course)) {
  185. $info[1][1] = count($ids);
  186. } else {
  187. $info[1][1] = 0;
  188. }
  189. }
  190. return $info;
  191. }
  192. ////Return an array of info (name,value)
  193. function certificate_check_backup_mods_instances($instance,$backup_unique_code) {
  194. //First the course data
  195. $info[$instance->id.'0'][0] = '<b>'.$instance->name.'</b>';
  196. $info[$instance->id.'0'][1] = '';
  197. //Now, if requested, the user_data
  198. if (!empty($instance->userdata)) {
  199. $info[$instance->id.'1'][0] = get_string('receivedcerts','certificate');
  200. if ($ids = certificate_issues_ids_by_instance ($instance->id)) {
  201. $info[$instance->id.'1'][1] = count($ids);
  202. } else {
  203. $info[$instance->id.'1'][1] = 0;
  204. }
  205. }
  206. return $info;
  207. }
  208. // INTERNAL FUNCTIONS. BASED IN THE MOD STRUCTURE
  209. //Returns an array of certificate ids
  210. function certificate_ids ($course) {
  211. global $CFG;
  212. return get_records_sql ("SELECT a.id, a.course
  213. FROM {$CFG->prefix}certificate a
  214. WHERE a.course = '$course'");
  215. }
  216. //Returns an array of certificate_issues id
  217. function certificate_issues_ids_by_course ($course) {
  218. global $CFG;
  219. return get_records_sql ("SELECT s.id , s.certificateid
  220. FROM {$CFG->prefix}certificate_issues s,
  221. {$CFG->prefix}certificate a
  222. WHERE a.course = '$course' AND
  223. s.certificateid = a.id");
  224. }
  225. //Returns an array of certificate_issues id
  226. function certificate_issues_ids_by_instance ($instanceid) {
  227. global $CFG;
  228. return get_records_sql ("SELECT s.id , s.certificateid
  229. FROM {$CFG->prefix}certificate_issues s
  230. WHERE s.certificateid = $instanceid");
  231. }
  232. ?>