Merge branch 'wip-mdl-51285' of git://github.com/rajeshtaneja/moodle
authorDavid Monllao <davidm@moodle.com>
Wed, 7 Oct 2015 03:22:56 +0000 (11:22 +0800)
committerDavid Monllao <davidm@moodle.com>
Wed, 7 Oct 2015 03:22:56 +0000 (11:22 +0800)
1094 files changed:
.jshintrc
Gruntfile.js
admin/cli/install.php
admin/index.php
admin/renderer.php
admin/roles/ajax.php [new file with mode: 0644]
admin/roles/classes/capability_table_base.php
admin/roles/classes/capability_table_with_risks.php
admin/roles/classes/check_capability_table.php
admin/roles/classes/define_role_table_advanced.php
admin/roles/classes/define_role_table_basic.php
admin/roles/classes/override_permissions_table_advanced.php
admin/roles/classes/permissions_table.php
admin/roles/classes/view_role_definition_table.php
admin/roles/permissions.php
admin/settings/courses.php
admin/settings/plugins.php
admin/tool/behat/tests/behat/basic_actions.feature [deleted file]
admin/tool/behat/tests/behat/data_generators.feature
admin/tool/customlang/edit.php
admin/tool/customlang/renderer.php
admin/tool/installaddon/classes/validator.php
admin/tool/installaddon/lang/en/tool_installaddon.php
admin/tool/installaddon/tests/fixtures/nocomponent/baz/lang/en/auth_baz.php [new file with mode: 0644]
admin/tool/installaddon/tests/fixtures/nocomponent/baz/version.php [new file with mode: 0644]
admin/tool/installaddon/tests/fixtures/nolang/bah/version.php
admin/tool/installaddon/tests/fixtures/plugindir/foobar/version.php
admin/tool/installaddon/tests/fixtures/plugindir/legacymod/lang/en/legacymod.php [new file with mode: 0644]
admin/tool/installaddon/tests/fixtures/plugindir/legacymod/version.php [new file with mode: 0644]
admin/tool/installaddon/tests/fixtures/wronglang/bah/lang/en/bah.php [new file with mode: 0644]
admin/tool/installaddon/tests/fixtures/wronglang/bah/version.php [new file with mode: 0644]
admin/tool/installaddon/tests/validator_test.php
admin/tool/installaddon/version.php
admin/tool/task/cli/schedule_task.php
admin/tool/templatelibrary/amd/build/display.min.js
admin/tool/templatelibrary/amd/build/search.min.js
admin/tool/templatelibrary/amd/src/display.js
admin/tool/templatelibrary/amd/src/search.js
admin/tool/templatelibrary/classes/external.php
admin/tool/templatelibrary/db/services.php
admin/user.php
auth/cas/auth.php
auth/cas/config.html
auth/cas/lang/en/auth_cas.php
auth/email/auth.php
auth/radius/config.html
auth/shibboleth/auth.php
auth/upgrade.txt
availability/tests/info_test.php
backup/cc/cc_lib/cc_assesment_truefalse.php
backup/cc/entity.quiz.class.php
backup/cc/entity11.quiz.class.php
backup/moodle2/tests/moodle2_course_format_test.php
backup/upgrade.txt
backup/util/helper/backup_cron_helper.class.php
backup/util/helper/tests/cronhelper_test.php
badges/backpack_form.php
badges/backpackconnect.php
badges/criteria/award_criteria_profile.php
badges/tests/badgeslib_test.php
blocks/activity_results/styles.css
blocks/html/block_html.php
blocks/tags/block_tags.php
blocks/tags/coursetags.js [deleted file]
blocks/tags/lang/en/block_tags.php
blocks/tags/lang/en/deprecated.txt [new file with mode: 0644]
blocks/tags/styles.css [deleted file]
blocks/tags/tests/behat/coursetags.feature [deleted file]
blocks/tags/tests/behat/tagcloud.feature
blocks/tests/behat/configure_block_throughout_site.feature
blog/edit.php
calendar/export_execute.php
cohort/lib.php
completion/classes/external.php
completion/cron.php
completion/tests/behat/behat_completion.php
completion/tests/externallib_test.php
config-dist.php
course/delete.php
course/edit.php
course/edit_form.php
course/editsection.php
course/editsection_form.php
course/externallib.php
course/format/lib.php
course/format/renderer.php
course/format/topics/format.js
course/format/topics/lang/en/format_topics.php
course/format/topics/lib.php
course/format/topics/renderer.php
course/format/topics/styles.css
course/format/topics/tests/behat/edit_delete_sections.feature
course/format/topics/tests/format_topics_test.php
course/format/upgrade.txt
course/format/weeks/format.js
course/format/weeks/lang/en/format_weeks.php
course/format/weeks/lib.php
course/format/weeks/styles.css
course/format/weeks/tests/behat/edit_delete_sections.feature
course/format/weeks/tests/format_weeks_test.php
course/lib.php
course/recent.php
course/renderer.php
course/rest.php
course/tags.php [new file with mode: 0644]
course/tags_form.php [new file with mode: 0644]
course/tests/behat/behat_course.php
course/tests/behat/coursetags.feature [new file with mode: 0644]
course/tests/behat/create_delete_course.feature
course/tests/courselib_test.php
course/tests/externallib_test.php
course/yui/build/moodle-course-dragdrop/moodle-course-dragdrop-debug.js
course/yui/build/moodle-course-dragdrop/moodle-course-dragdrop-min.js
course/yui/build/moodle-course-dragdrop/moodle-course-dragdrop.js
course/yui/build/moodle-course-toolboxes/moodle-course-toolboxes-debug.js
course/yui/build/moodle-course-toolboxes/moodle-course-toolboxes-min.js
course/yui/build/moodle-course-toolboxes/moodle-course-toolboxes.js
course/yui/src/dragdrop/js/section.js
course/yui/src/toolboxes/js/resource.js
course/yui/src/toolboxes/js/section.js
enrol/cohort/edit.php
enrol/flatfile/classes/task/flatfile_sync_task.php [new file with mode: 0644]
enrol/flatfile/cli/sync.php
enrol/flatfile/db/tasks.php [new file with mode: 0644]
enrol/flatfile/lang/en/enrol_flatfile.php
enrol/flatfile/lib.php
enrol/flatfile/tests/flatfile_test.php
enrol/flatfile/version.php
enrol/guest/lib.php
enrol/manual/ajax.php
enrol/manual/db/upgrade.php
enrol/manual/edit.php
enrol/manual/lang/en/enrol_manual.php
enrol/manual/lib.php
enrol/manual/locallib.php
enrol/manual/manage.php
enrol/manual/settings.php
enrol/manual/version.php
enrol/manual/yui/quickenrolment/quickenrolment.js
enrol/meta/classes/observer.php
enrol/meta/db/events.php
enrol/meta/locallib.php
enrol/meta/tests/plugin_test.php
enrol/meta/version.php
enrol/paypal/edit.php
enrol/self/classes/empty_form.php [new file with mode: 0644]
enrol/self/edit.php
enrol/self/lang/en/enrol_self.php
enrol/self/lib.php
enrol/tests/enrollib_test.php
enrol/upgrade.txt
files/tests/behat/add_custom_file_type.feature [new file with mode: 0644]
files/tests/fixtures/custom_filetype.mdlr [new file with mode: 0644]
filter/glossary/yui/build/moodle-filter_glossary-autolinker/moodle-filter_glossary-autolinker-debug.js
filter/glossary/yui/build/moodle-filter_glossary-autolinker/moodle-filter_glossary-autolinker-min.js
filter/glossary/yui/build/moodle-filter_glossary-autolinker/moodle-filter_glossary-autolinker.js
filter/glossary/yui/src/autolinker/js/autolinker.js
grade/edit/tree/index.php
grade/edit/tree/lib.php
grade/export/xml/grade_export_xml.php
grade/grading/lib.php
grade/import/direct/index.php
grade/lib.php
grade/report/overview/lib.php
grade/report/user/externallib.php
grade/tests/behat/behat_grade.php
grade/tests/behat/grade_aggregation.feature
grade/tests/behat/grade_aggregation_changes.feature
grade/tests/behat/grade_average.feature
grade/tests/behat/grade_calculated_grade_items.feature
grade/tests/behat/grade_calculated_grade_items_20150627.feature
grade/tests/behat/grade_calculated_weights.feature
grade/tests/behat/grade_contribution_with_extra_credit.feature
grade/tests/behat/grade_mingrade.feature
grade/tests/behat/grade_minmax.feature
grade/tests/behat/grade_natural_exclude_empty.feature
grade/tests/behat/grade_natural_exclude_empty_20150619.feature
grade/tests/behat/grade_natural_normalisation.feature
grade/tests/behat/grade_natural_normalisation_20150619.feature
grade/tests/behat/grade_point_maximum.feature
grade/tests/behat/grade_scales.feature
grade/tests/behat/grade_scales_aggregation.feature
grade/tests/behat/grade_single_item_scales.feature
grade/tests/behat/grade_view.feature
grade/tests/edittreelib_test.php
group/externallib.php
group/overview.php
group/tests/externallib_test.php
index.php
install/lang/fr_ca/install.php
install/lang/sk/install.php
install/lang/xct/langconfig.php [new file with mode: 0644]
install/stringnames.txt
lang/en/admin.php
lang/en/backup.php
lang/en/blog.php
lang/en/deprecated.txt
lang/en/enrol.php
lang/en/error.php
lang/en/grades.php
lang/en/message.php
lang/en/moodle.php
lang/en/my.php
lang/en/plugin.php
lang/en/question.php
lang/en/role.php
lang/en/tag.php
lang/en/webservice.php
lib/accesslib.php
lib/adminlib.php
lib/ajax/service-nologin.php [new file with mode: 0644]
lib/ajax/service.php
lib/amd/build/ajax.min.js
lib/amd/build/event.min.js [new file with mode: 0644]
lib/amd/build/first.min.js
lib/amd/build/localstorage.min.js
lib/amd/build/loglevel.min.js
lib/amd/build/permissionmanager.min.js [new file with mode: 0644]
lib/amd/build/str.min.js
lib/amd/build/tag.min.js [new file with mode: 0644]
lib/amd/build/templates.min.js
lib/amd/src/ajax.js
lib/amd/src/event.js [new file with mode: 0644]
lib/amd/src/first.js
lib/amd/src/localstorage.js
lib/amd/src/loglevel.js
lib/amd/src/permissionmanager.js [new file with mode: 0644]
lib/amd/src/str.js
lib/amd/src/tag.js [new file with mode: 0644]
lib/amd/src/templates.js
lib/authlib.php
lib/badgeslib.php
lib/behat/form_field/behat_form_field.php
lib/bennu/bennu.class.php
lib/bennu/iCalendar_rfc2445.php
lib/bennu/readme_moodle.txt
lib/blocklib.php
lib/classes/event/calendar_event_created.php
lib/classes/event/calendar_event_deleted.php
lib/classes/event/calendar_event_updated.php
lib/classes/event/enrol_instance_created.php [new file with mode: 0644]
lib/classes/event/enrol_instance_deleted.php [new file with mode: 0644]
lib/classes/event/enrol_instance_updated.php [new file with mode: 0644]
lib/classes/event/message_deleted.php [new file with mode: 0644]
lib/classes/grades_external.php
lib/classes/message/inbound/handler.php
lib/classes/output/external.php
lib/classes/plugin_manager.php
lib/classes/session/manager.php
lib/classes/task/completion_daily_task.php [moved from lib/classes/task/completion_cron_task.php with 77% similarity]
lib/classes/task/completion_regular_task.php [new file with mode: 0644]
lib/classes/task/send_failed_login_notifications_task.php
lib/classes/user.php
lib/classes/useragent.php
lib/clilib.php
lib/coursecatlib.php
lib/cronlib.php
lib/db/access.php
lib/db/caches.php
lib/db/install.xml
lib/db/services.php
lib/db/tasks.php
lib/db/upgrade.php
lib/db/upgradelib.php
lib/deprecatedlib.php
lib/dml/mssql_native_moodle_database.php
lib/dml/mysqli_native_moodle_database.php
lib/dml/sqlsrv_native_moodle_database.php
lib/dml/tests/dml_test.php
lib/editor/atto/autosave-ajax.php
lib/editor/atto/classes/task/autosave_cleanup_task.php [new file with mode: 0644]
lib/editor/atto/db/tasks.php [new file with mode: 0644]
lib/editor/atto/lang/en/editor_atto.php
lib/editor/atto/lib.php
lib/editor/atto/plugins/backcolor/yui/build/moodle-atto_backcolor-button/moodle-atto_backcolor-button-debug.js
lib/editor/atto/plugins/backcolor/yui/build/moodle-atto_backcolor-button/moodle-atto_backcolor-button-min.js
lib/editor/atto/plugins/backcolor/yui/build/moodle-atto_backcolor-button/moodle-atto_backcolor-button.js
lib/editor/atto/plugins/backcolor/yui/src/button/js/button.js
lib/editor/atto/plugins/equation/db/upgrade.php [new file with mode: 0644]
lib/editor/atto/plugins/equation/db/upgradelib.php [new file with mode: 0644]
lib/editor/atto/plugins/equation/settings.php
lib/editor/atto/plugins/equation/tests/upgradelib_testcase.php [new file with mode: 0644]
lib/editor/atto/plugins/equation/version.php
lib/editor/atto/plugins/equation/yui/build/moodle-atto_equation-button/moodle-atto_equation-button-debug.js
lib/editor/atto/plugins/equation/yui/build/moodle-atto_equation-button/moodle-atto_equation-button-min.js
lib/editor/atto/plugins/equation/yui/build/moodle-atto_equation-button/moodle-atto_equation-button.js
lib/editor/atto/plugins/equation/yui/src/button/js/button.js
lib/editor/atto/plugins/fontcolor/yui/build/moodle-atto_fontcolor-button/moodle-atto_fontcolor-button-debug.js
lib/editor/atto/plugins/fontcolor/yui/build/moodle-atto_fontcolor-button/moodle-atto_fontcolor-button-min.js
lib/editor/atto/plugins/fontcolor/yui/build/moodle-atto_fontcolor-button/moodle-atto_fontcolor-button.js
lib/editor/atto/plugins/fontcolor/yui/src/button/js/button.js
lib/editor/atto/plugins/noautolink/yui/build/moodle-atto_noautolink-button/moodle-atto_noautolink-button-debug.js
lib/editor/atto/plugins/noautolink/yui/build/moodle-atto_noautolink-button/moodle-atto_noautolink-button-min.js
lib/editor/atto/plugins/noautolink/yui/build/moodle-atto_noautolink-button/moodle-atto_noautolink-button.js
lib/editor/atto/plugins/noautolink/yui/src/button/js/button.js
lib/editor/atto/tests/behat/autosave.feature [new file with mode: 0644]
lib/editor/atto/version.php
lib/editor/atto/yui/build/moodle-editor_atto-editor/moodle-editor_atto-editor-debug.js
lib/editor/atto/yui/build/moodle-editor_atto-editor/moodle-editor_atto-editor-min.js
lib/editor/atto/yui/build/moodle-editor_atto-editor/moodle-editor_atto-editor.js
lib/editor/atto/yui/build/moodle-editor_atto-plugin/moodle-editor_atto-plugin-debug.js
lib/editor/atto/yui/build/moodle-editor_atto-plugin/moodle-editor_atto-plugin.js
lib/editor/atto/yui/src/editor/js/commands.js
lib/editor/atto/yui/src/editor/js/editor-plugin-buttons.js
lib/editor/atto/yui/src/editor/js/styling.js
lib/editor/tinymce/lib.php
lib/editorlib.php
lib/enrollib.php
lib/external/externallib.php
lib/externallib.php
lib/form/editor.php
lib/form/searchableselector.js
lib/formslib.php
lib/grade/grade_category.php
lib/grade/grade_item.php
lib/htmlpurifier/HTMLPurifier.php
lib/htmlpurifier/HTMLPurifier/AttrDef/CSS/Multiple.php
lib/htmlpurifier/HTMLPurifier/AttrDef/HTML/Bool.php
lib/htmlpurifier/HTMLPurifier/CSSDefinition.php
lib/htmlpurifier/HTMLPurifier/Config.php
lib/htmlpurifier/HTMLPurifier/ConfigSchema/schema.ser
lib/htmlpurifier/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.Predicate.txt [new file with mode: 0644]
lib/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.CustomDoctype.txt
lib/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer.php
lib/htmlpurifier/HTMLPurifier/DefinitionCache/Serializer/README [changed mode: 0644->0755]
lib/htmlpurifier/HTMLPurifier/Filter/YouTube.php
lib/htmlpurifier/HTMLPurifier/Injector/RemoveEmpty.php
lib/htmlpurifier/HTMLPurifier/Lexer/DOMLex.php
lib/htmlpurifier/HTMLPurifier/Lexer/PH5P.php
lib/htmlpurifier/LICENSE [new file with mode: 0644]
lib/htmlpurifier/readme_moodle.txt
lib/installlib.php
lib/javascript-static.js
lib/jquery/jquery-1.11.2.min.js [deleted file]
lib/jquery/jquery-1.11.3.js [moved from lib/jquery/jquery-1.11.2.js with 99% similarity]
lib/jquery/jquery-1.11.3.min.js [new file with mode: 0644]
lib/jquery/plugins.php
lib/lessphp/Cache.php
lib/lessphp/Exception/Parser.php
lib/lessphp/Functions.php
lib/lessphp/LICENSE [new file with mode: 0644]
lib/lessphp/Parser.php
lib/lessphp/SourceMap/Generator.php
lib/lessphp/Tree/Import.php
lib/lessphp/Version.php
lib/lessphp/moodle_readme.txt
lib/minify/lib/CSSmin.php
lib/minify/lib/Minify.php
lib/minify/lib/Minify/CSS/UriRewriter.php
lib/minify/lib/Minify/CSSmin.php [new file with mode: 0644]
lib/minify/lib/Minify/Cache/File.php
lib/minify/lib/Minify/Cache/WinCache.php [new file with mode: 0644]
lib/minify/lib/Minify/ClosureCompiler.php
lib/minify/lib/Minify/Controller/MinApp.php
lib/minify/lib/Minify/HTML.php
lib/minify/lib/Minify/JS/ClosureCompiler.php
lib/minify/lib/Minify/YUICompressor.php
lib/modinfolib.php
lib/moodlelib.php
lib/myprofilelib.php
lib/navigationlib.php
lib/outputcomponents.php
lib/outputrenderers.php
lib/outputrequirementslib.php
lib/phpexcel/PHPExcel.php
lib/phpexcel/PHPExcel/Autoloader.php
lib/phpexcel/PHPExcel/CachedObjectStorage/APC.php
lib/phpexcel/PHPExcel/CachedObjectStorage/CacheBase.php
lib/phpexcel/PHPExcel/CachedObjectStorage/DiscISAM.php
lib/phpexcel/PHPExcel/CachedObjectStorage/ICache.php
lib/phpexcel/PHPExcel/CachedObjectStorage/Igbinary.php
lib/phpexcel/PHPExcel/CachedObjectStorage/Memcache.php
lib/phpexcel/PHPExcel/CachedObjectStorage/Memory.php
lib/phpexcel/PHPExcel/CachedObjectStorage/MemoryGZip.php
lib/phpexcel/PHPExcel/CachedObjectStorage/MemorySerialized.php
lib/phpexcel/PHPExcel/CachedObjectStorage/PHPTemp.php
lib/phpexcel/PHPExcel/CachedObjectStorage/SQLite.php
lib/phpexcel/PHPExcel/CachedObjectStorage/SQLite3.php
lib/phpexcel/PHPExcel/CachedObjectStorage/Wincache.php
lib/phpexcel/PHPExcel/CachedObjectStorageFactory.php
lib/phpexcel/PHPExcel/CalcEngine/CyclicReferenceStack.php
lib/phpexcel/PHPExcel/CalcEngine/Logger.php
lib/phpexcel/PHPExcel/Calculation.php
lib/phpexcel/PHPExcel/Calculation/Database.php
lib/phpexcel/PHPExcel/Calculation/DateTime.php
lib/phpexcel/PHPExcel/Calculation/Engineering.php
lib/phpexcel/PHPExcel/Calculation/Exception.php
lib/phpexcel/PHPExcel/Calculation/ExceptionHandler.php
lib/phpexcel/PHPExcel/Calculation/Financial.php
lib/phpexcel/PHPExcel/Calculation/FormulaParser.php
lib/phpexcel/PHPExcel/Calculation/FormulaToken.php
lib/phpexcel/PHPExcel/Calculation/Function.php
lib/phpexcel/PHPExcel/Calculation/Functions.php
lib/phpexcel/PHPExcel/Calculation/Logical.php
lib/phpexcel/PHPExcel/Calculation/LookupRef.php
lib/phpexcel/PHPExcel/Calculation/MathTrig.php
lib/phpexcel/PHPExcel/Calculation/Statistical.php
lib/phpexcel/PHPExcel/Calculation/TextData.php
lib/phpexcel/PHPExcel/Calculation/Token/Stack.php
lib/phpexcel/PHPExcel/Cell.php
lib/phpexcel/PHPExcel/Cell/AdvancedValueBinder.php
lib/phpexcel/PHPExcel/Cell/DataType.php
lib/phpexcel/PHPExcel/Cell/DataValidation.php
lib/phpexcel/PHPExcel/Cell/DefaultValueBinder.php
lib/phpexcel/PHPExcel/Cell/Hyperlink.php
lib/phpexcel/PHPExcel/Cell/IValueBinder.php
lib/phpexcel/PHPExcel/Chart.php
lib/phpexcel/PHPExcel/Chart/Axis.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Chart/DataSeries.php
lib/phpexcel/PHPExcel/Chart/DataSeriesValues.php
lib/phpexcel/PHPExcel/Chart/Exception.php
lib/phpexcel/PHPExcel/Chart/GridLines.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Chart/Layout.php
lib/phpexcel/PHPExcel/Chart/Legend.php
lib/phpexcel/PHPExcel/Chart/PlotArea.php
lib/phpexcel/PHPExcel/Chart/Properties.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Chart/Renderer/jpgraph.php
lib/phpexcel/PHPExcel/Chart/Title.php
lib/phpexcel/PHPExcel/Comment.php
lib/phpexcel/PHPExcel/DocumentProperties.php
lib/phpexcel/PHPExcel/DocumentSecurity.php
lib/phpexcel/PHPExcel/Exception.php
lib/phpexcel/PHPExcel/HashTable.php
lib/phpexcel/PHPExcel/Helper/HTML.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/IComparable.php
lib/phpexcel/PHPExcel/IOFactory.php
lib/phpexcel/PHPExcel/NamedRange.php
lib/phpexcel/PHPExcel/Reader/Abstract.php
lib/phpexcel/PHPExcel/Reader/CSV.php
lib/phpexcel/PHPExcel/Reader/DefaultReadFilter.php
lib/phpexcel/PHPExcel/Reader/Excel2003XML.php
lib/phpexcel/PHPExcel/Reader/Excel2007.php
lib/phpexcel/PHPExcel/Reader/Excel2007/Chart.php
lib/phpexcel/PHPExcel/Reader/Excel2007/Theme.php
lib/phpexcel/PHPExcel/Reader/Excel5.php
lib/phpexcel/PHPExcel/Reader/Excel5/Escher.php
lib/phpexcel/PHPExcel/Reader/Excel5/MD5.php
lib/phpexcel/PHPExcel/Reader/Excel5/RC4.php
lib/phpexcel/PHPExcel/Reader/Exception.php
lib/phpexcel/PHPExcel/Reader/Gnumeric.php
lib/phpexcel/PHPExcel/Reader/HTML.php
lib/phpexcel/PHPExcel/Reader/IReadFilter.php
lib/phpexcel/PHPExcel/Reader/IReader.php
lib/phpexcel/PHPExcel/Reader/OOCalc.php
lib/phpexcel/PHPExcel/Reader/SYLK.php
lib/phpexcel/PHPExcel/ReferenceHelper.php
lib/phpexcel/PHPExcel/RichText.php
lib/phpexcel/PHPExcel/RichText/ITextElement.php
lib/phpexcel/PHPExcel/RichText/Run.php
lib/phpexcel/PHPExcel/RichText/TextElement.php
lib/phpexcel/PHPExcel/Settings.php
lib/phpexcel/PHPExcel/Shared/CodePage.php
lib/phpexcel/PHPExcel/Shared/Date.php
lib/phpexcel/PHPExcel/Shared/Drawing.php
lib/phpexcel/PHPExcel/Shared/Escher.php
lib/phpexcel/PHPExcel/Shared/Escher/DgContainer.php
lib/phpexcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer.php
lib/phpexcel/PHPExcel/Shared/Escher/DgContainer/SpgrContainer/SpContainer.php
lib/phpexcel/PHPExcel/Shared/Escher/DggContainer.php
lib/phpexcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php
lib/phpexcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE.php
lib/phpexcel/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php
lib/phpexcel/PHPExcel/Shared/File.php
lib/phpexcel/PHPExcel/Shared/Font.php
lib/phpexcel/PHPExcel/Shared/JAMA/CholeskyDecomposition.php
lib/phpexcel/PHPExcel/Shared/JAMA/EigenvalueDecomposition.php
lib/phpexcel/PHPExcel/Shared/JAMA/LUDecomposition.php
lib/phpexcel/PHPExcel/Shared/JAMA/Matrix.php
lib/phpexcel/PHPExcel/Shared/JAMA/QRDecomposition.php
lib/phpexcel/PHPExcel/Shared/JAMA/SingularValueDecomposition.php
lib/phpexcel/PHPExcel/Shared/JAMA/utils/Error.php
lib/phpexcel/PHPExcel/Shared/JAMA/utils/Maths.php
lib/phpexcel/PHPExcel/Shared/OLE/ChainedBlockStream.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Shared/OLE/PPS.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Shared/OLE/PPS/File.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Shared/OLE/PPS/Root.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Shared/PCLZip/pclzip.lib.php
lib/phpexcel/PHPExcel/Shared/PasswordHasher.php
lib/phpexcel/PHPExcel/Shared/String.php
lib/phpexcel/PHPExcel/Shared/TimeZone.php
lib/phpexcel/PHPExcel/Shared/XMLWriter.php
lib/phpexcel/PHPExcel/Shared/ZipArchive.php
lib/phpexcel/PHPExcel/Shared/ZipStreamWrapper.php
lib/phpexcel/PHPExcel/Shared/trend/bestFitClass.php
lib/phpexcel/PHPExcel/Shared/trend/exponentialBestFitClass.php
lib/phpexcel/PHPExcel/Shared/trend/linearBestFitClass.php
lib/phpexcel/PHPExcel/Shared/trend/logarithmicBestFitClass.php
lib/phpexcel/PHPExcel/Shared/trend/polynomialBestFitClass.php
lib/phpexcel/PHPExcel/Shared/trend/powerBestFitClass.php
lib/phpexcel/PHPExcel/Shared/trend/trendClass.php
lib/phpexcel/PHPExcel/Style.php
lib/phpexcel/PHPExcel/Style/Alignment.php
lib/phpexcel/PHPExcel/Style/Border.php
lib/phpexcel/PHPExcel/Style/Borders.php
lib/phpexcel/PHPExcel/Style/Color.php
lib/phpexcel/PHPExcel/Style/Conditional.php
lib/phpexcel/PHPExcel/Style/Fill.php
lib/phpexcel/PHPExcel/Style/Font.php
lib/phpexcel/PHPExcel/Style/NumberFormat.php
lib/phpexcel/PHPExcel/Style/Protection.php
lib/phpexcel/PHPExcel/Style/Supervisor.php
lib/phpexcel/PHPExcel/Worksheet.php
lib/phpexcel/PHPExcel/Worksheet/AutoFilter.php
lib/phpexcel/PHPExcel/Worksheet/AutoFilter/Column.php
lib/phpexcel/PHPExcel/Worksheet/AutoFilter/Column/Rule.php
lib/phpexcel/PHPExcel/Worksheet/BaseDrawing.php
lib/phpexcel/PHPExcel/Worksheet/CellIterator.php
lib/phpexcel/PHPExcel/Worksheet/Column.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Worksheet/ColumnCellIterator.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Worksheet/ColumnDimension.php
lib/phpexcel/PHPExcel/Worksheet/ColumnIterator.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Worksheet/Dimension.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Worksheet/Drawing.php
lib/phpexcel/PHPExcel/Worksheet/Drawing/Shadow.php
lib/phpexcel/PHPExcel/Worksheet/HeaderFooter.php
lib/phpexcel/PHPExcel/Worksheet/HeaderFooterDrawing.php
lib/phpexcel/PHPExcel/Worksheet/MemoryDrawing.php
lib/phpexcel/PHPExcel/Worksheet/PageMargins.php
lib/phpexcel/PHPExcel/Worksheet/PageSetup.php
lib/phpexcel/PHPExcel/Worksheet/Protection.php
lib/phpexcel/PHPExcel/Worksheet/Row.php
lib/phpexcel/PHPExcel/Worksheet/RowCellIterator.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Worksheet/RowDimension.php
lib/phpexcel/PHPExcel/Worksheet/RowIterator.php
lib/phpexcel/PHPExcel/Worksheet/SheetView.php
lib/phpexcel/PHPExcel/WorksheetIterator.php
lib/phpexcel/PHPExcel/Writer/Abstract.php
lib/phpexcel/PHPExcel/Writer/CSV.php
lib/phpexcel/PHPExcel/Writer/Excel2007.php
lib/phpexcel/PHPExcel/Writer/Excel2007/Chart.php
lib/phpexcel/PHPExcel/Writer/Excel2007/Comments.php
lib/phpexcel/PHPExcel/Writer/Excel2007/ContentTypes.php
lib/phpexcel/PHPExcel/Writer/Excel2007/DocProps.php
lib/phpexcel/PHPExcel/Writer/Excel2007/Drawing.php
lib/phpexcel/PHPExcel/Writer/Excel2007/Rels.php
lib/phpexcel/PHPExcel/Writer/Excel2007/RelsRibbon.php
lib/phpexcel/PHPExcel/Writer/Excel2007/RelsVBA.php
lib/phpexcel/PHPExcel/Writer/Excel2007/StringTable.php
lib/phpexcel/PHPExcel/Writer/Excel2007/Style.php
lib/phpexcel/PHPExcel/Writer/Excel2007/Theme.php
lib/phpexcel/PHPExcel/Writer/Excel2007/Workbook.php
lib/phpexcel/PHPExcel/Writer/Excel2007/Worksheet.php
lib/phpexcel/PHPExcel/Writer/Excel2007/WriterPart.php
lib/phpexcel/PHPExcel/Writer/Exception.php
lib/phpexcel/PHPExcel/Writer/HTML.php
lib/phpexcel/PHPExcel/Writer/IWriter.php
lib/phpexcel/PHPExcel/Writer/OpenDocument.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Writer/OpenDocument/Cell/Comment.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Writer/OpenDocument/Content.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Writer/OpenDocument/Meta.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Writer/OpenDocument/MetaInf.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Writer/OpenDocument/Mimetype.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Writer/OpenDocument/Settings.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Writer/OpenDocument/Styles.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Writer/OpenDocument/Thumbnails.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Writer/OpenDocument/WriterPart.php [new file with mode: 0644]
lib/phpexcel/PHPExcel/Writer/PDF.php
lib/phpexcel/PHPExcel/Writer/PDF/Core.php
lib/phpexcel/PHPExcel/Writer/PDF/DomPDF.php
lib/phpexcel/PHPExcel/Writer/PDF/mPDF.php
lib/phpexcel/PHPExcel/Writer/PDF/tcPDF.php
lib/phpexcel/readme_moodle.txt
lib/phpunit/classes/advanced_testcase.php
lib/phpunit/classes/database_driver_testcase.php
lib/phpunit/classes/util.php
lib/phpunit/tests/advanced_test.php
lib/requirejs/moodle-config.js
lib/requirejs/readme_moodle.txt [new file with mode: 0644]
lib/requirejs/require.js
lib/requirejs/require.min.js
lib/rsslib.php
lib/setuplib.php
lib/tablelib.php
lib/tcpdf/CHANGELOG.TXT
lib/tcpdf/LICENSE.TXT [changed mode: 0644->0755]
lib/tcpdf/README.TXT
lib/tcpdf/composer.json
lib/tcpdf/config/tcpdf_config.php [changed mode: 0644->0755]
lib/tcpdf/fonts/courier.php [changed mode: 0644->0755]
lib/tcpdf/fonts/courierb.php [changed mode: 0644->0755]
lib/tcpdf/fonts/courierbi.php [changed mode: 0644->0755]
lib/tcpdf/fonts/courieri.php [changed mode: 0644->0755]
lib/tcpdf/fonts/freefont-20120503/ChangeLog
lib/tcpdf/fonts/freemono.ctg.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freemono.php [changed mode: 0644->0755]
lib/tcpdf/fonts/freemono.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freemonob.ctg.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freemonob.php [changed mode: 0644->0755]
lib/tcpdf/fonts/freemonob.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freemonobi.ctg.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freemonobi.php [changed mode: 0644->0755]
lib/tcpdf/fonts/freemonobi.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freemonoi.ctg.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freemonoi.php [changed mode: 0644->0755]
lib/tcpdf/fonts/freemonoi.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freesans.ctg.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freesans.php [changed mode: 0644->0755]
lib/tcpdf/fonts/freesans.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freesansb.ctg.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freesansb.php [changed mode: 0644->0755]
lib/tcpdf/fonts/freesansb.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freesansbi.ctg.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freesansbi.php [changed mode: 0644->0755]
lib/tcpdf/fonts/freesansbi.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freesansi.ctg.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freesansi.php [changed mode: 0644->0755]
lib/tcpdf/fonts/freesansi.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freeserif.ctg.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freeserif.php [changed mode: 0644->0755]
lib/tcpdf/fonts/freeserif.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freeserifb.ctg.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freeserifb.php [changed mode: 0644->0755]
lib/tcpdf/fonts/freeserifb.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freeserifbi.ctg.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freeserifbi.php [changed mode: 0644->0755]
lib/tcpdf/fonts/freeserifbi.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freeserifi.ctg.z [changed mode: 0644->0755]
lib/tcpdf/fonts/freeserifi.php [changed mode: 0644->0755]
lib/tcpdf/fonts/freeserifi.z [changed mode: 0644->0755]
lib/tcpdf/fonts/helvetica.php [changed mode: 0644->0755]
lib/tcpdf/fonts/helveticab.php [changed mode: 0644->0755]
lib/tcpdf/fonts/helveticabi.php [changed mode: 0644->0755]
lib/tcpdf/fonts/helveticai.php [changed mode: 0644->0755]
lib/tcpdf/fonts/hysmyeongjostdmedium.php [changed mode: 0644->0755]
lib/tcpdf/fonts/kozgopromedium.php [changed mode: 0644->0755]
lib/tcpdf/fonts/kozminproregular.php [changed mode: 0644->0755]
lib/tcpdf/fonts/msungstdlight.php [changed mode: 0644->0755]
lib/tcpdf/fonts/stsongstdlight.php [changed mode: 0644->0755]
lib/tcpdf/fonts/symbol.php [changed mode: 0644->0755]
lib/tcpdf/fonts/times.php [changed mode: 0644->0755]
lib/tcpdf/fonts/timesb.php [changed mode: 0644->0755]
lib/tcpdf/fonts/timesbi.php [changed mode: 0644->0755]
lib/tcpdf/fonts/timesi.php [changed mode: 0644->0755]
lib/tcpdf/fonts/zapfdingbats.php [changed mode: 0644->0755]
lib/tcpdf/include/barcodes/qrcode.php
lib/tcpdf/include/sRGB.icc
lib/tcpdf/include/tcpdf_fonts.php
lib/tcpdf/include/tcpdf_images.php
lib/tcpdf/include/tcpdf_static.php
lib/tcpdf/readme_moodle.txt
lib/tcpdf/tcpdf.php
lib/tcpdf/tcpdf_barcodes_2d.php [changed mode: 0644->0755]
lib/tcpdf/tcpdf_parser.php [changed mode: 0644->0755]
lib/templates/columns-1to1to1.mustache [new file with mode: 0644]
lib/templates/columns-1to2.mustache [new file with mode: 0644]
lib/templates/columns-2to1.mustache [new file with mode: 0644]
lib/templates/columns-autoflow-1to1to1.mustache [new file with mode: 0644]
lib/templates/permissionmanager_panelcontent.mustache [new file with mode: 0644]
lib/templates/permissionmanager_role.mustache [new file with mode: 0644]
lib/testing/generator/data_generator.php
lib/testing/tests/generator_test.php
lib/tests/behat/behat_forms.php
lib/tests/behat/behat_general.php
lib/tests/blocklib_test.php
lib/tests/coursecatlib_test.php
lib/tests/externallib_test.php
lib/tests/fixtures/messageinbound/gmail.test [new file with mode: 0644]
lib/tests/fixtures/messageinbound/outlook.test
lib/tests/messageinbound_test.php
lib/tests/messagelib_test.php
lib/tests/moodlelib_test.php
lib/tests/navigationlib_test.php
lib/tests/other/completion.manualtest.txt
lib/tests/setuplib_test.php
lib/tests/upgradelib_test.php
lib/tests/user_test.php
lib/tests/useragent_test.php
lib/thirdpartylibs.xml
lib/upgrade.txt
lib/upgradelib.php
lib/weblib.php
lib/yui/build/moodle-core-actionmenu/moodle-core-actionmenu-debug.js
lib/yui/build/moodle-core-actionmenu/moodle-core-actionmenu-min.js
lib/yui/build/moodle-core-actionmenu/moodle-core-actionmenu.js
lib/yui/build/moodle-core-dock/moodle-core-dock-debug.js
lib/yui/build/moodle-core-dock/moodle-core-dock-min.js
lib/yui/build/moodle-core-dock/moodle-core-dock.js
lib/yui/build/moodle-core-dragdrop/moodle-core-dragdrop-debug.js
lib/yui/build/moodle-core-dragdrop/moodle-core-dragdrop-min.js
lib/yui/build/moodle-core-dragdrop/moodle-core-dragdrop.js
lib/yui/build/moodle-core-event/moodle-core-event-debug.js
lib/yui/build/moodle-core-event/moodle-core-event-min.js
lib/yui/build/moodle-core-event/moodle-core-event.js
lib/yui/build/moodle-core-formchangechecker/moodle-core-formchangechecker-debug.js
lib/yui/build/moodle-core-formchangechecker/moodle-core-formchangechecker-min.js
lib/yui/build/moodle-core-formchangechecker/moodle-core-formchangechecker.js
lib/yui/build/moodle-core-notification-dialogue/moodle-core-notification-dialogue-debug.js
lib/yui/build/moodle-core-notification-dialogue/moodle-core-notification-dialogue-min.js
lib/yui/build/moodle-core-notification-dialogue/moodle-core-notification-dialogue.js
lib/yui/src/actionmenu/js/actionmenu.js
lib/yui/src/dock/js/block.js
lib/yui/src/dock/js/dock.js
lib/yui/src/dragdrop/js/dragdrop.js
lib/yui/src/event/js/event.js
lib/yui/src/formchangechecker/js/formchangechecker.js
lib/yui/src/notification/js/dialogue.js
login/signup.php
login/signup_form.php
message/externallib.php
message/index.php
message/lib.php
message/tests/behat/delete_messages.feature [new file with mode: 0644]
message/tests/events_test.php
message/yui/build/moodle-core_message-messenger/moodle-core_message-messenger-debug.js
message/yui/build/moodle-core_message-messenger/moodle-core_message-messenger-min.js
message/yui/build/moodle-core_message-messenger/moodle-core_message-messenger.js
message/yui/build/moodle-core_message-toolbox/moodle-core_message-toolbox-debug.js [new file with mode: 0644]
message/yui/build/moodle-core_message-toolbox/moodle-core_message-toolbox-min.js [new file with mode: 0644]
message/yui/build/moodle-core_message-toolbox/moodle-core_message-toolbox.js [new file with mode: 0644]
message/yui/src/messenger/js/sendmessage.js
message/yui/src/toolbox/build.json [new file with mode: 0644]
message/yui/src/toolbox/js/delete.js [new file with mode: 0644]
message/yui/src/toolbox/meta/toolbox.json [new file with mode: 0644]
mod/assign/db/upgrade.php
mod/assign/lang/en/assign.php
mod/assign/lib.php
mod/assign/locallib.php
mod/assign/renderable.php
mod/assign/renderer.php
mod/assign/tests/behat/submit_without_group.feature
mod/assign/tests/lib_test.php
mod/assign/upgrade.txt
mod/book/classes/external.php [new file with mode: 0644]
mod/book/db/services.php [new file with mode: 0644]
mod/book/lib.php
mod/book/tests/externallib_test.php [new file with mode: 0644]
mod/book/tests/lib_test.php
mod/book/upgrade.txt
mod/book/version.php
mod/book/view.php
mod/chat/chat_ajax.php
mod/chat/classes/external.php [new file with mode: 0644]
mod/chat/db/services.php [new file with mode: 0644]
mod/chat/lib.php
mod/chat/tests/externallib_test.php [new file with mode: 0644]
mod/chat/version.php
mod/chat/view.php
mod/choice/classes/external.php [new file with mode: 0644]
mod/choice/db/services.php [new file with mode: 0644]
mod/choice/lang/en/deprecated.txt [new file with mode: 0644]
mod/choice/lib.php
mod/choice/renderer.php
mod/choice/tests/behat/publish_results_anonymously.feature
mod/choice/tests/externallib_test.php [new file with mode: 0644]
mod/choice/tests/lib_test.php [new file with mode: 0644]
mod/choice/upgrade.txt
mod/choice/version.php
mod/choice/view.php
mod/data/backup/moodle2/backup_data_stepslib.php
mod/data/classes/external.php
mod/data/db/install.xml
mod/data/db/upgrade.php
mod/data/edit.php
mod/data/field/file/field.class.php
mod/data/field/latlong/field.class.php
mod/data/field/picture/field.class.php
mod/data/field/textarea/field.class.php
mod/data/lang/en/data.php
mod/data/lib.php
mod/data/mod_form.php
mod/data/templates.php
mod/data/tests/behat/manageapproved.feature [new file with mode: 0644]
mod/data/tests/behat/required_entries.feature
mod/data/tests/externallib_test.php
mod/data/tests/lib_test.php
mod/data/version.php
mod/data/view.php
mod/forum/db/services.php
mod/forum/discuss.php
mod/forum/externallib.php
mod/forum/index.php
mod/forum/lang/en/forum.php
mod/forum/lib.php
mod/forum/markposts.php
mod/forum/post.php
mod/forum/renderer.php
mod/forum/settracking.php
mod/forum/styles.css
mod/forum/tests/behat/completion_condition_number_discussions.feature
mod/forum/tests/behat/posts_ordering_blog.feature [new file with mode: 0644]
mod/forum/tests/behat/posts_ordering_general.feature [new file with mode: 0644]
mod/forum/tests/behat/timed_discussions.feature [new file with mode: 0644]
mod/forum/tests/externallib_test.php
mod/forum/tests/lib_test.php
mod/forum/tests/subscriptions_test.php
mod/forum/upgrade.txt
mod/forum/version.php
mod/forum/view.php
mod/imscp/classes/external.php [new file with mode: 0644]
mod/imscp/db/services.php [new file with mode: 0644]
mod/imscp/lib.php
mod/imscp/tests/externallib_test.php [new file with mode: 0644]
mod/imscp/tests/lib_test.php
mod/imscp/upgrade.txt [new file with mode: 0644]
mod/imscp/version.php
mod/imscp/view.php
mod/lesson/continue.php
mod/lesson/lang/en/lesson.php
mod/lesson/locallib.php
mod/lesson/report.php
mod/lesson/tests/behat/completion_condition_end_reached.feature
mod/lesson/tests/behat/completion_condition_time_spent.feature
mod/lesson/tests/behat/lesson_navigation.feature
mod/lesson/tests/behat/lesson_question_attempts.feature [new file with mode: 0644]
mod/lesson/tests/behat/lesson_report.feature [new file with mode: 0644]
mod/lesson/view.php
mod/lti/classes/external.php [new file with mode: 0644]
mod/lti/db/services.php [new file with mode: 0644]
mod/lti/launch.php
mod/lti/locallib.php
mod/lti/service/memberships/classes/local/resource/contextmemberships.php [new file with mode: 0644]
mod/lti/service/memberships/classes/local/resource/linkmemberships.php [new file with mode: 0644]
mod/lti/service/memberships/classes/local/service/memberships.php [new file with mode: 0644]
mod/lti/service/memberships/lang/en/ltiservice_memberships.php [new file with mode: 0644]
mod/lti/service/memberships/version.php [new file with mode: 0644]
mod/lti/tests/externallib_test.php [new file with mode: 0644]
mod/lti/tests/locallib_test.php
mod/lti/version.php
mod/lti/view.php
mod/quiz/locallib.php
mod/quiz/tests/behat/completion_condition_attempts_used.feature
mod/quiz/tests/behat/completion_condition_passing_grade.feature
mod/quiz/tests/behat/manually_mark_question.feature [new file with mode: 0644]
mod/quiz/yui/build/moodle-mod_quiz-toolboxes/moodle-mod_quiz-toolboxes-debug.js
mod/quiz/yui/build/moodle-mod_quiz-toolboxes/moodle-mod_quiz-toolboxes-min.js
mod/quiz/yui/build/moodle-mod_quiz-toolboxes/moodle-mod_quiz-toolboxes.js
mod/quiz/yui/src/toolboxes/js/resource.js
mod/scorm/backup/moodle1/lib.php
mod/scorm/classes/external.php
mod/scorm/db/install.xml
mod/scorm/db/services.php
mod/scorm/db/upgrade.php
mod/scorm/lang/en/scorm.php
mod/scorm/lib.php
mod/scorm/locallib.php
mod/scorm/settings.php
mod/scorm/tests/externallib_test.php
mod/scorm/tests/lib_test.php
mod/scorm/upgrade.txt
mod/scorm/version.php
mod/upgrade.txt
mod/wiki/lang/en/wiki.php
mod/wiki/lib.php
mod/wiki/pagelib.php
mod/wiki/tests/behat/edit_tags.feature
mod/workshop/form/edit_form.php
mod/workshop/form/rubric/edit_form.php
mod/workshop/form/rubric/lang/en/workshopform_rubric.php
my/indexsys.php
my/lib.php
my/tests/behat/reset_all_pages.feature [new file with mode: 0644]
notes/externallib.php
pix/f/FileTypesIcons-LICENSE.txt
pix/f/Oxygen-LICENSE.txt
pix/i/checked.png [new file with mode: 0644]
pix/i/checked.svg [new file with mode: 0644]
pix/i/delete.png [new file with mode: 0644]
pix/i/delete.svg [new file with mode: 0644]
pix/i/unchecked.png [new file with mode: 0644]
pix/i/unchecked.svg [new file with mode: 0644]
question/behaviour/behaviourbase.php
question/behaviour/manualgraded/tests/walkthrough_test.php
question/behaviour/rendererbase.php
question/classes/bank/view.php
question/engine/lib.php
question/engine/questionattempt.php
question/engine/tests/questionattempt_test.php
question/engine/tests/questionattempt_with_steps_test.php
question/engine/tests/questionengine_test.php
question/engine/tests/questionutils_test.php
question/engine/upgrade.txt
question/tests/behat/delete_questions.feature
question/type/ddimageortext/backup/moodle2/backup_qtype_ddimageortext_plugin.class.php [new file with mode: 0644]
question/type/ddimageortext/backup/moodle2/restore_qtype_ddimageortext_plugin.class.php [new file with mode: 0644]
question/type/ddimageortext/db/install.xml [new file with mode: 0644]
question/type/ddimageortext/edit_ddimageortext_form.php [new file with mode: 0644]
question/type/ddimageortext/edit_ddtoimage_form_base.php [new file with mode: 0644]
question/type/ddimageortext/lang/en/qtype_ddimageortext.php [new file with mode: 0644]
question/type/ddimageortext/lib.php [new file with mode: 0644]
question/type/ddimageortext/pix/icon.png [new file with mode: 0644]
question/type/ddimageortext/question.php [new file with mode: 0644]
question/type/ddimageortext/questionbase.php [new file with mode: 0644]
question/type/ddimageortext/questiontype.php [new file with mode: 0644]
question/type/ddimageortext/questiontypebase.php [new file with mode: 0644]
question/type/ddimageortext/renderer.php [new file with mode: 0644]
question/type/ddimageortext/rendererbase.php [new file with mode: 0644]
question/type/ddimageortext/styles.css [new file with mode: 0644]
question/type/ddimageortext/tests/behat/add.feature [new file with mode: 0644]
question/type/ddimageortext/tests/behat/backup_and_restore.feature [new file with mode: 0644]
question/type/ddimageortext/tests/behat/behat_qtype_ddimageortext.php [new file with mode: 0644]
question/type/ddimageortext/tests/behat/edit.feature [new file with mode: 0644]
question/type/ddimageortext/tests/behat/export.feature [new file with mode: 0644]
question/type/ddimageortext/tests/behat/import.feature [new file with mode: 0644]
question/type/ddimageortext/tests/behat/preview.feature [new file with mode: 0644]
question/type/ddimageortext/tests/fixtures/oceanflooranswer.jpg [new file with mode: 0644]
question/type/ddimageortext/tests/fixtures/oceanfloorbase.jpg [new file with mode: 0644]
question/type/ddimageortext/tests/fixtures/testquestion.moodle.xml [new file with mode: 0644]
question/type/ddimageortext/tests/helper.php [new file with mode: 0644]
question/type/ddimageortext/tests/question_test.php [new file with mode: 0644]
question/type/ddimageortext/tests/questiontype_test.php [new file with mode: 0644]
question/type/ddimageortext/tests/walkthrough_test.php [new file with mode: 0644]
question/type/ddimageortext/version.php [new file with mode: 0644]
question/type/ddimageortext/yui/build/moodle-qtype_ddimageortext-dd/moodle-qtype_ddimageortext-dd-debug.js [new file with mode: 0644]
question/type/ddimageortext/yui/build/moodle-qtype_ddimageortext-dd/moodle-qtype_ddimageortext-dd-min.js [new file with mode: 0644]
question/type/ddimageortext/yui/build/moodle-qtype_ddimageortext-dd/moodle-qtype_ddimageortext-dd.js [new file with mode: 0644]
question/type/ddimageortext/yui/build/moodle-qtype_ddimageortext-form/moodle-qtype_ddimageortext-form-debug.js [new file with mode: 0644]
question/type/ddimageortext/yui/build/moodle-qtype_ddimageortext-form/moodle-qtype_ddimageortext-form-min.js [new file with mode: 0644]
question/type/ddimageortext/yui/build/moodle-qtype_ddimageortext-form/moodle-qtype_ddimageortext-form.js [new file with mode: 0644]
question/type/ddimageortext/yui/src/ddimageortext/build.json [new file with mode: 0644]
question/type/ddimageortext/yui/src/ddimageortext/js/ddimageortext.js [new file with mode: 0644]
question/type/ddimageortext/yui/src/ddimageortext/meta/ddimageortext.json [new file with mode: 0644]
question/type/ddimageortext/yui/src/form/build.json [new file with mode: 0644]
question/type/ddimageortext/yui/src/form/js/form.js [new file with mode: 0644]
question/type/ddimageortext/yui/src/form/meta/form.json [new file with mode: 0644]
question/type/ddmarker/backup/moodle2/backup_qtype_ddmarker_plugin.class.php [new file with mode: 0644]
question/type/ddmarker/backup/moodle2/restore_qtype_ddmarker_plugin.class.php [new file with mode: 0644]
question/type/ddmarker/db/install.xml [new file with mode: 0644]
question/type/ddmarker/db/upgrade.php [new file with mode: 0644]
question/type/ddmarker/edit_ddmarker_form.php [new file with mode: 0644]
question/type/ddmarker/lang/en/qtype_ddmarker.php [new file with mode: 0644]
question/type/ddmarker/lib.php [new file with mode: 0644]
question/type/ddmarker/pix/crosshairs.png [new file with mode: 0644]
question/type/ddmarker/pix/crosshairs.xcf [new file with mode: 0644]
question/type/ddmarker/pix/grid.png [new file with mode: 0644]
question/type/ddmarker/pix/grid.xcf [new file with mode: 0644]
question/type/ddmarker/pix/icon.png [new file with mode: 0644]
question/type/ddmarker/question.php [new file with mode: 0644]
question/type/ddmarker/questiontype.php [new file with mode: 0644]
question/type/ddmarker/renderer.php [new file with mode: 0644]
question/type/ddmarker/shapes.php [new file with mode: 0644]
question/type/ddmarker/styles.css [new file with mode: 0644]
question/type/ddmarker/tests/behat/add.feature [new file with mode: 0644]
question/type/ddmarker/tests/behat/backup_and_restore.feature [new file with mode: 0644]
question/type/ddmarker/tests/behat/behat_qtype_ddmarker.php [new file with mode: 0644]
question/type/ddmarker/tests/behat/edit.feature [new file with mode: 0644]
question/type/ddmarker/tests/behat/export.feature [new file with mode: 0644]
question/type/ddmarker/tests/behat/import.feature [new file with mode: 0644]
question/type/ddmarker/tests/behat/preview.feature [new file with mode: 0644]
question/type/ddmarker/tests/fixtures/mkmap.png [new file with mode: 0644]
question/type/ddmarker/tests/fixtures/testquestion.moodle.xml [new file with mode: 0644]
question/type/ddmarker/tests/helper.php [new file with mode: 0644]
question/type/ddmarker/tests/question_test.php [new file with mode: 0644]
question/type/ddmarker/tests/questiontype_test.php [new file with mode: 0644]
question/type/ddmarker/tests/shapes_test.php [new file with mode: 0644]
question/type/ddmarker/tests/walkthrough_test.php [new file with mode: 0644]
question/type/ddmarker/version.php [new file with mode: 0644]
question/type/ddmarker/yui/build/moodle-qtype_ddmarker-dd/moodle-qtype_ddmarker-dd-debug.js [new file with mode: 0644]
question/type/ddmarker/yui/build/moodle-qtype_ddmarker-dd/moodle-qtype_ddmarker-dd-min.js [new file with mode: 0644]
question/type/ddmarker/yui/build/moodle-qtype_ddmarker-dd/moodle-qtype_ddmarker-dd.js [new file with mode: 0644]
question/type/ddmarker/yui/build/moodle-qtype_ddmarker-form/moodle-qtype_ddmarker-form-debug.js [new file with mode: 0644]
question/type/ddmarker/yui/build/moodle-qtype_ddmarker-form/moodle-qtype_ddmarker-form-min.js [new file with mode: 0644]
question/type/ddmarker/yui/build/moodle-qtype_ddmarker-form/moodle-qtype_ddmarker-form.js [new file with mode: 0644]
question/type/ddmarker/yui/src/ddmarker/build.json [new file with mode: 0644]
question/type/ddmarker/yui/src/ddmarker/js/ddmarker.js [new file with mode: 0644]
question/type/ddmarker/yui/src/ddmarker/meta/ddmarker.json [new file with mode: 0644]
question/type/ddmarker/yui/src/form/build.json [new file with mode: 0644]
question/type/ddmarker/yui/src/form/js/form.js [new file with mode: 0644]
question/type/ddmarker/yui/src/form/meta/form.json [new file with mode: 0644]
question/type/ddwtos/backup/moodle2/backup_qtype_ddwtos_plugin.class.php [new file with mode: 0644]
question/type/ddwtos/backup/moodle2/restore_qtype_ddwtos_plugin.class.php [new file with mode: 0644]
question/type/ddwtos/db/install.xml [new file with mode: 0644]
question/type/ddwtos/edit_ddwtos_form.php [new file with mode: 0644]
question/type/ddwtos/lang/en/qtype_ddwtos.php [new file with mode: 0644]
question/type/ddwtos/lib.php [new file with mode: 0644]
question/type/ddwtos/pix/icon.png [new file with mode: 0644]
question/type/ddwtos/question.php [new file with mode: 0644]
question/type/ddwtos/questiontype.php [new file with mode: 0644]
question/type/ddwtos/renderer.php [new file with mode: 0644]
question/type/ddwtos/styles.css [new file with mode: 0644]
question/type/ddwtos/tests/behat/add.feature [new file with mode: 0644]
question/type/ddwtos/tests/behat/backup_and_restore.feature [new file with mode: 0644]
question/type/ddwtos/tests/behat/behat_qtype_ddwtos.php [new file with mode: 0644]
question/type/ddwtos/tests/behat/edit.feature [new file with mode: 0644]
question/type/ddwtos/tests/behat/export.feature [new file with mode: 0644]
question/type/ddwtos/tests/behat/import.feature [new file with mode: 0644]
question/type/ddwtos/tests/behat/preview.feature [new file with mode: 0644]
question/type/ddwtos/tests/fixtures/testquestion.moodle.xml [new file with mode: 0644]
question/type/ddwtos/tests/helper.php [new file with mode: 0644]
question/type/ddwtos/tests/question_test.php [new file with mode: 0644]
question/type/ddwtos/tests/questiontype_test.php [new file with mode: 0644]
question/type/ddwtos/tests/walkthrough_test.php [new file with mode: 0644]
question/type/ddwtos/version.php [new file with mode: 0644]
question/type/ddwtos/yui/build/moodle-qtype_ddwtos-dd/moodle-qtype_ddwtos-dd-debug.js [new file with mode: 0644]
question/type/ddwtos/yui/build/moodle-qtype_ddwtos-dd/moodle-qtype_ddwtos-dd-min.js [new file with mode: 0644]
question/type/ddwtos/yui/build/moodle-qtype_ddwtos-dd/moodle-qtype_ddwtos-dd.js [new file with mode: 0644]
question/type/ddwtos/yui/src/ddwtos/build.json [new file with mode: 0644]
question/type/ddwtos/yui/src/ddwtos/js/ddwtos.js [new file with mode: 0644]
question/type/ddwtos/yui/src/ddwtos/meta/ddwtos.json [new file with mode: 0644]
question/type/essay/renderer.php
question/type/gapselect/backup/moodle2/backup_qtype_gapselect_plugin.class.php [new file with mode: 0644]
question/type/gapselect/backup/moodle2/restore_qtype_gapselect_plugin.class.php [new file with mode: 0644]
question/type/gapselect/db/install.xml [new file with mode: 0644]
question/type/gapselect/edit_form_base.php [new file with mode: 0644]
question/type/gapselect/edit_gapselect_form.php [new file with mode: 0644]
question/type/gapselect/lang/en/qtype_gapselect.php [new file with mode: 0644]
question/type/gapselect/lib.php [new file with mode: 0644]
question/type/gapselect/pix/icon.png [new file with mode: 0644]
question/type/gapselect/question.php [new file with mode: 0644]
question/type/gapselect/questionbase.php [new file with mode: 0644]
question/type/gapselect/questiontype.php [new file with mode: 0644]
question/type/gapselect/questiontypebase.php [new file with mode: 0644]
question/type/gapselect/renderer.php [new file with mode: 0644]
question/type/gapselect/rendererbase.php [new file with mode: 0644]
question/type/gapselect/styles.css [new file with mode: 0644]
question/type/gapselect/tests/behat/basic_test.feature [new file with mode: 0644]
question/type/gapselect/tests/behat/behat_qtype_gapselect.php [new file with mode: 0644]
question/type/gapselect/tests/behat/import_test.feature [new file with mode: 0644]
question/type/gapselect/tests/edit_form_test.php [new file with mode: 0644]
question/type/gapselect/tests/fixtures/testquestion.moodle.xml [new file with mode: 0644]
question/type/gapselect/tests/helper.php [new file with mode: 0644]
question/type/gapselect/tests/question_test.php [new file with mode: 0644]
question/type/gapselect/tests/questiontype_test.php [new file with mode: 0644]
question/type/gapselect/tests/walkthrough_test.php [new file with mode: 0644]
question/type/gapselect/version.php [moved from blocks/tags/settings.php with 66% similarity]
question/type/match/question.php
question/type/match/tests/question_test.php
rating/classes/external.php
rating/index.php
rating/tests/externallib_test.php
rss/file.php
tag/classes/external.php [new file with mode: 0644]
tag/classes/manage_table.php [new file with mode: 0644]
tag/classes/output/tag.php [new file with mode: 0644]
tag/coursetags_add.php [deleted file]
tag/coursetags_edit.php [deleted file]
tag/coursetags_more.php [deleted file]
tag/coursetagslib.php [deleted file]
tag/edit.php
tag/edit_form.php
tag/index.php
tag/manage.php
tag/tag.js
tag/templates/tagflag.mustache [new file with mode: 0644]
tag/templates/tagname.mustache [new file with mode: 0644]
tag/templates/tagtype.mustache [new file with mode: 0644]
tag/tests/behat/delete_tag.feature [new file with mode: 0644]
tag/tests/behat/edit_tag.feature [new file with mode: 0644]
tag/tests/behat/flag_tags.feature [new file with mode: 0644]
tag/tests/behat/official_tags.feature [new file with mode: 0644]
tag/tests/events_test.php
tag/tests/external_test.php [new file with mode: 0644]
tag/upgrade.txt
theme/base/config.php
theme/base/style/core.css
theme/base/style/course.css
theme/base/style/message.css
theme/base/style/templates.css [new file with mode: 0644]
theme/bootstrapbase/javascript/html5shiv.js
theme/bootstrapbase/layout/columns1.php
theme/bootstrapbase/layout/columns2.php
theme/bootstrapbase/layout/columns3.php
theme/bootstrapbase/layout/popup.php
theme/bootstrapbase/layout/secure.php
theme/bootstrapbase/less/moodle.less
theme/bootstrapbase/less/moodle/core.less
theme/bootstrapbase/less/moodle/course.less
theme/bootstrapbase/less/moodle/dock.less
theme/bootstrapbase/less/moodle/grade.less
theme/bootstrapbase/less/moodle/message.less
theme/bootstrapbase/less/moodle/responsive.less
theme/bootstrapbase/less/moodle/templates.less [new file with mode: 0644]
theme/bootstrapbase/renderers/core_renderer.php
theme/bootstrapbase/style/moodle.css
theme/bootstrapbase/thirdpartylibs.xml
theme/bootstrapbase/upgrade.txt
theme/clean/classes/core_renderer.php
theme/clean/lang/en/theme_clean.php
theme/clean/layout/columns1.php
theme/clean/layout/columns2.php
theme/clean/layout/columns3.php
theme/clean/layout/secure.php
theme/clean/lib.php
theme/image.php
theme/more/lang/en/theme_more.php
theme/upgrade.txt
user/editlib.php
user/externallib.php
user/lib.php
user/preferences.php
user/profilesys.php
user/tests/behat/view_preferences_page.feature [new file with mode: 0644]
version.php
webservice/amf/db/access.php
webservice/amf/version.php
webservice/externallib.php
webservice/pluginfile.php
webservice/renderer.php
webservice/rest/db/access.php
webservice/rest/version.php
webservice/soap/db/access.php
webservice/soap/version.php
webservice/upgrade.txt
webservice/xmlrpc/db/access.php
webservice/xmlrpc/version.php

index 8b8a806..ee94a05 100644 (file)
--- a/.jshintrc
+++ b/.jshintrc
@@ -35,7 +35,8 @@
     "plusplus":     false,
     "predef": [
         "M",
-        "define"
+        "define",
+        "require"
     ],
     "proto":        false,
     "regexdash":    false,
index 6237dfa..a3b699e 100644 (file)
@@ -24,6 +24,7 @@
 
 module.exports = function(grunt) {
     var path = require('path'),
+        fs = require('fs'),
         tasks = {},
         cwd = process.env.PWD || process.cwd();
 
@@ -102,22 +103,103 @@ module.exports = function(grunt) {
                 args.push('--lint-stderr');
             }
 
+            var execShifter = function() {
+
+                shifter = exec("node", args, {
+                    cwd: cwd,
+                    stdio: 'inherit',
+                    env: process.env
+                });
+
+                // Tidy up after exec.
+                shifter.on('exit', function (code) {
+                    if (code) {
+                        grunt.fail.fatal('Shifter failed with code: ' + code);
+                    } else {
+                        grunt.log.ok('Shifter build complete.');
+                        done();
+                    }
+                });
+            };
+
             // Actually run shifter.
-            shifter = exec("node", args, {
-                cwd: cwd,
-                stdio: 'inherit',
-                env: process.env
-            });
-
-            // Tidy up after exec.
-            shifter.on('exit', function (code) {
-                if (code) {
-                    grunt.fail.fatal('Shifter failed with code: ' + code);
-                } else {
-                    grunt.log.ok('Shifter build complete.');
-                    done();
-                }
-            });
+            if (!options.recursive) {
+                execShifter();
+            } else {
+                // Check that there are yui modules otherwise shifter ends with exit code 1.
+                var found = false;
+                var hasYuiModules = function(directory, callback) {
+                    fs.readdir(directory, function(err, files) {
+                        if (err) {
+                            return callback(err, null);
+                        }
+
+                        // If we already found a match there is no need to continue scanning.
+                        if (found === true) {
+                            return;
+                        }
+
+                        // We need to track the number of files to know when we return a result.
+                        var pending = files.length;
+
+                        // We first check files, so if there is a match we don't need further
+                        // async calls and we just return a true.
+                        for (var i = 0; i < files.length; i++) {
+                            if (files[i] === 'yui') {
+                                return callback(null, true);
+                            }
+                        }
+
+                        // Iterate through subdirs if there were no matches.
+                        files.forEach(function (file) {
+
+                            var p = path.join(directory, file);
+                            stat = fs.statSync(p);
+                            if (!stat.isDirectory()) {
+                                pending--;
+                            } else {
+
+                                // We defer the pending-1 until we scan the whole dir and subdirs.
+                                hasYuiModules(p, function(err, result) {
+                                    if (err) {
+                                        return callback(err);
+                                    }
+
+                                    if (result === true) {
+                                        // Once we get a true we notify the caller.
+                                        found = true;
+                                        return callback(null, true);
+                                    }
+
+                                    pending--;
+                                    if (pending === 0) {
+                                        // Notify the caller that the whole dir has been scaned and there are no matches.
+                                        return callback(null, false);
+                                    }
+                                });
+                            }
+
+                            // No subdirs here, otherwise the return would be deferred until all subdirs are scanned.
+                            if (pending === 0) {
+                                return callback(null, false);
+                            }
+                        });
+                    });
+                };
+
+                hasYuiModules(cwd, function(err, result) {
+                    if (err) {
+                        grunt.fail.fatal(err.message);
+                    }
+
+                    if (result === true) {
+                        execShifter();
+                    } else {
+                        grunt.log.ok('No YUI modules to build.');
+                        done();
+                    }
+                });
+            }
     };
 
     tasks.startup = function() {
index 131056d..523f9e8 100644 (file)
@@ -74,6 +74,7 @@ Options:
 --adminpass=PASSWORD  Password for the moodle admin account,
                       required in non-interactive mode.
 --adminemail=STRING   Email address for the moodle admin account.
+--upgradekey=STRING   The upgrade key to be set in the config.php, leave empty to not set it.
 --non-interactive     No interactive questions, installation fails if any
                       problem encountered.
 --agree-license       Indicates agreement with software license,
@@ -258,6 +259,7 @@ list($options, $unrecognized) = cli_get_params(
         'adminuser'         => 'admin',
         'adminpass'         => '',
         'adminemail'        => '',
+        'upgradekey'        => '',
         'non-interactive'   => false,
         'agree-license'     => false,
         'allow-unstable'    => false,
@@ -273,7 +275,8 @@ $interactive = empty($options['non-interactive']);
 
 // set up language
 $lang = clean_param($options['lang'], PARAM_SAFEDIR);
-if (file_exists($CFG->dirroot.'/install/lang/'.$lang)) {
+$languages = get_string_manager()->get_list_of_translations();
+if (array_key_exists($lang, $languages)) {
     $CFG->lang = $lang;
 }
 
@@ -295,23 +298,34 @@ echo get_string('cliinstallheader', 'install', $CFG->target_release)."\n";
 //Fist select language
 if ($interactive) {
     cli_separator();
-    $languages = get_string_manager()->get_list_of_translations();
     // Do not put the langs into columns because it is not compatible with RTL.
-    $langlist = implode("\n", $languages);
     $default = $CFG->lang;
-    cli_heading(get_string('availablelangs', 'install'));
-    echo $langlist."\n";
+    cli_heading(get_string('chooselanguagehead', 'install'));
+    if (array_key_exists($default, $languages)) {
+        echo $default.' - '.$languages[$default]."\n";
+    }
+    if ($default !== 'en') {
+        echo 'en - English (en)'."\n";
+    }
+    echo '? - '.get_string('availablelangs', 'install')."\n";
     $prompt = get_string('clitypevaluedefault', 'admin', $CFG->lang);
     $error = '';
     do {
         echo $error;
         $input = cli_input($prompt, $default);
-        $input = clean_param($input, PARAM_SAFEDIR);
 
-        if (!file_exists($CFG->dirroot.'/install/lang/'.$input)) {
-            $error = get_string('cliincorrectvalueretry', 'admin')."\n";
+        if ($input === '?') {
+            echo implode("\n", $languages)."\n";
+            $error = "\n";
+
         } else {
-            $error = '';
+            $input = clean_param($input, PARAM_SAFEDIR);
+
+            if (!array_key_exists($input, $languages)) {
+                $error = get_string('cliincorrectvalueretry', 'admin')."\n";
+            } else {
+                $error = '';
+            }
         }
     } while ($error !== '');
     $CFG->lang = $input;
@@ -710,6 +724,24 @@ if (!empty($options['adminemail']) && !validate_email($options['adminemail'])) {
     cli_error(get_string('cliincorrectvalueerror', 'admin', $a));
 }
 
+// Ask for the upgrade key.
+if ($interactive) {
+    cli_separator();
+    cli_heading(get_string('upgradekeyset', 'admin'));
+    if ($options['upgradekey'] !== '') {
+        $prompt = get_string('clitypevaluedefault', 'admin', $options['upgradekey']);
+        $options['upgradekey'] = cli_input($prompt, $options['upgradekey']);
+    } else {
+        $prompt = get_string('clitypevalue', 'admin');
+        $options['upgradekey'] = cli_input($prompt);
+    }
+}
+
+// Set the upgrade key if it was provided.
+if ($options['upgradekey'] !== '') {
+    $CFG->upgradekey = $options['upgradekey'];
+}
+
 if ($interactive) {
     if (!$options['agree-license']) {
         cli_separator();
index 1cea8f8..3e73aa4 100644 (file)
@@ -54,6 +54,16 @@ if (!function_exists('json_encode') || !function_exists('json_decode')) {
 
 define('NO_OUTPUT_BUFFERING', true);
 
+if (isset($_POST['upgradekey'])) {
+    // Before you start reporting issues about the collision attacks against
+    // SHA-1, you should understand that we are not actually attempting to do
+    // any cryptography here. This is hashed purely so that the key is not
+    // that apparent in the address bar itself. Anyone who catches the HTTP
+    // traffic can immediately use it as a valid admin key.
+    header('Location: index.php?cache=0&upgradekeyhash='.sha1($_POST['upgradekey']));
+    die();
+}
+
 if ((isset($_GET['cache']) and $_GET['cache'] === '0')
         or (isset($_POST['cache']) and $_POST['cache'] === '0')
         or (!isset($_POST['cache']) and !isset($_GET['cache']) and empty($_GET['sesskey']) and empty($_POST['sesskey']))) {
@@ -95,10 +105,14 @@ $showallplugins = optional_param('showallplugins', 0, PARAM_BOOL);
 $agreelicense   = optional_param('agreelicense', 0, PARAM_BOOL);
 $fetchupdates   = optional_param('fetchupdates', 0, PARAM_BOOL);
 $newaddonreq    = optional_param('installaddonrequest', null, PARAM_RAW);
+$upgradekeyhash = optional_param('upgradekeyhash', null, PARAM_ALPHANUM);
 
 // Set up PAGE.
 $url = new moodle_url('/admin/index.php');
 $url->param('cache', $cache);
+if (isset($upgradekeyhash)) {
+    $url->param('upgradekeyhash', $upgradekeyhash);
+}
 $PAGE->set_url($url);
 unset($url);
 
@@ -203,7 +217,7 @@ if (!core_tables_exist()) {
         $PAGE->set_heading($strinstallation . ' - Moodle ' . $CFG->target_release);
 
         $output = $PAGE->get_renderer('core', 'admin');
-        $url = new moodle_url('/admin/index.php', array('agreelicense' => 1, 'confirmrelease' => 1, 'lang' => $CFG->lang));
+        $url = new moodle_url($PAGE->url, array('agreelicense' => 1, 'confirmrelease' => 1, 'lang' => $CFG->lang));
         echo $output->unsatisfied_dependencies_page($version, $failed, $url);
         die();
     }
@@ -253,11 +267,13 @@ if (empty($CFG->version)) {
 // Detect config cache inconsistency, this happens when you switch branches on dev servers.
 if ($CFG->version != $DB->get_field('config', 'value', array('name'=>'version'))) {
     purge_all_caches();
-    redirect(new moodle_url('/admin/index.php'), 'Config cache inconsistency detected, resetting caches...');
+    redirect(new moodle_url($PAGE->url), 'Config cache inconsistency detected, resetting caches...');
 }
 
 if (!$cache and $version > $CFG->version) {  // upgrade
 
+    check_upgrade_key($upgradekeyhash);
+
     // Warning about upgrading a test site.
     $testsite = false;
     if (defined('BEHAT_SITE_RUNNING')) {
@@ -318,7 +334,7 @@ if (!$cache and $version > $CFG->version) {  // upgrade
         $PAGE->set_heading($strplugincheck);
         $PAGE->set_cacheable(false);
 
-        $reloadurl = new moodle_url('/admin/index.php', array('confirmupgrade' => 1, 'confirmrelease' => 1, 'cache' => 0));
+        $reloadurl = new moodle_url($PAGE->url, array('confirmupgrade' => 1, 'confirmrelease' => 1, 'cache' => 0));
 
         if ($fetchupdates) {
             // No sesskey support guaranteed here, because sessions might not work yet.
@@ -342,15 +358,15 @@ if (!$cache and $version > $CFG->version) {  // upgrade
         }
 
         echo $output->upgrade_plugin_check_page(core_plugin_manager::instance(), \core\update\checker::instance(),
-                $version, $showallplugins, $reloadurl,
-                new moodle_url('/admin/index.php', array('confirmupgrade'=>1, 'confirmrelease'=>1, 'confirmplugincheck'=>1, 'cache'=>0)));
+                $version, $showallplugins, $reloadurl, new moodle_url($PAGE->url, array(
+                'confirmupgrade' => 1, 'confirmrelease' => 1, 'confirmplugincheck' => 1, 'cache' => 0)));
         die();
 
     } else {
         // Always verify plugin dependencies!
         $failed = array();
         if (!core_plugin_manager::instance()->all_plugins_ok($version, $failed)) {
-            $reloadurl = new moodle_url('/admin/index.php', array('confirmupgrade' => 1, 'confirmrelease' => 1, 'cache' => 0));
+            $reloadurl = new moodle_url($PAGE->url, array('confirmupgrade' => 1, 'confirmrelease' => 1, 'cache' => 0));
             echo $output->unsatisfied_dependencies_page($version, $failed, $reloadurl);
             die();
         }
@@ -374,6 +390,9 @@ if (!$cache and $branch <> $CFG->branch) {  // Update the branch
 }
 
 if (!$cache and moodle_needs_upgrading()) {
+
+    check_upgrade_key($upgradekeyhash);
+
     if (!$PAGE->headerprinted) {
         // means core upgrade or installation was not already done
 
@@ -413,7 +432,7 @@ if (!$cache and moodle_needs_upgrading()) {
             echo $output->upgrade_plugin_check_page(core_plugin_manager::instance(), \core\update\checker::instance(),
                     $version, $showallplugins,
                     new moodle_url($PAGE->url),
-                    new moodle_url('/admin/index.php', array('confirmplugincheck'=>1, 'cache'=>0)));
+                    new moodle_url($PAGE->url, array('confirmplugincheck' => 1, 'cache' => 0)));
             die();
         }
 
@@ -422,7 +441,7 @@ if (!$cache and moodle_needs_upgrading()) {
         if (!core_plugin_manager::instance()->all_plugins_ok($version, $failed)) {
             /** @var core_admin_renderer $output */
             $output = $PAGE->get_renderer('core', 'admin');
-            $reloadurl = new moodle_url('/admin/index.php', array('cache' => 0));
+            $reloadurl = new moodle_url($PAGE->url, array('cache' => 0));
             echo $output->unsatisfied_dependencies_page($version, $failed, $reloadurl);
             die();
         }
index 5d75e70..40036da 100644 (file)
@@ -43,7 +43,8 @@ class core_admin_renderer extends plugin_renderer_base {
         $copyrightnotice = text_to_html(get_string('gpl3'));
         $copyrightnotice = str_replace('target="_blank"', 'onclick="this.target=\'_blank\'"', $copyrightnotice); // extremely ugly validation hack
 
-        $continue = new single_button(new moodle_url('/admin/index.php', array('lang'=>$CFG->lang, 'agreelicense'=>1)), get_string('continue'), 'get');
+        $continue = new single_button(new moodle_url($this->page->url, array(
+            'lang' => $CFG->lang, 'agreelicense' => 1)), get_string('continue'), 'get');
 
         $output .= $this->header();
         $output .= $this->heading('<a href="http://moodle.org">Moodle</a> - Modular Object-Oriented Dynamic Learning Environment');
@@ -96,10 +97,11 @@ class core_admin_renderer extends plugin_renderer_base {
         $output .= $this->environment_check_table($envstatus, $environment_results);
 
         if (!$envstatus) {
-            $output .= $this->upgrade_reload(new moodle_url('/admin/index.php', array('agreelicense' => 1, 'lang' => $CFG->lang)));
+            $output .= $this->upgrade_reload(new moodle_url($this->page->url, array('agreelicense' => 1, 'lang' => $CFG->lang)));
         } else {
             $output .= $this->notification(get_string('environmentok', 'admin'), 'notifysuccess');
-            $output .= $this->continue_button(new moodle_url('/admin/index.php', array('agreelicense'=>1, 'confirmrelease'=>1, 'lang'=>$CFG->lang)));
+            $output .= $this->continue_button(new moodle_url($this->page->url, array(
+                'agreelicense' => 1, 'confirmrelease' => 1, 'lang' => $CFG->lang)));
         }
 
         $output .= $this->footer();
@@ -140,7 +142,7 @@ class core_admin_renderer extends plugin_renderer_base {
     public function upgrade_confirm_page($strnewversion, $maturity, $testsite) {
         $output = '';
 
-        $continueurl = new moodle_url('/admin/index.php', array('confirmupgrade' => 1, 'cache' => 0));
+        $continueurl = new moodle_url($this->page->url, array('confirmupgrade' => 1, 'cache' => 0));
         $continue = new single_button($continueurl, get_string('continue'), 'get');
         $cancelurl = new moodle_url('/admin/index.php');
 
@@ -170,7 +172,7 @@ class core_admin_renderer extends plugin_renderer_base {
         $output .= $this->environment_check_table($envstatus, $environment_results);
 
         if (!$envstatus) {
-            $output .= $this->upgrade_reload(new moodle_url('/admin/index.php'), array('confirmupgrade' => 1, 'cache' => 0));
+            $output .= $this->upgrade_reload(new moodle_url($this->page->url, array('confirmupgrade' => 1, 'cache' => 0)));
 
         } else {
             $output .= $this->notification(get_string('environmentok', 'admin'), 'notifysuccess');
@@ -179,7 +181,8 @@ class core_admin_renderer extends plugin_renderer_base {
                 $output .= $this->box(get_string('langpackwillbeupdated', 'admin'), 'generalbox', 'notice');
             }
 
-            $output .= $this->continue_button(new moodle_url('/admin/index.php', array('confirmupgrade' => 1, 'confirmrelease' => 1, 'cache' => 0)));
+            $output .= $this->continue_button(new moodle_url($this->page->url, array(
+                'confirmupgrade' => 1, 'confirmrelease' => 1, 'cache' => 0)));
         }
 
         $output .= $this->footer();
@@ -991,7 +994,7 @@ class core_admin_renderer extends plugin_renderer_base {
             $out  = $this->output->container_start('nonehighlighted', 'plugins-check-info');
             $out .= $this->output->heading(get_string('nonehighlighted', 'core_plugin'));
             if (empty($options['full'])) {
-                $out .= html_writer::link(new moodle_url('/admin/index.php',
+                $out .= html_writer::link(new moodle_url($this->page->url,
                     array('confirmupgrade' => 1, 'confirmrelease' => 1, 'showallplugins' => 1, 'cache' => 0)),
                     get_string('nonehighlightedinfo', 'core_plugin'));
             }
@@ -999,13 +1002,14 @@ class core_admin_renderer extends plugin_renderer_base {
 
         } else {
             $out  = $this->output->container_start('somehighlighted', 'plugins-check-info');
-            $out .= $this->output->heading(get_string('somehighlighted', 'core_plugin', $sumofhighlighted));
             if (empty($options['full'])) {
-                $out .= html_writer::link(new moodle_url('/admin/index.php',
+                $out .= $this->output->heading(get_string('somehighlighted', 'core_plugin', $sumofhighlighted));
+                $out .= html_writer::link(new moodle_url($this->page->url,
                     array('confirmupgrade' => 1, 'confirmrelease' => 1, 'showallplugins' => 1, 'cache' => 0)),
                     get_string('somehighlightedinfo', 'core_plugin'));
             } else {
-                $out .= html_writer::link(new moodle_url('/admin/index.php',
+                $out .= $this->output->heading(get_string('somehighlightedall', 'core_plugin', $sumofhighlighted));
+                $out .= html_writer::link(new moodle_url($this->page->url,
                     array('confirmupgrade' => 1, 'confirmrelease' => 1, 'showallplugins' => 0, 'cache' => 0)),
                     get_string('somehighlightedonly', 'core_plugin'));
             }
@@ -1571,4 +1575,26 @@ class core_admin_renderer extends plugin_renderer_base {
 
         return $output;
     }
+
+    /**
+     * Render a simple page for providing the upgrade key.
+     *
+     * @param moodle_url|string $url
+     * @return string
+     */
+    public function upgradekey_form_page($url) {
+
+        $output = '';
+        $output .= $this->header();
+        $output .= $this->container_start('upgradekeyreq');
+        $output .= $this->heading(get_string('upgradekeyreq', 'core_admin'));
+        $output .= html_writer::start_tag('form', array('method' => 'POST', 'action' => $url));
+        $output .= html_writer::empty_tag('input', array('name' => 'upgradekey', 'type' => 'password'));
+        $output .= html_writer::empty_tag('input', array('value' => get_string('submit'), 'type' => 'submit'));
+        $output .= html_writer::end_tag('form');
+        $output .= $this->container_end();
+        $output .= $this->footer();
+
+        return $output;
+    }
 }
diff --git a/admin/roles/ajax.php b/admin/roles/ajax.php
new file mode 100644 (file)
index 0000000..717b8f2
--- /dev/null
@@ -0,0 +1,81 @@
+<?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 file processes AJAX requests and returns JSON
+ *
+ * This is a server part of yui permissions manager module
+ *
+ * @package core_role
+ * @copyright 2015 Martin Mastny
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+define('AJAX_SCRIPT', true);
+
+require(__DIR__ . '/../../config.php');
+
+$contextid = required_param('contextid', PARAM_INT);
+$getroles = optional_param('getroles', 0, PARAM_BOOL);
+
+list($context, $course, $cm) = get_context_info_array($contextid);
+
+require_login($course, false, $cm);
+require_capability('moodle/role:review', $context);
+require_sesskey();
+
+list($overridableroles, $overridecounts, $nameswithcounts) = get_overridable_roles($context,
+        ROLENAME_BOTH, true);
+
+if ($getroles) {
+    echo json_encode($overridableroles);
+    die();
+}
+
+$capability = required_param('capability', PARAM_CAPABILITY);
+$roleid = required_param('roleid', PARAM_INT);
+$action = required_param('action', PARAM_ALPHA);
+
+$capability = $DB->get_record('capabilities', array('name' => $capability), '*', MUST_EXIST);
+
+if (!isset($overridableroles[$roleid])) {
+    throw new moodle_exception('invalidarguments');
+}
+
+if (!has_capability('moodle/role:override', $context)) {
+    if (!has_capability('moodle/role:safeoverride', $context) || !is_safe_capability($capability)) {
+        require_capability('moodle/role:override', $context);
+    }
+}
+
+switch ($action) {
+    case 'allow':
+        role_change_permission($roleid, $context, $capability->name, CAP_ALLOW);
+        break;
+    case 'prevent':
+        role_change_permission($roleid, $context, $capability->name, CAP_PREVENT);
+        break;
+    case 'prohibit':
+        role_change_permission($roleid, $context, $capability->name, CAP_PROHIBIT);
+        break;
+    case 'unprohibit':
+        role_change_permission($roleid, $context, $capability->name, CAP_INHERIT);
+        break;
+    default:
+        throw new moodle_exception('invalidarguments');
+}
+
+echo json_encode($action);
+die();
\ No newline at end of file
index b46c137..2765659 100644 (file)
@@ -106,18 +106,22 @@ abstract class core_role_capability_table_base {
             $component = $capability->component;
 
             // Start the row.
-            echo '<tr class="' . implode(' ', array_unique(array_merge(array('rolecap'),
-                    $this->get_row_classes($capability)))) . '">';
+            $rowattributes = $this->get_row_attributes($capability);
+            // Handle class attributes same as other.
+            $rowclasses = array_unique(array_merge(array('rolecap'), $this->get_row_classes($capability)));
+            if (array_key_exists('class', $rowattributes)) {
+                $rowclasses = array_unique(array_merge($rowclasses, array($rowattributes['class'])));
+            }
+            $rowattributes['class']  = implode(' ', $rowclasses);
 
             // Table cell for the capability name.
-            echo '<th scope="row" class="name"><span class="cap-desc">' . get_capability_docs_link($capability) .
+            $contents = '<th scope="row" class="name"><span class="cap-desc">' . get_capability_docs_link($capability) .
                 '<span class="cap-name">' . $capability->name . '</span></span></th>';
 
             // Add the cells specific to this table.
-            $this->add_row_cells($capability);
+            $contents .= $this->add_row_cells($capability);
 
-            // End the row.
-            echo "</tr>\n";
+            echo html_writer::tag('tr', $contents, $rowattributes);
         }
 
         // End of the table.
@@ -167,6 +171,17 @@ abstract class core_role_capability_table_base {
         return array();
     }
 
+    /**
+     * For subclasses to override. Additional attributes to be added to
+     * each table row for the capability
+     *
+     * @param stdClass $capability the capability this row relates to.
+     * @return array attribute names and their values.
+     */
+    protected function get_row_attributes($capability) {
+        return array();
+    }
+
     /**
      * For subclasses to override. Output the data cells for this capability. The
      * capability name cell will already have been output.
@@ -174,6 +189,7 @@ abstract class core_role_capability_table_base {
      * You can rely on get_row_classes always being called before add_row_cells.
      *
      * @param stdClass $capability the capability this row relates to.
+     * @return string html of row cells
      */
     protected abstract function add_row_cells($capability);
 }
index 5fd57dd..acf7257 100644 (file)
@@ -163,15 +163,16 @@ abstract class core_role_capability_table_with_risks extends core_role_capabilit
     protected abstract function add_permission_cells($capability);
 
     protected function add_row_cells($capability) {
-        $this->add_permission_cells($capability);
+        $cells = $this->add_permission_cells($capability);
         // One cell for each possible risk.
         foreach ($this->allrisks as $riskname => $risk) {
-            echo '<td class="risk ' . str_replace('risk', '', $riskname) . '">';
+            $cells .= '<td class="risk ' . str_replace('risk', '', $riskname) . '">';
             if ($risk & (int)$capability->riskbitmask) {
-                echo $this->get_risk_icon($riskname);
+                $cells .= $this->get_risk_icon($riskname);
             }
-            echo '</td>';
+            $cells .= '</td>';
         }
+        return $cells;
     }
 
     /**
index 20f9370..b716ae5 100644 (file)
@@ -79,6 +79,6 @@ class core_role_check_capability_table extends core_role_capability_table_base {
         $a->fullname = $this->fullname;
         $a->capability = $capability->name;
         $a->context = $this->contextname;
-        echo '<td>' . $result . '</td>';
+        return '<td>' . $result . '</td>';
     }
 }
index 8b4cc51..06f565d 100644 (file)
@@ -628,6 +628,7 @@ class core_role_define_role_table_advanced extends core_role_capability_table_wi
 
     protected function add_permission_cells($capability) {
         // One cell for each possible permission.
+        $content = '';
         foreach ($this->displaypermissions as $perm => $permname) {
             $strperm = $this->strperms[$permname];
             $extraclass = '';
@@ -638,11 +639,12 @@ class core_role_define_role_table_advanced extends core_role_capability_table_wi
             if ($this->permissions[$capability->name] == $perm) {
                 $checked = 'checked="checked" ';
             }
-            echo '<td class="' . $permname . $extraclass . '">';
-            echo '<label><input type="radio" name="' . $capability->name .
+            $content .= '<td class="' . $permname . $extraclass . '">';
+            $content .= '<label><input type="radio" name="' . $capability->name .
                 '" value="' . $perm . '" ' . $checked . '/> ';
-            echo '<span class="note">' . $strperm . '</span>';
-            echo '</label></td>';
+            $content .= '<span class="note">' . $strperm . '</span>';
+            $content .= '</label></td>';
         }
+        return $content;
     }
 }
index 14393e7..0c3d692 100644 (file)
@@ -45,19 +45,20 @@ class core_role_define_role_table_basic extends core_role_define_role_table_adva
         $perm = $this->permissions[$capability->name];
         $permname = $this->allpermissions[$perm];
         $defaultperm = $this->allpermissions[$this->parentpermissions[$capability->name]];
-        echo '<td class="' . $permname . '">';
+        $content = '<td class="' . $permname . '">';
         if ($perm == CAP_ALLOW || $perm == CAP_INHERIT) {
             $checked = '';
             if ($perm == CAP_ALLOW) {
                 $checked = 'checked="checked" ';
             }
-            echo '<input type="hidden" name="' . $capability->name . '" value="' . CAP_INHERIT . '" />';
-            echo '<label><input type="checkbox" name="' . $capability->name .
+            $content .= '<input type="hidden" name="' . $capability->name . '" value="' . CAP_INHERIT . '" />';
+            $content .= '<label><input type="checkbox" name="' . $capability->name .
                 '" value="' . CAP_ALLOW . '" ' . $checked . '/> ' . $this->strallow . '</label>';
         } else {
-            echo '<input type="hidden" name="' . $capability->name . '" value="' . $perm . '" />';
-            echo $this->strperms[$permname] . '<span class="note">' . $this->stradvmessage . '</span>';
+            $content .= '<input type="hidden" name="' . $capability->name . '" value="' . $perm . '" />';
+            $content .= $this->strperms[$permname] . '<span class="note">' . $this->stradvmessage . '</span>';
         }
-        echo '</td>';
+        $content .= '</td>';
+        return $content;
     }
 }
index 7da1239..a872b96 100644 (file)
@@ -73,6 +73,7 @@ class core_role_override_permissions_table_advanced extends core_role_capability
         }
 
         // One cell for each possible permission.
+        $content = '';
         foreach ($this->displaypermissions as $perm => $permname) {
             $strperm = $this->strperms[$permname];
             $extraclass = '';
@@ -83,8 +84,8 @@ class core_role_override_permissions_table_advanced extends core_role_capability
             if ($this->permissions[$capability->name] == $perm) {
                 $checked = 'checked="checked" ';
             }
-            echo '<td class="' . $permname . $extraclass . '">';
-            echo '<label><input type="radio" name="' . $capability->name .
+            $content .= '<td class="' . $permname . $extraclass . '">';
+            $content .= '<label><input type="radio" name="' . $capability->name .
                 '" value="' . $perm . '" ' . $checked . $disabled . '/> ';
             if ($perm == CAP_INHERIT) {
                 $inherited = $this->parentpermissions[$capability->name];
@@ -95,8 +96,9 @@ class core_role_override_permissions_table_advanced extends core_role_capability
                 }
                 $strperm .= ' (' . $inherited . ')';
             }
-            echo '<span class="note">' . $strperm . '</span>';
-            echo '</label></td>';
+            $content .= '<span class="note">' . $strperm . '</span>';
+            $content .= '</label></td>';
         }
+        return $content;
     }
 }
index aa9a2f4..9f339d8 100644 (file)
@@ -67,6 +67,8 @@ class core_role_permissions_table extends core_role_capability_table_base {
 
     protected function add_row_cells($capability) {
         global $OUTPUT, $PAGE;
+        $renderer = $PAGE->get_renderer('core');
+        $adminurl = new moodle_url("/admin/");
 
         $context = $this->context;
         $contextid = $this->context->id;
@@ -75,7 +77,6 @@ class core_role_permissions_table extends core_role_capability_table_base {
         $overridableroles = $this->overridableroles;
         $roles = $this->roles;
 
-
         list($needed, $forbidden) = get_roles_with_cap_in_context($context, $capability->name);
         $neededroles    = array();
         $forbiddenroles = array();
@@ -91,40 +92,50 @@ class core_role_permissions_table extends core_role_capability_table_base {
 
         foreach ($roles as $id => $name) {
             if (isset($needed[$id])) {
-                $neededroles[$id] = $roles[$id];
+                $templatecontext = array("rolename" => $name, "roleid" => $id, "a