Merge branch 'MDL-40481' of git://github.com/timhunt/moodle
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Mon, 11 Nov 2013 23:38:35 +0000 (00:38 +0100)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Mon, 11 Nov 2013 23:38:35 +0000 (00:38 +0100)
926 files changed:
admin/filters.php
admin/settings/development.php
admin/tests/behat/behat_admin.php
admin/tool/assignmentupgrade/version.php
admin/tool/behat/lang/en/tool_behat.php
admin/tool/behat/version.php
admin/tool/capability/version.php
admin/tool/customlang/version.php
admin/tool/dbtransfer/version.php
admin/tool/generator/classes/course_backend.php
admin/tool/generator/version.php
admin/tool/health/version.php
admin/tool/innodb/version.php
admin/tool/installaddon/classes/installer.php
admin/tool/installaddon/tests/installer_test.php
admin/tool/installaddon/tests/validator_test.php
admin/tool/installaddon/version.php
admin/tool/langimport/lang/en/tool_langimport.php
admin/tool/langimport/version.php
admin/tool/multilangupgrade/version.php
admin/tool/phpunit/version.php
admin/tool/profiling/version.php
admin/tool/qeupgradehelper/version.php
admin/tool/replace/version.php
admin/tool/spamcleaner/version.php
admin/tool/timezoneimport/version.php
admin/tool/unsuproles/version.php
admin/tool/uploadcourse/version.php
admin/tool/uploaduser/version.php
admin/tool/xmldb/version.php
admin/user.php
auth/cas/version.php
auth/db/version.php
auth/email/version.php
auth/fc/version.php
auth/imap/version.php
auth/ldap/tests/plugin_test.php
auth/ldap/version.php
auth/manual/version.php
auth/mnet/version.php
auth/nntp/version.php
auth/nologin/version.php
auth/none/version.php
auth/pam/version.php
auth/pop3/version.php
auth/radius/version.php
auth/shibboleth/version.php
auth/webservice/version.php
backup/backup.class.php
backup/util/helper/backup_cron_helper.class.php
backup/util/ui/tests/behat/backup_courses.feature
backup/util/ui/tests/behat/duplicate_activities.feature
backup/util/ui/tests/behat/restore_moodle2_courses.feature
badges/cron.php
badges/edit_form.php
badges/tests/badgeslib_test.php
badges/tests/behat/award_badge.feature
blocks/activity_modules/version.php
blocks/admin_bookmarks/version.php
blocks/badges/version.php
blocks/blog_menu/version.php
blocks/blog_recent/version.php
blocks/blog_tags/version.php
blocks/calendar_month/version.php
blocks/calendar_upcoming/version.php
blocks/comments/version.php
blocks/community/version.php
blocks/completionstatus/version.php
blocks/course_list/version.php
blocks/course_overview/version.php
blocks/course_summary/version.php
blocks/feedback/version.php
blocks/glossary_random/version.php
blocks/html/lib.php
blocks/html/version.php
blocks/login/version.php
blocks/mentees/version.php
blocks/messages/version.php
blocks/mnet_hosts/version.php
blocks/myprofile/version.php
blocks/navigation/version.php
blocks/news_items/version.php
blocks/online_users/version.php
blocks/participants/version.php
blocks/private_files/version.php
blocks/quiz_results/version.php
blocks/recent_activity/version.php
blocks/rss_client/version.php
blocks/search_forums/version.php
blocks/section_links/version.php
blocks/selfcompletion/version.php
blocks/settings/version.php
blocks/site_main_menu/version.php
blocks/social_activities/version.php
blocks/tag_flickr/version.php
blocks/tag_youtube/version.php
blocks/tags/version.php
blocks/tests/behat/behat_blocks.php
blocks/tests/behat/configure_block_throughout_site.feature
blocks/tests/behat/manage_blocks.feature [new file with mode: 0644]
blocks/tests/behat/return_block_original_state.feature
cache/locks/file/version.php
cache/stores/file/version.php
cache/stores/memcache/version.php
cache/stores/memcached/version.php
cache/stores/mongodb/version.php
cache/stores/session/version.php
cache/stores/static/version.php
calendar/classes/type_base.php
calendar/tests/calendartype_test_example.php
calendar/type/gregorian/classes/structure.php
calendar/type/gregorian/version.php
completion/tests/behat/enable_manual_complete_mark.feature
completion/tests/behat/restrict_section_availability.feature
composer.json
config-dist.php
course/ajax/management.php
course/classes/management/helper.php
course/classes/management_renderer.php
course/editsection_form.php
course/format/lib.php
course/format/singleactivity/version.php
course/format/social/version.php
course/format/topics/version.php
course/format/weeks/version.php
course/lib.php
course/management.php
course/modedit.php
course/modlib.php
course/renderer.php
course/rest.php
course/tests/behat/activities_group_icons.feature
course/tests/behat/activities_visibility_icons.feature
course/tests/behat/add_activities.feature
course/tests/behat/behat_course.php
course/tests/behat/category_management.feature
course/tests/behat/category_resort.feature
course/tests/behat/course_category_management_listing.feature
course/tests/behat/course_change_visibility.feature
course/tests/behat/course_controls.feature
course/tests/behat/course_resort.feature
course/tests/behat/create_delete_course.feature
course/tests/behat/edit_settings.feature
course/tests/behat/force_group_mode.feature
course/tests/behat/frontpage_display_modes.feature [new file with mode: 0644]
course/tests/behat/move_activities.feature
course/tests/behat/move_sections.feature
course/tests/behat/rename_roles.feature
course/tests/management_helper_test.php
course/yui/build/moodle-course-management/moodle-course-management-debug.js
course/yui/build/moodle-course-management/moodle-course-management-min.js
course/yui/build/moodle-course-management/moodle-course-management.js
course/yui/dragdrop/dragdrop.js
course/yui/src/management/js/category.js
course/yui/src/management/js/console.js
course/yui/src/management/js/course.js
course/yui/src/management/js/dd.js
course/yui/src/management/js/item.js
course/yui/toolboxes/toolboxes.js
enrol/category/version.php
enrol/cohort/version.php
enrol/database/version.php
enrol/flatfile/version.php
enrol/guest/tests/behat/guest_access.feature
enrol/guest/version.php
enrol/imsenterprise/version.php
enrol/ldap/version.php
enrol/manual/version.php
enrol/meta/version.php
enrol/mnet/version.php
enrol/paypal/version.php
enrol/self/version.php
file.php
files/renderer.php
filter/activitynames/version.php
filter/algebra/version.php
filter/censor/version.php
filter/data/version.php
filter/emailprotect/version.php
filter/emoticon/version.php
filter/glossary/filter.php
filter/glossary/tests/filter_test.php [new file with mode: 0644]
filter/glossary/version.php
filter/mediaplugin/version.php
filter/multilang/version.php
filter/tex/version.php
filter/tidy/version.php
filter/urltolink/version.php
grade/export/ods/version.php
grade/export/txt/version.php
grade/export/xls/version.php
grade/export/xml/version.php
grade/grading/form/guide/version.php
grade/grading/form/rubric/version.php
grade/import/csv/version.php
grade/import/xml/version.php
grade/report/grader/version.php
grade/report/outcomes/version.php
grade/report/overview/version.php
grade/report/user/version.php
group/members.php
group/overview.php
group/tests/behat/groups_import.feature [new file with mode: 0644]
group/tests/fixtures/groups_import.csv [new file with mode: 0644]
lang/en/admin.php
lang/en/backup.php
lang/en/badges.php
lang/en/cache.php
lang/en/error.php
lang/en/form.php
lang/en/moodle.php
lang/en/question.php
lib/adminlib.php
lib/badgeslib.php
lib/blocklib.php
lib/boxlib.php
lib/classes/collator.php
lib/classes/plugin_manager.php
lib/classes/plugininfo/orphaned.php [new file with mode: 0644]
lib/classes/user.php
lib/conditionlib.php
lib/coursecatlib.php
lib/db/caches.php
lib/db/messages.php
lib/db/upgrade.php
lib/db/upgradelib.php
lib/ddl/sql_generator.php
lib/ddl/tests/ddl_test.php
lib/dml/mssql_native_moodle_database.php
lib/dml/oci_native_moodle_database.php
lib/dml/sqlsrv_native_moodle_database.php
lib/dml/tests/dml_test.php
lib/editor/textarea/version.php
lib/editor/tinymce/db/upgrade.php
lib/editor/tinymce/plugins/ctrlhelp/version.php
lib/editor/tinymce/plugins/dragmath/version.php
lib/editor/tinymce/plugins/managefiles/version.php
lib/editor/tinymce/plugins/moodleemoticon/version.php
lib/editor/tinymce/plugins/moodleimage/version.php
lib/editor/tinymce/plugins/moodlemedia/version.php
lib/editor/tinymce/plugins/moodlenolink/version.php
lib/editor/tinymce/plugins/pdw/readme_moodle.txt
lib/editor/tinymce/plugins/pdw/tinymce/editor_plugin.js
lib/editor/tinymce/plugins/pdw/version.php
lib/editor/tinymce/plugins/spellchecker/version.php
lib/editor/tinymce/plugins/wrap/version.php
lib/editor/tinymce/settings.php
lib/editor/tinymce/styles.css
lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/img/button_bg.png
lib/editor/tinymce/tiny_mce/3.5.8/themes/advanced/skins/moodle/ui.css
lib/editor/tinymce/version.php
lib/editorlib.php
lib/filelib.php
lib/filestorage/mbz_packer.php
lib/filestorage/tests/file_storage_test.php
lib/filestorage/tests/mbz_packer_test.php
lib/filestorage/tests/tgz_packer_test.php
lib/filestorage/tgz_packer.php
lib/filterlib.php
lib/flickrlib.php
lib/form/searchableselector.php
lib/grade/grade_grade.php
lib/moodlelib.php
lib/oauthlib.php
lib/outputcomponents.php
lib/outputrenderers.php
lib/pear/HTML/QuickForm/Rule/Range.php
lib/pear/README_MOODLE.txt
lib/setup.php
lib/testing/generator/module_generator.php
lib/testing/generator/repository_generator.php
lib/testing/tests/generator_test.php
lib/tests/behat/behat_general.php
lib/tests/behat/behat_hooks.php
lib/tests/behat/behat_transformations.php
lib/tests/completionlib_test.php
lib/tests/conditionlib_test.php
lib/tests/filterlib_test.php
lib/tests/formslib_test.php
lib/tests/modinfolib_test.php
lib/tests/moodlelib_test.php
lib/timezone.txt
lib/upgrade.txt
lib/yui/build/moodle-core-actionmenu/moodle-core-actionmenu-debug.js
lib/yui/build/moodle-core-actionmenu/moodle-core-actionmenu-min.js
lib/yui/build/moodle-core-actionmenu/moodle-core-actionmenu.js
lib/yui/build/moodle-core-dock/moodle-core-dock-debug.js
lib/yui/build/moodle-core-dock/moodle-core-dock-min.js
lib/yui/build/moodle-core-dock/moodle-core-dock.js
lib/yui/dragdrop/dragdrop.js
lib/yui/src/actionmenu/js/actionmenu.js
lib/yui/src/dock/js/block.js
message/index.php
message/lib.php
message/output/email/version.php
message/output/jabber/version.php
message/output/popup/version.php
mnet/service/enrol/version.php
mod/assign/feedback/comments/version.php
mod/assign/feedback/editpdf/classes/document_services.php
mod/assign/feedback/editpdf/classes/pdf.php
mod/assign/feedback/editpdf/db/install.php [new file with mode: 0644]
mod/assign/feedback/editpdf/db/upgrade.php [new file with mode: 0644]
mod/assign/feedback/editpdf/lang/en/assignfeedback_editpdf.php
mod/assign/feedback/editpdf/locallib.php
mod/assign/feedback/editpdf/pix/background_colour_blue.png
mod/assign/feedback/editpdf/pix/background_colour_blue.svg
mod/assign/feedback/editpdf/pix/background_colour_green.png
mod/assign/feedback/editpdf/pix/background_colour_green.svg
mod/assign/feedback/editpdf/pix/background_colour_red.png
mod/assign/feedback/editpdf/pix/background_colour_red.svg
mod/assign/feedback/editpdf/pix/background_colour_yellow.png
mod/assign/feedback/editpdf/pix/background_colour_yellow.svg
mod/assign/feedback/editpdf/pix/colour_blue.png
mod/assign/feedback/editpdf/pix/colour_blue.svg
mod/assign/feedback/editpdf/pix/colour_green.png
mod/assign/feedback/editpdf/pix/colour_green.svg
mod/assign/feedback/editpdf/pix/colour_red.png
mod/assign/feedback/editpdf/pix/colour_red.svg
mod/assign/feedback/editpdf/pix/colour_yellow.png
mod/assign/feedback/editpdf/pix/colour_yellow.svg
mod/assign/feedback/editpdf/pix/cross.png [new file with mode: 0644]
mod/assign/feedback/editpdf/pix/sad.png [new file with mode: 0644]
mod/assign/feedback/editpdf/pix/smile.png [new file with mode: 0644]
mod/assign/feedback/editpdf/pix/tick.png [new file with mode: 0644]
mod/assign/feedback/editpdf/settings.php
mod/assign/feedback/editpdf/styles.css
mod/assign/feedback/editpdf/version.php
mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-debug.js
mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor-min.js
mod/assign/feedback/editpdf/yui/build/moodle-assignfeedback_editpdf-editor/moodle-assignfeedback_editpdf-editor.js
mod/assign/feedback/editpdf/yui/src/editor/js/comment.js
mod/assign/feedback/editpdf/yui/src/editor/js/commentsearch.js
mod/assign/feedback/editpdf/yui/src/editor/js/dropdown.js
mod/assign/feedback/editpdf/yui/src/editor/js/editor.js
mod/assign/feedback/editpdf/yui/src/editor/js/globals.js
mod/assign/feedback/editpdf/yui/src/editor/js/stamppicker.js
mod/assign/feedback/file/version.php
mod/assign/feedback/offline/version.php
mod/assign/lang/en/assign.php
mod/assign/locallib.php
mod/assign/submission/comments/version.php
mod/assign/submission/file/version.php
mod/assign/submission/onlinetext/version.php
mod/assign/tests/behat/group_submission.feature
mod/assign/tests/generator/lib.php
mod/assign/tests/locallib_test.php
mod/assign/version.php
mod/assignment/tests/generator/lib.php
mod/assignment/type/offline/version.php
mod/assignment/type/online/assignment.class.php
mod/assignment/type/online/version.php
mod/assignment/type/upload/version.php
mod/assignment/type/uploadsingle/version.php
mod/assignment/version.php
mod/book/lib.php
mod/book/tests/generator/lib.php
mod/book/tests/generator_test.php
mod/book/tool/exportimscp/version.php
mod/book/tool/importhtml/version.php
mod/book/tool/print/version.php
mod/book/version.php
mod/chat/lib.php
mod/chat/report.php
mod/chat/tests/generator/lib.php
mod/chat/version.php
mod/choice/lang/en/choice.php
mod/choice/tests/generator/lib.php
mod/choice/version.php
mod/data/field/checkbox/version.php
mod/data/field/date/version.php
mod/data/field/file/version.php
mod/data/field/latlong/version.php
mod/data/field/menu/version.php
mod/data/field/multimenu/version.php
mod/data/field/number/version.php
mod/data/field/picture/field.class.php
mod/data/field/picture/version.php
mod/data/field/radiobutton/version.php
mod/data/field/text/version.php
mod/data/field/textarea/version.php
mod/data/field/url/version.php
mod/data/preset/imagegallery/version.php
mod/data/tests/generator/lib.php
mod/data/version.php
mod/feedback/item/multichoice/lib.php
mod/feedback/item/multichoicerated/lib.php
mod/feedback/styles.css
mod/feedback/tests/generator/lib.php
mod/feedback/version.php
mod/folder/lib.php
mod/folder/version.php
mod/forum/classes/post_form.php
mod/forum/lib.php
mod/forum/tests/behat/completion_condition_number_discussions.feature
mod/forum/tests/generator/lib.php
mod/forum/tests/generator_test.php
mod/forum/version.php
mod/glossary/tests/generator/lib.php [new file with mode: 0644]
mod/glossary/tests/generator_test.php [new file with mode: 0644]
mod/glossary/version.php
mod/imscp/lib.php
mod/imscp/version.php
mod/label/tests/generator/lib.php
mod/label/version.php
mod/lesson/locallib.php
mod/lesson/mod_form.php
mod/lesson/renderer.php
mod/lesson/report.php
mod/lesson/tests/generator/lib.php [new file with mode: 0644]
mod/lesson/tests/generator_test.php [new file with mode: 0644]
mod/lesson/timer.js
mod/lesson/version.php
mod/lesson/view.php
mod/lti/classes/plugininfo/ltisource.php [new file with mode: 0644]
mod/lti/db/subplugins.php [moved from theme/mymobile/version.php with 64% similarity]
mod/lti/lang/en/lti.php
mod/lti/lib.php
mod/lti/mod_form.php
mod/lti/service.php
mod/lti/servicelib.php
mod/lti/source/readme.txt [new file with mode: 0644]
mod/lti/tests/generator/lib.php
mod/lti/version.php
mod/page/lib.php
mod/page/tests/generator/lib.php
mod/page/version.php
mod/quiz/accessrule/delaybetweenattempts/version.php
mod/quiz/accessrule/ipaddress/version.php
mod/quiz/accessrule/numattempts/version.php
mod/quiz/accessrule/openclosedate/version.php
mod/quiz/accessrule/password/version.php
mod/quiz/accessrule/safebrowser/version.php
mod/quiz/accessrule/securewindow/version.php
mod/quiz/accessrule/timelimit/version.php
mod/quiz/addrandom.php
mod/quiz/backup/moodle2/restore_quiz_stepslib.php
mod/quiz/comment.php
mod/quiz/index.php
mod/quiz/lang/en/quiz.php
mod/quiz/locallib.php
mod/quiz/overridedelete.php
mod/quiz/overrideedit.php
mod/quiz/overrides.php
mod/quiz/renderer.php
mod/quiz/report/attemptsreport_table.php
mod/quiz/report/default.php
mod/quiz/report/grading/report.php
mod/quiz/report/grading/version.php
mod/quiz/report/overview/report.php
mod/quiz/report/overview/version.php
mod/quiz/report/reportlib.php
mod/quiz/report/responses/responses_table.php
mod/quiz/report/responses/version.php
mod/quiz/report/statistics/classes/calculator.php
mod/quiz/report/statistics/report.php
mod/quiz/report/statistics/tests/stats_from_steps_walkthrough_test.php
mod/quiz/report/statistics/version.php
mod/quiz/report/upgrade.txt
mod/quiz/review.php
mod/quiz/reviewquestion.php
mod/quiz/startattempt.php
mod/quiz/styles.css
mod/quiz/tests/generator/lib.php
mod/quiz/upgrade.txt
mod/quiz/version.php
mod/resource/lang/en/resource.php
mod/resource/lib.php
mod/resource/tests/generator/lib.php
mod/resource/version.php
mod/scorm/lib.php
mod/scorm/module.js
mod/scorm/report/basic/report.php
mod/scorm/report/basic/version.php
mod/scorm/report/graphs/graph.php
mod/scorm/report/graphs/version.php
mod/scorm/report/interactions/report.php
mod/scorm/report/interactions/version.php
mod/scorm/report/objectives/report.php
mod/scorm/report/objectives/version.php
mod/scorm/tests/behat/add_scorm.feature [new file with mode: 0644]
mod/scorm/tests/packages/singlescobasic.zip [new file with mode: 0644]
mod/scorm/thirdpartylibs.xml [new file with mode: 0644]
mod/scorm/version.php
mod/scorm/yui/build/moodle-mod_scorm-treeview-sortable/assets/moodle-mod_scorm-treeview-core.css [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview-sortable/assets/skins/sam/folder.png [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview-sortable/assets/skins/sam/folder@2x.png [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview-sortable/assets/skins/sam/item.png [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview-sortable/assets/skins/sam/item@2x.png [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview-sortable/assets/skins/sam/moodle-mod_scorm-treeview-skin.css [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview-sortable/assets/skins/sam/moodle-mod_scorm-treeview.css [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview-sortable/moodle-mod_scorm-treeview-sortable-debug.js [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview-sortable/moodle-mod_scorm-treeview-sortable-min.js [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview-sortable/moodle-mod_scorm-treeview-sortable.js [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview/assets/moodle-mod_scorm-treeview-core.css [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview/assets/skins/sam/folder.png [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview/assets/skins/sam/folder@2x.png [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview/assets/skins/sam/item.png [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview/assets/skins/sam/item@2x.png [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview/assets/skins/sam/moodle-mod_scorm-treeview-skin.css [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview/assets/skins/sam/moodle-mod_scorm-treeview.css [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview/moodle-mod_scorm-treeview-debug.js [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview/moodle-mod_scorm-treeview-min.js [new file with mode: 0644]
mod/scorm/yui/build/moodle-mod_scorm-treeview/moodle-mod_scorm-treeview.js [new file with mode: 0644]
mod/scorm/yui/src/treeview/assets/moodle-mod_scorm-treeview-core.css [new file with mode: 0644]
mod/scorm/yui/src/treeview/assets/skins/sam/folder.png [new file with mode: 0644]
mod/scorm/yui/src/treeview/assets/skins/sam/folder@2x.png [new file with mode: 0644]
mod/scorm/yui/src/treeview/assets/skins/sam/item.png [new file with mode: 0644]
mod/scorm/yui/src/treeview/assets/skins/sam/item@2x.png [new file with mode: 0644]
mod/scorm/yui/src/treeview/assets/skins/sam/moodle-mod_scorm-treeview-skin.css [new file with mode: 0644]
mod/scorm/yui/src/treeview/assets/skins/sam/moodle-mod_scorm-treeview.css [new file with mode: 0644]
mod/scorm/yui/src/treeview/build.json [new file with mode: 0644]
mod/scorm/yui/src/treeview/js/gallery-sm-treeview-debug.js [new file with mode: 0644]
mod/scorm/yui/src/treeview/js/gallery-sm-treeview-sortable-debug.js [new file with mode: 0644]
mod/scorm/yui/src/treeview/js/treeview-sortable.js [new file with mode: 0644]
mod/scorm/yui/src/treeview/js/treeview.js [new file with mode: 0644]
mod/scorm/yui/src/treeview/meta/sm-treeview.json [new file with mode: 0644]
mod/scorm/yui/src/treeview/readme_moodle.txt [new file with mode: 0644]
mod/survey/lang/en/survey.php
mod/survey/tests/generator/lib.php [new file with mode: 0644]
mod/survey/tests/generator_test.php [new file with mode: 0644]
mod/survey/version.php
mod/url/lang/en/url.php
mod/url/tests/generator/lib.php [new file with mode: 0644]
mod/url/tests/generator_test.php [new file with mode: 0644]
mod/url/version.php
mod/url/view.php
mod/wiki/backup/moodle2/restore_wiki_stepslib.php
mod/wiki/create_form.php
mod/wiki/lib.php
mod/wiki/parser/parser.php
mod/wiki/tests/generator/lib.php [new file with mode: 0644]
mod/wiki/tests/generator_test.php [new file with mode: 0644]
mod/wiki/version.php
mod/workshop/allocation/manual/version.php
mod/workshop/allocation/random/lang/en/workshopallocation_random.php
mod/workshop/allocation/random/version.php
mod/workshop/allocation/scheduled/version.php
mod/workshop/eval/best/lib.php
mod/workshop/eval/best/version.php
mod/workshop/form/accumulative/version.php
mod/workshop/form/comments/version.php
mod/workshop/form/numerrors/version.php
mod/workshop/form/rubric/version.php
mod/workshop/lib.php
mod/workshop/tests/generator/lib.php [new file with mode: 0644]
mod/workshop/tests/generator_test.php [new file with mode: 0644]
mod/workshop/version.php
notes/lib.php
notes/tests/events_test.php
pix/i/dropdown.png [new file with mode: 0644]
pix/i/groupn.png [new file with mode: 0644]
pix/i/groupn.svg [new file with mode: 0644]
pix/i/groups.png [new file with mode: 0644]
pix/i/groups.svg [new file with mode: 0644]
pix/i/groupv.png [new file with mode: 0644]
pix/i/groupv.svg [new file with mode: 0644]
pix/t/dropdown.png [new file with mode: 0644]
pix/t/dropdown.svg [new file with mode: 0644]
pix/t/edit_menu.png [new file with mode: 0644]
pix/t/edit_menu.svg [new file with mode: 0644]
portfolio/boxnet/db/upgrade.php [new file with mode: 0644]
portfolio/boxnet/db/upgradelib.php [new file with mode: 0644]
portfolio/boxnet/lang/en/portfolio_boxnet.php
portfolio/boxnet/lib.php
portfolio/boxnet/version.php
portfolio/download/version.php
portfolio/flickr/lib.php
portfolio/flickr/version.php
portfolio/googledocs/version.php
portfolio/mahara/version.php
portfolio/picasa/version.php
question/behaviour/adaptive/version.php
question/behaviour/adaptivenopenalty/version.php
question/behaviour/deferredcbm/behaviourtype.php
question/behaviour/deferredcbm/lang/en/qbehaviour_deferredcbm.php
question/behaviour/deferredcbm/version.php
question/behaviour/deferredfeedback/version.php
question/behaviour/immediatecbm/version.php
question/behaviour/immediatefeedback/version.php
question/behaviour/informationitem/version.php
question/behaviour/interactive/version.php
question/behaviour/interactivecountback/version.php
question/behaviour/manualgraded/version.php
question/behaviour/missing/version.php
question/classes/statistics/responses/analyser.php
question/classes/statistics/responses/analysis_for_actual_response.php
question/classes/statistics/responses/analysis_for_class.php
question/classes/statistics/responses/analysis_for_question.php
question/classes/statistics/responses/analysis_for_subpart.php
question/editlib.php
question/engine/renderer.php
question/engine/upgrade.txt
question/format/aiken/version.php
question/format/blackboard_six/version.php
question/format/examview/version.php
question/format/gift/version.php
question/format/learnwise/version.php
question/format/missingword/version.php
question/format/multianswer/version.php
question/format/webct/version.php
question/format/xhtml/version.php
question/format/xml/version.php
question/tests/behat/question_categories.feature [new file with mode: 0644]
question/type/calculated/version.php
question/type/calculatedmulti/version.php
question/type/calculatedsimple/version.php
question/type/description/tests/walkthrough_test.php
question/type/description/version.php
question/type/essay/version.php
question/type/match/version.php
question/type/missingtype/version.php
question/type/multianswer/version.php
question/type/multichoice/version.php
question/type/numerical/lang/en/qtype_numerical.php
question/type/numerical/version.php
question/type/random/lang/en/qtype_random.php
question/type/random/version.php
question/type/randomsamatch/version.php
question/type/shortanswer/version.php
question/type/truefalse/tests/walkthrough_test.php
question/type/truefalse/version.php
report/backups/version.php
report/completion/textrotate.js
report/completion/version.php
report/configlog/version.php
report/courseoverview/version.php
report/log/locallib.php
report/log/version.php
report/loglive/version.php
report/outline/version.php
report/participation/version.php
report/performance/version.php
report/progress/version.php
report/questioninstances/version.php
report/security/version.php
report/stats/version.php
repository/alfresco/version.php
repository/areafiles/version.php
repository/boxnet/cli/migrationv1.php [new file with mode: 0644]
repository/boxnet/db/upgrade.php [new file with mode: 0644]
repository/boxnet/db/upgradelib.php [new file with mode: 0644]
repository/boxnet/lang/en/repository_boxnet.php
repository/boxnet/lib.php
repository/boxnet/locallib.php [new file with mode: 0644]
repository/boxnet/migrationv1.php [new file with mode: 0644]
repository/boxnet/tests/generator/lib.php
repository/boxnet/version.php
repository/coursefiles/version.php
repository/dropbox/lib.php
repository/dropbox/version.php
repository/equella/lib.php
repository/equella/version.php
repository/filepicker.js
repository/filesystem/lib.php
repository/filesystem/version.php
repository/flickr/version.php
repository/flickr_public/version.php
repository/googledocs/version.php
repository/lib.php
repository/local/version.php
repository/merlot/version.php
repository/picasa/version.php
repository/recent/lang/en/repository_recent.php
repository/recent/version.php
repository/s3/version.php
repository/skydrive/version.php
repository/upload/version.php
repository/url/version.php
repository/user/version.php
repository/webdav/version.php
repository/wikimedia/version.php
repository/youtube/version.php
theme/afterburner/lib.php
theme/afterburner/style/afterburner_blocks.css
theme/afterburner/style/afterburner_styles.css
theme/afterburner/version.php
theme/anomaly/renderers.php
theme/anomaly/style/general.css
theme/anomaly/version.php
theme/arialist/version.php
theme/base/style/admin.css
theme/base/style/blocks.css
theme/base/style/core.css
theme/base/style/course.css
theme/base/style/dock.css
theme/base/style/filemanager.css
theme/base/style/question.css
theme/base/version.php
theme/binarius/style/core.css
theme/binarius/version.php
theme/bootstrapbase/layout/columns1.php
theme/bootstrapbase/layout/columns2.php
theme/bootstrapbase/layout/columns3.php
theme/bootstrapbase/layout/secure.php
theme/bootstrapbase/less/editor.less
theme/bootstrapbase/less/moodle/blocks.less
theme/bootstrapbase/less/moodle/core.less
theme/bootstrapbase/less/moodle/course.less
theme/bootstrapbase/less/moodle/editor.less [new file with mode: 0644]
theme/bootstrapbase/less/moodle/filemanager.less
theme/bootstrapbase/less/moodle/question.less
theme/bootstrapbase/less/moodle/responsive.less
theme/bootstrapbase/style/editor.css
theme/bootstrapbase/style/moodle.css
theme/bootstrapbase/version.php
theme/boxxie/style/core.css
theme/boxxie/version.php
theme/brick/lib.php
theme/brick/style/pagelayout.css
theme/brick/version.php
theme/canvas/version.php
theme/clean/layout/columns1.php
theme/clean/layout/columns2.php
theme/clean/layout/columns3.php
theme/clean/layout/secure.php
theme/clean/version.php
theme/formal_white/style/pagelayout.css
theme/formal_white/version.php
theme/formfactor/version.php
theme/fusion/version.php
theme/leatherbound/version.php
theme/magazine/lib.php
theme/magazine/version.php
theme/mymobile/config.php [deleted file]
theme/mymobile/jquery/custom131.js [deleted file]
theme/mymobile/jquery/jquery.mobile-1.3.1.js [deleted file]
theme/mymobile/jquery/plugins.php [deleted file]
theme/mymobile/lang/en/theme_mymobile.php [deleted file]
theme/mymobile/layout/embedded.php [deleted file]
theme/mymobile/layout/general.php [deleted file]
theme/mymobile/lib.php [deleted file]
theme/mymobile/pix/07-map-marker.png [deleted file]
theme/mymobile/pix/41-picture-frame.png [deleted file]
theme/mymobile/pix/83-calendar.png [deleted file]
theme/mymobile/pix/ajax-loader.png [deleted file]
theme/mymobile/pix/ajax-loader2.gif [deleted file]
theme/mymobile/pix/ajax-loader2.png [deleted file]
theme/mymobile/pix/clip.png [deleted file]
theme/mymobile/pix/empty.gif [deleted file]
theme/mymobile/pix/favicon.ico [deleted file]
theme/mymobile/pix/form-check-off.png [deleted file]
theme/mymobile/pix/form-check-on.png [deleted file]
theme/mymobile/pix/form-radio-off.png [deleted file]
theme/mymobile/pix/form-radio-on.png [deleted file]
theme/mymobile/pix/header.png [deleted file]
theme/mymobile/pix/ibulb.png [deleted file]
theme/mymobile/pix/icalendar.png [deleted file]
theme/mymobile/pix/icalendarI4.png [deleted file]
theme/mymobile/pix/icon-arrow-white-down.png [deleted file]
theme/mymobile/pix/icon-arrow-white-left.png [deleted file]
theme/mymobile/pix/icon-arrow-white-right.png [deleted file]
theme/mymobile/pix/icon-arrow-white-up.png [deleted file]
theme/mymobile/pix/icon-delete.png [deleted file]
theme/mymobile/pix/icon-minus-white.png [deleted file]
theme/mymobile/pix/icon-plus-white.png [deleted file]
theme/mymobile/pix/icon-search-black.png [deleted file]
theme/mymobile/pix/icons-18-black.png [deleted file]
theme/mymobile/pix/icons-18-white.png [deleted file]
theme/mymobile/pix/icons-36-black.png [deleted file]
theme/mymobile/pix/icons-36-white.png [deleted file]
theme/mymobile/pix/imessage.png [deleted file]
theme/mymobile/pix/imessageI4.png [deleted file]
theme/mymobile/pix/iuser.png [deleted file]
theme/mymobile/pix/iuserI4.png [deleted file]
theme/mymobile/pix/linevert.png [deleted file]
theme/mymobile/pix/m2m.png [deleted file]
theme/mymobile/pix/m2m2x.png [deleted file]
theme/mymobile/pix/m2ms.png [deleted file]
theme/mymobile/pix/navs.png [deleted file]
theme/mymobile/pix/navsI4.png [deleted file]
theme/mymobile/pix/newnav.png [deleted file]
theme/mymobile/pix/newnav_s.png [deleted file]
theme/mymobile/pix/photos.png [deleted file]
theme/mymobile/pix/pinstripes.png [deleted file]
theme/mymobile/pix/power.png [deleted file]
theme/mymobile/pix/req.png [deleted file]
theme/mymobile/pix/screenshot.png [deleted file]
theme/mymobile/pix/texture_05.png [deleted file]
theme/mymobile/pix/texture_075.png [deleted file]
theme/mymobile/pix_core/a/help.png [deleted file]
theme/mymobile/pix_core/a/refresh.png [deleted file]
theme/mymobile/pix_core/a/search.png [deleted file]
theme/mymobile/pix_core/a/setting.png [deleted file]
theme/mymobile/pix_core/c/event.png [deleted file]
theme/mymobile/pix_core/docs.png [deleted file]
theme/mymobile/pix_core/f/audio.png [deleted file]
theme/mymobile/pix_core/f/avi.png [deleted file]
theme/mymobile/pix_core/f/dmg.png [deleted file]
theme/mymobile/pix_core/f/docm.png [deleted file]
theme/mymobile/pix_core/f/docx.png [deleted file]
theme/mymobile/pix_core/f/excel.png [deleted file]
theme/mymobile/pix_core/f/image.png [deleted file]
theme/mymobile/pix_core/f/text.png [deleted file]
theme/mymobile/pix_core/f/video.png [deleted file]
theme/mymobile/pix_core/f/web.png [deleted file]
theme/mymobile/pix_core/help.png [deleted file]
theme/mymobile/pix_core/i/admin.png [deleted file]
theme/mymobile/pix_core/i/backup.png [deleted file]
theme/mymobile/pix_core/i/calc.png [deleted file]
theme/mymobile/pix_core/i/checkpermissions.png [deleted file]
theme/mymobile/pix_core/i/closed.png [deleted file]
theme/mymobile/pix_core/i/cohort.png [deleted file]
theme/mymobile/pix_core/i/completion-auto-n.png [deleted file]
theme/mymobile/pix_core/i/completion-auto-y.png [deleted file]
theme/mymobile/pix_core/i/completion-manual-n.png [deleted file]
theme/mymobile/pix_core/i/completion-manual-y.png [deleted file]
theme/mymobile/pix_core/i/course.png [deleted file]
theme/mymobile/pix_core/i/courseevent.png [deleted file]
theme/mymobile/pix_core/i/db.png [deleted file]
theme/mymobile/pix_core/i/edit.png [deleted file]
theme/mymobile/pix_core/i/email.png [deleted file]
theme/mymobile/pix_core/i/files.png [deleted file]
theme/mymobile/pix_core/i/filter.png [deleted file]
theme/mymobile/pix_core/i/flagged.png [deleted file]
theme/mymobile/pix_core/i/grades.png [deleted file]
theme/mymobile/pix_core/i/group.png [deleted file]
theme/mymobile/pix_core/i/groupevent.png [deleted file]
theme/mymobile/pix_core/i/guest.png [deleted file]
theme/mymobile/pix_core/i/info.png [deleted file]
theme/mymobile/pix_core/i/item.png [deleted file]
theme/mymobile/pix_core/i/lock.png [deleted file]
theme/mymobile/pix_core/i/log.png [deleted file]
theme/mymobile/pix_core/i/mail.png [deleted file]
theme/mymobile/pix_core/i/menu.png [deleted file]
theme/mymobile/pix_core/i/navigationitem.png [deleted file]
theme/mymobile/pix_core/i/new.png [deleted file]
theme/mymobile/pix_core/i/news.png [deleted file]
theme/mymobile/pix_core/i/open.png [deleted file]
theme/mymobile/pix_core/i/payment.png [deleted file]
theme/mymobile/pix_core/i/publish.png [deleted file]
theme/mymobile/pix_core/i/reload.png [deleted file]
theme/mymobile/pix_core/i/report.png [deleted file]
theme/mymobile/pix_core/i/return.png [deleted file]
theme/mymobile/pix_core/i/rss.png [deleted file]
theme/mymobile/pix_core/i/search.png [deleted file]
theme/mymobile/pix_core/i/siteevent.png [deleted file]
theme/mymobile/pix_core/i/stats.png [deleted file]
theme/mymobile/pix_core/i/switch.png [deleted file]
theme/mymobile/pix_core/i/unflagged.png [deleted file]
theme/mymobile/pix_core/i/unlock.png [deleted file]
theme/mymobile/pix_core/i/user.png [deleted file]
theme/mymobile/pix_core/i/userevent.png [deleted file]
theme/mymobile/pix_core/i/users.png [deleted file]
theme/mymobile/pix_core/req.png [deleted file]
theme/mymobile/pix_core/t/add.png [deleted file]
theme/mymobile/pix_core/t/adddir.png [deleted file]
theme/mymobile/pix_core/t/addfile.png [deleted file]
theme/mymobile/pix_core/t/approve.png [deleted file]
theme/mymobile/pix_core/t/check.png [deleted file]
theme/mymobile/pix_core/t/collapsed.png [deleted file]
theme/mymobile/pix_core/t/delete.png [deleted file]
theme/mymobile/pix_core/t/down.png [deleted file]
theme/mymobile/pix_core/t/edit.png [deleted file]
theme/mymobile/pix_core/t/email.png [deleted file]
theme/mymobile/pix_core/t/expanded.png [deleted file]
theme/mymobile/pix_core/t/groupn.png [deleted file]
theme/mymobile/pix_core/t/hiddenuntil.png [deleted file]
theme/mymobile/pix_core/t/hideuntil.png [deleted file]
theme/mymobile/pix_core/t/left.png [deleted file]
theme/mymobile/pix_core/t/lock.png [deleted file]
theme/mymobile/pix_core/t/log.png [deleted file]
theme/mymobile/pix_core/t/message.png [deleted file]
theme/mymobile/pix_core/t/move.png [deleted file]
theme/mymobile/pix_core/t/portfolioadd.png [deleted file]
theme/mymobile/pix_core/t/preview.png [deleted file]
theme/mymobile/pix_core/t/ranges.png [deleted file]
theme/mymobile/pix_core/t/reload.png [deleted file]
theme/mymobile/pix_core/t/restore.png [deleted file]
theme/mymobile/pix_core/t/right.png [deleted file]
theme/mymobile/pix_core/t/unlock.png [deleted file]
theme/mymobile/pix_core/t/up.png [deleted file]
theme/mymobile/pix_core/t/user.png [deleted file]
theme/mymobile/pix_core/u/f1.png [deleted file]
theme/mymobile/pix_core/u/f2.png [deleted file]
theme/mymobile/pix_core/u/user100.png [deleted file]
theme/mymobile/pix_core/u/user35.png [deleted file]
theme/mymobile/pix_plugins/mod/assignment/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/book/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/chat/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/choice/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/data/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/feedback/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/folder/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/forum/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/glossary/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/glossary/print.png [deleted file]
theme/mymobile/pix_plugins/mod/label/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/lams/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/lesson/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/mail/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/page/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/quiz/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/resource/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/scorm/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/survey/icon.png [deleted file]
theme/mymobile/pix_plugins/mod/wiki/icon.png [deleted file]
theme/mymobile/readme_moodle.txt [deleted file]
theme/mymobile/renderers.php [deleted file]
theme/mymobile/renderers/mod_choice_renderer.php [deleted file]
theme/mymobile/settings.php [deleted file]
theme/mymobile/style/core.css [deleted file]
theme/mymobile/style/jmobile131.css [deleted file]
theme/mymobile/style/jmobile131_rtl.css [deleted file]
theme/mymobile/style/media.css [deleted file]
theme/nimble/version.php
theme/nonzero/version.php
theme/overlay/version.php
theme/serenity/version.php
theme/sky_high/version.php
theme/splash/style/pagelayout.css
theme/splash/version.php
theme/standard/version.php
theme/standardold/version.php
theme/upgrade.txt
user/profile/field/checkbox/version.php
user/profile/field/datetime/version.php
user/profile/field/menu/version.php
user/profile/field/text/version.php
user/profile/field/textarea/version.php
user/tests/editlib_test.php
version.php
webservice/amf/version.php
webservice/rest/version.php
webservice/soap/version.php
webservice/xmlrpc/version.php

index ae64944..6313d08 100644 (file)
@@ -1,85 +1,93 @@
 <?php
-
-///////////////////////////////////////////////////////////////////////////
-//                                                                       //
-// NOTICE OF COPYRIGHT                                                   //
-//                                                                       //
-// Moodle - Modular Object-Oriented Dynamic Learning Environment         //
-//          http://moodle.org                                            //
-//                                                                       //
-// Copyright (C) 1999 onwards Martin Dougiamas  http://dougiamas.com     //
-//                                                                       //
-// This program is free software; you can redistribute it and/or modify  //
-// it under the terms of the GNU General Public License as published by  //
-// the Free Software Foundation; either version 2 of the License, or     //
-// (at your option) any later version.                                   //
-//                                                                       //
-// This program is distributed in the hope that it will be useful,       //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of        //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         //
-// GNU General Public License for more details:                          //
-//                                                                       //
-//          http://www.gnu.org/copyleft/gpl.html                         //
-//                                                                       //
-///////////////////////////////////////////////////////////////////////////
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 /**
- * Processes actions from the admin_setting_managefilters object (defined in
- * adminlib.php).
+ * Filter management page.
  *
- * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
- * @package administration
- *//** */
-
-    require_once(dirname(__FILE__) . '/../config.php');
-    require_once($CFG->libdir . '/adminlib.php');
-
-    $action = optional_param('action', '', PARAM_ALPHANUMEXT);
-    $filterpath = optional_param('filterpath', '', PARAM_SAFEDIR);
-
-    require_login();
-    $systemcontext = context_system::instance();
-    require_capability('moodle/site:config', $systemcontext);
-
-    $returnurl = "$CFG->wwwroot/$CFG->admin/filters.php";
-    admin_externalpage_setup('managefilters');
-
-    $filters = filter_get_global_states();
-
-    // In case any new filters have been installed, but not put in the table yet.
-    $fitlernames = filter_get_all_installed();
-    $newfilters = $fitlernames;
-    foreach ($filters as $filter => $notused) {
-        unset($newfilters[$filter]);
+ * @package    core
+ * @copyright  1999 onwards Martin Dougiamas  http://dougiamas.com
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+require_once(dirname(__FILE__) . '/../config.php');
+require_once($CFG->libdir . '/adminlib.php');
+
+$action = optional_param('action', '', PARAM_ALPHA);
+$filterpath = optional_param('filterpath', '', PARAM_PLUGIN);
+
+require_login();
+$systemcontext = context_system::instance();
+require_capability('moodle/site:config', $systemcontext);
+
+admin_externalpage_setup('managefilters');
+
+// Clean up bogus filter states first.
+$plugininfos = core_plugin_manager::instance()->get_plugins_of_type('filter');
+$filters = array();
+$states = filter_get_global_states();
+foreach ($states as $state) {
+    if (!isset($plugininfos[$state->filter]) and !get_config('filter_'.$state->filter, 'version')) {
+        // Purge messy leftovers after incorrectly uninstalled plugins and unfinished installs.
+        $DB->delete_records('filter_active', array('filter' => $state->filter));
+        $DB->delete_records('filter_config', array('filter' => $state->filter));
+        error_log('Deleted bogus "filter_'.$state->filter.'" states and config data.');
+    } else {
+        $filters[$state->filter] = $state;
     }
+}
 
-/// Process actions ============================================================
-
-    if ($action) {
-        if ($action !== 'delete' and !isset($filters[$filterpath]) and !isset($newfilters[$filterpath])) {
-            throw new moodle_exception('filternotinstalled', 'error', $returnurl, $filterpath);
-        }
-
-        if (!confirm_sesskey()) {
-            redirect($returnurl);
+// Add properly installed and upgraded filters to the global states table.
+foreach ($plugininfos as $filter => $info) {
+    if (isset($filters[$filter])) {
+        continue;
+    }
+    /** @var \core\plugininfo\base $info */
+    if ($info->is_installed_and_upgraded()) {
+        filter_set_global_state($filter, TEXTFILTER_DISABLED);
+        $states = filter_get_global_states();
+        foreach ($states as $state) {
+            if ($state->filter === $filter) {
+                $filters[$filter] = $state;
+                break;
+            }
         }
     }
+}
+
+if ($action) {
+    require_sesskey();
+}
 
-    switch ($action) {
+// Process actions.
+switch ($action) {
 
     case 'setstate':
-        if ($newstate = optional_param('newstate', '', PARAM_INT)) {
+        if (isset($filters[$filterpath]) and $newstate = optional_param('newstate', '', PARAM_INT)) {
             filter_set_global_state($filterpath, $newstate);
             if ($newstate == TEXTFILTER_DISABLED) {
                 filter_set_applies_to_strings($filterpath, false);
             }
-            unset($newfilters[$filterpath]);
         }
         break;
 
     case 'setapplyto':
-        $applytostrings = optional_param('stringstoo', false, PARAM_BOOL);
-        filter_set_applies_to_strings($filterpath, $applytostrings);
+        if (isset($filters[$filterpath])) {
+            $applytostrings = optional_param('stringstoo', false, PARAM_BOOL);
+            filter_set_applies_to_strings($filterpath, $applytostrings);
+        }
         break;
 
     case 'down':
             filter_set_global_state($filterpath, $filters[$filterpath]->active, -1);
         }
         break;
-    }
-
-    // Add any missing filters to the DB table.
-    foreach ($newfilters as $filter => $notused) {
-        filter_set_global_state($filter, TEXTFILTER_DISABLED);
-    }
+}
 
-    // Reset caches and return
-    if ($action) {
-        core_plugin_manager::reset_caches();
-        reset_text_filters_cache();
-        redirect($returnurl);
-    }
+// Reset caches and return.
+if ($action) {
+    reset_text_filters_cache();
+    core_plugin_manager::reset_caches();
+    redirect(new moodle_url('/admin/filters.php'));
+}
 
-/// End of process actions =====================================================
-
-/// Print the page heading.
-    echo $OUTPUT->header();
-    echo $OUTPUT->heading(get_string('filtersettings', 'admin'));
-
-    $activechoices = array(
-        TEXTFILTER_DISABLED => get_string('disabled', 'filters'),
-        TEXTFILTER_OFF => get_string('offbutavailable', 'filters'),
-        TEXTFILTER_ON => get_string('on', 'filters'),
-    );
-    $applytochoices = array(
-        0 => get_string('content', 'filters'),
-        1 => get_string('contentandheadings', 'filters'),
-    );
-
-    $filters = filter_get_global_states();
-
-    // In case any new filters have been installed, but not put in the table yet.
-    $filternames = filter_get_all_installed();
-    $newfilters = $filternames;
-    foreach ($filters as $filter => $notused) {
-        unset($newfilters[$filter]);
-    }
-    $stringfilters = filter_get_string_filters();
-
-    $table = new html_table();
-    $table->head  = array(get_string('filter'), get_string('isactive', 'filters'),
-            get_string('order'), get_string('applyto', 'filters'), get_string('settings'), get_string('uninstallplugin', 'core_admin'));
-    $table->colclasses = array ('leftalign', 'leftalign', 'centeralign', 'leftalign', 'leftalign', 'leftalign');
-    $table->attributes['class'] = 'admintable generaltable';
-    $table->id = 'filterssetting';
-    $table->data  = array();
-
-    $lastactive = null;
-    foreach ($filters as $filter => $filterinfo) {
-        if ($filterinfo->active != TEXTFILTER_DISABLED) {
-            $lastactive = $filter;
-        }
+// Print the page heading.
+echo $OUTPUT->header();
+echo $OUTPUT->heading(get_string('filtersettings', 'admin'));
+
+$states = filter_get_global_states();
+$stringfilters = filter_get_string_filters();
+
+$table = new html_table();
+$table->head  = array(get_string('filter'), get_string('isactive', 'filters'),
+        get_string('order'), get_string('applyto', 'filters'), get_string('settings'), get_string('uninstallplugin', 'core_admin'));
+$table->colclasses = array ('leftalign', 'leftalign', 'centeralign', 'leftalign', 'leftalign', 'leftalign');
+$table->attributes['class'] = 'admintable generaltable';
+$table->id = 'filterssetting';
+$table->data  = array();
+
+$lastactive = null;
+foreach ($states as $state) {
+    if ($state->active != TEXTFILTER_DISABLED) {
+        $lastactive = $state->filter;
     }
+}
 
-    // iterate through filters adding to display table
-    $firstrow = true;
-    foreach ($filters as $filter => $filterinfo) {
-        $applytostrings = isset($stringfilters[$filter]) && $filterinfo->active != TEXTFILTER_DISABLED;
-        $row = get_table_row($filterinfo, $firstrow, $filter == $lastactive, $applytostrings);
-        $table->data[] = $row;
-        if ($filterinfo->active == TEXTFILTER_DISABLED) {
-            $table->rowclasses[] = 'dimmed_text';
-        } else {
-            $table->rowclasses[] = '';
-        }
-        $firstrow = false;
+// Iterate through filters adding to display table.
+$firstrow = true;
+foreach ($states as $state) {
+    $filter = $state->filter;
+    if (!isset($plugininfos[$filter])) {
+        continue;
     }
-    foreach ($newfilters as $filter => $filtername) {
-        $filterinfo = new stdClass;
-        $filterinfo->filter = $filter;
-        $filterinfo->active = TEXTFILTER_DISABLED;
-        $row = get_table_row($filterinfo, false, false, false);
-        $table->data[] = $row;
+    $plugininfo = $plugininfos[$filter];
+    $applytostrings = isset($stringfilters[$filter]) && $state->active != TEXTFILTER_DISABLED;
+    $row = get_table_row($plugininfo, $state, $firstrow, $filter == $lastactive, $applytostrings);
+    $table->data[] = $row;
+    if ($state->active == TEXTFILTER_DISABLED) {
         $table->rowclasses[] = 'dimmed_text';
+    } else {
+        $table->rowclasses[] = '';
     }
+    $firstrow = false;
+}
 
-    echo html_writer::table($table);
-    echo '<p class="filtersettingnote">' . get_string('filterallwarning', 'filters') . '</p>';
-    echo $OUTPUT->footer();
+echo html_writer::table($table);
+echo '<p class="filtersettingnote">' . get_string('filterallwarning', 'filters') . '</p>';
+echo $OUTPUT->footer();
+die;
 
-/// Display helper functions ===================================================
 
+/**
+ * Return action URL.
+ *
+ * @param string $filterpath
+ * @param string $action
+ * @return moodle_url
+ */
 function filters_action_url($filterpath, $action) {
     if ($action === 'delete') {
         return core_plugin_manager::instance()->get_uninstall_url('filter_'.$filterpath, 'manage');
@@ -184,27 +172,54 @@ function filters_action_url($filterpath, $action) {
     return new moodle_url('/admin/filters.php', array('sesskey'=>sesskey(), 'filterpath'=>$filterpath, 'action'=>$action));
 }
 
-function get_table_row($filterinfo, $isfirstrow, $islastactive, $applytostrings) {
-    global $CFG, $OUTPUT, $activechoices, $applytochoices, $filternames; //TODO: this is sloppy coding style!!
+/**
+ * Construct table record.
+ *
+ * @param \core\plugininfo\filter $plugininfo
+ * @param stdClass $state
+ * @param bool $isfirstrow
+ * @param bool $islastactive
+ * @param bool $applytostrings
+ * @return array data
+ */
+function get_table_row(\core\plugininfo\filter $plugininfo, $state, $isfirstrow, $islastactive, $applytostrings) {
+    global $OUTPUT;
     $row = array();
-    $filter = $filterinfo->filter;
+    $filter = $state->filter;
+    $active = $plugininfo->is_installed_and_upgraded();
+
+    static $activechoices;
+    static $applytochoices;
+    if (!isset($activechoices)) {
+        $activechoices = array(
+            TEXTFILTER_DISABLED => get_string('disabled', 'core_filters'),
+            TEXTFILTER_OFF => get_string('offbutavailable', 'core_filters'),
+            TEXTFILTER_ON => get_string('on', 'core_filters'),
+        );
+        $applytochoices = array(
+            0 => get_string('content', 'core_filters'),
+            1 => get_string('contentandheadings', 'core_filters'),
+        );
+    }
 
-    // Filter name
-    if (!empty($filternames[$filter])) {
-        $row[] = $filternames[$filter];
-    } else {
-        $row[] = '<span class="error">' . get_string('filemissing', '', $filter) . '</span>';
+    // Filter name.
+    $displayname = $plugininfo->displayname;
+    if (!$plugininfo->rootdir) {
+        $displayname = '<span class="error">' . $displayname . ' - ' . get_string('status_missing', 'core_plugin') . '</span>';
+    } else if (!$active) {
+        $displayname = '<span class="error">' . $displayname . ' - ' . get_string('error') . '</span>';
     }
+    $row[] = $displayname;
 
-    // Disable/off/on
-    $select = new single_select(filters_action_url($filter, 'setstate'), 'newstate', $activechoices, $filterinfo->active, null, 'active' . $filter);
+    // Disable/off/on.
+    $select = new single_select(filters_action_url($filter, 'setstate'), 'newstate', $activechoices, $state->active, null, 'active' . $filter);
     $select->set_label(get_string('isactive', 'filters'), array('class' => 'accesshide'));
     $row[] = $OUTPUT->render($select);
 
-    // Re-order
+    // Re-order.
     $updown = '';
     $spacer = '<img src="' . $OUTPUT->pix_url('spacer') . '" class="iconsmall" alt="" />';
-    if ($filterinfo->active != TEXTFILTER_DISABLED) {
+    if ($state->active != TEXTFILTER_DISABLED) {
         if (!$isfirstrow) {
             $updown .= $OUTPUT->action_icon(filters_action_url($filter, 'up'), new pix_icon('t/up', get_string('up'), '', array('class' => 'iconsmall')));
         } else {
@@ -221,18 +236,18 @@ function get_table_row($filterinfo, $isfirstrow, $islastactive, $applytostrings)
     // Apply to strings.
     $select = new single_select(filters_action_url($filter, 'setapplyto'), 'stringstoo', $applytochoices, $applytostrings, null, 'applyto' . $filter);
     $select->set_label(get_string('applyto', 'filters'), array('class' => 'accesshide'));
-    $select->disabled = $filterinfo->active == TEXTFILTER_DISABLED;
+    $select->disabled = ($state->active == TEXTFILTER_DISABLED);
     $row[] = $OUTPUT->render($select);
 
-    // Settings link, if required
-    if (filter_has_global_settings($filter)) {
-        $row[] = '<a href="' . $CFG->wwwroot . '/' . $CFG->admin . '/settings.php?section=filtersetting' . $filter . '">' . get_string('settings') . '</a>';
+    // Settings link, if required.
+    if ($active and filter_has_global_settings($filter)) {
+        $row[] = html_writer::link(new moodle_url('/admin/settings.php', array('section'=>'filtersetting'.$filter)), get_string('settings'));
     } else {
         $row[] = '';
     }
 
-    // Delete
-    $row[] = '<a href="' . filters_action_url($filter, 'delete') . '">' . get_string('uninstallplugin', 'core_admin') . '</a>';
+    // Uninstall.
+    $row[] = html_writer::link(filters_action_url($filter, 'delete'), get_string('uninstallplugin', 'core_admin'));
 
     return $row;
 }
index b99d519..a1ad6e0 100644 (file)
@@ -27,6 +27,9 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
     $temp->add(new admin_setting_configcheckbox('enabletgzbackups',
             new lang_string('enabletgzbackups', 'admin'),
             new lang_string('enabletgzbackups_desc', 'admin'), 0));
+    $temp->add(new admin_setting_php_extension_enabled('zlibenabled',
+            get_string('zlibenabled', 'admin'),
+            get_string('enabletgzbackups_nozlib', 'admin'), 'zlib'));
 
     $ADMIN->add('experimental', $temp);
 
index 91afdcf..10d39eb 100644 (file)
@@ -77,11 +77,25 @@ class behat_admin extends behat_base {
             // The argument should be converted to an xpath literal.
             $label = $this->getSession()->getSelectorsHandler()->xpathLiteral($label);
 
-            $fieldxpath = "//*[self::input | self::textarea | self::select][not(./@type = 'submit' or ./@type = 'image' or ./@type = 'hidden')]" .
-                "[@id=//label[contains(normalize-space(.), $label)]/@for]";
-            $fieldnode = $this->find('xpath', $fieldxpath, $exception);
-            $formfieldtypenode = $this->find('xpath', $fieldxpath . "/ancestor::div[@class='form-setting']" .
-                "/child::div[contains(concat(' ', @class, ' '),  ' form-')]/child::*/parent::div");
+            // Single element settings.
+            try {
+                $fieldxpath = "//*[self::input | self::textarea | self::select][not(./@type = 'submit' or ./@type = 'image' or ./@type = 'hidden')]" .
+                    "[@id=//label[contains(normalize-space(.), $label)]/@for]";
+                $fieldnode = $this->find('xpath', $fieldxpath, $exception);
+
+                $formfieldtypenode = $this->find('xpath', $fieldxpath . "/ancestor::div[@class='form-setting']" .
+                    "/child::div[contains(concat(' ', @class, ' '),  ' form-')]/child::*/parent::div");
+
+            } catch (ElementNotFoundException $e) {
+
+                // Multi element settings, interacting only the first one.
+                $fieldxpath = "//descendant::label[.= $label]/ancestor::div[contains(concat(' ', normalize-space(@class), ' '), ' form-item ')]" .
+                    "/descendant::div[@class='form-group']/descendant::*[self::input | self::textarea | self::select][not(./@type = 'submit' or ./@type = 'image' or ./@type = 'hidden')]";
+                $fieldnode = $this->find('xpath', $fieldxpath);
+
+                // It is the same one that contains the type.
+                $formfieldtypenode = $fieldnode;
+            }
 
             // Getting the class which contains the field type.
             $classes = explode(' ', $formfieldtypenode->getAttribute('class'));
index 704a54c..f1ac3bf 100644 (file)
@@ -24,7 +24,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;
-$plugin->requires  = 2013050100;
+$plugin->version   = 2013110500;
+$plugin->requires  = 2013110500;
 $plugin->component = 'tool_assignmentupgrade';
-$plugin->dependencies = array('mod_assign' => 2013050100);
+$plugin->dependencies = array('mod_assign' => 2013110500);
index a67581d..d8b2b51 100644 (file)
@@ -38,7 +38,7 @@ $string['stepsdefinitionscontains'] = 'Contains';
 $string['stepsdefinitionsfilters'] = 'Steps definitions';
 $string['stepsdefinitionstype'] = 'Type';
 $string['theninfo'] = 'Then. Checkings to ensure the outcomes are the expected ones';
-$string['unknownexceptioninfo'] = 'There was a problem with Selenium or the browser, try to upgrade Selenium to the latest version. Error: ';
+$string['unknownexceptioninfo'] = 'There was a problem with Selenium or your browser. Please ensure you are using the latest version of Selenium. Error:';
 $string['viewsteps'] = 'Filter';
 $string['wheninfo'] = 'When. Actions that provokes an event';
 $string['wrongbehatsetup'] = 'Something is wrong with behat setup, ensure:<ul>
index 4bcdf71..b750aa7 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013101700;
-$plugin->requires  = 2013050100; // Requires Moodle 2.5.
+$plugin->version   = 2013110500;
+$plugin->requires  = 2013110500; // Requires Moodle 2.5.
 $plugin->component = 'tool_behat';
index 4ada1ea..578cf1e 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires  = 2013050100; // Requires this Moodle version.
+$plugin->version   = 2013110500; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires  = 2013110500; // Requires this Moodle version.
 $plugin->component = 'tool_capability'; // Full name of the plugin (used for diagnostics).
index 2909c58..8092c37 100644 (file)
@@ -25,6 +25,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;
-$plugin->requires  = 2013050100;
+$plugin->version   = 2013110500;
+$plugin->requires  = 2013110500;
 $plugin->component = 'tool_customlang'; // Full name of the plugin (used for diagnostics)
index 49c897d..1e71cf1 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100; // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires  = 2013050100; // Requires this Moodle version.
+$plugin->version   = 2013110500; // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires  = 2013110500; // Requires this Moodle version.
 $plugin->component = 'tool_dbtransfer'; // Full name of the plugin (used for diagnostics).
index 7d74072..bd2cf9f 100644 (file)
@@ -329,7 +329,7 @@ class tool_generator_course_backend extends tool_generator_backend {
         $number = self::$parampages[$this->size];
         $this->log('createpages', $number, true);
         for ($i = 0; $i < $number; $i++) {
-            $record = array('course' => $this->course->id);
+            $record = array('course' => $this->course);
             $options = array('section' => $this->get_target_section());
             $pagegenerator->create_instance($record, $options);
             $this->dot($i, $number);
@@ -347,7 +347,7 @@ class tool_generator_course_backend extends tool_generator_backend {
 
         // Create resource with default textfile only.
         $resourcegenerator = $this->generator->get_plugin_generator('mod_resource');
-        $record = array('course' => $this->course->id,
+        $record = array('course' => $this->course,
                 'name' => get_string('smallfiles', 'tool_generator'));
         $options = array('section' => 0);
         $resource = $resourcegenerator->create_instance($record, $options);
@@ -415,7 +415,7 @@ class tool_generator_course_backend extends tool_generator_backend {
         $resourcegenerator = $this->generator->get_plugin_generator('mod_resource');
         for ($i = 0; $i < $count; $i++) {
             // Create resource.
-            $record = array('course' => $this->course->id,
+            $record = array('course' => $this->course,
                     'name' => get_string('bigfile', 'tool_generator', $i));
             $options = array('section' => $this->get_target_section());
             $resource = $resourcegenerator->create_instance($record, $options);
@@ -458,7 +458,7 @@ class tool_generator_course_backend extends tool_generator_backend {
 
         // Create empty forum.
         $forumgenerator = $this->generator->get_plugin_generator('mod_forum');
-        $record = array('course' => $this->course->id,
+        $record = array('course' => $this->course,
                 'name' => get_string('pluginname', 'forum'));
         $options = array('section' => 0);
         $forum = $forumgenerator->create_instance($record, $options);
index 10f30be..e301971 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version = 2013091201;
-$plugin->requires = 2013090200;
+$plugin->version = 2013110500;
+$plugin->requires = 2013110500;
 $plugin->component = 'tool_generator';
index dc429d0..d11714a 100644 (file)
@@ -25,8 +25,8 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100; // Requires this Moodle version
+$plugin->version   = 2013110500; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500; // Requires this Moodle version
 $plugin->component = 'tool_health'; // Full name of the plugin (used for diagnostics)
 
 $plugin->maturity  = MATURITY_ALPHA; // this version's maturity level
index 5524bf9..b2effda 100644 (file)
@@ -25,6 +25,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100; // Requires this Moodle version
+$plugin->version   = 2013110500; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500; // Requires this Moodle version
 $plugin->component = 'tool_innodb'; // Full name of the plugin (used for diagnostics)
index e759c43..be0da1c 100644 (file)
@@ -140,15 +140,32 @@ class tool_installaddon_installer {
         $fp = get_file_packer('application/zip');
         $files = $fp->extract_to_pathname($zipfilepath, $targetdir);
 
-        if ($files) {
-            if (!empty($rootdir)) {
-                $files = $this->rename_extracted_rootdir($targetdir, $rootdir, $files);
-            }
-            return $files;
-
-        } else {
+        if (!$files) {
             return array();
         }
+
+        if (!empty($rootdir)) {
+            $files = $this->rename_extracted_rootdir($targetdir, $rootdir, $files);
+        }
+
+        // Sometimes zip may not contain all parent directories, add them to make it consistent.
+        foreach ($files as $path => $status) {
+            if ($status !== true) {
+                continue;
+            }
+            $parts = explode('/', trim($path, '/'));
+            while (array_pop($parts)) {
+                if (empty($parts)) {
+                    break;
+                }
+                $dir = implode('/', $parts).'/';
+                if (!isset($files[$dir])) {
+                    $files[$dir] = true;
+                }
+            }
+        }
+
+        return $files;
     }
 
     /**
index 948294c..3ebf2f7 100644 (file)
@@ -42,7 +42,7 @@ class tool_installaddon_installer_testcase extends advanced_testcase {
         $this->assertEquals(1, preg_match('~^site=(.+)$~', $query, $matches));
         $site = rawurldecode($matches[1]);
         $site = json_decode(base64_decode($site), true);
-        $this->assertEquals('array', gettype($site));
+        $this->assertInternalType('array', $site);
         $this->assertEquals(3, count($site));
         $this->assertSame('Nasty site', $site['fullname']);
         $this->assertSame('file:///etc/passwd', $site['url']);
@@ -57,8 +57,8 @@ class tool_installaddon_installer_testcase extends advanced_testcase {
 
         $installer = tool_installaddon_installer::instance();
         $files = $installer->extract_installfromzip_file($sourcedir.'/testinvalidroot.zip', $contentsdir, 'fixed_root');
-        $this->assertEquals('array', gettype($files));
-        $this->assertEquals(4, count($files));
+        $this->assertInternalType('array', $files);
+        $this->assertCount(4, $files);
         $this->assertSame(true, $files['fixed_root/']);
         $this->assertSame(true, $files['fixed_root/lang/']);
         $this->assertSame(true, $files['fixed_root/lang/en/']);
index dd55653..d0342f5 100644 (file)
@@ -33,7 +33,7 @@ defined('MOODLE_INTERNAL') || die();
  * @copyright 2013 David Mudrak <david@moodle.com>
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
-class tool_installaddon_validator_test extends basic_testcase {
+class tool_installaddon_validator_testcase extends basic_testcase {
 
     public function test_validate_files_layout() {
         $fixtures = dirname(__FILE__).'/fixtures';
@@ -159,8 +159,8 @@ class tool_installaddon_validator_test extends basic_testcase {
         $this->assertEquals('foobar', $validator->get_rootdir());
         $this->assertTrue($this->has_message($validator->get_messages(), $validator::INFO, 'rootdir', 'foobar'));
         $versionphpinfo = $validator->get_versionphp_info();
-        $this->assertEquals('array', gettype($versionphpinfo));
-        $this->assertEquals(4, count($versionphpinfo));
+        $this->assertInternalType('array', $versionphpinfo);
+        $this->assertCount(4, $versionphpinfo);
         $this->assertEquals(2013031900, $versionphpinfo['version']);
         $this->assertEquals(2013031200, $versionphpinfo['requires']);
         $this->assertEquals('local_foobar', $versionphpinfo['component']);
@@ -279,8 +279,8 @@ class tool_installaddon_validator_test extends basic_testcase {
         $this->assertEquals('testable_tool_installaddon_validator', get_class($validator));
 
         $info = $validator->testable_parse_version_php($fixtures.'/version1.php');
-        $this->assertEquals('array', gettype($info));
-        $this->assertEquals(7, count($info));
+        $this->assertInternalType('array', $info);
+        $this->assertCount(7, $info);
         $this->assertEquals('block_foobar', $info['plugin->component']);    // Later in the file.
         $this->assertEquals('2013010100', $info['plugin->version']);        // Numeric wins over strings.
         $this->assertEquals('2012122401', $info['plugin->requires']);       // Commented.
index 01df572..72e3e42 100644 (file)
@@ -24,6 +24,6 @@
 defined('MOODLE_INTERNAL') || die();
 
 $plugin->component  = 'tool_installaddon';
-$plugin->version    = 2013050100;
-$plugin->requires   = 2013050100;
+$plugin->version    = 2013110500;
+$plugin->requires   = 2013110500;
 $plugin->maturity   = MATURITY_STABLE;
index 87dee88..d31ec68 100644 (file)
@@ -38,7 +38,7 @@ $string['nolangupdateneeded'] = 'All your language packs are up to date, no upda
 $string['pluginname'] = 'Language packs';
 $string['purgestringcaches'] = 'Purge string caches';
 $string['remotelangnotavailable'] = 'Because Moodle cannot connect to download.moodle.org, it is not possible for language packs to be installed automatically. Please download the appropriate ZIP file(s) from <a href="http://download.moodle.org/langpack/">download.moodle.org/langpack</a>, copy them to your {$a} directory and unzip them manually.';
-$string['uninstall'] = 'Uninstall selected language pack(s)';
+$string['uninstall'] = 'Uninstall selected language pack';
 $string['uninstallconfirm'] = 'You are about to completely uninstall language pack {$a}, are you sure?';
 $string['updatelangs'] = 'Update all installed language packs';
 
index 400d1cd..d41f4c1 100644 (file)
@@ -25,6 +25,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100; // Requires this Moodle version
+$plugin->version   = 2013110500; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500; // Requires this Moodle version
 $plugin->component = 'tool_langimport'; // Full name of the plugin (used for diagnostics)
index a71d28b..334c7ca 100644 (file)
@@ -25,7 +25,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100; // Requires this Moodle version
+$plugin->version   = 2013110500; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500; // Requires this Moodle version
 $plugin->component = 'tool_multilangupgrade'; // Full name of the plugin (used for diagnostics)
 
index 0885cc2..86d4c24 100644 (file)
@@ -24,7 +24,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100; // Requires this Moodle version
+$plugin->version   = 2013110500; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500; // Requires this Moodle version
 $plugin->component = 'tool_phpunit'; // Full name of the plugin (used for diagnostics)
 
index 883ef9a..00333c7 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050200; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100; // Requires this Moodle version
+$plugin->version   = 2013110500; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500; // Requires this Moodle version
 $plugin->component = 'tool_profiling'; // Full name of the plugin (used for diagnostics)
index 5b9090e..71db5b9 100644 (file)
@@ -25,6 +25,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;
-$plugin->requires  = 2013050100;
+$plugin->version   = 2013110500;
+$plugin->requires  = 2013110500;
 $plugin->component = 'tool_qeupgradehelper'; // Full name of the plugin (used for diagnostics)
index 37d8952..4496dcd 100644 (file)
@@ -25,8 +25,8 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100; // Requires this Moodle version
+$plugin->version   = 2013110500; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500; // Requires this Moodle version
 $plugin->component = 'tool_replace'; // Full name of the plugin (used for diagnostics)
 
 $plugin->maturity  = MATURITY_ALPHA; // this version's maturity level
index e6c9b92..2b1d63c 100644 (file)
@@ -25,7 +25,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;
-$plugin->requires  = 2013050100;
+$plugin->version   = 2013110500;
+$plugin->requires  = 2013110500;
 $plugin->component = 'tool_spamcleaner'; // Full name of the plugin (used for diagnostics)
 
index 366fe7f..dd0f7fe 100644 (file)
@@ -25,7 +25,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;
-$plugin->requires  = 2013050100;
+$plugin->version   = 2013110500;
+$plugin->requires  = 2013110500;
 $plugin->component = 'tool_timezoneimport'; // Full name of the plugin (used for diagnostics)
 
index 3b6e669..1e181c0 100644 (file)
@@ -25,7 +25,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100; // Requires this Moodle version
+$plugin->version   = 2013110500; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500; // Requires this Moodle version
 $plugin->component = 'tool_unsuproles'; // Full name of the plugin (used for diagnostics)
 
index 112b41c..43c1499 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013070200;            // The current plugin version (Date: YYYYMMDDXX).
-$plugin->requires  = 2013062100;            // Requires this Moodle version.
+$plugin->version   = 2013110500;            // The current plugin version (Date: YYYYMMDDXX).
+$plugin->requires  = 2013110500;            // Requires this Moodle version.
 $plugin->component = 'tool_uploadcourse';   // Full name of the plugin (used for diagnostics).
index 5116d1b..3eeebea 100644 (file)
@@ -25,7 +25,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013061400; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100; // Requires this Moodle version
+$plugin->version   = 2013110500; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500; // Requires this Moodle version
 $plugin->component = 'tool_uploaduser'; // Full name of the plugin (used for diagnostics)
 
index 1f53caf..9b0e8ce 100644 (file)
@@ -24,7 +24,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100; // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100; // Requires this Moodle version
+$plugin->version   = 2013110500; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500; // Requires this Moodle version
 $plugin->component = 'tool_xmldb'; // Full name of the plugin (used for diagnostics)
 
index 45ddc21..cfbbe22 100644 (file)
         echo $OUTPUT->heading('<a href="'.$securewwwroot.'/user/editadvanced.php?id=-1">'.get_string('addnewuser').'</a>');
     }
     if (!empty($table)) {
+        echo html_writer::start_tag('div', array('class'=>'no-overflow'));
         echo html_writer::table($table);
+        echo html_writer::end_tag('div');
         echo $OUTPUT->paging_bar($usercount, $page, $perpage, $baseurl);
         if (has_capability('moodle/user:create', $sitecontext)) {
             echo $OUTPUT->heading('<a href="'.$securewwwroot.'/user/editadvanced.php?id=-1">'.get_string('addnewuser').'</a>');
index 84469a0..ee9bd85 100644 (file)
@@ -26,8 +26,8 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013091700;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_cas';        // Full name of the plugin (used for diagnostics)
 
-$plugin->dependencies = array('auth_ldap' => 2013052100);
+$plugin->dependencies = array('auth_ldap' => 2013110500);
index 5b69e9e..290f1ae 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_db';         // Full name of the plugin (used for diagnostics)
index d1f9822..1649172 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die;
 
-$plugin->version   = 2013050100;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_email';      // Full name of the plugin (used for diagnostics)
index e361f81..2a7406b 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_fc';         // Full name of the plugin (used for diagnostics)
index 55d996d..673b2e7 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_imap';       // Full name of the plugin (used for diagnostics)
index 296948b..955b81e 100644 (file)
@@ -246,12 +246,8 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
 
         $this->resetAfterTest();
 
-        $this->setAdminUser();
-
-        $user = clone($USER);
-
-        // The USER variable no longer stores the password hash, so set it here.
-        $user->password = 'password';
+        $this->assertFalse(isloggedin());
+        $user = $DB->get_record('user', array('username'=>'admin'));
 
         // Note: we are just going to trigger the function that calls the event,
         // not actually perform a LDAP login, for the sake of sanity.
@@ -271,23 +267,6 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
         $events = $sink->get_events();
         $sink->close();
 
-        // Unset the password now.
-        unset($user->password);
-
-        // Get the user from the DB and set the expected variables.
-        $dbuser = $DB->get_record('user', array('id' => $user->id), '*', MUST_EXIST);
-        $user->firstaccess = (int) $dbuser->firstaccess;
-        $user->lastaccess = (int) $dbuser->lastaccess;
-        $user->currentlogin = (int) $dbuser->currentlogin;
-        $user->sesskey = sesskey();
-        $user->lastcourseaccess = array();
-        $user->currentcourseaccess = array();
-        $user->groupmember = array();
-        $user->profile = array();
-        $user->preference = array(
-            '_lastloaded' => time()
-        );
-
         // Check that the event is valid.
         $this->assertCount(2, $events);
         $event = $events[0];
@@ -297,7 +276,6 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
         $this->assertEquals('user', $event->objecttable);
         $this->assertEquals('2', $event->objectid);
         $this->assertEquals(context_system::instance()->id, $event->contextid);
-        $this->assertEquals($user, $event->get_record_snapshot('user', 2));
         $expectedlog = array(SITEID, 'user', 'login', 'view.php?id=' . $USER->id . '&course=' . SITEID, $user->id,
             0, $user->id);
         $this->assertEventLegacyLogData($expectedlog, $event);
index 37f0ca8..74647f5 100644 (file)
@@ -25,6 +25,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013052100;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_ldap';       // Full name of the plugin (used for diagnostics)
index b52f35d..d4f062c 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_manual';     // Full name of the plugin (used for diagnostics)
index 765b59e..e1f3f4a 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_mnet';       // Full name of the plugin (used for diagnostics)
index 5984171..1ae8317 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_nntp';       // Full name of the plugin (used for diagnostics)
index a5cc794..f637ea5 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_nologin';    // Full name of the plugin (used for diagnostics)
index eb2b3bc..15c44f8 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_none';       // Full name of the plugin (used for diagnostics)
index 2c96c33..3eb4d95 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_pam';       // Full name of the plugin (used for diagnostics)
index 9c4c29a..6b5d4db 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_pop3';       // Full name of the plugin (used for diagnostics)
index e63f8e0..d1e851a 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_radius';     // Full name of the plugin (used for diagnostics)
index 9b89696..977cdfc 100644 (file)
@@ -25,6 +25,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_shibboleth'; // Full name of the plugin (used for diagnostics)
index 008e9c2..87fc388 100644 (file)
@@ -24,6 +24,6 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2013050100;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2013050100;        // Requires this Moodle version
+$plugin->version   = 2013110500;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2013110500;        // Requires this Moodle version
 $plugin->component = 'auth_webservice'; // Full name of the plugin (used for diagnostics)
index 6244f47..6794645 100644 (file)
@@ -126,7 +126,7 @@ abstract class backup implements checksumable {
     const OPERATION_RESTORE ='restore';// We are performing one restore
 
     // Version (to keep CFG->backup_version (and release) updated automatically)
-    const VERSION = 2013050100;
+    const VERSION = 2013110500;
     const RELEASE = '2.6';
 }
 
index af51a7c..914e4ab 100644 (file)
@@ -559,7 +559,7 @@ abstract class backup_cron_automated_helper {
     public static function set_state_running($running = true) {
         if ($running === true) {
             if (self::get_automated_backup_state() === self::STATE_RUNNING) {
-                throw new backup_exception('backup_automated_already_running');
+                throw new backup_helper_exception('backup_automated_already_running');
             }
             set_config('backup_auto_running', '1', 'backup');
         } else {
index 6732194..ddc406e 100644 (file)
@@ -6,8 +6,13 @@ Feature: Backup Moodle courses
 
   Background:
     Given the following "courses" exists:
-      | fullname | shortname | category |
-      | Course 1 | C1 | 0 |
+      | fullname | shortname | category | numsections |
+      | Course 1 | C1 | 0 | 10 |
+      | Course 2 | C2 | 0 | 2 |
+    And the following "activities" exists:
+      | activity | course | idnumber | name | intro | section |
+      | assign | C2 | assign1 | Test assign | Assign description | 1 |
+      | data | C2 | data1 | Test data | Database description | 2 |
     And I log in as "admin"
 
   @javascript
@@ -34,5 +39,27 @@ Feature: Backup Moodle courses
     And I click on "Continue" "button" in the ".bcs-current-course" "css_element"
     And "//div[contains(concat(' ', normalize-space(@class), ' '), ' fitem ')][contains(., 'Include calendar events')]/descendant::img" "xpath_element" should exists
     And I check "Include course logs"
-    And I press "Cancel"
-    And I click on "Cancel" "button" in the "Cancel backup" "dialogue"
+    And I press "Next"
+
+  @javascript
+  Scenario: Backup a course without blocks
+    When I backup "Course 1" course using this options:
+      | id_setting_root_blocks | 0 |
+    Then I should see "Course backup area"
+
+  @javascript
+  Scenario: Backup selecting just one section
+    When I backup "Course 2" course using this options:
+      | Filename | test_backup.mbz |
+      | setting_section_section_2_userinfo | 0 |
+      | setting_section_section_2_included | 0 |
+      | setting_section_section_4_userinfo | 0 |
+      | setting_section_section_4_included | 0 |
+    Then I should see "Course backup area"
+    And I click on "Restore" "link" in the "test_backup.mbz" "table_row"
+    And I should not see "Section 2"
+    And I press "Continue"
+    And I click on "Continue" "button" in the ".bcs-current-course" "css_element"
+    And I press "Next"
+    And I should see "Test assign"
+    And I should not see "Test data"
index 099a498..9675a62 100644 (file)
@@ -21,14 +21,19 @@ Feature: Duplicate activities
     And I add a "Database" to section "1" and I fill the form with:
       | Name | Test database name |
       | Description | Test database description |
-    And I click on "Actions" "link" in the "Test database name" activity
+    And I open "Test database name" actions menu
     When I click on "Duplicate" "link" in the "Test database name" activity
-    And I press "Continue"
-    And I press "Edit the new copy"
+    And I open "Test database name" actions menu
+    And I click on "Edit settings" "link" in the "Test database name" activity
+    And I fill the moodle form with:
+      | Name | Original database name |
+    And I press "Save and return to course"
+    And I open "Test database name" actions menu
+    And I click on "Edit settings" "link" in the "Test database name" activity
     And I fill the moodle form with:
       | Name | Duplicated database name |
       | Description | Duplicated database description |
     And I press "Save and return to course"
-    Then I should see "Test database name" in the "#section-1" "css_element"
+    Then I should see "Original database name" in the "#section-1" "css_element"
     And I should see "Duplicated database name" in the "#section-1" "css_element"
-    And "Test database name" "link" should appear before "Duplicated database name" "link"
+    And "Original database name" "link" should appear before "Duplicated database name" "link"
index ed7fa5c..8d68ffd 100644 (file)
@@ -9,6 +9,11 @@ Feature: Restore Moodle 2 course backups
       | fullname | shortname | category | format | numsections | coursedisplay |
       | Course 1 | C1 | 0 | topics | 15 | 1 |
       | Course 2 | C2 | 0 | topics | 5 | 0 |
+      | Course 3 | C3 | 0 | topics | 2 | 0 |
+    And the following "activities" exists:
+      | activity | course | idnumber | name | intro | section |
+      | assign | C3 | assign1 | Test assign name | Assign description | 1 |
+      | data | C3 | data1 | Test database name | Database description | 2 |
     And I log in as "admin"
     And I follow "Course 1"
     And I turn editing mode on
@@ -35,7 +40,7 @@ Feature: Restore Moodle 2 course backups
     Then I should see "Course 1 restored in a new course"
     And I should see "Community finder" in the "Community finder" "block"
     And I should see "Test forum name"
-    And I follow "Edit settings"
+    And I click on "Edit settings" "link" in the "Administration" "block"
     And I expand all fieldsets
     And the "id_format" field should match "Topics format" value
     And the "Number of sections" field should match "15" value
@@ -44,15 +49,16 @@ Feature: Restore Moodle 2 course backups
 
   @javascript
   Scenario: Restore a backup into the same course
-    When I backup "Course 1" course using this options:
+    When I backup "Course 3" course using this options:
       | Filename | test_backup.mbz |
-    And I merge "test_backup.mbz" backup into the current course using this options:
+    And I restore "test_backup.mbz" backup into "Course 2" course using this options:
+      | setting_section_section_3_included | 0 |
+      | setting_section_section_3_userinfo | 0 |
       | setting_section_section_5_included | 0 |
       | setting_section_section_5_userinfo | 0 |
-    Then I should see "Course 1"
-    And I should not see "Section 3"
-    And I should see "Community finder" in the "Community finder" "block"
-    And I should see "Test forum name"
+    Then I should see "Course 2"
+    And I should see "Test assign name"
+    And I should not see "Test database name"
 
   @javascript
   Scenario: Restore a backup into the same course removing it's contents before that
@@ -79,7 +85,7 @@ Feature: Restore Moodle 2 course backups
     When I restore "test_backup.mbz" backup into a new course using this options:
     Then I should see "Topic 1"
     And I should see "Test forum name"
-    And I follow "Edit settings"
+    And I click on "Edit settings" "link" in the "Administration" "block"
     And I expand all fieldsets
     And the "id_format" field should match "Topics format" value
     And I fill the moodle form with:
@@ -90,14 +96,14 @@ Feature: Restore Moodle 2 course backups
     And I press "Save changes"
     And I should see "1 January - 7 January"
     And I should see "Test forum name"
-    And I follow "Edit settings"
+    And I click on "Edit settings" "link" in the "Administration" "block"
     And I expand all fieldsets
     And the "id_format" field should match "Weekly format" value
     And I fill the moodle form with:
       | id_format | Social format |
     And I press "Save changes"
     And I should see "An open forum for chatting about anything you want to"
-    And I follow "Edit settings"
+    And I click on "Edit settings" "link" in the "Administration" "block"
     And I expand all fieldsets
     And the "id_format" field should match "Social format" value
     And I press "Cancel"
@@ -114,7 +120,7 @@ Feature: Restore Moodle 2 course backups
       | Filename | test_backup.mbz |
     And I restore "test_backup.mbz" backup into "Course 2" course using this options:
       | Overwrite course configuration | Yes |
-    And I follow "Edit settings"
+    And I click on "Edit settings" "link" in the "Administration" "block"
     And I expand all fieldsets
     Then the "id_format" field should match "Topics format" value
     And the "Number of sections" field should match "15" value
diff --git