Merge branch 'MDL-40323-master' of https://github.com/mackensen/moodle
authorDan Poltawski <dan@moodle.com>
Mon, 29 Jul 2013 05:59:55 +0000 (13:59 +0800)
committerDan Poltawski <dan@moodle.com>
Mon, 29 Jul 2013 05:59:55 +0000 (13:59 +0800)
1000 files changed:
admin/blocks.php
admin/cli/alternative_component_cache.php [new file with mode: 0644]
admin/cli/install.php
admin/cli/install_database.php
admin/cli/upgrade.php
admin/courseformats.php
admin/editors.php
admin/enrol.php
admin/environment.xml
admin/handlevirus.php
admin/index.php
admin/localplugins.php
admin/mnet/peer_forms.php
admin/modules.php
admin/oacleanup.php [deleted file]
admin/plagiarism.php
admin/plugins.php
admin/portfolio.php
admin/qbehaviours.php
admin/renderer.php
admin/reports.php
admin/repository.php
admin/roles/admins.php
admin/roles/allow.php
admin/roles/assign.php
admin/roles/check.php
admin/roles/classes/admins_existing_selector.php [new file with mode: 0644]
admin/roles/classes/admins_potential_selector.php [new file with mode: 0644]
admin/roles/classes/allow_assign_page.php [new file with mode: 0644]
admin/roles/classes/allow_override_page.php [new file with mode: 0644]
admin/roles/classes/allow_role_page.php [new file with mode: 0644]
admin/roles/classes/allow_switch_page.php [new file with mode: 0644]
admin/roles/classes/assign_user_selector_base.php [new file with mode: 0644]
admin/roles/classes/capability_table_base.php [new file with mode: 0644]
admin/roles/classes/capability_table_with_risks.php [new file with mode: 0644]
admin/roles/classes/check_capability_table.php [new file with mode: 0644]
admin/roles/classes/check_users_selector.php [new file with mode: 0644]
admin/roles/classes/define_role_table_advanced.php [new file with mode: 0644]
admin/roles/classes/define_role_table_basic.php [new file with mode: 0644]
admin/roles/classes/existing_role_holders.php [new file with mode: 0644]
admin/roles/classes/override_permissions_table_advanced.php [new file with mode: 0644]
admin/roles/classes/permission_allow_form.php [new file with mode: 0644]
admin/roles/classes/permission_prohibit_form.php [new file with mode: 0644]
admin/roles/classes/permissions_table.php [new file with mode: 0644]
admin/roles/classes/potential_assignees_below_course.php [new file with mode: 0644]
admin/roles/classes/potential_assignees_course_and_above.php [new file with mode: 0644]
admin/roles/classes/preset.php [new file with mode: 0644]
admin/roles/classes/preset_form.php [new file with mode: 0644]
admin/roles/classes/view_role_definition_table.php [new file with mode: 0644]
admin/roles/define.php
admin/roles/lib.php
admin/roles/manage.php
admin/roles/managetabs.php
admin/roles/override.php
admin/roles/permissions.php
admin/roles/permissions_forms.php [deleted file]
admin/roles/role_schema.xml [new file with mode: 0644]
admin/roles/tests/preset_test.php [new file with mode: 0644]
admin/roles/usersroles.php
admin/settings/appearance.php
admin/settings/courses.php
admin/settings/development.php
admin/settings/grades.php
admin/settings/plugins.php
admin/settings/security.php
admin/settings/server.php
admin/settings/users.php
admin/tests/behat/behat_admin.php
admin/tests/behat/display_short_names.feature
admin/tool/behat/cli/init.php
admin/tool/behat/cli/util.php
admin/tool/behat/lang/en/tool_behat.php
admin/tool/behat/renderer.php
admin/tool/behat/tests/behat/basic_actions.feature
admin/tool/behat/tests/behat/data_generators.feature
admin/tool/capability/classes/settings_form.php [new file with mode: 0644]
admin/tool/capability/index.php
admin/tool/capability/lang/en/tool_capability.php
admin/tool/capability/locallib.php [new file with mode: 0644]
admin/tool/capability/module.js [deleted file]
admin/tool/capability/renderer.php [new file with mode: 0644]
admin/tool/capability/settings.php
admin/tool/capability/styles.css [new file with mode: 0644]
admin/tool/capability/version.php
admin/tool/capability/yui/build/moodle-tool_capability-search/moodle-tool_capability-search-debug.js [new file with mode: 0644]
admin/tool/capability/yui/build/moodle-tool_capability-search/moodle-tool_capability-search-min.js [new file with mode: 0644]
admin/tool/capability/yui/build/moodle-tool_capability-search/moodle-tool_capability-search.js [new file with mode: 0644]
admin/tool/capability/yui/src/search/build.json [new file with mode: 0644]
admin/tool/capability/yui/src/search/js/search.js [new file with mode: 0644]
admin/tool/capability/yui/src/search/meta/search.json [new file with mode: 0644]
admin/tool/customlang/edit.php
admin/tool/customlang/filter_form.php
admin/tool/customlang/index.php
admin/tool/customlang/locallib.php
admin/tool/dbtransfer/locallib.php
admin/tool/generator/index.php
admin/tool/installaddon/classes/installer.php
admin/tool/installaddon/classes/validator.php
admin/tool/installaddon/yui/permcheck/permcheck.js
admin/tool/langimport/lang/en/tool_langimport.php
admin/tool/phpunit/cli/init.php
admin/tool/phpunit/cli/util.php
admin/tool/profiling/export.php [new file with mode: 0644]
admin/tool/profiling/import.php [new file with mode: 0644]
admin/tool/profiling/import_form.php [new file with mode: 0644]
admin/tool/profiling/index.php
admin/tool/profiling/lang/en/tool_profiling.php
admin/tool/profiling/version.php
admin/tool/qeupgradehelper/extracttestcase_form.php
admin/tool/unsuproles/index.php
admin/tool/uploadcourse/classes/base_form.php [new file with mode: 0644]
admin/tool/uploadcourse/classes/course.php [new file with mode: 0644]
admin/tool/uploadcourse/classes/helper.php [new file with mode: 0644]
admin/tool/uploadcourse/classes/processor.php [new file with mode: 0644]
admin/tool/uploadcourse/classes/step1_form.php [new file with mode: 0644]
admin/tool/uploadcourse/classes/step2_form.php [new file with mode: 0644]
admin/tool/uploadcourse/classes/tracker.php [new file with mode: 0644]
admin/tool/uploadcourse/cli/uploadcourse.php [new file with mode: 0644]
admin/tool/uploadcourse/db/caches.php [moved from enrol/authorize/db/messages.php with 79% similarity]
admin/tool/uploadcourse/index.php [new file with mode: 0644]
admin/tool/uploadcourse/lang/en/tool_uploadcourse.php [new file with mode: 0644]
admin/tool/uploadcourse/settings.php [moved from enrol/authorize/db/upgrade.php with 59% similarity]
admin/tool/uploadcourse/tests/behat/create.feature [new file with mode: 0644]
admin/tool/uploadcourse/tests/behat/update.feature [new file with mode: 0644]
admin/tool/uploadcourse/tests/course_test.php [new file with mode: 0644]
admin/tool/uploadcourse/tests/fixtures/backup.mbz [new file with mode: 0644]
admin/tool/uploadcourse/tests/fixtures/courses.csv [new file with mode: 0644]
admin/tool/uploadcourse/tests/helper_test.php [new file with mode: 0644]
admin/tool/uploadcourse/tests/processor_test.php [new file with mode: 0644]
admin/tool/uploadcourse/version.php [new file with mode: 0644]
admin/tool/uploaduser/index.php
admin/tool/uploaduser/user_form.php
admin/tool/xmldb/actions/create_xml_file/create_xml_file.class.php
admin/tools.php
admin/user/user_bulk_cohortadd.php
admin/user/user_bulk_display.php
admin/webservice/forms.php
admin/webservice/protocols.php
admin/webservice/testclient.php
auth/classes/event/user_loggedin.php [new file with mode: 0644]
auth/db/tests/db_test.php
auth/ldap/auth.php
auth/ldap/config.html
auth/ldap/lang/en/auth_ldap.php
auth/ldap/tests/plugin_test.php [moved from auth/ldap/tests/ldap_test.php with 94% similarity]
auth/mnet/auth.php
auth/tests/auth_test.php [new file with mode: 0644]
auth/tests/behat/behat_auth.php
auth/tests/behat/login.feature
backup/backupfilesedit_form.php
backup/cc/cc112moodle.php
backup/cc/cc2moodle.php
backup/cc/cc_lib/cc_utils.php
backup/cc/cc_lib/gral_lib/pathutils.php
backup/cc/entities.class.php
backup/cc/entities11.class.php
backup/converter/imscc11/backuplib.php
backup/converter/moodle1/handlerlib.php
backup/moodle2/backup_final_task.class.php
backup/moodle2/backup_plan_builder.class.php
backup/moodle2/backup_qtype_plugin.class.php
backup/moodle2/backup_root_task.class.php
backup/moodle2/backup_settingslib.php
backup/moodle2/backup_stepslib.php
backup/moodle2/backup_xml_transformer.class.php
backup/moodle2/restore_final_task.class.php
backup/moodle2/restore_plan_builder.class.php
backup/moodle2/restore_plugin.class.php
backup/moodle2/restore_root_task.class.php
backup/moodle2/restore_settingslib.php
backup/moodle2/restore_stepslib.php
backup/util/dbops/backup_controller_dbops.class.php
backup/util/dbops/restore_dbops.class.php
backup/util/helper/backup_cron_helper.class.php
backup/util/helper/backup_general_helper.class.php
backup/util/helper/backup_helper.class.php
backup/util/helper/restore_decode_processor.class.php
backup/util/helper/restore_logs_processor.class.php
backup/util/plan/backup_structure_step.class.php
backup/util/plan/restore_structure_step.class.php
backup/util/ui/restore_ui_components.php
backup/util/ui/tests/behat/backup_courses.feature
backup/util/ui/tests/behat/behat_backup.php
backup/util/xml/parser/processors/grouped_parser_processor.class.php
badges/award.php
badges/backpack.js
badges/badge.php
badges/index.php
badges/mybadges.php
badges/newbadge.php
badges/renderer.php
badges/tests/badgeslib_test.php
blocks/badges/db/access.php
blocks/badges/version.php
blocks/comments/tests/behat/behat_block_comments.php
blocks/community/renderer.php
blocks/completionstatus/details.php
blocks/course_overview/renderer.php
blocks/dock.js [deleted file]
blocks/edit_form.php
blocks/moodleblock.class.php
blocks/navigation/block_navigation.php
blocks/navigation/renderer.php
blocks/navigation/tests/behat/view_my_courses.feature [new file with mode: 0644]
blocks/navigation/yui/build/moodle-block_navigation-navigation/moodle-block_navigation-navigation-debug.js
blocks/navigation/yui/build/moodle-block_navigation-navigation/moodle-block_navigation-navigation-min.js
blocks/navigation/yui/build/moodle-block_navigation-navigation/moodle-block_navigation-navigation.js
blocks/navigation/yui/src/navigation/js/navigation.js
blocks/navigation/yui/src/navigation/meta/navigation.json
blocks/recent_activity/block_recent_activity.php
blocks/section_links/block_section_links.php
blocks/settings/block_settings.php
blocks/tests/behat/behat_blocks.php
blocks/tests/behat/configure_block_throughout_site.feature
cache/classes/loaders.php
cache/locallib.php
cache/stores/file/lib.php
cache/stores/memcache/addinstanceform.php
cache/stores/memcache/lang/en/cachestore_memcache.php
cache/stores/memcache/lib.php
cache/stores/memcache/tests/memcache_test.php
cache/stores/memcached/addinstanceform.php
cache/stores/memcached/lang/en/cachestore_memcached.php
cache/stores/memcached/lib.php
cache/stores/memcached/tests/memcached_test.php
cache/stores/session/lib.php
cache/stores/session/tests/session_test.php
cache/stores/static/lib.php
cache/stores/static/tests/static_test.php
cache/tests/cache_test.php
cache/tests/fixtures/lib.php
cache/tests/fixtures/stores.php
calendar/export.php
calendar/lib.php
calendar/tests/externallib_test.php [moved from calendar/tests/externallib_tests.php with 98% similarity]
cohort/externallib.php
cohort/tests/behat/behat_cohort.php
cohort/tests/behat/upload_cohort_users.feature
cohort/tests/externallib_test.php
cohort/upgrade.txt [new file with mode: 0644]
comment/lib.php
completion/tests/behat/behat_completion.php
config-dist.php
course/dnduploadlib.php
course/edit_form.php
course/editcategory.php
course/editcategory_form.php
course/externallib.php
course/format/lib.php
course/format/singleactivity/format.php [new file with mode: 0644]
course/format/singleactivity/lang/en/format_singleactivity.php [new file with mode: 0644]
course/format/singleactivity/lib.php [new file with mode: 0644]
course/format/singleactivity/renderer.php [new file with mode: 0644]
course/format/singleactivity/settings.php [new file with mode: 0644]
course/format/singleactivity/settingslib.php [new file with mode: 0644]
course/format/singleactivity/styles.css [new file with mode: 0644]
course/format/singleactivity/version.php [moved from enrol/authorize/version.php with 67% similarity]
course/lib.php
course/modlib.php
course/moodleform_mod.php
course/renderer.php
course/report.php
course/tests/behat/activities_group_icons.feature
course/tests/behat/activities_indentation.feature
course/tests/behat/behat_course.php
course/tests/behat/force_group_mode.feature
course/tests/courselib_test.php
course/tests/externallib_test.php
course/view.php
enrol/authorize/authorize.js [deleted file]
enrol/authorize/authorizenet.class.php [deleted file]
enrol/authorize/const.php [deleted file]
enrol/authorize/db/access.php [deleted file]
enrol/authorize/db/install.xml [deleted file]
enrol/authorize/enrol_form.php [deleted file]
enrol/authorize/index.php [deleted file]
enrol/authorize/lang/en/enrol_authorize.php [deleted file]
enrol/authorize/localfuncs.php [deleted file]
enrol/authorize/locallib.php [deleted file]
enrol/authorize/uploadcsv.php [deleted file]
enrol/category/classes/observer.php [new file with mode: 0644]
enrol/category/db/events.php
enrol/category/locallib.php
enrol/category/tests/plugin_test.php [moved from enrol/category/tests/sync_test.php with 98% similarity]
enrol/cohort/lib.php
enrol/cohort/locallib.php
enrol/database/tests/sync_test.php
enrol/externallib.php
enrol/flatfile/lib.php
enrol/flatfile/tests/flatfile_test.php
enrol/guest/lib.php
enrol/locallib.php
enrol/meta/addinstance_form.php
enrol/meta/lib.php
enrol/self/lang/en/enrol_self.php
enrol/self/lib.php
enrol/self/locallib.php
enrol/self/tests/self_test.php
enrol/self/version.php
enrol/tests/behat/behat_enrol.php
enrol/tests/externallib_role_test.php
enrol/upgrade.txt
enrol/users.php
enrol/users_forms.php
error/index.php
files/externallib.php
files/tests/externallib_test.php [new file with mode: 0644]
filter/activitynames/filter.php
filter/data/filter.php
filter/glossary/filter.php
filter/manage.php
filter/urltolink/filter.php
filter/urltolink/tests/filter_test.php
grade/edit/settings/form.php
grade/grading/form/guide/lib.php
grade/grading/form/guide/version.php
grade/grading/form/lib.php
grade/grading/form/rubric/lib.php
grade/grading/form/rubric/styles.css
grade/grading/form/rubric/version.php
grade/grading/form/upgrade.txt [new file with mode: 0644]
grade/grading/lib.php
grade/grading/pick.php
grade/import/lib.php
grade/lib.php
grade/report/grader/lib.php
grade/report/grader/styles.css
grade/report/index.php
grade/report/lib.php
grade/report/upgrade.txt
grade/report/user/lib.php
group/index.php
group/lib.php
group/overview.php
group/tests/behat/behat_groups.php
install.php
install/lang/gl/moodle.php
install/lang/ko/error.php
install/lang/pan/langconfig.php [new file with mode: 0644]
install/lang/pl/moodle.php
lang/README.txt
lang/en/admin.php
lang/en/auth.php
lang/en/backup.php
lang/en/badges.php
lang/en/cache.php
lang/en/editor.php
lang/en/enrol.php
lang/en/error.php
lang/en/install.php
lang/en/moodle.php
lang/en/plagiarism.php
lang/en/plugin.php
lang/en/portfolio.php
lang/en/role.php
lib/accesslib.php
lib/adminlib.php
lib/ajax/getnavbranch.php
lib/authlib.php
lib/badgeslib.php
lib/behat/behat_files.php
lib/behat/classes/behat_command.php
lib/behat/form_field/behat_form_select.php
lib/behat/lib.php
lib/blocklib.php
lib/classes/collator.php [new file with mode: 0644]
lib/classes/component.php
lib/classes/event/base.php [new file with mode: 0644]
lib/classes/event/manager.php [new file with mode: 0644]
lib/classes/event/role_assigned.php [new file with mode: 0644]
lib/classes/event/role_unassigned.php [new file with mode: 0644]
lib/classes/text.php [new file with mode: 0644]
lib/conditionlib.php
lib/coursecatlib.php
lib/cronlib.php
lib/csslib.php
lib/datalib.php
lib/db/access.php
lib/db/caches.php
lib/db/events.php
lib/db/install.php
lib/db/install.xml
lib/db/upgrade.php
lib/db/upgradelib.php
lib/ddl/mssql_sql_generator.php
lib/deprecatedlib.php
lib/dml/mariadb_native_moodle_database.php [new file with mode: 0644]
lib/dml/moodle_database.php
lib/dml/mssql_native_moodle_database.php
lib/dml/mysqli_native_moodle_database.php
lib/dml/oci_native_moodle_database.php
lib/dml/pdo_moodle_database.php
lib/dml/pgsql_native_moodle_database.php
lib/dml/sqlite3_pdo_moodle_database.php
lib/dml/sqlsrv_native_moodle_database.php
lib/dml/tests/dml_test.php
lib/dtl/file_xml_database_exporter.php
lib/editor/tinymce/adminlib.php
lib/editor/tinymce/all_strings.php
lib/editor/tinymce/classes/plugin.php
lib/editor/tinymce/db/upgrade.php
lib/editor/tinymce/lang/en/editor_tinymce.php
lib/editor/tinymce/lib.php
lib/editor/tinymce/plugins/dragmath/lib.php
lib/editor/tinymce/plugins/managefiles/lang/en/tinymce_managefiles.php [new file with mode: 0644]
lib/editor/tinymce/plugins/managefiles/lib.php [new file with mode: 0644]
lib/editor/tinymce/plugins/managefiles/manage.php [new file with mode: 0644]
lib/editor/tinymce/plugins/managefiles/manage_form.php [new file with mode: 0644]
lib/editor/tinymce/plugins/managefiles/module.js [new file with mode: 0644]
lib/editor/tinymce/plugins/managefiles/pix/icon.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/managefiles/styles.css [new file with mode: 0644]
lib/editor/tinymce/plugins/managefiles/tinymce/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/managefiles/tinymce/img/managefiles.png [new file with mode: 0644]
lib/editor/tinymce/plugins/managefiles/version.php [new file with mode: 0644]
lib/editor/tinymce/plugins/moodleemoticon/lib.php
lib/editor/tinymce/plugins/moodlemedia/lib.php
lib/editor/tinymce/plugins/moodlenolink/lib.php
lib/editor/tinymce/plugins/pdw/lang/en/tinymce_pdw.php [new file with mode: 0644]
lib/editor/tinymce/plugins/pdw/lib.php [new file with mode: 0644]
lib/editor/tinymce/plugins/pdw/pix/icon.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/pdw/readme_moodle.txt [new file with mode: 0644]
lib/editor/tinymce/plugins/pdw/tinymce/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/pdw/tinymce/editor_plugin_src.js [new file with mode: 0644]
lib/editor/tinymce/plugins/pdw/tinymce/img/toolbars.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/pdw/tinymce/langs/en.js [new file with mode: 0644]
lib/editor/tinymce/plugins/pdw/tinymce/langs/nl.js [new file with mode: 0644]
lib/editor/tinymce/plugins/pdw/version.php [new file with mode: 0644]
lib/editor/tinymce/plugins/spellchecker/config.php
lib/editor/tinymce/plugins/spellchecker/lib.php
lib/editor/tinymce/plugins/spellchecker/settings.php
lib/editor/tinymce/plugins/wrap/lang/en/tinymce_wrap.php [new file with mode: 0644]
lib/editor/tinymce/plugins/wrap/lib.php [new file with mode: 0644]
lib/editor/tinymce/plugins/wrap/tinymce/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/wrap/version.php [new file with mode: 0644]
lib/editor/tinymce/settings.php
lib/editor/tinymce/styles.css
lib/editor/tinymce/subplugins.php
lib/editor/tinymce/tests/editor_test.php
lib/editor/tinymce/upgrade.txt
lib/editor/tinymce/version.php
lib/editor/tinymce/yui/build/moodle-editor_tinymce-collapse/moodle-editor_tinymce-collapse-debug.js
lib/editor/tinymce/yui/build/moodle-editor_tinymce-collapse/moodle-editor_tinymce-collapse-min.js
lib/editor/tinymce/yui/build/moodle-editor_tinymce-collapse/moodle-editor_tinymce-collapse.js
lib/editor/tinymce/yui/src/collapse/js/collapse.js
lib/editorlib.php
lib/enrollib.php
lib/environmentlib.php
lib/eventslib.php
lib/externallib.php
lib/filebrowser/file_info_context_course.php
lib/filebrowser/file_info_context_coursecat.php
lib/filebrowser/file_info_context_module.php
lib/filelib.php
lib/filestorage/file_storage.php
lib/filterlib.php
lib/form/form.js
lib/formslib.php
lib/grade/grade_item.php
lib/gradelib.php
lib/grouplib.php
lib/html2text.php
lib/html2text_readme.txt
lib/installlib.php
lib/javascript.php
lib/jquery/jquery-1.10.2.js [moved from lib/jquery/jquery-1.9.1.js with 88% similarity]
lib/jquery/jquery-1.10.2.min.js [new file with mode: 0644]
lib/jquery/jquery-1.9.1.min.js [deleted file]
lib/jquery/jquery-migrate-1.1.1.min.js [deleted file]
lib/jquery/jquery-migrate-1.2.1.js [moved from lib/jquery/jquery-migrate-1.1.1.js with 91% similarity]
lib/jquery/jquery-migrate-1.2.1.min.js [new file with mode: 0644]
lib/jquery/plugins.php
lib/jquery/ui-1.10.2/css/base/jquery-ui.min.css [deleted file]
lib/jquery/ui-1.10.2/jquery-ui.min.js [deleted file]
lib/jquery/ui-1.10.3/css/base/images/animated-overlay.gif [moved from lib/jquery/ui-1.10.2/css/base/images/animated-overlay.gif with 100% similarity]
lib/jquery/ui-1.10.3/css/base/images/ui-bg_flat_0_aaaaaa_40x100.png [moved from lib/jquery/ui-1.10.2/css/base/images/ui-bg_flat_0_aaaaaa_40x100.png with 100% similarity]
lib/jquery/ui-1.10.3/css/base/images/ui-bg_flat_75_ffffff_40x100.png [moved from lib/jquery/ui-1.10.2/css/base/images/ui-bg_flat_75_ffffff_40x100.png with 100% similarity]
lib/jquery/ui-1.10.3/css/base/images/ui-bg_glass_55_fbf9ee_1x400.png [moved from lib/jquery/ui-1.10.2/css/base/images/ui-bg_glass_55_fbf9ee_1x400.png with 100% similarity]
lib/jquery/ui-1.10.3/css/base/images/ui-bg_glass_65_ffffff_1x400.png [moved from lib/jquery/ui-1.10.2/css/base/images/ui-bg_glass_65_ffffff_1x400.png with 100% similarity]
lib/jquery/ui-1.10.3/css/base/images/ui-bg_glass_75_dadada_1x400.png [moved from lib/jquery/ui-1.10.2/css/base/images/ui-bg_glass_75_dadada_1x400.png with 100% similarity]
lib/jquery/ui-1.10.3/css/base/images/ui-bg_glass_75_e6e6e6_1x400.png [moved from lib/jquery/ui-1.10.2/css/base/images/ui-bg_glass_75_e6e6e6_1x400.png with 100% similarity]
lib/jquery/ui-1.10.3/css/base/images/ui-bg_glass_95_fef1ec_1x400.png [moved from lib/jquery/ui-1.10.2/css/base/images/ui-bg_glass_95_fef1ec_1x400.png with 100% similarity]
lib/jquery/ui-1.10.3/css/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png [moved from lib/jquery/ui-1.10.2/css/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png with 100% similarity]
lib/jquery/ui-1.10.3/css/base/images/ui-icons_222222_256x240.png [moved from lib/jquery/ui-1.10.2/css/base/images/ui-icons_222222_256x240.png with 100% similarity]
lib/jquery/ui-1.10.3/css/base/images/ui-icons_2e83ff_256x240.png [moved from lib/jquery/ui-1.10.2/css/base/images/ui-icons_2e83ff_256x240.png with 100% similarity]
lib/jquery/ui-1.10.3/css/base/images/ui-icons_454545_256x240.png [moved from lib/jquery/ui-1.10.2/css/base/images/ui-icons_454545_256x240.png with 100% similarity]
lib/jquery/ui-1.10.3/css/base/images/ui-icons_888888_256x240.png [moved from lib/jquery/ui-1.10.2/css/base/images/ui-icons_888888_256x240.png with 100% similarity]
lib/jquery/ui-1.10.3/css/base/images/ui-icons_cd0a0a_256x240.png [moved from lib/jquery/ui-1.10.2/css/base/images/ui-icons_cd0a0a_256x240.png with 100% similarity]
lib/jquery/ui-1.10.3/css/base/jquery-ui.css [moved from lib/jquery/ui-1.10.2/css/base/jquery-ui.css with 99% similarity]
lib/jquery/ui-1.10.3/css/base/jquery-ui.min.css [new file with mode: 0644]
lib/jquery/ui-1.10.3/jquery-ui.js [moved from lib/jquery/ui-1.10.2/jquery-ui.js with 98% similarity]
lib/jquery/ui-1.10.3/jquery-ui.min.js [new file with mode: 0644]
lib/messagelib.php
lib/modinfolib.php
lib/moodlelib.php
lib/navigationlib.php
lib/outputcomponents.php
lib/outputfactories.php
lib/outputlib.php
lib/outputrenderers.php
lib/outputrequirementslib.php
lib/pagelib.php
lib/phpunit/bootstrap.php
lib/phpunit/classes/advanced_testcase.php
lib/phpunit/classes/autoloader.php [new file with mode: 0644]
lib/phpunit/classes/event_sink.php [new file with mode: 0644]
lib/phpunit/classes/util.php
lib/phpunit/lib.php
lib/phpunit/tests/advanced_test.php
lib/plagiarismlib.php
lib/pluginlib.php
lib/portfoliolib.php
lib/questionlib.php
lib/setup.php
lib/setuplib.php
lib/tablelib.php
lib/testing/classes/tests_finder.php
lib/testing/classes/util.php
lib/testing/generator/data_generator.php
lib/tests/accesslib_test.php
lib/tests/behat/behat_data_generators.php
lib/tests/behat/behat_forms.php
lib/tests/behat/behat_general.php
lib/tests/behat/behat_hooks.php
lib/tests/behat/behat_navigation.php
lib/tests/behat/behat_permissions.php
lib/tests/collator_test.php [new file with mode: 0644]
lib/tests/component_test.php
lib/tests/csslib_test.php
lib/tests/event_test.php [new file with mode: 0644]
lib/tests/eventslib_test.php
lib/tests/fixtures/event_fixtures.php [new file with mode: 0644]
lib/tests/fixtures/events.php
lib/tests/grouplib_test.php
lib/tests/html2text_test.php
lib/tests/moodlelib_test.php
lib/tests/setuplib_test.php
lib/tests/text_test.php [new file with mode: 0644]
lib/tests/textlib_test.php [deleted file]
lib/tests/weblib_test.php
lib/textlib.class.php
lib/thirdpartylibs.xml
lib/upgrade.txt
lib/upgradelib.php
lib/uploadlib.php
lib/weblib.php
lib/xhprof/readme_moodle.txt
lib/xhprof/xhprof_moodle.php
lib/xsendfilelib.php
lib/yui/build/moodle-core-dock-loader/moodle-core-dock-loader-debug.js [new file with mode: 0644]
lib/yui/build/moodle-core-dock-loader/moodle-core-dock-loader-min.js [new file with mode: 0644]
lib/yui/build/moodle-core-dock-loader/moodle-core-dock-loader.js [new file with mode: 0644]
lib/yui/build/moodle-core-dock/moodle-core-dock-debug.js [new file with mode: 0644]
lib/yui/build/moodle-core-dock/moodle-core-dock-min.js [new file with mode: 0644]
lib/yui/build/moodle-core-dock/moodle-core-dock.js [new file with mode: 0644]
lib/yui/build/moodle-core-tooltip/moodle-core-tooltip-debug.js
lib/yui/build/moodle-core-tooltip/moodle-core-tooltip-min.js
lib/yui/build/moodle-core-tooltip/moodle-core-tooltip.js
lib/yui/config/moodle.js [new file with mode: 0644]
lib/yui/config/yui2.js [new file with mode: 0644]
lib/yui/src/dock/build.json [new file with mode: 0644]
lib/yui/src/dock/js/actionkey.js [new file with mode: 0644]
lib/yui/src/dock/js/block.js [new file with mode: 0644]
lib/yui/src/dock/js/dock.js [new file with mode: 0644]
lib/yui/src/dock/js/dockeditem.js [new file with mode: 0644]
lib/yui/src/dock/js/loader.js [new file with mode: 0644]
lib/yui/src/dock/js/panel.js [new file with mode: 0644]
lib/yui/src/dock/js/tabheightmanager.js [new file with mode: 0644]
lib/yui/src/dock/meta/dock.json [new file with mode: 0644]
lib/yui/src/tooltip/meta/tooltip.json
local/readme.txt
login/index.php
login/index_form.html
login/token.php
message/tests/behat/behat_message.php
mnet/service/enrol/index.php
mnet/service/enrol/locallib.php
mnet/xmlrpc/serverlib.php
mod/assign/adminlib.php
mod/assign/adminmanageplugins.php
mod/assign/assignmentplugin.php
mod/assign/backup/moodle2/backup_assign_stepslib.php
mod/assign/batchsetmarkingworkflowstateform.php
mod/assign/db/upgrade.php
mod/assign/externallib.php
mod/assign/feedback/comments/db/upgrade.php
mod/assign/feedback/file/db/upgrade.php
mod/assign/feedback/file/importziplib.php
mod/assign/feedback/offline/locallib.php
mod/assign/gradingoptionsform.php
mod/assign/gradingtable.php
mod/assign/lang/en/assign.php
mod/assign/lib.php
mod/assign/locallib.php
mod/assign/module.js
mod/assign/renderable.php
mod/assign/renderer.php
mod/assign/settings.php
mod/assign/submission/comments/db/upgrade.php
mod/assign/submission/file/db/upgrade.php
mod/assign/submission/onlinetext/db/upgrade.php
mod/assign/submissionplugin.php
mod/assign/tests/base_test.php
mod/assign/tests/externallib_test.php
mod/assign/tests/locallib_test.php
mod/assign/upgrade.txt
mod/assign/version.php
mod/assignment/backup/moodle1/lib.php
mod/assignment/lib.php
mod/book/edit.php
mod/book/lib.php
mod/chat/gui_ajax/theme/bubble/chat.css
mod/chat/gui_sockets/index.php
mod/choice/tests/behat/behat_mod_choice.php
mod/data/db/upgrade.php
mod/data/field.php
mod/data/lib.php
mod/data/tests/search_test.php
mod/data/view.php
mod/feedback/delete_template.php
mod/feedback/edit.php
mod/feedback/edit_form.php
mod/feedback/import_form.php
mod/feedback/item/label/lib.php
mod/feedback/lib.php
mod/folder/lang/en/folder.php
mod/folder/renderer.php
mod/forum/lang/en/forum.php
mod/forum/lib.php
mod/forum/tests/behat/behat_mod_forum.php
mod/forum/tests/behat/completion_condition_number_discussions.feature
mod/forum/tests/behat/edit_post_student.feature
mod/forum/user.php
mod/glossary/lang/en/glossary.php
mod/glossary/print.php
mod/glossary/styles.css
mod/glossary/tests/behat/behat_mod_glossary.php
mod/glossary/tests/behat/print_friendly_version.feature
mod/glossary/view.php
mod/label/lib.php
mod/lesson/format.php
mod/lesson/lib.php
mod/lesson/locallib.php
mod/lesson/pagetypes/matching.php
mod/lesson/tests/behat/lesson_navigation.feature
mod/lti/db/access.php
mod/lti/lang/en/lti.php
mod/lti/lib.php
mod/lti/locallib.php
mod/lti/mod_form.js
mod/lti/mod_form.php
mod/lti/service.php
mod/page/lib.php
mod/quiz/accessmanager.php
mod/quiz/attemptlib.php
mod/quiz/db/upgrade.php
mod/quiz/lib.php
mod/quiz/locallib.php
mod/quiz/renderer.php
mod/quiz/report/attemptsreport_table.php
mod/quiz/report/overview/lang/en/quiz_overview.php
mod/quiz/report/overview/overview_form.php
mod/quiz/report/overview/report.php
mod/quiz/report/reportlib.php
mod/quiz/report/statistics/statistics_question_table.php
mod/quiz/startattempt.php
mod/quiz/styles.css
mod/quiz/tests/attempt_walkthrough_from_csv_test.php [new file with mode: 0644]
mod/quiz/tests/attempt_walkthrough_test.php [new file with mode: 0644]
mod/quiz/tests/attempts_test.php
mod/quiz/tests/fixtures/questions00.csv [new file with mode: 0644]
mod/quiz/tests/fixtures/results00.csv [new file with mode: 0644]
mod/quiz/tests/fixtures/steps00.csv [new file with mode: 0644]
mod/resource/lib.php
mod/scorm/lib.php
mod/scorm/locallib.php
mod/scorm/mod_form.php
mod/scorm/module.js
mod/scorm/player.php
mod/scorm/report/basic/report.php
mod/scorm/report/interactions/report.php
mod/scorm/report/objectives/lang/en/scormreport_objectives.php [new file with mode: 0644]
mod/scorm/report/objectives/report.php [new file with mode: 0644]
mod/scorm/report/objectives/responsessettings_form.php [new file with mode: 0644]
mod/scorm/report/objectives/version.php [new file with mode: 0644]
mod/scorm/report/reportlib.php
mod/url/lib.php
mod/wiki/lang/en/wiki.php
mod/wiki/locallib.php
mod/wiki/pagelib.php
mod/wiki/renderer.php
mod/wiki/styles.css
mod/workshop/allocation/manual/lib.php
mod/workshop/backup/moodle1/lib.php
mod/workshop/lib.php
mod/workshop/locallib.php
mod/workshop/settings.php
phpunit.xml.dist
pix/c/course.gif [deleted file]
pix/c/course.png [deleted file]
pix/c/course.svg [deleted file]
pix/c/group.gif [deleted file]
pix/c/group.png [deleted file]
pix/c/group.svg [deleted file]
pix/c/site.gif [deleted file]
pix/c/site.png [deleted file]
pix/c/site.svg [deleted file]
pix/c/user.gif [deleted file]
pix/c/user.png [deleted file]
pix/c/user.svg [deleted file]
pix/i/agg_mean.gif [deleted file]
pix/i/agg_sum.gif [deleted file]
pix/i/approve.gif [deleted file]
pix/i/approve.png [deleted file]
pix/i/approve.svg [deleted file]
pix/i/backup.gif [deleted file]
pix/i/calc.gif [deleted file]
pix/i/calendar.gif [deleted file]
pix/i/checkpermissions.gif [deleted file]
pix/i/cohort.gif [deleted file]
pix/i/configlock.gif [deleted file]
pix/i/course.gif [deleted file]
pix/i/cross_red_big.gif [deleted file]
pix/i/cross_red_big.png [deleted file]
pix/i/cross_red_big.svg [deleted file]
pix/i/cross_red_small.gif [deleted file]
pix/i/cross_red_small.png [deleted file]
pix/i/cross_red_small.svg [deleted file]
pix/i/db.gif [deleted file]
pix/i/edit.gif [deleted file]
pix/i/enrolmentsuspended.gif [deleted file]
pix/i/filter.gif [deleted file]
pix/i/grades.gif [deleted file]
pix/i/group.gif [deleted file]
pix/i/hide.gif [deleted file]
pix/i/hierarchylock.gif [deleted file]
pix/i/info.gif [deleted file]
pix/i/item.gif [deleted file]
pix/i/marked.gif [deleted file]
pix/i/marker.gif [deleted file]
pix/i/mnethost.gif [deleted file]
pix/i/move_2d.gif [deleted file]
pix/i/outcomes.gif [deleted file]
pix/i/permissionlock.gif [deleted file]
pix/i/permissions.gif [deleted file]
pix/i/reload.gif [deleted file]
pix/i/report.gif [deleted file]
pix/i/restore.gif [deleted file]
pix/i/return.gif [deleted file]
pix/i/risk_config.gif [deleted file]
pix/i/risk_dataloss.gif [deleted file]
pix/i/risk_managetrust.gif [deleted file]
pix/i/risk_personal.gif [deleted file]
pix/i/risk_spam.gif [deleted file]
pix/i/risk_xss.gif [deleted file]
pix/i/roles.gif [deleted file]
pix/i/roles.png [deleted file]
pix/i/roles.svg [deleted file]
pix/i/rss.gif [deleted file]
pix/i/scales.gif [deleted file]
pix/i/search.gif [deleted file]
pix/i/settings.gif [deleted file]
pix/i/show.gif [deleted file]
pix/i/tick_amber_big.gif [deleted file]
pix/i/tick_amber_big.png [deleted file]
pix/i/tick_amber_big.svg [deleted file]
pix/i/tick_amber_small.gif [deleted file]
pix/i/tick_amber_small.png [deleted file]
pix/i/tick_amber_small.svg [deleted file]
pix/i/tick_green_big.gif [deleted file]
pix/i/tick_green_big.png [deleted file]
pix/i/tick_green_big.svg [deleted file]
pix/i/tick_green_small.gif [deleted file]
pix/i/tick_green_small.png [deleted file]
pix/i/tick_green_small.svg [deleted file]
pix/i/user.gif [deleted file]
pix/i/users.gif [deleted file]
pix/t/add.gif [deleted file]
pix/t/addgreen.gif [deleted file]
pix/t/addgreen.png [deleted file]
pix/t/addgreen.svg [deleted file]
pix/t/backup.gif [deleted file]
pix/t/block.gif [deleted file]
pix/t/calc.gif [deleted file]
pix/t/calc_off.gif [deleted file]
pix/t/clear.gif [deleted file]
pix/t/clear.png [deleted file]
pix/t/clear.svg [deleted file]
pix/t/copy.gif [deleted file]
pix/t/delete.gif [deleted file]
pix/t/down.gif [deleted file]
pix/t/edit.gif [deleted file]
pix/t/email.gif [deleted file]
pix/t/emailno.gif [deleted file]
pix/t/go.gif [deleted file]
pix/t/grades.gif [deleted file]
pix/t/groupn.gif [deleted file]
pix/t/groups.gif [deleted file]
pix/t/groupv.gif [deleted file]
pix/t/hide.gif [deleted file]
pix/t/left.gif [deleted file]
pix/t/lock.gif [deleted file]
pix/t/locktime.gif [deleted file]
pix/t/manual_item.gif [deleted file]
pix/t/manual_item.png [deleted file]
pix/t/manual_item.svg [deleted file]
pix/t/message.gif [deleted file]
pix/t/move.gif [deleted file]
pix/t/portfolioadd.gif [deleted file]
pix/t/preview.gif [deleted file]
pix/t/restore.gif [deleted file]
pix/t/right.gif [deleted file]
pix/t/show.gif [deleted file]
pix/t/stop.gif [deleted file]
pix/t/switch_minus.gif [deleted file]
pix/t/switch_plus.gif [deleted file]
pix/t/switch_whole.gif [deleted file]
pix/t/unlock.gif [deleted file]
pix/t/unlock_gray.gif [deleted file]
pix/t/unlock_gray.png [deleted file]
pix/t/unlock_gray.svg [deleted file]
pix/t/up.gif [deleted file]
pix/t/user.gif [deleted file]
pix/t/userblue.gif [deleted file]
pix/t/userblue.png [deleted file]
pix/t/userblue.svg [deleted file]
pluginfile.php
portfolio/add.php
question/category_class.php
question/editlib.php
question/engine/bank.php
question/engine/lib.php
question/engine/questionusage.php
question/engine/tests/helpers.php
question/tests/behat/behat_question.php
question/type/calculatedmulti/question.php
question/type/calculatedsimple/tests/helper.php
question/type/calculatedsimple/tests/questiontype_test.php [new file with mode: 0644]
question/type/description/tests/helper.php
question/type/description/tests/questiontype_test.php
question/type/essay/question.php
question/type/essay/tests/question_test.php
question/type/match/question.php
question/type/match/tests/helper.php [new file with mode: 0644]
question/type/match/tests/questiontype_test.php
question/type/multianswer/question.php
question/type/multianswer/tests/helper.php
question/type/multianswer/tests/questiontype_test.php
question/type/multichoice/question.php
question/type/multichoice/styles.css
question/type/multichoice/tests/helper.php [new file with mode: 0644]
question/type/multichoice/tests/questiontype_test.php
question/type/numerical/tests/helper.php
question/type/numerical/tests/questiontype_test.php
question/type/questionbase.php
question/type/questiontypebase.php
question/type/random/questiontype.php
question/type/random/tests/helper.php [new file with mode: 0644]
question/type/random/tests/questiontype_test.php
question/type/shortanswer/db/upgrade.php
question/type/shortanswer/tests/helper.php
question/type/shortanswer/tests/questiontype_test.php
question/type/truefalse/tests/helper.php
question/type/truefalse/tests/questiontype_test.php
question/type/upgrade.txt
rating/lib.php
report/backups/index.php
report/log/locallib.php
report/participation/index.php
report/questioninstances/index.php
report/security/locallib.php
repository/areafiles/db/access.php [new file with mode: 0644]
repository/areafiles/db/install.php [moved from enrol/authorize/import_form.php with 58% similarity]
repository/areafiles/lang/en/repository_areafiles.php [new file with mode: 0644]
repository/areafiles/lib.php [new file with mode: 0644]
repository/areafiles/pix/icon.gif [new file with mode: 0644]
repository/areafiles/version.php [new file with mode: 0644]
repository/coursefiles/lib.php
repository/draftfiles_ajax.php
repository/filepicker.php
repository/filesystem/lang/en/repository_filesystem.php
repository/filesystem/lib.php
repository/flickr_public/lib.php
repository/googledocs/lib.php
repository/lib.php
repository/recent/tests/behat/behat_repository_recent.php
repository/repository_ajax.php
repository/skydrive/db/access.php [new file with mode: 0644]
repository/skydrive/db/caches.php [new file with mode: 0644]
repository/skydrive/lang/en/repository_skydrive.php [new file with mode: 0644]
repository/skydrive/lib.php [new file with mode: 0644]
repository/skydrive/microsoftliveapi.php [new file with mode: 0644]
repository/skydrive/pix/icon.png [new file with mode: 0644]
repository/skydrive/version.php [new file with mode: 0644]
repository/tests/behat/behat_filepicker.php
repository/tests/behat/cancel_add_file.feature
repository/tests/repository_test.php
repository/upgrade.txt
repository/upload/tests/behat/behat_repository_upload.php
rss/file.php
tag/coursetags_more.php
tag/coursetagslib.php
theme/afterburner/pix_core/i/assignroles.png [moved from theme/afterburner/pix_core/i/roles.png with 100% similarity]
theme/afterburner/pix_core/i/courseevent.png [moved from theme/afterburner/pix_core/c/course.png with 100% similarity]
theme/afterburner/pix_core/i/siteevent.png [moved from theme/afterburner/pix_core/c/site.png with 100% similarity]
theme/afterburner/pix_core/i/userevent.png [moved from theme/afterburner/pix_core/c/user.png with 100% similarity]
theme/afterburner/pix_core/t/add.png [moved from theme/afterburner/pix_core/t/addgreen.png with 100% similarity]
theme/afterburner/pix_core/t/check.png [moved from theme/afterburner/pix_core/t/clear.png with 100% similarity]
theme/afterburner/pix_core/t/userblue.png [deleted file]
theme/base/style/admin.css
theme/base/style/core.css
theme/bootstrapbase/layout/columns1.php
theme/bootstrapbase/layout/columns2.php
theme/bootstrapbase/layout/columns3.php
theme/bootstrapbase/less/moodle.less
theme/bootstrapbase/less/moodle/admin.less
theme/bootstrapbase/less/moodle/bootstrapoverride.less [new file with mode: 0644]
theme/bootstrapbase/less/moodle/core.less
theme/bootstrapbase/less/moodle/course.less
theme/bootstrapbase/less/moodle/expendable.less
theme/bootstrapbase/less/moodle/filemanager.less
theme/bootstrapbase/less/moodle/forms.less
theme/bootstrapbase/less/moodle/grade.less
theme/bootstrapbase/less/moodle/question.less
theme/bootstrapbase/less/moodle/responsive.less
theme/bootstrapbase/style/moodle.css
theme/boxxie/layout/frontpage.php
theme/boxxie/layout/general.php
theme/clean/layout/columns1.php
theme/clean/layout/columns2.php
theme/clean/layout/columns3.php
theme/font.php [new file with mode: 0644]
theme/formal_white/config.php
theme/formal_white/db/upgrade.php
theme/formal_white/lang/en/theme_formal_white.php
theme/formal_white/layout/embedded.php
theme/formal_white/layout/frontpage.php
theme/formal_white/layout/general.php
theme/formal_white/layout/report.php
theme/formal_white/lib.php
theme/formal_white/settings.php
theme/formal_white/style/block.css
theme/formal_white/style/calendar.css
theme/formal_white/style/course.css
theme/formal_white/style/formal_white.css
theme/formal_white/version.php
theme/formfactor/config.php
theme/formfactor/lang/en/theme_formfactor.php
theme/formfactor/layout/embedded.php
theme/formfactor/layout/frontpage.php
theme/formfactor/layout/general.php
theme/formfactor/style/blocks.css
theme/formfactor/style/core.css
theme/formfactor/style/course.css
theme/formfactor/style/editor.css
theme/formfactor/style/mods.css
theme/formfactor/style/pagelayout.css
theme/formfactor/style/selected.css
theme/image.php
theme/index.php
theme/javascript.php
theme/jquery.php
theme/mymobile/pix_core/i/courseevent.png [moved from theme/mymobile/pix_core/c/course.png with 100% similarity]
theme/mymobile/pix_core/i/cross_red_big.png [deleted file]
theme/mymobile/pix_core/i/cross_red_small.png [deleted file]
theme/mymobile/pix_core/i/groupevent.png [moved from theme/mymobile/pix_core/c/group.png with 100% similarity]
theme/mymobile/pix_core/i/siteevent.png [moved from theme/mymobile/pix_core/c/site.png with 100% similarity]
theme/mymobile/pix_core/i/userevent.png [moved from theme/mymobile/pix_core/c/user.png with 100% similarity]
theme/mymobile/pix_core/t/approve.png [moved from theme/mymobile/pix_core/i/approve.png with 100% similarity]
theme/mymobile/pix_core/t/check.png [moved from theme/mymobile/pix_core/t/clear.png with 100% similarity]
theme/mymobile/renderers.php
theme/mymobile/style/core.css
theme/styles.php
theme/styles_debug.php
theme/yui_combo.php
theme/yui_image.php
user/default/README.txt [deleted file]
user/default/f1.jpg [deleted file]
user/default/f2.jpg [deleted file]
user/edit.php
user/editadvanced.php
user/editadvanced_form.php
user/editlib.php
user/externallib.php
user/filters/lib.php
user/index.php
user/lib.php
user/messageselect.php
user/profile.php
user/profile/definelib.php
user/selector/lib.php
user/tests/externallib_test.php
version.php
webservice/amf/server.php
webservice/amf/simpleserver.php
webservice/externallib.php
webservice/soap/server.php
webservice/soap/simpleserver.php
webservice/tests/externallib_test.php
webservice/xmlrpc/server.php
webservice/xmlrpc/simpleserver.php

index f2017b9..2ad0a0e 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-    // Allows the admin to configure blocks (hide/show, delete and configure)
+    // Allows the admin to configure blocks (hide/show, uninstall and configure)
 
     require_once('../config.php');
     require_once($CFG->libdir.'/adminlib.php');
     $confirm  = optional_param('confirm', 0, PARAM_BOOL);
     $hide     = optional_param('hide', 0, PARAM_INT);
     $show     = optional_param('show', 0, PARAM_INT);
-    $delete   = optional_param('delete', 0, PARAM_INT);
     $unprotect = optional_param('unprotect', 0, PARAM_INT);
     $protect = optional_param('protect', 0, PARAM_INT);
 
 /// Print headings
 
     $strmanageblocks = get_string('manageblocks');
-    $strdelete = get_string('delete');
+    $struninstall = get_string('uninstallplugin', 'core_admin');
     $strversion = get_string('version');
     $strhide = get_string('hide');
     $strshow = get_string('show');
         admin_get_root(true, false);  // settings not required - only pages
     }
 
-    if (!empty($delete) && confirm_sesskey()) {
-        echo $OUTPUT->header();
-        echo $OUTPUT->heading($strmanageblocks);
-
-        if (!$block = blocks_get_record($delete)) {
-            print_error('blockdoesnotexist', 'error');
-        }
-
-        if (get_string_manager()->string_exists('pluginname', "block_$block->name")) {
-            $strblockname = get_string('pluginname', "block_$block->name");
-        } else {
-            $strblockname = $block->name;
-        }
-
-        if (!$confirm) {
-            echo $OUTPUT->confirm(get_string('blockdeleteconfirm', '', $strblockname), 'blocks.php?delete='.$block->id.'&confirm=1', 'blocks.php');
-            echo $OUTPUT->footer();
-            exit;
-
-        } else {
-            uninstall_plugin('block', $block->name);
-
-            $a = new stdClass();
-            $a->block = $strblockname;
-            $a->directory = $CFG->dirroot.'/blocks/'.$block->name;
-            notice(get_string('blockdeletefiles', '', $a), 'blocks.php');
-        }
-    }
-
     echo $OUTPUT->header();
     echo $OUTPUT->heading($strmanageblocks);
 
 
     $table = new flexible_table('admin-blocks-compatible');
 
-    $table->define_columns(array('name', 'instances', 'version', 'hideshow', 'undeletable', 'delete', 'settings'));
-    $table->define_headers(array($strname, $strcourses, $strversion, $strhide.'/'.$strshow, $strprotecthdr, $strdelete, $strsettings));
+    $table->define_columns(array('name', 'instances', 'version', 'hideshow', 'undeletable', 'uninstall', 'settings'));
+    $table->define_headers(array($strname, $strcourses, $strversion, $strhide.'/'.$strshow, $strprotecthdr, $struninstall, $strsettings));
     $table->define_baseurl($CFG->wwwroot.'/'.$CFG->admin.'/blocks.php');
     $table->set_attribute('class', 'admintable blockstable generaltable');
     $table->set_attribute('id', 'compatibleblockstable');
             }
         }
 
-        $delete = '<a href="blocks.php?delete='.$blockid.'&amp;sesskey='.sesskey().'">'.$strdelete.'</a>';
+        if ($uninstallurl = plugin_manager::instance()->get_uninstall_url('block_'.$blockname)) {
+            $uninstall = html_writer::link($uninstallurl, $struninstall);
+        } else {
+            $uninstall = '';
+        }
 
         $settings = ''; // By default, no configuration
         if ($blockobject and $blockobject->has_config()) {
             '<span'.$class.'>'.$version.'</span>',
             $visible,
             $undeletable,
-            $delete,
+            $uninstall,
             $settings
         );
         $table->add_data($row);
 
         $table = new flexible_table('admin-blocks-incompatible');
 
-        $table->define_columns(array('block', 'delete'));
-        $table->define_headers(array($strname, $strdelete));
+        $table->define_columns(array('block', 'uninstall'));
+        $table->define_headers(array($strname, $struninstall));
         $table->define_baseurl($CFG->wwwroot.'/'.$CFG->admin.'/blocks.php');
 
         $table->set_attribute('class', 'incompatibleblockstable generaltable');
         $table->setup();
 
         foreach ($incompatible as $block) {
+            if ($uninstallurl = plugin_manager::instance()->get_uninstall_url('block_'.$block->name)) {
+                $uninstall = html_writer::link($uninstallurl, $struninstall);
+            } else {
+                $uninstall = '';
+            }
             $table->add_data(array(
                 $block->name,
-                '<a href="blocks.php?delete='.$block->id.'&amp;sesskey='.sesskey().'">'.$strdelete.'</a>',
+                $uninstall,
             ));
         }
         $table->print_html();
diff --git a/admin/cli/alternative_component_cache.php b/admin/cli/alternative_component_cache.php
new file mode 100644 (file)
index 0000000..6b3d454
--- /dev/null
@@ -0,0 +1,111 @@
+<?php
+// 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/>.
+
+/**
+ * This hack is intended for clustered sites that do not want
+ * to use shared cachedir for component cache.
+ *
+ * This file needs to be called after any change in PHP files in dataroot,
+ * that is before upgrade and install.
+ *
+ * @package   core
+ * @copyright 2013 Petr Skoda (skodak)  {@link http://skodak.org}
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+
+define('CLI_SCRIPT', true);
+define('ABORT_AFTER_CONFIG', true); // We need just the values from config.php.
+define('CACHE_DISABLE_ALL', true); // This prevents reading of existing caches.
+define('IGNORE_COMPONENT_CACHE', true);
+
+require(__DIR__.'/../../config.php');
+require_once($CFG->libdir.'/clilib.php');
+
+// Now get cli options.
+list($options, $unrecognized) = cli_get_params(
+    array(
+        'file'    => false,
+        'rebuild' => false,
+        'print'   => false,
+        'help'    => false
+    ),
+    array(
+        'h' => 'help'
+    )
+);
+
+if ($unrecognized) {
+    $unrecognized = implode("\n  ", $unrecognized);
+    cli_error(get_string('cliunknowoption', 'admin', $unrecognized), 2);
+}
+
+if (!$options['rebuild'] and !$options['file'] and !$options['print']) {
+    $help =
+"Create alternative component cache file
+
+Options:
+-h, --help            Print out this help
+--rebuild             Rebuild \$CFG->alternative_component_cache file
+--file=filepath       Save component cache to file
+--print               Print component cache file content
+
+Example:
+\$ php admin/cli/rebuild_alternative_component_cache.php --rebuild
+";
+
+    echo $help;
+    exit(0);
+}
+
+error_reporting(E_ALL | E_STRICT);
+ini_set('display_errors', 1);
+
+$content = core_component::get_cache_content();
+
+if ($options['print']) {
+    echo $content;
+    exit(0);
+}
+
+if ($options['rebuild']) {
+    if (empty($CFG->alternative_component_cache)) {
+        fwrite(STDERR, 'config.php does not contain $CFG->alternative_component_cache setting');
+        fwrite(STDERR, "\n");
+        exit(2);
+    }
+    $target = $CFG->alternative_component_cache;
+} else {
+    $target = $options['file'];
+}
+
+if (!$target) {
+    fwrite(STDERR, "Invalid target file $target");
+    fwrite(STDERR, "\n");
+    exit(1);
+}
+
+$bytes = file_put_contents($target, $content);
+
+if (!$bytes) {
+    fwrite(STDERR, "Error writing to $target");
+    fwrite(STDERR, "\n");
+    exit(1);
+}
+
+// Success.
+echo "File $target was updated\n";
+exit(0);
index 684acb5..e8cffe0 100644 (file)
@@ -36,6 +36,12 @@ if (isset($_SERVER['REMOTE_ADDR'])) {
     exit(1);
 }
 
+// Force OPcache reset if used, we do not want any stale caches
+// when preparing test environment.
+if (function_exists('opcache_reset')) {
+    opcache_reset();
+}
+
 $help =
 "Command line Moodle installer, creates config.php and initializes database.
 Please note you must execute this script with the same uid as apache
@@ -133,6 +139,8 @@ define('CACHE_DISABLE_ALL', true);
 
 define('PHPUNIT_TEST', false);
 
+define('IGNORE_COMPONENT_CACHE', true);
+
 // Check that PHP is of a sufficient version
 if (version_compare(phpversion(), "5.3.3") < 0) {
     $phpversion = phpversion();
@@ -163,10 +171,10 @@ $CFG->admin                = array_pop($parts);
 ini_set('include_path', $CFG->libdir.'/pear' . PATH_SEPARATOR . ini_get('include_path'));
 
 require_once($CFG->libdir.'/classes/component.php');
+require_once($CFG->libdir.'/classes/text.php');
 require_once($CFG->libdir.'/installlib.php');
 require_once($CFG->libdir.'/clilib.php');
 require_once($CFG->libdir.'/setuplib.php');
-require_once($CFG->libdir.'/textlib.class.php');
 require_once($CFG->libdir.'/weblib.php');
 require_once($CFG->libdir.'/dmllib.php');
 require_once($CFG->libdir.'/moodlelib.php');
@@ -180,6 +188,7 @@ $CFG->target_release = $release;
 
 //Database types
 $databases = array('mysqli' => moodle_database::get_driver_instance('mysqli', 'native'),
+                   'mariadb'=> moodle_database::get_driver_instance('mariadb', 'native'),
                    'pgsql'  => moodle_database::get_driver_instance('pgsql',  'native'),
                    'oci'    => moodle_database::get_driver_instance('oci',    'native'),
                    'sqlsrv' => moodle_database::get_driver_instance('sqlsrv', 'native'), // MS SQL*Server PHP driver
@@ -386,8 +395,9 @@ if ($interactive) {
         cli_error(get_string('pathserrcreatedataroot', 'install', $a));
     }
 }
-$CFG->tempdir  = $CFG->dataroot.'/temp';
-$CFG->cachedir = $CFG->dataroot.'/cache';
+$CFG->tempdir       = $CFG->dataroot.'/temp';
+$CFG->cachedir      = $CFG->dataroot.'/cache';
+$CFG->localcachedir = $CFG->dataroot.'/localcache';
 
 // download required lang packs
 if ($CFG->lang !== 'en') {
index dfc7a42..7a4f288 100644 (file)
@@ -36,6 +36,12 @@ if (isset($_SERVER['REMOTE_ADDR'])) {
     exit(1);
 }
 
+// Force OPcache reset if used, we do not want any stale caches
+// when preparing test environment.
+if (function_exists('opcache_reset')) {
+    opcache_reset();
+}
+
 $help =
 "Advanced command line Moodle database installer.
 Please note you must execute this script with the same uid as apache.
index ca6ef6a..98e8726 100644 (file)
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
+// Force OPcache reset if used, we do not want any stale caches
+// when detecting if upgrade necessary or when running upgrade.
+if (function_exists('opcache_reset') and !isset($_SERVER['REMOTE_ADDR'])) {
+    opcache_reset();
+}
+
 define('CLI_SCRIPT', true);
 define('CACHE_DISABLE_ALL', true);
 
index fddcdda..7ea15e8 100644 (file)
@@ -28,7 +28,6 @@ require_once($CFG->libdir.'/pluginlib.php');
 
 $action  = required_param('action', PARAM_ALPHANUMEXT);
 $formatname   = required_param('format', PARAM_PLUGIN);
-$confirm = optional_param('confirm', 0, PARAM_BOOL);
 
 $syscontext = context_system::instance();
 $PAGE->set_url('/admin/courseformats.php');
@@ -79,52 +78,5 @@ switch ($action) {
             set_config('format_plugins_sortorder', implode(',', $seq));
         }
         break;
-    case 'uninstall':
-        echo $OUTPUT->header();
-        echo $OUTPUT->heading(get_string('courseformats', 'moodle'));
-
-        $coursecount = $DB->count_records('course', array('format' => $formatname));
-        if ($coursecount) {
-            // Check that default format is set. It will be used to convert courses
-            // using this format
-            $defaultformat = get_config('moodlecourse', 'format');
-            $defaultformat = $formatplugins[get_config('moodlecourse', 'format')];
-            if (!$defaultformat) {
-                echo $OUTPUT->error_text(get_string('defaultformatnotset', 'admin'));
-                echo $OUTPUT->footer();
-                exit;
-            }
-        }
-
-        $format = $formatplugins[$formatname];
-        $deleteurl = $format->get_uninstall_url();
-        if (!$deleteurl) {
-            // somebody was trying to cheat and type non-existing link
-            echo $OUTPUT->error_text(get_string('cannotuninstall', 'admin', $format->displayname));
-            echo $OUTPUT->footer();
-            exit;
-        }
-
-        if (!$confirm) {
-            if ($coursecount) {
-                $message = get_string('formatuninstallwithcourses', 'admin',
-                        (object)array('count' => $coursecount, 'format' => $format->displayname,
-                            'defaultformat' => $defaultformat->displayname));
-            } else {
-                $message = get_string('formatuninstallconfirm', 'admin', $format->displayname);
-            }
-            $deleteurl->param('confirm', 1);
-            echo $OUTPUT->confirm($message, $deleteurl, $return);
-        } else {
-            $a = new stdClass();
-            $a->plugin = $format->displayname;
-            $a->directory = $format->rootdir;
-            uninstall_plugin('format', $formatname);
-            echo $OUTPUT->notification(get_string('formatuninstalled', 'admin', $a), 'notifysuccess');
-            echo $OUTPUT->continue_button($return);
-        }
-
-        echo $OUTPUT->footer();
-        exit;
 }
 redirect($return);
index f6e68ff..da846fa 100644 (file)
@@ -83,47 +83,6 @@ switch ($action) {
         }
         break;
 
-    case 'uninstall':
-        if ($editor === 'textarea') {
-            redirect($returnurl);
-        }
-        if (get_string_manager()->string_exists('pluginname', 'editor_'.$editor)) {
-            $strplugin = get_string('pluginname', 'editor_'.$editor);
-        } else {
-            $strplugin = $editor;
-        }
-
-        $PAGE->set_title($strplugin);
-        echo $OUTPUT->header();
-
-        if (!$confirm) {
-            echo $OUTPUT->heading(get_string('editors', 'core_editor'));
-
-            $deleteurl = new moodle_url('/admin/editors.php', array('action'=>'uninstall', 'editor'=>$editor, 'sesskey'=>sesskey(), 'confirm'=>1));
-
-            echo $OUTPUT->confirm(get_string('editordeleteconfirm', 'core_editor', $strplugin),
-                $deleteurl, $returnurl);
-            echo $OUTPUT->footer();
-            die();
-
-        } else {
-            // Remove from enabled list.
-            $key = array_search($editor, $active_editors);
-            unset($active_editors[$key]);
-            set_config('texteditors', implode(',', $active_editors));
-
-            // Delete everything!!
-            uninstall_plugin('editor', $editor);
-
-            $a = new stdClass();
-            $a->name = $strplugin;
-            $a->directory = "$CFG->dirroot/lib/editor/$editor";
-            echo $OUTPUT->notification(get_string('plugindeletefiles', '', $a), 'notifysuccess');
-            echo $OUTPUT->continue_button($returnurl);
-            echo $OUTPUT->footer();
-            die();
-        }
-
     default:
         break;
 }
index 10062a1..59f77c5 100644 (file)
@@ -31,7 +31,6 @@ require_once($CFG->libdir.'/adminlib.php');
 $action  = required_param('action', PARAM_ALPHANUMEXT);
 $enrol   = required_param('enrol', PARAM_PLUGIN);
 $confirm = optional_param('confirm', 0, PARAM_BOOL);
-$migrate = optional_param('migrate', 0, PARAM_BOOL);
 
 $PAGE->set_url('/admin/enrol.php');
 $PAGE->set_context(context_system::instance());
@@ -96,7 +95,7 @@ switch ($action) {
         set_config('enrol_plugins_enabled', implode(',', $enabled));
         break;
 
-    case 'uninstall':
+    case 'migrate':
         if (get_string_manager()->string_exists('pluginname', 'enrol_'.$enrol)) {
             $strplugin = get_string('pluginname', 'enrol_'.$enrol);
         } else {
@@ -106,58 +105,26 @@ switch ($action) {
         $PAGE->set_title($strplugin);
         echo $OUTPUT->header();
 
-        if (!$confirm) {
-            echo $OUTPUT->heading(get_string('enrolments', 'enrol'));
+        // This may take a long time.
+        set_time_limit(0);
 
-            $deleteurl = new moodle_url('/admin/enrol.php', array('action'=>'uninstall', 'enrol'=>$enrol, 'sesskey'=>sesskey(), 'confirm'=>1, 'migrate'=>0));
-            $migrateurl = new moodle_url('/admin/enrol.php', array('action'=>'uninstall', 'enrol'=>$enrol, 'sesskey'=>sesskey(), 'confirm'=>1, 'migrate'=>1));
-
-            $migrate = new single_button($migrateurl, get_string('uninstallmigrate', 'enrol'));
-            $delete = new single_button($deleteurl, get_string('uninstalldelete', 'enrol'));
-            $cancel = new single_button($return, get_string('cancel'), 'get');
-
-            $buttons = $OUTPUT->render($delete) . $OUTPUT->render($cancel);
-            if ($enrol !== 'manual') {
-                $buttons = $OUTPUT->render($migrate) . $buttons;
-            }
-
-            echo $OUTPUT->box_start('generalbox', 'notice');
-            echo html_writer::tag('p', markdown_to_html(get_string('uninstallconfirm', 'enrol', $strplugin)));
-            echo html_writer::tag('div', $buttons, array('class' => 'buttons'));
-            echo $OUTPUT->box_end();
-
-            echo $OUTPUT->footer();
-            exit;
-
-        } else {
-            // This may take a long time.
-            set_time_limit(0);
-
-            // Disable plugin to prevent concurrent cron execution.
-            unset($enabled[$enrol]);
-            set_config('enrol_plugins_enabled', implode(',', array_keys($enabled)));
-
-            if ($migrate) {
-                echo $OUTPUT->heading(get_string('uninstallmigrating', 'enrol', 'enrol_'.$enrol));
+        // Disable plugin to prevent concurrent cron execution.
+        unset($enabled[$enrol]);
+        set_config('enrol_plugins_enabled', implode(',', array_keys($enabled)));
 
-                require_once("$CFG->dirroot/enrol/manual/locallib.php");
-                enrol_manual_migrate_plugin_enrolments($enrol);
+        echo $OUTPUT->heading(get_string('uninstallmigrating', 'enrol', 'enrol_'.$enrol));
 
-                echo $OUTPUT->notification(get_string('success'), 'notifysuccess');
-            }
+        require_once("$CFG->dirroot/enrol/manual/locallib.php");
+        enrol_manual_migrate_plugin_enrolments($enrol);
 
-            // Delete everything!!
-            uninstall_plugin('enrol', $enrol);
-            $syscontext->mark_dirty(); // Resets all enrol caches.
+        echo $OUTPUT->notification(get_string('success'), 'notifysuccess');
 
-            $a = new stdClass();
-            $a->plugin = $strplugin;
-            $a->directory = "$CFG->dirroot/enrol/$enrol";
-            echo $OUTPUT->notification(get_string('uninstalldeletefiles', 'enrol', $a), 'notifysuccess');
-            echo $OUTPUT->continue_button($return);
-            echo $OUTPUT->footer();
-            exit;
+        if (!$return = plugin_manager::instance()->get_uninstall_url('enrol_'.$enrol)) {
+            $return = new moodle_url('/admin/plugins.php');
         }
+        echo $OUTPUT->continue_button($return);
+        echo $OUTPUT->footer();
+        exit;
 }
 
 
index 61af243..5fac54c 100644 (file)
       </PHP_SETTING>
     </PHP_SETTINGS>
   </MOODLE>
+  <MOODLE version="2.6" requires="2.2">
+    <UNICODE level="required">
+      <FEEDBACK>
+        <ON_ERROR message="unicoderequired" />
+      </FEEDBACK>
+    </UNICODE>
+    <DATABASE level="required">
+      <VENDOR name="mariadb" version="5.3.5" />
+      <VENDOR name="mysql" version="5.1.33" />
+      <VENDOR name="postgres" version="8.3" />
+      <VENDOR name="mssql" version="9.0" />
+      <VENDOR name="oracle" version="10.2" />
+    </DATABASE>
+    <PHP version="5.3.3" level="required">
+    </PHP>
+    <PCREUNICODE level="optional">
+      <FEEDBACK>
+        <ON_CHECK message="pcreunicodewarning" />
+      </FEEDBACK>
+    </PCREUNICODE>
+    <PHP_EXTENSIONS>
+      <PHP_EXTENSION name="iconv" level="required">
+        <FEEDBACK>
+          <ON_ERROR message="iconvrequired" />
+        </FEEDBACK>
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="mbstring" level="optional">
+        <FEEDBACK>
+          <ON_CHECK message="mbstringrecommended" />
+        </FEEDBACK>
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="curl" level="required">
+        <FEEDBACK>
+          <ON_ERROR message="curlrequired" />
+        </FEEDBACK>
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="openssl" level="optional">
+        <FEEDBACK>
+          <ON_CHECK message="opensslrecommended" />
+        </FEEDBACK>
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="tokenizer" level="optional">
+        <FEEDBACK>
+          <ON_CHECK message="tokenizerrecommended" />
+        </FEEDBACK>
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="xmlrpc" level="optional">
+        <FEEDBACK>
+          <ON_CHECK message="xmlrpcrecommended" />
+        </FEEDBACK>
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="soap" level="optional">
+        <FEEDBACK>
+          <ON_CHECK message="soaprecommended" />
+        </FEEDBACK>
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="ctype" level="required">
+        <FEEDBACK>
+          <ON_ERROR message="ctyperequired" />
+        </FEEDBACK>
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="zip" level="required">
+        <FEEDBACK>
+          <ON_ERROR message="ziprequired" />
+        </FEEDBACK>
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="zlib" level="optional">
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="gd" level="required">
+        <FEEDBACK>
+          <ON_ERROR message="gdrequired" />
+        </FEEDBACK>
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="simplexml" level="required">
+        <FEEDBACK>
+          <ON_ERROR message="simplexmlrequired" />
+        </FEEDBACK>
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="spl" level="required">
+        <FEEDBACK>
+          <ON_ERROR message="splrequired" />
+        </FEEDBACK>
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="pcre" level="required">
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="dom" level="required">
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="xml" level="required">
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="intl" level="optional">
+        <FEEDBACK>
+          <ON_CHECK message="intlrecommended" />
+        </FEEDBACK>
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="json" level="required">
+      </PHP_EXTENSION>
+      <PHP_EXTENSION name="hash" level="required"/>
+    </PHP_EXTENSIONS>
+    <PHP_SETTINGS>
+      <PHP_SETTING name="memory_limit" value="64M" level="required">
+        <FEEDBACK>
+          <ON_ERROR message="settingmemorylimit" />
+        </FEEDBACK>
+      </PHP_SETTING>
+      <PHP_SETTING name="safe_mode" value="0" level="optional">
+        <FEEDBACK>
+          <ON_CHECK message="settingsafemode" />
+        </FEEDBACK>
+      </PHP_SETTING>
+      <PHP_SETTING name="file_uploads" value="1" level="optional">
+        <FEEDBACK>
+          <ON_CHECK message="settingfileuploads" />
+        </FEEDBACK>
+      </PHP_SETTING>
+    </PHP_SETTINGS>
+  </MOODLE>
 </COMPATIBILITY_MATRIX>
index bfd76c1..36cc0e3 100644 (file)
@@ -39,10 +39,11 @@ while(!feof($fd)) {
     $action = clam_handle_infected_file($file,$log->userid,true);
     clam_replace_infected_file($file);
 
-    list($ctxselect, $ctxjoin) = context_instance_preload_sql('c.id', CONTEXT_COURSE, 'ctx');
+    $ctxselect = ', ' . context_helper::get_preload_record_columns_sql('ctx');
+    $ctxjoin = "LEFT JOIN {context} ctx ON (ctx.instanceid = c.id AND ctx.contextlevel = :contextlevel)";
     $sql = "SELECT c.id, c.fullname $ctxselect FROM {course} c $ctxjoin WHERE c.id = :courseid";
-    $course = $DB->get_record_sql($sql, array('courseid' => $log->course));
-    context_instance_preload($course);
+    $course = $DB->get_record_sql($sql, array('courseid' => $log->course, 'contextlevel' => CONTEXT_COURSE));
+    context_helper::preload_from_record($course);
 
     $user = $DB->get_record("user", array("id"=>$log->userid));
     $subject = get_string('virusfoundsubject','moodle',format_string($site->fullname));
index c54e838..1e9e810 100644 (file)
@@ -47,11 +47,18 @@ if (!function_exists('iconv')) {
 
 define('NO_OUTPUT_BUFFERING', true);
 
-if (empty($_GET['cache']) and empty($_POST['cache'])) {
+if (empty($_GET['cache']) and empty($_POST['cache']) and empty($_GET['sesskey']) and empty($_POST['sesskey'])) {
     // Prevent caching at all cost when visiting this page directly,
     // we redirect to self once we known no upgrades are necessary.
     // Note: $_GET and $_POST are used here intentionally because our param cleaning is not loaded yet.
+    // Note2: the sesskey is present in all block editing hacks, we can not redirect there, so enable caching.
     define('CACHE_DISABLE_ALL', true);
+
+    // Force OPcache reset if used, we do not want any stale caches
+    // when detecting if upgrade necessary or when running upgrade.
+    if (function_exists('opcache_reset')) {
+        opcache_reset();
+    }
 }
 
 require('../config.php');
@@ -443,7 +450,7 @@ if (during_initial_install()) {
 
 // Now we can be sure everything was upgraded and caches work fine,
 // redirect if necessary to make sure caching is enabled.
-if (!$cache) {
+if (!$cache and !optional_param('sesskey', '', PARAM_RAW)) {
     redirect(new moodle_url($PAGE->url, array('cache' => 1)));
 }
 
index cd2f26e..145f65a 100644 (file)
@@ -33,55 +33,21 @@ require_once($CFG->libdir.'/tablelib.php');
 
 admin_externalpage_setup('managelocalplugins');
 
-$delete  = optional_param('delete', '', PARAM_PLUGIN);
-$confirm = optional_param('confirm', '', PARAM_BOOL);
-
-/// If data submitted, then process and store.
-
-if (!empty($delete) and confirm_sesskey()) {
-    echo $OUTPUT->header();
-    echo $OUTPUT->heading(get_string('localplugins'));
-
-    if (!$confirm) {
-        if (get_string_manager()->string_exists('pluginname', 'local_' . $delete)) {
-            $strpluginname = get_string('pluginname', 'local_' . $delete);
-        } else {
-            $strpluginname = $delete;
-        }
-        echo $OUTPUT->confirm(get_string('localplugindeleteconfirm', '', $strpluginname),
-                                new moodle_url($PAGE->url, array('delete' => $delete, 'confirm' => 1)),
-                                $PAGE->url);
-        echo $OUTPUT->footer();
-        die();
-
-    } else {
-        uninstall_plugin('local', $delete);
-        $a = new stdclass();
-        $a->name = $delete;
-        $pluginlocation = get_plugin_types();
-        $a->directory = $pluginlocation['local'] . '/' . $delete;
-        echo $OUTPUT->notification(get_string('plugindeletefiles', '', $a), 'notifysuccess');
-        echo $OUTPUT->continue_button($PAGE->url);
-        echo $OUTPUT->footer();
-        die();
-    }
-}
-
 echo $OUTPUT->header();
 echo $OUTPUT->heading(get_string('localplugins'));
 
 /// Print the table of all installed local plugins
 
 $table = new flexible_table('localplugins_administration_table');
-$table->define_columns(array('name', 'version', 'delete'));
-$table->define_headers(array(get_string('plugin'), get_string('version'), get_string('delete')));
+$table->define_columns(array('name', 'version', 'uninstall'));
+$table->define_headers(array(get_string('plugin'), get_string('version'), get_string('uninstallplugin', 'core_admin')));
 $table->define_baseurl($PAGE->url);
 $table->set_attribute('id', 'localplugins');
 $table->set_attribute('class', 'admintable generaltable');
 $table->setup();
 
 $plugins = array();
-foreach (get_plugin_list('local') as $plugin => $plugindir) {
+foreach (core_component::get_plugin_list('local') as $plugin => $plugindir) {
     if (get_string_manager()->string_exists('pluginname', 'local_' . $plugin)) {
         $strpluginname = get_string('pluginname', 'local_' . $plugin);
     } else {
@@ -92,8 +58,10 @@ foreach (get_plugin_list('local') as $plugin => $plugindir) {
 collatorlib::asort($plugins);
 
 foreach ($plugins as $plugin => $name) {
-    $delete = new moodle_url($PAGE->url, array('delete' => $plugin, 'sesskey' => sesskey()));
-    $delete = html_writer::link($delete, get_string('delete'));
+    $uninstall = '';
+    if ($uninstallurl = plugin_manager::instance()->get_uninstall_url('local_'.$plugin)) {
+        $uninstall = html_writer::link($uninstallurl, get_string('uninstallplugin', 'core_admin'));
+    }
 
     $version = get_config('local_' . $plugin);
     if (!empty($version->version)) {
@@ -102,7 +70,7 @@ foreach ($plugins as $plugin => $name) {
         $version = '?';
     }
 
-    $table->add_data(array($name, $version, $delete));
+    $table->add_data(array($name, $version, $uninstall));
 }
 
 $table->print_html();
index 1ff7293..ce1c1c0 100644 (file)
@@ -95,7 +95,7 @@ class mnet_review_host_form extends moodleform {
         $mform->addRule('wwwroot', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
 
         $themes = array('' => get_string('forceno'));
-        foreach (array_keys(get_plugin_list('theme')) as $themename) {
+        foreach (array_keys(core_component::get_plugin_list('theme')) as $themename) {
             $themes[$themename] = get_string('pluginname', 'theme_'.$themename);
         }
         $mform->addElement('select', 'theme', get_string('forcetheme'), $themes);
index 33d2fbb..8eab4bc 100644 (file)
 
     $show    = optional_param('show', '', PARAM_PLUGIN);
     $hide    = optional_param('hide', '', PARAM_PLUGIN);
-    $delete  = optional_param('delete', '', PARAM_PLUGIN);
-    $confirm = optional_param('confirm', '', PARAM_BOOL);
 
 
 /// Print headings
 
     $stractivities = get_string("activities");
-    $strdelete = get_string("delete");
+    $struninstall = get_string('uninstallplugin', 'core_admin');
     $strversion = get_string("version");
     $strhide = get_string("hide");
     $strshow = get_string("show");
@@ -46,7 +44,7 @@
                  WHERE module=?";
         $DB->execute($sql, array($module->id));
         // clear the course modinfo cache for courses
-        // where we just deleted something
+        // where we just uninstalld something
         $sql = "UPDATE {course}
                    SET modinfo=''
                  WHERE id IN (SELECT DISTINCT course
         admin_get_root(true, false);  // settings not required - only pages
     }
 
-    if (!empty($delete) and confirm_sesskey()) {
-        echo $OUTPUT->header();
-        echo $OUTPUT->heading($stractivities);
-
-        if (get_string_manager()->string_exists('modulename', $delete)) {
-            $strmodulename = get_string('modulename', $delete);
-        } else {
-            $strmodulename = $delete;
-        }
-
-        if (!$confirm) {
-            echo $OUTPUT->confirm(get_string("moduledeleteconfirm", "", $strmodulename), "modules.php?delete=$delete&confirm=1", "modules.php");
-            echo $OUTPUT->footer();
-            exit;
-
-        } else {  // Delete everything!!
-
-            if ($delete == "forum") {
-                print_error("cannotdeleteforummodule", 'forum');
-            }
-
-            uninstall_plugin('mod', $delete);
-            $a = new stdClass();
-            $a->module = $strmodulename;
-            $a->directory = "$CFG->dirroot/mod/$delete";
-            echo $OUTPUT->notification(get_string("moduledeletefiles", "", $a), 'notifysuccess');
-            echo $OUTPUT->continue_button("modules.php");
-            echo $OUTPUT->footer();
-            exit;
-        }
-    }
-
     echo $OUTPUT->header();
     echo $OUTPUT->heading($stractivities);
 
 /// Print the table of all modules
     // construct the flexible table ready to display
     $table = new flexible_table(MODULE_TABLE);
-    $table->define_columns(array('name', 'instances', 'version', 'hideshow', 'delete', 'settings'));
-    $table->define_headers(array($stractivitymodule, $stractivities, $strversion, "$strhide/$strshow", $strdelete, $strsettings));
+    $table->define_columns(array('name', 'instances', 'version', 'hideshow', 'uninstall', 'settings'));
+    $table->define_headers(array($stractivitymodule, $stractivities, $strversion, "$strhide/$strshow", $struninstall, $strsettings));
     $table->define_baseurl($CFG->wwwroot.'/'.$CFG->admin.'/modules.php');
     $table->set_attribute('id', 'modules');
     $table->set_attribute('class', 'generaltable');
             $missing = false;
         }
 
-        $delete = "<a href=\"modules.php?delete=$module->name&amp;sesskey=".sesskey()."\">$strdelete</a>";
+        $uninstall = '';
+        if ($uninstallurl = plugin_manager::instance()->get_uninstall_url('mod_'.$module->name)) {
+            $uninstall = html_writer::link($uninstallurl, $struninstall);
+        }
 
         if (file_exists("$CFG->dirroot/mod/$module->name/settings.php") ||
                 file_exists("$CFG->dirroot/mod/$module->name/settingstree.php")) {
             $class =   ' class="dimmed_text"';
         }
         if ($module->name == "forum") {
-            $delete = "";
+            $uninstall = "";
             $visible = "";
             $class = "";
         }
             $countlink,
             '<span'.$class.'>'.$module->version.'</span>',
             $visible,
-            $delete,
+            $uninstall,
             $settings
         ));
     }
diff --git a/admin/oacleanup.php b/admin/oacleanup.php
deleted file mode 100644 (file)
index a27aff9..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-<?php
-
-if (!isset($CFG)) {
-
-    require('../config.php');
-    require_once($CFG->libdir.'/adminlib.php');
-
-    admin_externalpage_setup('oacleanup');
-
-    echo $OUTPUT->header();
-    online_assignment_cleanup(true);
-    echo $OUTPUT->footer();
-
-}
-
-
-
-function online_assignment_cleanup($output=false) {
-    global $CFG, $DB, $OUTPUT;
-
-    if ($output) {
-        echo $OUTPUT->heading('Online Assignment Cleanup');
-        echo '<center>';
-    }
-
-
-    /// We don't want to run this code if we are doing an upgrade from an assignment
-    /// version earlier than 2005041400
-    /// because the assignment type field will not exist
-    $amv = $DB->get_field('modules', 'version', array('name'=>'assignment'));
-    if ((int)$amv < 2005041400) {
-        if ($output) {
-            echo '</center>';
-        }
-        return;
-    }
-
-
-    /// get the module id for assignments from db
-    $arecord = $DB->get_record('modules', array('name', 'assignment'));
-    $aid = $arecord->id;
-
-
-    /// get a list of all courses on this site
-    list($ctxselect, $ctxjoin) = context_instance_preload_sql('c.id', CONTEXT_COURSE, 'ctx');
-    $sql = "SELECT c.* $ctxselect FROM {course} c $ctxjoin";
-    $courses = $DB->get_records_sql($sql);
-
-    /// cycle through each course
-    foreach ($courses as $course) {
-        context_instance_preload($course);
-        $context = context_course::instance($course->id);
-
-        if (empty($course->fullname)) {
-            $fullname = get_string('course').': '.$course->id;
-        } else {
-            $fullname = format_string($course->fullname, true, array('context' => $context));
-        }
-        if ($output) echo $OUTPUT->heading($fullname);
-
-        /// retrieve a list of sections beyond what is currently being shown
-        $courseformatoptions = course_get_format($course)->get_format_options();
-        if (!isset($courseformatoptions['numsections'])) {
-            // Course format does not use numsections
-            if ($output) {
-                echo 'No extra sections<br />';
-            }
-            continue;
-        }
-        $sql = "SELECT *
-                  FROM {course_sections}
-                 WHERE course=? AND section>?
-              ORDER BY section ASC";
-        $params = array($course->id, $courseformatoptions['numsections']);
-        if (!($xsections = $DB->get_records_sql($sql, $params))) {
-            if ($output) echo 'No extra sections<br />';
-            continue;
-        }
-
-        /// cycle through each of the xtra sections
-        foreach ($xsections as $xsection) {
-
-            if ($output) echo 'Checking Section: '.$xsection->section.'<br />';
-
-            /// grab any module instances from the sequence field
-            if (!empty($xsection->sequence)) {
-                $instances = explode(',', $xsection->sequence);
-
-                /// cycle through the instances
-                foreach ($instances as $instance) {
-                    /// is this an instance of an online assignment
-                    $sql = "SELECT a.id
-                              FROM  {course_modules} cm, {assignment} a
-                             WHERE cm.id = ? AND cm.module = ? AND
-                                   cm.instance = a.id AND a.assignmenttype = 'online'";
-                    $params = array($instance, $aid);
-
-                    /// if record exists then we need to move instance to it's correct section
-                    if ($DB->record_exists_sql($sql, $params)) {
-
-                        /// check the new section id
-                        /// the journal update erroneously stored it in course_sections->section
-                        $newsection = $xsection->section;
-                        /// double check the new section
-                        if ($newsection > $courseformatoptions['numsections']) {
-                            /// get the record for section 0 for this course
-                            if (!($zerosection = $DB->get_record('course_sections', array('course'=>$course->id, 'section'=>'0')))) {
-                                continue;
-                            }
-                            $newsection = $zerosection->id;
-                        }
-
-                        /// grab the section record
-                        if (!($section = $DB->get_record('course_sections', array('id'=>$newsection)))) {
-                            if ($output) {
-                                echo 'Serious error: Cannot retrieve section: '.$newsection.' for course: '. $fullname .'<br />';
-                            }
-                            continue;
-                        }
-
-                        /// explode the sequence
-                        if  (($sequence = explode(',', $section->sequence)) === false) {
-                            $sequence = array();
-                        }
-
-                        /// add instance to correct section
-                        array_push($sequence, $instance);
-
-                        /// implode the sequence
-                        $section->sequence = implode(',', $sequence);
-
-                        $DB->set_field('course_sections', 'sequence', $section->sequence, array('id'=>$section->id));
-
-                        /// now we need to remove the instance from the old sequence
-
-                        /// grab the old section record
-                        if (!($section = $DB->get_record('course_sections', array('id'=>$xsection->id)))) {
-                            if ($output) echo 'Serious error: Cannot retrieve old section: '.$xsection->id.' for course: '.$fullname.'<br />';
-                            continue;
-                        }
-
-                        /// explode the sequence
-                        if  (($sequence = explode(',', $section->sequence)) === false) {
-                            $sequence = array();
-                        }
-
-                        /// remove the old value from the array
-                        $key = array_search($instance, $sequence);
-                        unset($sequence[$key]);
-
-                        /// implode the sequence
-                        $section->sequence = implode(',', $sequence);
-
-                        $DB->set_field('course_sections', 'sequence', $section->sequence, array('id'=>$section->id));
-
-
-                        if ($output) echo 'Online Assignment (instance '.$instance.') moved from section '.$section->id.': to section '.$newsection.'<br />';
-
-                    }
-                }
-            }
-
-            /// if the summary and sequence are empty then remove this section
-            if (empty($xsection->summary) and empty($xsection->sequence)) {
-                $DB->delete_records('course_sections', array('id'=>$xsection->id));
-                if ($output) echo 'Deleting empty section '.$xsection->section.'<br />';
-            }
-        }
-    }
-
-    echo '</center>';
-}
-
-
index 40ed3ae..ace710f 100644 (file)
@@ -18,7 +18,7 @@
  * Provides an overview of installed plagiarism plugins
  *
  * Displays the list of found plagiarism plugins, their version (if found) and
- * a link to delete the plagiarism plugin.
+ * a link to uninstall the plagiarism plugin.
  *
  * @see       http://docs.moodle.org/dev/Plagiarism_API
  * @package   admin
@@ -32,45 +32,14 @@ require_once($CFG->libdir.'/tablelib.php');
 
 admin_externalpage_setup('manageplagiarismplugins');
 
-$delete  = optional_param('delete', '', PARAM_PLUGIN);
-$confirm = optional_param('confirm', false, PARAM_BOOL);
-
-if (!empty($delete) and confirm_sesskey()) { // If data submitted, then process and store.
-    echo $OUTPUT->header();
-    echo $OUTPUT->heading(get_string('manageplagiarism', 'plagiarism'));
-
-    if (!$confirm) {
-        if (get_string_manager()->string_exists('pluginname', 'plagiarism_' . $delete)) {
-            $strpluginname = get_string('pluginname', 'plagiarism_' . $delete);
-        } else {
-            $strpluginname = $delete;
-        }
-        echo $OUTPUT->confirm(get_string('plagiarismplugindeleteconfirm', 'plagiarism', $strpluginname),
-            new moodle_url($PAGE->url, array('delete' => $delete, 'confirm' => 1)),
-            $PAGE->url);
-        echo $OUTPUT->footer();
-        die();
-
-    } else {
-        uninstall_plugin('plagiarism', $delete);
-        $a = new stdclass();
-        $a->name = $delete;
-        $pluginlocation = get_plugin_types();
-        $a->directory = $pluginlocation['plagiarism'] . '/' . $delete;
-        echo $OUTPUT->notification(get_string('plugindeletefiles', '', $a), 'notifysuccess');
-        echo $OUTPUT->continue_button($PAGE->url);
-        echo $OUTPUT->footer();
-        die();
-    }
-}
-
 echo $OUTPUT->header();
 
 // Print the table of all installed plagiarism plugins.
 
-$txt = get_strings(array('settings', 'name', 'version', 'delete'));
+$txt = get_strings(array('settings', 'name', 'version'));
+$txt->uninstall = get_string('uninstallplugin', 'core_admin');
 
-$plagiarismplugins = get_plugin_list('plagiarism');
+$plagiarismplugins = core_component::get_plugin_list('plagiarism');
 if (empty($plagiarismplugins)) {
     echo $OUTPUT->notification(get_string('nopluginsinstalled', 'plagiarism'));
     echo $OUTPUT->footer();
@@ -81,7 +50,7 @@ echo $OUTPUT->heading(get_string('availableplugins', 'plagiarism'), 3, 'main');
 echo $OUTPUT->box_start('generalbox authsui');
 
 $table = new html_table();
-$table->head  = array($txt->name, $txt->version, $txt->delete, $txt->settings);
+$table->head  = array($txt->name, $txt->version, $txt->uninstall, $txt->settings);
 $table->colclasses = array('mdl-left', 'mdl-align', 'mdl-align', 'mdl-align');
 $table->data  = array();
 $table->attributes['class'] = 'manageplagiarismtable generaltable';
@@ -101,10 +70,12 @@ foreach ($plagiarismplugins as $plugin => $dir) {
         } else {
             $version = '?';
         }
-        // Delete link.
-        $delete = new moodle_url($PAGE->url, array('delete' => $plugin, 'sesskey' => sesskey()));
-        $delete = html_writer::link($delete, get_string('delete'));
-        $table->data[] = array($displayname, $version, $delete, $settings);
+        // uninstall link.
+        $uninstall = '';
+        if ($uninstallurl = plugin_manager::instance()->get_uninstall_url('plagiarism_'.$plugin)) {
+            $uninstall = html_writer::link($uninstallurl, $txt->uninstall);
+        }
+        $table->data[] = array($displayname, $version, $uninstall, $settings);
     }
 }
 echo html_writer::table($table);
index 08157df..8ceba12 100644 (file)
@@ -85,10 +85,18 @@ if ($uninstall) {
         if ($pluginman->is_plugin_folder_removable($pluginfo->component)) {
             $continueurl = new moodle_url($PAGE->url, array('delete' => $pluginfo->component, 'sesskey' => sesskey(), 'confirm' => 1));
             echo $output->plugin_uninstall_results_removable_page($pluginman, $pluginfo, $progress, $continueurl);
+            // Reset op code caches.
+            if (function_exists('opcache_reset')) {
+                opcache_reset();
+            }
             exit();
 
         } else {
             echo $output->plugin_uninstall_results_page($pluginman, $pluginfo, $progress);
+            // Reset op code caches.
+            if (function_exists('opcache_reset')) {
+                opcache_reset();
+            }
             exit();
         }
     }
@@ -131,7 +139,10 @@ if ($delete and $confirmed) {
 
     // So long, and thanks for all the bugs.
     fulldelete($pluginfo->rootdir);
-    cache::make('core', 'pluginlist')->purge();
+    // Reset op code caches.
+    if (function_exists('opcache_reset')) {
+        opcache_reset();
+    }
     redirect($PAGE->url);
 }
 
index 1811f5f..f594053 100644 (file)
@@ -163,7 +163,7 @@ if (($action == 'edit') || ($action == 'new')) {
 
     $output = $OUTPUT->box_start('generalbox');
 
-    $plugins = get_plugin_list('portfolio');
+    $plugins = core_component::get_plugin_list('portfolio');
     $plugins = array_keys($plugins);
     $instances = portfolio_instances(false, false);
     $usedplugins = array();
index 3dd14a0..cb59976 100644 (file)
@@ -39,7 +39,7 @@ require_capability('moodle/question:config', $systemcontext);
 admin_externalpage_setup('manageqbehaviours');
 $thispageurl = new moodle_url('/admin/qbehaviours.php');
 
-$behaviours = get_plugin_list('qbehaviour');
+$behaviours = core_component::get_plugin_list('qbehaviour');
 $pluginmanager = plugin_manager::instance();
 
 // Get some data we will need - question counts and which types are needed.
@@ -186,14 +186,14 @@ if (($delete = optional_param('delete', '', PARAM_PLUGIN)) && confirm_sesskey())
     }
 
     // Then the tables themselves
-    drop_plugin_tables($delete, get_plugin_directory('qbehaviour', $delete) . '/db/install.xml', false);
+    drop_plugin_tables($delete, core_component::get_plugin_directory('qbehaviour', $delete) . '/db/install.xml', false);
 
     // Remove event handlers and dequeue pending events
     events_uninstall('qbehaviour_' . $delete);
 
     $a = new stdClass();
     $a->behaviour = $behaviourname;
-    $a->directory = get_plugin_directory('qbehaviour', $delete);
+    $a->directory = core_component::get_plugin_directory('qbehaviour', $delete);
     echo $OUTPUT->box(get_string('qbehaviourdeletefiles', 'question', $a), 'generalbox', 'notice');
     echo $OUTPUT->continue_button($thispageurl);
     echo $OUTPUT->footer();
index e708152..68cdb49 100644 (file)
@@ -375,7 +375,7 @@ class core_admin_renderer extends plugin_renderer_base {
      * Display a page to confirm the plugin uninstallation.
      *
      * @param plugin_manager $pluginman
-     * @param plugin_info $pluginfo
+     * @param plugininfo_base $pluginfo
      * @param moodle_url $continueurl URL to continue after confirmation
      * @return string
      */
@@ -384,10 +384,14 @@ class core_admin_renderer extends plugin_renderer_base {
 
         $pluginname = $pluginman->plugin_name($pluginfo->component);
 
+        $confirm = '<p>' . get_string('uninstallconfirm', 'core_plugin', array('name' => $pluginname)) . '</p>';
+        if ($extraconfirm = $pluginfo->get_uninstall_extra_warning()) {
+            $confirm .= $extraconfirm;
+        }
+
         $output .= $this->output->header();
         $output .= $this->output->heading(get_string('uninstalling', 'core_plugin', array('name' => $pluginname)));
-        $output .= $this->output->confirm(get_string('uninstallconfirm', 'core_plugin', array('name' => $pluginname)),
-            $continueurl, $this->page->url);
+        $output .= $this->output->confirm($confirm, $continueurl, $this->page->url);
         $output .= $this->output->footer();
 
         return $output;
@@ -397,7 +401,7 @@ class core_admin_renderer extends plugin_renderer_base {
      * Display a page with results of plugin uninstallation and offer removal of plugin files.
      *
      * @param plugin_manager $pluginman
-     * @param plugin_info $pluginfo
+     * @param plugininfo_base $pluginfo
      * @param progress_trace_buffer $progress
      * @param moodle_url $continueurl URL to continue to remove the plugin folder
      * @return string
@@ -431,7 +435,7 @@ class core_admin_renderer extends plugin_renderer_base {
      * Display a page with results of plugin uninstallation and inform about the need to remove plugin files manually.
      *
      * @param plugin_manager $pluginman
-     * @param plugin_info $pluginfo
+     * @param plugininfo_base $pluginfo
      * @param progress_trace_buffer $progress
      * @return string
      */
index e03c928..70ec952 100644 (file)
@@ -18,7 +18,7 @@
  * Provides an overview of installed reports
  *
  * Displays the list of found reports, their version (if found) and
- * a link to delete the report.
+ * a link to uninstall the report.
  *
  * The code is based on admin/localplugins.php by David Mudrak.
  *
@@ -33,55 +33,23 @@ require_once($CFG->libdir.'/tablelib.php');
 
 admin_externalpage_setup('managereports');
 
-$delete  = optional_param('delete', '', PARAM_PLUGIN);
-$confirm = optional_param('confirm', '', PARAM_BOOL);
-
-/// If data submitted, then process and store.
-
-if (!empty($delete) and confirm_sesskey()) {
-    echo $OUTPUT->header();
-    echo $OUTPUT->heading(get_string('reports'));
-
-    if (!$confirm) {
-        if (get_string_manager()->string_exists('pluginname', 'report_' . $delete)) {
-            $strpluginname = get_string('pluginname', 'report_' . $delete);
-        } else {
-            $strpluginname = $delete;
-        }
-        echo $OUTPUT->confirm(get_string('reportsdeleteconfirm', 'admin', $strpluginname),
-                                new moodle_url($PAGE->url, array('delete' => $delete, 'confirm' => 1)),
-                                $PAGE->url);
-        echo $OUTPUT->footer();
-        die();
-
-    } else {
-        uninstall_plugin('report', $delete);
-        $a = new stdclass();
-        $a->name = $delete;
-        $pluginlocation = get_plugin_types();
-        $a->directory = $pluginlocation['report'] . '/' . $delete;
-        echo $OUTPUT->notification(get_string('plugindeletefiles', '', $a), 'notifysuccess');
-        echo $OUTPUT->continue_button($PAGE->url);
-        echo $OUTPUT->footer();
-        die();
-    }
-}
-
 echo $OUTPUT->header();
 echo $OUTPUT->heading(get_string('reports'));
 
 /// Print the table of all installed report plugins
 
+$struninstall = get_string('uninstallplugin', 'core_admin');
+
 $table = new flexible_table('reportplugins_administration_table');
-$table->define_columns(array('name', 'version', 'delete'));
-$table->define_headers(array(get_string('plugin'), get_string('version'), get_string('delete')));
+$table->define_columns(array('name', 'version', 'uninstall'));
+$table->define_headers(array(get_string('plugin'), get_string('version'), $struninstall));
 $table->define_baseurl($PAGE->url);
 $table->set_attribute('id', 'reportplugins');
 $table->set_attribute('class', 'generaltable generalbox boxaligncenter boxwidthwide');
 $table->setup();
 
 $plugins = array();
-foreach (get_plugin_list('report') as $plugin => $plugindir) {
+foreach (core_component::get_plugin_list('report') as $plugin => $plugindir) {
     if (get_string_manager()->string_exists('pluginname', 'report_' . $plugin)) {
         $strpluginname = get_string('pluginname', 'report_' . $plugin);
     } else {
@@ -104,8 +72,10 @@ foreach ($installed as $config) {
 }
 
 foreach ($plugins as $plugin => $name) {
-    $delete = new moodle_url($PAGE->url, array('delete' => $plugin, 'sesskey' => sesskey()));
-    $delete = html_writer::link($delete, get_string('delete'));
+    $uninstall = '';
+    if ($uninstallurl = plugin_manager::instance()->get_uninstall_url('report_'.$plugin)) {
+        $uninstall = html_writer::link($uninstallurl, $struninstall);
+    }
 
     if (!isset($versions[$plugin])) {
         if (file_exists("$CFG->dirroot/report/$plugin/version.php")) {
@@ -126,7 +96,7 @@ foreach ($plugins as $plugin => $name) {
         }
     }
 
-    $table->add_data(array($name, $version, $delete));
+    $table->add_data(array($name, $version, $uninstall));
 }
 
 $table->print_html();
index aa77af9..50a08ee 100644 (file)
@@ -390,7 +390,7 @@ if (($action == 'edit') || ($action == 'new')) {
     }
 
     // Get all the plugins that exist on disk
-    $plugins = get_plugin_list('repository');
+    $plugins = core_component::get_plugin_list('repository');
     if (!empty($plugins)) {
         foreach ($plugins as $plugin => $dir) {
             // Check that it has not already been listed
index 1f5a8fe..57833b6 100644 (file)
@@ -1,5 +1,4 @@
 <?php
-
 // This file is part of Moodle - http://moodle.org/
 //
 // Moodle is free software: you can redistribute it and/or modify
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 /**
- * Lets you site administrators
+ * Select site administrators.
  *
- * @package    core
- * @subpackage role
- * @copyright  2010 Petr Skoda (skodak) http://skodak.org
+ * @package    core_role
+ * @copyright  2010 Petr Skoda {@link http://skodak.org}
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
-require_once(dirname(__FILE__) . '/../../config.php');
-require_once($CFG->dirroot . '/' . $CFG->admin . '/roles/lib.php');
+require_once(__DIR__ . '/../../config.php');
+require_once($CFG->libdir.'/adminlib.php');
 
 $confirmadd = optional_param('confirmadd', 0, PARAM_INT);
 $confirmdel = optional_param('confirmdel', 0, PARAM_INT);
@@ -37,10 +35,10 @@ if (!is_siteadmin()) {
     die;
 }
 
-$admisselector = new admins_existing_selector();
+$admisselector = new core_role_admins_existing_selector();
 $admisselector->set_extra_fields(array('username', 'email'));
 
-$potentialadmisselector = new admins_potential_selector();
+$potentialadmisselector = new core_role_admins_potential_selector();
 $potentialadmisselector->set_extra_fields(array('username', 'email'));
 
 if (optional_param('add', false, PARAM_BOOL) and confirm_sesskey()) {
@@ -48,7 +46,8 @@ if (optional_param('add', false, PARAM_BOOL) and confirm_sesskey()) {
         $user = reset($userstoadd);
         $username = fullname($user) . " ($user->username, $user->email)";
         echo $OUTPUT->header();
-        echo $OUTPUT->confirm(get_string('confirmaddadmin', 'role', $username), new moodle_url('/admin/roles/admins.php', array('confirmadd'=>$user->id, 'sesskey'=>sesskey())), $PAGE->url);
+        $yesurl = new moodle_url('/admin/roles/admins.php', array('confirmadd'=>$user->id, 'sesskey'=>sesskey()));
+        echo $OUTPUT->confirm(get_string('confirmaddadmin', 'core_role', $username), $yesurl, $PAGE->url);
         echo $OUTPUT->footer();
         die;
     }
@@ -57,11 +56,12 @@ if (optional_param('add', false, PARAM_BOOL) and confirm_sesskey()) {
     if ($userstoremove = $admisselector->get_selected_users()) {
         $user = reset($userstoremove);
         if ($USER->id == $user->id) {
-            //can not remove self
+            // Can not remove self.
         } else {
             $username = fullname($user) . " ($user->username, $user->email)";
             echo $OUTPUT->header();
-            echo $OUTPUT->confirm(get_string('confirmdeladmin', 'role', $username), new moodle_url('/admin/roles/admins.php', array('confirmdel'=>$user->id, 'sesskey'=>sesskey())), $PAGE->url);
+            $yesurl = new moodle_url('/admin/roles/admins.php', array('confirmdel'=>$user->id, 'sesskey'=>sesskey()));
+            echo $OUTPUT->confirm(get_string('confirmdeladmin', 'core_role', $username), $yesurl, $PAGE->url);
             echo $OUTPUT->footer();
             die;
         }
@@ -72,7 +72,7 @@ if (optional_param('add', false, PARAM_BOOL) and confirm_sesskey()) {
         $newmain = reset($newmain);
     &nb