Merge branch 'MDL-31923-master-6' of git://git.luns.net.uk/moodle
authorSam Hemelryk <sam@moodle.com>
Mon, 12 Mar 2012 01:33:42 +0000 (14:33 +1300)
committerSam Hemelryk <sam@moodle.com>
Mon, 12 Mar 2012 01:33:42 +0000 (14:33 +1300)
634 files changed:
admin/cli/upgrade.php
admin/environment.xml
admin/index.php
admin/mnet/access_control.php
admin/roles/lib.php
admin/settings.php
admin/settings/courses.php
admin/tool/customlang/db/install.xml
admin/tool/uploaduser/locallib.php
admin/tool/uploaduser/user_form.php
admin/tool/xmldb/actions/check_bigints/check_bigints.class.php
admin/tool/xmldb/actions/create_xml_file/create_xml_file.class.php
admin/tool/xmldb/actions/edit_field/edit_field.class.php
admin/tool/xmldb/actions/edit_field/edit_field.js
admin/tool/xmldb/actions/edit_field_save/edit_field_save.class.php
admin/tool/xmldb/actions/generate_documentation/xmldb.xsl
admin/tool/xmldb/actions/new_table/new_table.class.php
admin/tool/xmldb/actions/view_table_php/view_table_php.class.php
admin/tool/xmldb/lang/en/tool_xmldb.php
auth/cas/auth.php
auth/ldap/auth.php
backup/converter/moodle1/handlerlib.php
backup/converter/moodle1/lib.php
backup/moodle2/backup_final_task.class.php
backup/moodle2/backup_root_task.class.php
backup/moodle2/backup_settingslib.php
backup/moodle2/backup_stepslib.php
backup/moodle2/restore_root_task.class.php
backup/moodle2/restore_section_task.class.php
backup/moodle2/restore_settingslib.php
backup/moodle2/restore_stepslib.php
backup/restorelib.php
backup/util/dbops/backup_controller_dbops.class.php
backup/util/dbops/backup_plan_dbops.class.php
backup/util/dbops/restore_dbops.class.php
backup/util/helper/backup_cron_helper.class.php
backup/util/ui/renderer.php
backup/util/ui/restore_ui_components.php
blocks/community/db/install.xml
blocks/navigation/block_navigation.php
blocks/rss_client/block_rss_client.php
blocks/rss_client/db/install.xml
blog/lib.php
cohort/lib.php
course/format/topics/format.php
course/lib.php
course/recent.php
course/rest.php
course/view.php
enrol/authorize/db/install.xml
enrol/database/db/access.php
enrol/database/lang/en/enrol_database.php
enrol/database/lib.php
enrol/database/version.php
enrol/externallib.php
enrol/flatfile/db/install.xml
enrol/guest/locallib.php
enrol/ldap/lib.php
enrol/ldap/settingslib.php
enrol/manual/db/services.php
enrol/paypal/db/install.xml
enrol/self/locallib.php
grade/edit/scale/edit_form.php
grade/grading/form/rubric/db/install.xml
grade/import/csv/index.php
grade/import/grade_import_form.php
grade/report/grader/lib.php
grade/report/user/lib.php
grade/report/user/styles.css
group/group_form.php
group/grouping_form.php
index.php
install/lang/ca_valencia/admin.php [new file with mode: 0644]
install/lang/ca_valencia/langconfig.php
install/lang/eu/install.php
install/lang/nl/install.php
install/lang/pt/admin.php
install/lang/pt/error.php
install/lang/pt/install.php
iplookup/lib.php
lang/en/admin.php
lang/en/backup.php
lang/en/moodle.php
lib/adminlib.php
lib/bennu/iCalendar_rfc2445.php
lib/bennu/readme_moodle.txt
lib/conditionlib.php
lib/csslib.php
lib/csvlib.class.php
lib/datalib.php
lib/db/install.xml
lib/db/log.php
lib/db/services.php
lib/db/upgrade.php
lib/db/upgradelib.php
lib/ddl/database_manager.php
lib/ddl/mssql_sql_generator.php
lib/ddl/oracle_sql_generator.php
lib/ddl/postgres_sql_generator.php
lib/ddl/simpletest/fixtures/invalid.xml
lib/ddl/simpletest/fixtures/xmldb_table.xml
lib/ddl/simpletest/testddl.php
lib/ddl/sql_generator.php
lib/ddl/sqlite_sql_generator.php
lib/deprecatedlib.php
lib/dml/database_column_info.php
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/sqlsrv_native_moodle_database.php
lib/editor/tinymce/lib.php
lib/editor/tinymce/readme_moodle.txt
lib/editor/tinymce/tiny_mce/3.4.6/jquery.tinymce.js [deleted file]
lib/editor/tinymce/tiny_mce/3.4.6/plugins/autoresize/editor_plugin.js [deleted file]
lib/editor/tinymce/tiny_mce/3.4.6/plugins/contextmenu/editor_plugin.js [deleted file]
lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/emotions.htm [deleted file]
lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/js/emotions.js [deleted file]
lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/langs/en_dlg.js [deleted file]
lib/editor/tinymce/tiny_mce/3.4.6/plugins/lists/editor_plugin.js [deleted file]
lib/editor/tinymce/tiny_mce/3.4.6/plugins/media/moxieplayer.swf [deleted file]
lib/editor/tinymce/tiny_mce/3.4.6/plugins/wordcount/editor_plugin.js [deleted file]
lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/editor_template.js [deleted file]
lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/langs/en_dlg.js [deleted file]
lib/editor/tinymce/tiny_mce/3.4.6/tiny_mce.js [deleted file]
lib/editor/tinymce/tiny_mce/3.4.6/tiny_mce_jquery.js [deleted file]
lib/editor/tinymce/tiny_mce/3.4.6/tiny_mce_prototype.js [deleted file]
lib/editor/tinymce/tiny_mce/3.4.9/jquery.tinymce.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.4.9/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/license.txt [moved from lib/editor/tinymce/tiny_mce/3.4.6/license.txt with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advhr/css/advhr.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advhr/css/advhr.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advhr/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advhr/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advhr/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advhr/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advhr/js/rule.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advhr/js/rule.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advhr/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advhr/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advhr/rule.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advhr/rule.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advimage/css/advimage.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advimage/css/advimage.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advimage/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advimage/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advimage/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advimage/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advimage/image.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advimage/image.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advimage/img/sample.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advimage/img/sample.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advimage/js/image.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advimage/js/image.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advimage/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advimage/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advlink/css/advlink.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advlink/css/advlink.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advlink/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advlink/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advlink/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advlink/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advlink/js/advlink.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advlink/js/advlink.js with 97% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advlink/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advlink/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advlink/link.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advlink/link.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advlist/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advlist/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/advlist/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/advlist/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/autolink/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/autolink/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/autolink/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/autolink/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/autoresize/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/autoresize/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/autoresize/editor_plugin_src.js with 69% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/autosave/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/autosave/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/autosave/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/autosave/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/autosave/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/autosave/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/bbcode/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/bbcode/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/bbcode/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/bbcode/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/contextmenu/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/contextmenu/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/contextmenu/editor_plugin_src.js with 99% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/directionality/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/directionality/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/directionality/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/directionality/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/dragmath/dragmath.php [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/dragmath/dragmath.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/dragmath/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/dragmath/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/dragmath/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/dragmath/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/dragmath/img/dragmath.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/dragmath/img/dragmath.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/dragmath/js/dragmath.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/dragmath/js/dragmath.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/dragmath/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/dragmath/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/emotions.htm [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-cool.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-cool.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-cry.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-cry.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-embarassed.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-embarassed.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-foot-in-mouth.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-foot-in-mouth.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-frown.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-frown.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-innocent.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-innocent.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-kiss.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-kiss.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-laughing.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-laughing.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-money-mouth.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-money-mouth.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-sealed.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-sealed.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-smile.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-smile.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-surprised.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-surprised.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-tongue-out.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-tongue-out.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-undecided.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-undecided.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-wink.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-wink.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/img/smiley-yell.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/emotions/img/smiley-yell.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/js/emotions.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/emotions/langs/en_dlg.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/example/dialog.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/example/dialog.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/example/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/example/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/example/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/example/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/example/img/example.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/example/img/example.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/example/js/dialog.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/example/js/dialog.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/example/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/example/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/example/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/example/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/example_dependency/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/example_dependency/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/example_dependency/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/example_dependency/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/fullpage/css/fullpage.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/fullpage/css/fullpage.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/fullpage/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/fullpage/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/fullpage/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/fullpage/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/fullpage/fullpage.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/fullpage/fullpage.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/fullpage/js/fullpage.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/fullpage/js/fullpage.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/fullpage/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/fullpage/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/fullscreen/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/fullscreen/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/fullscreen/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/fullscreen/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/fullscreen/fullscreen.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/fullscreen/fullscreen.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/iespell/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/iespell/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/iespell/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/iespell/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/inlinepopups/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/inlinepopups/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/inlinepopups/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/inlinepopups/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/inlinepopups/skins/clearlooks2/img/alert.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/inlinepopups/skins/clearlooks2/img/alert.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/inlinepopups/skins/clearlooks2/img/button.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/inlinepopups/skins/clearlooks2/img/button.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/inlinepopups/skins/clearlooks2/img/corners.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/inlinepopups/skins/clearlooks2/img/corners.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/inlinepopups/skins/clearlooks2/window.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/inlinepopups/skins/clearlooks2/window.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/inlinepopups/template.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/inlinepopups/template.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/insertdatetime/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/insertdatetime/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/insertdatetime/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/insertdatetime/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/layer/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/layer/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/layer/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/layer/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/legacyoutput/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/legacyoutput/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/legacyoutput/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/legacyoutput/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/lists/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/lists/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/lists/editor_plugin_src.js with 73% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/media/css/media.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/media/css/media.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/media/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/media/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/media/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/media/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/media/js/embed.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/media/js/embed.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/media/js/media.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/media/js/media.js with 90% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/media/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/media/langs/en_dlg.js with 90% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/media/media.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/media/media.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/media/moxieplayer.swf [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/moodleemoticon/dialog.php [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/moodleemoticon/dialog.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/moodleemoticon/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/moodleemoticon/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/moodleemoticon/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/moodleemoticon/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/moodleemoticon/img/moodleemoticon.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/moodleemoticon/img/moodleemoticon.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/moodleemoticon/js/dialog.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/moodleemoticon/js/dialog.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/moodlemedia/css/media.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/moodlemedia/css/media.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/moodlemedia/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/moodlemedia/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/moodlemedia/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/moodlemedia/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/moodlemedia/img/icon.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/moodlemedia/img/icon.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/moodlemedia/js/media.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/moodlemedia/js/media.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/moodlemedia/moodlemedia.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/moodlemedia/moodlemedia.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/moodlenolink/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/moodlenolink/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/moodlenolink/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/moodlenolink/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/moodlenolink/img/ed_nolink.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/moodlenolink/img/ed_nolink.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/moodlenolink/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/moodlenolink/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/nonbreaking/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/nonbreaking/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/nonbreaking/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/nonbreaking/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/noneditable/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/noneditable/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/noneditable/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/noneditable/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/pagebreak/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/pagebreak/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/pagebreak/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/pagebreak/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/paste/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/paste/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/paste/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/paste/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/paste/js/pastetext.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/paste/js/pastetext.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/paste/js/pasteword.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/paste/js/pasteword.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/paste/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/paste/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/paste/pastetext.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/paste/pastetext.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/paste/pasteword.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/paste/pasteword.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/preview/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/preview/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/preview/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/preview/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/preview/example.html [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/preview/example.html with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/preview/jscripts/embed.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/preview/jscripts/embed.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/preview/preview.html [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/preview/preview.html with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/print/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/print/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/print/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/print/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/save/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/save/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/save/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/save/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/searchreplace/css/searchreplace.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/searchreplace/css/searchreplace.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/searchreplace/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/searchreplace/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/searchreplace/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/searchreplace/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/searchreplace/js/searchreplace.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/searchreplace/js/searchreplace.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/searchreplace/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/searchreplace/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/searchreplace/searchreplace.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/searchreplace/searchreplace.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/spellchecker/changelog.txt [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/spellchecker/changelog.txt with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/spellchecker/classes/EnchantSpell.php [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/spellchecker/classes/EnchantSpell.php with 95% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/spellchecker/classes/GoogleSpell.php [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/spellchecker/classes/GoogleSpell.php with 98% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/spellchecker/classes/PSpell.php [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/spellchecker/classes/PSpell.php with 95% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/spellchecker/classes/PSpellShell.php [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/spellchecker/classes/PSpellShell.php with 97% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/spellchecker/classes/SpellChecker.php [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/spellchecker/classes/SpellChecker.php with 94% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/spellchecker/classes/utils/JSON.php [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/spellchecker/classes/utils/JSON.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/spellchecker/classes/utils/Logger.php [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/spellchecker/classes/utils/Logger.php with 98% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/spellchecker/config.php [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/spellchecker/config.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/spellchecker/css/content.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/spellchecker/css/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/spellchecker/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/spellchecker/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/spellchecker/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/spellchecker/editor_plugin_src.js with 99% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/spellchecker/img/wline.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/spellchecker/img/wline.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/spellchecker/includes/general.php [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/spellchecker/includes/general.php with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/spellchecker/rpc.php [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/spellchecker/rpc.php with 97% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/style/css/props.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/style/css/props.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/style/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/style/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/style/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/style/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/style/js/props.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/style/js/props.js with 98% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/style/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/style/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/style/props.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/style/props.htm with 99% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/tabfocus/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/tabfocus/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/tabfocus/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/tabfocus/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/table/cell.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/table/cell.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/table/css/cell.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/table/css/cell.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/table/css/row.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/table/css/row.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/table/css/table.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/table/css/table.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/table/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/table/editor_plugin.js with 58% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/table/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/table/editor_plugin_src.js with 88% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/table/js/cell.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/table/js/cell.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/table/js/merge_cells.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/table/js/merge_cells.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/table/js/row.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/table/js/row.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/table/js/table.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/table/js/table.js with 90% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/table/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/table/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/table/merge_cells.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/table/merge_cells.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/table/row.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/table/row.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/table/table.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/table/table.htm with 99% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/template/blank.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/template/blank.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/template/css/template.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/template/css/template.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/template/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/template/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/template/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/template/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/template/js/template.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/template/js/template.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/template/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/template/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/template/template.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/template/template.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/visualchars/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/visualchars/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/visualchars/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/visualchars/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/wordcount/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/wordcount/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/wordcount/editor_plugin_src.js with 82% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/abbr.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/abbr.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/acronym.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/acronym.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/attributes.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/attributes.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/cite.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/cite.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/css/attributes.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/css/attributes.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/css/popup.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/css/popup.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/del.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/del.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/editor_plugin.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/editor_plugin.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/editor_plugin_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/ins.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/ins.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/js/abbr.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/js/abbr.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/js/acronym.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/js/acronym.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/js/attributes.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/js/attributes.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/js/cite.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/js/cite.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/js/del.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/js/del.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/js/element_common.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/js/element_common.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/js/ins.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/js/ins.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/plugins/xhtmlxtras/langs/en_dlg.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/plugins/xhtmlxtras/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/about.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/about.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/anchor.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/anchor.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/charmap.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/charmap.htm with 93% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/color_picker.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/color_picker.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/editor_template.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/editor_template_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/editor_template_src.js with 99% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/image.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/image.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/img/colorpicker.jpg [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/img/colorpicker.jpg with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/img/flash.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/img/flash.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/img/icons.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/img/icons.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/img/iframe.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/img/iframe.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/img/pagebreak.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/img/pagebreak.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/img/quicktime.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/img/quicktime.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/img/realmedia.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/img/realmedia.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/img/shockwave.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/img/shockwave.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/img/trans.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/img/trans.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/img/video.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/img/video.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/img/windowsmedia.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/img/windowsmedia.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/js/about.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/js/about.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/js/anchor.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/js/anchor.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/js/charmap.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/js/charmap.js with 97% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/js/color_picker.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/js/color_picker.js with 98% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/js/image.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/js/image.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/js/link.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/js/link.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/js/source_editor.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/js/source_editor.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/langs/en_dlg.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/link.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/link.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/shortcuts.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/shortcuts.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/default/content.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/default/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/default/dialog.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/default/dialog.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/default/img/buttons.png [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/default/img/buttons.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/default/img/items.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/default/img/items.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/default/img/menu_arrow.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/default/img/menu_arrow.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/default/img/menu_check.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/default/img/menu_check.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/default/img/progress.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/default/img/progress.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/default/img/tabs.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/default/img/tabs.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/default/ui.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/default/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/highcontrast/content.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/highcontrast/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/highcontrast/dialog.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/highcontrast/dialog.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/highcontrast/ui.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/highcontrast/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/o2k7/content.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/o2k7/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/o2k7/dialog.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/o2k7/dialog.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/o2k7/img/button_bg.png [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/o2k7/img/button_bg.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/o2k7/img/button_bg_black.png [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/o2k7/img/button_bg_black.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/o2k7/img/button_bg_silver.png [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/o2k7/img/button_bg_silver.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/o2k7/ui.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/o2k7/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/o2k7/ui_black.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/o2k7/ui_black.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/skins/o2k7/ui_silver.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/skins/o2k7/ui_silver.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/advanced/source_editor.htm [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/advanced/source_editor.htm with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/simple/editor_template.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/simple/editor_template.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/simple/editor_template_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/simple/editor_template_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/simple/img/icons.gif [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/simple/img/icons.gif with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/simple/langs/en.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/simple/langs/en.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/simple/skins/default/content.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/simple/skins/default/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/simple/skins/default/ui.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/simple/skins/default/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/simple/skins/o2k7/content.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/simple/skins/o2k7/content.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/simple/skins/o2k7/img/button_bg.png [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/simple/skins/o2k7/img/button_bg.png with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/themes/simple/skins/o2k7/ui.css [moved from lib/editor/tinymce/tiny_mce/3.4.6/themes/simple/skins/o2k7/ui.css with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/tiny_mce.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.4.9/tiny_mce_dev.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/tiny_mce_dev.js with 98% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/tiny_mce_jquery.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.4.9/tiny_mce_jquery_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/tiny_mce_jquery_src.js with 94% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/tiny_mce_popup.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/tiny_mce_popup.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/tiny_mce_popup_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/tiny_mce_popup_src.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/tiny_mce_prototype.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce/3.4.9/tiny_mce_prototype_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/tiny_mce_prototype_src.js with 94% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/tiny_mce_src.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/tiny_mce_src.js with 94% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/utils/editable_selects.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/utils/editable_selects.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/utils/form_utils.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/utils/form_utils.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/utils/mctabs.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/utils/mctabs.js with 100% similarity]
lib/editor/tinymce/tiny_mce/3.4.9/utils/validate.js [moved from lib/editor/tinymce/tiny_mce/3.4.6/utils/validate.js with 100% similarity]
lib/editor/tinymce/version.php
lib/excellib.class.php
lib/filestorage/file_archive.php
lib/filestorage/file_storage.php
lib/filterlib.php
lib/form/dndupload.js
lib/form/filemanager.js
lib/form/filemanager.php
lib/formslib.php
lib/graphlib.php
lib/html2text.php
lib/html2text_readme.txt
lib/htmlpurifier/HTMLPurifier.php
lib/htmlpurifier/HTMLPurifier.safe-includes.php
lib/htmlpurifier/HTMLPurifier/AttrDef/CSS/Ident.php [new file with mode: 0644]
lib/htmlpurifier/HTMLPurifier/AttrDef/Clone.php [new file with mode: 0644]
lib/htmlpurifier/HTMLPurifier/AttrDef/HTML/Color.php
lib/htmlpurifier/HTMLPurifier/AttrDef/HTML/ID.php
lib/htmlpurifier/HTMLPurifier/AttrDef/URI.php
lib/htmlpurifier/HTMLPurifier/AttrDef/URI/Host.php
lib/htmlpurifier/HTMLPurifier/AttrTransform/Nofollow.php
lib/htmlpurifier/HTMLPurifier/AttrTransform/TargetBlank.php [new file with mode: 0644]
lib/htmlpurifier/HTMLPurifier/AttrTypes.php
lib/htmlpurifier/HTMLPurifier/ChildDef/List.php [new file with mode: 0644]
lib/htmlpurifier/HTMLPurifier/ChildDef/Table.php
lib/htmlpurifier/HTMLPurifier/Config.php
lib/htmlpurifier/HTMLPurifier/ConfigSchema/schema.ser
lib/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.ColorKeywords.txt
lib/htmlpurifier/HTMLPurifier/ConfigSchema/schema/Core.EnableIDNA.txt [new file with mode: 0644]
lib/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.AllowedComments.txt [new file with mode: 0644]
lib/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.AllowedCommentsRegexp.txt [new file with mode: 0644]
lib/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.SafeIframe.txt [new file with mode: 0644]
lib/htmlpurifier/HTMLPurifier/ConfigSchema/schema/HTML.TargetBlank.txt [new file with mode: 0644]
lib/htmlpurifier/HTMLPurifier/ConfigSchema/schema/URI.SafeIframeRegexp.txt [new file with mode: 0644]
lib/htmlpurifier/HTMLPurifier/Encoder.php
lib/htmlpurifier/HTMLPurifier/Filter/ExtractStyleBlocks.php
lib/htmlpurifier/HTMLPurifier/HTMLDefinition.php
lib/htmlpurifier/HTMLPurifier/HTMLModule/Forms.php
lib/htmlpurifier/HTMLPurifier/HTMLModule/Iframe.php [new file with mode: 0644]
lib/htmlpurifier/HTMLPurifier/HTMLModule/Legacy.php
lib/htmlpurifier/HTMLPurifier/HTMLModule/List.php
lib/htmlpurifier/HTMLPurifier/HTMLModule/Tables.php
lib/htmlpurifier/HTMLPurifier/HTMLModule/TargetBlank.php [new file with mode: 0644]
lib/htmlpurifier/HTMLPurifier/HTMLModuleManager.php
lib/htmlpurifier/HTMLPurifier/Lexer/PEARSax3.php [deleted file]
lib/htmlpurifier/HTMLPurifier/Lexer/PH5P.php
lib/htmlpurifier/HTMLPurifier/Strategy/Composite.php
lib/htmlpurifier/HTMLPurifier/Strategy/RemoveForeignElements.php
lib/htmlpurifier/HTMLPurifier/URI.php
lib/htmlpurifier/HTMLPurifier/URIDefinition.php
lib/htmlpurifier/HTMLPurifier/URIFilter.php
lib/htmlpurifier/HTMLPurifier/URIFilter/HostBlacklist.php
lib/htmlpurifier/HTMLPurifier/URIFilter/Munge.php
lib/htmlpurifier/HTMLPurifier/URIFilter/SafeIframe.php [new file with mode: 0644]
lib/htmlpurifier/HTMLPurifier/URIScheme.php
lib/htmlpurifier/HTMLPurifier/URIScheme/https.php
lib/htmlpurifier/readme_moodle.txt
lib/javascript-static.js
lib/javascript.php
lib/moodlelib.php
lib/navigationlib.php
lib/outputrenderers.php
lib/outputrequirementslib.php
lib/phpmailer/moodle_phpmailer.php
lib/questionlib.php
lib/sessionlib.php
lib/simpletest/testhtmlpurifier.php
lib/simpletest/testmoodlelib.php
lib/simpletest/testpurifier.php [deleted file]
lib/simpletest/testtextlib.php
lib/simpletest/testweblib.php
lib/textlib.class.php
lib/thirdpartylibs.xml
lib/tokeniserlib.php
lib/weblib.php
lib/xmldb/xmldb.xsd
lib/xmldb/xmldb_constants.php
lib/xmldb/xmldb_field.php
lib/yui/formchangechecker/formchangechecker.js [new file with mode: 0644]
lib/yui/formslib/formslib.js [deleted file]
login/forgot_password.php
login/forgot_password_form.php
login/index.php
login/signup_form.php
login/token.php
message/lib.php
mnet/service/enrol/db/install.xml
mod/assignment/db/install.xml
mod/assignment/lib.php
mod/assignment/type/upload/assignment.class.php
mod/assignment/type/uploadsingle/assignment.class.php
mod/chat/db/install.xml
mod/choice/db/install.xml
mod/data/db/install.xml
mod/data/edit.php
mod/data/field/textarea/field.class.php
mod/data/field/textarea/lang/en/datafield_textarea.php
mod/data/field/textarea/mod.html
mod/data/import_form.php
mod/data/lib.php
mod/data/preset.php
mod/data/view.php
mod/feedback/db/install.xml
mod/feedback/import.php
mod/folder/db/install.xml
mod/forum/db/install.xml
mod/glossary/db/install.xml
mod/glossary/edit_form.php
mod/glossary/editcategories.php
mod/glossary/exportentry.php
mod/glossary/import.php
mod/glossary/lib.php
mod/glossary/print.php
mod/glossary/sql.php
mod/glossary/view.php
mod/imscp/db/install.xml
mod/label/db/install.xml
mod/label/lib.php
mod/lesson/db/install.xml
mod/lti/db/install.xml
mod/lti/locallib.php
mod/page/db/install.xml
mod/quiz/db/install.xml
mod/quiz/report/overview/db/install.xml
mod/quiz/report/statistics/db/install.xml
mod/resource/db/install.xml
mod/scorm/db/install.xml
mod/scorm/styles.css
mod/survey/db/install.xml
mod/url/db/install.xml
mod/wiki/db/install.xml
mod/workshop/db/install.xml
mod/workshop/eval/best/db/install.xml
mod/workshop/form/accumulative/db/install.xml
mod/workshop/form/comments/db/install.xml
mod/workshop/form/numerrors/db/install.xml
mod/workshop/form/rubric/db/install.xml
portfolio/mahara/db/install.xml
question/engine/datalib.php
question/format.php
question/format/blackboard_six/format.php
question/import_form.php
question/type/calculated/db/install.xml
question/type/essay/db/install.xml
question/type/match/db/install.xml
question/type/multianswer/db/install.xml
question/type/multichoice/db/install.xml
question/type/numerical/db/install.xml
question/type/randomsamatch/db/install.xml
question/type/shortanswer/db/install.xml
question/type/truefalse/db/install.xml
rating/index.php
rating/lib.php
rating/rate.php
rating/rate_ajax.php
report/completion/index.php
report/progress/index.php
tag/coursetagslib.php
tag/lib.php
tag/locallib.php
theme/formal_white/layout/general.php
theme/formal_white/style/core.css
theme/formal_white/style/course.css
theme/formal_white/style/formal_white.css
theme/formal_white/style/forum.css
theme/formal_white/style/tabs.css
theme/javascript.php
theme/sky_high/config.php
theme/sky_high/layout/frontpage.php
theme/sky_high/layout/general.php
theme/sky_high/layout/report.php
theme/sky_high/style/core.css
theme/sky_high/style/pagelayout.css
theme/sky_high/style/report.css
theme/splash/style/pagelayout.css
user/editadvanced_form.php
version.php
webservice/amf/db/access.php
webservice/amf/introspector.php
webservice/amf/lang/en/webservice_amf.php
webservice/amf/locallib.php
webservice/amf/server.php
webservice/amf/simpleserver.php
webservice/amf/testclient/index.php
webservice/amf/version.php
webservice/externallib.php
webservice/lib.php
webservice/pluginfile.php
webservice/renderer.php
webservice/rest/db/access.php
webservice/rest/lang/en/webservice_rest.php
webservice/rest/lib.php
webservice/rest/locallib.php
webservice/rest/server.php
webservice/rest/simpleserver.php
webservice/rest/version.php
webservice/simpletest/testwebservice.php
webservice/soap/db/access.php
webservice/soap/lang/en/webservice_soap.php
webservice/soap/lib.php
webservice/soap/locallib.php
webservice/soap/server.php
webservice/soap/simpleserver.php
webservice/soap/version.php
webservice/upload.php
webservice/wsdoc.php
webservice/xmlrpc/db/access.php
webservice/xmlrpc/lang/en/webservice_xmlrpc.php
webservice/xmlrpc/lib.php
webservice/xmlrpc/locallib.php
webservice/xmlrpc/server.php
webservice/xmlrpc/simpleserver.php
webservice/xmlrpc/version.php

index b223605..83f1145 100644 (file)
@@ -92,6 +92,10 @@ if ($version < $CFG->version) {
 $oldversion = "$CFG->release ($CFG->version)";
 $newversion = "$release ($version)";
 
+if (!moodle_needs_upgrading()) {
+    cli_error(get_string('cliupgradenoneed', 'core_admin', $newversion), 0);
+}
+
 // Test environment first.
 list($envstatus, $environment_results) = check_moodle_environment(normalize_version($release), ENV_SELECT_RELEASE);
 if (!$envstatus) {
index c43b94e..cd17818 100644 (file)
       </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="40M" level="required">
index 7e8a6fc..70dcafa 100644 (file)
@@ -306,8 +306,8 @@ if (during_initial_install()) {
         }
     }
 
-    // at this stage there can be only one admin - users may change username, so do not rely on that
-    $adminuser = get_complete_user_data('id', $CFG->siteadmins);
+    // at this stage there can be only one admin unless more were added by install - users may change username, so do not rely on that
+    $adminuser = get_complete_user_data('id', reset(explode(',', $CFG->siteadmins)));
 
     if ($adminuser->password === 'adminsetuppending') {
         // prevent installation hijacking
index 5721d54..b9e436f 100644 (file)
@@ -103,7 +103,7 @@ if ($form = data_submitted() and confirm_sesskey()) {
         $usernames = explode(',', $form->username);
 
         foreach ($usernames as $username) {
-            $username = trim(moodle_strtolower($username));
+            $username = trim(textlib::strtolower($username));
             if (!empty($username)) {
                 if (mnet_update_sso_access_control($username, $form->mnet_host_id, $form->accessctrl)) {
                     if ($form->accessctrl == 'allow') {
index d2dbaba..d57233f 100644 (file)
@@ -610,8 +610,8 @@ class define_role_table_advanced extends capability_table_with_risks {
         $shortname = optional_param('shortname', null, PARAM_RAW);
         if (!is_null($shortname)) {
             $this->role->shortname = $shortname;
-            $this->role->shortname = textlib_get_instance()->specialtoascii($this->role->shortname);
-            $this->role->shortname = moodle_strtolower(clean_param($this->role->shortname, PARAM_ALPHANUMEXT));
+            $this->role->shortname = textlib::specialtoascii($this->role->shortname);
+            $this->role->shortname = textlib::strtolower(clean_param($this->role->shortname, PARAM_ALPHANUMEXT));
             if (empty($this->role->shortname)) {
                 $this->errors['shortname'] = get_string('errorbadroleshortname', 'role');
             }
index 3f8d2c9..3e66f24 100644 (file)
@@ -131,8 +131,8 @@ if (empty($SITE->fullname)) {
     echo '</form>';
 }
 
-$PAGE->requires->yui_module('moodle-core-formslib',
-        'M.core.init_formslib',
+$PAGE->requires->yui_module('moodle-core-formchangechecker',
+        'M.core_formchangechecker.init',
         array(array(
             'formid' => 'adminsettings'
         ))
index 88fbdef..321ce44 100644 (file)
@@ -97,7 +97,6 @@ if ($hassiteconfig
     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_users', new lang_string('generalusers','backup'), new lang_string('configgeneralusers','backup'), array('value'=>1, 'locked'=>0)));
     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_anonymize', new lang_string('generalanonymize','backup'), new lang_string('configgeneralanonymize','backup'), array('value'=>0, 'locked'=>0)));
     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_role_assignments', new lang_string('generalroleassignments','backup'), new lang_string('configgeneralroleassignments','backup'), array('value'=>1, 'locked'=>0)));
-    $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_user_files', new lang_string('generaluserfiles','backup'), new lang_string('configgeneraluserfiles','backup'), array('value'=>1, 'locked'=>0)));
     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_activities', new lang_string('generalactivities','backup'), new lang_string('configgeneralactivities','backup'), array('value'=>1, 'locked'=>0)));
     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_blocks', new lang_string('generalblocks','backup'), new lang_string('configgeneralblocks','backup'), array('value'=>1, 'locked'=>0)));
     $temp->add(new admin_setting_configcheckbox_with_lock('backup/backup_general_filters', new lang_string('generalfilters','backup'), new lang_string('configgeneralfilters','backup'), array('value'=>1, 'locked'=>0)));
@@ -144,7 +143,6 @@ if ($hassiteconfig
     $temp->add(new admin_setting_heading('automatedsettings', new lang_string('automatedsettings','backup'), ''));
     $temp->add(new admin_setting_configcheckbox('backup/backup_auto_users', new lang_string('generalusers', 'backup'), new lang_string('configgeneralusers', 'backup'), 1));
     $temp->add(new admin_setting_configcheckbox('backup/backup_auto_role_assignments', new lang_string('generalroleassignments','backup'), new lang_string('configgeneralroleassignments','backup'), 1));
-    $temp->add(new admin_setting_configcheckbox('backup/backup_auto_user_files', new lang_string('generaluserfiles', 'backup'), new lang_string('configgeneraluserfiles','backup'), 1));
     $temp->add(new admin_setting_configcheckbox('backup/backup_auto_activities', new lang_string('generalactivities','backup'), new lang_string('configgeneralactivities','backup'), 1));
     $temp->add(new admin_setting_configcheckbox('backup/backup_auto_blocks', new lang_string('generalblocks','backup'), new lang_string('configgeneralblocks','backup'), 1));
     $temp->add(new admin_setting_configcheckbox('backup/backup_auto_filters', new lang_string('generalfilters','backup'), new lang_string('configgeneralfilters','backup'), 1));
index 4cee03b..4887c1f 100644 (file)
@@ -1,22 +1,22 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<XMLDB PATH="admin/tool/customlang/db" VERSION="20110925" COMMENT="XMLDB file for Moodle admin/tool/customlang"
+<XMLDB PATH="admin/tool/customlang/db" VERSION="20120122" COMMENT="XMLDB file for Moodle admin/tool/customlang"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="../../../../lib/xmldb/xmldb.xsd"
 >
   <TABLES>
     <TABLE NAME="tool_customlang" COMMENT="Contains the working checkout of all strings and their customization" NEXT="tool_customlang_components">
       <FIELDS>
-        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" NEXT="lang"/>
+        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true" NEXT="lang"/>
         <FIELD NAME="lang" TYPE="char" LENGTH="20" NOTNULL="true" SEQUENCE="false" COMMENT="The code of the language this string belongs to. Like en, cs or es" PREVIOUS="id" NEXT="componentid"/>
-        <FIELD NAME="componentid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="false" COMMENT="The id of the component" PREVIOUS="lang" NEXT="stringid"/>
+        <FIELD NAME="componentid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false" COMMENT="The id of the component" PREVIOUS="lang" NEXT="stringid"/>
         <FIELD NAME="stringid" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" COMMENT="The identifier of the string" PREVIOUS="componentid" NEXT="original"/>
         <FIELD NAME="original" TYPE="text" LENGTH="big" NOTNULL="true" SEQUENCE="false" COMMENT="English original of the string" PREVIOUS="stringid" NEXT="master"/>
         <FIELD NAME="master" TYPE="text" LENGTH="big" NOTNULL="false" SEQUENCE="false" COMMENT="Master translation of the string as is distributed in the official lang pack, null if not translated" PREVIOUS="original" NEXT="local"/>
         <FIELD NAME="local" TYPE="text" LENGTH="big" NOTNULL="false" SEQUENCE="false" COMMENT="Local customization of the string, null if not customized" PREVIOUS="master" NEXT="timemodified"/>
-        <FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="false" COMMENT="The timestamp of when the original or master was recently modified" PREVIOUS="local" NEXT="timecustomized"/>
-        <FIELD NAME="timecustomized" TYPE="int" LENGTH="10" NOTNULL="false" UNSIGNED="true" SEQUENCE="false" COMMENT="The timestamp of when the value of the local translation was recently modified, null if not customized yet" PREVIOUS="timemodified" NEXT="outdated"/>
-        <FIELD NAME="outdated" TYPE="int" LENGTH="3" NOTNULL="false" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" COMMENT="Either the English original or the master translation changed and the customization may be outdated" PREVIOUS="timecustomized" NEXT="modified"/>
-        <FIELD NAME="modified" TYPE="int" LENGTH="3" NOTNULL="false" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" COMMENT="Has the string been modified via the translator?" PREVIOUS="outdated"/>
+        <FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false" COMMENT="The timestamp of when the original or master was recently modified" PREVIOUS="local" NEXT="timecustomized"/>
+        <FIELD NAME="timecustomized" TYPE="int" LENGTH="10" NOTNULL="false" SEQUENCE="false" COMMENT="The timestamp of when the value of the local translation was recently modified, null if not customized yet" PREVIOUS="timemodified" NEXT="outdated"/>
+        <FIELD NAME="outdated" TYPE="int" LENGTH="3" NOTNULL="false" DEFAULT="0" SEQUENCE="false" COMMENT="Either the English original or the master translation changed and the customization may be outdated" PREVIOUS="timecustomized" NEXT="modified"/>
+        <FIELD NAME="modified" TYPE="int" LENGTH="3" NOTNULL="false" DEFAULT="0" SEQUENCE="false" COMMENT="Has the string been modified via the translator?" PREVIOUS="outdated"/>
       </FIELDS>
       <KEYS>
         <KEY NAME="primary" TYPE="primary" FIELDS="id" NEXT="fk_component"/>
@@ -28,7 +28,7 @@
     </TABLE>
     <TABLE NAME="tool_customlang_components" COMMENT="Contains the list of all installed plugins that provide their own language pack" PREVIOUS="tool_customlang">
       <FIELDS>
-        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" NEXT="name"/>
+        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true" NEXT="name"/>
         <FIELD NAME="name" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" COMMENT="The normalized name of the plugin" PREVIOUS="id" NEXT="version"/>
         <FIELD NAME="version" TYPE="char" LENGTH="255" NOTNULL="false" SEQUENCE="false" COMMENT="The checked out version of the plugin, null if the version is unknown" PREVIOUS="name"/>
       </FIELDS>
index 83b648c..b46f972 100644 (file)
@@ -179,13 +179,11 @@ function uu_validate_user_upload_columns(csv_import_reader $cir, $stdfields, $pr
         print_error('csvfewcolumns', 'error', $returnurl);
     }
 
-    $textlib = textlib_get_instance(); // profile fields may contain unicode chars
-
     // test columns
     $processed = array();
     foreach ($columns as $key=>$unused) {
         $field = $columns[$key];
-        $lcfield = $textlib->strtolower($field);
+        $lcfield = textlib::strtolower($field);
         if (in_array($field, $stdfields) or in_array($lcfield, $stdfields)) {
             // standard fields are only lowercase
             $newfield = $lcfield;
@@ -281,8 +279,6 @@ function uu_process_template($template, $user) {
  * Internal callback function.
  */
 function uu_process_template_callback($username, $firstname, $lastname, $block) {
-    $textlib = textlib_get_instance();
-
     switch ($block[3]) {
         case 'u':
             $repl = $username;
@@ -299,18 +295,18 @@ function uu_process_template_callback($username, $firstname, $lastname, $block)
 
     switch ($block[1]) {
         case '+':
-            $repl = $textlib->strtoupper($repl);
+            $repl = textlib::strtoupper($repl);
             break;
         case '-':
-            $repl = $textlib->strtolower($repl);
+            $repl = textlib::strtolower($repl);
             break;
         case '~':
-            $repl = $textlib->strtotitle($repl);
+            $repl = textlib::strtotitle($repl);
             break;
     }
 
     if (!empty($block[2])) {
-        $repl = $textlib->substr($repl, 0 , $block[2]);
+        $repl = textlib::substr($repl, 0 , $block[2]);
     }
 
     return $repl;
index 33b1119..7fb74b0 100644 (file)
@@ -53,8 +53,7 @@ class admin_uploaduser_form1 extends moodleform {
             $mform->setDefault('delimiter_name', 'comma');
         }
 
-        $textlib = textlib_get_instance();
-        $choices = $textlib->get_encodings();
+        $choices = textlib::get_encodings();
         $mform->addElement('select', 'encoding', get_string('encoding', 'tool_uploaduser'), $choices);
         $mform->setDefault('encoding', 'UTF-8');
 
index f2def4a..18b4995 100644 (file)
@@ -23,8 +23,7 @@
 
 /**
  * reporting about the ones not physically implemented as BIGINTs
- * and providing one SQL script to fix all them. Also, under MySQL,
- * it performs one check of signed bigints. MDL-11038
+ * and providing one SQL script to fix all them. MDL-11038
  *
  * @package    tool
  * @subpackage xmldb
@@ -53,7 +52,6 @@ class check_bigints extends XMLDBCheckAction {
             'wrongints' => 'tool_xmldb',
             'nowrongintsfound' => 'tool_xmldb',
             'yeswrongintsfound' => 'tool_xmldb',
-            'mysqlextracheckbigints' => 'tool_xmldb',
         ));
 
         // Correct fields must be type bigint for MySQL and int8 for PostgreSQL
@@ -90,8 +88,8 @@ class check_bigints extends XMLDBCheckAction {
                 $metacolumn = $metacolumns[$xmldb_field->getName()];
                 // Going to check this field in DB
                 $o.='            <li>' . $this->str['field'] . ': ' . $xmldb_field->getName() . ' ';
-                // Detect if the physical field is wrong and, under mysql, check for incorrect signed fields too
-                if ($metacolumn->type != $this->correct_type || ($this->dbfamily == 'mysql' && $xmldb_field->getUnsigned() && !$metacolumn->unsigned)) {
+                // Detect if the physical field is wrong
+                if ($metacolumn->type != $this->correct_type) {
                     $o.='<font color="red">' . $this->str['wrong'] . '</font>';
                     // Add the wrong field to the list
                     $obj = new stdClass();
index 1cf3969..632d12e 100644 (file)
@@ -88,7 +88,7 @@ class create_xml_file extends XMLDBAction {
         $c.= '    <TABLES>' . "\n";
         $c.= '      <TABLE NAME="' . $xmltable . '" COMMENT="Default comment for ' . $xmltable .', please edit me">' . "\n";
         $c.= '        <FIELDS>' . "\n";
-        $c.= '          <FIELD NAME="id" TYPE="int" LENGTH="10" UNSIGNED="true" NOTNULL="true" SEQUENCE="true" />' . "\n";
+        $c.= '          <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true" />' . "\n";
         $c.= '        </FIELDS>' . "\n";
         $c.= '        <KEYS>' . "\n";
         $c.= '          <KEY NAME="primary" TYPE="primary" FIELDS="id" />' . "\n";
index 2c38399..f13ec30 100644 (file)
@@ -155,11 +155,6 @@ class edit_field extends XMLDBAction {
         // xmldb_field Decimals
         $o.= '      <tr valign="top"><td><label for="decimals" accesskey="d">Decimals:</label></td>';
         $o.= '        <td colspan="2"><input name="decimals" type="text" size="6" maxlength="6" id="decimals" value="' . s($field->getDecimals()) . '" /><span id="decimalstip"></span></td></tr>';
-        // xmldb_field Unsigned
-        $unsignedoptions = array (0 => 'signed', 1 => 'unsigned');
-        $select = html_writer::select($unsignedoptions, 'unsigned', $field->getUnsigned(), false);
-        $o.= '      <tr valign="top"><td><label for="menuunsigned" accesskey="u">Unsigned:</label></td>';
-        $o.= '        <td colspan="2">' . $select . '</td></tr>';
         // xmldb_field NotNull
         $notnulloptions = array (0 => 'null', 'not null');
         $select = html_writer::select($notnulloptions, 'notnull', $field->getNotNull(), false);
index 61aac8b..b5a45c1 100644 (file)
@@ -50,7 +50,6 @@ function transformForm(event) {
     var typeField         = document.getElementById('menutype');
     var lengthField       = document.getElementById('length');
     var decimalsField     = document.getElementById('decimals');
-    var unsignedField     = document.getElementById('menuunsigned');
     var notnullField      = document.getElementById('menunotnull');
     var sequenceField     = document.getElementById('menusequence');
     var defaultField      = document.getElementById('default');
@@ -60,15 +59,12 @@ function transformForm(event) {
 
     // Initially, enable everything
     decimalsField.disabled = false;
-    unsignedField.disabled = false;
     notnullField.disabled = false;
     sequenceField.disabled = false;
     defaultField.disabled = false;
 
     // Based on sequence, disable some items
     if (sequenceField.value == '1') {
-        unsignedField.disabled = true;
-        unsignedField.value = '1';
         notnullField.disabled = true;
         notnullField.value = '1';
         defaultField.disabled = true;
@@ -86,22 +82,16 @@ function transformForm(event) {
         case '2':  // XMLDB_TYPE_NUMBER
             lengthTip.innerHTML = ' 1...20';
             decimalsTip.innerHTML = ' 0...length or empty';
-            unsignedField.disabled = true;
-            unsignedField.value = '0';
             break;
         case '3':  // XMLDB_TYPE_FLOAT
             lengthTip.innerHTML = ' 1...20 or empty';
             decimalsTip.innerHTML = ' 0...length or empty';
-            unsignedField.disabled = true;
-            unsignedField.value = '0';
             break;
         case '4':  // XMLDB_TYPE_CHAR
             lengthTip.innerHTML = ' 1...1333'; // Hardcoded, yes!
             decimalsTip.innerHTML = '';
             decimalsField.disabled = true;
             decimalsField.value = '';
-            unsignedField.disabled = true;
-            unsignedField.value = '0';
             sequenceField.disabled = true;
             sequenceField.value = '0';
             break;
@@ -110,8 +100,6 @@ function transformForm(event) {
             decimalsTip.innerHTML = '';
             decimalsField.disabled = true;
             decimalsField.value = '';
-            unsignedField.disabled = true;
-            unsignedField.value = '0';
             sequenceField.disabled = true;
             sequenceField.value = '0';
             defaultField.disabled = true;
@@ -122,8 +110,6 @@ function transformForm(event) {
             decimalsTip.innerHTML = '';
             decimalsField.disabled = true;
             decimalsField.value = '';
-            unsignedField.disabled = true;
-            unsignedField.value = '0';
             sequenceField.disabled = true;
             sequenceField.value = '0';
             defaultField.disabled = true;
@@ -136,8 +122,6 @@ function transformForm(event) {
             decimalsTip.innerHTML = '';
             decimalsField.disabled = true;
             decimalsField.value = '';
-            unsignedField.disabled = true;
-            unsignedField.value = '0';
             sequenceField.disabled = true;
             sequenceField.value = '0';
             defaultField.disabled = true;
index 0e1f7d8..a1b4a80 100644 (file)
@@ -96,7 +96,6 @@ class edit_field_save extends XMLDBAction {
         $type       = required_param('type', PARAM_INT);
         $length     = strtolower(optional_param('length', NULL, PARAM_ALPHANUM));
         $decimals   = optional_param('decimals', NULL, PARAM_INT);
-        $unsigned   = optional_param('unsigned', false, PARAM_BOOL);
         $notnull    = optional_param('notnull', false, PARAM_BOOL);
         $sequence   = optional_param('sequence', false, PARAM_BOOL);
         $default    = optional_param('default', NULL, PARAM_PATH);
@@ -112,7 +111,6 @@ class edit_field_save extends XMLDBAction {
 
         // Perform some automatic assumptions
         if ($sequence) {
-            $unsigned = true;
             $notnull  = true;
             $default  = NULL;
         }
@@ -231,7 +229,6 @@ class edit_field_save extends XMLDBAction {
             $tempfield->setType($type);
             $tempfield->setLength($length);
             $tempfield->setDecimals($decimals);
-            $tempfield->setUnsigned($unsigned);
             $tempfield->setNotNull($notnull);
             $tempfield->setSequence($sequence);
             $tempfield->setDefault($default);
@@ -268,7 +265,6 @@ class edit_field_save extends XMLDBAction {
             $field->setType($type);
             $field->setLength($length);
             $field->setDecimals($decimals);
-            $field->setUnsigned($unsigned);
             $field->setNotNull($notnull);
             $field->setSequence($sequence);
             $field->setDefault($default);
index 2bace7f..97403f6 100644 (file)
@@ -43,7 +43,6 @@
     <td class="cell c1" style="white-space: nowrap;">
       <xsl:value-of select="@TYPE"/>
       (<xsl:value-of select="@LENGTH"/><xsl:if test="@DECIMALS">, <xsl:value-of select="@DECIMALS"/></xsl:if>)
-      <xsl:if test="@UNSIGNED='true'">unsigned </xsl:if>
       <xsl:if test="@NOTNULL='true'">not null </xsl:if>
       <xsl:if test="@DEFAULT">
         <xsl:choose>
index bb34696..cfdb385 100644 (file)
@@ -90,7 +90,6 @@ class new_table extends XMLDBAction {
             $field->setType(XMLDB_TYPE_INTEGER);
             $field->setLength(10);
             $field->setNotNull(true);
-            $field->setUnsigned(true);
             $field->setSequence(true);
             $field->setLoaded(true);
             $field->setChanged(true);
index 36a1d88..57c0bd3 100644 (file)
@@ -125,7 +125,6 @@ class view_table_php extends XMLDBAction {
                          $optionspacer . 'rename_field',
                          $optionspacer . 'change_field_type',
                          $optionspacer . 'change_field_precision',
-                         $optionspacer . 'change_field_unsigned',
                          $optionspacer . 'change_field_notnull',
                          $optionspacer . 'change_field_default',
                          $optionspacer . 'drop_enum_from_field', // TODO: Moodle 2.1 - Drop drop_enum_from_field
@@ -218,13 +217,6 @@ class view_table_php extends XMLDBAction {
                         $o.= $this->str['mustselectonefield'];
                     }
                     break;
-                case 'change_field_unsigned':
-                    if ($fieldkeyindexinitial == 'f') { //Only if we have got one field
-                        $o.= s($this->change_field_unsigned_php($structure, $tableparam, $fieldkeyindexparam));
-                    } else {
-                        $o.= $this->str['mustselectonefield'];
-                    }
-                    break;
                 case 'change_field_notnull':
                     if ($fieldkeyindexinitial == 'f') { // Only if we have got one field
                         $o.= s($this->change_field_notnull_php($structure, $tableparam, $fieldkeyindexparam));
@@ -553,54 +545,6 @@ class view_table_php extends XMLDBAction {
         return $result;
     }
 
-    /**
-     * This function will generate all the PHP code needed to
-     * change the unsigned/signed of one field using XMLDB objects and functions
-     *
-     * @param xmldb_structure structure object containing all the info
-     * @param string table table name
-     * @param string field field name to change unsigned/signed
-     */
-    function change_field_unsigned_php($structure, $table, $field) {
-
-        $result = '';
-        // Validate if we can do it
-        if (!$table = $structure->getTable($table)) {
-            return false;
-        }
-        if (!$field = $table->getField($field)) {
-            return false;
-        }
-        if ($table->getAllErrors()) {
-            return false;
-        }
-
-        // Calculate the unsigned tip text
-        $unsigned = $field->getUnsigned() ? 'unsigned' : 'signed';
-
-        // Add the standard PHP header
-        $result .= XMLDB_PHP_HEADER;
-
-        // Add contents
-        $result .= XMLDB_LINEFEED;
-        $result .= '        // Changing sign of field ' . $field->getName() . ' on table ' . $table->getName() . ' to ' . $unsigned . XMLDB_LINEFEED;
-        $result .= '        $table = new xmldb_table(' . "'" . $table->getName() . "'" . ');' . XMLDB_LINEFEED;
-        $result .= '        $field = new xmldb_field(' . "'" . $field->getName() . "', " . $field->getPHP(true) . ');' . XMLDB_LINEFEED;
-
-        // Launch the proper DDL
-        $result .= XMLDB_LINEFEED;
-        $result .= '        // Launch change of sign for field ' . $field->getName() . XMLDB_LINEFEED;
-        $result .= '        $dbman->change_field_unsigned($table, $field);' . XMLDB_LINEFEED;
-
-        // Add the proper upgrade_xxxx_savepoint call
-        $result .= $this->upgrade_savepoint_php ($structure);
-
-        // Add standard PHP footer
-        $result .= XMLDB_PHP_FOOTER;
-
-        return $result;
-    }
-
     /**
      * This function will generate all the PHP code needed to
      * change the nullability of one field using XMLDB objects and functions
index b24a219..ebb4878 100644 (file)
@@ -126,7 +126,6 @@ $string['missingindexes'] = 'Missing indexes found';
 $string['mustselectonefield'] = 'You must select one field to see field related actions!';
 $string['mustselectoneindex'] = 'You must select one index to see index related actions!';
 $string['mustselectonekey'] = 'You must select one key to see key related actions!';
-$string['mysqlextracheckbigints'] = 'Under MySQL it also looks for incorrectly signed bigints, generating the required SQL to be executed in order to fix all them.';
 $string['newfield'] = 'New field';
 $string['newindex'] = 'New index';
 $string['newkey'] = 'New key';
index d66bdb8..fa6fb0f 100644 (file)
@@ -51,7 +51,7 @@ class auth_plugin_cas extends auth_plugin_ldap {
      */
     function user_login ($username, $password) {
         $this->connectCAS();
-        return phpCAS::isAuthenticated() && (trim(moodle_strtolower(phpCAS::getUser())) == $username);
+        return phpCAS::isAuthenticated() && (trim(textlib::strtolower(phpCAS::getUser())) == $username);
     }
 
     /**
@@ -336,15 +336,15 @@ class auth_plugin_cas extends auth_plugin_ldap {
         set_config('host_url', trim($config->host_url), $this->pluginconfig);
         set_config('ldapencoding', trim($config->ldapencoding), $this->pluginconfig);
         set_config('contexts', trim($config->contexts), $this->pluginconfig);
-        set_config('user_type', moodle_strtolower(trim($config->user_type)), $this->pluginconfig);
-        set_config('user_attribute', moodle_strtolower(trim($config->user_attribute)), $this->pluginconfig);
+        set_config('user_type', textlib::strtolower(trim($config->user_type)), $this->pluginconfig);
+        set_config('user_attribute', textlib::strtolower(trim($config->user_attribute)), $this->pluginconfig);
         set_config('search_sub', $config->search_sub, $this->pluginconfig);
         set_config('opt_deref', $config->opt_deref, $this->pluginconfig);
         set_config('bind_dn', trim($config->bind_dn), $this->pluginconfig);
         set_config('bind_pw', $config->bind_pw, $this->pluginconfig);
         set_config('ldap_version', $config->ldap_version, $this->pluginconfig);
         set_config('objectclass', trim($config->objectclass), $this->pluginconfig);
-        set_config('memberattribute', moodle_strtolower(trim($config->memberattribute)), $this->pluginconfig);
+        set_config('memberattribute', textlib::strtolower(trim($config->memberattribute)), $this->pluginconfig);
         set_config('memberattribute_isdn', $config->memberattribute_isdn, $this->pluginconfig);
         set_config('attrcreators', trim($config->attrcreators), $this->pluginconfig);
         set_config('groupecreators', trim($config->groupecreators), $this->pluginconfig);
@@ -364,8 +364,7 @@ class auth_plugin_cas extends auth_plugin_ldap {
             return false;
         }
 
-        $textlib = textlib_get_instance();
-        $extusername = $textlib->convert($username, 'utf-8', $this->config->ldapencoding);
+        $extusername = textlib::convert($username, 'utf-8', $this->config->ldapencoding);
 
         // Test for group creator
         if (!empty($this->config->groupecreators)) {
index 9f88bbd..d1572a3 100644 (file)
@@ -133,9 +133,8 @@ class auth_plugin_ldap extends auth_plugin_base {
             return false;
         }
 
-        $textlib = textlib_get_instance();
-        $extusername = $textlib->convert($username, 'utf-8', $this->config->ldapencoding);
-        $extpassword = $textlib->convert($password, 'utf-8', $this->config->ldapencoding);
+        $extusername = textlib::convert($username, 'utf-8', $this->config->ldapencoding);
+        $extpassword = textlib::convert($password, 'utf-8', $this->config->ldapencoding);
 
         // Before we connect to LDAP, check if this is an AD SSO login
         // if we succeed in this block, we'll return success early.
@@ -199,8 +198,7 @@ class auth_plugin_ldap extends auth_plugin_base {
      * @return mixed array with no magic quotes or false on error
      */
     function get_userinfo($username) {
-        $textlib = textlib_get_instance();
-        $extusername = $textlib->convert($username, 'utf-8', $this->config->ldapencoding);
+        $extusername = textlib::convert($username, 'utf-8', $this->config->ldapencoding);
 
         $ldapconnection = $this->ldap_connect();
         if(!($user_dn = $this->ldap_find_userdn($ldapconnection, $extusername))) {
@@ -245,9 +243,9 @@ class auth_plugin_ldap extends auth_plugin_base {
                     continue; // wrong data mapping!
                 }
                 if (is_array($entry[$value])) {
-                    $newval = $textlib->convert($entry[$value][0], $this->config->ldapencoding, 'utf-8');
+                    $newval = textlib::convert($entry[$value][0], $this->config->ldapencoding, 'utf-8');
                 } else {
-                    $newval = $textlib->convert($entry[$value], $this->config->ldapencoding, 'utf-8');
+                    $newval = textlib::convert($entry[$value], $this->config->ldapencoding, 'utf-8');
                 }
                 if (!empty($newval)) { // favour ldap entries that are set
                     $ldapval = $newval;
@@ -298,8 +296,7 @@ class auth_plugin_ldap extends auth_plugin_base {
      * @param string $username
      */
     function user_exists($username) {
-        $textlib = textlib_get_instance();
-        $extusername = $textlib->convert($username, 'utf-8', $this->config->ldapencoding);
+        $extusername = textlib::convert($username, 'utf-8', $this->config->ldapencoding);
 
         // Returns true if given username exists on ldap
         $users = $this->ldap_get_userlist('('.$this->config->user_attribute.'='.ldap_filter_addslashes($extusername).')');
@@ -315,9 +312,8 @@ class auth_plugin_ldap extends auth_plugin_base {
      * @param mixed $plainpass   Plaintext password
      */
     function user_create($userobject, $plainpass) {
-        $textlib = textlib_get_instance();
-        $extusername = $textlib->convert($userobject->username, 'utf-8', $this->config->ldapencoding);
-        $extpassword = $textlib->convert($plainpass, 'utf-8', $this->config->ldapencoding);
+        $extusername = textlib::convert($userobject->username, 'utf-8', $this->config->ldapencoding);
+        $extpassword = textlib::convert($plainpass, 'utf-8', $this->config->ldapencoding);
 
         switch ($this->config->passtype) {
             case 'md5':
@@ -342,7 +338,7 @@ class auth_plugin_ldap extends auth_plugin_base {
             }
             foreach ($values as $value) {
                 if (!empty($userobject->$key) ) {
-                    $newuser[$value] = $textlib->convert($userobject->$key, 'utf-8', $this->config->ldapencoding);
+                    $newuser[$value] = textlib::convert($userobject->$key, 'utf-8', $this->config->ldapencoding);
                 }
             }
         }
@@ -570,8 +566,7 @@ class auth_plugin_ldap extends auth_plugin_base {
     function password_expire($username) {
         $result = 0;
 
-        $textlib = textlib_get_instance();
-        $extusername = $textlib->convert($username, 'utf-8', $this->config->ldapencoding);
+        $extusername = textlib::convert($username, 'utf-8', $this->config->ldapencoding);
 
         $ldapconnection = $this->ldap_connect();
         $user_dn = $this->ldap_find_userdn($ldapconnection, $extusername);
@@ -616,7 +611,6 @@ class auth_plugin_ldap extends auth_plugin_base {
         print_string('connectingldap', 'auth_ldap');
         $ldapconnection = $this->ldap_connect();
 
-        $textlib = textlib_get_instance();
         $dbman = $DB->get_manager();
 
     /// Define table user to be created
@@ -667,7 +661,7 @@ class auth_plugin_ldap extends auth_plugin_base {
             if ($entry = @ldap_first_entry($ldapconnection, $ldap_result)) {
                 do {
                     $value = ldap_get_values_len($ldapconnection, $entry, $this->config->user_attribute);
-                    $value = $textlib->convert($value[0], $this->config->ldapencoding, 'utf-8');
+                    $value = textlib::convert($value[0], $this->config->ldapencoding, 'utf-8');
                     $this->ldap_bulk_insert($value);
                 } while ($entry = ldap_next_entry($ldapconnection, $entry));
             }
@@ -845,7 +839,7 @@ class auth_plugin_ldap extends auth_plugin_base {
                 $user->mnethostid = $CFG->mnet_localhost_id;
                 // get_userinfo_asobj() might have replaced $user->username with the value
                 // from the LDAP server (which can be mixed-case). Make sure it's lowercase
-                $user->username = trim(moodle_strtolower($user->username));
+                $user->username = trim(textlib::strtolower($user->username));
                 if (empty($user->lang)) {
                     $user->lang = $CFG->lang;
                 }
@@ -889,7 +883,7 @@ class auth_plugin_ldap extends auth_plugin_base {
         global $CFG, $DB;
 
         // Just in case check text case
-        $username = trim(moodle_strtolower($username));
+        $username = trim(textlib::strtolower($username));
 
         // Get the current user record
         $user = $DB->get_record('user', array('username'=>$username, 'mnethostid'=>$CFG->mnet_localhost_id));
@@ -934,7 +928,7 @@ class auth_plugin_ldap extends auth_plugin_base {
     function ldap_bulk_insert($username) {
         global $DB, $CFG;
 
-        $username = moodle_strtolower($username); // usernames are __always__ lowercase.
+        $username = textlib::strtolower($username); // usernames are __always__ lowercase.
         $DB->insert_record_raw('tmp_extuser', array('username'=>$username,
                                                     'mnethostid'=>$CFG->mnet_localhost_id), false, true);
         echo '.';
@@ -947,8 +941,7 @@ class auth_plugin_ldap extends auth_plugin_base {
      * @return boolean result
      */
     function user_activate($username) {
-        $textlib = textlib_get_instance();
-        $extusername = $textlib->convert($username, 'utf-8', $this->config->ldapencoding);
+        $extusername = textlib::convert($username, 'utf-8', $this->config->ldapencoding);
 
         $ldapconnection = $this->ldap_connect();
 
@@ -998,8 +991,7 @@ class auth_plugin_ldap extends auth_plugin_base {
             return null;
         }
 
-        $textlib = textlib_get_instance();
-        $extusername = $textlib->convert($username, 'utf-8', $this->config->ldapencoding);
+        $extusername = textlib::convert($username, 'utf-8', $this->config->ldapencoding);
 
         $ldapconnection = $this->ldap_connect();
 
@@ -1057,8 +1049,7 @@ class auth_plugin_ldap extends auth_plugin_base {
             return true;
         }
 
-        $textlib = textlib_get_instance();
-        $extoldusername = $textlib->convert($olduser->username, 'utf-8', $this->config->ldapencoding);
+        $extoldusername = textlib::convert($olduser->username, 'utf-8', $this->config->ldapencoding);
 
         $ldapconnection = $this->ldap_connect();
 
@@ -1112,9 +1103,9 @@ class auth_plugin_ldap extends auth_plugin_base {
                         $ambiguous = false;
                     }
 
-                    $nuvalue = $textlib->convert($newuser->$key, 'utf-8', $this->config->ldapencoding);
+                    $nuvalue = textlib::convert($newuser->$key, 'utf-8', $this->config->ldapencoding);
                     empty($nuvalue) ? $nuvalue = array() : $nuvalue;
-                    $ouvalue = $textlib->convert($olduser->$key, 'utf-8', $this->config->ldapencoding);
+                    $ouvalue = textlib::convert($olduser->$key, 'utf-8', $this->config->ldapencoding);
 
                     foreach ($ldapkeys as $ldapkey) {
                         $ldapkey   = $ldapkey;
@@ -1210,9 +1201,8 @@ class auth_plugin_ldap extends auth_plugin_base {
         $result = false;
         $username = $user->username;
 
-        $textlib = textlib_get_instance();
-        $extusername = $textlib->convert($username, 'utf-8', $this->config->ldapencoding);
-        $extpassword = $textlib->convert($newpassword, 'utf-8', $this->config->ldapencoding);
+        $extusername = textlib::convert($username, 'utf-8', $this->config->ldapencoding);
+        $extpassword = textlib::convert($newpassword, 'utf-8', $this->config->ldapencoding);
 
         switch ($this->config->passtype) {
             case 'md5':
@@ -1380,13 +1370,13 @@ class auth_plugin_ldap extends auth_plugin_base {
         $moodleattributes = array();
         foreach ($this->userfields as $field) {
             if (!empty($this->config->{"field_map_$field"})) {
-                $moodleattributes[$field] = moodle_strtolower(trim($this->config->{"field_map_$field"}));
+                $moodleattributes[$field] = textlib::strtolower(trim($this->config->{"field_map_$field"}));
                 if (preg_match('/,/', $moodleattributes[$field])) {
                     $moodleattributes[$field] = explode(',', $moodleattributes[$field]); // split ?
                 }
             }
         }
-        $moodleattributes['username'] = moodle_strtolower(trim($this->config->user_attribute));
+        $moodleattributes['username'] = textlib::strtolower(trim($this->config->user_attribute));
         return $moodleattributes;
     }
 
@@ -1435,9 +1425,8 @@ class auth_plugin_ldap extends auth_plugin_base {
             $users = ldap_get_entries_moodle($ldapconnection, $ldap_result);
 
             // Add found users to list
-            $textlib = textlib_get_instance();
             for ($i = 0; $i < count($users); $i++) {
-                $extuser = $textlib->convert($users[$i][$this->config->user_attribute][0],
+                $extuser = textlib::convert($users[$i][$this->config->user_attribute][0],
                                              $this->config->ldapencoding, 'utf-8');
                 array_push($fresult, $extuser);
             }
@@ -1575,8 +1564,7 @@ class auth_plugin_ldap extends auth_plugin_base {
             // (according to my reading of RFC-1945, RFC-2616 and RFC-2617 and
             // my local tests), so we need to convert the REMOTE_USER value
             // (i.e., what we got from the HTTP WWW-Authenticate header) into UTF-8
-            $textlib = textlib_get_instance();
-            $username = $textlib->convert($_SERVER['REMOTE_USER'], 'iso-8859-1', 'utf-8');
+            $username = textlib::convert($_SERVER['REMOTE_USER'], 'iso-8859-1', 'utf-8');
 
             switch ($this->config->ntlmsso_type) {
                 case 'ntlm':
@@ -1592,7 +1580,7 @@ class auth_plugin_ldap extends auth_plugin_base {
                     return false; // Should never happen!
             }
 
-            $username = moodle_strtolower($username); // Compatibility hack
+            $username = textlib::strtolower($username); // Compatibility hack
             set_cache_flag($this->pluginconfig.'/ntlmsess', $sesskey, $username, AUTH_NTLMTIMEOUT);
             return true;
         }
@@ -1794,8 +1782,8 @@ class auth_plugin_ldap extends auth_plugin_base {
         set_config('host_url', trim($config->host_url), $this->pluginconfig);
         set_config('ldapencoding', trim($config->ldapencoding), $this->pluginconfig);
         set_config('contexts', trim($config->contexts), $this->pluginconfig);
-        set_config('user_type', moodle_strtolower(trim($config->user_type)), $this->pluginconfig);
-        set_config('user_attribute', moodle_strtolower(trim($config->user_attribute)), $this->pluginconfig);
+        set_config('user_type', textlib::strtolower(trim($config->user_type)), $this->pluginconfig);
+        set_config('user_attribute', textlib::strtolower(trim($config->user_attribute)), $this->pluginconfig);
         set_config('search_sub', $config->search_sub, $this->pluginconfig);
         set_config('opt_deref', $config->opt_deref, $this->pluginconfig);
         set_config('preventpassindb', $config->preventpassindb, $this->pluginconfig);
@@ -1803,15 +1791,15 @@ class auth_plugin_ldap extends auth_plugin_base {
         set_config('bind_pw', $config->bind_pw, $this->pluginconfig);
         set_config('ldap_version', $config->ldap_version, $this->pluginconfig);
         set_config('objectclass', trim($config->objectclass), $this->pluginconfig);
-        set_config('memberattribute', moodle_strtolower(trim($config->memberattribute)), $this->pluginconfig);
+        set_config('memberattribute', textlib::strtolower(trim($config->memberattribute)), $this->pluginconfig);
         set_config('memberattribute_isdn', $config->memberattribute_isdn, $this->pluginconfig);
         set_config('creators', trim($config->creators), $this->pluginconfig);
         set_config('create_context', trim($config->create_context), $this->pluginconfig);
         set_config('expiration', $config->expiration, $this->pluginconfig);
         set_config('expiration_warning', trim($config->expiration_warning), $this->pluginconfig);
-        set_config('expireattr', moodle_strtolower(trim($config->expireattr)), $this->pluginconfig);
+        set_config('expireattr', textlib::strtolower(trim($config->expireattr)), $this->pluginconfig);
         set_config('gracelogins', $config->gracelogins, $this->pluginconfig);
-        set_config('graceattr', moodle_strtolower(trim($config->graceattr)), $this->pluginconfig);
+        set_config('graceattr', textlib::strtolower(trim($config->graceattr)), $this->pluginconfig);
         set_config('auth_user_create', $config->auth_user_create, $this->pluginconfig);
         set_config('forcechangepassword', $config->forcechangepassword, $this->pluginconfig);
         set_config('stdchangepassword', $config->stdchangepassword, $this->pluginconfig);
index f0c9754..da87824 100644 (file)
@@ -441,7 +441,6 @@ class moodle1_root_handler extends moodle1_xml_handler {
             'users'            => 0, // @todo how to detect this from moodle.xml?
             'anonymize'        => 0,
             'role_assignments' => 0,
-            'user_files'       => 0,
             'activities'       => 1,
             'blocks'           => 1,
             'filters'          => 0,
@@ -1190,8 +1189,7 @@ class moodle1_question_bank_handler extends moodle1_xml_handler {
 
         // replay the upgrade step 2010080901 - updating question image
         if (!empty($data['image'])) {
-            $textlib = textlib_get_instance();
-            if ($textlib->substr($textlib->strtolower($data['image']), 0, 7) == 'http://') {
+            if (textlib::substr(textlib::strtolower($data['image']), 0, 7) == 'http://') {
                 // it is a link, appending to existing question text
                 $data['questiontext'] .= ' <img src="' . $data['image'] . '" />';
 
index 86e2026..e79dbfe 100644 (file)
@@ -1161,9 +1161,6 @@ class moodle1_file_manager implements loggable {
     /** @var string the root of the converter temp directory */
     protected $basepath;
 
-    /** @var textlib instance used during the migration */
-    protected $textlib;
-
     /** @var array of file ids that were migrated by this instance */
     protected $fileids = array();
 
@@ -1187,7 +1184,6 @@ class moodle1_file_manager implements loggable {
         $this->userid    = $userid;
         // set other useful bits
         $this->basepath  = $converter->get_tempdir_path();
-        $this->textlib   = textlib_get_instance();
     }
 
     /**
@@ -1218,7 +1214,7 @@ class moodle1_file_manager implements loggable {
         }
         $filepath = clean_param($filepath, PARAM_PATH);
 
-        if ($this->textlib->strlen($filepath) > 255) {
+        if (textlib::strlen($filepath) > 255) {
             throw new moodle1_convert_exception('file_path_longer_than_255_chars');
         }
 
index b9f7251..abbecb8 100644 (file)
@@ -64,7 +64,7 @@ class backup_final_task extends backup_task {
         // done in a single pass
         $this->add_step(new backup_annotate_all_question_files('question_files'));
 
-        // Annotate all the user files (conditionally) (private, profile and icon files)
+        // Annotate all the user files (conditionally) (profile and icon files)
         // Because each user has its own context, we need a separate/specialised step here
         // This step also ensures that the contexts for all the users exist, so next
         // step can be safely executed (join between users and contexts)
index fc65242..011a7b5 100644 (file)
@@ -96,13 +96,6 @@ class backup_root_task extends backup_task {
         $this->add_setting($roleassignments);
         $users->add_dependency($roleassignments);
 
-        // Define user_files (dependent of users and anonymize)
-        $userfiles = new backup_user_files_setting('user_files', base_setting::IS_BOOLEAN, true);
-        $userfiles->set_ui(new backup_setting_ui_checkbox($userfiles, get_string('rootsettinguserfiles', 'backup')));
-        $this->add_setting($userfiles);
-        $users->add_dependency($userfiles);
-        $anonymize->add_dependency($userfiles, setting_dependency::DISABLED_TRUE);
-
         // Define activities
         $activities = new backup_activities_setting('activities', base_setting::IS_BOOLEAN, true);
         $activities->set_ui(new backup_setting_ui_checkbox($activities, get_string('rootsettingactivities', 'backup')));
index fe39f2c..31e3c73 100644 (file)
@@ -80,13 +80,6 @@ class backup_activities_setting extends backup_generic_setting {}
  */
 class backup_anonymize_setting extends root_backup_setting {}
 
-/**
- * root setting to control if backup will include
- * user files or no (images, local storage), depends of @backup_users_setting
- * exactly in the same way than @backup_anonymize_setting so we extend from it
- */
-class backup_user_files_setting extends backup_anonymize_setting {}
-
 /**
  * root setting to control if backup will include
  * role assignments or no (any level), depends of @backup_users_setting
index b87e3cc..78d2721 100644 (file)
@@ -1768,10 +1768,6 @@ class backup_annotate_all_user_files extends backup_execution_step {
         // List of fileareas we are going to annotate
         $fileareas = array('profile', 'icon');
 
-        if ($this->get_setting_value('user_files')) { // private files only if enabled in settings
-            $fileareas[] = 'private';
-        }
-
         // Fetch all annotated (final) users
         $rs = $DB->get_recordset('backup_ids_temp', array(
             'backupid' => $this->get_backupid(), 'itemname' => 'userfinal'));
index ac3f81d..319fe08 100644 (file)
@@ -125,19 +125,6 @@ class restore_root_task extends restore_task {
         $this->add_setting($roleassignments);
         $users->add_dependency($roleassignments);
 
-        // Define user_files (dependent of users)
-        $defaultvalue = false;                      // Safer default
-        $changeable = false;
-        if (isset($rootsettings['user_files']) && $rootsettings['user_files']) { // Only enabled when available
-            $defaultvalue = true;
-            $changeable = true;
-        }
-        $userfiles = new restore_user_files_setting('user_files', base_setting::IS_BOOLEAN, $defaultvalue);
-        $userfiles->set_ui(new backup_setting_ui_checkbox($userfiles, get_string('rootsettinguserfiles', 'backup')));
-        $userfiles->get_ui()->set_changeable($changeable);
-        $this->add_setting($userfiles);
-        $users->add_dependency($userfiles);
-
         // Define activitites
         $defaultvalue = false;                      // Safer default
         $changeable = false;
index 4efd4e8..9d48778 100644 (file)
@@ -76,11 +76,9 @@ class restore_section_task extends restore_task {
         // Define the task contextid (the course one)
         $this->contextid = get_context_instance(CONTEXT_COURSE, $this->get_courseid())->id;
 
-        // Executed conditionally if restoring to new course or deleting or if overwrite_conf setting is enabled
-        if ($this->get_target() == backup::TARGET_NEW_COURSE || $this->get_target() == backup::TARGET_CURRENT_DELETING ||
-            $this->get_target() == backup::TARGET_EXISTING_DELETING || $this->get_setting_value('overwrite_conf') == true) {
-            $this->add_step(new restore_section_structure_step('course_info', 'section.xml'));
-        }
+        // We always try to restore as much info from sections as possible, no matter of the type
+        // of restore (new, existing, deleting, import...). MDL-27764
+        $this->add_step(new restore_section_structure_step('course_info', 'section.xml'));
 
         // At the end, mark it as built
         $this->built = true;
index 6be3cc2..09f92fe 100644 (file)
@@ -49,13 +49,6 @@ class restore_users_setting extends restore_generic_setting {}
  */
 class restore_role_assignments_setting extends root_backup_setting {}
 
-/**
- * root setting to control if restore will create
- * user files or no (images, local storage), depends of @restore_users_setting
- * exactly in the same way than @restore_role_assignments_setting so we extend from it
- */
-class restore_user_files_setting extends restore_role_assignments_setting {}
-
 /**
  * root setting to control if restore will create activities
  * A lot of other settings (_included at activity levels)
index e62129b..58048ec 100644 (file)
@@ -684,7 +684,7 @@ class restore_create_included_users extends restore_execution_step {
 
     protected function define_execution() {
 
-        restore_dbops::create_included_users($this->get_basepath(), $this->get_restoreid(), $this->get_setting_value('user_files'), $this->task->get_userid());
+        restore_dbops::create_included_users($this->get_basepath(), $this->get_restoreid(), $this->task->get_userid());
     }
 }
 
index 6eba776..911df71 100644 (file)
                     //Process contacts
                     if ($contactcount) {
                         if (!defined('RESTORE_SILENTLY')) {
-                            echo '<li>'.moodle_strtolower(get_string('contacts','message')).'</li>';
+                            echo '<li>'.textlib::strtolower(get_string('contacts','message')).'</li>';
                         }
                         $counter = 0;
                         while ($counter < $contactcount) {
index cd89d82..dffdb8d 100644 (file)
@@ -440,7 +440,6 @@ abstract class backup_controller_dbops extends backup_dbops {
             'backup_general_users'              => 'users',
             'backup_general_anonymize'          => 'anonymize',
             'backup_general_role_assignments'   => 'role_assignments',
-            'backup_general_user_files'         => 'user_files',
             'backup_general_activities'         => 'activities',
             'backup_general_blocks'             => 'blocks',
             'backup_general_filters'            => 'filters',
index f6e25b7..2ce9434 100644 (file)
@@ -204,7 +204,7 @@ abstract class backup_plan_dbops extends backup_dbops {
         global $DB;
 
         // Calculate backup word
-        $backupword = str_replace(' ', '_', moodle_strtolower(get_string('backupfilename')));
+        $backupword = str_replace(' ', '_', textlib::strtolower(get_string('backupfilename')));
         $backupword = trim(clean_filename($backupword), '_');
 
         $shortname = '';
@@ -228,7 +228,7 @@ abstract class backup_plan_dbops extends backup_dbops {
                     break;
             }
             $shortname = str_replace(' ', '_', $shortname);
-            $shortname = moodle_strtolower(trim(clean_filename($shortname), '_'));
+            $shortname = textlib::strtolower(trim(clean_filename($shortname), '_'));
         }
 
         $name = empty($shortname) ? $id : $shortname;
@@ -236,7 +236,7 @@ abstract class backup_plan_dbops extends backup_dbops {
         // Calculate date
         $backupdateformat = str_replace(' ', '_', get_string('backupnameformat', 'langconfig'));
         $date = userdate(time(), $backupdateformat, 99, false);
-        $date = moodle_strtolower(trim(clean_filename($date), '_'));
+        $date = textlib::strtolower(trim(clean_filename($date), '_'));
 
         // Calculate info
         $info = '';
index 58342b2..25f2e53 100644 (file)
@@ -730,7 +730,7 @@ abstract class restore_dbops {
      * ready to be created. Also, annotate their newids
      * once created for later reference
      */
-    public static function create_included_users($basepath, $restoreid, $userfiles, $userid) {
+    public static function create_included_users($basepath, $restoreid, $userid) {
         global $CFG, $DB;
 
         $authcache = array(); // Cache to get some bits from authentication plugins
@@ -871,10 +871,6 @@ abstract class restore_dbops {
                 // Create user files in pool (profile, icon, private) by context
                 restore_dbops::send_files_to_pool($basepath, $restoreid, 'user', 'icon', $recuser->parentitemid, $userid);
                 restore_dbops::send_files_to_pool($basepath, $restoreid, 'user', 'profile', $recuser->parentitemid, $userid);
-                if ($userfiles) { // private files only if enabled in settings
-                    restore_dbops::send_files_to_pool($basepath, $restoreid, 'user', 'private', $recuser->parentitemid, $userid);
-                }
-
             }
         }
         $rs->close();
index 8631be6..32ab61e 100644 (file)
@@ -323,7 +323,6 @@ abstract class backup_cron_automated_helper {
             $settings = array(
                 'users' => 'backup_auto_users',
                 'role_assignments' => 'backup_auto_role_assignments',
-                'user_files' => 'backup_auto_user_files',
                 'activities' => 'backup_auto_activities',
                 'blocks' => 'backup_auto_blocks',
                 'filters' => 'backup_auto_filters',
@@ -460,7 +459,7 @@ abstract class backup_cron_automated_helper {
         $storage =  $config->backup_auto_storage;
         $dir =      $config->backup_auto_destination;
 
-        $backupword = str_replace(' ', '_', moodle_strtolower(get_string('backupfilename')));
+        $backupword = str_replace(' ', '_', textlib::strtolower(get_string('backupfilename')));
         $backupword = trim(clean_filename($backupword), '_');
 
         if (!file_exists($dir) || !is_dir($dir) || !is_writable($dir)) {
index 0845440..7afcdfd 100644 (file)
@@ -97,7 +97,9 @@ class core_backup_renderer extends plugin_renderer_base {
         $html .= html_writer::start_tag('div', array('class'=>'backup-section settings-section'));
         $html .= $this->output->heading(get_string('backupsettings', 'backup'), 2, array('class'=>'header'));
         foreach ($details->root_settings as $label=>$value) {
-            if ($label == 'filename') continue;
+            if ($label == 'filename' or $label == 'user_files') {
+                continue;
+            }
             $html .= $this->backup_detail_pair(get_string('rootsetting'.str_replace('_','',$label), 'backup'), $value?$yestick:$notick);
         }
         $html .= html_writer::end_tag('div');
@@ -568,6 +570,12 @@ class core_backup_renderer extends plugin_renderer_base {
         $output = html_writer::start_tag('div', array('class' => 'import-course-search'));
         if ($component->get_count() === 0) {
             $output .= $this->output->notification(get_string('nomatchingcourses', 'backup'));
+
+            $output .= html_writer::start_tag('div', array('class'=>'ics-search'));
+            $output .= html_writer::empty_tag('input', array('type'=>'text', 'name'=>restore_course_search::$VAR_SEARCH, 'value'=>$component->get_search()));
+            $output .= html_writer::empty_tag('input', array('type'=>'submit', 'name'=>'searchcourses', 'value'=>get_string('search')));
+            $output .= html_writer::end_tag('div');
+
             $output .= html_writer::end_tag('div');
             return $output;
         }
index adae38a..b95681d 100644 (file)
@@ -164,22 +164,37 @@ abstract class restore_search_base implements renderable {
         $this->totalcount = 0;
         $contextlevel = $this->get_itemcontextlevel();
         list($sql, $params) = $this->get_searchsql();
-        $resultset = $DB->get_recordset_sql($sql, $params, 0, 250);
-        foreach ($resultset as $result) {
-            context_instance_preload($result);
-            $context = get_context_instance($contextlevel, $result->id);
-            if (count($this->requiredcapabilities) > 0) {
-                foreach ($this->requiredcapabilities as $cap) {
-                    if (!has_capability($cap['capability'], $context, $cap['user'])) {
-                        continue 2;
+        $blocksz = 5000;
+        $offs = 0;
+        // Get total number, to avoid some incorrect iterations
+        $countsql = preg_replace('/ORDER BY.*/', '', $sql);
+        $totalcourses = $DB->count_records_sql("SELECT COUNT(*) FROM ($countsql) sel", $params);
+        // User to be checked is always the same (usually null, get it form first element)
+        $firstcap = reset($this->requiredcapabilities);
+        $userid = isset($firstcap['user']) ? $firstcap['user'] : null;
+        // Extract caps to check, this saves us a bunch of iterations
+        $requiredcaps = array();
+        foreach ($this->requiredcapabilities as $cap) {
+            $requiredcaps[] = $cap['capability'];
+        }
+        // Iterate while we have records and haven't reached MAXRESULTS
+        while ($totalcourses > $offs and $this->totalcount < self::$MAXRESULTS) {
+            $resultset = $DB->get_records_sql($sql, $params, $offs, $blocksz);
+            foreach ($resultset as $result) {
+                context_instance_preload($result);
+                $context = get_context_instance($contextlevel, $result->id);
+                if (count($requiredcaps) > 0) {
+                    if (!has_all_capabilities($requiredcaps, $context, $userid)) {
+                        continue;
                     }
                 }
+                $this->results[$result->id] = $result;
+                $this->totalcount++;
+                if ($this->totalcount >= self::$MAXRESULTS) {
+                    break;
+                }
             }
-            $this->results[$result->id] = $result;
-            $this->totalcount++;
-            if ($this->totalcount >= self::$MAXRESULTS) {
-                break;
-            }
+            $offs += $blocksz;
         }
 
         return $this->totalcount;
index 9803f0a..7ee85bb 100644 (file)
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<XMLDB PATH="blocks/community/db" VERSION="20100428" COMMENT="XMLDB file for Moodle blocks/community"
+<XMLDB PATH="blocks/community/db" VERSION="20120122" COMMENT="XMLDB file for Moodle blocks/community"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd"
 >
   <TABLES>
     <TABLE NAME="block_community" COMMENT="Community block">
       <FIELDS>
-        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" NEXT="userid"/>
-        <FIELD NAME="userid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="false" PREVIOUS="id" NEXT="coursename"/>
+        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true" NEXT="userid"/>
+        <FIELD NAME="userid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false" PREVIOUS="id" NEXT="coursename"/>
         <FIELD NAME="coursename" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" PREVIOUS="userid" NEXT="coursedescription"/>
         <FIELD NAME="coursedescription" TYPE="text" LENGTH="big" NOTNULL="false" SEQUENCE="false" PREVIOUS="coursename" NEXT="courseurl"/>
         <FIELD NAME="courseurl" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" PREVIOUS="coursedescription" NEXT="imageurl"/>
index 2d03518..d5610c0 100644 (file)
@@ -242,81 +242,74 @@ class block_navigation extends block_base {
      * @param int $long The length to trim text to
      * @param int $short The length to trim shorttext to
      * @param bool $recurse Recurse all children
-     * @param textlib|null $textlib
      */
-    public function trim(navigation_node $node, $mode=1, $long=50, $short=25, $recurse=true, $textlib=null) {
-        if ($textlib == null) {
-            $textlib = textlib_get_instance();
-        }
+    public function trim(navigation_node $node, $mode=1, $long=50, $short=25, $recurse=true) {
         switch ($mode) {
             case self::TRIM_RIGHT :
-                if ($textlib->strlen($node->text)>($long+3)) {
+                if (textlib::strlen($node->text)>($long+3)) {
                     // Truncate the text to $long characters
-                    $node->text = $this->trim_right($textlib, $node->text, $long);
+                    $node->text = $this->trim_right($node->text, $long);
                 }
-                if (is_string($node->shorttext) && $textlib->strlen($node->shorttext)>($short+3)) {
+                if (is_string($node->shorttext) && textlib::strlen($node->shorttext)>($short+3)) {
                     // Truncate the shorttext
-                    $node->shorttext = $this->trim_right($textlib, $node->shorttext, $short);
+                    $node->shorttext = $this->trim_right($node->shorttext, $short);
                 }
                 break;
             case self::TRIM_LEFT :
-                if ($textlib->strlen($node->text)>($long+3)) {
+                if (textlib::strlen($node->text)>($long+3)) {
                     // Truncate the text to $long characters
-                    $node->text = $this->trim_left($textlib, $node->text, $long);
+                    $node->text = $this->trim_left($node->text, $long);
                 }
-                if (is_string($node->shorttext) && $textlib->strlen($node->shorttext)>($short+3)) {
+                if (is_string($node->shorttext) && textlib::strlen($node->shorttext)>($short+3)) {
                     // Truncate the shorttext
-                    $node->shorttext = $this->trim_left($textlib, $node->shorttext, $short);
+                    $node->shorttext = $this->trim_left($node->shorttext, $short);
                 }
                 break;
             case self::TRIM_CENTER :
-                if ($textlib->strlen($node->text)>($long+3)) {
+                if (textlib::strlen($node->text)>($long+3)) {
                     // Truncate the text to $long characters
-                    $node->text = $this->trim_center($textlib, $node->text, $long);
+                    $node->text = $this->trim_center($node->text, $long);
                 }
-                if (is_string($node->shorttext) && $textlib->strlen($node->shorttext)>($short+3)) {
+                if (is_string($node->shorttext) && textlib::strlen($node->shorttext)>($short+3)) {
                     // Truncate the shorttext
-                    $node->shorttext = $this->trim_center($textlib, $node->shorttext, $short);
+                    $node->shorttext = $this->trim_center($node->shorttext, $short);
                 }
                 break;
         }
         if ($recurse && $node->children->count()) {
             foreach ($node->children as &$child) {
-                $this->trim($child, $mode, $long, $short, true, $textlib);
+                $this->trim($child, $mode, $long, $short, true);
             }
         }
     }
     /**
      * Truncate a string from the left
-     * @param textlib $textlib
      * @param string $string The string to truncate
      * @param int $length The length to truncate to
      * @return string The truncated string
      */
-    protected function trim_left($textlib, $string, $length) {
-        return '...'.$textlib->substr($string, $textlib->strlen($string)-$length, $length);
+    protected function trim_left($string, $length) {
+        return '...'.textlib::substr($string, textlib::strlen($string)-$length, $length);
     }
     /**
      * Truncate a string from the right
-     * @param textlib $textlib
      * @param string $string The string to truncate
      * @param int $length The length to truncate to
      * @return string The truncated string
      */
-    protected function trim_right($textlib, $string, $length) {
-        return $textlib->substr($string, 0, $length).'...';
+    protected function trim_right($string, $length) {
+        return textlib::substr($string, 0, $length).'...';
     }
     /**
      * Truncate a string in the center
-     * @param textlib $textlib
      * @param string $string The string to truncate
      * @param int $length The length to truncate to
      * @return string The truncated string
      */
-    protected function trim_center($textlib, $string, $length) {
+    protected function trim_center($string, $length) {
         $trimlength = ceil($length/2);
-        $start = $textlib->substr($string, 0, $trimlength);
-        $end = $textlib->substr($string, $textlib->strlen($string)-$trimlength);
+        $start = textlib::substr($string, 0, $trimlength);
+        $end = textlib::substr($string, textlib::strlen($string)-$trimlength);
         $string = $start.'...'.$end;
         return $string;
     }
index a3aa511..086983d 100644 (file)
      */
     function format_title($title,$max=64) {
 
-        // Loading the textlib singleton instance. We are going to need it.
-        $textlib = textlib_get_instance();
-
-        if ($textlib->strlen($title) <= $max) {
+        if (textlib::strlen($title) <= $max) {
             return s($title);
         } else {
-            return s($textlib->substr($title,0,$max-3).'...');
+            return s(textlib::substr($title,0,$max-3).'...');
         }
     }
 
index e5f9ebf..dbd1f14 100644 (file)
@@ -1,17 +1,17 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<XMLDB PATH="blocks/rss_client/db" VERSION="20060912" COMMENT="XMLDB file for Moodle rss_client block"
+<XMLDB PATH="blocks/rss_client/db" VERSION="20120122" COMMENT="XMLDB file for Moodle rss_client block"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd"
 >
   <TABLES>
     <TABLE NAME="block_rss_client" COMMENT="Remote news feed information. Contains the news feed id, the userid of the user who added the feed, the title of the feed itself and a description of the feed contents along with the url used to access the remote feed. Preferredtitle is a field for future use - intended to allow for custom titles rather than those found in the feed">
       <FIELDS>
-        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" NEXT="userid"/>
-        <FIELD NAME="userid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="id" NEXT="title"/>
+        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true" NEXT="userid"/>
+        <FIELD NAME="userid" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="id" NEXT="title"/>
         <FIELD NAME="title" TYPE="text" LENGTH="small" NOTNULL="true" SEQUENCE="false" PREVIOUS="userid" NEXT="preferredtitle"/>
         <FIELD NAME="preferredtitle" TYPE="char" LENGTH="64" NOTNULL="true" SEQUENCE="false" PREVIOUS="title" NEXT="description"/>
         <FIELD NAME="description" TYPE="text" LENGTH="small" NOTNULL="true" SEQUENCE="false" PREVIOUS="preferredtitle" NEXT="shared"/>
-        <FIELD NAME="shared" TYPE="int" LENGTH="2" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="description" NEXT="url"/>
+        <FIELD NAME="shared" TYPE="int" LENGTH="2" NOTNULL="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="description" NEXT="url"/>
         <FIELD NAME="url" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" PREVIOUS="shared"/>
       </FIELDS>
       <KEYS>
index 080df70..ab9fd52 100644 (file)
@@ -150,8 +150,6 @@ function blog_sync_external_entries($externalblog) {
     $rssfile = new moodle_simplepie_file($externalblog->url);
     $filetest = new SimplePie_Locator($rssfile);
 
-    $textlib = textlib_get_instance(); // Going to use textlib services
-
     if (!$filetest->is_feed($rssfile)) {
         $externalblog->failedlastsync = 1;
         $DB->update_record('blog_external', $externalblog);
@@ -203,8 +201,8 @@ function blog_sync_external_entries($externalblog) {
         $newentry->subject = clean_param($entry->get_title(), PARAM_TEXT);
         // Observe 128 max chars in DB
         // TODO: +1 to raise this to 255
-        if ($textlib->strlen($newentry->subject) > 128) {
-            $newentry->subject = $textlib->substr($newentry->subject, 0, 125) . '...';
+        if (textlib::strlen($newentry->subject) > 128) {
+            $newentry->subject = textlib::substr($newentry->subject, 0, 125) . '...';
         }
         $newentry->summary = $entry->get_description();
 
@@ -239,8 +237,7 @@ function blog_sync_external_entries($externalblog) {
             $oldesttimestamp = $timestamp;
         }
 
-        $textlib = textlib_get_instance();
-        if ($textlib->strlen($newentry->uniquehash) > 255) {
+        if (textlib::strlen($newentry->uniquehash) > 255) {
             // The URL for this item is too long for the field. Rather than add
             // the entry without the link we will skip straight over it.
             // RSS spec says recommended length 500, we use 255.
index e33f77a..367b19e 100644 (file)
@@ -71,8 +71,9 @@ function cohort_add_cohort($cohort) {
  */
 function cohort_update_cohort($cohort) {
     global $DB;
-    if (isset($cohort->component) and empty($cohort->component)) {
-        $cohort->component = NULL;
+    if (property_exists($cohort, 'component') and empty($cohort->component)) {
+        // prevent NULLs
+        $cohort->component = '';
     }
     $cohort->timemodified = time();
     $DB->update_record('cohort', $cohort);
index cc7c3c0..b8ce8f2 100644 (file)
@@ -42,7 +42,7 @@ $context = get_context_instance(CONTEXT_COURSE, $course->id);
 
 if (($marker >=0) && has_capability('moodle/course:setcurrentsection', $context) && confirm_sesskey()) {
     $course->marker = $marker;
-    $DB->set_field("course", "marker", $marker, array("id"=>$course->id));
+    course_set_marker($course->id, $marker);
 }
 
 $streditsummary  = get_string('editsummary');
index d34d9ec..f35bbfa 100644 (file)
@@ -389,8 +389,7 @@ function print_log($course, $user=0, $date=0, $order="l.time ASC", $page=0, $per
 
         // If $log->url has been trimmed short by the db size restriction
         // code in add_to_log, keep a note so we don't add a link to a broken url
-        $tl=textlib_get_instance();
-        $brokenurl=($tl->strlen($log->url)==100 && $tl->substr($log->url,97)=='...');
+        $brokenurl=(textlib::strlen($log->url)==100 && textlib::substr($log->url,97)=='...');
 
         $row = array();
         if ($course->id == SITEID) {
@@ -1341,6 +1340,18 @@ function course_set_display($courseid, $display) {
     return $display;
 }
 
+/**
+ * Set highlighted section. Only one section can be highlighted at the time.
+ *
+ * @param int $courseid course id
+ * @param int $marker highlight section with this number, 0 means remove higlightin
+ * @return void
+ */
+function course_set_marker($courseid, $marker) {
+    global $DB;
+    $DB->set_field("course", "marker", $marker, array('id' => $courseid));
+}
+
 /**
  * For a given course section, marks it visible or hidden,
  * and does the same for every activity in that section
@@ -1435,8 +1446,6 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
         $initialised = true;
     }
 
-    $tl = textlib_get_instance();
-
     $modinfo = get_fast_modinfo($course);
     $completioninfo = new completion_info($course);
 
@@ -1561,8 +1570,8 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
             // Avoid unnecessary duplication: if e.g. a forum name already
             // includes the word forum (or Forum, etc) then it is unhelpful
             // to include that in the accessible description that is added.
-            if (false !== strpos($tl->strtolower($instancename),
-                    $tl->strtolower($altname))) {
+            if (false !== strpos(textlib::strtolower($instancename),
+                    textlib::strtolower($altname))) {
                 $altname = '';
             }
             // File type after name, for alphabetic lists (screen reader).
@@ -2872,9 +2881,10 @@ function delete_mod_from_section($mod, $section) {
 /**
  * Moves a section up or down by 1. CANNOT BE USED DIRECTLY BY AJAX!
  *
- * @param object $course
- * @param int $section
+ * @param object $course course object
+ * @param int $section Section number (not id!!!)
  * @param int $move (-1 or 1)
+ * @return boolean true if section moved successfully
  */
 function move_section($course, $section, $move) {
 /// Moves a whole course section up and down within the course
@@ -2901,6 +2911,13 @@ function move_section($course, $section, $move) {
     $DB->set_field("course_sections", "section", $sectiondest, array("id"=>$sectionrecord->id));
     $DB->set_field("course_sections", "section", $section, array("id"=>$sectiondestrecord->id));
 
+    // Update highlighting if the move affects highlighted section
+    if ($course->marker == $section) {
+        course_set_marker($course->id, $sectiondest);
+    } elseif ($course->marker == $sectiondest) {
+        course_set_marker($course->id, $section);
+    }
+
     // if the focus is on the section that is being moved, then move the focus along
     if (course_get_display($course->id) == $section) {
         course_set_display($course->id, $sectiondest);
index 134cce0..fcf09fd 100644 (file)
@@ -78,7 +78,7 @@ $PAGE->navbar->add($userinfo);
 $PAGE->set_title("$course->shortname: $strrecentactivity");
 $PAGE->set_heading($course->fullname);
 echo $OUTPUT->header();
-echo $OUTPUT->heading(format_string($course->fullname) . ": $userinfo", 3);
+echo $OUTPUT->heading(format_string($course->fullname) . ": $userinfo", 2);
 
 $mform->display();
 
@@ -238,8 +238,8 @@ if (!empty($activities)) {
                 $modfullname = $modnames[$cm->modname];
 
                 $image = "<img src=\"" . $OUTPUT->pix_url('icon', $cm->modname) . "\" class=\"icon\" alt=\"$modfullname\" />";
-                echo "<h4>$image $modfullname".
-                     " <a href=\"$CFG->wwwroot/mod/$cm->modname/view.php?id=$cm->id\" $linkformat>$name</a></h4>";
+                echo "<h3>$image $modfullname".
+                     " <a href=\"$CFG->wwwroot/mod/$cm->modname/view.php?id=$cm->id\" $linkformat>$name</a></h3>";
            }
 
         } else {
@@ -269,7 +269,7 @@ if (!empty($activities)) {
 
 } else {
 
-    echo '<h4><center>' . get_string('norecentactivity') . '</center></h2>';
+    echo '<h3><center>' . get_string('norecentactivity') . '</center></h3>';
 
 }
 
index 933e4f1..5125ffb 100644 (file)
@@ -159,10 +159,7 @@ switch($requestmethod) {
                         require_login($course);
                         $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
                         require_capability('moodle/course:update', $coursecontext);
-                        $newcourse = new stdClass();
-                        $newcourse->id = $course->id;
-                        $newcourse->marker = $value;
-                        $DB->update_record('course', $newcourse);
+                        course_set_marker($course->id, $value);
                         break;
                 }
                 break;
index 7317094..8b2621f 100644 (file)
 
             if (!empty($section)) {
                 if (!empty($move) and confirm_sesskey()) {
-                    if (!move_section($course, $section, $move)) {
+                    if (move_section($course, $section, $move)) {
+                        if ($course->id == SITEID) {
+                            redirect($CFG->wwwroot . '/?redirect=0');
+                        } else {
+                            redirect($PAGE->url);
+                        }
+                    } else {
                         echo $OUTPUT->notification('An error occurred while moving a section');
                     }
-                    // Clear the navigation cache at this point so that the affects
-                    // are seen immediately on the navigation.
-                    $PAGE->navigation->clear_cache();
                 }
             }
         }
index 0a65b29..1f96ce5 100644 (file)
@@ -1,22 +1,22 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<XMLDB PATH="enrol/authorize/db" VERSION="20100812" COMMENT="XMLDB file for Moodle enrol/authorize"
+<XMLDB PATH="enrol/authorize/db" VERSION="20120122" COMMENT="XMLDB file for Moodle enrol/authorize"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd"
 >
   <TABLES>
     <TABLE NAME="enrol_authorize" COMMENT="Holds all known information about authorize.net transactions" NEXT="enrol_authorize_refunds">
       <FIELDS>
-        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" NEXT="paymentmethod"/>
+        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true" NEXT="paymentmethod"/>
         <FIELD NAME="paymentmethod" TYPE="char" LENGTH="6" NOTNULL="true" DEFAULT="cc" SEQUENCE="false" PREVIOUS="id" NEXT="refundinfo"/>
-        <FIELD NAME="refundinfo" TYPE="int" LENGTH="4" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="paymentmethod" NEXT="ccname"/>
+        <FIELD NAME="refundinfo" TYPE="int" LENGTH="4" NOTNULL="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="paymentmethod" NEXT="ccname"/>
         <FIELD NAME="ccname" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" PREVIOUS="refundinfo" NEXT="courseid"/>
-        <FIELD NAME="courseid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="ccname" NEXT="instanceid"/>
-        <FIELD NAME="instanceid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="courseid" NEXT="userid"/>
-        <FIELD NAME="userid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="instanceid" NEXT="transid"/>
-        <FIELD NAME="transid" TYPE="int" LENGTH="20" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="userid" NEXT="status"/>
-        <FIELD NAME="status" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="transid" NEXT="timecreated"/>
-        <FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="status" NEXT="settletime"/>
-        <FIELD NAME="settletime" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="timecreated" NEXT="amount"/>
+        <FIELD NAME="courseid" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="ccname" NEXT="instanceid"/>
+        <FIELD NAME="instanceid" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="courseid" NEXT="userid"/>
+        <FIELD NAME="userid" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="instanceid" NEXT="transid"/>
+        <FIELD NAME="transid" TYPE="int" LENGTH="20" NOTNULL="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="userid" NEXT="status"/>
+        <FIELD NAME="status" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="transid" NEXT="timecreated"/>
+        <FIELD NAME="timecreated" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="status" NEXT="settletime"/>
+        <FIELD NAME="settletime" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="timecreated" NEXT="amount"/>
         <FIELD NAME="amount" TYPE="char" LENGTH="10" NOTNULL="true" SEQUENCE="false" PREVIOUS="settletime" NEXT="currency"/>
         <FIELD NAME="currency" TYPE="char" LENGTH="3" NOTNULL="true" DEFAULT="USD" SEQUENCE="false" PREVIOUS="amount"/>
       </FIELDS>
     </TABLE>
     <TABLE NAME="enrol_authorize_refunds" COMMENT="Authorize.net refunds" PREVIOUS="enrol_authorize">
       <FIELDS>
-        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" NEXT="orderid"/>
-        <FIELD NAME="orderid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="id" NEXT="status"/>
-        <FIELD NAME="status" TYPE="int" LENGTH="1" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="orderid" NEXT="amount"/>
+        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true" NEXT="orderid"/>
+        <FIELD NAME="orderid" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="id" NEXT="status"/>
+        <FIELD NAME="status" TYPE="int" LENGTH="1" NOTNULL="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="orderid" NEXT="amount"/>
         <FIELD NAME="amount" TYPE="char" LENGTH="10" NOTNULL="true" SEQUENCE="false" PREVIOUS="status" NEXT="transid"/>
-        <FIELD NAME="transid" TYPE="int" LENGTH="20" NOTNULL="false" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="amount" NEXT="settletime"/>
-        <FIELD NAME="settletime" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="transid"/>
+        <FIELD NAME="transid" TYPE="int" LENGTH="20" NOTNULL="false" DEFAULT="0" SEQUENCE="false" PREVIOUS="amount" NEXT="settletime"/>
+        <FIELD NAME="settletime" TYPE="int" LENGTH="10" NOTNULL="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="transid"/>
       </FIELDS>
       <KEYS>
         <KEY NAME="primary" TYPE="primary" FIELDS="id" NEXT="orderid"/>
index 5173b6b..b3305d0 100644 (file)
 
 defined('MOODLE_INTERNAL') || die();
 
+$capabilities = array(
+    /* This is used only when sync suspends users instead of full unenrolment */
+    'enrol/database:unenrol' => array(
+
+        'captype' => 'write',
+        'contextlevel' => CONTEXT_COURSE,
+        'archetypes' => array(
+            'manager' => CAP_ALLOW,
+        )
+    ),
+);
+
+
index 0787b00..18f6420 100644 (file)
@@ -23,6 +23,7 @@
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 
+$string['database:unenrol'] = 'Unenrol suspended users';
 $string['dbencoding'] = 'Database encoding';
 $string['dbhost'] = 'Database host';
 $string['dbhost_desc'] = 'Type database server IP address or host name';
index 08b86f9..f0aa364 100644 (file)
@@ -51,6 +51,43 @@ class enrol_database_plugin extends enrol_plugin {
         return false;
     }
 
+    /**
+     * Does this plugin allow manual unenrolment of a specific user?
+     * Yes, but only if user suspended...
+     *
+     * @param stdClass $instance course enrol instance
+     * @param stdClass $ue record from user_enrolments table
+     *
+     * @return bool - true means user with 'enrol/xxx:unenrol' may unenrol this user, false means nobody may touch this user enrolment
+     */
+    public function allow_unenrol_user(stdClass $instance, stdClass $ue) {
+        if ($ue->status == ENROL_USER_SUSPENDED) {
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Gets an array of the user enrolment actions
+     *
+     * @param course_enrolment_manager $manager
+     * @param stdClass $ue A user enrolment object
+     * @return array An array of user_enrolment_actions
+     */
+    public function get_user_enrolment_actions(course_enrolment_manager $manager, $ue) {
+        $actions = array();
+        $context = $manager->get_context();
+        $instance = $ue->enrolmentinstance;
+        $params = $manager->get_moodlepage()->url->params();
+        $params['ue'] = $ue->id;
+        if ($this->allow_unenrol_user($instance, $ue) && has_capability('enrol/meta:unenrol', $context)) {
+            $url = new moodle_url('/enrol/unenroluser.php', $params);
+            $actions[] = new user_enrolment_action(new pix_icon('t/delete', ''), get_string('unenrol', 'enrol'), $url, array('class'=>'unenrollink', 'rel'=>$ue->id));
+        }
+        return $actions;
+    }
+
     /**
      * Forces synchronisation of user enrolments with external database,
      * does not create new courses.
@@ -781,7 +818,7 @@ class enrol_database_plugin extends enrol_plugin {
             }
             return $text;
         } else {
-            return textlib_get_instance()->convert($text, 'utf-8', $dbenc);
+            return textlib::convert($text, 'utf-8', $dbenc);
         }
     }
 
@@ -796,7 +833,7 @@ class enrol_database_plugin extends enrol_plugin {
             }
             return $text;
         } else {
-            return textlib_get_instance()->convert($text, $dbenc, 'utf-8');
+            return textlib::convert($text, $dbenc, 'utf-8');
         }
     }
 }
index fe7178e..c1a2820 100644 (file)
@@ -25,7 +25,7 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2011112900;        // The current plugin version (Date: YYYYMMDDXX)
-$plugin->requires  = 2011112900;        // Requires this Moodle version
+$plugin->version   = 2012022700;        // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires  = 2012022300;        // Requires this Moodle version
 $plugin->component = 'enrol_database';  // Full name of the plugin (used for&n