Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Merge branch 'master' of https://github.com/moodle/moodle

  • Loading branch information...
commit 3e01e06defdc72b2d0e0c0067dda8d9878dce988 2 parents 6998831 + 904673d
pcharsle pcharsle authored

Showing 472 changed files with 5,505 additions and 1,806 deletions. Show diff stats Hide diff stats

  1. +1 1  admin/mnet/peers.php
  2. +1 1  admin/renderer.php
  3. +22 26 admin/roles/lib.php
  4. +2 3 admin/roles/manage.php
  5. +9 12 admin/roles/usersroles.php
  6. +4 3 admin/settings/frontpage.php
  7. +1 1  admin/settings/mnet.php
  8. +3 2 admin/settings/users.php
  9. +3 3 admin/tool/assignmentupgrade/batchupgrade.php
  10. +1 1  admin/tool/assignmentupgrade/index.php
  11. +4 4 admin/tool/assignmentupgrade/listnotupgraded.php
  12. +1 1  admin/tool/assignmentupgrade/upgradesingle.php
  13. +1 1  admin/tool/assignmentupgrade/upgradesingleconfirm.php
  14. +4 4 admin/tool/capability/index.php
  15. +1 1  admin/tool/phpunit/cli/util.php
  16. +1 1  admin/tool/profiling/index.php
  17. +12 8 admin/tool/replace/index.php
  18. +10 0 admin/tool/replace/lang/en/tool_replace.php
  19. +1 1  admin/tool/unsuproles/index.php
  20. +3 0  admin/tool/xmldb/actions/edit_index/edit_index.class.php
  21. +12 0 admin/tool/xmldb/actions/edit_index_save/edit_index_save.class.php
  22. +1 1  auth/email/lang/en/auth_email.php
  23. +7 0 auth/upgrade.txt
  24. +10 10 backup/moodle2/backup_stepslib.php
  25. +50 36 backup/moodle2/restore_stepslib.php
  26. +0 1  backup/util/dbops/restore_dbops.class.php
  27. +11 9 backup/util/helper/backup_cron_helper.class.php
  28. +2 1  blog/edit_form.php
  29. +1 1  calendar/delete.php
  30. +6 0 course/edit.php
  31. +3 8 course/edit_form.php
  32. +1 0  course/editsection.php
  33. +54 2 course/editsection_form.php
  34. +6 3 course/info.php
  35. +17 18 course/lib.php
  36. +51 2 course/moodleform_mod.php
  37. +4 1 enrol/cohort/yui/quickenrolment/assets/skins/sam/quickenrolment.css
  38. +3 3 enrol/flatfile/settings.php
  39. +2 2 enrol/ldap/settingslib.php
  40. +1 1  enrol/locallib.php
  41. +3 4 enrol/meta/locallib.php
  42. +1 5 enrol/meta/settings.php
  43. +8 9 enrol/self/edit_form.php
  44. +7 0 enrol/upgrade.txt
  45. +1 0  grade/edit/tree/item.php
  46. +11 4 grade/edit/tree/item_form.php
  47. +2 7 group/autogroup.php
  48. +7 12 group/lib.php
  49. +2 2 install/lang/ca/error.php
  50. +23 6 install/lang/ca/install.php
  51. +1 1  install/lang/ga/langconfig.php
  52. +18 2 lang/en/admin.php
  53. +5 0 lang/en/condition.php
  54. +1 0  lang/en/grades.php
  55. +5 0 lang/en/role.php
  56. +259 120 lib/accesslib.php
  57. +1 4 lib/adminlib.php
  58. +1 8 lib/completion/completion_completion.php
  59. +1 5 lib/completion/completion_criteria_completion.php
  60. +330 4 lib/conditionlib.php
  61. +3 2 lib/datalib.php
  62. +9 9 lib/db/install.php
  63. +47 37 lib/db/install.xml
  64. +146 0 lib/db/upgrade.php
  65. +14 3 lib/ddl/database_manager.php
  66. +34 2 lib/ddl/postgres_sql_generator.php
  67. +8 5 lib/ddl/sql_generator.php
  68. +44 0 lib/ddl/tests/ddl_test.php
  69. +6 1 lib/ddl/tests/fixtures/xmldb_table.xml
  70. +25 20 lib/dml/moodle_database.php
  71. +8 4 lib/dml/mysqli_native_moodle_database.php
  72. +8 1 lib/dml/pgsql_native_moodle_database.php
  73. +77 11 lib/dml/tests/dml_test.php
  74. +5 2 lib/editor/tinymce/lib.php
  75. +0 1  lib/editor/tinymce/tiny_mce/3.5.1.1/jquery.tinymce.js
  76. +0 1  lib/editor/tinymce/tiny_mce/3.5.1.1/plugins/autosave/editor_plugin.js
  77. +0 1  lib/editor/tinymce/tiny_mce/3.5.1.1/plugins/contextmenu/editor_plugin.js
  78. +0 1  lib/editor/tinymce/tiny_mce/3.5.1.1/plugins/media/editor_plugin.js
  79. +0 1  lib/editor/tinymce/tiny_mce/3.5.1.1/plugins/table/editor_plugin.js
  80. +0 1  lib/editor/tinymce/tiny_mce/3.5.1.1/themes/advanced/editor_template.js
  81. +0 1  lib/editor/tinymce/tiny_mce/3.5.1.1/tiny_mce.js
  82. +0 1  lib/editor/tinymce/tiny_mce/3.5.1.1/tiny_mce_jquery.js
  83. +0 1  lib/editor/tinymce/tiny_mce/3.5.1.1/tiny_mce_prototype.js
  84. +1 0  lib/editor/tinymce/tiny_mce/3.5.4.1/jquery.tinymce.js
  85. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/langs/en.js
  86. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/license.txt
  87. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advhr/css/advhr.css
  88. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advhr/editor_plugin.js
  89. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advhr/editor_plugin_src.js
  90. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advhr/js/rule.js
  91. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advhr/langs/en_dlg.js
  92. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advhr/rule.htm
  93. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advimage/css/advimage.css
  94. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advimage/editor_plugin.js
  95. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advimage/editor_plugin_src.js
  96. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advimage/image.htm
  97. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advimage/img/sample.gif
  98. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advimage/js/image.js
  99. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advimage/langs/en_dlg.js
  100. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advlink/css/advlink.css
  101. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advlink/editor_plugin.js
  102. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advlink/editor_plugin_src.js
  103. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advlink/js/advlink.js
  104. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advlink/langs/en_dlg.js
  105. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advlink/link.htm
  106. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advlist/editor_plugin.js
  107. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/advlist/editor_plugin_src.js
  108. +1 1  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/autolink/editor_plugin.js
  109. +1 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/autolink/editor_plugin_src.js
  110. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/autoresize/editor_plugin.js
  111. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/autoresize/editor_plugin_src.js
  112. +1 0  lib/editor/tinymce/tiny_mce/3.5.4.1/plugins/autosave/editor_plugin.js
  113. +4 2 lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/autosave/editor_plugin_src.js
  114. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/autosave/langs/en.js
  115. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/bbcode/editor_plugin.js
  116. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/bbcode/editor_plugin_src.js
  117. +1 0  lib/editor/tinymce/tiny_mce/3.5.4.1/plugins/contextmenu/editor_plugin.js
  118. +9 7 lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/contextmenu/editor_plugin_src.js
  119. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/directionality/editor_plugin.js
  120. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/directionality/editor_plugin_src.js
  121. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/dragmath/dragmath.php
  122. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/dragmath/editor_plugin.js
  123. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/dragmath/editor_plugin_src.js
  124. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/dragmath/img/dragmath.gif
  125. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/dragmath/js/dragmath.js
  126. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/dragmath/langs/en_dlg.js
  127. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/editor_plugin.js
  128. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/editor_plugin_src.js
  129. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/emotions.htm
  130. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-cool.gif
  131. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-cry.gif
  132. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-embarassed.gif
  133. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-foot-in-mouth.gif
  134. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-frown.gif
  135. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-innocent.gif
  136. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-kiss.gif
  137. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-laughing.gif
  138. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-money-mouth.gif
  139. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-sealed.gif
  140. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-smile.gif
  141. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-surprised.gif
  142. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-tongue-out.gif
  143. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-undecided.gif
  144. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-wink.gif
  145. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/img/smiley-yell.gif
  146. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/js/emotions.js
  147. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/emotions/langs/en_dlg.js
  148. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/example/dialog.htm
  149. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/example/editor_plugin.js
  150. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/example/editor_plugin_src.js
  151. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/example/img/example.gif
  152. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/example/js/dialog.js
  153. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/example/langs/en.js
  154. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/example/langs/en_dlg.js
  155. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/example_dependency/editor_plugin.js
  156. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/example_dependency/editor_plugin_src.js
  157. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/fullpage/css/fullpage.css
  158. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/fullpage/editor_plugin.js
  159. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/fullpage/editor_plugin_src.js
  160. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/fullpage/fullpage.htm
  161. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/fullpage/js/fullpage.js
  162. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/fullpage/langs/en_dlg.js
  163. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/fullscreen/editor_plugin.js
  164. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/fullscreen/editor_plugin_src.js
  165. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/fullscreen/fullscreen.htm
  166. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/iespell/editor_plugin.js
  167. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/iespell/editor_plugin_src.js
  168. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/inlinepopups/editor_plugin.js
  169. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/inlinepopups/editor_plugin_src.js
  170. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/inlinepopups/skins/clearlooks2/img/alert.gif
  171. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/inlinepopups/skins/clearlooks2/img/button.gif
  172. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif
  173. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif
  174. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/inlinepopups/skins/clearlooks2/img/corners.gif
  175. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif
  176. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif
  177. +0 1  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/inlinepopups/skins/clearlooks2/window.css
  178. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/inlinepopups/template.htm
  179. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/insertdatetime/editor_plugin.js
  180. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/insertdatetime/editor_plugin_src.js
  181. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/layer/editor_plugin.js
  182. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/layer/editor_plugin_src.js
  183. +1 1  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/legacyoutput/editor_plugin.js
  184. +1 1  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/legacyoutput/editor_plugin_src.js
  185. +1 1  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/lists/editor_plugin.js
  186. +3 2 lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/lists/editor_plugin_src.js
  187. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/media/css/media.css
  188. +1 0  lib/editor/tinymce/tiny_mce/3.5.4.1/plugins/media/editor_plugin.js
  189. +22 14 lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/media/editor_plugin_src.js
  190. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/media/js/embed.js
  191. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/media/js/media.js
  192. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/media/langs/en_dlg.js
  193. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/media/media.htm
  194. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/media/moxieplayer.swf
  195. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodleemoticon/dialog.php
  196. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodleemoticon/editor_plugin.js
  197. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodleemoticon/editor_plugin_src.js
  198. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodleemoticon/img/moodleemoticon.gif
  199. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodleemoticon/js/dialog.js
  200. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodlemedia/css/media.css
  201. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodlemedia/editor_plugin.js
  202. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodlemedia/editor_plugin_src.js
  203. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodlemedia/img/icon.gif
  204. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodlemedia/js/media.js
  205. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodlemedia/moodlemedia.htm
  206. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodlemedia/preview.php
  207. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodlenolink/editor_plugin.js
  208. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodlenolink/editor_plugin_src.js
  209. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodlenolink/img/ed_nolink.gif
  210. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/moodlenolink/langs/en.js
  211. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/nonbreaking/editor_plugin.js
  212. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/nonbreaking/editor_plugin_src.js
  213. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/noneditable/editor_plugin.js
  214. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/noneditable/editor_plugin_src.js
  215. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/pagebreak/editor_plugin.js
  216. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/pagebreak/editor_plugin_src.js
  217. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/paste/editor_plugin.js
  218. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/paste/editor_plugin_src.js
  219. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/paste/js/pastetext.js
  220. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/paste/js/pasteword.js
  221. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/paste/langs/en_dlg.js
  222. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/paste/pastetext.htm
  223. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/paste/pasteword.htm
  224. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/preview/editor_plugin.js
  225. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/preview/editor_plugin_src.js
  226. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/preview/example.html
  227. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/preview/jscripts/embed.js
  228. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/preview/preview.html
  229. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/print/editor_plugin.js
  230. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/print/editor_plugin_src.js
  231. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/save/editor_plugin.js
  232. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/save/editor_plugin_src.js
  233. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/searchreplace/css/searchreplace.css
  234. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/searchreplace/editor_plugin.js
  235. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/searchreplace/editor_plugin_src.js
  236. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/searchreplace/js/searchreplace.js
  237. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/searchreplace/langs/en_dlg.js
  238. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/searchreplace/searchreplace.htm
  239. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/spellchecker/changelog.txt
  240. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/spellchecker/classes/EnchantSpell.php
  241. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/spellchecker/classes/GoogleSpell.php
  242. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/spellchecker/classes/PSpell.php
  243. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/spellchecker/classes/PSpellShell.php
  244. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/spellchecker/classes/SpellChecker.php
  245. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/spellchecker/classes/utils/JSON.php
  246. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/spellchecker/classes/utils/Logger.php
  247. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/spellchecker/config.php
  248. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/spellchecker/css/content.css
  249. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/spellchecker/editor_plugin.js
  250. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/spellchecker/editor_plugin_src.js
  251. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/spellchecker/img/wline.gif
  252. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/spellchecker/includes/general.php
  253. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/spellchecker/rpc.php
  254. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/style/css/props.css
  255. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/style/editor_plugin.js
  256. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/style/editor_plugin_src.js
  257. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/style/js/props.js
  258. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/style/langs/en_dlg.js
  259. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/style/props.htm
  260. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/style/readme.txt
  261. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/tabfocus/editor_plugin.js
  262. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/tabfocus/editor_plugin_src.js
  263. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/table/cell.htm
  264. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/table/css/cell.css
  265. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/table/css/row.css
  266. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/table/css/table.css
  267. +1 0  lib/editor/tinymce/tiny_mce/3.5.4.1/plugins/table/editor_plugin.js
  268. +75 54 lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/table/editor_plugin_src.js
  269. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/table/js/cell.js
  270. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/table/js/merge_cells.js
  271. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/table/js/row.js
  272. +13 1 lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/table/js/table.js
  273. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/table/langs/en_dlg.js
  274. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/table/merge_cells.htm
  275. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/table/row.htm
  276. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/table/table.htm
  277. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/template/blank.htm
  278. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/template/css/template.css
  279. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/template/editor_plugin.js
  280. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/template/editor_plugin_src.js
  281. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/template/js/template.js
  282. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/template/langs/en_dlg.js
  283. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/template/template.htm
  284. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/css/visualblocks.css
  285. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/editor_plugin.js
  286. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/editor_plugin_src.js
  287. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/address.gif
  288. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/article.gif
  289. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/aside.gif
  290. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/blockquote.gif
  291. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/div.gif
  292. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/figure.gif
  293. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/h1.gif
  294. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/h2.gif
  295. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/h3.gif
  296. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/h4.gif
  297. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/h5.gif
  298. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/h6.gif
  299. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/hgroup.gif
  300. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/p.gif
  301. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/pre.gif
  302. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualblocks/img/section.gif
  303. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualchars/editor_plugin.js
  304. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/visualchars/editor_plugin_src.js
  305. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/wordcount/editor_plugin.js
  306. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/wordcount/editor_plugin_src.js
  307. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/abbr.htm
  308. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/acronym.htm
  309. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/attributes.htm
  310. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/cite.htm
  311. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/css/attributes.css
  312. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/css/popup.css
  313. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/del.htm
  314. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/editor_plugin.js
  315. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/editor_plugin_src.js
  316. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/ins.htm
  317. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/js/abbr.js
  318. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/js/acronym.js
  319. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/js/attributes.js
  320. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/js/cite.js
  321. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/js/del.js
  322. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/js/element_common.js
  323. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/js/ins.js
  324. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/plugins/xhtmlxtras/langs/en_dlg.js
  325. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/about.htm
  326. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/anchor.htm
  327. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/charmap.htm
  328. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/color_picker.htm
  329. +1 0  lib/editor/tinymce/tiny_mce/3.5.4.1/themes/advanced/editor_template.js
  330. +14 6 lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/editor_template_src.js
  331. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/image.htm
  332. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/img/colorpicker.jpg
  333. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/img/flash.gif
  334. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/img/icons.gif
  335. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/img/iframe.gif
  336. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/img/pagebreak.gif
  337. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/img/quicktime.gif
  338. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/img/realmedia.gif
  339. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/img/shockwave.gif
  340. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/img/trans.gif
  341. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/img/video.gif
  342. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/img/windowsmedia.gif
  343. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/js/about.js
  344. +2 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/js/anchor.js
  345. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/js/charmap.js
  346. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/js/color_picker.js
  347. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/js/image.js
  348. +9 3 lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/js/link.js
  349. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/js/source_editor.js
  350. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/langs/en.js
  351. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/langs/en_dlg.js
  352. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/link.htm
  353. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/shortcuts.htm
  354. +0 1  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/default/content.css
  355. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/default/dialog.css
  356. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/default/img/buttons.png
  357. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/default/img/items.gif
  358. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/default/img/menu_arrow.gif
  359. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/default/img/menu_check.gif
  360. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/default/img/progress.gif
  361. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/default/img/tabs.gif
  362. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/default/ui.css
  363. +0 1  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/highcontrast/content.css
  364. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/highcontrast/dialog.css
  365. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/highcontrast/ui.css
  366. +0 1  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/o2k7/content.css
  367. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/o2k7/dialog.css
  368. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/o2k7/img/button_bg.png
  369. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/o2k7/img/button_bg_black.png
  370. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/o2k7/img/button_bg_silver.png
  371. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/o2k7/ui.css
  372. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/o2k7/ui_black.css
  373. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/skins/o2k7/ui_silver.css
  374. +1 1  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/advanced/source_editor.htm
  375. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/simple/editor_template.js
  376. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/simple/editor_template_src.js
  377. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/simple/img/icons.gif
  378. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/simple/langs/en.js
  379. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/simple/skins/default/content.css
  380. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/simple/skins/default/ui.css
  381. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/simple/skins/o2k7/content.css
  382. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/simple/skins/o2k7/img/button_bg.png
  383. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/themes/simple/skins/o2k7/ui.css
  384. +1 0  lib/editor/tinymce/tiny_mce/3.5.4.1/tiny_mce.js
  385. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/tiny_mce_dev.js
  386. +1 0  lib/editor/tinymce/tiny_mce/3.5.4.1/tiny_mce_jquery.js
  387. +583 189 lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/tiny_mce_jquery_src.js
  388. +1 1  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/tiny_mce_popup.js
  389. +3 3 lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/tiny_mce_popup_src.js
  390. +1 0  lib/editor/tinymce/tiny_mce/3.5.4.1/tiny_mce_prototype.js
  391. +583 189 lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/tiny_mce_prototype_src.js
  392. +583 189 lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/tiny_mce_src.js
  393. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/utils/editable_selects.js
  394. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/utils/form_utils.js
  395. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/utils/mctabs.js
  396. 0  lib/editor/tinymce/tiny_mce/{3.5.1.1 → 3.5.4.1}/utils/validate.js
  397. +2 2 lib/editor/tinymce/version.php
  398. +2 0  lib/filelib.php
  399. +1 1  lib/filestorage/file_packer.php
  400. +1 0  lib/filestorage/tests/fixtures/test.txt
  401. BIN  lib/filestorage/tests/fixtures/test_7zip_927.zip
  402. BIN  lib/filestorage/tests/fixtures/test_infozip_3.zip
  403. BIN  lib/filestorage/tests/fixtures/test_moodle.zip
  404. BIN  lib/filestorage/tests/fixtures/test_moodle_22.zip
  405. BIN  lib/filestorage/tests/fixtures/test_osx_1074.zip
  406. BIN  lib/filestorage/tests/fixtures/test_tc_8.zip
  407. BIN  lib/filestorage/tests/fixtures/test_win8_cz.zip
  408. BIN  lib/filestorage/tests/fixtures/test_win8_de.zip
  409. BIN  lib/filestorage/tests/fixtures/test_winrar_421.zip
  410. BIN  lib/filestorage/tests/fixtures/test_winzip_165.zip
  411. +55 0 lib/filestorage/tests/fixtures/zip_create_test_file.php
  412. +255 0 lib/filestorage/tests/fixtures/zip_info.php
  413. +247 0 lib/filestorage/tests/zip_packer_test.php
  414. +396 12 lib/filestorage/zip_archive.php
  415. +1 1  lib/filestorage/zip_packer.php
  416. +6 0 lib/form/filemanager.js
  417. +3 0  lib/form/group.php
  418. +1 1  lib/form/submit.php
  419. +1 1  lib/form/yui/dateselector/dateselector.js
  420. +2 0  lib/formslib.php
  421. +12 0 lib/grade/grade_item.php
  422. +10 0 lib/modinfolib.php
  423. +25 8 lib/moodlelib.php
  424. +28 20 lib/outputlib.php
  425. +1 1  lib/outputrenderers.php
  426. +25 6 lib/outputrequirementslib.php
  427. +16 1 lib/phpunit/bootstraplib.php
  428. +7 1 lib/phpunit/classes/hint_resultprinter.php
  429. +6 5 lib/rsslib.php
  430. +209 125 lib/tests/accesslib_test.php
  431. +184 0 lib/tests/backup_test.php
  432. +4 4 lib/tests/conditionlib_test.php
  433. +49 0 lib/tests/outputrequirementslib_test.php
  434. +1 1  lib/thirdpartylibs.xml
  435. +1 0  lib/xmldb/xmldb.dtd
  436. +1 0  lib/xmldb/xmldb.xsd
  437. +51 6 lib/xmldb/xmldb_index.php
  438. +3 2 lib/xmldb/xmldb_table.php
  439. +8 7 lib/yui/blocks/blocks.js
  440. +1 45 message/send_form.php
  441. +5 2 mod/choice/lang/en/choice.php
  442. +157 82 mod/choice/renderer.php
  443. +2 0  mod/choice/styles.css
  444. +10 5 mod/lesson/renderer.php
  445. +1 1  mod/lti/typessettings.php
  446. +2 5 mod/quiz/comment.php
  447. +10 9 mod/quiz/lib.php
  448. +1 0  mod/resource/lib.php
  449. +21 4 mod/scorm/locallib.php
  450. +5 15 mod/scorm/report/graphs/graph.php
  451. +8 13 mod/scorm/report/interactions/report.php
  452. +28 17 mod/scorm/userreport.php
  453. +3 4 mod/url/locallib.php
  454. +2 2 question/format/gift/format.php
  455. +69 0 question/format/gift/tests/giftformat_test.php
  456. +3 11 report/participation/index.php
  457. +3 3 report/security/locallib.php
  458. +1 5 report/stats/graph.php
  459. +2 5 report/stats/locallib.php
  460. +3 0  repository/filepicker.js
  461. +67 47 repository/filepicker.php
  462. +2 0  repository/flickr/lib.php
  463. +61 48 repository/lib.php
  464. +0 3  repository/picasa/lib.php
  465. +12 81 repository/recent/lib.php
  466. +15 26 repository/repository_ajax.php
  467. +14 9 repository/upload/lib.php
  468. +3 3 theme/base/style/filemanager.css
  469. +3 12 user/index.php
  470. +7 0 user/profile/definelib.php
  471. +1 1  user/selector/lib.php
  472. +2 2 version.php
2  admin/mnet/peers.php
@@ -30,7 +30,7 @@
30 30 require_once(dirname(dirname(dirname(__FILE__))) . '/config.php');
31 31 require_once($CFG->libdir.'/adminlib.php');
32 32 require_once($CFG->dirroot.'/mnet/lib.php');
33   -require_once($CFG->dirroot.'/admin/mnet/peer_forms.php');
  33 +require_once($CFG->dirroot.'/'.$CFG->admin.'/mnet/peer_forms.php');
34 34
35 35 require_login();
36 36
2  admin/renderer.php
@@ -68,7 +68,7 @@ public function upgrade_stale_php_files_page() {
68 68 $output .= $this->header();
69 69 $output .= $this->heading(get_string('upgradestalefiles', 'admin'));
70 70 $output .= $this->box_start('generalbox', 'notice');
71   - $output .= get_string('upgradestalefilesinfo', 'admin', get_docs_url('Upgrading'));
  71 + $output .= format_text(get_string('upgradestalefilesinfo', 'admin', get_docs_url('Upgrading')), FORMAT_MARKDOWN);
72 72 $output .= html_writer::empty_tag('br');
73 73 $output .= html_writer::tag('div', $this->single_button($this->page->url, get_string('reload'), 'get'), array('class' => 'buttons'));
74 74 $output .= $this->box_end();
48 admin/roles/lib.php
@@ -256,19 +256,14 @@ class permissions_table extends capability_table_base {
256 256 * @param string $contextname print_context_name($context) - to save recomputing.
257 257 */
258 258 public function __construct($context, $contextname, $allowoverrides, $allowsafeoverrides, $overridableroles) {
259   - global $DB;
260   -
261 259 parent::__construct($context, 'permissions');
262 260 $this->contextname = $contextname;
263 261 $this->allowoverrides = $allowoverrides;
264 262 $this->allowsafeoverrides = $allowsafeoverrides;
265 263 $this->overridableroles = $overridableroles;
266 264
267   - $roles = $DB->get_records('role', null, 'sortorder DESC');
268   - foreach ($roles as $roleid=>$role) {
269   - $roles[$roleid] = $role->name;
270   - }
271   - $this->roles = role_fix_names($roles, $context);
  265 + $roles = get_all_roles($context);
  266 + $this->roles = role_fix_names(array_reverse($roles, true), $context, ROLENAME_ALIAS, true);
272 267
273 268 }
274 269
@@ -593,18 +588,6 @@ public function read_submitted_permissions() {
593 588 global $DB;
594 589 $this->errors = array();
595 590
596   - // Role name.
597   - $name = optional_param('name', null, PARAM_MULTILANG);
598   - if (!is_null($name)) {
599   - $this->role->name = $name;
600   - if (html_is_blank($this->role->name)) {
601   - $this->errors['name'] = get_string('errorbadrolename', 'role');
602   - }
603   - }
604   - if ($DB->record_exists_select('role', 'name = ? and id <> ?', array($this->role->name, $this->roleid))) {
605   - $this->errors['name'] = get_string('errorexistsrolename', 'role');
606   - }
607   -
608 591 // Role short name. We clean this in a special way. We want to end up
609 592 // with only lowercase safe ASCII characters.
610 593 $shortname = optional_param('shortname', null, PARAM_RAW);
@@ -620,6 +603,20 @@ public function read_submitted_permissions() {
620 603 $this->errors['shortname'] = get_string('errorexistsroleshortname', 'role');
621 604 }
622 605
  606 + // Role name.
  607 + $name = optional_param('name', null, PARAM_MULTILANG);
  608 + if (!is_null($name)) {
  609 + $this->role->name = $name;
  610 + // Hack: short names of standard roles are equal to archetypes, empty name means localised via lang packs.
  611 + $archetypes = get_role_archetypes();
  612 + if (!isset($archetypes[$shortname]) and html_is_blank($this->role->name)) {
  613 + $this->errors['name'] = get_string('errorbadrolename', 'role');
  614 + }
  615 + }
  616 + if ($this->role->name !== '' and $DB->record_exists_select('role', 'name = ? and id <> ?', array($this->role->name, $this->roleid))) {
  617 + $this->errors['name'] = get_string('errorexistsrolename', 'role');
  618 + }
  619 +
623 620 // Description.
624 621 $description = optional_param('description', null, PARAM_RAW);
625 622 if (!is_null($description)) {
@@ -779,9 +776,9 @@ public function display() {
779 776 global $OUTPUT;
780 777 // Extra fields at the top of the page.
781 778 echo '<div class="topfields clearfix">';
782   - $this->print_field('name', get_string('rolefullname', 'role'), $this->get_name_field('name'));
783   - $this->print_field('shortname', get_string('roleshortname', 'role'), $this->get_shortname_field('shortname'));
784   - $this->print_field('edit-description', get_string('description'), $this->get_description_field('description'));
  779 + $this->print_field('shortname', get_string('roleshortname', 'role').'&nbsp;'.$OUTPUT->help_icon('roleshortname', 'role'), $this->get_shortname_field('shortname'));
  780 + $this->print_field('name', get_string('customrolename', 'role').'&nbsp;'.$OUTPUT->help_icon('customrolename', 'role'), $this->get_name_field('name'));
  781 + $this->print_field('edit-description', get_string('customroledescription', 'role').'&nbsp;'.$OUTPUT->help_icon('customroledescription', 'role'), $this->get_description_field('description'));
785 782 $this->print_field('menuarchetype', get_string('archetype', 'role').'&nbsp;'.$OUTPUT->help_icon('archetype', 'role'), $this->get_archetype_field('archetype'));
786 783 $this->print_field('', get_string('maybeassignedin', 'role'), $this->get_assignable_levels_control());
787 784 echo "</div>";
@@ -862,7 +859,7 @@ public function save_changes() {
862 859 }
863 860
864 861 protected function get_name_field($id) {
865   - return strip_tags(format_string($this->role->name));
  862 + return role_get_name($this->role);
866 863 }
867 864
868 865 protected function get_shortname_field($id) {
@@ -870,7 +867,7 @@ protected function get_shortname_field($id) {
870 867 }
871 868
872 869 protected function get_description_field($id) {
873   - return format_text($this->role->description, FORMAT_HTML);
  870 + return role_get_description($this->role);
874 871 }
875 872
876 873 protected function get_archetype_field($id) {
@@ -1273,8 +1270,7 @@ public function __construct($tablename, $targetcolname) {
1273 1270 */
1274 1271 protected function load_required_roles() {
1275 1272 /// Get all roles
1276   - $this->roles = get_all_roles();
1277   - role_fix_names($this->roles, get_context_instance(CONTEXT_SYSTEM), ROLENAME_ORIGINAL);
  1273 + $this->roles = role_fix_names(get_all_roles(), get_context_instance(CONTEXT_SYSTEM), ROLENAME_ORIGINAL);
1278 1274 }
1279 1275
1280 1276 /**
5 admin/roles/manage.php
@@ -53,8 +53,7 @@
53 53 admin_externalpage_setup('defineroles');
54 54
55 55 /// Get some basic data we are going to need.
56   - $roles = get_all_roles();
57   - role_fix_names($roles, $systemcontext, ROLENAME_ORIGINAL);
  56 + $roles = role_fix_names(get_all_roles(), $systemcontext, ROLENAME_ORIGINAL);
58 57
59 58 $undeletableroles = array();
60 59 $undeletableroles[$CFG->notloggedinroleid] = 1;
@@ -214,7 +213,7 @@
214 213 /// Basic data.
215 214 $row = array(
216 215 '<a href="' . $defineurl . '?action=view&amp;roleid=' . $role->id . '">' . $role->localname . '</a>',
217   - format_text($role->description, FORMAT_HTML),
  216 + role_get_description($role),
218 217 s($role->shortname),
219 218 '',
220 219 );
21 admin/roles/usersroles.php
@@ -68,14 +68,11 @@
68 68 /// Now get the role assignments for this user.
69 69 $sql = "SELECT
70 70 ra.id, ra.userid, ra.contextid, ra.roleid, ra.component, ra.itemid,
71   - c.path,
72   - r.name AS rolename,
73   - COALESCE(rn.name, r.name) AS localname
  71 + c.path
74 72 FROM
75 73 {role_assignments} ra
76 74 JOIN {context} c ON ra.contextid = c.id
77 75 JOIN {role} r ON ra.roleid = r.id
78   - LEFT JOIN {role_names} rn ON rn.roleid = ra.roleid AND rn.contextid = ra.contextid
79 76 WHERE
80 77 ra.userid = ?
81 78 "./*AND ra.active = 1*/"
@@ -83,6 +80,8 @@
83 80 contextlevel DESC, contextid ASC, r.sortorder ASC";
84 81 $roleassignments = $DB->get_records_sql($sql, array($user->id));
85 82
  83 +$allroles = role_fix_names(get_all_roles());
  84 +
86 85 /// In order to display a nice tree of contexts, we need to get all the
87 86 /// ancestors of all the contexts in the query we just did.
88 87 $requiredcontexts = array();
@@ -142,14 +141,14 @@
142 141 if (!$roleassignments) {
143 142 echo '<p>', get_string('noroleassignments', 'role'), '</p>';
144 143 } else {
145   - print_report_tree($systemcontext->id, $contexts, $systemcontext, $fullname);
  144 + print_report_tree($systemcontext->id, $contexts, $systemcontext, $fullname, $allroles);
146 145 }
147 146
148 147 /// End of page.
149 148 echo $OUTPUT->box_end();
150 149 echo $OUTPUT->footer();
151 150
152   -function print_report_tree($contextid, $contexts, $systemcontext, $fullname) {
  151 +function print_report_tree($contextid, $contexts, $systemcontext, $fullname, $allroles) {
153 152 global $CFG, $OUTPUT;
154 153
155 154 // Only compute lang strings, etc once.
@@ -170,15 +169,13 @@ function print_report_tree($contextid, $contexts, $systemcontext, $fullname) {
170 169
171 170 // If there are any role assignments here, print them.
172 171 foreach ($contexts[$contextid]->roleassignments as $ra) {
  172 + $role = $allroles[$ra->roleid];
  173 +
173 174 $value = $ra->contextid . ',' . $ra->roleid;
174 175 $inputid = 'unassign' . $value;
175 176
176 177 echo '<p>';
177   - if ($ra->rolename == $ra->localname) {
178   - echo strip_tags(format_string($ra->localname));
179   - } else {
180   - echo strip_tags(format_string($ra->localname . ' (' . $ra->rolename . ')'));
181   - }
  178 + echo $role->localname;
182 179 if (has_capability('moodle/role:assign', $context)) {
183 180 $raurl = $assignurl . '?contextid=' . $ra->contextid . '&amp;roleid=' .
184 181 $ra->roleid . '&amp;removeselect[]=' . $ra->userid;
@@ -210,7 +207,7 @@ function print_report_tree($contextid, $contexts, $systemcontext, $fullname) {
210 207 echo '<ul>';
211 208 foreach ($contexts[$contextid]->children as $childcontextid) {
212 209 echo '<li>';
213   - print_report_tree($childcontextid, $contexts, $systemcontext, $fullname);
  210 + print_report_tree($childcontextid, $contexts, $systemcontext, $fullname, $allroles);
214 211 echo '</li>';
215 212 }
216 213 echo '</ul>';
7 admin/settings/frontpage.php
@@ -54,9 +54,10 @@
54 54 // front page default role
55 55 $options = array(0=>new lang_string('none')); // roles to choose from
56 56 $defaultfrontpageroleid = 0;
57   - foreach (get_all_roles() as $role) {
  57 + $roles = role_fix_names(get_all_roles(), null, ROLENAME_ORIGINALANDSHORT);
  58 + foreach ($roles as $role) {
58 59 if (empty($role->archetype) or $role->archetype === 'guest' or $role->archetype === 'frontpage' or $role->archetype === 'student') {
59   - $options[$role->id] = strip_tags(format_string($role->name)) . ' ('. $role->shortname . ')';
  60 + $options[$role->id] = $role->localname;
60 61 if ($role->archetype === 'frontpage') {
61 62 $defaultfrontpageroleid = $role->id;
62 63 }
@@ -77,7 +78,7 @@
77 78
78 79 $ADMIN->add('frontpage', new admin_externalpage('frontpagebackup', new lang_string('frontpagebackup', 'admin'), $CFG->wwwroot.'/backup/backup.php?id='.SITEID, 'moodle/backup:backupcourse', false, $frontpagecontext));
79 80
80   - $ADMIN->add('frontpage', new admin_externalpage('frontpagerestore', new lang_string('frontpagerestore', 'admin'), $CFG->wwwroot.'/files/index.php?id='.SITEID.'&amp;wdir=/backupdata', 'moodle/restore:restorecourse', false, $frontpagecontext));
  81 + $ADMIN->add('frontpage', new admin_externalpage('frontpagerestore', new lang_string('frontpagerestore', 'admin'), $CFG->wwwroot.'/backup/restorefile.php?contextid='.$frontpagecontext->id, 'moodle/restore:restorecourse', false, $frontpagecontext));
81 82
82 83 $questioncapabilities = array(
83 84 'moodle/question:add',
2  admin/settings/mnet.php
@@ -29,7 +29,7 @@
29 29 new admin_externalpage(
30 30 'mnetpeer' . $host->id,
31 31 $host->name,
32   - $CFG->wwwroot . '/admin/mnet/peers.php?step=update&hostid=' . $host->id,
  32 + $CFG->wwwroot . '/'.$CFG->admin.'/mnet/peers.php?step=update&hostid=' . $host->id,
33 33 'moodle/site:config'
34 34 )
35 35 );
5 admin/settings/users.php
@@ -45,8 +45,9 @@
45 45 $defaultuserid = null;
46 46 $defaultguestid = null;
47 47
48   - foreach (get_all_roles() as $role) {
49   - $rolename = strip_tags(format_string($role->name)) . ' ('. $role->shortname . ')';
  48 + $roles = role_fix_names(get_all_roles(), null, ROLENAME_ORIGINALANDSHORT);
  49 + foreach ($roles as $role) {
  50 + $rolename = $role->localname;
50 51 switch ($role->archetype) {
51 52 case 'manager':
52 53 $creatornewroles[$role->id] = $rolename;
6 admin/tool/assignmentupgrade/batchupgrade.php
@@ -26,9 +26,9 @@
26 26
27 27 require_once(dirname(__FILE__) . '/../../../config.php');
28 28 require_once($CFG->libdir . '/adminlib.php');
29   -require_once($CFG->dirroot . '/admin/tool/assignmentupgrade/locallib.php');
30   -require_once($CFG->dirroot . '/admin/tool/assignmentupgrade/upgradableassignmentstable.php');
31   -require_once($CFG->dirroot . '/admin/tool/assignmentupgrade/upgradableassignmentsbatchform.php');
  29 +require_once($CFG->dirroot . '/'.$CFG->admin.'/tool/assignmentupgrade/locallib.php');
  30 +require_once($CFG->dirroot . '/'.$CFG->admin.'/tool/assignmentupgrade/upgradableassignmentstable.php');
  31 +require_once($CFG->dirroot . '/'.$CFG->admin.'/tool/assignmentupgrade/upgradableassignmentsbatchform.php');
32 32
33 33 require_sesskey();
34 34
2  admin/tool/assignmentupgrade/index.php
@@ -35,7 +35,7 @@
35 35
36 36 require_once(dirname(__FILE__) . '/../../../config.php');
37 37 require_once($CFG->libdir . '/adminlib.php');
38   -require_once($CFG->dirroot . '/admin/tool/assignmentupgrade/locallib.php');
  38 +require_once($CFG->dirroot . '/'.$CFG->admin.'/tool/assignmentupgrade/locallib.php');
39 39
40 40 // admin_externalpage_setup calls require_login and checks moodle/site:config
41 41 admin_externalpage_setup('assignmentupgrade');
8 admin/tool/assignmentupgrade/listnotupgraded.php
@@ -24,10 +24,10 @@
24 24
25 25 require_once(dirname(__FILE__) . '/../../../config.php');
26 26 require_once($CFG->libdir . '/adminlib.php');
27   -require_once($CFG->dirroot . '/admin/tool/assignmentupgrade/locallib.php');
28   -require_once($CFG->dirroot . '/admin/tool/assignmentupgrade/upgradableassignmentstable.php');
29   -require_once($CFG->dirroot . '/admin/tool/assignmentupgrade/upgradableassignmentsbatchform.php');
30   -require_once($CFG->dirroot . '/admin/tool/assignmentupgrade/paginationform.php');
  27 +require_once($CFG->dirroot . '/'.$CFG->admin.'/tool/assignmentupgrade/locallib.php');
  28 +require_once($CFG->dirroot . '/'.$CFG->admin.'/tool/assignmentupgrade/upgradableassignmentstable.php');
  29 +require_once($CFG->dirroot . '/'.$CFG->admin.'/tool/assignmentupgrade/upgradableassignmentsbatchform.php');
  30 +require_once($CFG->dirroot . '/'.$CFG->admin.'/tool/assignmentupgrade/paginationform.php');
31 31
32 32 // admin_externalpage_setup calls require_login and checks moodle/site:config
33 33 admin_externalpage_setup('assignmentupgrade', '', array(), tool_assignmentupgrade_url('listnotupgraded'));
2  admin/tool/assignmentupgrade/upgradesingle.php
@@ -24,7 +24,7 @@
24 24
25 25 require_once(dirname(__FILE__) . '/../../../config.php');
26 26 require_once($CFG->libdir . '/adminlib.php');
27   -require_once($CFG->dirroot . '/admin/tool/assignmentupgrade/locallib.php');
  27 +require_once($CFG->dirroot . '/'.$CFG->admin.'/tool/assignmentupgrade/locallib.php');
28 28
29 29 require_sesskey();
30 30
2  admin/tool/assignmentupgrade/upgradesingleconfirm.php
@@ -24,7 +24,7 @@
24 24
25 25 require_once(dirname(__FILE__) . '/../../../config.php');
26 26 require_once($CFG->libdir . '/adminlib.php');
27   -require_once($CFG->dirroot . '/admin/tool/assignmentupgrade/locallib.php');
  27 +require_once($CFG->dirroot . '/'.$CFG->admin.'/tool/assignmentupgrade/locallib.php');
28 28
29 29 require_sesskey();
30 30
8 admin/tool/capability/index.php
@@ -38,7 +38,7 @@
38 38
39 39 // Clean the passed in list of role ids. If 'All' selected as an option, or
40 40 // if none were selected, do all roles.
41   -$allroles = get_all_roles();
  41 +$allroles = role_fix_names(get_all_roles());
42 42 $cleanedroleids = array();
43 43 foreach ($roleids as $roleid) {
44 44 if ($roleid == 0) {
@@ -73,7 +73,7 @@
73 73 // Prepare the list of roles to choose from
74 74 $rolechoices = array('0' => get_string('all'));
75 75 foreach ($allroles as $role) {
76   - $rolechoices[$role->id] = $role->name;
  76 + $rolechoices[$role->id] = $role->localname;
77 77 }
78 78 if (count($cleanedroleids) == count($allroles)) {
79 79 // Select 'All', rather than each role individually.
@@ -162,7 +162,7 @@
162 162 if (count($cleanedroleids) != count($allroles)) {
163 163 $rolenames = array();
164 164 foreach ($cleanedroleids as $roleid) {
165   - $rolenames[] = $allroles[$roleid]->name;
  165 + $rolenames[] = $allroles[$roleid]->localname;
166 166 }
167 167 echo '<p>', get_string('forroles', 'tool_capability', implode(', ', $rolenames)), '</p>';
168 168 }
@@ -207,7 +207,7 @@ function print_report_tree($contextid, $contexts, $allroles) {
207 207 foreach ($allroles as $role) {
208 208 if (isset($contexts[$contextid]->rolecapabilities[$role->id])) {
209 209 $permission = $contexts[$contextid]->rolecapabilities[$role->id];
210   - echo '<tr class="r' . ($rowcounter % 2) . '"><th class="cell">', $role->name,
  210 + echo '<tr class="r' . ($rowcounter % 2) . '"><th class="cell">', $role->localname,
211 211 '</th><td class="cell">' . $strpermissions[$permission] . '</td></tr>';
212 212 $rowcounter++;
213 213 }
2  admin/tool/phpunit/cli/util.php
@@ -123,7 +123,7 @@
123 123 -h, --help Print out this help
124 124
125 125 Example:
126   -\$/usr/bin/php lib/phpunit/tool.php --install
  126 +\$ php ".phpunit_bootstrap_cli_argument_path('/admin/tool/phpunit/cli/util.php')." --install
127 127 ";
128 128 echo $help;
129 129 exit(0);
2  admin/tool/profiling/index.php
@@ -142,7 +142,7 @@
142 142
143 143 // The flexitable that will root listings
144 144 $table = new xhprof_table_sql('profiling-list-table');
145   - $baseurl = $CFG->wwwroot . '/admin/tool/profiling/index.php';
  145 + $baseurl = $CFG->wwwroot . '/'.$CFG->admin.'/tool/profiling/index.php';
146 146
147 147 // Check if we are listing all or some URL ones
148 148 $sqlconditions = '';
20 admin/tool/replace/index.php
@@ -38,25 +38,29 @@
38 38 ###################################################################
39 39 echo $OUTPUT->header();
40 40
41   -echo $OUTPUT->heading('Search and replace text throughout the whole database');
  41 +echo $OUTPUT->heading(get_string('pageheader', 'tool_replace'));
42 42
43 43 if ($DB->get_dbfamily() !== 'mysql' and $DB->get_dbfamily() !== 'postgres') {
44 44 //TODO: add $DB->text_replace() to DML drivers
45   - echo $OUTPUT->notification('Sorry, this feature is implemented only for MySQL and PostgreSQL databases.');
  45 + echo $OUTPUT->notification(get_string('notimplemented', 'tool_replace'));
46 46 echo $OUTPUT->footer();
47 47 die;
48 48 }
49 49
50 50 if (!data_submitted() or !$search or !$replace or !confirm_sesskey() or !$sure) { /// Print a form
51   - echo $OUTPUT->notification('This script is not supported, always make complete backup before proceeding!<br />This operation can not be reverted!');
  51 + echo $OUTPUT->notification(get_string('notsupported', 'tool_replace'));
52 52
53 53 echo $OUTPUT->box_start();
54 54 echo '<div class="mdl-align">';
55 55 echo '<form action="index.php" method="post"><div>';
56 56 echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
57   - echo '<div><label for="search">Search whole database for: </label><input id="search" type="text" name="search" size="40" /> (usually previous server URL)</div>';
58   - echo '<div><label for="replace">Replace with this string: </label><input type="text" id="replace" name="replace" size="40" /> (usually new server URL)</div>';
59   - echo '<div><label for="sure">I understand the risks of this operation: </label><input type="checkbox" id="sure" name="sure" value="1" /></div>';
  57 + echo '<div><label for="search">'.get_string('searchwholedb', 'tool_replace').
  58 + ' </label><input id="search" type="text" name="search" size="40" /> ('.
  59 + get_string('searchwholedbhelp', 'tool_replace').')</div>';
  60 + echo '<div><label for="replace">'.get_string('replacewith', 'tool_replace').
  61 + ' </label><input type="text" id="replace" name="replace" size="40" /> ('.
  62 + get_string('replacewithhelp', 'tool_replace').')</div>';
  63 + echo '<div><label for="sure">'.get_string('disclaimer', 'tool_replace').' </label><input type="checkbox" id="sure" name="sure" value="1" /></div>';
60 64 echo '<div class="buttons"><input type="submit" class="singlebutton" value="Yes, do it now" /></div>';
61 65 echo '</div></form>';
62 66 echo '</div>';
@@ -70,9 +74,9 @@
70 74 echo $OUTPUT->box_end();
71 75
72 76 /// Rebuild course cache which might be incorrect now
73   -echo $OUTPUT->notification('Rebuilding course cache...', 'notifysuccess');
  77 +echo $OUTPUT->notification(get_string('notifyrebuilding', 'tool_replace'), 'notifysuccess');
74 78 rebuild_course_cache();
75   -echo $OUTPUT->notification('...finished', 'notifysuccess');
  79 +echo $OUTPUT->notification(get_string('notifyfinished', 'tool_replace'), 'notifysuccess');
76 80
77 81 echo $OUTPUT->continue_button(new moodle_url('/admin/index.php'));
78 82
10 admin/tool/replace/lang/en/tool_replace.php
@@ -23,4 +23,14 @@
23 23 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 24 */
25 25
  26 +$string['disclaimer'] = 'I understand the risks of this operation:';
  27 +$string['pageheader'] = 'Search and replace text throughout the whole database';
  28 +$string['notifyfinished'] = '...finished';
  29 +$string['notifyrebuilding'] = 'Rebuilding course cache...';
  30 +$string['notimplemented'] = 'Sorry, this feature is implemented only for MySQL and PostgreSQL databases.';
  31 +$string['notsupported'] ='This script is not supported, always make complete backup before proceeding!<br />This operation can not be reverted!';
26 32 $string['pluginname'] = 'DB search and replace';
  33 +$string['replacewith'] = 'Replace with this string:';
  34 +$string['replacewithhelp'] = 'usually new server URL';
  35 +$string['searchwholedb'] = 'Search whole database for:';
  36 +$string['searchwholedbhelp'] = 'usually previous server URL';
2  admin/tool/unsuproles/index.php
@@ -97,7 +97,7 @@
97 97 $data = array();
98 98 foreach ($problems as $problem) {
99 99 $levelname = get_contextlevel_name($problem->contextlevel);
100   - $rolename = format_string($roles[$problem->roleid]->name);
  100 + $rolename = role_get_name($roles[$problem->roleid]);
101 101 //TODO: show list of users if count low
102 102 $count = $problem->racount;
103 103 $edit = array();
3  admin/tool/xmldb/actions/edit_index/edit_index.class.php
@@ -125,6 +125,9 @@ function invoke() {
125 125 // xmldb_index Fields
126 126 $o.= ' <tr valign="top"><td><label for="fields" accesskey="f">Fields:</label></td>';
127 127 $o.= ' <td colspan="2"><input name="fields" type="text" size="40" maxlength="80" id="fields" value="' . s(implode(', ', $index->getFields())) . '" /></td></tr>';
  128 + // xmldb_index hints
  129 + $o.= ' <tr valign="top"><td><label for="hints" accesskey="h">Hints:</label></td>';
  130 + $o.= ' <td colspan="2"><input name="hints" type="text" size="40" maxlength="80" id="hints" value="' . s(implode(', ', $index->getHints())) . '" /></td></tr>';
128 131 // Change button
129 132 $o.= ' <tr valign="top"><td>&nbsp;</td><td colspan="2"><input type="submit" value="' .$this->str['change'] . '" /></td></tr>';
130 133 $o.= ' </table>';
12 admin/tool/xmldb/actions/edit_index_save/edit_index_save.class.php
@@ -90,6 +90,8 @@ function invoke() {
90 90 $unique = required_param('unique', PARAM_INT);
91 91 $fields = required_param('fields', PARAM_CLEAN);
92 92 $fields = str_replace(' ', '', trim(strtolower($fields)));
  93 + $hints = required_param('hints', PARAM_CLEAN);
  94 + $hints = str_replace(' ', '', trim(strtolower($hints)));
93 95
94 96 $editeddir = $XMLDB->editeddirs[$dirpath];
95 97 $structure = $editeddir->xml_file->getStructure();
@@ -160,11 +162,20 @@ function invoke() {
160 162 }
161 163 }
162 164 }
  165 + $hintsarr = array();
  166 + foreach (explode(',', $hints) as $hint) {
  167 + $hint = preg_replace('/[^a-z]/', '', $hint);
  168 + if ($hint === '') {
  169 + continue;
  170 + }
  171 + $hintsarr[] = $hint;
  172 + }
163 173
164 174 if (!empty($errors)) {
165 175 $tempindex = new xmldb_index($name);
166 176 $tempindex->setUnique($unique);
167 177 $tempindex->setFields($fieldsarr);
  178 + $tempindex->setHints($hintsarr);
168 179 // Prepare the output
169 180 $o = '<p>' .implode(', ', $errors) . '</p>
170 181 <p>' . $tempindex->readableInfo() . '</p>';
@@ -197,6 +208,7 @@ function invoke() {
197 208 // Set the rest of fields
198 209 $index->setUnique($unique);
199 210 $index->setFields($fieldsarr);
  211 + $index->setHints($hintsarr);
200 212
201 213 // If the hash has changed from the old one, change the version
202 214 // and mark the structure as changed
2  auth/email/lang/en/auth_email.php
@@ -23,7 +23,7 @@
23 23 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 24 */
25 25
26   -$string['auth_emaildescription'] = 'Email confirmation is the default authentication method. When the user signs up, choosing their own new username and password, a confirmation email is sent to the user\'s email address. This email contains a secure link to a page where the user can confirm their account. Future logins just check the username and password against the stored values in the Moodle database.';
  26 +$string['auth_emaildescription'] = '<p>Email-based self-registration enables a user to create their own account via a \'Create new account\' button on the login page. The user then receives an email containing a secure link to a page where they can confirm their account. Future logins just check the username and password against the stored values in the Moodle database.</p><p>Note: In addition to enabling the plugin, email-based self-registration must also be selected from the self registration drop-down menu on the \'Manage authentication\' page.</p>';
27 27 $string['auth_emailnoemail'] = 'Tried to send you an email but failed!';
28 28 $string['auth_emailrecaptcha'] = 'Adds a visual/audio confirmation form element to the signup page for email self-registering users. This protects your site against spammers and contributes to a worthwhile cause. See http://www.google.com/recaptcha/learnmore for more details. <br /><em>PHP cURL extension is required.</em>';
29 29 $string['auth_emailrecaptcha_key'] = 'Enable reCAPTCHA element';
7 auth/upgrade.txt
@@ -2,6 +2,13 @@ This files describes API changes in /auth/* - plugins,
2 2 information provided here is intended especially for developers.
3 3
4 4
  5 +=== 2.4 ===
  6 +
  7 +required changes in code:
  8 +* use role_get_name() or role_fix_names() if you need any role names, using role.name
  9 + directly from database is not correct any more
  10 +
  11 +
5 12 === 2.2 ===
6 13
7 14 required changes in code:
20 backup/moodle2/backup_stepslib.php
@@ -322,6 +322,8 @@ protected function define_structure() {
322 322 $availinfo = new backup_nested_element('availability_info');
323 323 $availability = new backup_nested_element('availability', array('id'), array(
324 324 'sourcecmid', 'requiredcompletion', 'gradeitemid', 'grademin', 'grademax'));
  325 + $availabilityfield = new backup_nested_element('availability_field', array('id'), array(
  326 + 'userfield', 'customfieldid', 'operator', 'value'));
325 327
326 328 // attach format plugin structure to $module element, only one allowed
327 329 $this->add_plugin_structure('format', $module, false);
@@ -333,9 +335,9 @@ protected function define_structure() {
333 335 // Define the tree
334 336 $module->add_child($availinfo);
335 337 $availinfo->add_child($availability);
  338 + $availinfo->add_child($availabilityfield);
336 339
337 340 // Set the sources
338   -
339 341 $module->set_source_sql('
340 342 SELECT cm.*, m.version, m.name AS modulename, s.id AS sectionid, s.section AS sectionnumber
341 343 FROM {course_modules} cm
@@ -344,6 +346,7 @@ protected function define_structure() {
344 346 WHERE cm.id = ?', array(backup::VAR_MODID));
345 347
346 348 $availability->set_source_table('course_modules_availability', array('coursemoduleid' => backup::VAR_MODID));
  349 + $availabilityfield->set_source_table('course_modules_avail_fields', array('coursemoduleid' => backup::VAR_MODID));
347 350
348 351 // Define annotations
349 352 $module->annotate_ids('grouping', 'groupingid');
@@ -373,11 +376,15 @@ protected function define_structure() {
373 376 // Add nested elements for _availability table
374 377 $avail = new backup_nested_element('availability', array('id'), array(
375 378 'sourcecmid', 'requiredcompletion', 'gradeitemid', 'grademin', 'grademax'));
  379 + $availfield = new backup_nested_element('availability_field', array('id'), array(
  380 + 'userfield', 'customfieldid', 'operator', 'value'));
376 381 $section->add_child($avail);
  382 + $section->add_child($availfield);
377 383
378 384 // Define sources
379 385 $section->set_source_table('course_sections', array('id' => backup::VAR_SECTIONID));
380 386 $avail->set_source_table('course_sections_availability', array('coursesectionid' => backup::VAR_SECTIONID));
  387 + $availfield->set_source_table('course_sections_avail_fields', array('coursesectionid' => backup::VAR_SECTIONID));
381 388
382 389 // Aliases
383 390 $section->set_source_alias('section', 'number');
@@ -2018,15 +2025,11 @@ protected function define_structure() {
2018 2025 $criteriacompletions = new backup_nested_element('course_completion_crit_completions');
2019 2026
2020 2027 $criteriacomplete = new backup_nested_element('course_completion_crit_compl', array('id'), array(
2021   - 'criteriaid', 'userid','gradefinal','unenrolled','deleted','timecompleted'
  2028 + 'criteriaid', 'userid', 'gradefinal', 'unenrolled', 'timecompleted'
2022 2029 ));
2023 2030
2024 2031 $coursecompletions = new backup_nested_element('course_completions', array('id'), array(
2025   - 'userid', 'course', 'deleted', 'timenotified', 'timeenrolled','timestarted','timecompleted','reaggregate'
2026   - ));
2027   -
2028   - $notify = new backup_nested_element('course_completion_notify', array('id'), array(
2029   - 'course','role','message','timesent'
  2032 + 'userid', 'course', 'timeenrolled', 'timestarted', 'timecompleted', 'reaggregate'
2030 2033 ));
2031 2034
2032 2035 $aggregatemethod = new backup_nested_element('course_completion_aggr_methd', array('id'), array(
@@ -2037,7 +2040,6 @@ protected function define_structure() {
2037 2040 $criteria->add_child($criteriacompletions);
2038 2041 $criteriacompletions->add_child($criteriacomplete);
2039 2042 $cc->add_child($coursecompletions);
2040   - $cc->add_child($notify);
2041 2043 $cc->add_child($aggregatemethod);
2042 2044
2043 2045 // We need to get the courseinstances shortname rather than an ID for restore
@@ -2047,7 +2049,6 @@ protected function define_structure() {
2047 2049 WHERE ccc.course = ?", array(backup::VAR_COURSEID));
2048 2050
2049 2051
2050   - $notify->set_source_table('course_completion_notify', array('course' => backup::VAR_COURSEID));
2051 2052 $aggregatemethod->set_source_table('course_completion_aggr_methd', array('course' => backup::VAR_COURSEID));
2052 2053
2053 2054 if ($userinfo) {
@@ -2058,7 +2059,6 @@ protected function define_structure() {
2058 2059 $criteria->annotate_ids('role', 'role');
2059 2060 $criteriacomplete->annotate_ids('user', 'userid');
2060 2061 $coursecompletions->annotate_ids('user', 'userid');
2061   - $notify->annotate_ids('role', 'role');
2062 2062
2063 2063 return $cc;
2064 2064
86 backup/moodle2/restore_stepslib.php
@@ -1030,6 +1030,7 @@ protected function define_structure() {
1030 1030 $paths[] = $section;
1031 1031 if ($CFG->enableavailability) {
1032 1032 $paths[] = new restore_path_element('availability', '/section/availability');
  1033 + $paths[] = new restore_path_element('availability_field', '/section/availability_field');
1033 1034 }
1034 1035
1035 1036 // Apply for 'format' plugins optional paths at section level
@@ -1133,6 +1134,29 @@ public function process_availability($data) {
1133 1134 $this->set_mapping('course_sections_availability', $newid, $newid);
1134 1135 }
1135 1136
  1137 + public function process_availability_field($data) {
  1138 + global $DB;
  1139 + $data = (object)$data;
  1140 + // Mark it is as passed by default
  1141 + $passed = true;
  1142 + // Ok, if it is a profile field we need to check it exists
  1143 + if (!is_null($data->customfieldid)) {
  1144 + if (!$DB->record_exists('user_info_field', array('id' => $data->customfieldid))) {
  1145 + $passed = false;
  1146 + }
  1147 + }
  1148 + if ($passed) {
  1149 + // Create the object to insert into the database
  1150 + $availfield = new stdClass();
  1151 + $availfield->coursesectionid = $this->task->get_sectionid();
  1152 + $availfield->userfield = $data->userfield;
  1153 + $availfield->customfieldid = $data->customfieldid;
  1154 + $availfield->operator = $data->operator;
  1155 + $availfield->value = $data->value;
  1156 + $DB->insert_record('course_sections_avail_fields', $availfield);
  1157 + }
  1158 + }
  1159 +
1136 1160 protected function after_execute() {
1137 1161 // Add section related files, with 'course_section' itemid to match
1138 1162 $this->add_related_files('course', 'section', 'course_section');
@@ -1835,7 +1859,6 @@ protected function define_structure() {
1835 1859
1836 1860 $paths = array();
1837 1861 $paths[] = new restore_path_element('course_completion_criteria', '/course_completion/course_completion_criteria');
1838   - $paths[] = new restore_path_element('course_completion_notify', '/course_completion/course_completion_notify');
1839 1862 $paths[] = new restore_path_element('course_completion_aggr_methd', '/course_completion/course_completion_aggr_methd');
1840 1863
1841 1864 if ($userinfo) {
@@ -1939,9 +1962,6 @@ public function process_course_completion_crit_compl($data) {
1939 1962 if (isset($data->unenroled)) {
1940 1963 $params['unenroled'] = $data->unenroled;
1941 1964 }
1942   - if (isset($data->deleted)) {
1943   - $params['deleted'] = $data->deleted;
1944   - }
1945 1965 $DB->insert_record('course_completion_crit_compl', $params);
1946 1966 }
1947 1967 }
@@ -1964,8 +1984,6 @@ public function process_course_completions($data) {
1964 1984 $params = array(
1965 1985 'userid' => $data->userid,
1966 1986 'course' => $data->course,
1967   - 'deleted' => $data->deleted,
1968   - 'timenotified' => $this->apply_date_offset($data->timenotified),
1969 1987 'timeenrolled' => $this->apply_date_offset($data->timeenrolled),
1970 1988 'timestarted' => $this->apply_date_offset($data->timestarted),
1971 1989 'timecompleted' => $this->apply_date_offset($data->timecompleted),
@@ -1976,34 +1994,6 @@ public function process_course_completions($data) {
1976 1994 }
1977 1995
1978 1996 /**
1979   - * Process course completion notification records.
1980   - *
1981   - * Note: As of Moodle 2.0 this table is not being used however it has been
1982   - * left in in the hopes that one day the functionality there will be completed
1983   - *
1984   - * @global moodle_database $DB
1985   - * @param stdClass $data
1986   - */
1987   - public function process_course_completion_notify($data) {
1988   - global $DB;
1989   -
1990   - $data = (object)$data;
1991   -
1992   - $data->course = $this->get_courseid();
1993   - if (!empty($data->role)) {
1994   - $data->role = $this->get_mappingid('role', $data->role);
1995   - }
1996   -
1997   - $params = array(
1998   - 'course' => $data->course,
1999   - 'role' => $data->role,
2000   - 'message' => $data->message,
2001   - 'timesent' => $this->apply_date_offset($data->timesent),
2002   - );
2003   - $DB->insert_record('course_completion_notify', $params);
2004   - }
2005   -
2006   - /**
2007 1997 * Process course completion aggregate methods
2008 1998 *
2009 1999 * @global moodle_database $DB
@@ -2539,6 +2529,7 @@ protected function define_structure() {
2539 2529 $paths[] = $module;
2540 2530 if ($CFG->enableavailability) {
2541 2531 $paths[] = new restore_path_element('availability', '/module/availability_info/availability');
  2532 + $paths[] = new restore_path_element('availability_field', '/module/availability_info/availability_field');
2542 2533 }
2543 2534
2544 2535 // Apply for 'format' plugins optional paths at module level
@@ -2632,15 +2623,38 @@ protected function process_module($data) {
2632 2623 $DB->set_field('course_sections', 'sequence', $sequence, array('id' => $data->section));
2633 2624 }
2634 2625
2635   -
2636 2626 protected function process_availability($data) {
2637 2627 $data = (object)$data;
2638 2628 // Simply going to store the whole availability record now, we'll process
2639   - // all them later in the final task (once all actvivities have been restored)
  2629 + // all them later in the final task (once all activities have been restored)
2640 2630 // Let's call the low level one to be able to store the whole object
2641 2631 $data->coursemoduleid = $this->task->get_moduleid(); // Let add the availability cmid
2642 2632 restore_dbops::set_backup_ids_record($this->get_restoreid(), 'module_availability', $data->id, 0, null, $data);
2643 2633 }
  2634 +
  2635 + protected function process_availability_field($data) {
  2636 + global $DB;
  2637 + $data = (object)$data;
  2638 + // Mark it is as passed by default
  2639 + $passed = true;
  2640 + // Ok, if it is a profile field we need to check it exists
  2641 + if (!is_null($data->customfieldid)) {
  2642 + if (!$DB->record_exists('user_info_field', array('id' => $data->customfieldid))) {
  2643 + $passed = false;
  2644 + }
  2645 + }
  2646 + if ($passed) {
  2647 + // Create the object to insert into the database
  2648 + $availfield = new stdClass();
  2649 + $availfield->coursemoduleid = $this->task->get_moduleid(); // Lets add the availability cmid
  2650 + $availfield->userfield = $data->userfield;
  2651 + $availfield->customfieldid = $data->customfieldid;
  2652 + $availfield->operator = $data->operator;
  2653 + $availfield->value = $data->value;
  2654 + // Insert into the database
  2655 + $DB->insert_record('course_modules_avail_fields', $availfield);
  2656 + }
  2657 + }
2644 2658 }
2645 2659
2646 2660 /**
1  backup/util/dbops/restore_dbops.class.php
@@ -347,7 +347,6 @@ protected static function get_best_assignable_role($role, $courseid, $userid, $s
347 347
348 348 // Gather various information about roles
349 349 $coursectx = get_context_instance(CONTEXT_COURSE, $courseid);
350   - $allroles = $DB->get_records('role');
351 350 $assignablerolesshortname = get_assignable_roles($coursectx, ROLENAME_SHORT, false, $userid);
352 351
353 352 // Note: under 1.9 we had one function restore_samerole() that performed one complete
20 backup/util/helper/backup_cron_helper.class.php
@@ -281,23 +281,25 @@ public static function calculate_next_automated_backup($timezone, $now) {
281 281 $midnight = usergetmidnight($now, $timezone);
282 282 $date = usergetdate($now, $timezone);
283 283
284   - //Get number of days (from today) to execute backups
285   - $automateddays = substr($config->backup_auto_weekdays,$date['wday']) . $config->backup_auto_weekdays;
286   - $daysfromtoday = strpos($automateddays, "1");
  284 + // Get number of days (from today) to execute backups
  285 + $automateddays = substr($config->backup_auto_weekdays, $date['wday']) . $config->backup_auto_weekdays;
  286 + $daysfromtoday = strpos($automateddays, "1", 1);
  287 +
  288 + // If we can't find the next day, we set it to tomorrow
287 289 if (empty($daysfromtoday)) {
288 290 $daysfromtoday = 1;
289 291 }
290 292
291   - //If some day has been found
  293 + // If some day has been found
292 294 if ($daysfromtoday !== false) {
293   - //Calculate distance
294   - $dist = ($daysfromtoday * 86400) + //Days distance
295   - ($config->backup_auto_hour * 3600) + //Hours distance
296   - ($config->backup_auto_minute * 60); //Minutes distance
  295 + // Calculate distance
  296 + $dist = ($daysfromtoday * 86400) + // Days distance
  297 + ($config->backup_auto_hour * 3600) + // Hours distance
  298 + ($config->backup_auto_minute * 60); // Minutes distance
297 299 $result = $midnight + $dist;
298 300 }
299 301
300   - //If that time is past, call the function recursively to obtain the next valid day
  302 + // If that time is past, call the function recursively to obtain the next valid day
301 303 if ($result > 0 && $result < time()) {
302 304 $result = self::calculate_next_automated_backup($timezone, $result);
303 305 }
3  blog/edit_form.php
@@ -38,11 +38,12 @@ functio