Compare commits

..

804 Commits

Author SHA1 Message Date
Eloy Lafuente (stronk7) 2b3dbc7ee9 Moodle release 2.2.6 2012-11-09 19:34:54 +01:00
Eloy Lafuente (stronk7) 23a6a67140 MDL-25948 upgrade: Avoid overlaping with weeklies 2012-11-09 19:02:06 +01:00
Eloy Lafuente (stronk7) 30b9d52d78 Merge branch 'MDL-25948_m22' of git://github.com/markn86/moodle into MOODLE_22_STABLE 2012-11-09 19:01:04 +01:00
Mark Nelson 08f68a7d2f MDL-25948 upgrade: Check that field does not match defaults before editing. 2012-11-09 19:01:13 +08:00
Dan Poltawski 53cd3c286e weekly release 2.2.5+ 2012-11-09 17:59:17 +08:00
Dan Poltawski ab8c8a8f92 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-11-09 17:54:19 +08:00
Mark Nelson d1bed0abc3 MDL-25948 upgrade: Fixing issues with upgrade from < 1.7 to 2.x. 2012-11-09 15:06:29 +08:00
AMOS bot 1b82a6fb65 Automatically generated installer lang files 2012-11-09 00:39:00 +00:00
Dan Poltawski 235ec73c0f Merge branch 'MDL-35349_m22' of git://github.com/markn86/moodle into MOODLE_22_STABLE 2012-11-08 18:55:20 +08:00
Aparup Banerjee c978929e36 Merge branch 'MDL-27824_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-11-08 13:32:45 +08:00
Rossiani Wijaya bf99ef166f MDL-27824 course categories: remove trailing whitespace 2012-11-08 12:33:20 +08:00
Rossiani Wijaya 992d263ac5 MDL-27824 course categories: change isset() to empty() 2012-11-08 12:32:56 +08:00
Rossiani Wijaya 03d17744ea MDL-27824 course categories: Added @todo comments to remove the temporary fix 2012-11-08 12:32:55 +08:00
Rossiani Wijaya d86ad06b6e MDL-27824 - course category: add check test for ->coursesperpage value. 2012-11-08 12:32:55 +08:00
Dan Poltawski 62c2b3d818 Merge branch 'MDL-36422-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-11-08 11:08:17 +08:00
Frederic Massart 341ad08669 MDL-36422 question: Fixed malformed HTML in manual marking 2012-11-08 10:26:23 +08:00
Mark Nelson 1be0790e01 MDL-33791 Portfolio: Fixed security issue with passing file paths. 2012-11-08 00:27:57 +01:00
Mary Evans c4669ce618 MDL-36197 theme_fusion: Fix for "Your progress" overlaps completion tracking checkbox 2012-11-08 11:33:53 +13:00
Sam Hemelryk e3071745bb Merge branch 'MDL-36271_m22' of https://github.com/markn86/moodle into MOODLE_22_STABLE 2012-11-08 11:06:41 +13:00
Adrian Greeve 78602c3fab MDL-35558 mod_data: Show only own entries while there are required pending. 2012-11-07 19:55:08 +01:00
Dan Poltawski 025ca6f7d3 Merge branch 'MDL-36346_22' of git://github.com/pauln/moodle into MOODLE_22_STABLE 2012-11-07 09:28:02 +08:00
Paul Nicholls 5b8bfd14a8 MDL-36346 - YUI2 SWF vulnerability, part 2 2012-11-07 13:55:11 +13:00
AMOS bot b3ddb0951f Automatically generated installer lang files 2012-11-07 00:36:32 +00:00
Andrew Davis 47ae6d3fc9 MDL-35762 core_grade: altered the code that determines whether an activity is visible on the user report 2012-11-06 16:50:08 +01:00
Dan Poltawski d46929e4e3 Merge branch 'MDL-36346_22' of git://github.com/pauln/moodle into MOODLE_22_STABLE 2012-11-06 16:21:18 +08:00
Dan Poltawski 70a5dda65a Merge branch 'wip-MDL-36379-m22' of git://github.com/samhemelryk/moodle into MOODLE_22_STABLE 2012-11-06 09:50:30 +08:00
Paul Nicholls cbfb767fb5 MDL-36346 - YUI2 SWF vulnerability 2012-11-06 14:43:51 +13:00
Sam Hemelryk d16d4761d4 MDL-36379 user_view: fixed issue with page layout when editing was on 2012-11-06 14:01:41 +13:00
Sam Hemelryk 3e8532dadc Merge branch 'MDL-31629-MOODLE_22_STABLE' of git://github.com/micaherne/moodle into MOODLE_22_STABLE 2012-11-06 10:08:22 +13:00
Dan Poltawski 9cbc51937a Merge branch 'wip-mdl-35766-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-11-05 15:11:46 +08:00
Dan Poltawski 5a83ba350d MDL-34527 - fix trailing whitespace 2012-11-05 13:26:44 +08:00
Dan Poltawski 3339623dc0 Merge branch 'wip-MDL-34527-m22' of git://github.com/samhemelryk/moodle into MOODLE_22_STABLE 2012-11-05 13:25:26 +08:00
Sam Hemelryk bfea3bf351 MDL-21625 question: Fixed phpdocs 2012-11-05 16:29:42 +13:00
Sam Hemelryk fdd57e090e Merge branch 'MDL-21625_b_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-11-05 16:27:15 +13:00
Dan Poltawski e262ca4250 Merge branch 'MDL-33621_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-11-05 11:12:49 +08:00
Mark Nelson 853d6d008f MDL-35349 paypal: Fixing return page so that it now declares page context 2012-11-02 15:32:36 +08:00
Dan Poltawski 3fd59e3674 Merge branch 'w42_MDL-35469_m22_geckover' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-11-02 12:07:21 +08:00
Sam Hemelryk 1367a13c88 MDL-34527 forum: Fixed up a couple of SQL queries causing issues in Oracle. 2012-11-02 10:49:39 +13:00
Mark Nelson a9e4129829 MDL-36271 feedback: Fixed variable typo 2012-11-01 15:47:06 +08:00
Dan Poltawski f47b2e4a24 weekly release 2.2.5+ 2012-11-01 14:17:07 +08:00
Dan Poltawski e8a8691a10 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-11-01 14:14:27 +08:00
AMOS bot f9442b3eba Automatically generated installer lang files 2012-11-01 00:36:40 +00:00
Dan Poltawski 02017cb9f3 Merge branch 'MDL-28235-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-31 13:42:31 +08:00
Frederic Massart 306b782436 MDL-28235 form: Removed reference to unexisting close button in help popup 2012-10-31 13:00:56 +08:00
Frederic Massart 4f7ec41692 MDL-28235 form: Removed close icon of help icon popups 2012-10-31 13:00:51 +08:00
Frederic Massart 4274f4d003 MDL-28235 form: Help button popup close accessibility improved
AMOS BEGIN
 CPY [close,editor],[close,form]
AMOS END
2012-10-31 13:00:51 +08:00
Dan Poltawski 18da8c03e0 Merge branch 'MDL-32712-22' of https://github.com/mackensen/moodle into MOODLE_22_STABLE 2012-10-31 11:59:34 +08:00
Dan Poltawski 9787d3a9b5 Merge branch 'wip-mdl-29762-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-31 10:51:03 +08:00
Aparup Banerjee a70978a2bd Merge branch 'MDL-31708-moodle22' of git://github.com/StudiUM/moodle into MOODLE_22_STABLE 2012-10-31 10:05:47 +08:00
Sam Hemelryk 61f0581a02 Merge branch 'MDL-31934_M22' of git://github.com/lazydaisy/moodle into MOODLE_22_STABLE 2012-10-31 10:15:18 +13:00
Mary Evans 4f6f0026e0 MDL-31934 mod/forum: Added CSS fix to mod/forum/styles.css for unread forumposts also reversed a previous commit in theme/base/core.css. 2012-10-30 11:48:49 +00:00
Dan Poltawski 279fe97bd2 Merge branch 'wip-MDL-32326-m22' of git://github.com/samhemelryk/moodle into MOODLE_22_STABLE 2012-10-30 13:40:44 +08:00
Sam Hemelryk e16c434140 Merge branch 'MDL-28235-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-30 17:36:33 +13:00
Dan Poltawski 4c8582b8c0 Merge branch 'wip-mdl-35489-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-30 12:12:01 +08:00
Sam Hemelryk b277186a4e Merge branch 'MDL-35889-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-10-30 15:48:45 +13:00
Dan Poltawski d258956c4a Merge branch 'wip-mdl-35910-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-30 10:00:31 +08:00
Andrew Robert Nicols a6e0e0bf9a MDL-35959 Correct footer for M.core.dialogue 2012-10-30 13:33:59 +13:00
Nadav Kavalerchik a04cf7d76e MDL-36070 - Points label hides UP and Down ordering arrows and Delete Icon on Quiz edit page, in RTL mode (theme/standard) 2012-10-30 13:03:29 +13:00
Sam Hemelryk 0be66059a2 Merge branch 'MDL-36076_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-10-30 12:59:02 +13:00
Michael Aherne 6dc38156a2 MDL-36101 auth_shibboleth Show appropriate error message for suspended accounts 2012-10-30 12:55:30 +13:00
Sam Hemelryk 15b3f43326 Merge branch 'MDL-36103_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-10-30 12:51:34 +13:00
Charles Fulton 5559703a23 MDL-36105 grades: use consistent icon classs 2012-10-30 12:34:58 +13:00
Mary Evans 51e28ed8d7 MDL-36137 theme_magazine: changed forum and description info from center to left aligned. 2012-10-30 12:18:07 +13:00
Dan Poltawski f767e4b066 Merge branch 'm22_MDL-35215' of git://github.com/totara/moodle into MOODLE_22_STABLE 2012-10-29 15:34:03 +08:00
Dan Poltawski 864a95aab3 Merge branch 'MDL-35880-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-10-29 14:35:35 +08:00
Dan Poltawski 2407b73f18 Merge branch 'MDL-34837-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-29 13:55:25 +08:00
AMOS bot c8be58152e Automatically generated installer lang files 2012-10-27 00:34:38 +00:00
Mary Evans 17a826bf54 MDL-31934 theme_base: Fix to add highlight color to unread forum posts. 2012-10-21 01:57:02 +01:00
Eloy Lafuente (stronk7) 67ba0081ba weekly release 2.2.5+ (fix!) 2012-10-19 20:01:56 +08:00
Tim Hunt a9c7672efa MDL-36103 tablelib: links to user profiles are wrong in courses. 2012-10-19 16:51:04 +08:00
Rajesh Taneja f415f6f84b MDL-35910 Assignment 2.2: Fixed included files in assignment zip.
If Marking button is enabled, assignment is open and is not finalized, then don't add file to zip
2012-10-19 16:10:43 +08:00
Rossiani Wijaya 91b1c5c22e MDL-21625 Question bank: fixing whitespace 2012-10-19 15:43:48 +08:00
Rajesh Taneja b53ec9de13 MDL-35766 AJAX: Conditional activity hiding is separately handled by JS 2012-10-19 13:43:47 +08:00
Rossiani Wijaya 8c89ce5f65 MDL-21625 Question bank: Add accessibility to table layout for viewing question list 2012-10-19 13:42:04 +08:00
Gilles-Philippe Leblanc d0d121acb7 MDL-31708 wiki: Wiki 2.0 non-group member can see edit option in navigation block 2012-10-18 08:34:09 -04:00
Aparup Banerjee 10c3c372b9 weekly release 2.2.6+ 2012-10-18 19:45:10 +08:00
Aparup Banerjee b06c8fdd9c Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-10-18 19:21:53 +08:00
Rajesh Taneja 62e1fab324 MDL-35489 users: Check added before using form data 2012-10-18 17:28:29 +08:00
David Tang 8c26d6db93 MDL-31629 auth_shibboleth Use correct language string location 2012-10-18 08:59:40 +01:00
AMOS bot 4a1cf2aa17 Automatically generated installer lang files 2012-10-18 00:34:57 +00:00
Tim Hunt 91a307c918 MDL-36076 qtype multichoice: validation fails on '0' answer. 2012-10-17 13:55:54 +08:00
Aparup Banerjee 656216af37 Merge branch 'MDL-28965-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-10-17 10:40:22 +08:00
AMOS bot 9151d6994a Automatically generated installer lang files 2012-10-17 00:34:40 +00:00
Sam Hemelryk d3eb32a44e Merge branch 'MDL-35412-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-16 17:41:19 +08:00
Dan Poltawski 00f581ca28 Merge branch 'wip-mdl-30691-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-16 16:27:59 +08:00
Dan Poltawski a407d10f1e Merge branch 'wip-mdl-27309-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-16 14:59:23 +08:00
Dan Poltawski d44a43190a Merge branch 'wip-mdl-32218-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-16 14:35:45 +08:00
Ankit Agarwal 01fc1376f5 MDL-35880 user: Adding a heading to profile edit page 2012-10-16 14:18:28 +08:00
Rajesh Taneja c36c0ccc1e MDL-29762 Blocks: Modified checks to show image in html block
Conflicts:

	blocks/html/lib.php
2012-10-16 11:42:23 +08:00
Sam Hemelryk d270f6c22d Merge branch 'MDL-35198-MOODLE_22_STABLE' of git://github.com/mouneyrac/moodle into MOODLE_22_STABLE 2012-10-16 11:22:44 +08:00
Dan Poltawski cecd632a8a Merge branch 'MDL-33815_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-10-16 11:09:14 +08:00
Dan Poltawski 991eb4f6d0 Merge branch 'wip-MDL-32184-s22' of http://github.com/phalacee/moodle into MOODLE_22_STABLE 2012-10-16 10:46:58 +08:00
Dan Poltawski 83c45d6304 MDL-21801 - mod_lesson: version bump
To reflect the new (ppt-less) state
2012-10-16 10:30:21 +08:00
Dan Poltawski 4e2c620700 Merge branch 'MDL-21801_b_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-10-16 10:30:11 +08:00
Adrian Greeve 7df065ce28 MDL-25275 - mod/data - Added a check box to eliminate date searches if desired. 2012-10-16 10:09:30 +08:00
Mark Nielsen e4ce1be4b5 MDL-34837 backup: Restore does not fail when some courses have the same name 2012-10-15 17:19:17 +08:00
Mark Nielsen e2398ac290 MDL-33621 rating: fixed view help error for global scale rating 2012-10-15 16:49:42 +08:00
Petr Škoda e0b2c13e04 MDL-35917 fix cohort phpdocs
Credit goes to Brian Kremer, thanks!
2012-10-15 15:59:39 +08:00
Aparup Banerjee 55c4569bda Merge branch 'MDL-31010-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-10-15 15:54:05 +08:00
Ankit Agarwal cdd2e30a37 MDL-35889 blocks: Adding a legend to the fieldset 2012-10-15 11:25:06 +08:00
Frederic Massart bd404c8e90 MDL-35171 Forms: Date selector always gets UTF-8 strings 2012-10-15 09:45:57 +08:00
AMOS bot 02fa7996c8 Automatically generated installer lang files 2012-10-15 00:34:59 +00:00
Eloy Lafuente (stronk7) f4b03cf8e2 weekly release 2.2.5+ 2012-10-15 00:19:54 +02:00
Eloy Lafuente (stronk7) f5916ab5af Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-10-15 00:07:52 +02:00
Eloy Lafuente (stronk7) 8362d3b35f Revert "MDL-31968 Make NTLM REMOTE_USER format configurable by the admin"
This reverts commit 4496dcc631.

Note that MDL-31968 will be in charge of backporting this to stables
if everything goes well under master (once MDL-31968 is tested and closed)
2012-10-14 23:23:34 +02:00
Eloy Lafuente (stronk7) f06b2de39e Merge branch 'MDL-35858-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-12 02:18:31 +02:00
Ankit Agarwal 45ef5c8e73 MDL-28965 administration: Updating description string for the setting navshowallcourses
Conflicts:

	lang/en/admin.php
2012-10-11 17:15:55 +08:00
Rossiani Wijaya e09d4fcb8c MDL-33815 Online Users block: Add query condition to filter out deleted users and lastaccess date greater than now 2012-10-11 16:07:20 +08:00
Rossiani Wijaya a884d3a618 MDL-21801 Lesson Module: Removing import power point functionality 2012-10-11 15:52:35 +08:00
Ankit Agarwal 78a00990b6 MDL-31010 comments: setup_course should update if passed courseid is different from the cached one 2012-10-11 10:58:13 +08:00
Mary Evans 61560ab45a MDL-35231 theme_serenity: fixed misalignment and styling of mod/assignment/action/edit by updating custommenu css in theme/serenity/style/core.css 2012-10-10 13:04:54 +08:00
Aparup Banerjee cc6b32b227 Merge branch 'w41_MDL-35839_m22_enroldeletecleanup' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-10-10 10:32:24 +08:00
AMOS bot ffc1f310af Automatically generated installer lang files 2012-10-10 00:34:21 +00:00
Simon Coggins f910245bfd MDL-35581 lib: Help popups misaligned for right-to-left languages 2012-10-10 08:57:55 +13:00
Petr Škoda 407a7bd6a9 MDL-35469 fix Gecko based browser checks
The problem is that latest firefox versions stopped using dates because they lost the meaning over the time.
2012-10-09 15:51:07 +02:00
Frederic Massart 2f0b51b9f4 MDL-35858 question: Fixed display of feedback in cloze questions 2012-10-09 16:13:17 +08:00
Aparup Banerjee 9ed6d76f12 Merge branch 'WIP-MDL-35724-M22_quiz' of git://github.com/nadavkav/moodle into MOODLE_22_STABLE 2012-10-09 14:12:09 +08:00
Aparup Banerjee c5833d278c Merge branch 'MDL-35776_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-10-09 11:54:11 +08:00
Rajesh Taneja fb6f1a4d79 MDL-30691 Adminstration: Added css to break long word in filter table 2012-10-09 10:04:27 +08:00
AMOS bot 43e26415eb Automatically generated installer lang files 2012-10-09 00:34:43 +00:00
Eloy Lafuente (stronk7) aff7cb703a Merge branch 'wip-MDL-26348-m22' of git://github.com/samhemelryk/moodle into MOODLE_22_STABLE 2012-10-09 01:38:32 +02:00
Eloy Lafuente (stronk7) 827dd36f48 Merge branch 'wip-mdl-35397-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-09 00:40:26 +02:00
Iñaki Arenaza 4496dcc631 MDL-31968 Make NTLM REMOTE_USER format configurable by the admin
Signed-off-by: Iñaki Arenaza <iarenaza@mondragon.edu>
2012-10-09 00:17:51 +02:00
Eloy Lafuente (stronk7) 1bffd70569 Merge branch 'wip-mdl-35047-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-10-08 23:57:31 +02:00
Nadav Kavalerchik 8f8933231c MDL-35724 - Move Question Marks block to the left (Question Bank page),in RTL mode 2012-10-08 11:36:47 +02:00
Nadav Kavalerchik 550f7760a8 MDL-35724 - Right align "Question Type" label in Quiz Editing page, when in RTL mode 2012-10-08 11:36:47 +02:00
Aparup Banerjee d60c0e9650 Merge branch 'WIP-MDL-35723-M22_quiz' of git://github.com/nadavkav/moodle into MOODLE_22_STABLE 2012-10-08 17:16:43 +08:00
Aparup Banerjee 6d4386a6db Merge branch 'wip-MDL-34448-MOODLE_22_STABLE' of git://github.com/abgreeve/moodle into MOODLE_22_STABLE 2012-10-08 15:30:46 +08:00
Adrian Greeve b562dfba48 MDL-34448 - mod/data - Fixing separate groups viewing all entries. 2012-10-08 15:08:33 +08:00
Jerome Mouneyrac 71daa4a6d6 MDL-35198 replace key_exists by array_key_exists 2012-10-08 10:58:43 +08:00
Sam Hemelryk 0766ae0049 Merge branch 'MDL-35634-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-08 11:36:12 +13:00
Sam Hemelryk c11496e22d Merge branch 'MDL-35211_M22' of git://github.com/kordan/moodle into MOODLE_22_STABLE 2012-10-08 11:02:24 +13:00
Sam Hemelryk ac78fb7625 Merge branch 'MDL-35667_extra_credit_loop_22' of git://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-10-08 10:15:29 +13:00
Sam Hemelryk 4f012c5e58 Merge branch 'MDL-35730_22' of https://github.com/aolley/moodle into MOODLE_22_STABLE 2012-10-08 10:05:52 +13:00
Sam Hemelryk 5467e70128 MDL-32326 dock: Clarified use of CSS rotation 2012-10-08 09:45:48 +13:00
Sam Hemelryk d2cdddff77 MDL-26348 tool_customlang: Fixed up SQL causing issues in Oracle 2012-10-08 09:22:16 +13:00
Petr Škoda 2645ca05d8 MDL-35839 fix invalid enrol instance delete cleanup 2012-10-06 19:39:04 +02:00
AMOS bot 1ef6a07c09 Automatically generated installer lang files 2012-10-06 00:34:02 +00:00
Eloy Lafuente (stronk7) a8ce9071c2 weekly release 2.2.5+ 2012-10-05 13:37:50 +02:00
Eloy Lafuente (stronk7) 7f13fc063c Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-10-05 13:33:20 +02:00
Eloy Lafuente (stronk7) 2ecbeeda93 Revert "MDL-34257 quiz 'secure' mode: PAGE initialisation order issues."
This reverts commit e65f54f289.
2012-10-05 13:10:36 +02:00
Dan Poltawski 371e7264d1 Revert "MDL-33117 grade: added some smarts to the user report method inject_rowspans() to deal with activity conditional availability"
This reverts commit 7dc9febe19.
2012-10-05 16:19:29 +08:00
Jason Fowler 04c1d5a342 MDL-32184 - Course - Fixing incorrect redirect when toggling course edit while inside an activity – Patch provided by Kanika Goyal 2012-10-05 15:33:33 +08:00
Rajesh Taneja faaa97b415 MDL-32218 Blocks: allowblockstodock is also checked for region dock status 2012-10-04 17:27:52 +08:00
Rajesh Taneja 32d5bad1e1 MDL-27309 Blocks: command node is taken from dockitem during restore 2012-10-04 15:27:27 +08:00
AMOS bot a3a630251b Automatically generated installer lang files 2012-10-04 00:35:01 +00:00
Tim Hunt 8b3818d97b MDL-35776 user ajax: fix sort order in chrome.
It seems that Chrome orders fields of objects in order of array key.
Therefore we must stop using user.id in the PHP arrays, and instead
ensure that we use sequential numbers.

This commit fixes the enrol UI.
2012-10-03 19:16:44 +01:00
Tim Hunt d06a987343 MDL-35776 user ajax: fix sort order in chrome.
It seems that Chrome orders fields of objects in order of array key.
Therefore we must stop using user.id in the PHP arrays, and instead
ensure that we use sequential numbers.

This commit fixes the user selector.

Conflicts:
	user/selector/module.js
	user/selector/search.php
2012-10-03 19:16:41 +01:00
Frederic Massart 49e4881bff MDL-35634 course: Restored alt attribute on module icons 2012-10-03 17:04:02 +08:00
Dan Poltawski 1c61cadaaf Merge branch 'MDL-35754-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-03 10:26:34 +08:00
Frederic Massart 5d07f6e84f MDL-35754 libraries: openpopup() does not fail when window name is not set 2012-10-03 09:58:16 +08:00
Sam Hemelryk bd465e3917 Merge branch 'MDL-33829_22' of https://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-10-03 10:07:04 +13:00
Nadav Kavalerchik 6d4d29137c MDL-35723 - Align to center the "Quiz Feedback" label,when in RTL mode 2012-10-02 21:51:50 +02:00
Dan Marsden 221309802a MDL-35557 enrol/database: use distinct call when getting list of courses that should be added. 2012-10-02 20:28:46 +02:00
Dan Marsden bc7088d881 MDL-35562 enrol_database: enrolment_sync - don't halt sync on failed search for course. 2012-10-02 15:59:59 +02:00
Frederic Massart 2bfd174b06 MDL-28235 form: Removed close icon of help icon popups 2012-10-02 14:36:12 +08:00
Frederic Massart 6b8e97b017 MDL-28235 form: Help button popup close accessibility improved
AMOS BEGIN
 CPY [close,editor],[close,form]
AMOS END
2012-10-02 14:36:11 +08:00
Rajesh Taneja a284ccfdba MDL-35397 Administration: changed link for 'many other contributors'
Previously 'many other contributors' was pointing to http://docs.moodle.org/dev/Credits
now, it will point to http://moodle.org/dev.
2012-10-02 14:26:35 +08:00
Rajesh Taneja b5f0654fd2 MDL-35047 tool_xmldb: Added missing strings for xmldb 2012-10-02 14:22:52 +08:00
Dan Poltawski f187922695 Merge branch 'MDL-34570-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-02 13:57:08 +08:00
Adam Olley 0f8f88e7f0 enrol_manual: Set context correctly in manual enrolment user selector 2012-10-02 15:01:14 +09:30
Dan Poltawski 73e4647509 Merge branch 'MDL-35370_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-10-02 12:09:44 +08:00
Dan Poltawski a028dd0ff1 Merge branch 'MDL-35693_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-10-02 11:48:15 +08:00
Dan Poltawski 9956462ee4 Merge branch 'WIP-MDL-35708-M22_quiz' of git://github.com/nadavkav/moodle into MOODLE_22_STABLE 2012-10-02 11:37:04 +08:00
Dan Poltawski 34ab1dd7b1 Merge branch 'w40_MDL-35619_m22_otheravatars' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-10-02 10:42:06 +08:00
Dan Poltawski e412ca95b4 Merge branch 'MDL-30514_22' of git://github.com/stronk7/moodle into MOODLE_22_STABLE 2012-10-02 10:35:00 +08:00
Dan Poltawski f3493f8a78 Merge branch 'MDL-35680_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-10-02 09:52:50 +08:00
Jody Steele 395354cfe0 MDL-33933 mod_forum: fix incorrect capability check 2012-10-02 09:44:29 +08:00
Dan Poltawski 9b112d78bc Merge branch 'MDL-33117_grade_display_22' of git://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-10-02 09:33:24 +08:00
Eloy Lafuente (stronk7) 086a156564 MDL-35669 gravatar Fix secure image urls.
Conflicts:
	lib/outputcomponents.php
2012-10-02 01:39:14 +02:00
Sam Hemelryk d5cb1a4096 Merge branch 'm22_MDL-35472' of git://github.com/totara/moodle into MOODLE_22_STABLE 2012-10-02 11:10:13 +13:00
Sam Hemelryk 4fd7c545cc Merge branch 'MDL-34257_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-10-02 10:45:44 +13:00
Michael Aherne 60bbf98971 MDL-35669 gravatar Provide default image URL to Gravatar
Conflicts:
	admin/settings/users.php
	lib/outputcomponents.php
2012-10-01 23:39:11 +02:00
Sam Hemelryk 7697512a90 Merge branch 'MDL-35547_22' of git://github.com/enovation/moodle into MOODLE_22_STABLE 2012-10-02 10:15:19 +13:00
Eloy Lafuente (stronk7) 1950fefc99 Merge branch 'MDL-34931-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-10-01 13:37:26 +02:00
Eloy Lafuente (stronk7) ab6a0f497b Merge branch 'MDL-35637_m22' of git://github.com/markn86/moodle into MOODLE_22_STABLE 2012-10-01 13:19:35 +02:00
Eloy Lafuente (stronk7) de165bab23 Merge branch 'MDL-35644-MOODLE_22_STABLE' of git://github.com/mouneyrac/moodle into MOODLE_22_STABLE 2012-10-01 12:46:41 +02:00
Petr Škoda 10a75e713b MDL-35619 fix invalid avatars on other users page 2012-10-01 09:54:48 +02:00
Andrew Davis 6bff753746 MDL-31782 core_grade: fixed a potential infinite loop 2012-10-01 12:59:35 +08:00
Nadav Kavalerchik 74329146af MDL-35708 - Right align user's information in quiz attempt review page , when in RTL mode (theme/standard & base) 2012-10-01 00:01:01 +02:00
Tomasz Muras 237897b968 MDL-35547 Fetch more sub-categories with one SQL query. 2012-09-30 19:27:21 +02:00
Tomasz Muras 8c39dfb9ba MDL-35547 Detect loops in question categories. 2012-09-30 19:27:19 +02:00
Tomasz Muras 54e95b2d33 MDL-35547 Detect question category pointing to itself as a parent. 2012-09-30 19:27:18 +02:00
Andrew Davis e1f24eb46e MDL-33829 mod_glossary: added some smarts so glossary entries with an image in their description are classed as richhtml instead of plainhtml 2012-09-30 11:02:43 +08:00
Jason Fowler 6d84d37b91 MDL-33829 - Glossary - Adding Rich Portfolio Export support 2012-09-30 11:02:23 +08:00
AMOS bot eead9917a5 Automatically generated installer lang files 2012-09-29 00:34:20 +00:00
Tim Hunt daa3fe0ab6 MDL-35693 question engine: set id when saving a new question_attempt 2012-09-28 15:29:27 +01:00
Eloy Lafuente (stronk7) 7b18f18a1e MDL-30514 registration: table aliases don't use AS keyword
This is a backport of both MDL-34072, MDL-34440 (initial fix
and following regression). Basically it's about to observe #12 of:
    http://docs.moodle.org/dev/Database
(Use the AS keyword always with column aliases but not with table aliases)
2012-09-28 14:02:52 +02:00
Andrew Davis 7dc9febe19 MDL-33117 grade: added some smarts to the user report method inject_rowspans() to deal with activity conditional availability 2012-09-28 12:14:54 +08:00
Frederic Massart 5a930d13fd MDL-34570 Accessibility: Adding labels on text inputs and selects to questions 2012-09-28 11:38:58 +08:00
Rossiani Wijaya 735280b159 MDL-34570 accessibility compliance for question: edit string label 2012-09-28 11:38:58 +08:00
Frederic Massart 0295ae4ee7 MDL-34931 core_grade: Fixed grades hidden when activity is hidden 2012-09-28 11:38:48 +08:00
Tim Hunt db46eddf41 MDL-35680 user selector: more usable when queries are slow.
The problem is to do when you pause a bit, so a search starts, and then
type a bit more before the search finishes. It was behaving like this:

1. Type a bit, then pause.
2. First search request sent.
3. Type a bit more, then pause.
4. Second search request sent.
5. First search request completes.
6. You try to select one result.
7. Second search request comples, overwriting what you are selecting.

This fix works by cancelling the first request before sending the
second.
2012-09-27 19:11:26 +01:00
Tim Hunt db6d764fe2 MDL-35620 question engine: should distinguish NULL and 0.
This only matters in an obscure edge case, but it is an edge case we hit
with one of the OU question types.

This load data code is processing the results of a LEFT JOIN, so is_null
is the correct logic.
2012-09-27 12:36:15 +01:00
Tim Hunt f3872e7b42 MDL-35370 cloze qtype: distinguish wrong & unanswered subqs
This affects the subquestions that appear as an embedded text input box.

There are three cases:
1. Input for subq left blank
2. Input for subq was wrong, and matched by a * wildcard.
3. Input for subq was wrong, and did not match any answer.

2. and 3. should look identical, apart from any feedback in case 2.

1. is different. The state should be displayed as "Not answered" even
though the mark for this part is still shown as 0.

Also, we slighly improve handling of , for decimal point in multianswer,
although there are still issues.

While working on this, I made some minor clean-ups in shortanswer and
numerical qtypes.
2012-09-27 12:35:57 +01:00
Tim Hunt e65f54f289 MDL-34257 quiz 'secure' mode: PAGE initialisation order issues. 2012-09-27 12:35:07 +01:00
Dan Poltawski c5575c63b8 weekly release 2.2.5+ 2012-09-27 18:50:48 +08:00
Dan Poltawski d935a6fd68 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-09-27 18:48:00 +08:00
Mark Nelson dde080fb66 MDL-35637 group: Fix form submission error that occurs when GD version is not set. 2012-09-27 13:57:18 +08:00
Dan Poltawski 1e1d19d477 Revert "MDL-32184 - Course - Fixing incorrect redirect when toggling course edit while inside an activity – Patch provided by Kanika Goyal"
This reverts commit 74d4c9e631.
2012-09-27 11:32:14 +08:00
Nadav Kavalerchik 2acaf9cfee MDL-35246 - Invert all action arrows in Question Bank categories management, when in RTL mode 2012-09-26 23:54:53 +02:00
Jerome Mouneyrac 55cab152a4 MDL-35644 user_get_details: admin should be able to see description
Conflicts:

	user/lib.php
2012-09-26 14:34:04 +08:00
Sam Hemelryk 57264882c7 Merge branch 'wip-MDL-34476-stable22' of git://github.com/phalacee/moodle into MOODLE_22_STABLE 2012-09-26 14:27:52 +12:00
Jason Fowler b244e7da9e MDL-34476 - Blocks - Fixing context issue 2012-09-26 10:17:21 +08:00
Sam Hemelryk 414568e144 Merge branch 'MDL-34573_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-09-26 10:10:11 +12:00
Sam Hemelryk d122b47456 Merge branch 'wip-MDL-34476-stable22' of git://github.com/phalacee/moodle into MOODLE_22_STABLE 2012-09-26 08:32:41 +12:00
Sam Hemelryk 1b00f61d87 Merge branch 'MDL-31976-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-26 08:20:30 +12:00
Dan Poltawski 7062b887db Merge branch 'MDL-34778_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-09-25 13:43:49 +08:00
Dan Poltawski 71919db800 Merge branch 'MDL-34571_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-09-25 13:11:19 +08:00
Nadav Kavalerchik 5f0341a76b MDL-35576 - Right padding is missing on Date field/element, when in RTL mode (minor fix)
Conflicts:
	theme/base/style/core.css
2012-09-25 01:25:18 +02:00
Nadav Kavalerchik 1d439b59e4 MDL-35537 - Right align registration text on login page, when in RTL mode 2012-09-25 00:37:14 +02:00
Sam Hemelryk 22d38f8b2e Merge branch 'MDL-34607-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-25 09:54:52 +12:00
Dan Poltawski b37dc152c2 Merge branch 'MDL-35207-workshop-attachments-upgrade_22' of git://github.com/mudrd8mz/moodle into MOODLE_22_STABLE 2012-09-24 16:48:32 +08:00
Dan Poltawski 370cb335b1 Merge branch 'wip-MDL-32184-s22' of http://github.com/phalacee/moodle into MOODLE_22_STABLE 2012-09-24 15:36:18 +08:00
Dan Poltawski c5a5eed7f9 Merge branch 'MDL-26940-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-24 15:32:41 +08:00
Jason Fowler 74d4c9e631 MDL-32184 - Course - Fixing incorrect redirect when toggling course edit while inside an activity – Patch provided by Kanika Goyal 2012-09-24 15:29:31 +08:00
Frederic Massart e3d0ad1683 MDL-31499 Javascript: Handle invalid window names in openpopup 2012-09-24 15:24:14 +08:00
Sam Hemelryk 3b9ed3037f Merge branch 'MDL-35379-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-24 15:42:06 +12:00
Dan Poltawski c5bc14690f Revert "MDL-35442 Add settings and uninstall link for local plugins"
This doesn't work on 2.2.

This reverts commit 7fa1f180d6.
2012-09-24 11:26:30 +08:00
Sam Hemelryk 782a1b4633 Merge branch 'MDL-35517_22' of git://github.com/stronk7/moodle into MOODLE_22_STABLE 2012-09-24 15:21:21 +12:00
Ruslan Kabalin 7fa1f180d6 MDL-35442 Add settings and uninstall link for local plugins 2012-09-24 11:19:58 +08:00
Dan Poltawski 3900516886 Merge branch 'MDL-35242-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-24 11:08:26 +08:00
Sam Hemelryk d2621a28f5 Merge branch 'MDL-30889-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-09-24 15:05:35 +12:00
Dan Poltawski 92238a4408 Merge branch 'wip-MDL-35001-MOODLE_22_STABLE' of git://github.com/marinaglancy/moodle into MOODLE_22_STABLE 2012-09-24 10:20:09 +08:00
David Mudrák dd7946d997 MDL-35207 Fix 1.9 > 2.x upgrade of workshop submission attachments
Attachments of submission with non-linear ids in 1.9 database were not
upgraded correctly due to old id and new id mismatch. Credit goes to
Juan Segarra Montesinos for spotting the problem and suggesting a patch.
2012-09-22 23:32:35 +02:00
Jason Fowler d1d4c85edc MDL-34476 - Course Completeion, Blocks - Allowing teachers to access the Full Course Report from the Course Completion Block -- Initial patch provided by Nadav Kavalerchik 2012-09-21 15:26:20 +08:00
Ankit Agarwal 89001dfb54 MDL-30889 calendar: Adding focus and blur events to calendar renderer 2012-09-21 14:38:41 +08:00
Frederic Massart 039399e66f MDL-31976 Accessbility: Action icons on course page do not need title attributes
Conflicts:

	course/format/renderer.php
	course/lib.php
	course/yui/toolboxes/toolboxes.js
	lib/yui/dragdrop/dragdrop.js
2012-09-21 11:30:25 +08:00
Simon Coggins 28f6aa743f MDL-35379 Repository: WebDAV supports / as a path 2012-09-21 11:30:15 +08:00
Frederic Massart f3d73474fe MDL-35242 Web Services: Removed translation causing error in add_to_log 2012-09-21 09:56:20 +08:00
Frederic Massart 98f282f680 MDL-34607 File API: Removed ordering by sortorder in area tree 2012-09-21 09:55:49 +08:00
AMOS bot 970f23ad5c Automatically generated installer lang files 2012-09-21 00:34:54 +00:00
Eloy Lafuente (stronk7) 909c277796 MDL-35517 course: Handle non-existing $course->maxbytes on course creation. 2012-09-20 10:20:30 +02:00
Dan Poltawski f9a85712d5 weekly release 2.2.5+ 2012-09-20 14:11:24 +08:00
Dan Poltawski 8dd5f4f086 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-09-20 14:06:45 +08:00
Eloy Lafuente (stronk7) 601071fb10 MDL-33166 forum: fetch cmid to be used by capability checks. 2012-09-19 21:42:29 +02:00
Dan Poltawski b4e47dbb93 Merge branch 'wip-mdl-30833-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-09-19 09:52:28 +08:00
AMOS bot bae9b4c866 Automatically generated installer lang files 2012-09-19 00:34:26 +00:00
Eloy Lafuente (stronk7) 64fed39c7c MDL-33166 Forum: whitespace fix 2012-09-19 00:51:22 +02:00
Eloy Lafuente (stronk7) c43fe7f71e Merge branch 'wip-mdl-33166-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-09-19 00:39:26 +02:00
Simon Coggins 8ed9c72991 MDL-35472: Prevent html tags appearing in page titles
Only a problem when formatstringstriptags is disabled
2012-09-19 09:09:04 +12:00
Petr Škoda 9559ed75c3 MDL-32572 fix notice when changing internal auth_db passwords 2012-09-18 19:53:40 +02:00
Petr Škoda 8f93c4084f MDL-32572 skip problematic users in auth_db sync 2012-09-18 19:53:07 +02:00
Petr Škoda b8bf75156f MDL-32572 always lookpup passwords only in records from current auth plugin
This bug should not be creating any problems thanks to our design of login process, but it should be fixed anyway.
2012-09-18 19:52:36 +02:00
Rajesh Taneja 07b3331b59 MDL-30833 Accessibility: Added aria-expanded attribute on navigation nodes 2012-09-18 17:30:09 +08:00
Dan Poltawski 8e5440c9fc Merge branch 'MDL-30909-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-18 15:08:08 +08:00
Frederic Massart 32bdbf913b MDL-30909 Accessibility: Improved access to reply form in forums 2012-09-18 14:55:43 +08:00
Dan Poltawski d875f8605e Merge branch 'wip-mdl-30831-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-09-18 14:52:04 +08:00
Eloy Lafuente (stronk7) a6e1cc12c8 Merge branch 'MDL-32688-m22' of git://github.com/itamart/moodle into MOODLE_22_STABLE 2012-09-18 01:54:00 +02:00
Eloy Lafuente (stronk7) 3b4f791ba0 Merge branch 'MDL-35419_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-09-18 01:30:45 +02:00
Charles Fulton 35cc173d46 MDL-32230 block_rss_client: remove extra cleaning step 2012-09-18 01:23:20 +02:00
Eloy Lafuente (stronk7) 53b1a1ecb2 Merge branch 'MDL-34841_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-09-18 01:16:15 +02:00
Dan Poltawski 9facd25c14 Merge branch 'MDL-30847_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-09-17 12:40:12 +08:00
Rossiani Wijaya 3a9cbdc72a MDL-34778 enrol: add a space 2012-09-17 12:16:32 +08:00
Rossiani Wijaya 10964239be MDL-34778 accessibility compliance for enrol: add label tag for input text 2012-09-17 12:16:32 +08:00
Rossiani Wijaya cfaf6a18b9 MDL-34571 accessibility compliance for report: Add label to select and input text form 2012-09-17 12:15:59 +08:00
Dan Poltawski f0cbaa1c19 Merge branch 'MDL-34975-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-17 12:00:24 +08:00
Marina Glancy 64346429fe MDL-35001 removed cycle detection from convert_to_array because it causes error in data 2012-09-17 11:26:58 +08:00
Rajesh Taneja 2f861c915b MDL-30831 Accessibility: Added aria role and attributes to dock block 2012-09-17 10:13:52 +08:00
Rex Lorenzo 30bdc936fd MDL-33166 Forum: Adding capability mod/forum:allowforcesubscribe
Conflicts:

	mod/forum/version.php

Conflicts:

	mod/forum/version.php
2012-09-17 10:08:15 +08:00
Frederic Massart 3b79304ba5 MDL-34975 Accessibility: Collapsible areas captions can be clicked to expand/collapse 2012-09-17 09:44:29 +08:00
David Monllao afc54475a8 MDL-30847 core Adding ARIA attribute to help windows 2012-09-17 09:27:38 +08:00
Petr Škoda 14e497c06e MDL-35454 ignore invalid $custombytes in get_max_upload_sizes()
This fixes installation and phpunit init regression.
2012-09-17 00:09:19 +02:00
Itamar Tzadok 4818668672 MDL-32688 My Moodle - Fixed fatal error in guest access to My Moodle 2012-09-14 15:20:49 -04:00
Eloy Lafuente (stronk7) 4db36990ee weekly release 2.2.5+ 2012-09-14 19:09:31 +02:00
Eloy Lafuente (stronk7) 62a22d5b9a Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-09-14 19:03:37 +02:00
Eloy Lafuente (stronk7) ba15c14fee Revert "MDL-32125 mod_forum: updating subscription mode not reflected"
This reverts commit 6a5e3c1d9d.
2012-09-14 10:40:31 +02:00
Tim Hunt ee7a9058a0 MDL-35419 question manual grading: valdiation must handle 0,5
Yet another , as decimal separator issue!

To fix this nicely, I refactored some code into question_utils.
2012-09-13 16:43:27 +01:00
AMOS bot 0089ebaaa9 Automatically generated installer lang files 2012-09-13 00:34:35 +00:00
Sam Hemelryk 04ec524d74 Merge branch 'm22_MDL-32125_forum_subscription_change_reflected' of git://github.com/kanikagoyal/moodle into MOODLE_22_STABLE 2012-09-13 11:25:29 +12:00
Sam Hemelryk b7367b9638 Merge branch 'wip-mdl-30667-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-09-13 11:18:03 +12:00
Sam Hemelryk 0686d3dc4c Merge branch 'MDL-29872_c_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-09-13 11:12:37 +12:00
Tim Hunt b252a84543 MDL-34841 error importing questions with long names.
The problem was with the non-UTF-8-safe way that a question name
was being constructed from the question text.

I have done a proper fix with methods in the base class to
carefully construct a question name that is reasonable, and
which will fit in the database column. Then I have changed all
importers to use the new methods.

I also remembered not to break the lesson in the process.
2012-09-12 17:43:00 +01:00
David Monllao 7f2d81c7b6 MDL-35264 mod_chat Bigger frame for text input 2012-09-12 14:54:26 +08:00
Frederic Massart ab6c91d42a MDL-34765 Course: Removed unknown constant when reordering 2012-09-12 13:50:24 +08:00
Sam Hemelryk b95d2cc35e Merge branch 'MDL-30829-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-12 10:27:40 +12:00
Eloy Lafuente (stronk7) 63c4c85eff Merge branch 'MDL-34984_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-09-11 16:30:58 +02:00
Frederic Massart 8b662ca83f MDL-34765 Course: Fixed missing argument in course reordering 2012-09-11 16:41:26 +12:00
Sam Hemelryk ccbf68066b Merge branch 'MDL-34765-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-11 15:31:09 +12:00
Sam Hemelryk 4340e2faac Merge branch 'MDL-30018_22' of https://github.com/stronk7/moodle into MOODLE_22_STABLE 2012-09-11 15:21:44 +12:00
Sam Hemelryk 1db9d1e7ec Merge branch 'MDL-10259_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-09-11 15:18:31 +12:00
Sam Hemelryk 22f55d840c Merge branch 'MDL-30857_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-09-11 15:10:39 +12:00
Eloy Lafuente (stronk7) 2b9782fdd0 Merge branch 'MDL-35171_m22' of git://github.com/merrill-oakland/moodle into MOODLE_22_STABLE 2012-09-11 02:45:08 +02:00
Eloy Lafuente (stronk7) 0f43c24385 Merge branch 'MDL-29348-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-11 02:23:16 +02:00
Sam Hemelryk b818dfc2d7 Merge branch 'MDL-34916_M22' of git://github.com/kordan/moodle into MOODLE_22_STABLE 2012-09-11 12:06:04 +12:00
Eloy Lafuente (stronk7) 686723f4fa Merge branch 'm22_MDL-35123' of git://github.com/danmarsden/moodle into MOODLE_22_STABLE 2012-09-11 02:03:24 +02:00
Eloy Lafuente (stronk7) 5f48905520 Merge branch 'm22_MDL-35208' of git://github.com/danmarsden/moodle into MOODLE_22_STABLE 2012-09-11 01:57:53 +02:00
Eloy Lafuente (stronk7) 86e2c59128 Merge branch 'MDL-35257-22' of git://github.com/danpoltawski/moodle into MOODLE_22_STABLE 2012-09-11 01:53:48 +02:00
Sam Hemelryk 94ff6cf6fb Merge branch 'MDL-27786-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-09-11 11:15:14 +12:00
Sam Hemelryk f50e16d07e Merge branch 'MDL-33374-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-09-11 11:10:15 +12:00
David Mudrák 1c3d93d3ca MDL-35272 Fix typo in qformat_blackboard_six.php
Credit goes to German Valero for spotting and reporting this.
2012-09-11 01:03:34 +02:00
Adrian Greeve a8a779115c MDL-32785 - lib - Ignorning hard frozen fields when submitting data. 2012-09-11 10:48:14 +12:00
Eloy Lafuente (stronk7) 4eca916b5f Merge branch 'w37_MDL-35289_m22_tinymcelangs' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-09-10 19:53:54 +02:00
Eloy Lafuente (stronk7) 694c861e81 Merge branch 'MDL-35343_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-09-10 16:42:09 +02:00
Tim Hunt fa7298ed7f MDL-35343 JavaScript visible in multichoice choice feedback.
Also, Match correct answer, and calculated multi and multianswer
feedback.
2012-09-10 13:08:28 +01:00
Frederic Massart 03cc152087 MDL-30829 Accessibility: Docking a block disables the accessible anchors 2012-09-10 17:22:01 +08:00
David Monllao 6c27894dd2 MDL-30857 block_community Removing comments hardcoded height 2012-09-10 15:00:03 +08:00
Aparup Banerjee 057d68fc2e Merge branch 'MDL-35264_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-09-10 14:39:20 +08:00
Aparup Banerjee 1aac11d74d Merge branch 'MDL-27398_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-09-10 14:32:06 +08:00
David Monllao 2532c36ea3 MDL-27398 mod_chat Removing PAGE references 2012-09-10 14:11:31 +08:00
David Monllao 6bf9b6a996 MDL-27398 mod_chat Adding file basic doc 2012-09-10 14:11:31 +08:00
David Monllao 9405709c55 MDL-27398 mod_chat Removing deprecated calls and moving dependencies
Credit to Jorge Villalon
2012-09-10 14:11:21 +08:00
David Monllao 94e2c182fa MDL-27398 mod_chat Adding CLI_SCRIPT to chat daemon
Credit to Jorge Villalon
2012-09-10 14:11:13 +08:00
Aparup Banerjee b216fc392f Merge branch 'MDL-34068_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-09-10 13:43:00 +08:00
Eloy Lafuente (stronk7) cb69b471bd MDL-30018 restore: better answer matching. Credit goes to Tyler Bannister, thanks!
On backup, contents are cleaned to be safe utf8. That was leading to
some matching problems on restore against not cleaned DB contents (for
already existing questions). This commit adds one fallback method to
perform the match against cleaned DB contents.
2012-09-09 20:30:20 +02:00
Eloy Lafuente (stronk7) 698ecafa61 Moodle 2.2.5 release 2012-09-09 16:22:00 +02:00
AMOS bot eca810808c Merge branch 'MOODLE_22_STABLE' into install_22_STABLE 2012-09-08 00:34:46 +00:00
Petr Škoda d184770c60 MDL-35289 add missing charmap usage info string 2012-09-07 10:31:12 +02:00
Rossiani Wijaya 8eb614d4bb MDL-29872 Dropbox repository: add message handler to filepicker header and add message to logout from dropbox.
When user clicked on logout button from dropbox repository, it will also logging them out from dropbox site through a popup window
2012-09-07 15:45:46 +08:00
Rossiani Wijaya 47ad6d600d MDL-34573 - add label for search tag input text 2012-09-07 15:45:08 +08:00
Rossiani Wijaya b9b2d11960 MDL-34573 Tag: update label for suggested tag 2012-09-07 15:45:07 +08:00
Rossiani Wijaya 5da3e35ed3 MDL-34573 accessibility compliance for tag: Add forform input text and select tag 2012-09-07 15:45:07 +08:00
Rossiani Wijaya e08b39e0b4 MDL-34984 admin setting: fixed labeling and shortname display for admin setting 2012-09-07 15:44:41 +08:00
David Monllao 3e0f93136f MDL-34068 mod_chat Sending text/html headers when sending the messages frame output for the first time 2012-09-07 12:12:47 +08:00
David Monllao a29aca57ee MDL-35264 mod_chat Changing the input frame of chat daemon method to a embedded page layout 2012-09-07 12:08:35 +08:00
David Monllao 2fcb88838f MDL-10259 core Adding a search courses box if there are too many courses 2012-09-07 11:31:09 +08:00
Dan Poltawski 879c7655f2 MDL-35257 lib: if $CFG->logguests is disabled, avoid some log actions
This is for performance, else there can be great contention on the guest
user record as we've seen on moodle.org.
2012-09-07 10:25:59 +08:00
Ankit Agarwal 1d9a7b68f7 MDL-27786 calendar: Changing the eventname string for accessibility 2012-09-07 10:21:51 +08:00
Ankit Agarwal 4df3274355 MDL-33374 profile: Use correct text for buttons when creating a new user 2012-09-07 10:19:25 +08:00
Eloy Lafuente (stronk7) 555112a5ca weekly release 2.2.4+ 2012-09-07 02:38:09 +02:00
AMOS bot 986343b8cf Automatically generated installer lang files 2012-09-07 00:35:13 +00:00
Eloy Lafuente (stronk7) 2376d7125b Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-09-07 02:18:30 +02:00
Eloy Lafuente (stronk7) 09cca2d7aa Merge branch 'MDL-34945-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-06 20:12:22 +02:00
Eloy Lafuente (stronk7) e7920065ac Merge branch 'MDL-34985_m22' of git://github.com/merrill-oakland/moodle into MOODLE_22_STABLE 2012-09-06 20:08:05 +02:00
Dan Marsden 88c5506d1b MDL-35123 SCORM: cleaner version of get_last_attempt and get_last_completed_attempt, fixes support for MS Sql driver 2012-09-06 18:47:30 +12:00
Eloy Lafuente (stronk7) 222abcddd4 Merge branch 'MDL-35034-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-06 01:18:54 +02:00
Eloy Lafuente (stronk7) dd0e60cb3d MDL-29662 quiz overrides: use proper course value (was php notice). 2012-09-05 18:02:35 +02:00
Eloy Lafuente (stronk7) da91c22212 Merge branch 'w36_MDL-35077_m22_stats' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-09-05 13:13:53 +02:00
Petr Škoda 9a9d65a733 MDL-35077 do not show link to system stats report if stats disabled 2012-09-05 10:02:36 +02:00
Aparup Banerjee 8646d0aecb MDL-26504 blog: fixed SQL to add explicit casting 2012-09-05 10:41:29 +08:00
Eloy Lafuente (stronk7) 70206bbda8 MDL-34997 youtube filter: keep dimensions working for shortened urls 2012-09-05 01:17:30 +02:00
Eloy Lafuente (stronk7) d84df9f5a6 Merge branch 'MDL-34997-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-05 00:53:50 +02:00
Aparup Banerjee 7a5d23ea32 Merge branch 'wip-mdl-34537-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-09-04 17:33:28 +08:00
Frederic Massart 1461ecc0e4 MDL-34945 Repository: Creating an instance requires the user to have the permission to view it 2012-09-04 16:17:11 +08:00
Kordan e8cfd996f0 MDL-34916 theme_formal_white: added support for relative path of logos 2012-09-04 09:46:18 +02:00
Kordan 395f285f91 MDL-35211 theme_formal_white: updated descriptions involved in MDL-34916 2012-09-04 09:13:44 +02:00
Andrew Davis 63fbf99e07 MDL-26504 blog: added upgrade code to remove orphan external blog posts
Conflicts:
	lib/db/upgrade.php
	version.php

Conflicts:
	version.php
2012-09-04 14:04:47 +08:00
Andrew Davis 89ce191be2 MDL-26504 blog: made it delete external blog posts when the external blog is deleted 2012-09-04 14:03:14 +08:00
Tim Lock 32a0775cf9 MDL-35092: Add proxy support to enrol/paypal IPN 2012-09-04 10:58:08 +08:00
Eloy Lafuente (stronk7) e20371b316 Merge branch 'wip-mdl-34606-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-09-04 02:09:37 +02:00
Eloy Lafuente (stronk7) 81baf0d5f3 Merge branch 'MDL-34633-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-04 01:54:23 +02:00
Eloy Lafuente (stronk7) befce5863d Merge branch 'MDL-29662_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-09-04 01:14:33 +02:00
Eloy Lafuente (stronk7) 948835483a Merge branch 'MDL-27818_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-09-04 01:08:07 +02:00
Dan Marsden b8b00afaf3 MDL-35208 mod_choice: respect order of options when running backup 2012-09-04 11:02:45 +12:00
Eloy Lafuente (stronk7) 3db989d41e Merge branch 'MDL-33306_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-09-04 00:31:23 +02:00
Eloy Lafuente (stronk7) 81f6a19377 Merge branch 'MDL-33812-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-04 00:20:38 +02:00
Eloy Lafuente (stronk7) 91f65d0ab4 Merge branch 'w36_MDL-34097_m22_environment' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-09-04 00:02:01 +02:00
Eloy Lafuente (stronk7) 7b3a9020e6 Merge branch 'MDL-28346-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-09-03 20:02:33 +02:00
Eloy Lafuente (stronk7) 06d5f84d71 Merge branch 'w36_MDL-35077_m22_stats' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-09-03 17:54:45 +02:00
Eloy Lafuente (stronk7) 8918cf7b0d Merge branch 'MDL-35133_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-09-03 17:48:12 +02:00
Eloy Lafuente (stronk7) d7831c74be Merge branch 'w36_MDL-35145_m22_guestdelete' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-09-03 16:18:33 +02:00
Aparup Banerjee dc5736f402 Merge branch 'MDL-35151_M22' of git://github.com/lazydaisy/moodle into MOODLE_22_STABLE 2012-09-03 19:24:14 +08:00
Aparup Banerjee 6915eff9b1 Merge branch 'MDL-35180_M22' of git://github.com/lazydaisy/moodle into MOODLE_22_STABLE 2012-09-03 17:39:13 +08:00
Rajesh Taneja 79d375eeba MDl-30667 Course: Maxbytes list will show current value, if it's lower then maxbytes 2012-09-03 14:45:00 +08:00
Frederic Massart b04ba37864 MDL-29348 Repository: WebDAV displays a breadcrumb 2012-09-03 14:10:33 +08:00
Jean-Philippe Gaudreau 1a73d34c10 MDL-34997 - Allow shortened url youtu.be and y2u.be for Youtube filter 2012-09-03 14:10:24 +08:00
Frederic Massart 4516e7204a MDL-34633 Repository: Flickr supports small images
Conflicts:

	repository/flickr/lib.php
	repository/flickr_public/lib.php
2012-09-03 14:10:15 +08:00
Frederic Massart 934de9687e MDL-35101 Repository: Public Flickr fails when the picture has no license 2012-09-03 14:10:15 +08:00
Frederic Massart a30912967c MDL-34765 Course: Re-sorting courses uses natural order 2012-09-03 14:10:05 +08:00
Frederic Massart 06aa3ac19f MDL-28346 Backup: Restore task can log results 2012-09-03 14:09:55 +08:00
Frederic Massart aae03dd4d4 MDL-28346 Backup: Backup does not fail when a file is missing
Conflicts:

	backup/util/ui/backup_ui_stage.class.php
2012-09-03 14:09:55 +08:00
Frederic Massart 5ef242f4a4 MDL-28346 Backup: Restore does not fail when a file is missing
Conflicts:

	backup/util/dbops/restore_dbops.class.php
2012-09-03 14:09:55 +08:00
Frederic Massart b3ab3bd054 MDL-28346 Backup: Added new status 'warning' for backup result 2012-09-03 14:09:55 +08:00
Frederic Massart 1e12baddde MDL-35034 Repository: Google Docs does not fail when download is restricted
Conflicts:

	lib/googleapi.php
	repository/googledocs/lib.php
2012-09-03 14:09:36 +08:00
Frederic Massart 0bcbc76b25 MDL-33812 Backup: Added some upgrade information about the changes 2012-09-03 14:09:26 +08:00
Frederic Massart 85616ca24f MDL-33812 Backup: Revert MDL-33521
Conflicts:

	backup/util/helper/backup_cron_helper.class.php
2012-09-03 14:09:26 +08:00
Frederic Massart cdf58e680c MDL-33812 Backup: Respect of backup_auto_keep 2012-09-03 14:09:25 +08:00
Sam Hemelryk e401131606 Merge branch 'MDL-31496_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-09-03 12:20:16 +12:00
Sam Hemelryk ead307f537 MDL-26822 user: Minor improvements post integration 2012-09-03 11:41:27 +12:00
Sam Hemelryk c0941ec996 Merge branch 'MDL-26882-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-09-03 11:25:57 +12:00
Sam Hemelryk 926fffa146 Merge branch 'wip-MDL-34318-MOODLE_22_STABLE' of git://github.com/abgreeve/moodle into MOODLE_22_STABLE 2012-09-03 10:12:15 +12:00
Sam Hemelryk 1ac4b314f6 Merge branch 'MDL-30020c-22' of git://github.com/srynot4sale/moodle into MOODLE_22_STABLE 2012-09-03 09:52:12 +12:00
Mary Evans 19685dbf5e MDL-35180 theme_afterburner: fixes IE9 compatibility view bug 2012-09-02 16:35:09 +01:00
Petr Škoda cbff07faef MDL-34097 keep current requirements for Moodle 2.4 2012-09-02 11:55:24 +02:00
AMOS bot d25a550db9 Automatically generated installer lang files 2012-09-02 00:32:47 +00:00
Mary Evans df1a0756ab MDL-35151 theme_anomaly: removed CSS selectors (.forumpost .content p) from style/general.php thus allowing YUI CSS to style paragraphs as normal. 2012-09-01 23:29:29 +01:00
Eric Merrill 1ca2bdc0c8 MDL-35171 formslib Updating date config array to fix problems with month jumping.
Based on https://bugs.php.net/bug.php?id=49115, if you request a month, but do not
specify a date, it will use your current date, which may be beyon a date in the month
requested, causing the return of the next month. This patch specifies the date (1st).
2012-09-01 10:17:33 -04:00
Petr Škoda d6e2946e19 MDL-35145 add extra delete_user() parameter validation
We do not want to delete local admins and guest account, we need to validate the supplied parameter is valid $user record and refetch it from database.
2012-09-01 14:23:55 +02:00
Petr Škoda b06c820df6 MDL-35077 fix stats report navigation links 2012-08-31 14:18:48 +02:00
Eloy Lafuente (stronk7) 8f3c8e78a9 weekly release 2.2.4+ 2012-08-31 11:35:03 +02:00
Eloy Lafuente (stronk7) 5fcba2f9c8 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-08-31 11:27:45 +02:00
Eloy Lafuente (stronk7) acb539b1c9 MDL-35147 lesson qformat import: Dirty hack to support array questiontext structures. 2012-08-31 03:00:49 +02:00
Tim Hunt 228533be80 MDL-27818 question bank: multilang category names don't work. 2012-08-30 22:48:50 +01:00
Tim Hunt b8c475d631 MDL-35133 accesslib: context_module::get_context_name should format_string
Otherwise activites with multilang names are displayed badly.
2012-08-30 22:47:33 +01:00
Eloy Lafuente (stronk7) 165bfe5454 Merge branch 'MDL-35147_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-30 20:12:15 +02:00
Eloy Lafuente (stronk7) ce754f10c6 MDL-31244, MDL-25063 there is no phpuni support in 22_STABLE 2012-08-30 18:34:25 +02:00
Eloy Lafuente (stronk7) 049b47ca09 Merge branch 'MDL-31244_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-30 18:32:20 +02:00
Tim Hunt 22462fba4f MDL-35147 lesson: fix regression from MDL-25492.
I really wish someone would fix lesson to use the question bank.
2012-08-30 13:12:13 +01:00
Ankit Agarwal 30de036731 MDL-26882 profile: Applying cap check (site:viewuseridentity) to email field in user profile 2012-08-30 15:38:25 +08:00
Ankit Agarwal 952fef7299 MDL-26882 profile: Apllying the cap check site:viewuseridentity to user profile 2012-08-30 15:38:22 +08:00
Adrian Greeve 09332feae8 MDL-32108 - navigation - After logging in the user is directed to mysite instead of site home.
Thanks to lurii Kucherov for this patch.
2012-08-30 12:14:55 +08:00
Tim Hunt fe470a231f MDL-29662 quiz overrides: update dates during course reset.
Also, fix duplicate SQL clause in similar code in lib,
and fix error when saving overrides.
2012-08-29 18:43:25 +01:00
Tim Hunt ee91ffedb3 MDL-33306 qtype multichoice: fix display of right answer.
Also, fix  higlighing of last edited question in the qeustion bank, when
it co-incides with a grey row.
2012-08-29 17:48:16 +01:00
Eloy Lafuente (stronk7) 06606caf71 Merge branch 'wip-mdl-30121-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-08-29 12:15:29 +02:00
Aparup Banerjee 12f57ec9c3 Merge branch 'wip-mdl-31623-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-08-29 16:57:20 +08:00
Aparup Banerjee 2335d65949 Merge branch 'MDL-31959_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-29 15:34:06 +08:00
Aparup Banerjee 32b8a7bcf0 Merge branch 'wip-mdl-34040-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-08-29 14:45:44 +08:00
Aparup Banerjee 6a4d3ec290 Merge branch 'MDL-34952_22' of git://github.com/grabs/moodle into MOODLE_22_STABLE 2012-08-29 13:27:23 +08:00
Eloy Lafuente (stronk7) 90241eaaf8 Merge branch 'MDL-29598_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-08-28 23:24:11 +02:00
Eloy Lafuente (stronk7) 6e8d3ac1bf Merge branch 'MDL-25492_22' of git://github.com/jmvedrine/moodle into MOODLE_22_STABLE 2012-08-28 20:12:48 +02:00
Eloy Lafuente (stronk7) 1c37f8865d Merge branch 'MDL-31837_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-28 20:10:43 +02:00
Tim Hunt 9345e7bfb8 MDL-31837 qtype_numerical: fix old-style unit tests. 2012-08-28 15:54:17 +01:00
Aparup Banerjee 56d47558ff Merge branch 'MDL-31837_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-28 17:04:48 +08:00
Aparup Banerjee 0639b9ca1a Merge branch 'MDL-32464_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-28 16:55:14 +08:00
Adrian Greeve 6117966d3b MDL-34318 - blog - Removal of blog associations from the database on delete.
Thanks to Erik Lundberg for this patch.
2012-08-28 15:59:21 +08:00
Jean-Michel Vedrine db6bac8b16 MDL25492_22 error in version and requires changed by mistake 2012-08-28 08:06:13 +02:00
Aaron Barnes c186374c3b MDL-30020 blocks/completion: Some criteria do not display complete
Also includes a spruce up of the code
2012-08-28 11:46:26 +12:00
Eloy Lafuente (stronk7) 4df4c677bd Merge branch 'MDL-34406_fullname_22' of git://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-08-27 20:04:16 +02:00
Eloy Lafuente (stronk7) 3dd9961f44 Merge branch 'MDL-34430_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-27 18:51:25 +02:00
Eloy Lafuente (stronk7) 006052e19c Merge branch 'MDL-34993_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-27 18:36:19 +02:00
Eloy Lafuente (stronk7) 31970a66a8 Merge branch 'm22_MDL-34994' of git://github.com/danmarsden/moodle into MOODLE_22_STABLE 2012-08-27 18:23:45 +02:00
Eloy Lafuente (stronk7) e5783fd132 Merge branch 'MDL-35026_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-27 17:54:55 +02:00
Eloy Lafuente (stronk7) 70c160f27d Merge branch 'MDL-35003_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-27 17:51:41 +02:00
Eloy Lafuente (stronk7) c06b18a475 Merge branch 'MDL-35023_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-27 16:34:02 +02:00
Eloy Lafuente (stronk7) aa81647c4c Merge branch 'MDL-35055_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-27 16:17:06 +02:00
Aparup Banerjee ad24b3a320 Merge branch 'MDL-31633-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-08-27 17:26:53 +08:00
Rajesh Taneja 3851c53f76 MDl-34606 Administration: id for clear button is set properly, and disabled on page load 2012-08-27 15:16:29 +08:00
Rajesh Taneja f731735624 MDL-34537 Enrolments: Assign alternative odd and even class to manual enrol popup 2012-08-27 14:20:06 +08:00
Aparup Banerjee f76fe80874 Merge branch 'MDL-34996_22' of git://github.com/grabs/moodle into MOODLE_22_STABLE 2012-08-27 13:48:03 +08:00
AMOS bot 9bb3b99e56 Automatically generated installer lang files 2012-08-27 00:32:48 +00:00
Aaron Barnes 40efa28d9e MDL-32386 completion: Fix incorrect method parameters 2012-08-27 11:54:41 +12:00
Andreas Grabs fb2cbe2466 MDL-34996 - Improve help text for Feedback dependancies 2012-08-24 23:04:07 +02:00
Andreas Grabs 20af48348b MDL-34952 - change get_info() to public access 2012-08-24 21:53:45 +02:00
Tim Hunt 1600029de9 MDL-32464 qformat multianswer: fix missing include.
Also, add a sample file that can be used for testing, and add a unit
test to verify this is working.
2012-08-24 16:58:30 +01:00
Tim Hunt 170130d756 MDL-35055 question import: slight error with the Match grades option.
Even in the 'Error if grade not listed case', it was applying a small
tolerance. In the case of a fuzzy match, it was returning the inexact
grade from the import file, rather than the precise grade that Moodle
was expecting.

That causes problems when the editing form is displayed, because the
value from the database does not match any of the available options, so
the grade is changed to 0%.
2012-08-24 15:46:12 +01:00
Jean-Michel Vedrine 1d23052a60 MDL25-492 Blackboard V6+ question import is broken 2012-08-24 14:06:56 +02:00
Ankit Agarwal 2fc41b1ccd MDL-31633 grades: Fixing incorrect redirect when trying to edit grade letters from admin settings 2012-08-24 14:59:01 +08:00
Tim Lock 91de7cb26e MDL-31623 Course: Course reset bypass modules, which are removed 2012-08-24 11:00:16 +08:00
Rajesh Taneja e0b1515fde MDL-30121 Assignment: Draft submission files will not be included in zip, if activity is open 2012-08-24 10:55:09 +08:00
David Monllao c52a364c27 MDL-29598 backup Avoid possible future duplicate grade letters
More info in restore_activity_grades_structure_step->process_grade_letter() comments
2012-08-24 08:56:15 +08:00
Justin Filip 481415635f MDL-29598 backup Check whether a grade_letters record exists before trying to insert a new record 2012-08-24 08:56:14 +08:00
Tim Hunt 4458b51cc4 MDL-34430 qtype essay: upgrade from MDL-31393 needs a progress bar. 2012-08-23 20:04:01 +01:00
Tim Hunt 1482c2b20b MDL-35026 qtype multianswer: misnamed string.
AMOS BEGIN
 MOV [questionnadded,qtype_multianswer],[questionsadded,qtype_multianswer]
AMOS END
2012-08-23 19:02:16 +01:00
Tim Hunt e60c61e570 MDL-35023 qtype calculated: fix strict syntax problem. 2012-08-23 19:01:57 +01:00
Tim Hunt d9c2ecc342 MDL-35003 questions: remove stray full stop after correct answer.
In a few situations, this full stop makes things a bit more grammatical,
but there are many other situations where it causes problems. So, on
balance we will remove it.
2012-08-23 19:01:39 +01:00
Tim Hunt cf6b831723 MDL-34993 questions: convert numeric fields to float on load.
NUMBER(X,Y) typically come back from the DB as strings. If you don't
convert them to float, then when you display them, it appears as
1.0000000, which is not normally what you want.

Also, increase the size of the field on the edit form, so if you
question does have default mark 0.1234567, you can see that!
2012-08-23 19:01:21 +01:00
Tim Hunt 6d24c26b52 MDL-31837 numerical tolerance: better handling of very
small tolerances.

The changes between Moodle 1.9 and 2.1 made the marking of very small
answers like 10^-20 almost impossible. This change fixes it.

This fix is almost entirely due the the careful research of Pierre
Pichet, who carefully testing various proposals, and worked out that
this one seemed best.
2012-08-23 18:59:11 +01:00
Tim Hunt 5a058f33a3 MDL-31244, MDL-25063 algebra filter: fix common false positives.
There are two well-known cases where the algebra filter messes up input
that is obviously not meant for the algebra filter:

1. Copy and paste of unified diffs.

2. @@PLUGINFILE@@ tokens in the HTML that are due to be replaced by the
files API.

This fix detects these two cases, and just stops the algebra filter from
replacing them.
2012-08-23 18:58:54 +01:00
Eloy Lafuente (stronk7) 4ff0f02857 weekly release 2.2.4+ 2012-08-23 19:24:57 +02:00
Eloy Lafuente (stronk7) 956592f590 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-08-23 19:18:56 +02:00
Eloy Lafuente (stronk7) b6c52b4740 MDL-31957 Course reset: Add missing global 2012-08-23 02:13:08 +02:00
Dan Poltawski 6ab7e3a3d5 MDL-34870 enrol_cohort - don't need to do useless work 2012-08-22 10:03:40 +08:00
Adam Olley 892600868b MDL-34870: Prevent cohort enrol sync when updating course record 2012-08-22 10:03:34 +08:00
Dan Poltawski faf8ef6f04 Merge branch 'MDL-34733_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-22 09:16:32 +08:00
Eloy Lafuente (stronk7) d90e2237fe Merge branch 'wip-mdl-32759-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-08-22 02:34:35 +02:00
Eloy Lafuente (stronk7) b1dbeb8dff MDL-34702 quiz DB: fix non-matching savepoint 2012-08-22 02:28:02 +02:00
Eloy Lafuente (stronk7) 407c0fbcd6 Merge branch 'MDL-34702_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-22 02:12:11 +02:00
Dan Marsden b33d969d91 MDL-34994 mod_choice: fix restore of user responses - use correct optionid 2012-08-22 09:05:07 +12:00
Tim Hunt bfa34d8de3 MDL-34733 quiz 'secure' mode: finish review link broken in previews
Here, we use a nasty hack to fix the problem on stable branches without
an API change.
2012-08-21 12:12:11 +01:00
Juho Viitasalo 83d8c6b290 Changed two notification to output correctly 2012-08-21 15:38:27 +08:00
Dan Poltawski 4263e87000 Merge branch 'MDL-34569_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-21 12:35:23 +08:00
Petr Škoda adf397d88a MDL-34901 fix user login times handling 2012-08-21 12:02:48 +08:00
Dan Poltawski 08d2cbe451 Merge branch 'MDL-34742-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-08-21 11:59:38 +08:00
Dan Poltawski 06d9aa79b8 MDL-34808 qformat_examview - increment version 2012-08-21 11:06:23 +08:00
Dan Poltawski 6532971105 Merge branch 'MDL-34808_22' of git://github.com/jmvedrine/moodle into MOODLE_22_STABLE 2012-08-21 11:01:02 +08:00
David Monllao a0e94952d0 MDL-31496 mod_data Replacing inline styles for CSS classes in templates and browse view 2012-08-21 10:50:08 +08:00
David Monllao e8e8e49345 MDL-31496 mod_data Replacing inline styles for CSS classes in text inputs 2012-08-21 10:50:08 +08:00
David Monllao 42eb95f55c MDL-31496 mod_data Replacing inline styles for CSS classes in search containers 2012-08-21 10:50:08 +08:00
David Monllao 12f21bbb82 MDL-31496 mod_data Replacing inline styles for CSS classes in textarea elements 2012-08-21 10:50:08 +08:00
Dan Poltawski 3c061d5f83 MDL-34738 qformat_blackboard - increment version number 2012-08-21 09:53:59 +08:00
Jean-Michel Vedrine eeef6f2813 MDL-34738 qformat blackboard: blackboard format is broken
Conflicts:
	question/format/blackboard/format.php
2012-08-21 09:52:29 +08:00
Eloy Lafuente (stronk7) 0142a4b595 Merge branch 'MDL-29847_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-21 01:29:08 +02:00
Eloy Lafuente (stronk7) d60f8ef2db Merge branch 'MDL-31957-m22' of git://github.com/sammarshallou/moodle into MOODLE_22_STABLE 2012-08-21 01:23:52 +02:00
Eric Merrill cae60d13ab MDL-34985 gradebook Fixing issue where default parent in Full View Add Category could be inconsistent.
Turns out the correct default was already computed, but was not being applied to the setting.
2012-08-20 17:14:07 -04:00
Eloy Lafuente (stronk7) de4c3e62cf Merge branch 'w34_MDL-34868_m22_gmapsv2' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-08-20 20:18:37 +02:00
Eloy Lafuente (stronk7) 85bd3fd899 Merge branch 'MDL-28531-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-08-20 16:28:38 +02:00
Eloy Lafuente (stronk7) 59e2a77596 Merge branch 'MDL-34529' of git://github.com/jasonilicic/moodle into MOODLE_22_STABLE 2012-08-20 13:59:55 +02:00
Nathan Mares 3ea975b6ba MDL-34372: Fix query in backup_cron_helper so it works on Postgres 8.3
Amended by stronk7@moodle.org to use uppercase SQL keywords.
2012-08-20 13:29:03 +02:00
Dan Poltawski 0863fbe14a Merge branch 'MDL-34779-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-08-20 15:59:06 +08:00
Michael de Raadt d62450f1dc MDL-34779 settings: Updating lang string corrposnding to the fullnamedisplay setting 2012-08-20 15:47:55 +08:00
Dan Poltawski 9549417007 Merge branch 'MDL-34957_M22' of git://github.com/lazydaisy/moodle into MOODLE_22_STABLE 2012-08-20 14:23:35 +08:00
Rajesh Taneja 642603d40c MDL-34040 Filters: Added wmode=transparent for tinymce moodlemedia plugin, to avoid overlapping 2012-08-20 14:04:59 +08:00
Dan Poltawski 00fe761b3e Merge branch 'MDL-34535-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-08-20 12:07:02 +08:00
Dan Poltawski 2f7ca09572 Merge branch 'wip-MDL-31810-stable22' of git://github.com/phalacee/moodle into MOODLE_22_STABLE 2012-08-20 12:01:43 +08:00
Dan Poltawski b869f5d045 Merge branch 'wip-mdl-31734-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-08-20 11:57:27 +08:00
Dan Poltawski d2dccd8162 Merge branch 'MDL-30405-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-08-20 11:40:07 +08:00
Dan Poltawski 279c39f71d Merge branch 'MDL-30370_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-08-20 11:22:34 +08:00
Andrew Davis 6ebac8f0c1 MDL-34406 message: removed an unnecessary string creation 2012-08-20 10:17:30 +08:00
Petr Škoda 0df0664e4d MDL-34868 update deprecated Google maps API V2 key info 2012-08-19 18:22:13 +02:00
Jean-Michel Vedrine 4b4373ed3d MDL-34808 qformat examview Add phpunit tests to examview import format 2012-08-19 16:44:24 +02:00
Mary Evans a18539406c MDL-34957 theme_base: made small change to custommenu CSS in style/core.css to fix vertical arrow overlap in menu item 2012-08-19 01:49:34 +01:00
AMOS bot e212bd3aab Automatically generated installer lang files 2012-08-19 00:31:37 +00:00
Tim Hunt cb12522cea MDL-29847 question preview: garbage collect old preview data.
This adds cron code which looks for question previews that have not been
touched for more than 24 hours, and deletes them.

We try to delete previews immediately. For example if the user clicks
start again, then we immediately delete their previous preview. However,
we can't do that if they just close the preview window. Hence we need
some cron code to clean up old preview that have got left lying around.

Normally, this code will not have much to do, so it will be very fast,
so we can afford to run it every cron.

This has been implemented in such a way that in future it will be easy
to add other cron code to the question bank.

Sadly, to make this work on MySQL, we require a horrible hack in the
already hacky delete_usage_records_for_mysql function.
2012-08-17 10:53:05 +01:00
sam marshall eaead2aea8 MDL-31957 Course reset: Does not erase activity completion data 2012-08-17 10:41:14 +01:00
Frederic Massart 24d063dbb8 MDL-28531 Unit Tests: Fixed tests to work with core update 2012-08-17 14:46:04 +08:00
Frederic Massart a356a5f615 MDL-28531 Backup: Automated backups run when they are scheduled
Conflicts:

	lib/tests/backup_test.php
2012-08-17 14:46:03 +08:00
Frederic Massart e70c06f548 MDL-34648 Chat: No more errors when sentence begin with 'To' 2012-08-17 14:45:53 +08:00
Matt Meisberger 83985d7856 MDL-34742 - adding ability to move blocks into empty column 2012-08-17 14:45:20 +08:00
Rajesh Taneja bcc92a4cc7 MDL-31734 Course: removed unused sectiontitle string 2012-08-17 14:34:06 +08:00
Rajesh Taneja 617144c9ff MDL-26492 Lesson: lesson_get_user_grades will return grade of all users if userid=0 2012-08-17 14:31:27 +08:00
Rossiani Wijaya 6e8fad9d04 MDL-34569 - add label for search wiki input text 2012-08-17 11:30:37 +08:00
Rossiani Wijaya ee5a93f38e MDL-34569 accessibility compliance for wiki module: Add label for input text and select tag 2012-08-17 11:16:36 +08:00
AMOS bot 4f15cd4180 Automatically generated installer lang files 2012-08-17 00:31:52 +00:00
Tim Hunt 7fbbcdbdd8 MDL-34702 quiz DB: questiondecimalpoints has wrong default.
Thanks to the folks at UCL for tracking down this problem. It has only
hidden for 2+ years!

Conflicts:

	mod/quiz/db/install.xml
	mod/quiz/version.php
2012-08-16 17:41:14 +01:00
Eloy Lafuente (stronk7) 76c9fcc967 weekly release 2.2.4+ 2012-08-16 17:25:09 +02:00
Eloy Lafuente (stronk7) 2ebd272124 Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-08-16 17:22:18 +02:00
Rossiani Wijaya e155365566 MDL-34563 - change string firstname to lastname and add accesshide class 2012-08-16 14:18:46 +08:00
Rossiani Wijaya afee2a7af2 MDL-34563 - removed double labeling and add label for input text 2012-08-16 14:18:37 +08:00
Aparup Banerjee 408dfe97b8 Merge branch 'MDL-34565_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-16 11:51:54 +08:00
Jason Fowler 7ceb8dacb7 MDL-31810 - Fixing unclosed DIV tags throughout Moodle 2012-08-16 10:56:01 +08:00
David Monllao 227b0f5a7d MDL-30370 mod_forum - Removing duplicate seleted field in the DB query
Credit to Iñigo Zendegi
2012-08-15 17:01:35 +08:00
Rossiani Wijaya 9a460c38fd MDL-34565 - remove duplicate labeling 2012-08-15 16:25:21 +08:00
Eloy Lafuente (stronk7) 4dd7c5cafd Merge branch 'MDL-34862_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-15 03:32:59 +02:00
AMOS bot 0beb16d923 Automatically generated installer lang files 2012-08-15 00:31:34 +00:00
Sam Hemelryk 5d44dbd1eb Merge branch 'MDL-33531_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-08-15 11:21:57 +12:00
Dan Poltawski 3403906010 MDL-29192 - clarify email_to_user call 2012-08-15 01:17:57 +02:00
Aparup Banerjee e4744c5896 Merge branch 'wip-MDL-34748-MOODLE_22_STABLE' of git://github.com/marinaglancy/moodle into MOODLE_22_STABLE 2012-08-14 15:30:16 +08:00
Ankit Agarwal 9b18d9ce59 MDL-34535 message: userto should use is_number instead of is_init 2012-08-14 14:41:57 +08:00
Aparup Banerjee eed4c2339c Merge branch 'MDL-34563_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-14 14:34:53 +08:00
Rossiani Wijaya 3798162934 MDL-34563 - change plural strings and removed colon for accesshide label 2012-08-14 13:56:57 +08:00
Aparup Banerjee 97da1cf0ec Merge branch 'MDL-34565_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-14 13:53:43 +08:00
Dan Poltawski 8f4ff87e5e Merge branch 'MDL-34728_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-14 13:33:16 +08:00
Dan Poltawski 37b1a5264b Merge branch 'MDL-34807_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-14 12:08:09 +08:00
Rajesh Taneja 2b59c68796 MDL-32759 Assignment: Changing grade for existing assignments will show warning that grades will not be scaled 2012-08-14 11:44:41 +08:00
Tim Hunt 1907f7e082 MDL-34862 question preview: improve preview ownership check.
Users should only be able to access their own quetion preview. In the
past, for reasons I can no longer remember, this was enforced
using the session. It is much better to set the question_usage to belong
to the user's context.
2012-08-13 17:44:22 +01:00
Tim Hunt c090746541 MDL-34807 question bank: navigation loses place.
The symptom is that where we are now is not shown in the settings
navigation. However, the underlying cause is that question/edit.php is
doing some crazy thing of its own to build $PAGE->url, rather than using
the one returned by question_edit_setup.

Not that this patch itentionally removes the returnurl param. It was
added as part of a big change MDL-20276, which I think just got this
detail wrong. That variable is never used.
2012-08-13 11:29:46 +01:00
Tim Hunt c9b212083c MDL-34728 forms: woy for other JS to trigger disableIf update.
This was discovered while working on MDL-32705. If some JavaScript (for
example a select all/none link) changes the state of some form fields,
then the disabledIf state of other form elements does not automatically
update.

The existing form JS was so well encapsulated that this was impossible.
This change pokes a hole in the encapsulation, and provides an API
    M.form.updateFormState(formid);
that other bits of JS code can call when necessary.
2012-08-13 11:20:29 +01:00
Rossiani Wijaya 7e68a5205a MDL-34563 accessibility compliance for data module: Add forform input text and select tag 2012-08-13 15:14:27 +08:00
Rossiani Wijaya 92af44e829 MDL-34565: change to plural strings 2012-08-13 15:11:06 +08:00
Rossiani Wijaya 914a5ab622 MDL-34565 accessibility compliance for forum module: Add forform input text and select tag 2012-08-13 15:11:06 +08:00
Marina Glancy b56249893d MDL-34748 repository_filesystem: Sort files by title by default 2012-08-13 12:10:28 +08:00
Dan Poltawski 3311b367ae Merge branch 'MDL-34835_M22' of git://github.com/lazydaisy/moodle into MOODLE_22_STABLE 2012-08-13 10:20:35 +08:00
Petr Škoda 76bdfc1d79 MDL-34840 fix fatal pg error during upgrade
This is a regression caused by MDL-30515
2012-08-11 17:49:11 +02:00
AMOS bot 329dae9cb7 Automatically generated installer lang files 2012-08-11 00:31:32 +00:00
Mary Evans 3f7bbb4aeb MDL-34835 theme_fusion: fixed displaced navbar by extending #region-header.inside bottom margin by 70px in style/pagelayout.css 2012-08-10 20:36:37 +01:00
David Monllao cfcb4304c5 MDL-33531 backup Added format_string to course shortname 2012-08-10 08:43:24 +08:00
David Monllao b5ce7c4afc MDL-33531 backup Avoiding possible Notice 2012-08-10 08:43:24 +08:00
Lorenzo Nicora dcc36c3aa2 MDL-33531 Fixed the regexp used to find old backup files 2012-08-10 08:43:23 +08:00
AMOS bot 52b5634eaa Automatically generated installer lang files 2012-08-10 00:31:49 +00:00
Eloy Lafuente (stronk7) c36de79f5c weekly release 2.2.4+ 2012-08-09 20:51:09 +02:00
Eloy Lafuente (stronk7) 20244afd2c Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-08-09 20:46:25 +02:00
Tim Hunt 8cec008393 MDL-34590 javascript-static: nuclear option in openpopup
I think we have finally tamed Chrome on all platforms. (Crosses fingers.)
2012-08-09 17:17:50 +02:00
Rossiani Wijaya 072af5529b MDL-34575: fixed string typo and string duplication for label 2012-08-08 12:33:57 +08:00
Dan Marsden c491b300a3 MDL-34656 prevent login form from being shown inside iframe - also prevent wantsurl from being set to loadsco.php which isn't a valid page for initial load.
Conflicts:
	mod/scorm/loadSCO.php
2012-08-08 02:04:08 +02:00
Eloy Lafuente (stronk7) 8a991d8692 Merge branch 'MDL-34704_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-08 01:54:12 +02:00
Eloy Lafuente (stronk7) eab358f916 Merge branch 'wip-mdl-30792-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-08-08 01:01:28 +02:00
Charles Fulton 1238c6fee7 MDL-32023 wiki: remove hard-coded edit string 2012-08-08 00:29:48 +02:00
Charles Fulton 8440c2c72c MDL-29129 wiki: fix a hardcoded string 2012-08-07 23:59:39 +02:00
Aparup Banerjee 3407c2ffe0 Merge branch 'MDL-34566_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-07 15:08:04 +08:00
Aparup Banerjee 8bcbce1576 Merge branch 'MDL-34564_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-07 14:58:05 +08:00
Aparup Banerjee 24bcc1e525 Merge branch 'MDL-34560_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-07 14:45:55 +08:00
Aparup Banerjee 7733795102 Merge branch 'MDL-34559_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-07 14:37:24 +08:00
Aparup Banerjee 451b9aae0f Revert "Merge branch 'MDL-28531-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE"
This reverts commit 0c9a3490bb, reversing
changes made to dd9f138e1d.
2012-08-07 14:28:22 +08:00
Aparup Banerjee 0c9a3490bb Merge branch 'MDL-28531-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-08-07 13:58:45 +08:00
Rossiani Wijaya 807010c975 MDL-34559: removing accesshide class 2012-08-07 13:38:39 +08:00
Aparup Banerjee dd9f138e1d Merge branch 'MDL-34715-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-08-07 10:42:37 +08:00
Dan Poltawski 2dc3011aaf Merge branch 'MDL-34562_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-07 10:16:59 +08:00
Dan Poltawski 74552ee06a Merge branch 'MDL-34567_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-07 10:03:27 +08:00
Aparup Banerjee 07b64939e8 Merge branch 'MDL-22663-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-08-07 10:01:04 +08:00
Aparup Banerjee e8b2b43aff Merge branch 'MDL-33022-22' of git://github.com/danpoltawski/moodle into MOODLE_22_STABLE 2012-08-07 09:24:05 +08:00
Dan Poltawski c8a605729d Merge branch 'wip-MDL-34669-MOODLE_22_STABLE' of git://github.com/marinaglancy/moodle into MOODLE_22_STABLE 2012-08-07 08:48:45 +08:00
AMOS bot ea7537197b Automatically generated installer lang files 2012-08-07 00:31:57 +00:00
Eloy Lafuente (stronk7) 12b7b430a4 Merge branch 'MDL-31753' of git://github.com/enovation/moodle into MOODLE_22_STABLE 2012-08-07 02:12:57 +02:00
Kirill Astashov 1d8cd19d72 MDL-34669: Fix editor filepicker context bt trying to use page context 2012-08-06 16:57:24 +08:00
Aparup Banerjee f2a044dc6b Merge branch 'MDL-31599-22' of git://github.com/danpoltawski/moodle into MOODLE_22_STABLE 2012-08-06 16:44:17 +08:00
Aparup Banerjee a1ee3b38a2 Merge branch 'MDL-34716-22' of git://github.com/danpoltawski/moodle into MOODLE_22_STABLE 2012-08-06 16:38:20 +08:00
Rossiani Wijaya 90f288d617 MDL-34562 accessibility compliance for chat module: Add <label> for input text and select tag 2012-08-06 16:30:00 +08:00
Dan Poltawski ab6f805dd4 Merge branch 'MDL-34561_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-06 15:49:18 +08:00
Rossiani Wijaya cdbf85e62a MDL-34561 accessibility compliance for assignment module: add accesshide class 2012-08-06 15:17:18 +08:00
Dan Poltawski 572024c4e6 Merge branch 'MDL-34707_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-06 14:42:19 +08:00
Charles Fulton 456014e502 MDL-34629 wiki: convert default format value during restore 2012-08-06 14:19:53 +08:00
Dan Poltawski c834462e08 Merge branch 'MDL-34561_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-06 14:09:02 +08:00
Dan Poltawski a0e776e02d Merge branch 'MDL-25983_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-08-06 13:53:03 +08:00
Dan Poltawski 957576fd62 Merge branch 'MDL-34259-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-08-06 12:21:50 +08:00
Dan Poltawski dc5ab79d39 Merge branch 'MDL-34574_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-06 12:12:38 +08:00
Dan Poltawski 4f73ef521e MDL-34575 lang/notes: reorder string to be alphabetical 2012-08-06 12:08:35 +08:00
Dan Poltawski d4e606c8c0 Merge branch 'MDL-34575_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-06 12:06:47 +08:00
Dan Poltawski d0374ba31e Merge branch 'MDL-34558_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-06 11:54:19 +08:00
Dan Poltawski 9980863f30 Merge branch 'MDL-34557_accessibility_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-08-06 11:49:59 +08:00
Dan Poltawski b02ff428de Merge branch 'MDL-34705_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-06 11:31:44 +08:00
Dan Poltawski 77c3dbfc77 Merge branch 'MDL-28207-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-08-06 10:40:51 +08:00
Dan Poltawski 659a30df30 Merge branch 'MDL-34590_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-08-06 10:11:33 +08:00
Dan Poltawski c574b5dddd Merge branch 'MDL-34405_m22' of git://github.com/kordan/moodle into MOODLE_22_STABLE 2012-08-06 10:06:40 +08:00
Dan Poltawski b690238e6b Merge branch 'w32_MDL-34585_m22_blogfiles' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-08-06 09:46:03 +08:00
Sam Hemelryk 5831c9f891 Merge branch 'MDL-34708_m22' of git://github.com/nebgor/moodle into MOODLE_22_STABLE 2012-08-06 12:04:40 +12:00
Sam Hemelryk 297e891c1f Merge branch 'MDL-34658-22' of git://github.com/grabs/moodle into MOODLE_22_STABLE 2012-08-06 11:44:09 +12:00
Andreas Grabs 1dd8dd8496 MDL-34670 - undefined variable in feedback templates 2012-08-06 11:37:17 +12:00
Sam Hemelryk 07d8e5cfa7 Merge branch 'MDL-34645_22' of git://github.com/aolley/moodle into MOODLE_22_STABLE 2012-08-06 11:04:47 +12:00
Sam Hemelryk f5543aa05e Merge branch 'MDL-34647_22' of git://github.com/aolley/moodle into MOODLE_22_STABLE 2012-08-06 10:58:18 +12:00
Aparup Banerjee 542ed166a5 MDL-34708 Forms library : Fixed incorrect calendar day displayed across timezones. Credit to Matthew Davidson and team at rose-hulman.edu. 2012-08-05 23:33:04 +08:00
Rossiani Wijaya 2b8d9b5b7c MDL-34560 accessibility compliance for message: Add label for input text and select tag 2012-08-04 17:01:34 +08:00
Tim Hunt 45c29ec08d MDL-34704 couse, accesslib: improve $CFG->courselistshortnames
1. get_context_name should respect the $CFG->courselistshortnames
setting.

2. When $CFG->courselistshortnames is on, what to display should use a
language string, rather than string concatenation. This makes it
possible for people to configure the display. For example, they might
want 'My first course [M101]' instead of 'M101 My first course'.
2012-08-03 14:47:37 +01:00
Tim Hunt 92b7cdd052 MDL-34590 javascript-static: full-screep popups for Chrome.
I have left in both:
1. the code to get the window size correct initially, becuase that seems
sensible; and
2. the subsequent resize (with the setTimeout that Chrome requires,
thanks Jeff Rader for finding that) becuase on Chrome, it gets the size
a bit too big initially, so this correction is necessary.
2012-08-03 13:21:56 +01:00
Andreas Grabs 8821ce4d3d MDL-34658 - Saving failed because missing or false values 2012-08-03 12:00:22 +02:00
AMOS bot 25866795de Automatically generated installer lang files 2012-08-03 11:45:30 +02:00
Dan Poltawski d638b5f0aa MDL-34716 outcomes: Fix admin tree location 2012-08-03 16:07:36 +08:00
Frederic Massart 23249b70bd MDL-22663 Repository: WebDAV supports Digest authentication 2012-08-03 14:02:34 +08:00
Frederic Massart 9f412a79d0 MDL-22663 Repository: WebDAV supports SSL and chunked data
Conflicts:

	repository/webdav/lib.php
2012-08-03 13:58:26 +08:00
Frederic Massart f515f00aae MDL-22663 Repository: Fixed strict standards notices in WebDAV lib 2012-08-03 13:58:22 +08:00
Rossiani Wijaya 9106db46b6 MDL-34575 accessibility compliance for notes: Add form input text and select tag 2012-08-03 13:43:32 +08:00
Rossiani Wijaya a367cd0e5b MDL-34574 accessibility compliance for mymobile theme: Add forform input text and select tag 2012-08-03 12:54:22 +08:00
Rossiani Wijaya d9abbfdf5d MDL-34567 accessibility compliance for lesson module: Add forform input text and select tag 2012-08-03 12:54:16 +08:00
Rossiani Wijaya bfdae7324b MDL-34566 accessibility compliance for glossary module: Add forform input text and select tag 2012-08-03 12:54:15 +08:00
Rossiani Wijaya 5ec0afb99a MDL-34564 accessibility compliance for feedback module: Add forform input text and select tag 2012-08-03 12:54:12 +08:00
Rossiani Wijaya 7fc8b19110 MDL-34561 accessibility compliance for assignment module: Add forform input text and select tag 2012-08-03 12:54:09 +08:00
Rossiani Wijaya 0c12ac81ee MDL-34559 accessibility compliance for grade: Add forform input text and select tag 2012-08-03 12:54:08 +08:00
Rossiani Wijaya 57d086caa3 MDL-34558 accessibility compliance for filter: Add forform input text and select tag 2012-08-03 12:54:07 +08:00
Rossiani Wijaya 09fab4e7b3 MDL-34557 accessibility compliance for enrol: Add forform input text and select tag 2012-08-03 12:54:06 +08:00
Rajesh Taneja 64171aac70 MDL-30792 Files API: Cleaner approach to get maxbytes size in filepicker 2012-08-03 11:47:44 +08:00
Rajesh Taneja fa7a8a9899 MDL-30792 Files API: maxbytes will be set by get_max_upload_file_size if less then 0 or greater then max moodle limit 2012-08-03 11:44:20 +08:00
Frederic Massart bf8777d126 MDL-28531 Backup: Automated backups run when they are scheduled
Conflicts:

	lib/tests/backup_test.php
2012-08-03 09:30:14 +08:00
Frederic Massart e45890a841 MDL-34259 Lesson: True/false questions don't break on missing answer 2012-08-03 09:23:13 +08:00
Frederic Massart cbb011a1a6 MDL-28207 Course: Showing/hiding/marking a section respect capabilities 2012-08-03 09:21:14 +08:00
Tim Hunt cd914a25d0 MDL-34707 backup UI: only include the JS once. 2012-08-02 18:48:07 +01:00
Tim Hunt f66ad4aa11 MDL-34705 role assignments list: should link to contexts.
This will make Admin's lives a bit easier.
2012-08-02 18:15:40 +01:00
Petr Škoda bfa9be6230 MDL-34585 fix broken blog file access control 2012-08-02 09:59:31 +02:00
David Monllao a830d9071e MDL-25983 enrol_imsenterprise Importing the course summary when adding new courses 2012-08-02 15:35:25 +08:00
Dan Poltawski f2ddce97bd weekly release 2.2.4+ 2012-08-02 14:39:59 +08:00
Dan Poltawski 347bea1069 MDL-31599 block_news - incorrect RSS feed for guest user
Was previously using the userid 0, rather than guest to use
authenticated RSS feed.

Thanks to Paul Verrall at LUNS for helping me debug this.
2012-08-02 11:11:44 +08:00
Dan Marsden 9d94aa3154 MDL-33022 mod_form: set correct groupid when editing an existing post 2012-08-02 10:48:01 +08:00
Petr Škoda 8e6cbb58d8 MDL-34368 fix another validuntil condition 2012-08-01 15:07:16 +08:00
Ankit Agarwal 6efb36babf MDL-32827 calendar: include global to check for events with courseid as siteid 2012-08-01 15:20:52 +12:00
Dan Poltawski a9dcb44830 MDL-34599 mod_quiz: optional $thispage & $nextpage
The previous change making the params required was a regression.
2012-08-01 09:07:02 +08:00
Charles Fulton 854a3741bc MDL-29909 wiki: do not show groups when no groups present 2012-08-01 12:40:06 +12:00
Dan Poltawski 37699accdb MDL-32791 mod_quiz - correct bad version
Many thanks for Jenkins for spotting it :)
2012-07-31 19:40:33 +08:00
Dan Poltawski a14127cdbc Merge branch 'MDL-32791_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-07-31 17:46:27 +08:00
Dan Poltawski 254f6e4d96 Merge branch 'MDL-34599_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-07-31 17:42:57 +08:00
Rossiani Wijaya bc2a87e252 MDL-34556 accessibility compliance for course: Add forform input text and select tag 2012-07-31 17:18:04 +08:00
Rossiani Wijaya e1d3079fb6 MDL-34555 accessibility compliance for calendar: Add forform input text and select tag 2012-07-31 17:12:07 +08:00
Rossiani Wijaya 65ae20ba36 MDL-34554 accessibility compliance for blocks: Add forform input text and select tag 2012-07-31 17:06:16 +08:00
Rossiani Wijaya 229904970b MDL-34553 accessibility compliance for authentication: Add forform input text and select tag 2012-07-31 16:59:55 +08:00
Rossiani Wijaya d3b86750a3 MDL-34552 accessibility compliance for admin: Add forform input text and select tag 2012-07-31 16:35:30 +08:00
Aparup Banerjee 0e12789b27 MDL-34650 added MDLs to todo comment and deprecation comment.
(also triggering an amos script here for the other MDL-34650 commit)

AMOS BEGIN
  CPY [minute,form],[minute,core]
  CPY [month,form],[month,core]
  CPY [options,editor],[options,core]
  CPY [selectacourse,backup],[selectacourse,core]
AMOS END
2012-07-31 15:40:15 +08:00
Aparup Banerjee b63bc5027b MDL-34650 typo correction 2012-07-31 13:23:42 +08:00
Aparup Banerjee 906f0ddbca Merge branch 'MDL-34650_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-07-31 13:20:52 +08:00
Sam Hemelryk b21f174957 Merge branch 'MDL-34528_M22' of git://github.com/lazydaisy/moodle into MOODLE_22_STABLE 2012-07-31 16:49:20 +12:00
Sam Hemelryk 6cb03ab5d3 Merge branch 'MDL-30515_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-07-31 16:40:37 +12:00
Sam Hemelryk 09c3821bf4 Merge branch 'MDL-32499_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-07-31 16:29:41 +12:00
Sam Hemelryk dd204f3a8f Merge branch 'MDL-32931_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-07-31 16:18:41 +12:00
Sam Hemelryk ab474e3e6d Merge branch 'MDL-32827-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-07-31 16:15:49 +12:00
Rossiani Wijaya 9000014032 MDL-34650 - accessibility compliance: Add <label> for form input text and select tag 2012-07-31 12:10:47 +08:00
Dan Poltawski 6b11733524 Merge branch 'MDL-25953-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-07-31 12:02:20 +08:00
Ankit Agarwal a521e7e01f MDL-32827 calendar: update eventtype of broken event in bulk instead of doing it one by one 2012-07-31 11:20:00 +08:00
Dan Poltawski a40624990c Merge branch 'MDL-34624_M22' of git://github.com/lazydaisy/moodle into MOODLE_22_STABLE 2012-07-31 11:10:44 +08:00
Dan Poltawski b5affb62a8 Merge branch 'MDL-34255_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-07-31 10:32:00 +08:00
Jerome Mouneyrac 8884e3a2a8 MDL-33869 user_get_user_details: add support for 'Show user identity' fields set by administrator 2012-07-31 10:28:11 +08:00
Crafton Williams 01924246c3 MDL-33869 user_get_user_details: allow return of idnumber 2012-07-31 10:28:02 +08:00
Adam Olley 625aa8b043 MDL-34647: admintool: uploaduser enrolments now obey enrolperiod directive 2012-07-31 11:37:34 +09:30
Adam Olley aef7e750b0 MDL-34645: enrol_manual: enrolment init to pass default duration setting 2012-07-31 11:10:16 +09:30
Dan Poltawski e9c0708633 Merge branch 'MDL-34483_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-07-31 09:12:37 +08:00
Sam Hemelryk d3fd4849ae Merge branch 'MDL-28568_noncontact_warning_22' of git://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-07-31 11:59:02 +12:00
Tim Hunt ae1ecaf94a MDL-34483 qformat_examview: Commit example file.
Supplied by Rick Jerz.
2012-07-30 11:56:51 +01:00
Nathan Mares 20c116f9f7 MDL-34368: Fix broken query in so tokens are correctly checked against the linked service 2012-07-30 15:49:51 +08:00
Dan Poltawski 7a9aacfcce Merge branch 'MDL-34507-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-07-30 14:05:07 +08:00
Dan Poltawski fe8dff2b01 Merge branch 'MDL-34589_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-07-30 13:56:13 +08:00
Dan Poltawski a1355c4876 Merge branch 'MDL-33537_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-07-30 13:46:40 +08:00
Dan Poltawski 368fb63346 Merge branch 'w31_MDL-34538_m22_validatefloats' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-07-30 12:35:17 +08:00
Dan Poltawski 617eabaf87 Merge branch 'MDL-31509_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-07-30 12:15:57 +08:00
Dan Poltawski 0022ff1787 Merge branch 'wip-mdl-34239-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-07-30 12:05:36 +08:00
Dan Poltawski f2a59d76d0 Merge branch 'MDL-34519_22_course_reset_patch' of git://github.com/rlorenzo/moodle into MOODLE_22_STABLE 2012-07-30 11:58:06 +08:00
Mary Evans 108ea10c38 MDL-34528 theme-canvas: Removed redundent exclude stylesheet configurations from CANVAS theme 2012-07-29 21:56:18 +01:00
kordan 1d55b8ecae MDL-34405 theme_formal_white: added background for quiz overview 2012-07-29 16:02:36 +02:00
Mary Evans 658c9cc336 MDL-34624 theme_base: added background-color to style/admin.css for role edit default 2012-07-29 14:48:54 +01:00
Charles Fulton 7f649757b5 MDL-32712 assignment: convert default format value during upgrade 2012-07-28 13:09:00 -07:00
Tim Hunt c3d3eb3100 MDL-31509 quiz outcomes: let people associate quizzes with outcomes.
The quiz does not really support outcomes, but even so in 1.9 you could
select outcomes on the quiz edit form, and apparently this was useful to
some people, therefore we should re-enable it.
2012-07-27 18:13:51 +01:00
Petr Škoda aee963dac8 MDL-34538 fix PARAM_FLOAT validation 2012-07-27 18:46:23 +02:00
Tim Hunt d4b3dd67ad MDL-32791 quiz db: clean up garbage data that was causing problems.
Melinda Kraft reported having rows in their quiz_question_instances
table which caused various problems. These rows are meaningless, so I
have done a DB upgrade step to clean them up, which should deal with the
bad side-effets they were causing.
2012-07-27 16:47:56 +01:00
Jean-Michel Vedrine c354a10bd2 MDL-34483 qformat_examview: handle more questions.
These fixes come from testing with the example file supplied by Rick
Jerz.
2012-07-27 12:21:01 +01:00
Jean-Michel Vedrine 0f19cdac5e MDL-34483 qformat_examview: clean the code to make codechecker happy 2012-07-27 12:21:00 +01:00
Jean-Michel Vedrine 2275b67a95 MDL-34483 qformat_examview: changes required to make it basically work. 2012-07-27 12:20:58 +01:00
Tim Hunt dcfdf468fc MDL-34599 quiz attempts: more robust if page number out of range.
Rather than throwing an exception, we should just show the first/last
page of the quiz if the page number is out-of-range.
2012-07-27 11:48:04 +01:00
Rajesh Taneja 835731d129 MDL-34239 Blog: Editing blog associated with module will be keep it's association 2012-07-27 14:02:31 +08:00
Ankit Agarwal 44793f390f MDL-32827 calendar: Added logic to handle calendar events with empty eventtypes during restore 2012-07-27 11:17:19 +08:00
Ankit Agarwal de2635879e MDL-32827 calendar: bumping the version 2012-07-27 11:17:18 +08:00
Ankit Agarwal 7a5bbcf7f2 MDL-32827 calendar: Fixining calender entries with no eventtype 2012-07-27 11:16:30 +08:00
Frederic Massart 7bef288418 MDL-25953 Repository: Amazon S3 supports sub directories
Conflicts:

	repository/s3/lib.php
2012-07-27 10:52:06 +08:00
Frederic Massart b5b24718e3 MDL-25953 Repository: Updated Amazon S3 library
Conflicts:

	repository/s3/lib.php
2012-07-27 10:52:06 +08:00
Frederic Massart 0a9f98bf4e MDL-34507 Filepicker: Repositories with specific filetypes are displayed when expected 2012-07-27 10:01:14 +08:00
David Monllao c04f9dd478 MDL-32499 gradingform_rubric Avoid backup/restore of rubric fillings without an existing criteria 2012-07-27 09:28:41 +08:00
David Monllao b729292ca3 MDL-32931 mod_forum Polishing patch and taking into account courses without previous accesses 2012-07-27 09:28:33 +08:00
Tom Lanyon a6bc93ae8f MDL-32931 mod_forum Change forum overview to avoid use of (potentially large and slow ) log table. 2012-07-27 09:28:33 +08:00
David Monllao 16c5104baa MDL-30515 grade Removing duplicate values to avoid upgrade to 2.x crash 2012-07-27 09:26:29 +08:00
Tim Hunt d87c8d7ffd MDL-34589 quiz report graphs: PHP5.4 issue with unset($array[$float]).
Thanks to Matthew Davidson for diagnosing the problem.
2012-07-26 19:00:15 +01:00
Aparup Banerjee dd9274c4fc weekly release 2.2.4+ 2012-07-26 14:27:35 +08:00
Rossiani Wijaya 05d7440e19 MDL-34255 group calendar events: fixed adding group calendar event for students 2012-07-26 14:24:44 +08:00
Aparup Banerjee d61be4030f Merge branch 'install_22_STABLE' of git://git.moodle.cz/moodle-install into MOODLE_22_STABLE 2012-07-26 14:00:57 +08:00
AMOS bot 2b7bbba7c4 Automatically generated installer lang files 2012-07-26 00:31:45 +00:00
Dan Poltawski 60f5190149 Merge branch 'MDL-13629_droplow_22' of git://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-07-25 12:29:56 +08:00
Dan Poltawski a875f820c2 MDL-27083 - upgrade: fix incorrect version number 2012-07-25 09:56:43 +08:00
Jason Ilicic 0c62ad79fb MDL-34529: Fixed ordering of course sections when performing import/restore by adding the sort parameter. 2012-07-25 10:29:55 +09:30
Sam Hemelryk 775673d4b1 Merge branch 'MDL-27083-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-07-25 09:18:06 +12:00
Rex Lorenzo 6570f0e041 MDL-34519 - Course reset not protected by proper capability 2012-07-24 12:04:41 -07:00
Aparup Banerjee 2a912a7aff MDL-26969 assignment : clarified phpdoc and fixed whitespace. 2012-07-24 16:40:24 +08:00
Aparup Banerjee aa95731b73 Merge branch 'MDL-26969_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-07-24 16:40:19 +08:00
Petr Škoda 249f07e616 MDL-34129 show course info on enrolment page 2012-07-24 13:42:03 +08:00
Aparup Banerjee ccbdbc7f67 Merge branch 'wip-mdl-33159-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-07-24 11:03:15 +08:00
AMOS bot f0521d9b1a Automatically generated installer lang files 2012-07-24 00:31:58 +00:00
Dan Poltawski 59cc009152 Merge branch 'MDL-34251_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-07-23 14:02:15 +08:00
Dan Poltawski 5d6842891e Merge branch 'MDL-34226_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-07-23 13:54:11 +08:00
Rajesh Taneja 4dba21f35a MDL-34148 Blog: Fixed variable name used for saving module name
Updated Erik's patch to match coding style
2012-07-23 13:46:26 +08:00
Erik Lundberg d6d00b134e MDL-34148: Instead of using the module name from the filesystem, the blog menu now fetches the module name with get_string(). 2012-07-23 13:46:25 +08:00
Dan Poltawski 5d32507ebe Merge branch 'wip-MDL-34404-m22' of git://github.com/samhemelryk/moodle into MOODLE_22_STABLE 2012-07-23 13:26:20 +08:00
Dan Poltawski 7dd07a8d38 Merge branch 'w30_MDL-34396_m22_loginhttpsspell' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-07-23 12:20:16 +08:00
Frederic Massart c7f65058d0 MDL-27083 Questions: Orphaned questions are adopted on upgrade 2012-07-23 12:09:20 +08:00
Rossiani Wijaya 6961237957 MDL-26969 Assignment module - upload: fixed get_submission() return value to nothing when param is set to false. 2012-07-23 11:33:11 +08:00
Aparup Banerjee aeb48cca52 Merge branch 'MDL-32665_chat_popup_22' of git://github.com/andyjdavis/moodle into MOODLE_22_STABLE 2012-07-23 10:22:09 +08:00
Sam Hemelryk 0fd928ddeb Merge branch 'MDL-33560-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-07-23 12:25:09 +12:00
Jean-Philippe Gaudreau 0319cba7ee MDL-31516 Fixing grade_edit_tree::format_number 2012-07-23 12:22:52 +12:00
Sam Hemelryk 71268ddb62 Merge branch 'MDL-29563_22' of https://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-07-23 11:49:28 +12:00
Jason Ilicic 465775fc67 MDL-34427: Corrected language string when not allowed to enter the chat room. 2012-07-23 11:40:31 +12:00
Sam Hemelryk 82bb3c039c Merge branch 'm22_MDL-34374' of git://github.com/danmarsden/moodle into MOODLE_22_STABLE 2012-07-23 11:37:59 +12:00
Sam Hemelryk 5e202b6cb4 Merge branch 'm22_MDL-34233' of git://github.com/danmarsden/moodle into MOODLE_22_STABLE 2012-07-23 11:26:41 +12:00
Sam Hemelryk 5f6c20bca2 Merge branch 'MDL-34265-m22' of git://github.com/ankitagarwal/moodle into MOODLE_22_STABLE 2012-07-23 10:39:30 +12:00
Andrew Robert Nicols 6bec1fe66f MDL-34322 Don't display empty navigation nodes which have no link 2012-07-23 09:43:31 +12:00
Sam Hemelryk 4298cce0b6 MDL-34243 completion: Fixed up call to completion_criteria::factory that was passing object 2012-07-23 09:39:02 +12:00
Aaron Barnes 4ed5856a08 MDL-34243 completion: get_criteria() incorrectly passing object 2012-07-23 09:39:02 +12:00
Luke Tucker 150e548537 MDL-34396 Ensure TinyMCE editor spell checking works on pages with $PAGE->https_required() 2012-07-21 20:31:05 +02:00
David Monllao 2322b97e38 MDL-33537 gradingform_rubric Adding the definition when retrieving grading instances
Credit to Sam Chaffee
2012-07-20 14:59:11 +08:00
Derick Turner 125840c2a1 MDL-33159 course: Fix for site wide restricted modules not being selected by default 2012-07-20 12:33:51 +08:00
Tim Hunt b0e0762ca0 MDL-34251 question engine: possible infinite loop loading usages
In the case where either a question_attempt had not steps, or a
question_usage had not question_attempts, the load_from_records methods
could get stuck in an infinite loop.
2012-07-19 12:45:47 +01:00
Tim Hunt db5b519022 MDL-34226 multichoice qtype: correct is_complete_response for multianswer
The multianswer qtype uses the multi-choice one, and the way it does its
responses array breaks an assumption that multi-choice was making.
2012-07-19 12:45:31 +01:00
Andrew Davis 9e198bd6a6 MDL-28568 message: added a warning message when the user is about to message someone who cant reply 2012-07-19 17:07:12 +08:00
Sam Hemelryk db593ec914 MDL-33448 javascript: Added caching for the YUI instance used for debug in get_string 2012-07-19 20:22:32 +12:00
Ankit Agarwal 2fd58992ba MDL-34265 SCORM: Removing sorting from unsortable columns 2012-07-19 15:58:28 +08:00
Dan Marsden 03cafd97b1 MDL-34233 SCORM backup - change to using set_source_sql to preserve order of records in backup. 2012-07-19 19:40:36 +12:00
David Monllao e352a32604 MDL-29563 course Throwing an exception instead of a message 2012-07-19 15:36:37 +08:00
David Monllao f3d81a05ad MDL-29563 course Hide duplication button in activities without backup2 support - Credit to Mark Nielsen 2012-07-19 15:36:37 +08:00
Dan Poltawski 947ba9c802 weekly release 2.2.4+ 2012-07-19 13:46:58 +08:00
Dan Poltawski 9c2d2071ee Merge branch 'install_22_STABLE' of git://github.com/amosbot/moodle into MOODLE_22_STABLE 2012-07-19 13:42:26 +08:00
Dan Marsden caf7fb15d5 MDL-34374 SCORM prevent skipview being set to always when used inside a SCORM course format. 2012-07-19 09:05:38 +12:00
Andrew Davis f7b9d61121 MDL-32665 mod_chat: disabled popup notifications in the chat windows 2012-07-18 19:08:32 +08:00
Andrew Davis 90fa8589dd MDL-13629 grade: added some unit tests to clarify the handling of droplow and improved apply_limit_rules() 2012-07-18 09:38:26 +08:00
Frederic Massart eb51ce159f MDL-33560 Enrol: Enrol password can be unmasked 2012-07-17 16:48:59 +08:00
Sam Hemelryk bff217f18b Merge branch 'MDL-33575_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-07-17 15:50:00 +12:00
Rossiani Wijaya f014bd253f MDL-33575 choice module: add label to checkbox element when privacy of results is set to publish full results 2012-07-17 10:16:33 +08:00
AMOS bot b43646c86a Automatically generated installer lang files 2012-07-17 00:31:52 +00:00
David Monllaó 6fb835d5a3 MDL-30876 filter_mediaplugin Wrapping the style sheets access with try & catch
Conflicts:

	lib/javascript-static.js
2012-07-17 12:21:11 +12:00
Dan Poltawski 6fc4e1becb Merge branch 'MDL-34187_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-07-16 15:57:43 +08:00
Aparup Banerjee fefcb951bc MDL-26587 Question : fixed restoring shortanswer where answers are missing due to data error in mbz file. 2012-07-16 15:51:19 +08:00
Dan Poltawski 5d0d6c692c Merge branch 'MDL-23219_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-07-16 14:33:06 +08:00
Dan Poltawski 38d358fc37 Merge branch 'wip-mdl-30798-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-07-16 14:26:15 +08:00
Rajesh Taneja 0c9b8dc4b3 MDL-30798 Blog: link param for entries about this course link is fixed 2012-07-16 14:12:35 +08:00
Dan Poltawski 49b4842325 Merge branch 'MDL-31622-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-07-16 11:34:29 +08:00
Dan Poltawski 091c725382 Merge branch 'w29_MDL-34271_m22_mysqlcollation' of git://github.com/skodak/moodle into MOODLE_22_STABLE 2012-07-16 11:01:16 +08:00
Dan Poltawski 62b488086b Merge branch 'MDL-34164_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-07-16 10:05:59 +08:00
Sam Hemelryk f1cb47f9a3 Merge branch 'MDL-33624-22' of git://github.com/danpoltawski/moodle into MOODLE_22_STABLE 2012-07-16 13:50:48 +12:00
Dan Poltawski b8722357c7 MDL-33624 lang - remove incosistent use of placeholder 2012-07-16 09:46:11 +08:00
Sam Hemelryk 3c0d5ff61e Merge branch 'MDL-26145_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-07-16 11:57:25 +12:00
Sam Hemelryk a9fb701ad5 Merge branch 'MDL-28155_22' of git://github.com/dmonllao/moodle into MOODLE_22_STABLE 2012-07-16 11:50:13 +12:00
Sam Hemelryk aa83dea5e8 Merge branch 'MDL-32310-22' of git://github.com/danpoltawski/moodle into MOODLE_22_STABLE 2012-07-16 11:00:49 +12:00
Sam Hemelryk 0cc403cbe6 Merge branch 'MDL-33917-2' of git://github.com/danpoltawski/moodle into MOODLE_22_STABLE 2012-07-16 10:49:57 +12:00
Charles Fulton 3635131be5 MDL-27563 shibboleth: set context on login page 2012-07-16 09:39:47 +12:00
Sam Hemelryk 9f55156eb4 Merge branch 'MDL-33788b-22' of git://github.com/srynot4sale/moodle into MOODLE_22_STABLE 2012-07-16 09:18:36 +12:00
AMOS bot f54ebb38f4 Automatically generated installer lang files 2012-07-15 00:32:07 +00:00
Tim Hunt 03c558af10 MDL-34164 quiz reports: only try to show graphs if GD is installed.
if (empty($CFG->gdversion)) { seems to be the common idiom for this.
I refactored the graph output into the renderer, to avoid having to
duplicate that test three times.

Conflicts:

	mod/quiz/report/overview/report.php
2012-07-14 09:29:35 +01:00
Tim Hunt f2c88f41fe MDL-34257 quiz 'secure' window: does not close automatically.
Conflicts:

	mod/quiz/version.php
2012-07-13 18:05:15 +01:00
Tim Hunt d8f23e09f2 MDL-23219 check permissions: show relevant role-assignments.
Adding this list of role assignments should make it much easier for
admins to work out why, when the permissions shown in the check
permisisons page are now what they expect.

I thought about making the links go more directly to, for example, the
assign roles pages for each context, but because of things like
enrolments in courses that is hard. It is only two clicks to go to the
context, then click the right link in the settings block there.

I also re-orderd some of the code in check.php to try to get all the DB
code before all the output code.
2012-07-13 15:23:18 +01:00
Dan Poltawski dea59b1e67 MDL-33917 mod_resource - fix upgrade of front page resources
This only affected resources linked  as a full url
2012-07-13 15:44:12 +08:00
Frederic Massart b1aa16a30e MDL-31622 Forms: Date selector supports i18n 2012-07-13 08:57:44 +08:00
AMOS bot d59c3ffff7 Automatically generated installer lang files 2012-07-13 00:32:29 +00:00
Petr Škoda 397cbe04e4 MDL-34271 add new cli tool for mysql collation conversions 2012-07-12 14:58:14 +02:00
Petr Škoda 39f6deda84 MDL-34271 use the same collation when adding new tables or columns 2012-07-12 14:57:27 +02:00
Petr Škoda 61c4fa28c1 MDL-34271 cleanup mysql engine hack before adding similar collation hack 2012-07-12 14:42:13 +02:00
Dan Poltawski 9a7c3d5fea weekly release 2.2.4+ 2012-07-12 16:02:22 +08:00
Dan Poltawski 400cf711e0 Merge branch 'install_22_STABLE' of git://github.com/amosbot/moodle into MOODLE_22_STABLE 2012-07-12 15:50:35 +08:00
Sam Hemelryk f163de5a8c Merge branch 'MDL-32297-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-07-12 18:24:36 +12:00
Sam Hemelryk bdbe35e740 Revert "MDL-33575 choice module: add label to checkbox element when privacy of results is set to publish full results"
This reverts commit ccef0a8b0a.
2012-07-12 18:21:36 +12:00
Paul Nicholls 8290c59cdf MDL-32582 - filter/multimedia: MP3 Flow Player doesn't work in Chrome if empty stylesheets are present 2012-07-12 13:40:57 +08:00
Mary Evans 53bf5f7cce MDL-31169 theme_base: adds clearfix to page layouts so body height is not zero 2012-07-12 09:51:39 +08:00
Frederic Massart 7c6c39f153 MDL-32297 Forms: Date Picker JS popup is not constraint to parent form 2012-07-12 09:51:23 +08:00
AMOS bot f16836f3b3 Automatically generated installer lang files 2012-07-12 00:32:30 +00:00
Petr Škoda 4000115abe MDL-34175 one more hardcoded /admin/ in mnet 2012-07-12 09:44:38 +12:00
David Monllao ac430a06f5 MDL-28155 mod_assignment Using the this object instead of a string 2012-07-11 15:14:19 +08:00
AMOS bot a1320c7545 Automatically generated installer lang files 2012-07-10 20:33:22 +02:00
Petr Skoda ae5b8854e5 MDL-33712 add support for unique moodle tags in tinymce 2012-07-10 15:56:22 +08:00
Sun Zhigang 7add6bb507 MDL-28155 mod_assignment - Fix an ugly hack
Show download all link for any assignment types which implement
the download_submissions() method
2012-07-10 13:32:36 +08:00
Dan Poltawski 4fdabcce0e Merge branch 'MDL-34171_22' of git://github.com/timhunt/moodle into MOODLE_22_STABLE 2012-07-10 09:25:32 +08:00
Petr Škoda b1eae8a90d MDL-34155 use course visibility default when creator does not have moodle/course:visibility 2012-07-10 12:49:18 +12:00
Petr Škoda 7232e79e8e MDL-34175 a few more renamed admin fixes
Conflicts:

	admin/tool/assignmentupgrade/batchupgrade.php
	admin/tool/assignmentupgrade/index.php
	admin/tool/assignmentupgrade/listnotupgraded.php
	admin/tool/assignmentupgrade/upgradesingle.php
	admin/tool/assignmentupgrade/upgradesingleconfirm.php
2012-07-10 12:44:52 +12:00
Petr Škoda 0f7e3d045d MDL-34175 automatically fix admin JS links 2012-07-10 12:44:06 +12:00
Dan Marsden 5d7f0fcc1e MDL-34198 SCORM remove unecessary get_records call 2012-07-10 08:34:53 +08:00
Sam Hemelryk 714f2d590a Merge branch 'MDL-29470-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-07-10 12:09:14 +12:00
Sam Hemelryk 730ff61856 Merge branch 'MDL-32297-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-07-10 12:05:42 +12:00
Charles Fulton 2064567b6e MDL-27800 admin: make front page restore link consistent
Conflicts:

	admin/settings/frontpage.php
2012-07-10 11:33:34 +12:00
Dan Poltawski 1e73d1ddaa Merge branch 'MDL-18301-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-07-09 14:27:23 +08:00
Dan Poltawski a36631fcee Merge branch 'MDL-32057_22' of git://github.com/aolley/moodle into MOODLE_22_STABLE 2012-07-09 14:14:25 +08:00
Frederic Massart afedb66359 MDL-29470 Backup: fixed unexpected next automated backup date 2012-07-09 13:48:52 +08:00
Dan Poltawski 92e63062d4 Merge branch 'MDL-33030_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-07-09 13:42:40 +08:00
Dan Poltawski 1c426aca1a Merge branch 'wip-mdl-29969-m22' of git://github.com/rajeshtaneja/moodle into MOODLE_22_STABLE 2012-07-09 13:39:27 +08:00
Dan Poltawski 98fb4b4f09 Merge branch 'MDL-34077-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-07-09 13:37:47 +08:00
Gilles-Philippe Leblanc 751f5b0ae9 MDL-33822 SCORM Interactions report - fix formatting of empty cells. 2012-07-09 17:24:35 +12:00
Dan Poltawski f5fe53613b MDL-17395 auth_email: clarify description 2012-07-09 17:19:45 +12:00
Aaron Barnes c4c0b5a4e9 MDL-33788 completion: SQL optimisation 2012-07-09 15:39:20 +12:00
Ankit Agarwal 409d09a6c2 MDL-27831 calendar: Removing reduntand control icons in delete.php 2012-07-09 11:31:19 +08:00
Dan Poltawski 4dff0a79ed Merge branch 'MDL-33885-22' of git://github.com/FMCorz/moodle into MOODLE_22_STABLE 2012-07-09 10:32:00 +08:00
Sam Hemelryk ccef0a8b0a MDL-33575 choice module: add label to checkbox element when privacy of results is set to publish full results 2012-07-09 10:56:33 +12:00
Sam Hemelryk df40666775 Merge branch 'MDL-30816_m22' of git://github.com/rwijaya/moodle into MOODLE_22_STABLE 2012-07-09 10:28:37 +12:00
Sam Hemelryk 8e7d4f3317 Merge branch 'MDL-33514-22' of git://github.com/danpoltawski/moodle into MOODLE_22_STABLE 2012-07-09 10:24:23 +12:00
AMOS bot 8450522521 Automatically generated installer lang files 2012-07-07 00:31:25 +00:00
Tim Hunt b2fba4af15 MDL-34171 qformat_gift: Fix edge case with special character escaping.
We need to escape \ on export, because it is un-escaped on import.
2012-07-06 10:46:57 +01:00
David Monllao 937963c589 MDL-26145 mod_chat Talk feature not working correctly 2012-07-06 16:13:40 +08:00
Frederic Massart 480d12fe8f MDL-33885 Blog: Added maxlength rule to subject field 2012-07-06 13:17:12 +08:00
Frederic Massart 5c984fd630 MDL-18301 Gradebook: Added feature for components to control grade visibility 2012-07-06 09:54:22 +08:00
Rossiani Wijaya 14ed66c339 MDL-30816 Choice module: add format_string() for choice name. 2012-07-05 12:22:26 +08:00
Rossiani Wijaya ba09f6b84e MDL-30816 choice module: fixed accessibility for responses table and make it easier for screenreader to read it 2012-07-05 12:22:14 +08:00
Adam Olley b857ff8c19 MDL-32057: Fix cohort enrolment css for ie7 2012-07-03 09:25:10 +09:30
Rossiani Wijaya 06f52d36cc MDL-33030 Lesson module: fixed progress bar 2012-07-02 16:21:17 +08:00
Rajesh Taneja af70031477 MDL-29969 Administration: Default value for numsections is set to 1 for site frontpage 2012-07-02 14:34:55 +08:00
Frederic Massart b8fba415a5 MDL-32297 Forms: Date Picker JS popup is not constraint to parent form 2012-06-29 14:21:20 +08:00
Frederic Massart f544bb6bf6 MDL-34077 Repositories: Flickr and Picasa can have custom names
Conflicts:

	repository/picasa/lib.php
2012-06-28 12:13:57 +08:00
Dan Poltawski e16922ede9 MDL-33514 - rss: also exclude suspended users feeds
Thanks Petr!
2012-06-11 10:27:25 +08:00
Dan Poltawski bc8bf2376c MDL-33514 - rss: only retrieve RSS feeds for valid users 2012-06-06 23:37:45 +08:00
Kanika Goyal 6a5e3c1d9d MDL-32125 mod_forum: updating subscription mode not reflected 2012-04-02 10:04:18 +05:30
Tomasz Muras 8435db0112 MDL-31753 Get correct course ID for Community finder search link. 2012-02-23 11:51:03 +00:00
491 changed files with 9471 additions and 4157 deletions
+211
View File
@@ -0,0 +1,211 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* MySQL collation conversion tool.
*
* @package core
* @copyright 2012 Petr Skoda (http://skodak.org)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
define('CLI_SCRIPT', true);
require(dirname(dirname(dirname(__FILE__))).'/config.php');
require_once($CFG->libdir.'/clilib.php'); // cli only functions
if ($DB->get_dbfamily() !== 'mysql') {
cli_error('This function is designed for MySQL databases only!');
}
// now get cli options
list($options, $unrecognized) = cli_get_params(array('help'=>false, 'list'=>false, 'collation'=>false, 'available'=>false),
array('h'=>'help', 'l'=>'list', 'a'=>'available'));
if ($unrecognized) {
$unrecognized = implode("\n ", $unrecognized);
cli_error(get_string('cliunknowoption', 'admin', $unrecognized));
}
$help =
"MySQL collation conversions script.
It is strongly recommended to stop the web server before the conversion.
This script may be executed before the main upgrade - 1.9.x data for example.
Options:
--collation=COLLATION Convert MySQL tables to different collation
-l, --list Show table and column information
-a, --available Show list of available collations
-h, --help Print out this help
Example:
\$ sudo -u www-data /usr/bin/php admin/cli/mysql_collation.php --collation=utf8_general_ci
";
if (!empty($options['collation'])) {
$collations = mysql_get_collations();
$collation = clean_param($options['collation'], PARAM_ALPHANUMEXT);
$collation = strtolower($collation);
if (!isset($collations[$collation])) {
cli_error("Error: collation '$collation' is not available on this server!");
}
echo "Converting tables and columns to '$collation' for $CFG->wwwroot:\n";
$prefix = $DB->get_prefix();
$prefix = str_replace('_', '\\_', $prefix);
$sql = "SHOW TABLE STATUS WHERE Name LIKE BINARY '$prefix%'";
$rs = $DB->get_recordset_sql($sql);
$converted = 0;
$skipped = 0;
$errors = 0;
foreach ($rs as $table) {
echo str_pad($table->name, 40). " - ";
if ($table->collation === $collation) {
echo "NO CHANGE\n";
$skipped++;
} else {
$DB->change_database_structure("ALTER TABLE $table->name DEFAULT COLLATE = $collation");
echo "CONVERTED\n";
$converted++;
}
$sql = "SHOW FULL COLUMNS FROM $table->name WHERE collation IS NOT NULL";
$rs2 = $DB->get_recordset_sql($sql);
foreach ($rs2 as $column) {
$column = (object)array_change_key_case((array)$column, CASE_LOWER);
echo ' '.str_pad($column->field, 36). " - ";
if ($column->collation === $collation) {
echo "NO CHANGE\n";
$skipped++;
continue;
}
if ($column->type === 'tinytext' or $column->type === 'mediumtext' or $column->type === 'text' or $column->type === 'longtext') {
$notnull = ($column->null === 'NO') ? 'NOT NULL' : 'NULL';
$default = (!is_null($column->default) and $column->default !== '') ? "DEFAULT '$column->default'" : '';
// primary, unique and inc are not supported for texts
$sql = "ALTER TABLE $table->name MODIFY COLUMN $column->field $column->type COLLATE $collation $notnull $default";
$DB->change_database_structure($sql);
} else if (strpos($column->type, 'varchar') === 0) {
$notnull = ($column->null === 'NO') ? 'NOT NULL' : 'NULL';
$default = !is_null($column->default) ? "DEFAULT '$column->default'" : '';
// primary, unique and inc are not supported for texts
$sql = "ALTER TABLE $table->name MODIFY COLUMN $column->field $column->type COLLATE $collation $notnull $default";
$DB->change_database_structure($sql);
} else {
echo "ERROR (unknown column type: $column->type)\n";
$error++;
continue;
}
echo "CONVERTED\n";
$converted++;
}
$rs2->close();
}
$rs->close();
echo "Converted: $converted, skipped: $skipped, errors: $errors\n";
exit(0); // success
} else if (!empty($options['list'])) {
echo "List of tables for $CFG->wwwroot:\n";
$prefix = $DB->get_prefix();
$prefix = str_replace('_', '\\_', $prefix);
$sql = "SHOW TABLE STATUS WHERE Name LIKE BINARY '$prefix%'";
$rs = $DB->get_recordset_sql($sql);
$counts = array();
foreach ($rs as $table) {
if (isset($counts[$table->collation])) {
$counts[$table->collation]++;
} else {
$counts[$table->collation] = 1;
}
echo str_pad($table->name, 40);
echo $table->collation. "\n";
$collations = mysql_get_column_collations($table->name);
foreach ($collations as $columname=>$collation) {
if (isset($counts[$collation])) {
$counts[$collation]++;
} else {
$counts[$collation] = 1;
}
echo ' ';
echo str_pad($columname, 36);
echo $collation. "\n";
}
}
$rs->close();
echo "\n";
echo "Table collations summary for $CFG->wwwroot:\n";
foreach ($counts as $collation => $count) {
echo "$collation: $count\n";
}
exit(0); // success
} else if (!empty($options['available'])) {
echo "List of available MySQL collations for $CFG->wwwroot:\n";
$collations = mysql_get_collations();
foreach ($collations as $collation) {
echo " $collation\n";
}
die;
} else {
echo $help;
die;
}
// ========== Some functions ==============
function mysql_get_collations() {
global $DB;
$collations = array();
$sql = "SHOW COLLATION WHERE Collation LIKE 'utf8\_%' AND Charset = 'utf8'";
$rs = $DB->get_recordset_sql($sql);
foreach ($rs as $collation) {
$collations[$collation->collation] = $collation->collation;
}
$rs->close();
$collation = $DB->get_dbcollation();
if (isset($collations[$collation])) {
$collations[$collation] .= ' (default)';
}
return $collations;
}
function mysql_get_column_collations($tablename) {
global $DB;
$collations = array();
$sql = "SELECT column_name, collation_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = DATABASE() AND table_name = ? AND collation_name IS NOT NULL";
$rs = $DB->get_recordset_sql($sql, array($tablename));
foreach($rs as $record) {
$collations[$record->column_name] = $record->collation_name;
}
$rs->close();
return $collations;
}
+111
View File
@@ -655,4 +655,115 @@
</PHP_SETTING>
</PHP_SETTINGS>
</MOODLE>
<MOODLE version="2.4" requires="2.2">
<UNICODE level="required">
<FEEDBACK>
<ON_ERROR message="unicoderequired" />
</FEEDBACK>
</UNICODE>
<DATABASE level="required">
<VENDOR name="mysql" version="5.1.33" />
<VENDOR name="postgres" version="8.3" />
<VENDOR name="mssql" version="9.0" />
<VENDOR name="odbc_mssql" version="9.0" />
<VENDOR name="mssql_n" version="9.0" />
<VENDOR name="oracle" version="10.2" />
<VENDOR name="sqlite" version="2.0" />
</DATABASE>
<PHP version="5.3.2" level="required">
</PHP>
<PHP_EXTENSIONS>
<PHP_EXTENSION name="iconv" level="required">
<FEEDBACK>
<ON_CHECK message="iconvrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="mbstring" level="optional">
<FEEDBACK>
<ON_CHECK message="mbstringrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="curl" level="required">
<FEEDBACK>
<ON_CHECK message="curlrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="openssl" level="optional">
<FEEDBACK>
<ON_CHECK message="opensslrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="tokenizer" level="optional">
<FEEDBACK>
<ON_CHECK message="tokenizerrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="xmlrpc" level="optional">
<FEEDBACK>
<ON_CHECK message="xmlrpcrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="soap" level="optional">
<FEEDBACK>
<ON_CHECK message="soaprecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="ctype" level="required">
<FEEDBACK>
<ON_ERROR message="ctyperequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="zip" level="required">
<FEEDBACK>
<ON_ERROR message="ziprequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="gd" level="optional">
<FEEDBACK>
<ON_CHECK message="gdrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="simplexml" level="required">
<FEEDBACK>
<ON_CHECK message="simplexmlrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="spl" level="required">
<FEEDBACK>
<ON_CHECK message="splrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="pcre" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="dom" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="xml" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="intl" level="optional">
<FEEDBACK>
<ON_CHECK message="intlrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="json" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="hash" level="required"/>
</PHP_EXTENSIONS>
<PHP_SETTINGS>
<PHP_SETTING name="memory_limit" value="40M" level="required">
<FEEDBACK>
<ON_ERROR message="settingmemorylimit" />
</FEEDBACK>
</PHP_SETTING>
<PHP_SETTING name="safe_mode" value="0" level="optional">
<FEEDBACK>
<ON_CHECK message="settingsafemode" />
</FEEDBACK>
</PHP_SETTING>
<PHP_SETTING name="file_uploads" value="1" level="optional">
<FEEDBACK>
<ON_CHECK message="settingfileuploads" />
</FEEDBACK>
</PHP_SETTING>
</PHP_SETTINGS>
</MOODLE>
</COMPATIBILITY_MATRIX>
+2
View File
@@ -242,6 +242,7 @@ function get_table_row($filterinfo, $isfirstrow, $islastactive, $applytostrings)
// Disable/off/on
$select = new single_select(filters_action_url($filter, 'setstate'), 'newstate', $activechoices, $filterinfo->active, null, 'active' . basename($filter));
$select->set_label(get_string('isactive', 'filters'), array('class' => 'accesshide'));
$row[] = $OUTPUT->render($select);
// Re-order
@@ -263,6 +264,7 @@ function get_table_row($filterinfo, $isfirstrow, $islastactive, $applytostrings)
// Apply to strings.
$select = new single_select(filters_action_url($filter, 'setapplyto'), 'stringstoo', $applytochoices, $applytostrings, null, 'applyto' . basename($filter));
$select->set_label(get_string('applyto', 'filters'), array('class' => 'accesshide'));
$select->disabled = $filterinfo->active == TEXTFILTER_DISABLED;
$row[] = $OUTPUT->render($select);
+4 -3
View File
@@ -203,17 +203,18 @@ echo get_string('username') . ":\n";
if (!empty($formerror['username'])) {
echo '<span class="error"> * </span>';
}
echo '<input type="text" name="username" size="20" maxlength="100" />';
echo html_writer::label(get_string('username'), 'menuusername', false, array('class' => 'accesshide'));
echo '<input id="menuusername" type="text" name="username" size="20" maxlength="100" />';
// choose a remote host
echo " " . get_string('remotehost', 'mnet') . ":\n";
echo " " . html_writer::label(get_string('remotehost', 'mnet'), 'menumnet_host_id') . ":\n";
if (!empty($formerror['mnet_host_id'])) {
echo '<span class="error"> * </span>';
}
echo html_writer::select($mnethosts, 'mnet_host_id');
// choose an access level
echo " " . get_string('accesslevel', 'mnet') . ":\n";
echo " " . html_writer::label(get_string('accesslevel', 'mnet'), 'menuaccessctrl') . ":\n";
if (!empty($formerror['accessctrl'])) {
echo '<span class="error"> * </span>';
}
+1 -1
View File
@@ -30,7 +30,7 @@
require_once(dirname(dirname(dirname(__FILE__))) . '/config.php');
require_once($CFG->libdir.'/adminlib.php');
require_once($CFG->dirroot.'/mnet/lib.php');
require_once($CFG->dirroot.'/admin/mnet/peer_forms.php');
require_once($CFG->dirroot.'/'.$CFG->admin.'/mnet/peer_forms.php');
require_login();
+2
View File
@@ -197,6 +197,7 @@ if (($action == 'edit') || ($action == 'new')) {
$currentaction = 'hide';
}
$select = new single_select(portfolio_action_url($pluginid, 'pf'), 'action', $actionchoicesforexisting, $currentaction, null, 'applyto' . $pluginid);
$select->set_label(get_string('action'), array('class' => 'accesshide'));
$table->data[] = array($pluginname, $OUTPUT->render($select), $settings);
}
if (!in_array($plugin, $usedplugins)) {
@@ -218,6 +219,7 @@ if (($action == 'edit') || ($action == 'new')) {
$insaneplugins[] = $p;
} else {
$select = new single_select(portfolio_action_url($p, 'pf'), 'action', $actionchoicesfornew, 'delete', null, 'applyto' . $p);
$select->set_label(get_string('action'), array('class' => 'accesshide'));
$table->data[] = array(portfolio_static_function($p, 'get_name'), $OUTPUT->render($select), '');
}
}
+1 -1
View File
@@ -374,7 +374,7 @@ class core_admin_renderer extends plugin_renderer_base {
$copyrighttext = '<a href="http://moodle.org/">Moodle</a> '.
'<a href="http://docs.moodle.org/dev/Releases" title="'.$CFG->version.'">'.$CFG->release.'</a><br />'.
'Copyright &copy; 1999 onwards, Martin Dougiamas<br />'.
'and <a href="http://docs.moodle.org/dev/Credits">many other contributors</a>.<br />'.
'and <a href="http://moodle.org/dev">many other contributors</a>.<br />'.
'<a href="http://docs.moodle.org/dev/License">GNU Public License</a>';
//////////////////////////////////////////////////////////////////////////////////////////////////
+2 -1
View File
@@ -305,7 +305,7 @@ if (($action == 'edit') || ($action == 'new')) {
}
$select = new single_select(repository_action_url($typename, 'repos'), 'action', $actionchoicesforexisting, $currentaction, null, 'applyto' . basename($typename));
$select->set_label(get_string('action'), array('class' => 'accesshide'));
// Display up/down link
$updown = '';
$spacer = $OUTPUT->spacer(array('height'=>15, 'width'=>15)); // should be done with CSS instead
@@ -342,6 +342,7 @@ if (($action == 'edit') || ($action == 'new')) {
// Check that it has not already been listed
if (!in_array($plugin, $alreadyplugins)) {
$select = new single_select(repository_action_url($plugin, 'repos'), 'action', $actionchoicesfornew, 'delete', null, 'applyto' . basename($plugin));
$select->set_label(get_string('action'), array('class' => 'accesshide'));
$table->data[] = array(get_string('pluginname', 'repository_'.$plugin), $OUTPUT->render($select), '', '');
}
}
+30 -5
View File
@@ -104,20 +104,45 @@ switch ($context->contextlevel) {
break;
}
// Get the list of the reported-on user's role assignments - must be after
// the page setup code above, or the language might be wrong.
$reportuser = $userselector->get_selected_user();
if (!is_null($reportuser)) {
$roleassignments = get_user_roles_with_special($context, $reportuser->id);
$rolenames = role_get_names($context);
}
echo $OUTPUT->header();
// These are needed early because of tabs.php
$assignableroles = get_assignable_roles($context, ROLENAME_BOTH);
$overridableroles = get_overridable_roles($context, ROLENAME_BOTH);
// Print heading.
echo $OUTPUT->heading($title);
// If a user has been chosen, show all the permissions for this user.
$reportuser = $userselector->get_selected_user();
if (!is_null($reportuser)) {
echo $OUTPUT->box_start('generalbox boxaligncenter boxwidthwide');
echo $OUTPUT->heading(get_string('permissionsforuser', 'role', fullname($reportuser)), 3);
if (!empty($roleassignments)) {
echo $OUTPUT->heading(get_string('rolesforuser', 'role', fullname($reportuser)), 3);
echo html_writer::start_tag('ul');
$systemcontext = context_system::instance();
foreach ($roleassignments as $ra) {
$racontext = context::instance_by_id($ra->contextid);
$link = html_writer::link($racontext->get_url(), $racontext->get_context_name());
$rolename = $rolenames[$ra->roleid]->localname;
if (has_capability('moodle/role:manage', $systemcontext)) {
$rolename = html_writer::link(new moodle_url('/admin/roles/define.php',
array('action' => 'view', 'roleid' => $ra->roleid)), $rolename);
}
echo html_writer::tag('li', get_string('roleincontext', 'role',
array('role' => $rolename, 'context' => $link)));
}
echo html_writer::end_tag('ul');
}
echo $OUTPUT->heading(get_string('permissionsforuser', 'role', fullname($reportuser)), 3);
$table = new check_capability_table($context, $reportuser, $contextname);
$table->display();
echo $OUTPUT->box_end();
+3 -2
View File
@@ -166,7 +166,8 @@ function print_report_tree($contextid, $contexts, $systemcontext, $fullname) {
$context = context::instance_by_id($contextid);
// Print the context name.
echo $OUTPUT->heading($context->get_context_name(), 4, 'contextname');
echo $OUTPUT->heading(html_writer::link($context->get_url(), $context->get_context_name()),
4, 'contextname');
// If there are any role assignments here, print them.
foreach ($contexts[$contextid]->roleassignments as $ra) {
@@ -189,7 +190,7 @@ function print_report_tree($contextid, $contexts, $systemcontext, $fullname) {
}
$a = new stdClass;
$a->fullname = $fullname;
$a->contextlevel = get_contextlevel_name($context->contextlevel);
$a->contextlevel = $context->get_level_name();
if ($context->contextlevel == CONTEXT_SYSTEM) {
$strgoto = get_string('gotoassignsystemroles', 'role');
$strcheck = get_string('checksystempermissionsfor', 'role', $a);
+3 -2
View File
@@ -35,10 +35,11 @@ if ($hassiteconfig
$temp->add(new admin_setting_configselect('moodlecourse/showgrades', get_string('showgrades'), get_string('coursehelpshowgrades'), 1,array(0 => get_string('no'), 1 => get_string('yes'))));
$temp->add(new admin_setting_configselect('moodlecourse/showreports', get_string('showreports'), '', 0,array(0 => get_string('no'), 1 => get_string('yes'))));
$currentmaxbytes = get_config('moodlecourse', 'maxbytes');
if (isset($CFG->maxbytes)) {
$choices = get_max_upload_sizes($CFG->maxbytes);
$choices = get_max_upload_sizes($CFG->maxbytes, 0, 0, $currentmaxbytes);
} else {
$choices = get_max_upload_sizes();
$choices = get_max_upload_sizes(0, 0, 0, $currentmaxbytes);
}
$temp->add(new admin_setting_configselect('moodlecourse/maxbytes', get_string('maximumupload'), get_string('coursehelpmaximumupload'), key($choices), $choices));
+1 -1
View File
@@ -77,7 +77,7 @@ if (!during_initial_install()) { //do not use during installation
$ADMIN->add('frontpage', new admin_externalpage('frontpagebackup', get_string('frontpagebackup', 'admin'), $CFG->wwwroot.'/backup/backup.php?id='.SITEID, 'moodle/backup:backupcourse', false, $frontpagecontext));
$ADMIN->add('frontpage', new admin_externalpage('frontpagerestore', get_string('frontpagerestore', 'admin'), $CFG->wwwroot.'/files/index.php?id='.SITEID.'&amp;wdir=/backupdata', 'moodle/restore:restorecourse', false, $frontpagecontext));
$ADMIN->add('frontpage', new admin_externalpage('frontpagerestore', get_string('frontpagerestore', 'admin'), $CFG->wwwroot.'/backup/restorefile.php?contextid='.$frontpagecontext->id, 'moodle/restore:restorecourse', false, $frontpagecontext));
$questioncapabilities = array(
'moodle/question:add',
+1 -1
View File
@@ -29,7 +29,7 @@ if (isset($CFG->mnet_dispatcher_mode) and $CFG->mnet_dispatcher_mode !== 'off')
new admin_externalpage(
'mnetpeer' . $host->id,
$host->name,
$CFG->wwwroot . '/admin/mnet/peers.php?step=update&hostid=' . $host->id,
$CFG->wwwroot . '/'.$CFG->admin.'/mnet/peers.php?step=update&hostid=' . $host->id,
'moodle/site:config'
)
);
+1
View File
@@ -150,6 +150,7 @@ if ($hassiteconfig
'institution' => get_string('institution'),
)));
$temp->add(new admin_setting_configcheckbox('enablegravatar', get_string('enablegravatar', 'admin'), get_string('enablegravatar_help', 'admin'), 0));
$temp->add(new admin_setting_configtext('gravatardefaulturl', get_string('gravatardefaulturl', 'admin'), get_string('gravatardefaulturl_help', 'admin'), 'mm'));
}
$ADMIN->add('roles', $temp);
+1 -1
View File
@@ -44,7 +44,7 @@
$timezones = get_list_of_timezones();
echo '<center><form action="timezone.php" method="post">';
echo "$strusers ($strall): ";
echo html_writer::label($strusers . ' (' . $strall . '): ', 'menuzone');
echo html_writer::select($timezones, "zone", $current, array('99'=>get_string("serverlocaltime")));
echo "<input type=\"hidden\" name=\"sesskey\" value=\"".sesskey()."\" />";
echo '<input type="submit" value="'.s($strsavechanges).'" />';
+1 -1
View File
@@ -488,7 +488,7 @@ class tool_customlang_translator implements renderable {
list($insql, $inparams) = $DB->get_in_or_equal($filter->component, SQL_PARAMS_NAMED);
$csql = "SELECT COUNT(*)";
$fsql = "SELECT s.id, s.*, c.name AS component";
$fsql = "SELECT s.*, c.name AS component";
$sql = " FROM {tool_customlang_components} c
JOIN {tool_customlang} s ON s.componentid = c.id
WHERE s.lang = :lang
+4
View File
@@ -67,3 +67,7 @@
#page-admin-tool-customlang-index .continuebutton {
margin-top: 1em;
}
.path-admin-tool-customlang #translator .standard.master.cell.c2 {
word-break: break-all;
}
+2 -2
View File
@@ -287,7 +287,7 @@ $url = new moodle_url('/admin/tool/langimport/index.php', array('mode' => DELETI
echo html_writer::start_tag('td', array('valign' => 'top'));
echo html_writer::start_tag('form', array('id' => 'uninstallform', 'action' => $url->out(), 'method' => 'post'));
echo html_writer::start_tag('fieldset');
echo html_writer::label(get_string('installedlangs', 'tool_langimport'), 'uninstalllang');
echo html_writer::label(get_string('installedlangs', 'tool_langimport'), 'menuuninstalllang');
echo html_writer::empty_tag('br');
echo html_writer::select($installedlangs, 'uninstalllang', '', false, array('size' => 15));
echo html_writer::empty_tag('input', array('type' => 'hidden', 'name' => 'sesskey', 'value' => sesskey()));
@@ -315,7 +315,7 @@ if (!empty($options)) {
$url = new moodle_url('/admin/tool/langimport/index.php', array('mode' => INSTALLATION_OF_SELECTED_LANG));
echo html_writer::start_tag('form', array('id' => 'installform', 'action' => $url->out(), 'method' => 'post'));
echo html_writer::start_tag('fieldset');
echo html_writer::label(get_string('availablelangs','install'), 'pack');
echo html_writer::label(get_string('availablelangs','install'), 'menupack');
echo html_writer::empty_tag('br');
echo html_writer::select($options, 'pack[]', '', false, array('size' => 15, 'multiple' => 'multiple'));
echo html_writer::empty_tag('input', array('type' => 'hidden', 'name' => 'sesskey', 'value' => sesskey()));
+1 -1
View File
@@ -142,7 +142,7 @@ if (isset($script)) {
// The flexitable that will root listings
$table = new xhprof_table_sql('profiling-list-table');
$baseurl = $CFG->wwwroot . '/admin/tool/profiling/index.php';
$baseurl = $CFG->wwwroot . '/'.$CFG->admin.'/tool/profiling/index.php';
// Check if we are listing all or some URL ones
$sqlconditions = '';
+1
View File
@@ -96,6 +96,7 @@ echo $OUTPUT->box_start(); // The forms section at the top
<form method="post" action="index.php">
<div>
<label class="accesshide" for="keyword_el"><?php print_string('spamkeyword', 'tool_spamcleaner') ?></label>
<input type="text" name="keyword" id="keyword_el" value="<?php p($keyword) ?>" />
<input type="hidden" name="sesskey" value="<?php echo sesskey();?>" />
<input type="submit" value="<?php echo get_string('spamsearch', 'tool_spamcleaner')?>" />
@@ -38,6 +38,7 @@ $string['spamfromcomments'] = 'From comments:';
$string['spamfrommessages'] = 'From messages:';
$string['spamfromforumpost'] = 'From forum post:';
$string['spaminvalidresult'] = 'Unknown but invalid result';
$string['spamkeyword'] = 'Keyword';
$string['spamoperation'] = 'Operation';
$string['spamresult'] = 'Results of searching user profiles containing:';
$string['spamsearch'] = 'Search for these keywords';
+2
View File
@@ -853,6 +853,8 @@ if ($formdata = $mform2->is_cancelled()) {
if ($duration > 0) { // sanity check
$timeend = $today + $duration;
}
} else if ($manualcache[$courseid]->enrolperiod > 0) {
$timeend = $today + $manualcache[$courseid]->enrolperiod;
}
$manual->enrol_user($manualcache[$courseid], $user->id, $rid, $today, $timeend);
@@ -115,7 +115,7 @@ class new_table_from_mysql extends XMLDBAction {
$o.= ' <input type="hidden" name ="postaction" value="edit_table" />';
$o.= ' <input type="hidden" name ="sesskey" value="' . sesskey() . '" />';
$o.= ' <table id="formelements" class="boxaligncenter" cellpadding="5">';
$o.= ' <tr><td><label for="table" accesskey="t">' . $this->str['createtable'] .' </label>' . html_writer::select($selecttables, 'table') . '<label for="after" accesskey="a">' . $this->str['aftertable'] . ' </label>' .html_writer::select($aftertables, 'after') . '</td></tr>';
$o.= ' <tr><td><label for="menutable" accesskey="t">' . $this->str['createtable'] .' </label>' . html_writer::select($selecttables, 'table') . '<label for="menuafter" accesskey="a">' . $this->str['aftertable'] . ' </label>' .html_writer::select($aftertables, 'after') . '</td></tr>';
$o.= ' <tr><td colspan="2" align="center"><input type="submit" value="' .$this->str['create'] . '" /></td></tr>';
$o.= ' <tr><td colspan="2" align="center"><a href="index.php?action=edit_xml_file&amp;dir=' . urlencode(str_replace($CFG->dirroot, '', $dirpath)) . '">[' . $this->str['back'] . ']</a></td></tr>';
$o.= ' </table>';
@@ -116,7 +116,7 @@ class view_structure_php extends XMLDBAction {
$o.= ' <input type="hidden" name ="dir" value="' . str_replace($CFG->dirroot, '', $dirpath) . '" />';
$o.= ' <input type="hidden" name ="action" value="view_structure_php" />';
$o.= ' <table id="formelements" class="boxaligncenter" cellpadding="5">';
$o.= ' <tr><td><label for="action" accesskey="c">' . $this->str['selectaction'] .' </label>' . html_writer::select($popcommands, 'command', $commandparam, false) . '&nbsp;<label for="table" accesskey="t">' . $this->str['selecttable'] . ' </label>' .html_writer::select($poptables, 'table', $tableparam, false) . '</td></tr>';
$o.= ' <tr><td><label for="menucommand" accesskey="c">' . $this->str['selectaction'] .' </label>' . html_writer::select($popcommands, 'command', $commandparam, false) . '&nbsp;<label for="menutable" accesskey="t">' . $this->str['selecttable'] . ' </label>' .html_writer::select($poptables, 'table', $tableparam, false) . '</td></tr>';
$o.= ' <tr><td colspan="2" align="center"><input type="submit" value="' .$this->str['view'] . '" /></td></tr>';
$o.= ' </table>';
$o.= '</div></form>';
@@ -167,7 +167,7 @@ class view_table_php extends XMLDBAction {
$o.= ' <input type="hidden" name ="table" value="' . s($tableparam) . '" />';
$o.= ' <input type="hidden" name ="action" value="view_table_php" />';
$o.= ' <table id="formelements" class="boxaligncenter" cellpadding="5">';
$o.= ' <tr><td><label for="action" accesskey="c">' . $this->str['selectaction'] .' </label>' . html_writer::select($popcommands, 'command', $commandparam, false) . '&nbsp;<label for="fieldkeyindex" accesskey="f">' . $this->str['selectfieldkeyindex'] . ' </label>' .html_writer::select($popfields, 'fieldkeyindex', $origfieldkeyindexparam, false) . '</td></tr>';
$o.= ' <tr><td><label for="menucommand" accesskey="c">' . $this->str['selectaction'] .' </label>' . html_writer::select($popcommands, 'command', $commandparam, false) . '&nbsp;<label for="menufieldkeyindex" accesskey="f">' . $this->str['selectfieldkeyindex'] . ' </label>' .html_writer::select($popfields, 'fieldkeyindex', $origfieldkeyindexparam, false) . '</td></tr>';
$o.= ' <tr><td colspan="2" align="center"><input type="submit" value="' .$this->str['view'] . '" /></td></tr>';
$o.= ' </table>';
$o.= '</div></form>';
+3
View File
@@ -112,10 +112,13 @@ $string['checkindexes'] = 'Check indexes';
$string['check_indexes'] = 'Look for missing DB indexes';
$string['checkoraclesemantics'] = 'Check semantics';
$string['check_oracle_semantics'] = 'Look for incorrect length semantics';
$string['duplicateindexname'] = 'Duplicate index name';
$string['incorrectfieldname'] = 'Incorrect name';
$string['index'] = 'Index';
$string['indexes'] = 'Indexes';
$string['indexnameempty'] = 'Index name is empty';
$string['integerincorrectlength'] = 'Incorrect length for integer field';
$string['incorrectindexname'] = 'Incorrect index name';
$string['incorrectkeyname'] = 'Incorrect key name';
$string['incorrecttablename'] = 'Incorrect table name';
$string['key'] = 'Key';
+1 -1
View File
@@ -97,7 +97,7 @@ $usersmissingcaps = $webservicemanager->get_missing_capabilities_by_users($allow
//add the missing capabilities to the allowed users object to be displayed by renderer
foreach ($allowedusers as &$alloweduser) {
if (!is_siteadmin($alloweduser->id) and key_exists($alloweduser->id, $usersmissingcaps)) {
if (!is_siteadmin($alloweduser->id) and array_key_exists($alloweduser->id, $usersmissingcaps)) {
$alloweduser->missingcapabilities = implode(', ', $usersmissingcaps[$alloweduser->id]);
}
}
+14 -14
View File
@@ -94,9 +94,9 @@ $yesno = array( get_string('no'), get_string('yes') );
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_cas_hostname_key', 'auth_cas') ?>:</td>
<td align="right"><label for="hostname"><?php print_string('auth_cas_hostname_key', 'auth_cas') ?>: </label></td>
<td>
<input name="hostname" type="text" size="30" value="<?php echo $config->hostname ?>" />
<input name="hostname" id="hostname" type="text" size="30" value="<?php echo $config->hostname ?>" />
<?php if (isset($err['hostname'])) { echo $OUTPUT->error_text($err['hostname']); } ?>
</td>
<td>
@@ -105,10 +105,10 @@ $yesno = array( get_string('no'), get_string('yes') );
</tr>
<tr valign="top" class="required">
<td align="right">
<?php print_string('auth_cas_baseuri_key', 'auth_cas') ?>:
<label for="baseuri"><?php print_string('auth_cas_baseuri_key', 'auth_cas') ?>: </label>
</td>
<td>
<input name="baseuri" type="text" size="30" value="<?php echo $config->baseuri ?>" />
<input name="baseuri" id="baseuri" type="text" size="30" value="<?php echo $config->baseuri ?>" />
<?php if (isset($err['baseuri'])) { echo $OUTPUT->error_text($err['baseuri']); } ?>
</td>
<td>
@@ -117,10 +117,10 @@ $yesno = array( get_string('no'), get_string('yes') );
</tr>
<tr valign="top" class="required">
<td align="right">
<?php print_string('auth_cas_port_key', 'auth_cas') ?>:
<label for="port"><?php print_string('auth_cas_port_key', 'auth_cas') ?>: </label>
</td>
<td>
<input name="port" type="text" size="30" value="<?php echo $config->port ?>" />
<input name="port" id="port" type="text" size="30" value="<?php echo $config->port ?>" />
<?php if (isset($err['port'])) { echo $OUTPUT->error_text($err['port']); } ?>
</td>
<td>
@@ -129,7 +129,7 @@ $yesno = array( get_string('no'), get_string('yes') );
</tr>
<tr valign="top" class="required">
<td align="right">
<?php print_string('auth_cas_casversion', 'auth_cas') ?>:
<?php echo html_writer::label(get_string('auth_cas_casversion', 'auth_cas'), 'menucasversion'); ?>:
</td>
<td>
<?php
@@ -145,7 +145,7 @@ $yesno = array( get_string('no'), get_string('yes') );
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_cas_language_key', 'auth_cas') ?>:</td>
<td align="right"><?php echo html_writer::label(get_string('auth_cas_language_key', 'auth_cas'), 'menulanguage'); ?>:</td>
<td>
<?php echo html_writer::select($CASLANGUAGES, 'language', $config->language, false); ?>
</td>
@@ -155,7 +155,7 @@ $yesno = array( get_string('no'), get_string('yes') );
</tr>
<tr valign="top" class="required">
<td align="right">
<?php print_string('auth_cas_proxycas_key', 'auth_cas') ?>:
<?php echo html_writer::label(get_string('auth_cas_proxycas_key', 'auth_cas'), 'menuproxycas'); ?>:
</td>
<td>
<?php echo html_writer::select($yesno, 'proxycas', $config->proxycas, false); ?>
@@ -165,7 +165,7 @@ $yesno = array( get_string('no'), get_string('yes') );
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_cas_logoutcas_key', 'auth_cas') ?>:</td>
<td align="right"><?php echo html_writer::label(get_string('auth_cas_logoutcas_key', 'auth_cas'), 'menulogoutcas'); ?>:</td>
<td>
<?php echo html_writer::select($yesno, 'logoutcas', $config->logoutcas, false); ?>
</td>
@@ -174,7 +174,7 @@ $yesno = array( get_string('no'), get_string('yes') );
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_cas_multiauth_key', 'auth_cas') ?>:</td>
<td align="right"><?php echo html_writer::label(get_string('auth_cas_multiauth_key', 'auth_cas'), 'menumultiauth'); ?>:</td>
<td>
<?php echo html_writer::select($yesno, 'multiauth', $config->multiauth, false); ?>
</td>
@@ -183,7 +183,7 @@ $yesno = array( get_string('no'), get_string('yes') );
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_cas_certificate_check_key', 'auth_cas') ?>:</td>
<td align="right"><?php echo html_writer::label(get_string('auth_cas_certificate_check_key', 'auth_cas'), 'menucertificate_check'); ?>:</td>
<td>
<?php echo html_writer::select($yesno, 'certificate_check', $config->certificate_check, false); ?>
</td>
@@ -192,7 +192,7 @@ $yesno = array( get_string('no'), get_string('yes') );
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_cas_certificate_path_key', 'auth_cas') ?>:</td>
<td align="right"><label for="certificate_path"><?php print_string('auth_cas_certificate_path_key', 'auth_cas') ?>: </label></td>
<td>
<input name="certificate_path" id="certificate_path" type="text" size="30" value="<?php echo $config->certificate_path ?>" />
<?php if (isset($err['certificate_path'])) echo $OUTPUT->error_text($err['certificate_path']); ?>
@@ -219,7 +219,7 @@ $yesno = array( get_string('no'), get_string('yes') );
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="menuversion"><?php print_string('auth_ldap_version_key', 'auth_ldap') ?></label></td>
<td align="right"><label for="menuldap_version"><?php print_string('auth_ldap_version_key', 'auth_ldap') ?></label></td>
<td>
<?php
$versions = array();
+21 -7
View File
@@ -65,7 +65,7 @@ class auth_plugin_db extends auth_plugin_base {
$authdb->Close();
// user exists externally
// check username/password internally
if ($user = $DB->get_record('user', array('username'=>$username, 'mnethostid'=>$CFG->mnet_localhost_id))) {
if ($user = $DB->get_record('user', array('username'=>$username, 'mnethostid'=>$CFG->mnet_localhost_id, 'auth'=>$this->authtype))) {
return validate_internal_user_password($user, $password);
}
} else {
@@ -191,8 +191,16 @@ class auth_plugin_db extends auth_plugin_base {
* @return bool True on success
*/
function user_update_password($user, $newpassword) {
global $DB;
if ($this->is_internal()) {
return update_internal_user_password($user, $newpassword);
$puser = $DB->get_record('user', array('id'=>$user->id), '*', MUST_EXIST);
if (update_internal_user_password($puser, $newpassword)) {
$user->password = $puser->password;
return true;
} else {
return false;
}
} else {
// we should have never been called!
return false;
@@ -346,7 +354,7 @@ class auth_plugin_db extends auth_plugin_base {
if ($verbose) {
mtrace(get_string('auth_dbuserstoadd','auth_db',count($add_users)));
}
$transaction = $DB->start_delegated_transaction();
// Do not use transactions around this foreach, we want to skip problematic users, not revert everything.
foreach($add_users as $user) {
$username = $user;
$user = $this->get_userinfo_asobj($user);
@@ -372,9 +380,16 @@ class auth_plugin_db extends auth_plugin_base {
} else {
$user->timecreated = time();
$user->timemodified = $user->timecreated;
$id = $DB->insert_record ('user', $user); // it is truly a new user
if ($verbose) {
mtrace("\t".get_string('auth_dbinsertuser', 'auth_db', array('name'=>$user->username, 'id'=>$id)));
try {
$id = $DB->insert_record('user', $user); // it is truly a new user
if ($verbose) {
mtrace("\t".get_string('auth_dbinsertuser', 'auth_db', array('name'=>$user->username, 'id'=>$id)));
}
} catch (moodle_exception $e) {
if ($verbose) {
mtrace("\t".get_string('auth_dbinsertusererror', 'auth_db', $user->username));
}
continue;
}
// if relevant, tag for password generation
if ($this->is_internal()) {
@@ -383,7 +398,6 @@ class auth_plugin_db extends auth_plugin_base {
}
}
}
$transaction->allow_commit();
unset($add_users); // free mem
}
return 0;
+3 -1
View File
@@ -132,7 +132,9 @@ class auth_plugin_email extends auth_plugin_base {
} else if ($user->secret == $confirmsecret) { // They have provided the secret key to get in
$DB->set_field("user", "confirmed", 1, array("id"=>$user->id));
$DB->set_field("user", "firstaccess", time(), array("id"=>$user->id));
if ($user->firstaccess == 0) {
$DB->set_field("user", "firstaccess", time(), array("id"=>$user->id));
}
return AUTH_CONFIRM_OK;
}
} else {
+1 -1
View File
@@ -23,7 +23,7 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
$string['auth_emaildescription'] = 'Email confirmation is the default authentication method. When the user signs up, choosing their own new username and password, a confirmation email is sent to the user\'s email address. This email contains a secure link to a page where the user can confirm their account. Future logins just check the username and password against the stored values in the Moodle database.';
$string['auth_emaildescription'] = '<p>Email-based self-registration enables a user to create their own account via a \'Create new account\' button on the login page. The user then receives an email containing a secure link to a page where they can confirm their account. Future logins just check the username and password against the stored values in the Moodle database.</p><p>Note: In addition to enabling the plugin, email-based self-registration must also be selected from the self registration drop-down menu on the \'Manage authentication\' page.</p>';
$string['auth_emailnoemail'] = 'Tried to send you an email but failed!';
$string['auth_emailrecaptcha'] = 'Adds a visual/audio confirmation form element to the signup page for email self-registering users. This protects your site against spammers and contributes to a worthwhile cause. See http://www.google.com/recaptcha/learnmore for more details. <br /><em>PHP cURL extension is required.</em>';
$string['auth_emailrecaptcha_key'] = 'Enable reCAPTCHA element';
+12 -12
View File
@@ -27,9 +27,9 @@
<table cellspacing="0" cellpadding="5" border="0">
<tr valign="top" class="required">
<td align="right"><?php print_string("auth_fchost_key", "auth_fc") ?>:</td>
<td align="right"><label for="host"><?php print_string("auth_fchost_key", "auth_fc") ?>:</label></td>
<td>
<input name="host" type="text" size="30" value="<?php echo $config->host?>" />
<input name="host" id="host" type="text" size="30" value="<?php echo $config->host?>" />
<?php if (isset($err["host"])) echo $OUTPUT->error_text($err["host"]); ?>
</td>
<td>
@@ -38,9 +38,9 @@
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string("auth_fcfppport_key", "auth_fc") ?>:</td>
<td align="right"><label for="fppport"><?php print_string("auth_fcfppport_key", "auth_fc") ?>: </label></td>
<td>
<input name="fppport" type="text" size="30" value="<?php echo $config->fppport?>" />
<input name="fppport" id="fppport" type="text" size="30" value="<?php echo $config->fppport?>" />
<?php if (isset($err["fppport"])) echo $OUTPUT->error_text($err["host"]); ?>
</td>
<td>
@@ -49,9 +49,9 @@
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string("auth_fcuserid_key", "auth_fc") ?>:</td>
<td align="right"><label for="userid"><?php print_string("auth_fcuserid_key", "auth_fc") ?>:</label></td>
<td>
<input name="userid" type="text" size="30" maxlength="15" value="<?php echo $config->userid?>" />
<input name="userid" id="userid" type="text" size="30" maxlength="15" value="<?php echo $config->userid?>" />
<?php if (isset($err["userid"])) echo $OUTPUT->error_text($err["userid"]); ?>
</td>
<td>
@@ -59,9 +59,9 @@
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string("auth_fcpasswd_key", "auth_fc") ?>:</td>
<td align="right"><label for="passwd"><?php print_string("auth_fcpasswd_key", "auth_fc") ?>:</label></td>
<td>
<input name="passwd" type="password" size="30" maxlength="12" value="<?php echo $config->passwd?>" />
<input name="passwd" id="passwd" type="password" size="30" maxlength="12" value="<?php echo $config->passwd?>" />
<?php if (isset($err["passwd"])) echo $OUTPUT->error_text($err["passwd"]); ?>
</td>
<td>
@@ -70,9 +70,9 @@
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string("auth_fccreators_key", "auth_fc") ?>:</td>
<td align="right"><label for="creators"><?php print_string("auth_fccreators_key", "auth_fc") ?>: </label></td>
<td>
<input name="creators" type="text" size="30" value="<?php echo $config->creators?>" />
<input name="creators" id="creators" type="text" size="30" value="<?php echo $config->creators?>" />
<?php if (isset($err["creators"])) echo $OUTPUT->error_text($err["creators"]); ?>
</td>
<td>
@@ -81,9 +81,9 @@
</tr>
<tr valign="top">
<td align="right"><?php print_string('auth_fcchangepasswordurl', 'auth_fc') ?>: </td>
<td align="right"><label for="changepasswordurl"><?php print_string('auth_fcchangepasswordurl', 'auth_fc') ?>: </label></td>
<td>
<input name="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<input name="changepasswordurl" id="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<?php
if (isset($err['changepasswordurl'])) {
+7 -7
View File
@@ -18,9 +18,9 @@ if (!isset($config->changepasswordurl)) {
<table cellspacing="0" cellpadding="5" border="0">
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_imaphost_key', 'auth_imap') ?>: </td>
<td align="right"><label for="host"><?php print_string('auth_imaphost_key', 'auth_imap') ?>: </label></td>
<td>
<input name="host" type="text" size="30" value="<?php echo $config->host ?>" />
<input name="host" id="host" type="text" size="30" value="<?php echo $config->host ?>" />
<?php
if (isset($err['host'])) {
@@ -40,7 +40,7 @@ if (!isset($config->changepasswordurl)) {
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_imaptype_key', 'auth_imap') ?>: </td>
<td align="right"><?php echo html_writer::label(get_string('auth_imaptype_key', 'auth_imap'), 'menutype'); ?>: </td>
<td>
<?php
@@ -56,9 +56,9 @@ if (!isset($config->changepasswordurl)) {
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_imapport_key', 'auth_imap') ?>: </td>
<td align="right"><label for="port"><?php print_string('auth_imapport_key', 'auth_imap') ?>: </label></td>
<td>
<input name="port" type="text" size="6" value="<?php echo $config->port ?>" />
<input name="port" id="port" type="text" size="6" value="<?php echo $config->port ?>" />
<?php
if (isset($err['port'])) {
@@ -71,9 +71,9 @@ if (!isset($config->changepasswordurl)) {
</tr>
<tr valign="top">
<td align="right"><?php print_string('auth_imapchangepasswordurl_key', 'auth_imap') ?>: </td>
<td align="right"><label for="changepasswordurl"><?php print_string('auth_imapchangepasswordurl_key', 'auth_imap') ?>: </label></td>
<td>
<input name="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<input name="changepasswordurl" id="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<?php
if (isset($err['changepasswordurl'])) {
+3 -1
View File
@@ -550,7 +550,9 @@ class auth_plugin_ldap extends auth_plugin_base {
return AUTH_CONFIRM_FAIL;
}
$DB->set_field('user', 'confirmed', 1, array('id'=>$user->id));
$DB->set_field('user', 'firstaccess', time(), array('id'=>$user->id));
if ($user->firstaccess == 0) {
$DB->set_field('user', 'firstaccess', time(), array('id'=>$user->id));
}
return AUTH_CONFIRM_OK;
}
} else {
+1 -1
View File
@@ -118,7 +118,7 @@ $yesno = array(get_string('no'), get_string('yes'));
</tr>
<tr valign="top" class="required">
<td align="right">
<label for="menuversion"><?php print_string('auth_ldap_version_key', 'auth_ldap') ?></label>
<label for="menuldap_version"><?php print_string('auth_ldap_version_key', 'auth_ldap') ?></label>
</td>
<td>
<?php
+3 -1
View File
@@ -170,7 +170,9 @@ class auth_plugin_manual extends auth_plugin_base {
return AUTH_CONFIRM_ALREADY;
} else {
$DB->set_field("user", "confirmed", 1, array("id"=>$user->id));
$DB->set_field("user", "firstaccess", time(), array("id"=>$user->id));
if ($user->firstaccess == 0) {
$DB->set_field("user", "firstaccess", time(), array("id"=>$user->id));
}
return AUTH_CONFIRM_OK;
}
} else {
+3 -3
View File
@@ -22,9 +22,9 @@ if (empty($CFG->mnet_dispatcher_mode) || $CFG->mnet_dispatcher_mode !== 'strict'
<table cellspacing="0" cellpadding="5">
<tr valign="top" class="required">
<td align="right"><?php print_string('rpc_negotiation_timeout', 'auth_mnet'); ?>: </td>
<td align="right"><label for="rpc_negotiation_timeout"><?php print_string('rpc_negotiation_timeout', 'auth_mnet'); ?>: </label></td>
<td>
<input name="rpc_negotiation_timeout" type="text" size="5" value="<?php echo $config->rpc_negotiation_timeout ?>" />
<input name="rpc_negotiation_timeout" id="rpc_negotiation_timeout" type="text" size="5" value="<?php echo $config->rpc_negotiation_timeout ?>" />
<?php
if (isset($err['rpc_negotiation_timeout'])) {
@@ -45,7 +45,7 @@ if (empty($CFG->mnet_dispatcher_mode) || $CFG->mnet_dispatcher_mode !== 'strict'
<?php /*
See MDL-21327 for why this is commented out
<tr valign="top" class="required">
<td align="right"><?php print_string('auto_add_remote_users', 'auth_mnet'); ?>: </td>
<td align="right"><?php echo html_writer::label(get_string('auto_add_remote_users', 'auth_mnet'), 'menuauto_add_remote_users'); ?>: </td>
<td>
<?php
+6 -6
View File
@@ -15,9 +15,9 @@ if (!isset($config->changepasswordurl)) {
<table cellspacing="0" cellpadding="5" border="0">
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_nntphost_key', 'auth_nntp') ?>: </td>
<td align="right"><label for="host"><?php print_string('auth_nntphost_key', 'auth_nntp') ?>: </label></td>
<td>
<input name="host" type="text" size="30" value="<?php echo $config->host ?>" />
<input name="host" id="host" type="text" size="30" value="<?php echo $config->host ?>" />
<?php
if (isset($err["host"])) {
@@ -37,9 +37,9 @@ if (!isset($config->changepasswordurl)) {
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_nntpport_key', 'auth_nntp') ?>: </td>
<td align="right"><label for="port"><?php print_string('auth_nntpport_key', 'auth_nntp') ?>: </label></td>
<td>
<input name="port" type="text" size="6" value="<?php echo $config->port ?>" />
<input name="port" id="port" type="text" size="6" value="<?php echo $config->port ?>" />
<?php
if (isset($err["port"])) {
@@ -52,9 +52,9 @@ if (!isset($config->changepasswordurl)) {
</tr>
<tr valign="top">
<td align="right"><?php print_string('auth_nntpchangepasswordurl_key', 'auth_nntp') ?>: </td>
<td align="right"><label for="changepasswordurl"><?php print_string('auth_nntpchangepasswordurl_key', 'auth_nntp') ?>: </label></td>
<td>
<input name="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<input name="changepasswordurl" id="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<?php
if (isset($err['changepasswordurl'])) {
+9 -9
View File
@@ -21,9 +21,9 @@ if (!isset($config->changepasswordurl)) {
<table cellspacing="0" cellpadding="5" border="0">
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_pop3host_key', 'auth_pop3') ?>: </td>
<td align="right"><label for="host"><?php print_string('auth_pop3host_key', 'auth_pop3') ?>: </label></td>
<td>
<input name="host" type="text" size="30" value="<?php echo $config->host ?>" />
<input name="host" id="host" type="text" size="30" value="<?php echo $config->host ?>" />
<?php
if (isset($err['host'])) {
@@ -43,7 +43,7 @@ if (!isset($config->changepasswordurl)) {
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_pop3type_key', 'auth_pop3') ?>: </td>
<td align="right"><?php echo html_writer::label(get_string('auth_pop3type_key', 'auth_pop3'), 'menutype'); ?>: </td>
<td>
<?php
@@ -59,9 +59,9 @@ if (!isset($config->changepasswordurl)) {
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_pop3port_key', 'auth_pop3') ?>: </td>
<td align="right"><label for="port"><?php print_string('auth_pop3port_key', 'auth_pop3') ?>: </label></td>
<td>
<input name="port" type="text" size="6" value="<?php echo $config->port ?>" />
<input name="port" id="port" type="text" size="6" value="<?php echo $config->port ?>" />
<?php
if (isset($err['port'])) {
@@ -74,9 +74,9 @@ if (!isset($config->changepasswordurl)) {
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_pop3mailbox_key', 'auth_pop3') ?>: </td>
<td align="right"><label for="mailbox"><?php print_string('auth_pop3mailbox_key', 'auth_pop3') ?>: </label></td>
<td>
<input name="mailbox" type="text" size="6" value="<?php echo $config->mailbox ?>" />
<input name="mailbox" id="mailbox" type="text" size="6" value="<?php echo $config->mailbox ?>" />
<?php
if (isset($err['mailbox'])) {
@@ -89,9 +89,9 @@ if (!isset($config->changepasswordurl)) {
</tr>
<tr valign="top">
<td align="right"><?php print_string('auth_pop3changepasswordurl_key', 'auth_pop3') ?>: </td>
<td align="right"><label for="changepasswordurl"><?php print_string('auth_pop3changepasswordurl_key', 'auth_pop3') ?>: </label></td>
<td>
<input name="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<input name="changepasswordurl" id="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<?php
if (isset($err['changepasswordurl'])) {
+9 -9
View File
@@ -30,9 +30,9 @@ if (!isset($config->changepasswordurl)) {
<table cellspacing="0" cellpadding="5" border="0">
<tr valign="top">
<td align="right"><?php print_string('auth_radiushost_key', 'auth_radius') ?>: </td>
<td align="right"><label for="host"><?php print_string('auth_radiushost_key', 'auth_radius') ?>: </label></td>
<td>
<input name="host" type="text" size="30" value="<?php echo $config->host ?>" />
<input name="host" id="host" type="text" size="30" value="<?php echo $config->host ?>" />
<?php
if (isset($err['host'])) {
@@ -45,9 +45,9 @@ if (!isset($config->changepasswordurl)) {
</tr>
<tr valign="top">
<td align="right"><?php print_string('auth_radiusnasport_key', 'auth_radius') ?>: </td>
<td align="right"><label for="nasport"><?php print_string('auth_radiusnasport_key', 'auth_radius') ?>: </label></td>
<td>
<input name="nasport" type="text" size="6" value="<?php echo $config->nasport ?>" />
<input name="nasport" id="nasport" type="text" size="6" value="<?php echo $config->nasport ?>" />
<?php
if (isset($err['nasport'])) {
@@ -60,7 +60,7 @@ if (!isset($config->changepasswordurl)) {
</tr>
<tr valign="top" >
<td align="right"><?php print_string('auth_radiustype_key', 'auth_radius') ?>: </td>
<td align="right"><?php echo html_writer::label(get_string('auth_radiustype_key', 'auth_radius'), 'menuradiustype'); ?>: </td>
<td>
<?php
@@ -82,9 +82,9 @@ if (!isset($config->changepasswordurl)) {
<tr valign="top" >
<td align="right"><?php print_string('auth_radiussecret_key', 'auth_radius') ?>: </td>
<td align="right"><label for="secret"><?php print_string('auth_radiussecret_key', 'auth_radius') ?>: </label></td>
<td>
<input name="secret" type="text" size="6" value="<?php echo $config->secret ?>" />
<input name="secret" id="secret" type="text" size="6" value="<?php echo $config->secret ?>" />
<?php
if (isset($err['secret'])) {
@@ -97,9 +97,9 @@ if (!isset($config->changepasswordurl)) {
</tr>
<tr valign="top">
<td align="right"><?php print_string('auth_radiuschangepasswordurl_key', 'auth_radius') ?>: </td>
<td align="right"><label for="changepasswordurl"><?php print_string('auth_radiuschangepasswordurl_key', 'auth_radius') ?>: </label></td>
<td>
<input name="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<input name="changepasswordurl" id="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<?php
if (isset($err['changepasswordurl'])) {
+12 -12
View File
@@ -20,17 +20,17 @@
<table cellspacing="0" cellpadding="5" border="0">
<tr valign="top" class="required">
<td align="right"><?php print_string("username") ?>:</td>
<td align="right"><label for="user_attribute"><?php print_string("username") ?>: </label></td>
<td>
<input name="user_attribute" type="text" size="30" value="<?php echo $config->user_attribute ?>" />
<input id="user_attribute" name="user_attribute" type="text" size="30" value="<?php echo $config->user_attribute ?>" />
</td>
<td><?php print_string("auth_shib_username_description", "auth_shibboleth") ?></td>
</tr>
<tr valign="top">
<td align="right"><?php print_string("auth_shib_convert_data", "auth_shibboleth") ?>:</td>
<td align="right"><label for="convert_data"><?php print_string("auth_shib_convert_data", "auth_shibboleth") ?>: </label></td>
<td>
<input name="convert_data" type="text" size="30" value="<?php echo $config->convert_data?>" />
<input name="convert_data" id="convert_data" type="text" size="30" value="<?php echo $config->convert_data?>" />
<?php
if ($config->convert_data and $config->convert_data != '' and !is_readable($config->convert_data)) {
@@ -82,9 +82,9 @@ urn:mace:organization2:providerID, Example Organization 2, /Shibboleth.sso/WAYF/
</tr>
<tr valign="top">
<td align="right"><?php print_string("auth_shib_logout_url", "auth_shibboleth") ?>:</td>
<td align="right"><label for="logout_handler"><?php print_string("auth_shib_logout_url", "auth_shibboleth") ?>: </label></td>
<td>
<input name="logout_handler" type="text" size="30" value="<?php
<input name="logout_handler" id="logout_handler" type="text" size="30" value="<?php
if ( isset($config->logout_handler) and !empty($config->logout_handler)){
echo $config->logout_handler;
}
@@ -94,9 +94,9 @@ urn:mace:organization2:providerID, Example Organization 2, /Shibboleth.sso/WAYF/
</tr>
<tr valign="top">
<td align="right"><?php print_string("auth_shib_logout_return_url", "auth_shibboleth") ?>:</td>
<td align="right"><label for="logout_return_url"><?php print_string("auth_shib_logout_return_url", "auth_shibboleth") ?>: </label></td>
<td>
<input name="logout_return_url" type="text" size="30" value="<?php
<input name="logout_return_url" id="logout_return_url" type="text" size="30" value="<?php
if ( isset($config->logout_return_url) and !empty($config->logout_return_url)){
echo $config->logout_return_url;
}
@@ -106,9 +106,9 @@ urn:mace:organization2:providerID, Example Organization 2, /Shibboleth.sso/WAYF/
</tr>
<tr valign="top">
<td align="right"><?php print_string("auth_shib_auth_method", "auth_shibboleth") ?>:</td>
<td align="right"><label for="login_name"><?php print_string("auth_shib_auth_method", "auth_shibboleth") ?>: </label></td>
<td>
<input name="login_name" type="text" size="30" value="<?php
<input name="login_name" id="login_name" type="text" size="30" value="<?php
if ( isset($config->login_name) and !empty($config->login_name)){
echo htmlentities($config->login_name);
} else {
@@ -120,9 +120,9 @@ urn:mace:organization2:providerID, Example Organization 2, /Shibboleth.sso/WAYF/
</tr>
<tr valign="top">
<td align="right"><?php print_string('auth_shib_changepasswordurl', 'auth_shibboleth') ?>: </td>
<td align="right"><label for="changepasswordurl"><?php print_string('auth_shib_changepasswordurl', 'auth_shibboleth') ?>: </label></td>
<td>
<input name="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<input name="changepasswordurl" id="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<?php
if (isset($err['changepasswordurl'])) {
+7 -6
View File
@@ -25,7 +25,7 @@
// Check whether Shibboleth is configured properly
if (empty($pluginconfig->user_attribute)) {
print_error('shib_not_set_up_error', 'auth');
print_error('shib_not_set_up_error', 'auth_shibboleth');
}
/// If we can find the Shibboleth attribute, save it in session and return to main login page
@@ -37,9 +37,9 @@
/// Check if the user has actually submitted login data to us
if ($shibbolethauth->user_login($frm->username, $frm->password)) {
if ($shibbolethauth->user_login($frm->username, $frm->password)
&& $user = authenticate_user_login($frm->username, $frm->password)) {
$user = authenticate_user_login($frm->username, $frm->password);
enrol_check_plugins($user);
session_set_user($user);
@@ -83,16 +83,17 @@
}
else {
// For some weird reason the Shibboleth user couldn't be authenticated
// The Shibboleth user couldn't be mapped to a valid Moodle user
print_error('shib_invalid_account_error', 'auth_shibboleth');
}
}
// If we can find any (user independent) Shibboleth attributes but no user
// attributes we probably didn't receive any user attributes
elseif (!empty($_SERVER['HTTP_SHIB_APPLICATION_ID']) || !empty($_SERVER['Shib-Application-ID'])) {
print_error('shib_no_attributes_error', 'auth' , '', '\''.$pluginconfig->user_attribute.'\', \''.$pluginconfig->field_map_firstname.'\', \''.$pluginconfig->field_map_lastname.'\' and \''.$pluginconfig->field_map_email.'\'');
print_error('shib_no_attributes_error', 'auth_shibboleth' , '', '\''.$pluginconfig->user_attribute.'\', \''.$pluginconfig->field_map_firstname.'\', \''.$pluginconfig->field_map_lastname.'\' and \''.$pluginconfig->field_map_email.'\'');
} else {
print_error('shib_not_set_up_error', 'auth');
print_error('shib_not_set_up_error', 'auth_shibboleth');
}
+2 -2
View File
@@ -29,9 +29,9 @@ if ($show_instructions) {
?>
<div class="guestsub">
<p><?php print_string("auth_shibboleth_select_organization", "auth_shibboleth"); ?></p>
<p><label for="idp"><?php print_string("auth_shibboleth_select_organization", "auth_shibboleth"); ?></label></p>
<form action="login.php" method="post" id="guestlogin">
<select name="idp">
<select id="idp" name="idp">
<option value="-" ><?php print_string("auth_shibboleth_select_member", "auth_shibboleth"); ?></option>
<?php
print_idp_list();
@@ -51,6 +51,7 @@ $string['auth_shib_no_organizations_warning'] = 'If you want to use the integrat
$string['auth_shib_only'] = 'Shibboleth only';
$string['auth_shib_only_description'] = 'Check this option if a Shibboleth authentication shall be enforced';
$string['auth_shib_username_description'] = 'Name of the webserver Shibboleth environment variable that shall be used as Moodle username';
$string['shib_invalid_account_error'] = 'You seem to be Shibboleth authenticated but Moodle has no valid account for your username. Your account may not exist or it may have been suspended.';
$string['shib_no_attributes_error'] = 'You seem to be Shibboleth authenticated but Moodle didn\'t receive any user attributes. Please check that your Identity Provider releases the necessary attributes ({$a}) to the Service Provider Moodle is running on or inform the webmaster of this server.';
$string['shib_not_all_attributes_error'] = 'Moodle needs certain Shibboleth attributes which are not present in your case. The attributes are: {$a}<br />Please contact the webmaster of this server or your Identity Provider.';
$string['shib_not_set_up_error'] = 'Shibboleth authentication doesn\'t seem to be set up correctly because no Shibboleth environment variables are present for this page. Please consult the <a href="README.txt">README</a> for further instructions on how to set up Shibboleth authentication or contact the webmaster of this Moodle installation.';
+1
View File
@@ -63,6 +63,7 @@ $PAGE->https_required();
$loginsite = get_string("loginsite");
$PAGE->set_url('/auth/shibboleth/login.php');
$PAGE->set_context(context_system::instance());
$PAGE->navbar->add($loginsite);
$PAGE->set_title("$site->fullname: $loginsite");
$PAGE->set_heading($site->fullname);
+7 -2
View File
@@ -91,14 +91,19 @@ class file_nested_element extends backup_nested_element {
if (is_null($this->backupid)) {
$this->backupid = $processor->get_var(backup::VAR_BACKUPID);
}
parent::process($processor);
return parent::process($processor);
}
public function fill_values($values) {
// Fill values
parent::fill_values($values);
// Do our own tasks (copy file from moodle to backup)
backup_file_manager::copy_file_moodle2backup($this->backupid, $values);
try {
backup_file_manager::copy_file_moodle2backup($this->backupid, $values);
} catch (file_exception $e) {
$this->add_result(array('missing_files_in_pool' => true));
$this->add_log('missing file in pool: ' . $e->debuginfo, backup::LOG_WARNING);
}
}
}
@@ -149,6 +149,22 @@ abstract class restore_qtype_plugin extends restore_plugin {
AND ' . $DB->sql_compare_text('answer', 255) . ' = ' . $DB->sql_compare_text('?', 255);
$params = array($newquestionid, $data->answertext);
$newitemid = $DB->get_field_sql($sql, $params);
// Not able to find the answer, let's try cleaning the answertext
// of all the question answers in DB as slower fallback. MDL-30018.
if (!$newitemid) {
$params = array('question' => $newquestionid);
$answers = $DB->get_records('question_answers', $params, '', 'id, answer');
foreach ($answers as $answer) {
// Clean in the same way than {@link xml_writer::xml_safe_utf8()}.
$clean = preg_replace('/[\x-\x8\xb-\xc\xe-\x1f\x7f]/is','', $answer->answer); // Clean CTRL chars.
$clean = preg_replace("/\r\n|\r/", "\n", $clean); // Normalize line ending.
if ($clean === $data->answertext) {
$newitemid = $data->id;
}
}
}
// If we haven't found the newitemid, something has gone really wrong, question in DB
// is missing answers, exception
if (!$newitemid) {
+33 -5
View File
@@ -269,7 +269,14 @@ class restore_gradebook_structure_step extends restore_structure_step {
$data->contextid = get_context_instance(CONTEXT_COURSE, $this->get_courseid())->id;
$newitemid = $DB->insert_record('grade_letters', $data);
$gradeletter = (array)$data;
unset($gradeletter['id']);
if (!$DB->record_exists('grade_letters', $gradeletter)) {
$newitemid = $DB->insert_record('grade_letters', $data);
} else {
$newitemid = $data->id;
}
$this->set_mapping('grade_letter', $oldid, $newitemid);
}
protected function process_grade_setting($data) {
@@ -1601,6 +1608,23 @@ class restore_calendarevents_structure_step extends restore_structure_step {
return;
}
}
// Handle events with empty eventtype //MDL-32827
if(empty($data->eventtype)) {
if ($data->courseid == $SITE->id) { // Site event
$data->eventtype = "site";
} else if ($data->courseid != 0 && $data->groupid == 0 && ($data->modulename == 'assignment' || $data->modulename == 'assign')) {
// Course assingment event
$data->eventtype = "due";
} else if ($data->courseid != 0 && $data->groupid == 0) { // Course event
$data->eventtype = "course";
} else if ($data->groupid) { // Group event
$data->eventtype = "group";
} else if ($data->userid) { // User event
$data->eventtype = "user";
} else {
return;
}
}
$params = array(
'name' => $data->name,
@@ -2248,17 +2272,21 @@ class restore_activity_grades_structure_step extends restore_structure_step {
/**
* process activity grade_letters. Note that, while these are possible,
* because grade_letters are contextid based, in proctice, only course
* because grade_letters are contextid based, in practice, only course
* context letters can be defined. So we keep here this method knowing
* it won't be executed ever. gradebook restore will restore course letters.
*/
protected function process_grade_letter($data) {
global $DB;
$data = (object)$data;
$data['contextid'] = $this->task->get_contextid();
$gradeletter = (object)$data;
$data->contextid = $this->task->get_contextid();
$newitemid = $DB->insert_record('grade_letters', $data);
// Check if it exists before adding it
unset($data['id']);
if (!$DB->record_exists('grade_letters', $data)) {
$newitemid = $DB->insert_record('grade_letters', $gradeletter);
}
// no need to save any grade_letter mapping
}
}
+17
View File
@@ -0,0 +1,17 @@
This files describes API changes in /backup/*,
information provided here is intended especially for developers.
=== 2.4 ===
* Since 2.3.1+ the backup file name schema has changed. The ID of the course will always be part of
the filename regardless of the setting 'backup_shortname'. See MDL-33812.
=== 2.3 ===
* Since 2.3.1+ the backup file name schema has changed. The ID of the course will always be part of
the filename regardless of the setting 'backup_shortname'. See MDL-33812.
=== 2.2 ===
* Since 2.2.4+ the backup file name schema has changed. The ID of the course will always be part of
the filename regardless of the setting 'backup_shortname'. See MDL-33812.
+10 -6
View File
@@ -112,7 +112,7 @@ abstract class backup_plan_dbops extends backup_dbops {
// Get all sections belonging to requested course
$sectionsarr = array();
$sections = $DB->get_records('course_sections', array('course' => $courseid));
$sections = $DB->get_records('course_sections', array('course' => $courseid), 'section');
foreach ($sections as $section) {
$sectionsarr[] = $section->id;
}
@@ -197,19 +197,19 @@ abstract class backup_plan_dbops extends backup_dbops {
* @param int $courseid/$sectionid/$cmid
* @param bool $users Should be true is users were included in the backup
* @param bool $anonymised Should be true is user information was anonymized.
* @param bool $useidasname true to use id, false to use strings (default)
* @param bool $useidonly only use the ID in the file name
* @return string The filename to use
*/
public static function get_default_backup_filename($format, $type, $id, $users, $anonymised, $useidasname = false) {
public static function get_default_backup_filename($format, $type, $id, $users, $anonymised, $useidonly = false) {
global $DB;
// Calculate backup word
$backupword = str_replace(' ', '_', moodle_strtolower(get_string('backupfilename')));
$backupword = trim(clean_filename($backupword), '_');
// Not $useidonly, lets fetch the name
$shortname = '';
// Not $useidasname, lets calculate it, else $id will be used
if (!$useidasname) {
if (!$useidonly) {
// Calculate proper name element (based on type)
switch ($type) {
case backup::TYPE_1COURSE:
@@ -231,7 +231,11 @@ abstract class backup_plan_dbops extends backup_dbops {
$shortname = moodle_strtolower(trim(clean_filename($shortname), '_'));
}
$name = empty($shortname) ? $id : $shortname;
// The name will always contain the ID, but we append the course short name if requested.
$name = $id;
if (!$useidonly && $shortname != '') {
$name .= '-' . $shortname;
}
// Calculate date
$backupdateformat = str_replace(' ', '_', get_string('backupnameformat', 'langconfig'));
+23 -2
View File
@@ -622,10 +622,24 @@ abstract class restore_dbops {
* Given one component/filearea/context and
* optionally one source itemname to match itemids
* put the corresponding files in the pool
*
* @param string $basepath the full path to the root of unzipped backup file
* @param string $restoreid the restore job's identification
* @param string $component
* @param string $filearea
* @param int $oldcontextid
* @param int $dfltuserid default $file->user if the old one can't be mapped
* @param string|null $itemname
* @param int|null $olditemid
* @param int|null $forcenewcontextid explicit value for the new contextid (skip mapping)
* @param bool $skipparentitemidctxmatch
* @return array of result object
*/
public static function send_files_to_pool($basepath, $restoreid, $component, $filearea, $oldcontextid, $dfltuserid, $itemname = null, $olditemid = null, $forcenewcontextid = null, $skipparentitemidctxmatch = false) {
global $DB;
$results = array();
if ($forcenewcontextid) {
// Some components can have "forced" new contexts (example: questions can end belonging to non-standard context mappings,
// with questions originally at system/coursecat context in source being restored to course context in target). So we need
@@ -701,7 +715,12 @@ abstract class restore_dbops {
// Find file in backup pool
$backuppath = $basepath . backup_file_manager::get_backup_content_file_location($file->contenthash);
if (!file_exists($backuppath)) {
throw new restore_dbops_exception('file_not_found_in_pool', $file);
$result = new stdClass();
$result->code = 'file_missing_in_backup';
$result->message = sprintf('missing file %s%s in backup', $file->filepath, $file->filename);
$result->level = backup::LOG_WARNING;
$results[] = $result;
continue;
}
if (!$fs->file_exists($newcontextid, $component, $filearea, $rec->newitemid, $file->filepath, $file->filename)) {
$file_record = array(
@@ -721,6 +740,7 @@ abstract class restore_dbops {
}
}
$rs->close();
return $results;
}
/**
@@ -1282,7 +1302,8 @@ abstract class restore_dbops {
}
$currentfullname = $fullname.$suffixfull;
$currentshortname = substr($shortname, 0, 100 - strlen($suffixshort)).$suffixshort; // < 100cc
$coursefull = $DB->get_record_select('course', 'fullname = ? AND id != ?', array($currentfullname, $courseid));
$coursefull = $DB->get_record_select('course', 'fullname = ? AND id != ?',
array($currentfullname, $courseid), '*', IGNORE_MULTIPLE);
$courseshort = $DB->get_record_select('course', 'shortname = ? AND id != ?', array($currentshortname, $courseid));
$counter++;
} while ($coursefull || $courseshort);
+92 -37
View File
@@ -46,6 +46,8 @@ abstract class backup_cron_automated_helper {
const BACKUP_STATUS_UNFINISHED = 2;
/** Course automated backup was skipped */
const BACKUP_STATUS_SKIPPED = 3;
/** Course automated backup had warnings */
const BACKUP_STATUS_WARNING = 4;
/** Run if required by the schedule set in config. Default. **/
const RUN_ON_SCHEDULE = 0;
@@ -110,7 +112,7 @@ abstract class backup_cron_automated_helper {
$nextstarttime = backup_cron_automated_helper::calculate_next_automated_backup($admin->timezone, $now);
$showtime = "undefined";
if ($nextstarttime > 0) {
$showtime = userdate($nextstarttime,"",$admin->timezone);
$showtime = date('r', $nextstarttime);
}
$rs = $DB->get_recordset('course');
@@ -124,7 +126,14 @@ abstract class backup_cron_automated_helper {
}
// Skip courses that do not yet need backup
$skipped = !(($backupcourse->nextstarttime >= 0 && $backupcourse->nextstarttime < $now) || $rundirective == self::RUN_IMMEDIATELY);
$skipped = !(($backupcourse->nextstarttime > 0 && $backupcourse->nextstarttime < $now) || $rundirective == self::RUN_IMMEDIATELY);
if ($skipped && $backupcourse->nextstarttime != $nextstarttime) {
$backupcourse->nextstarttime = $nextstarttime;
$backupcourse->laststatus = backup_cron_automated_helper::BACKUP_STATUS_SKIPPED;
$DB->update_record('backup_courses', $backupcourse);
mtrace('Backup of \'' . $course->fullname . '\' is scheduled on ' . $showtime);
}
// Skip backup of unavailable courses that have remained unmodified in a month
if (!$skipped && empty($course->visible) && ($now - $course->timemodified) > 31*24*60*60) { //Hidden + settings were unmodified last month
//Check log if there were any modifications to the course content
@@ -132,16 +141,17 @@ abstract class backup_cron_automated_helper {
$params = array('courseid' => $course->id, 'time' => $now-31*24*60*60, 'action' => '%view%');
$logexists = $DB->record_exists_select('log', $sqlwhere, $params);
if (!$logexists) {
$backupcourse->laststatus = backup_cron_automated_helper::BACKUP_STATUS_SKIPPED;
$backupcourse->laststatus = self::BACKUP_STATUS_SKIPPED;
$backupcourse->nextstarttime = $nextstarttime;
$DB->update_record('backup_courses', $backupcourse);
mtrace('Skipping unchanged course '.$course->fullname);
$skipped = true;
}
}
//Now we backup every non-skipped course
if (!$skipped) {
mtrace('Backing up '.$course->fullname, '...');
mtrace('Backing up '.$course->fullname.'...');
//We have to send a email because we have included at least one backup
$emailpending = true;
@@ -152,7 +162,7 @@ abstract class backup_cron_automated_helper {
$starttime = time();
$backupcourse->laststarttime = time();
$backupcourse->laststatus = backup_cron_automated_helper::BACKUP_STATUS_UNFINISHED;
$backupcourse->laststatus = self::BACKUP_STATUS_UNFINISHED;
$DB->update_record('backup_courses', $backupcourse);
$backupcourse->laststatus = backup_cron_automated_helper::launch_automated_backup($course, $backupcourse->laststarttime, $admin->id);
@@ -161,7 +171,7 @@ abstract class backup_cron_automated_helper {
$DB->update_record('backup_courses', $backupcourse);
if ($backupcourse->laststatus) {
if ($backupcourse->laststatus === self::BACKUP_STATUS_OK) {
// Clean up any excess course backups now that we have
// taken a successful backup.
$removedcount = backup_cron_automated_helper::remove_excess_backups($course);
@@ -180,17 +190,18 @@ abstract class backup_cron_automated_helper {
$message = "";
$count = backup_cron_automated_helper::get_backup_status_array();
$haserrors = ($count[backup_cron_automated_helper::BACKUP_STATUS_ERROR] != 0 || $count[backup_cron_automated_helper::BACKUP_STATUS_UNFINISHED] != 0);
$haserrors = ($count[self::BACKUP_STATUS_ERROR] != 0 || $count[self::BACKUP_STATUS_UNFINISHED] != 0);
//Build the message text
//Summary
$message .= get_string('summary')."\n";
$message .= "==================================================\n";
$message .= " ".get_string('courses').": ".array_sum($count)."\n";
$message .= " ".get_string('ok').": ".$count[backup_cron_automated_helper::BACKUP_STATUS_OK]."\n";
$message .= " ".get_string('skipped').": ".$count[backup_cron_automated_helper::BACKUP_STATUS_SKIPPED]."\n";
$message .= " ".get_string('error').": ".$count[backup_cron_automated_helper::BACKUP_STATUS_ERROR]."\n";
$message .= " ".get_string('unfinished').": ".$count[backup_cron_automated_helper::BACKUP_STATUS_UNFINISHED]."\n\n";
$message .= " ".get_string('ok').": ".$count[self::BACKUP_STATUS_OK]."\n";
$message .= " ".get_string('skipped').": ".$count[self::BACKUP_STATUS_SKIPPED]."\n";
$message .= " ".get_string('error').": ".$count[self::BACKUP_STATUS_ERROR]."\n";
$message .= " ".get_string('unfinished').": ".$count[self::BACKUP_STATUS_UNFINISHED]."\n";
$message .= " ".get_string('warning').": ".$count[self::BACKUP_STATUS_WARNING]."\n\n";
//Reference
if ($haserrors) {
@@ -253,9 +264,10 @@ abstract class backup_cron_automated_helper {
self::BACKUP_STATUS_OK => 0,
self::BACKUP_STATUS_UNFINISHED => 0,
self::BACKUP_STATUS_SKIPPED => 0,
self::BACKUP_STATUS_WARNING => 0
);
$statuses = $DB->get_records_sql('SELECT DISTINCT bc.laststatus, COUNT(bc.courseid) statuscount FROM {backup_courses} bc GROUP BY bc.laststatus');
$statuses = $DB->get_records_sql('SELECT DISTINCT bc.laststatus, COUNT(bc.courseid) AS statuscount FROM {backup_courses} bc GROUP BY bc.laststatus');
foreach ($statuses as $status) {
if (empty($status->statuscount)) {
@@ -270,36 +282,47 @@ abstract class backup_cron_automated_helper {
/**
* Works out the next time the automated backup should be run.
*
* @param mixed $timezone
* @param int $now
* @return int
* @param mixed $timezone user timezone
* @param int $now timestamp, should not be in the past, most likely time()
* @return int timestamp of the next execution at server time
*/
public static function calculate_next_automated_backup($timezone, $now) {
$result = -1;
$result = 0;
$config = get_config('backup');
$midnight = usergetmidnight($now, $timezone);
$autohour = $config->backup_auto_hour;
$automin = $config->backup_auto_minute;
// Gets the user time relatively to the server time.
$date = usergetdate($now, $timezone);
$usertime = mktime($date['hours'], $date['minutes'], $date['seconds'], $date['mon'], $date['mday'], $date['year']);
$diff = $now - $usertime;
//Get number of days (from today) to execute backups
$automateddays = substr($config->backup_auto_weekdays,$date['wday']) . $config->backup_auto_weekdays;
$daysfromtoday = strpos($automateddays, "1");
if (empty($daysfromtoday)) {
$daysfromtoday = 1;
// Get number of days (from user's today) to execute backups.
$automateddays = substr($config->backup_auto_weekdays, $date['wday']) . $config->backup_auto_weekdays;
$daysfromnow = strpos($automateddays, "1");
// Error, there are no days to schedule the backup for.
if ($daysfromnow === false) {
return 0;
}
//If some day has been found
if ($daysfromtoday !== false) {
//Calculate distance
$dist = ($daysfromtoday * 86400) + //Days distance
($config->backup_auto_hour * 3600) + //Hours distance
($config->backup_auto_minute * 60); //Minutes distance
$result = $midnight + $dist;
// Checks if the date would happen in the future (of the user).
$userresult = mktime($autohour, $automin, 0, $date['mon'], $date['mday'] + $daysfromnow, $date['year']);
if ($userresult <= $usertime) {
// If not, we skip the first scheduled day, that should fix it.
$daysfromnow = strpos($automateddays, "1", 1);
$userresult = mktime($autohour, $automin, 0, $date['mon'], $date['mday'] + $daysfromnow, $date['year']);
}
//If that time is past, call the function recursively to obtain the next valid day
if ($result > 0 && $result < time()) {
$result = self::calculate_next_automated_backup($timezone, $result);
// Now we generate the time relative to the server.
$result = $userresult + $diff;
// If that time is past, call the function recursively to obtain the next valid day.
if ($result <= $now) {
// Checking time() in here works, but makes PHPUnit Tests extremely hard to predict.
// $now should never be earlier than time() anyway...
$result = self::calculate_next_automated_backup($timezone, $now + DAYSECS);
}
return $result;
@@ -315,7 +338,7 @@ abstract class backup_cron_automated_helper {
*/
public static function launch_automated_backup($course, $starttime, $userid) {
$outcome = true;
$outcome = self::BACKUP_STATUS_OK;
$config = get_config('backup');
$bc = new backup_controller(backup::TYPE_1COURSE, $course->id, backup::FORMAT_MOODLE, backup::INTERACTIVE_NO, backup::MODE_AUTOMATED, $userid);
@@ -350,6 +373,7 @@ abstract class backup_cron_automated_helper {
$bc->execute_plan();
$results = $bc->get_results();
$outcome = self::outcome_from_results($results);
$file = $results['backup_destination']; // may be empty if file already moved to target location
$dir = $config->backup_auto_destination;
$storage = (int)$config->backup_auto_storage;
@@ -358,8 +382,10 @@ abstract class backup_cron_automated_helper {
}
if ($file && !empty($dir) && $storage !== 0) {
$filename = backup_plan_dbops::get_default_backup_filename($format, $type, $course->id, $users, $anonymised, !$config->backup_shortname);
$outcome = $file->copy_content_to($dir.'/'.$filename);
if ($outcome && $storage === 1) {
if (!$file->copy_content_to($dir.'/'.$filename)) {
$outcome = self::BACKUP_STATUS_ERROR;
}
if ($outcome != self::BACKUP_STATUS_ERROR && $storage === 1) {
$file->delete();
}
}
@@ -368,7 +394,7 @@ abstract class backup_cron_automated_helper {
$bc->log('backup_auto_failed_on_course', backup::LOG_ERROR, $course->shortname); // Log error header.
$bc->log('Exception: ' . $e->errorcode, backup::LOG_ERROR, $e->a, 1); // Log original exception problem.
$bc->log('Debug: ' . $e->debuginfo, backup::LOG_DEBUG, null, 1); // Log original debug information.
$outcome = false;
$outcome = self::BACKUP_STATUS_ERROR;
}
$bc->destroy();
@@ -377,6 +403,30 @@ abstract class backup_cron_automated_helper {
return $outcome;
}
/**
* Returns the backup outcome by analysing its results.
*
* @param array $results returned by a backup
* @return int {@link self::BACKUP_STATUS_OK} and other constants
*/
public static function outcome_from_results($results) {
$outcome = self::BACKUP_STATUS_OK;
foreach ($results as $code => $value) {
// Each possible error and warning code has to be specified in this switch
// which basically analyses the results to return the correct backup status.
switch ($code) {
case 'missing_files_in_pool':
$outcome = self::BACKUP_STATUS_WARNING;
break;
}
// If we found the highest error level, we exit the loop.
if ($outcome == self::BACKUP_STATUS_ERROR) {
break;
}
}
return $outcome;
}
/**
* Removes deleted courses fromn the backup_courses table so that we don't
* waste time backing them up.
@@ -409,7 +459,12 @@ abstract class backup_cron_automated_helper {
$config = get_config('backup');
$active = (int)$config->backup_auto_active;
if ($active === self::AUTO_BACKUP_DISABLED || ($rundirective == self::RUN_ON_SCHEDULE && $active === self::AUTO_BACKUP_MANUAL)) {
$weekdays = (string)$config->backup_auto_weekdays;
// In case of automated backup also check that it is scheduled for at least one weekday.
if ($active === self::AUTO_BACKUP_DISABLED ||
($rundirective == self::RUN_ON_SCHEDULE && $active === self::AUTO_BACKUP_MANUAL) ||
($rundirective == self::RUN_ON_SCHEDULE && strpos($weekdays, '1') === false)) {
return self::STATE_DISABLED;
} else if (!empty($config->backup_auto_running)) {
// Detect if the backup_auto_running semaphore is a valid one
@@ -94,11 +94,22 @@ abstract class backup_structure_step extends backup_step {
// Process structure definition
$structure->process($pr);
// Get the results from the nested elements
$results = $structure->get_results();
// Get the log messages to append to the log
$logs = $structure->get_logs();
foreach ($logs as $log) {
$this->log($log->message, $log->level, $log->a, $log->depth, $log->display);
}
// Close everything
$xw->stop();
// Destroy the structure. It helps PHP 5.2 memory a lot!
$structure->destroy();
return $results;
}
/**
+28
View File
@@ -191,6 +191,34 @@ abstract class base_task implements checksumable, executable, loggable {
backup_general_helper::array_checksum_recursive($this->steps));
}
/**
* Add the given info to the current plan's results.
*
* @see base_plan::add_result()
* @param array $result associative array describing a result of a task/step
*/
public function add_result($result) {
if (!is_null($this->plan)) {
$this->plan->add_result($result);
} else {
debugging('Attempting to add a result of a task not binded with a plan', DEBUG_DEVELOPER);
}
}
/**
* Return the current plan's results
*
* @return array|null
*/
public function get_results() {
if (!is_null($this->plan)) {
return $this->plan->get_results();
} else {
debugging('Attempting to get results of a task not binded with a plan', DEBUG_DEVELOPER);
return null;
}
}
// Protected API starts here
/**
@@ -218,8 +218,14 @@ abstract class restore_structure_step extends restore_step {
*/
public function add_related_files($component, $filearea, $mappingitemname, $filesctxid = null, $olditemid = null) {
$filesctxid = is_null($filesctxid) ? $this->task->get_old_contextid() : $filesctxid;
restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), $component,
$filearea, $filesctxid, $this->task->get_userid(), $mappingitemname, $olditemid);
$results = restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), $component,
$filearea, $filesctxid, $this->task->get_userid(), $mappingitemname, $olditemid);
$resultstoadd = array();
foreach ($results as $result) {
$this->log($result->message, $result->level);
$resultstoadd[$result->code] = true;
}
$this->task->add_result($resultstoadd);
}
/**
@@ -37,6 +37,8 @@ class backup_nested_element extends base_nested_element implements processable {
protected $aliases; // Define DB->final element aliases
protected $fileannotations; // array of file areas to be searched by file annotations
protected $counter; // Number of instances of this element that have been processed
protected $results; // Logs the results we encounter during the process.
protected $logs; // Some log messages that could be retrieved later.
/**
* Constructor - instantiates one backup_nested_element, specifying its basic info.
@@ -55,8 +57,16 @@ class backup_nested_element extends base_nested_element implements processable {
$this->aliases = array();
$this->fileannotations = array();
$this->counter = 0;
$this->results = array();
$this->logs = array();
}
/**
* Process the nested element
*
* @param object $processor the processor
* @return void
*/
public function process($processor) {
if (!$processor instanceof base_processor) { // No correct processor, throw exception
throw new base_element_struct_exception('incorrect_processor');
@@ -113,6 +123,69 @@ class backup_nested_element extends base_nested_element implements processable {
$iterator->close();
}
/**
* Saves a log message to an array
*
* @see backup_helper::log()
* @param string $message to add to the logs
* @param int $level level of importance {@link backup::LOG_DEBUG} and other constants
* @param mixed $a to be included in $message
* @param int $depth of the message
* @param display $bool supporting translation via get_string() if true
* @return void
*/
protected function add_log($message, $level, $a = null, $depth = null, $display = false) {
// Adding the result to the oldest parent.
if ($this->get_parent()) {
$parent = $this->get_grandparent();
$parent->add_log($message, $level, $a, $depth, $display);
} else {
$log = new stdClass();
$log->message = $message;
$log->level = $level;
$log->a = $a;
$log->depth = $depth;
$log->display = $display;
$this->logs[] = $log;
}
}
/**
* Saves the results to an array
*
* @param array $result associative array
* @return void
*/
protected function add_result($result) {
if (is_array($result)) {
// Adding the result to the oldest parent.
if ($this->get_parent()) {
$parent = $this->get_grandparent();
$parent->add_result($result);
} else {
$this->results = array_merge($this->results, $result);
}
}
}
/**
* Returns the logs
*
* @return array of log objects
*/
public function get_logs() {
return $this->logs;
}
/**
* Returns the results
*
* @return associative array of results
*/
public function get_results() {
return $this->results;
}
public function set_source_array($arr) {
// TODO: Only elements having final elements can set source
$this->var_array = $arr;
+3
View File
@@ -469,6 +469,9 @@ class backup_ui_stage_complete extends backup_ui_stage_final {
}
echo $OUTPUT->box_start();
if (!empty($this->results['missing_files_in_pool'])) {
echo $OUTPUT->notification(get_string('missingfilesinpool', 'backup'), 'notifyproblem');
}
echo $OUTPUT->notification(get_string('executionsuccess', 'backup'), 'notifysuccess');
echo $OUTPUT->continue_button($restorerul);
echo $OUTPUT->box_end();
+13 -9
View File
@@ -96,7 +96,6 @@ abstract class base_moodleform extends moodleform {
* @global moodle_page $PAGE
*/
function definition_after_data() {
global $PAGE;
$buttonarray=array();
$buttonarray[] = $this->_form->createElement('submit', 'submitbutton', get_string($this->uistage->get_ui()->get_name().'stage'.$this->uistage->get_stage().'action', 'backup'), array('class'=>'proceedbutton'));
if (!$this->uistage->is_first_stage()) {
@@ -106,13 +105,9 @@ abstract class base_moodleform extends moodleform {
$this->_form->addGroup($buttonarray, 'buttonar', '', array(' '), false);
$this->_form->closeHeaderBefore('buttonar');
$config = new stdClass;
$config->title = get_string('confirmcancel', 'backup');
$config->question = get_string('confirmcancelquestion', 'backup');
$config->yesLabel = get_string('confirmcancelyes', 'backup');
$config->noLabel = get_string('confirmcancelno', 'backup');
$PAGE->requires->yui_module('moodle-backup-confirmcancel', 'M.core_backup.watch_cancel_buttons', array($config));
$this->_definition_finalized = true;
}
/**
* Closes any open divs
*/
@@ -304,7 +299,17 @@ abstract class base_moodleform extends moodleform {
* Displays the form
*/
public function display() {
global $PAGE;
$this->require_definition_after_data();
$config = new stdClass;
$config->title = get_string('confirmcancel', 'backup');
$config->question = get_string('confirmcancelquestion', 'backup');
$config->yesLabel = get_string('confirmcancelyes', 'backup');
$config->noLabel = get_string('confirmcancelno', 'backup');
$PAGE->requires->yui_module('moodle-backup-confirmcancel', 'M.core_backup.watch_cancel_buttons', array($config));
parent::display();
}
@@ -313,8 +318,7 @@ abstract class base_moodleform extends moodleform {
*/
public function require_definition_after_data() {
if (!$this->_definition_finalized) {
$this->_definition_finalized = true;
$this->definition_after_data();
}
}
}
}
@@ -757,6 +757,9 @@ class restore_ui_stage_complete extends restore_ui_stage_process {
$html = '';
$html .= $renderer->box_start();
if (array_key_exists('file_missing_in_backup', $this->results)) {
$html .= $renderer->notification(get_string('restorefileweremissing', 'backup'), 'notifyproblem');
}
$html .= $renderer->notification(get_string('restoreexecutionsuccess', 'backup'), 'notifysuccess');
$html .= $renderer->continue_button(new moodle_url('/course/view.php', array(
'id' => $this->get_ui()->get_controller()->get_courseid())), 'get');
+3 -1
View File
@@ -82,17 +82,20 @@ class block_blog_recent extends block_base {
$context = $this->page->context;
$url = new moodle_url('/blog/index.php');
$filter = array();
if ($context->contextlevel == CONTEXT_MODULE) {
$filter['module'] = $context->instanceid;
$a = new stdClass;
$a->type = get_string('modulename', $this->page->cm->modname);
$strview = get_string('viewallmodentries', 'blog', $a);
$url->param('modid', $context->instanceid);
} else if ($context->contextlevel == CONTEXT_COURSE) {
$filter['course'] = $context->instanceid;
$a = new stdClass;
$a->type = get_string('course');
$strview = get_string('viewblogentries', 'blog', $a);
$url->param('courseid', $context->instanceid);
} else {
$strview = get_string('viewsiteentries', 'blog');
}
@@ -100,7 +103,6 @@ class block_blog_recent extends block_base {
$bloglisting = new blog_listing($filter);
$entries = $bloglisting->get_entries(0, $this->config->numberofrecentblogentries, 4);
$url = new moodle_url('/blog/index.php', $filter);
if (!empty($entries)) {
$entrieslist = array();
+2 -2
View File
@@ -71,7 +71,7 @@ class block_community extends block_list {
$icon = html_writer::empty_tag('img', array('src' => $OUTPUT->pix_url('i/group'),
'class' => 'icon', 'alt' => get_string('addcourse', 'block_community')));
$addcourseurl = new moodle_url('/blocks/community/communitycourse.php',
array('add' => true, 'courseid' => $coursecontext->instanceid));
array('add' => true, 'courseid' => $this->page->course->id));
$searchlink = html_writer::tag('a', $icon . '&nbsp;' . get_string('addcourse', 'block_community'),
array('href' => $addcourseurl->out(false)));
$this->content->items[] = $searchlink;
@@ -91,7 +91,7 @@ class block_community extends block_list {
'alt' => get_string('removecommunitycourse', 'block_community')));
$deleteurl = new moodle_url('/blocks/community/communitycourse.php',
array('remove' => true,
'courseid' => $coursecontext->instanceid,
'courseid' => $this->page->course->id,
'communityid' => $course->id, 'sesskey' => sesskey()));
$deleteatag = html_writer::tag('a', $deleteicon, array('href' => $deleteurl));
+1 -1
View File
@@ -140,7 +140,7 @@ class community_hub_search_form extends moodleform {
$options = array();
$firsthub = false;
foreach ($hubs as $hub) {
if (key_exists('id', $hub)) {
if (array_key_exists('id', $hub)) {
$params = array('hubid' => $hub['id'],
'filetype' => HUB_HUBSCREENSHOT_FILE_TYPE);
$imgurl = new moodle_url(HUB_HUBDIRECTORYURL .
+2 -3
View File
@@ -23,8 +23,7 @@ YUI.add('moodle-block_community-comments', function(Y) {
bodyContent:Y.one('#commentoverlay-'+commentid).get('innerHTML'),
visible: false, //by default it is not displayed
lightbox : false,
zIndex:100,
height: '350px'
zIndex:100
});
this.overlays[commentid].get('contentBox').one('.commenttitle').remove();
@@ -86,4 +85,4 @@ YUI.add('moodle-block_community-comments', function(Y) {
}, '@VERSION@', {
requires:['base','overlay', 'moodle-enrol-notification']
});
});
+143 -142
View File
@@ -19,15 +19,14 @@
*
* @package block
* @subpackage completion
* @copyright 2009 Catalyst IT Ltd
* @copyright 2009-2012 Catalyst IT Ltd
* @author Aaron Barnes <aaronb@catalyst.net.nz>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
require_once($CFG->libdir.'/completionlib.php');
require_once("{$CFG->libdir}/completionlib.php");
/**
* Course completion status
@@ -40,21 +39,25 @@ class block_completionstatus extends block_base {
}
public function get_content() {
global $USER, $CFG, $DB, $COURSE;
global $USER;
// If content is cached
if ($this->content !== NULL) {
return $this->content;
}
$course = $this->page->course;
// Create empty content
$this->content = new stdClass;
$this->content = new stdClass();
$context = get_context_instance(CONTEXT_COURSE, $course->id);
// Can edit settings?
$can_edit = has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $this->page->course->id));
$can_edit = has_capability('moodle/course:update', $context);
// Get course completion data
$info = new completion_info($this->page->course);
$info = new completion_info($course);
// Don't display if completion isn't enabled!
if (!completion_info::is_enabled_for_site()) {
@@ -82,147 +85,145 @@ class block_completionstatus extends block_base {
}
// Check this user is enroled
if (!$info->is_tracked_user($USER->id)) {
// If not enrolled, but are can view the report:
if (has_capability('report/completion:view', get_context_instance(CONTEXT_COURSE, $COURSE->id))) {
$this->content->text = '<a href="'.$CFG->wwwroot.'/report/completion/index.php?course='.$COURSE->id.
'">'.get_string('viewcoursereport', 'completion').'</a>';
return $this->content;
if ($info->is_tracked_user($USER->id)) {
// Generate markup for criteria statuses
$shtml = '';
// For aggregating activity completion
$activities = array();
$activities_complete = 0;
// For aggregating course prerequisites
$prerequisites = array();
$prerequisites_complete = 0;
// Flag to set if current completion data is inconsistent with
// what is stored in the database
$pending_update = false;
// Loop through course criteria
foreach ($completions as $completion) {
$criteria = $completion->get_criteria();
$complete = $completion->is_complete();
if (!$pending_update && $criteria->is_pending($completion)) {
$pending_update = true;
}
// Activities are a special case, so cache them and leave them till last
if ($criteria->criteriatype == COMPLETION_CRITERIA_TYPE_ACTIVITY) {
$activities[$criteria->moduleinstance] = $complete;
if ($complete) {
$activities_complete++;
}
continue;
}
// Prerequisites are also a special case, so cache them and leave them till last
if ($criteria->criteriatype == COMPLETION_CRITERIA_TYPE_COURSE) {
$prerequisites[$criteria->courseinstance] = $complete;
if ($complete) {
$prerequisites_complete++;
}
continue;
}
$shtml .= '<tr><td>';
$shtml .= $criteria->get_title();
$shtml .= '</td><td style="text-align: right">';
$shtml .= $completion->get_status();
$shtml .= '</td></tr>';
}
// Otherwise, show error
// Aggregate activities
if (!empty($activities)) {
$shtml .= '<tr><td>';
$shtml .= get_string('activitiescompleted', 'completion');
$shtml .= '</td><td style="text-align: right">';
$a = new stdClass();
$a->first = $activities_complete;
$a->second = count($activities);
$shtml .= get_string('firstofsecond', 'block_completionstatus', $a);
$shtml .= '</td></tr>';
}
// Aggregate prerequisites
if (!empty($prerequisites)) {
$phtml = '<tr><td>';
$phtml .= get_string('prerequisitescompleted', 'completion');
$phtml .= '</td><td style="text-align: right">';
$a = new stdClass();
$a->first = $prerequisites_complete;
$a->second = count($prerequisites);
$phtml .= get_string('firstofsecond', 'block_completionstatus', $a);
$phtml .= '</td></tr>';
$shtml = $phtml . $shtml;
}
// Display completion status
$this->content->text = '<table width="100%" style="font-size: 90%;"><tbody>';
$this->content->text .= '<tr><td colspan="2"><b>'.get_string('status').':</b> ';
// Is course complete?
$coursecomplete = $info->is_course_complete($USER->id);
// Load course completion
$params = array(
'userid' => $USER->id,
'course' => $course->id
);
$ccompletion = new completion_completion($params);
// Has this user completed any criteria?
$criteriacomplete = $info->count_course_user_data($USER->id);
if ($pending_update) {
$this->content->text .= '<i>'.get_string('pending', 'completion').'</i>';
} else if ($coursecomplete) {
$this->content->text .= get_string('complete');
} else if (!$criteriacomplete && !$ccompletion->timestarted) {
$this->content->text .= '<i>'.get_string('notyetstarted', 'completion').'</i>';
} else {
$this->content->text .= '<i>'.get_string('inprogress','completion').'</i>';
}
$this->content->text .= '</td></tr>';
$this->content->text .= '<tr><td colspan="2">';
// Get overall aggregation method
$overall = $info->get_aggregation_method();
if ($overall == COMPLETION_AGGREGATION_ALL) {
$this->content->text .= get_string('criteriarequiredall', 'completion');
} else {
$this->content->text .= get_string('criteriarequiredany', 'completion');
}
$this->content->text .= ':</td></tr>';
$this->content->text .= '<tr><td><b>'.get_string('requiredcriteria', 'completion').'</b></td><td style="text-align: right"><b>'.get_string('status').'</b></td></tr>';
$this->content->text .= $shtml.'</tbody></table>';
// Display link to detailed view
$details = new moodle_url('/blocks/completionstatus/details.php', array('course' => $course->id));
$this->content->footer = '<br><a href="'.$details->out().'">'.get_string('moredetails', 'completion').'</a>';
} else {
// If user is not enrolled, show error
$this->content->text = get_string('notenroled', 'completion');
return $this->content;
}
// Generate markup for criteria statuses
$shtml = '';
// For aggregating activity completion
$activities = array();
$activities_complete = 0;
// For aggregating course prerequisites
$prerequisites = array();
$prerequisites_complete = 0;
// Flag to set if current completion data is inconsistent with
// what is stored in the database
$pending_update = false;
// Loop through course criteria
foreach ($completions as $completion) {
$criteria = $completion->get_criteria();
$complete = $completion->is_complete();
if (!$pending_update && $criteria->is_pending($completion)) {
$pending_update = true;
}
// Activities are a special case, so cache them and leave them till last
if ($criteria->criteriatype == COMPLETION_CRITERIA_TYPE_ACTIVITY) {
$activities[$criteria->moduleinstance] = $complete;
if ($complete) {
$activities_complete++;
}
continue;
}
// Prerequisites are also a special case, so cache them and leave them till last
if ($criteria->criteriatype == COMPLETION_CRITERIA_TYPE_COURSE) {
$prerequisites[$criteria->courseinstance] = $complete;
if ($complete) {
$prerequisites_complete++;
}
continue;
}
$shtml .= '<tr><td>';
$shtml .= $criteria->get_title();
$shtml .= '</td><td style="text-align: right">';
$shtml .= $completion->get_status();
$shtml .= '</td></tr>';
if (has_capability('report/completion:view', $context)) {
$report = new moodle_url('/report/completion/index.php', array('course' => $course->id));
$this->content->footer .= '<br /><a href="'.$report->out().'">'.get_string('viewcoursereport', 'completion').'</a>';
}
// Aggregate activities
if (!empty($activities)) {
$shtml .= '<tr><td>';
$shtml .= get_string('activitiescompleted', 'completion');
$shtml .= '</td><td style="text-align: right">';
$a = new stdClass();
$a->first = $activities_complete;
$a->second = count($activities);
$shtml .= get_string('firstofsecond', 'block_completionstatus', $a);
$shtml .= '</td></tr>';
}
// Aggregate prerequisites
if (!empty($prerequisites)) {
$phtml = '<tr><td>';
$phtml .= get_string('prerequisitescompleted', 'completion');
$phtml .= '</td><td style="text-align: right">';
$a = new stdClass();
$a->first = $prerequisites_complete;
$a->second = count($prerequisites);
$phtml .= get_string('firstofsecond', 'block_completionstatus', $a);
$phtml .= '</td></tr>';
$shtml = $phtml . $shtml;
}
// Display completion status
$this->content->text = '<table width="100%" style="font-size: 90%;"><tbody>';
$this->content->text .= '<tr><td colspan="2"><b>'.get_string('status').':</b> ';
// Is course complete?
$coursecomplete = $info->is_course_complete($USER->id);
// Load course completion
$params = array(
'userid' => $USER->id,
'course' => $COURSE->id
);
$ccompletion = new completion_completion($params);
// Has this user completed any criteria?
$criteriacomplete = $info->count_course_user_data($USER->id);
if ($pending_update) {
$this->content->text .= '<i>'.get_string('pending', 'completion').'</i>';
} else if ($coursecomplete) {
$this->content->text .= get_string('complete');
} else if (!$criteriacomplete && !$ccompletion->timestarted) {
$this->content->text .= '<i>'.get_string('notyetstarted', 'completion').'</i>';
} else {
$this->content->text .= '<i>'.get_string('inprogress','completion').'</i>';
}
$this->content->text .= '</td></tr>';
$this->content->text .= '<tr><td colspan="2">';
// Get overall aggregation method
$overall = $info->get_aggregation_method();
if ($overall == COMPLETION_AGGREGATION_ALL) {
$this->content->text .= get_string('criteriarequiredall', 'completion');
} else {
$this->content->text .= get_string('criteriarequiredany', 'completion');
}
$this->content->text .= ':</td></tr>';
$this->content->text .= '<tr><td><b>'.get_string('requiredcriteria', 'completion').'</b></td><td style="text-align: right"><b>'.get_string('status').'</b></td></tr>';
$this->content->text .= $shtml.'</tbody></table>';
// Display link to detailed view
$this->content->footer = '<br><a href="'.$CFG->wwwroot.'/blocks/completionstatus/details.php?course='.$COURSE->id.'">'.get_string('moredetails', 'completion').'</a>';
return $this->content;
}
}
+130 -115
View File
@@ -19,27 +19,23 @@
*
* @package block
* @subpackage completion
* @copyright 2009 Catalyst IT Ltd
* @copyright 2009-2012 Catalyst IT Ltd
* @author Aaron Barnes <aaronb@catalyst.net.nz>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
require_once('../../config.php');
require_once($CFG->libdir.'/completionlib.php');
// TODO: Make this page Moodle 2.0 compliant
require_once(dirname(__FILE__).'/../../config.php');
require_once("{$CFG->libdir}/completionlib.php");
///
/// Load data
///
$id = required_param('course', PARAM_INT);
// User id
$userid = optional_param('user', 0, PARAM_INT);
// Load course
$course = $DB->get_record('course', array('id' => $id));
$course = $DB->get_record('course', array('id' => $id), '*', MUST_EXIST);
// Load user
if ($userid) {
@@ -76,21 +72,13 @@ if (!$can_view) {
// Load completion data
$info = new completion_info($course);
$returnurl = "{$CFG->wwwroot}/course/view.php?id={$id}";
$returnurl = new moodle_url('/course/view.php', array('id' => $id));
// Don't display if completion isn't enabled!
if (!$info->is_enabled()) {
print_error('completionnotenabled', 'completion', $returnurl);
}
// Load criteria to display
$completions = $info->get_completions($user->id);
// Check if this course has any criteria
if (empty($completions)) {
print_error('nocriteriaset', 'completion', $returnurl);
}
// Check this user is enroled
if (!$info->is_tracked_user($user->id)) {
if ($USER->id == $user->id) {
@@ -104,6 +92,7 @@ if (!$info->is_tracked_user($user->id)) {
///
/// Display page
///
$PAGE->set_context(context_course::instance($course->id));
// Print header
$page = get_string('completionprogressdetails', 'block_completionstatus');
@@ -111,7 +100,7 @@ $title = format_string($course->fullname) . ': ' . $page;
$PAGE->navbar->add($page);
$PAGE->set_pagelayout('standard');
$PAGE->set_url('/blocks/completionstatus/details.php', array('course' => $course->id));
$PAGE->set_url('/blocks/completionstatus/details.php', array('course' => $course->id, 'user' => $user->id));
$PAGE->set_title(get_string('course') . ': ' . $course->fullname);
$PAGE->set_heading($title);
echo $OUTPUT->header();
@@ -135,122 +124,148 @@ $coursecomplete = $info->is_course_complete($user->id);
// Has this user completed any criteria?
$criteriacomplete = $info->count_course_user_data($user->id);
// Load course completion
$params = array(
'userid' => $user->id,
'course' => $course->id,
);
$ccompletion = new completion_completion($params);
if ($coursecomplete) {
echo get_string('complete');
} else if (!$criteriacomplete) {
} else if (!$criteriacomplete && !$ccompletion->timestarted) {
echo '<i>'.get_string('notyetstarted', 'completion').'</i>';
} else {
echo '<i>'.get_string('inprogress','completion').'</i>';
}
echo '</td></tr>';
echo '<tr><td colspan="2"><b>'.get_string('required').':</b> ';
// Get overall aggregation method
$overall = $info->get_aggregation_method();
// Load criteria to display
$completions = $info->get_completions($user->id);
if ($overall == COMPLETION_AGGREGATION_ALL) {
echo get_string('criteriarequiredall', 'completion');
// Check if this course has any criteria
if (empty($completions)) {
echo '<tr><td colspan="2"><br />';
echo $OUTPUT->box(get_string('err_nocriteria', 'completion'), 'noticebox');
echo '</td></tr></tbody></table>';
} else {
echo get_string('criteriarequiredany', 'completion');
}
echo '<tr><td colspan="2"><b>'.get_string('required').':</b> ';
echo '</td></tr></tbody></table>';
// Get overall aggregation method
$overall = $info->get_aggregation_method();
// Generate markup for criteria statuses
echo '<table class="generalbox boxaligncenter" cellpadding="3"><tbody>';
echo '<tr class="ccheader">';
echo '<th class="c0 header" scope="col">'.get_string('criteriagroup', 'block_completionstatus').'</th>';
echo '<th class="c1 header" scope="col">'.get_string('criteria', 'completion').'</th>';
echo '<th class="c2 header" scope="col">'.get_string('requirement', 'block_completionstatus').'</th>';
echo '<th class="c3 header" scope="col">'.get_string('status').'</th>';
echo '<th class="c4 header" scope="col">'.get_string('complete').'</th>';
echo '<th class="c5 header" scope="col">'.get_string('completiondate', 'report_completion').'</th>';
echo '</tr>';
// Save row data
$rows = array();
global $COMPLETION_CRITERIA_TYPES;
// Loop through course criteria
foreach ($completions as $completion) {
$criteria = $completion->get_criteria();
$complete = $completion->is_complete();
$row = array();
$row['type'] = $criteria->criteriatype;
$row['title'] = $criteria->get_title();
$row['status'] = $completion->get_status();
$row['timecompleted'] = $completion->timecompleted;
$row['details'] = $criteria->get_details($completion);
$rows[] = $row;
}
// Print table
$last_type = '';
$agg_type = false;
foreach ($rows as $row) {
// Criteria group
echo '<td class="c0">';
if ($last_type !== $row['details']['type']) {
$last_type = $row['details']['type'];
echo $last_type;
// Reset agg type
$agg_type = true;
if ($overall == COMPLETION_AGGREGATION_ALL) {
echo get_string('criteriarequiredall', 'completion');
} else {
// Display aggregation type
if ($agg_type) {
$agg = $info->get_aggregation_method($row['type']);
echo '(<i>';
if ($agg == COMPLETION_AGGREGATION_ALL) {
echo strtolower(get_string('all', 'completion'));
} else {
echo strtolower(get_string('any', 'completion'));
}
echo '</i> '.strtolower(get_string('required')).')';
$agg_type = false;
}
echo get_string('criteriarequiredany', 'completion');
}
echo '</td>';
// Criteria title
echo '<td class="c1">';
echo $row['details']['criteria'];
echo '</td>';
echo '</td></tr></tbody></table>';
// Requirement
echo '<td class="c2">';
echo $row['details']['requirement'];
echo '</td>';
// Status
echo '<td class="c3">';
echo $row['details']['status'];
echo '</td>';
// Is complete
echo '<td class="c4">';
echo ($row['status'] === get_string('yes')) ? get_string('yes') : get_string('no');
echo '</td>';
// Completion data
echo '<td class="c5">';
if ($row['timecompleted']) {
echo userdate($row['timecompleted'], '%e %B %G');
} else {
echo '-';
}
echo '</td>';
// Generate markup for criteria statuses
echo '<table class="generalbox logtable boxaligncenter" id="criteriastatus" width="100%"><tbody>';
echo '<tr class="ccheader">';
echo '<th class="c0 header" scope="col">'.get_string('criteriagroup', 'block_completionstatus').'</th>';
echo '<th class="c1 header" scope="col">'.get_string('criteria', 'completion').'</th>';
echo '<th class="c2 header" scope="col">'.get_string('requirement', 'block_completionstatus').'</th>';
echo '<th class="c3 header" scope="col">'.get_string('status').'</th>';
echo '<th class="c4 header" scope="col">'.get_string('complete').'</th>';
echo '<th class="c5 header" scope="col">'.get_string('completiondate', 'report_completion').'</th>';
echo '</tr>';
// Save row data
$rows = array();
// Loop through course criteria
foreach ($completions as $completion) {
$criteria = $completion->get_criteria();
$row = array();
$row['type'] = $criteria->criteriatype;
$row['title'] = $criteria->get_title();
$row['status'] = $completion->get_status();
$row['complete'] = $completion->is_complete();
$row['timecompleted'] = $completion->timecompleted;
$row['details'] = $criteria->get_details($completion);
$rows[] = $row;
}
// Print table
$last_type = '';
$agg_type = false;
$oddeven = 0;
foreach ($rows as $row) {
echo '<tr class="r' . $oddeven . '">';
// Criteria group
echo '<td class="cell c0">';
if ($last_type !== $row['details']['type']) {
$last_type = $row['details']['type'];
echo $last_type;
// Reset agg type
$agg_type = true;
} else {
// Display aggregation type
if ($agg_type) {
$agg = $info->get_aggregation_method($row['type']);
echo '(<i>';
if ($agg == COMPLETION_AGGREGATION_ALL) {
echo strtolower(get_string('aggregateall', 'completion'));
} else {
echo strtolower(get_string('aggregateany', 'completion'));
}
echo '</i> '.strtolower(get_string('required')).')';
$agg_type = false;
}
}
echo '</td>';
// Criteria title
echo '<td class="cell c1">';
echo $row['details']['criteria'];
echo '</td>';
// Requirement
echo '<td class="cell c2">';
echo $row['details']['requirement'];
echo '</td>';
// Status
echo '<td class="cell c3">';
echo $row['details']['status'];
echo '</td>';
// Is complete
echo '<td class="cell c4">';
echo $row['complete'] ? get_string('yes') : get_string('no');
echo '</td>';
// Completion data
echo '<td class="cell c5">';
if ($row['timecompleted']) {
echo userdate($row['timecompleted'], get_string('strftimedate', 'langconfig'));
} else {
echo '-';
}
echo '</td>';
echo '</tr>';
// for row striping
$oddeven = $oddeven ? 0 : 1;
}
echo '</tbody></table>';
}
echo '</tbody></table>';
echo '<div class="buttons">';
$courseurl = new moodle_url("/course/view.php", array('id' => $course->id));
echo $OUTPUT->single_button($courseurl, get_string('returntocourse', 'block_completionstatus'), 'get');
echo '</div>';
echo $OUTPUT->footer();
@@ -6,3 +6,4 @@ $string['criteriagroup'] = 'Criteria group';
$string['firstofsecond'] = '{$a->first} of {$a->second}';
$string['pluginname'] = 'Course completion status';
$string['requirement'] = 'Requirement';
$string['returntocourse'] = 'Return to course';
+20 -4
View File
@@ -164,7 +164,7 @@ M.core_dock.init = function(Y) {
var dock = Y.one('#dock');
if (!dock) {
// Start the construction of the dock
dock = Y.Node.create('<div id="dock" class="'+css.dock+' '+css.dock+'_'+this.cfg.position+'_'+this.cfg.orientation+'"></div>')
dock = Y.Node.create('<div id="dock" role="menubar" class="'+css.dock+' '+css.dock+'_'+this.cfg.position+'_'+this.cfg.orientation+'"></div>')
.append(Y.Node.create('<div class="'+css.buttonscontainer+'"></div>')
.append(Y.Node.create('<div class="'+css.dockeditemcontainer+'"></div>')));
this.nodes.body.append(dock);
@@ -505,7 +505,7 @@ M.core_dock.fixTitleOrientation = function(item, title, text) {
break;
}
if (Y.UA.ie > 7) {
if (Y.UA.ie == 8) {
// IE8 can flip the text via CSS but not handle SVG
title.setContent(text);
title.setAttribute('style', 'writing-mode: tb-rl; filter: flipV flipH;display:inline;');
@@ -863,6 +863,12 @@ M.core_dock.genericblock.prototype = {
return;
}
// Disable the skip anchor when docking
var skipanchor = node.previous();
if (skipanchor.hasClass('skip-block')) {
skipanchor.hide();
}
var blockclass = (function(classes){
var r = /(^|\s)(block_[a-zA-Z0-9_]+)(\s|$)/;
var m = r.exec(classes);
@@ -937,6 +943,12 @@ M.core_dock.genericblock.prototype = {
return_to_block : function(dockitem) {
var placeholder = this.Y.one('#content_placeholder_'+this.id);
// Enable the skip anchor when going back to block mode
var skipanchor = placeholder.previous();
if (skipanchor.hasClass('skip-block')) {
skipanchor.show();
}
if (this.cachedcontentnode.one('.header')) {
this.cachedcontentnode.one('.header').insert(dockitem.contents, 'after');
} else {
@@ -946,7 +958,7 @@ M.core_dock.genericblock.prototype = {
placeholder.replace(this.Y.Node.getDOMNode(this.cachedcontentnode));
this.cachedcontentnode = this.Y.one('#'+this.cachedcontentnode.get('id'));
var commands = this.cachedcontentnode.one('.title .commands');
var commands = dockitem.commands;
if (commands) {
commands.all('.hidepanelicon').remove();
commands.all('.moveto').remove();
@@ -1024,7 +1036,7 @@ M.core_dock.item.prototype = {
var Y = this.Y;
var css = M.core_dock.css;
this.nodes.docktitle = Y.Node.create('<div id="dock_item_'+this.id+'_title" class="'+css.dockedtitle+'"></div>');
this.nodes.docktitle = Y.Node.create('<div id="dock_item_'+this.id+'_title" role="menu" aria-haspopup="true" class="'+css.dockedtitle+'"></div>');
this.nodes.docktitle.append(this.title);
this.nodes.dockitem = Y.Node.create('<div id="dock_item_'+this.id+'" class="'+css.dockeditem+'" tabindex="0"></div>');
this.nodes.dockitem.on('dock:actionkey', this.toggle, this);
@@ -1053,6 +1065,8 @@ M.core_dock.item.prototype = {
this.active = true;
// Add active item class first up
this.nodes.docktitle.addClass(css.activeitem);
// Set aria-exapanded property to true.
this.nodes.docktitle.set('aria-expanded', "true");
this.fire('dockeditem:showcomplete');
M.core_dock.resize();
return true;
@@ -1069,6 +1083,8 @@ M.core_dock.item.prototype = {
this.nodes.docktitle.removeClass(css.activeitem);
// Hide the panel
M.core_dock.getPanel().hide();
// Set aria-exapanded property to false
this.nodes.docktitle.set('aria-expanded', "false");
this.fire('dockeditem:hidecomplete');
},
/**
+19 -3
View File
@@ -24,13 +24,29 @@
*/
function block_html_pluginfile($course, $birecord_or_cm, $context, $filearea, $args, $forcedownload) {
global $SCRIPT;
global $DB, $CFG;
if ($context->contextlevel != CONTEXT_BLOCK) {
send_file_not_found();
}
require_course_login($course);
// If block is in course context, then check if user has capability to access course.
if ($context->get_course_context(false)) {
require_course_login($course);
} else if ($CFG->forcelogin) {
require_login();
} else {
// Get parent context and see if user have proper permission.
$parentcontext = $context->get_parent_context();
if ($parentcontext->contextlevel === CONTEXT_COURSECAT) {
// Check if category is visible and user can view this category.
$category = $DB->get_record('course_categories', array('id' => $parentcontext->instanceid), '*', MUST_EXIST);
if (!$category->visible) {
require_capability('moodle/category:viewhiddencategories', $parentcontext);
}
}
// At this point there is no way to check SYSTEM or USER context, so ignoring it.
}
if ($filearea !== 'content') {
send_file_not_found();
@@ -79,4 +95,4 @@ function block_html_global_db_replace($search, $replace) {
}
}
$instances->close();
}
}
+8 -1
View File
@@ -30,6 +30,11 @@ class block_navigation_renderer extends plugin_renderer_base {
$isexpandable = (empty($expansionlimit) || ($item->type > navigation_node::TYPE_ACTIVITY || $item->type < $expansionlimit) || ($item->contains_active_node() && $item->children->count() > 0));
$isbranch = $isexpandable && ($item->children->count() > 0 || ($item->has_children() && (isloggedin() || $item->type <= navigation_node::TYPE_CATEGORY)));
// Skip elements which have no content and no action - no point in showing them
if (!$isexpandable && empty($item->action)) {
continue;
}
$hasicon = ((!$isbranch || $item->type == navigation_node::TYPE_ACTIVITY || $item->type == navigation_node::TYPE_RESOURCE) && $item->icon instanceof renderable);
if ($hasicon) {
@@ -69,18 +74,20 @@ class block_navigation_renderer extends plugin_renderer_base {
// this applies to the li item which contains all child lists too
$liclasses = array($item->get_css_type(), 'depth_'.$depth);
$liexpandable = array();
if ($item->has_children() && (!$item->forceopen || $item->collapse)) {
$liclasses[] = 'collapsed';
}
if ($isbranch) {
$liclasses[] = 'contains_branch';
$liexpandable = array('aria-expanded' => in_array('collapsed', $liclasses) ? "false" : "true");
} else if ($hasicon) {
$liclasses[] = 'item_with_icon';
}
if ($item->isactive === true) {
$liclasses[] = 'current_branch';
}
$liattr = array('class'=>join(' ',$liclasses));
$liattr = array('class' => join(' ',$liclasses)) + $liexpandable;
// class attribute on the div item which only contains the item content
$divclasses = array('tree_item');
if ($isbranch) {
+6
View File
@@ -162,16 +162,20 @@ TREE.prototype = {
switch (e.action) {
case 'expand' :
target.removeClass('collapsed');
target.set('aria-expanded', true);
break;
case 'collapse' :
target.addClass('collapsed');
target.set('aria-expanded', false);
break;
default :
target.toggleClass('collapsed');
target.set('aria-expanded', !target.hasClass('collapsed'));
}
e.halt();
} else {
target.toggleClass('collapsed');
target.set('aria-expanded', !target.hasClass('collapsed'));
}
}
@@ -180,6 +184,7 @@ TREE.prototype = {
target.siblings('li').each(function(){
if (this.get('id') !== target.get('id') && !this.hasClass('collapsed')) {
this.addClass('collapsed');
this.set('aria-expanded', false);
}
});
}
@@ -287,6 +292,7 @@ BRANCH.prototype = {
}
if (isbranch) {
branchli.addClass('collapsed').addClass('contains_branch');
branchli.set('aria-expanded', false);
branchp.addClass('branch');
}
+1 -1
View File
@@ -106,7 +106,7 @@ class block_news_items extends block_base {
$tooltiptext = get_string('rsssubscriberssposts','forum');
}
if (!isloggedin()) {
$userid = 0;
$userid = $CFG->siteguest;
} else {
$userid = $USER->id;
}
+17 -7
View File
@@ -31,7 +31,8 @@ class block_online_users extends block_base {
if (isset($CFG->block_online_users_timetosee)) {
$timetoshowusers = $CFG->block_online_users_timetosee * 60;
}
$timefrom = 100 * floor((time()-$timetoshowusers) / 100); // Round to nearest 100 seconds for better query cache
$now = time();
$timefrom = 100 * floor(($now - $timetoshowusers) / 100); // Round to nearest 100 seconds for better query cache
//Calculate if we are in separate groups
$isseparategroups = ($this->page->course->groupmode == SEPARATEGROUPS
@@ -53,18 +54,23 @@ class block_online_users extends block_base {
}
$userfields = user_picture::fields('u', array('username'));
$params['now'] = $now;
$params['timefrom'] = $timefrom;
if ($this->page->course->id == SITEID or $this->page->context->contextlevel < CONTEXT_COURSE) { // Site-level
$sql = "SELECT $userfields, MAX(u.lastaccess) AS lastaccess
FROM {user} u $groupmembers
WHERE u.lastaccess > $timefrom
WHERE u.lastaccess > :timefrom
AND u.lastaccess <= :now
AND u.deleted = 0
$groupselect
GROUP BY $userfields
ORDER BY lastaccess DESC ";
$csql = "SELECT COUNT(u.id)
FROM {user} u $groupmembers
WHERE u.lastaccess > $timefrom
WHERE u.lastaccess > :timefrom
AND u.lastaccess <= :now
AND u.deleted = 0
$groupselect";
} else {
@@ -77,9 +83,11 @@ class block_online_users extends block_base {
$sql = "SELECT $userfields, MAX(ul.timeaccess) AS lastaccess
FROM {user_lastaccess} ul $groupmembers, {user} u
JOIN ($esqljoin) euj ON euj.id = u.id
WHERE ul.timeaccess > $timefrom
WHERE ul.timeaccess > :timefrom
AND u.id = ul.userid
AND ul.courseid = :courseid
AND ul.timeaccess <= :now
AND u.deleted = 0
$groupselect
GROUP BY $userfields
ORDER BY lastaccess DESC";
@@ -87,9 +95,11 @@ class block_online_users extends block_base {
$csql = "SELECT COUNT(u.id)
FROM {user_lastaccess} ul $groupmembers, {user} u
JOIN ($esqljoin) euj ON euj.id = u.id
WHERE ul.timeaccess > $timefrom
WHERE ul.timeaccess > :timefrom
AND u.id = ul.userid
AND ul.courseid = :courseid
AND ul.timeaccess <= :now
AND u.deleted = 0
$groupselect";
$params['courseid'] = $this->page->course->id;
@@ -138,7 +148,7 @@ class block_online_users extends block_base {
}
foreach ($users as $user) {
$this->content->text .= '<li class="listentry">';
$timeago = format_time(time() - $user->lastaccess); //bruno to calculate correctly on frontpage
$timeago = format_time($now - $user->lastaccess); //bruno to calculate correctly on frontpage
if (isguestuser($user)) {
$this->content->text .= '<div class="user">'.$OUTPUT->user_picture($user, array('size'=>16));
+1 -1
View File
@@ -239,7 +239,7 @@
$r = html_writer::start_tag('li');
$r.= html_writer::start_tag('div',array('class'=>'link'));
$r.= html_writer::link(clean_param($link,PARAM_URL), s($title), array('onclick'=>'this.target="_blank"'));
$r.= html_writer::link($link, s($title), array('onclick'=>'this.target="_blank"'));
$r.= html_writer::end_tag('div');
if($this->config->display_description && !empty($description)){
@@ -27,6 +27,7 @@ class block_search_forums extends block_base {
$this->content->text = '<div class="searchform">';
$this->content->text .= '<form action="'.$CFG->wwwroot.'/mod/forum/search.php" style="display:inline"><fieldset class="invisiblefieldset">';
$this->content->text .= '<legend class="accesshide">'.$strsearch.'</legend>';
$this->content->text .= '<input name="id" type="hidden" value="'.$this->page->course->id.'" />'; // course
$this->content->text .= '<label class="accesshide" for="searchform_search">'.$strsearch.'</label>'.
'<input id="searchform_search" name="search" type="text" size="16" />';
+2 -2
View File
@@ -66,7 +66,7 @@ for($i = 1; $i < 3; $i++){
?>
<tr valign="top">
<td align="right">
<?php print_string('numsections'.$i, 'block_section_links'); ?>:
<label for="menunumsections<?php echo $i; ?>"><?php print_string('numsections'.$i, 'block_section_links'); ?>:</label>
</td>
<td>
<?php choose_from_menu($numberofsections, 'numsections'.$i, $selected[$i][0]); ?>
@@ -77,7 +77,7 @@ for($i = 1; $i < 3; $i++){
</tr>
<tr valign="top">
<td align="right">
<?php print_string('incby'.$i, 'block_section_links'); ?>:
<label for="menuincby<?php echo $i;?>"><?php print_string('incby'.$i, 'block_section_links'); ?>:</label>
</td>
<td>
<?php choose_from_menu($increments, 'incby'.$i, $selected[$i][1]); ?>
+3 -1
View File
@@ -40,18 +40,20 @@ class block_settings_renderer extends plugin_renderer_base {
// this applies to the li item which contains all child lists too
$liclasses = array($item->get_css_type());
$liexpandable = array();
if (!$item->forceopen || (!$item->forceopen && $item->collapse) || ($item->children->count()==0 && $item->nodetype==navigation_node::NODETYPE_BRANCH)) {
$liclasses[] = 'collapsed';
}
if ($isbranch) {
$liclasses[] = 'contains_branch';
$liexpandable = array('aria-expanded' => in_array('collapsed', $liclasses) ? "false" : "true");
} else if ($hasicon) {
$liclasses[] = 'item_with_icon';
}
if ($item->isactive === true) {
$liclasses[] = 'current_branch';
}
$liattr = array('class'=>join(' ',$liclasses));
$liattr = array('class' => join(' ',$liclasses)) + $liexpandable;
// class attribute on the div item which only contains the item content
$divclasses = array('tree_item');
if ($isbranch) {
+2 -2
View File
@@ -225,7 +225,6 @@ class block_tags extends block_base {
if ($officialtags) { $this->content->text .= $officialtagscontent; }
if ($coursetags) { $this->content->text .= $coursetagscontent; }
if ($commtags) { $this->content->text .= $commtagscontent; }
// add the input form section (allowing a user to tag the current course) and navigation, or loggin message
if ($loggedin) {
// only show the input form on course pages for those allowed (or not barred)
@@ -250,7 +249,8 @@ class block_tags extends block_base {
<div class="coursetag_form_wrapper">
<div class="coursetag_form_positioner">
<div class="coursetag_form_input1">
<input type="text" name="coursetag_sug_keyword" class="coursetag_form_input1a" disabled="disabled" />
<label class="accesshide" for="coursetag_sug_keyword">$tagthisunit</label>
<input type="text" name="coursetag_sug_keyword" id="coursetag_sug_keyword" class="coursetag_form_input1a" disabled="disabled" />
</div>
<div class="coursetag_form_input2">
<input type="text" name="coursetag_new_tag" id="coursetag_new_tag" class="coursetag_form_input2a"
+1
View File
@@ -82,6 +82,7 @@ $string['pluginname'] = 'Tags';
$string['select'] = 'Select...';
$string['showcoursetags'] = 'Show course tags';
$string['showcoursetagsdef'] = 'Display the course tagging features in the tags block, allowing students to tag courses.';
$string['suggestedtagthisunit'] = 'Suggested tag to this course:';
$string['tags'] = 'tags';
$string['tagthisunit'] = 'Tag this course:';
$string['tagunits'] = 'to tag your favourite courses';
+3 -1
View File
@@ -38,11 +38,12 @@ class blog_edit_form extends moodleform {
$mform->addElement('header', 'general', get_string('general', 'form'));
$mform->addElement('text', 'subject', get_string('entrytitle', 'blog'), 'size="60"');
$mform->addElement('text', 'subject', get_string('entrytitle', 'blog'), array('size' => 60, 'maxlength' => 128));
$mform->addElement('editor', 'summary_editor', get_string('entrybody', 'blog'), null, $summaryoptions);
$mform->setType('subject', PARAM_TEXT);
$mform->addRule('subject', get_string('emptytitle', 'blog'), 'required', null, 'client');
$mform->addRule('subject', get_string('maximumchars', '', 128), 'maxlength', 128, 'client');
$mform->setType('summary_editor', PARAM_RAW);
$mform->addRule('summary_editor', get_string('emptybody', 'blog'), 'required', null, 'client');
@@ -100,6 +101,7 @@ class blog_edit_form extends moodleform {
$a = new stdClass();
$a->modtype = $DB->get_field('modules', 'name', array('id' => $cm->module));
$a->modname = $DB->get_field($a->modtype, 'name', array('id' => $cm->instance));
$modid = $context->instanceid;
}
$mform->addElement('header', 'assochdr', get_string('associations', 'blog'));
+9
View File
@@ -44,7 +44,16 @@ $message = null;
if ($delete && confirm_sesskey()) {
$externalbloguserid = $DB->get_field('blog_external', 'userid', array('id' => $delete));
if ($externalbloguserid == $USER->id) {
// Delete the external blog
$DB->delete_records('blog_external', array('id' => $delete));
// Delete the external blog's posts
$deletewhere = 'module = :module
AND userid = :userid
AND ' . $DB->sql_isnotempty('post', 'uniquehash', false, false) . '
AND ' . $DB->sql_compare_text('content') . ' = ' . $DB->sql_compare_text(':delete');
$DB->delete_records_select('post', $deletewhere, array('module' => 'blog_external', 'userid' => $USER->id, 'delete' => $delete));
$message = get_string('externalblogdeleted', 'blog');
}
}
+1 -1
View File
@@ -143,7 +143,7 @@ if (!empty($groupid)) {
}
if (!$course = $DB->get_record('course', array('id'=>$group->courseid))) {
print_error(get_string('invalidcourseid', 'blog'));
print_error('invalidcourseid');
}
$coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
+7 -4
View File
@@ -611,11 +611,14 @@ function blog_get_options_for_module($module, $user=null) {
$canparticipate = (is_enrolled($modcontext) or is_viewing($modcontext));
if (has_capability('moodle/blog:view', $modcontext)) {
// Save correct module name for later usage.
$modulename = get_string('modulename', $module->modname);
// We can view!
if ($CFG->bloglevel >= BLOG_SITE_LEVEL) {
// View all entries about this module
$a = new stdClass;
$a->type = $module->modname;
$a->type = $modulename;
$options['moduleview'] = array(
'string' => get_string('viewallmodentries', 'blog', $a),
'link' => new moodle_url('/blog/index.php', array('modid'=>$module->id))
@@ -623,13 +626,13 @@ function blog_get_options_for_module($module, $user=null) {
}
// View MY entries about this module
$options['moduleviewmine'] = array(
'string' => get_string('viewmyentriesaboutmodule', 'blog', $module->modname),
'string' => get_string('viewmyentriesaboutmodule', 'blog', $modulename),
'link' => new moodle_url('/blog/index.php', array('modid'=>$module->id, 'userid'=>$USER->id))
);
if (!empty($user) && ($CFG->bloglevel >= BLOG_SITE_LEVEL)) {
// View the given users entries about this module
$a = new stdClass;
$a->mod = $module->modname;
$a->mod = $modulename;
$a->user = fullname($user);
$options['moduleviewuser'] = array(
'string' => get_string('blogentriesbyuseraboutmodule', 'blog', $a),
@@ -641,7 +644,7 @@ function blog_get_options_for_module($module, $user=null) {
if (has_capability('moodle/blog:create', $sitecontext) and $canparticipate) {
// The user can blog about this module
$options['moduleadd'] = array(
'string' => get_string('blogaboutthismodule', 'blog', $module->modname),
'string' => get_string('blogaboutthismodule', 'blog', $modulename),
'link' => new moodle_url('/blog/edit.php', array('action'=>'add', 'modid'=>$module->id))
);
}
+2 -3
View File
@@ -405,11 +405,10 @@ class blog_entry {
* @return void
*/
public function delete() {
global $DB, $USER;
$returnurl = '';
global $DB;
$this->delete_attachments();
$this->remove_associations();
$DB->delete_records('post', array('id' => $this->id));
tag_set('post', $this->id, array());
+1 -1
View File
@@ -123,7 +123,7 @@ echo $OUTPUT->box_end();
$event->time = calendar_format_event_time($event, time(), null, false);
$renderer = $PAGE->get_renderer('core_calendar');
echo $renderer->start_layout();
echo $renderer->event($event);
echo $renderer->event($event, false);
echo $renderer->complete_layout();
echo $OUTPUT->box_end();
+1 -1
View File
@@ -123,10 +123,10 @@ if ($eventid !== 0) {
$event = new stdClass();
$event->action = $action;
$event->course = $courseid;
$event->courseid = $courseid;
$event->timeduration = 0;
if ($formoptions->eventtypes->courses) {
if (!$issite) {
$event->courseid = $courseid;
$event->eventtype = 'course';
} else {
unset($formoptions->eventtypes->courses);
+1
View File
@@ -1485,6 +1485,7 @@ function calendar_print_month_selector($name, $selected) {
for ($i=1; $i<=12; $i++) {
$months[$i] = userdate(gmmktime(12, 0, 0, $i, 15, 2000), '%B');
}
echo html_writer::label(get_string('months'), 'menu'. $name, false, array('class' => 'accesshide'));
echo html_writer::select($months, $name, $selected, false);
}
+3 -1
View File
@@ -710,7 +710,9 @@ class core_calendar_renderer extends plugin_renderer_base {
$select = new single_select(new moodle_url(CALENDAR_URL.'set.php', array('return' => base64_encode($returnurl->out(false)), 'var' => 'setcourse', 'sesskey'=>sesskey())), 'id', $courseoptions, $selected, null);
$select->class = 'cal_courses_flt';
if ($label !== null) {
$select->label = $label;
$select->set_label($label);
} else {
$select->set_label(get_string('listofcourses'), array('class' => 'accesshide'));
}
return $this->output->render($select);
}
+2
View File
@@ -24,6 +24,8 @@ YUI.add('moodle-calendar-eventmanager', function(Y) {
this.publish('hideevent');
td.on('mouseenter', this.startShow, this);
td.on('mouseleave', this.startHide, this);
td.on('focus', this.startShow, this);
td.on('blur', this.startHide, this);
return true;
},
initPanel : function() {
+2 -2
View File
@@ -126,7 +126,7 @@ function cohort_delete_category($category) {
}
/**
* Remove cohort member
* Add cohort member
* @param int $cohortid
* @param int $userid
* @return void
@@ -143,7 +143,7 @@ function cohort_add_member($cohortid, $userid) {
}
/**
* Add cohort member
* Remove cohort member
* @param int $cohortid
* @param int $userid
* @return void
+1 -1
View File
@@ -89,7 +89,7 @@ class comment_manager {
*/
private function setup_course($courseid) {
global $PAGE, $DB;
if (!empty($this->course)) {
if (!empty($this->course) && $this->course->id == $courseid) {
// already set, stop
return;
}
+14 -2
View File
@@ -27,10 +27,10 @@
require_once("../config.php");
require_once($CFG->dirroot.'/course/lib.php');
require_once($CFG->libdir.'/textlib.class.php');
$id = required_param('id', PARAM_INT); // Category id
$page = optional_param('page', 0, PARAM_INT); // which page to show
$perpage = optional_param('perpage', $CFG->coursesperpage, PARAM_INT); // how many per page
$categoryedit = optional_param('categoryedit', -1, PARAM_BOOL);
$hide = optional_param('hide', 0, PARAM_INT);
$show = optional_param('show', 0, PARAM_INT);
@@ -40,6 +40,16 @@ $moveto = optional_param('moveto', 0, PARAM_INT);
$resort = optional_param('resort', 0, PARAM_BOOL);
$sesskey = optional_param('sesskey', '', PARAM_RAW);
// MDL-27824 - This is a temporary fix until we have the proper
// way to check/initialize $CFG value.
// @todo MDL-35138 remove this temporary solution
if (!empty($CFG->coursesperpage)) {
$defaultperpage = $CFG->coursesperpage;
} else {
$defaultperpage = 20;
}
$perpage = optional_param('perpage', $defaultperpage, PARAM_INT); // how many per page
if (empty($id)) {
print_error("unknowcategory");
}
@@ -75,7 +85,8 @@ $sesskeyprovided = !empty($sesskey) && confirm_sesskey($sesskey);
// Process any category actions.
if ($canmanage && $resort && $sesskeyprovided) {
// Resort the category if requested
if ($courses = get_courses($category->id, "fullname ASC", 'c.id,c.fullname,c.sortorder')) {
if ($courses = get_courses($category->id, '', 'c.id,c.fullname,c.sortorder')) {
collatorlib::asort_objects_by_property($courses, 'fullname');
$i = 1;
foreach ($courses as $course) {
$DB->set_field('course', 'sortorder', $category->sortorder+$i, array('id'=>$course->id));
@@ -420,6 +431,7 @@ if (!$courses) {
make_categories_list($movetocategories, $notused, 'moodle/category:manage');
$movetocategories[$category->id] = get_string('moveselectedcoursesto');
echo '<tr><td colspan="3" align="right">';
echo html_writer::label(get_string('moveselectedcoursesto'), 'movetoid', false, array('class' => 'accesshide'));
echo html_writer::select($movetocategories, 'moveto', $category->id, null, array('id'=>'movetoid'));
$PAGE->requires->js_init_call('M.util.init_select_autosubmit', array('movecourses', 'movetoid', false));
echo '<input type="hidden" name="id" value="'.$category->id.'" />';
+2 -2
View File
@@ -18,11 +18,11 @@
$strcategories = get_string("categories");
if (! $course = $DB->get_record("course", array("id"=>$id))) {
print_error("invalidcourseid", 'error', '', $id);
print_error("invalidcourseid");
}
if ($site->id == $course->id) {
// can not delete frontpage!
print_error("invalidcourseid", 'error', '', $id);
print_error("invalidcourseid");
}
$coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
+7
View File
@@ -85,6 +85,13 @@ if (!empty($course)) {
//editor should respect category context if course context is not set.
$editoroptions['context'] = $catcontext;
$course = file_prepare_standard_editor($course, 'summary', $editoroptions, null, 'course', 'summary', null);
// Set up the default restricted module list
if (!empty($CFG->restrictbydefault)) {
if (!empty($CFG->defaultallowedmodules)) {
$course->allowedmods = explode(',', $CFG->defaultallowedmodules);
}
}
}
// first create the form
+6 -2
View File
@@ -150,7 +150,11 @@ class course_edit_form extends moodleform {
$mform->addHelpButton('showreports', 'showreports');
$mform->setDefault('showreports', $courseconfig->showreports);
$choices = get_max_upload_sizes($CFG->maxbytes);
// Handle non-existing $course->maxbytes on course creation.
$coursemaxbytes = !isset($course->maxbytes) ? null : $course->maxbytes;
// Let's prepare the maxbytes popup.
$choices = get_max_upload_sizes($CFG->maxbytes, 0, 0, $coursemaxbytes);
$mform->addElement('select', 'maxbytes', get_string('maximumupload'), $choices);
$mform->addHelpButton('maxbytes', 'maximumupload');
$mform->setDefault('maxbytes', $courseconfig->maxbytes);
@@ -223,7 +227,7 @@ class course_edit_form extends moodleform {
if (!empty($course->id)) {
$mform->setConstant('visible', $course->visible);
} else {
$mform->setConstant('visible', $category->visible);
$mform->setConstant('visible', $courseconfig->visible);
}
}
+5 -5
View File
@@ -267,7 +267,7 @@ class core_course_external extends external_api {
array('options' => $options));
//retrieve courses
if (!key_exists('ids', $params['options'])
if (!array_key_exists('ids', $params['options'])
or empty($params['options']['ids'])) {
$courses = $DB->get_records('course');
} else {
@@ -504,13 +504,13 @@ class core_course_external extends external_api {
require_capability('moodle/course:create', $context);
// Make sure lang is valid
if (key_exists('lang', $course) and empty($availablelangs[$course['lang']])) {
if (array_key_exists('lang', $course) and empty($availablelangs[$course['lang']])) {
throw new moodle_exception(
get_string('errorinvalidparam', 'webservice', 'lang'));
}
// Make sure theme is valid
if (key_exists('forcetheme', $course)) {
if (array_key_exists('forcetheme', $course)) {
if (!empty($CFG->allowcoursethemes)) {
if (empty($availablethemes[$course['forcetheme']])) {
throw new moodle_exception(
@@ -530,10 +530,10 @@ class core_course_external extends external_api {
//set default value for completion
$courseconfig = get_config('moodlecourse');
if (completion_info::is_enabled_for_site()) {
if (!key_exists('enablecompletion', $course)) {
if (!array_key_exists('enablecompletion', $course)) {
$course['enablecompletion'] = $courseconfig->enablecompletion;
}
if (!key_exists('completionstartonenrol', $course)) {
if (!array_key_exists('completionstartonenrol', $course)) {
$course['completionstartonenrol'] = $courseconfig->completionstartonenrol;
}
} else {
+25 -21
View File
@@ -186,29 +186,33 @@ while ($section <= $course->numsections) {
'<img src="'.$OUTPUT->pix_url('i/one') . '" class="icon" alt="'.$strshowonlytopic.'" /></a><br />';
}
if ($PAGE->user_is_editing() && has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id))) {
if ($course->marker == $section) { // Show the "light globe" on/off
echo '<a href="view.php?id='.$course->id.'&amp;marker=0&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strmarkedthistopic.'">'.'<img src="'.$OUTPUT->pix_url('i/marked') . '" alt="'.$strmarkedthistopic.'" class="icon"/></a><br />';
} else {
echo '<a href="view.php?id='.$course->id.'&amp;marker='.$section.'&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strmarkthistopic.'">'.'<img src="'.$OUTPUT->pix_url('i/marker') . '" alt="'.$strmarkthistopic.'" class="icon"/></a><br />';
$coursecontext = context_course::instance($course->id);
if ($PAGE->user_is_editing()) {
if (has_capability('moodle/course:setcurrentsection', $coursecontext)) {
if ($course->marker == $section) { // Show the "light globe" on/off
echo '<a href="view.php?id='.$course->id.'&amp;marker=0&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strmarkedthistopic.'">'.'<img src="'.$OUTPUT->pix_url('i/marked') . '" alt="'.$strmarkedthistopic.'" class="icon"/></a><br />';
} else {
echo '<a href="view.php?id='.$course->id.'&amp;marker='.$section.'&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strmarkthistopic.'">'.'<img src="'.$OUTPUT->pix_url('i/marker') . '" alt="'.$strmarkthistopic.'" class="icon"/></a><br />';
}
}
if ($thissection->visible) { // Show the hide/show eye
echo '<a href="view.php?id='.$course->id.'&amp;hide='.$section.'&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strtopichide.'">'.
'<img src="'.$OUTPUT->pix_url('i/hide') . '" class="icon hide" alt="'.$strtopichide.'" /></a><br />';
} else {
echo '<a href="view.php?id='.$course->id.'&amp;show='.$section.'&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strtopicshow.'">'.
'<img src="'.$OUTPUT->pix_url('i/show') . '" class="icon hide" alt="'.$strtopicshow.'" /></a><br />';
if (has_capability('moodle/course:sectionvisibility', $coursecontext)) {
if ($thissection->visible) { // Show the hide/show eye
echo '<a href="view.php?id='.$course->id.'&amp;hide='.$section.'&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strtopichide.'">'.
'<img src="'.$OUTPUT->pix_url('i/hide') . '" class="icon hide" alt="'.$strtopichide.'" /></a><br />';
} else {
echo '<a href="view.php?id='.$course->id.'&amp;show='.$section.'&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strtopicshow.'">'.
'<img src="'.$OUTPUT->pix_url('i/show') . '" class="icon hide" alt="'.$strtopicshow.'" /></a><br />';
}
}
if ($section > 1) { // Add a arrow to move section up
echo '<a href="view.php?id='.$course->id.'&amp;random='.rand(1,10000).'&amp;section='.$section.'&amp;move=-1&amp;sesskey='.sesskey().'#section-'.($section-1).'" title="'.$strmoveup.'">'.
'<img src="'.$OUTPUT->pix_url('t/up') . '" class="icon up" alt="'.$strmoveup.'" /></a><br />';
}
if ($section < $course->numsections) { // Add a arrow to move section down
echo '<a href="view.php?id='.$course->id.'&amp;random='.rand(1,10000).'&amp;section='.$section.'&amp;move=1&amp;sesskey='.sesskey().'#section-'.($section+1).'" title="'.$strmovedown.'">'.
'<img src="'.$OUTPUT->pix_url('t/down') . '" class="icon down" alt="'.$strmovedown.'" /></a><br />';
if (has_capability('moodle/course:update', $coursecontext)) {
if ($section > 1) { // Add a arrow to move section up
echo '<a href="view.php?id='.$course->id.'&amp;random='.rand(1,10000).'&amp;section='.$section.'&amp;move=-1&amp;sesskey='.sesskey().'#section-'.($section-1).'" title="'.$strmoveup.'">'.
'<img src="'.$OUTPUT->pix_url('t/up') . '" class="icon up" alt="'.$strmoveup.'" /></a><br />';
}
if ($section < $course->numsections) { // Add a arrow to move section down
echo '<a href="view.php?id='.$course->id.'&amp;random='.rand(1,10000).'&amp;section='.$section.'&amp;move=1&amp;sesskey='.sesskey().'#section-'.($section+1).'" title="'.$strmovedown.'">'.
'<img src="'.$OUTPUT->pix_url('t/down') . '" class="icon down" alt="'.$strmovedown.'" /></a><br />';
}
}
}
echo '</div>';
+19 -15
View File
@@ -192,22 +192,26 @@ defined('MOODLE_INTERNAL') || die();
'<img src="'.$OUTPUT->pix_url('i/one') . '" class="icon wkone" alt="'.$strshowonlyweek.'" /></a><br />';
}
if ($PAGE->user_is_editing() && has_capability('moodle/course:update', get_context_instance(CONTEXT_COURSE, $course->id))) {
if ($thissection->visible) { // Show the hide/show eye
echo '<a href="view.php?id='.$course->id.'&amp;hide='.$section.'&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strweekhide.'">'.
'<img src="'.$OUTPUT->pix_url('i/hide') . '" class="icon hide" alt="'.$strweekhide.'" /></a><br />';
} else {
echo '<a href="view.php?id='.$course->id.'&amp;show='.$section.'&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strweekshow.'">'.
'<img src="'.$OUTPUT->pix_url('i/show') . '" class="icon hide" alt="'.$strweekshow.'" /></a><br />';
$coursecontext = context_course::instance($course->id);
if ($PAGE->user_is_editing()) {
if (has_capability('moodle/course:sectionvisibility', $coursecontext)) {
if ($thissection->visible) { // Show the hide/show eye
echo '<a href="view.php?id='.$course->id.'&amp;hide='.$section.'&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strweekhide.'">'.
'<img src="'.$OUTPUT->pix_url('i/hide') . '" class="icon hide" alt="'.$strweekhide.'" /></a><br />';
} else {
echo '<a href="view.php?id='.$course->id.'&amp;show='.$section.'&amp;sesskey='.sesskey().'#section-'.$section.'" title="'.$strweekshow.'">'.
'<img src="'.$OUTPUT->pix_url('i/show') . '" class="icon hide" alt="'.$strweekshow.'" /></a><br />';
}
}
if ($section > 1) { // Add a arrow to move section up
echo '<a href="view.php?id='.$course->id.'&amp;random='.rand(1,10000).'&amp;section='.$section.'&amp;move=-1&amp;sesskey='.sesskey().'#section-'.($section-1).'" title="'.$strmoveup.'">'.
'<img src="'.$OUTPUT->pix_url('t/up') . '" class="icon up" alt="'.$strmoveup.'" /></a><br />';
}
if ($section < $course->numsections) { // Add a arrow to move section down
echo '<a href="view.php?id='.$course->id.'&amp;random='.rand(1,10000).'&amp;section='.$section.'&amp;move=1&amp;sesskey='.sesskey().'#section-'.($section+1).'" title="'.$strmovedown.'">'.
'<img src="'.$OUTPUT->pix_url('t/down') . '" class="icon down" alt="'.$strmovedown.'" /></a><br />';
if (has_capability('moodle/course:update', $coursecontext)) {
if ($section > 1) { // Add a arrow to move section up
echo '<a href="view.php?id='.$course->id.'&amp;random='.rand(1,10000).'&amp;section='.$section.'&amp;move=-1&amp;sesskey='.sesskey().'#section-'.($section-1).'" title="'.$strmoveup.'">'.
'<img src="'.$OUTPUT->pix_url('t/up') . '" class="icon up" alt="'.$strmoveup.'" /></a><br />';
}
if ($section < $course->numsections) { // Add a arrow to move section down
echo '<a href="view.php?id='.$course->id.'&amp;random='.rand(1,10000).'&amp;section='.$section.'&amp;move=1&amp;sesskey='.sesskey().'#section-'.($section+1).'" title="'.$strmovedown.'">'.
'<img src="'.$OUTPUT->pix_url('t/down') . '" class="icon down" alt="'.$strmovedown.'" /></a><br />';
}
}
}
echo '</div>';
+1
View File
@@ -369,6 +369,7 @@ function print_category_edit($category, $displaylist, $parentslist, $depth=-1, $
}
$popupurl = new moodle_url("index.php?move=$category->id&sesskey=".sesskey());
$select = new single_select($popupurl, 'moveto', $tempdisplaylist, $category->parent, null, "moveform$category->id");
$select->set_label(get_string('frontpagecategorynames'), array('class' => 'accesshide'));
echo $OUTPUT->render($select);
}
echo '</td>';
+24 -38
View File
@@ -1591,6 +1591,11 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
if ($accessiblebutdim) {
$linkclasses .= ' dimmed';
$textclasses .= ' dimmed_text';
// If mod is visible and is dimmed because of condition then handle it nicely with JS.
if ($mod->visible) {
$linkclasses .= ' conditionalhidden';
$textclasses .= ' conditionalhidden';
}
$accesstext = '<span class="accesshide">'.
get_string('hiddenfromstudents').': </span>';
} else {
@@ -1617,8 +1622,7 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
// Display link itself
echo '<a ' . $linkcss . $mod->extra . $onclick .
' href="' . $url . '"><img src="' . $mod->get_icon_url() .
'" class="activityicon" alt="' .
$modulename . '" /> ' .
'" class="activityicon" alt="' . $modulename . '" /> ' .
$accesstext . '<span class="instancename">' .
$instancename . $altname . '</span></a>';
@@ -1655,9 +1659,7 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
// Display greyed-out text of link
echo '<div ' . $textcss . $mod->extra .
' >' . '<img src="' . $mod->get_icon_url() .
'" class="activityicon" alt="' .
$modulename .
'" /> <span>'. $instancename . $altname .
'" class="activityicon" alt="" /> <span>'. $instancename . $altname .
'</span></div>';
// Do not display content after link when it is greyed out like this.
@@ -2185,22 +2187,6 @@ function make_categories_options() {
return $cats;
}
/**
* Gets the name of a course to be displayed when showing a list of courses.
* By default this is just $course->fullname but user can configure it. The
* result of this function should be passed through print_string.
* @param object $course Moodle course object
* @return string Display name of course (either fullname or short + fullname)
*/
function get_course_display_name_for_list($course) {
global $CFG;
if (!empty($CFG->courselistshortnames)) {
return $course->shortname . ' ' .$course->fullname;
} else {
return $course->fullname;
}
}
/**
* Prints the category info in indented fashion
* This function is only used by print_whole_category_list() above
@@ -3163,7 +3149,7 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if ($indent > 0) {
$actions[] = new action_link(
new moodle_url($baseurl, array('id' => $mod->id, 'indent' => '-1')),
new pix_icon($leftarrow, $str->moveleft, 'moodle', array('class' => 'iconsmall')),
new pix_icon($leftarrow, $str->moveleft, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_moveleft', 'title' => $str->moveleft)
);
@@ -3171,7 +3157,7 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if ($indent >= 0) {
$actions[] = new action_link(
new moodle_url($baseurl, array('id' => $mod->id, 'indent' => '1')),
new pix_icon($rightarrow, $str->moveright, 'moodle', array('class' => 'iconsmall')),
new pix_icon($rightarrow, $str->moveright, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_moveright', 'title' => $str->moveright)
);
@@ -3183,20 +3169,20 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if ($moveselect) {
$actions[] = new action_link(
new moodle_url($baseurl, array('copy' => $mod->id)),
new pix_icon('t/move', $str->move, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/move', $str->move, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_move', 'title' => $str->move)
);
} else {
$actions[] = new action_link(
new moodle_url($baseurl, array('id' => $mod->id, 'move' => '-1')),
new pix_icon('t/up', $str->moveup, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/up', $str->moveup, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_moveup', 'title' => $str->moveup)
);
$actions[] = new action_link(
new moodle_url($baseurl, array('id' => $mod->id, 'move' => '1')),
new pix_icon('t/down', $str->movedown, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/down', $str->movedown, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_movedown', 'title' => $str->movedown)
);
@@ -3207,17 +3193,17 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if ($hasmanageactivities) {
$actions[] = new action_link(
new moodle_url($baseurl, array('update' => $mod->id)),
new pix_icon('t/edit', $str->update, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/edit', $str->update, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_update', 'title' => $str->update)
);
}
// Duplicate (require both target import caps to be able to duplicate, see modduplicate.php)
if (has_all_capabilities($dupecaps, $coursecontext)) {
// Duplicate (require both target import caps to be able to duplicate and backup2 support, see modduplicate.php)
if (has_all_capabilities($dupecaps, $coursecontext) && plugin_supports('mod', $mod->modname, FEATURE_BACKUP_MOODLE2)) {
$actions[] = new action_link(
new moodle_url($baseurl, array('duplicate' => $mod->id)),
new pix_icon('t/copy', $str->duplicate, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/copy', $str->duplicate, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_duplicate', 'title' => $str->duplicate)
);
@@ -3227,7 +3213,7 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if ($hasmanageactivities) {
$actions[] = new action_link(
new moodle_url($baseurl, array('delete' => $mod->id)),
new pix_icon('t/delete', $str->delete, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/delete', $str->delete, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_delete', 'title' => $str->delete)
);
@@ -3238,14 +3224,14 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if ($mod->visible) {
$actions[] = new action_link(
new moodle_url($baseurl, array('hide' => $mod->id)),
new pix_icon('t/hide', $str->hide, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/hide', $str->hide, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_hide', 'title' => $str->hide)
);
} else {
$actions[] = new action_link(
new moodle_url($baseurl, array('show' => $mod->id)),
new pix_icon('t/show', $str->show, 'moodle', array('class' => 'iconsmall')),
new pix_icon('t/show', $str->show, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_show', 'title' => $str->show)
);
@@ -3276,7 +3262,7 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if ($mod->groupmodelink) {
$actions[] = new action_link(
new moodle_url($baseurl, array('id' => $mod->id, 'groupmode' => $groupmode)),
new pix_icon($groupimage, $grouptitle, 'moodle', array('class' => 'iconsmall')),
new pix_icon($groupimage, $grouptitle, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => $groupclass, 'title' => $grouptitle)
);
@@ -3289,7 +3275,7 @@ function make_editing_buttons(stdClass $mod, $absolute_ignored = true, $movesele
if (has_capability('moodle/role:assign', $modcontext)){
$actions[] = new action_link(
new moodle_url('/'.$CFG->admin.'/roles/assign.php', array('contextid' => $modcontext->id)),
new pix_icon('i/roles', $str->assign, 'moodle', array('class' => 'iconsmall')),
new pix_icon('i/roles', $str->assign, 'moodle', array('class' => 'iconsmall', 'title' => '')),
null,
array('class' => 'editing_assign', 'title' => $str->assign)
);
@@ -3845,7 +3831,7 @@ function create_course($data, $editoroptions = NULL) {
fix_course_sortorder();
// update module restrictions
if ($course->restrictmodules) {
if ($course->restrictmodules || $CFG->restrictbydefault ) {
if (isset($data->allowedmods)) {
update_restricted_mods($course, $data->allowedmods);
} else {
@@ -3964,7 +3950,7 @@ function average_number_of_participants() {
WHERE ue.enrolid = e.id
AND e.courseid <> :siteid
AND c.id = e.courseid
AND c.visible = 1) as total';
AND c.visible = 1) total';
$params = array('siteid' => $SITE->id);
$enrolmenttotal = $DB->count_records_sql($sql, $params);
@@ -3997,7 +3983,7 @@ function average_number_of_courses_modules() {
WHERE c.id = cm.course
AND c.id <> :siteid
AND cm.visible = 1
AND c.visible = 1) as total';
AND c.visible = 1) total';
$params = array('siteid' => $SITE->id);
$moduletotal = $DB->count_records_sql($sql, $params);
+9 -4
View File
@@ -55,6 +55,15 @@ $PAGE->set_pagelayout('incourse');
$output = $PAGE->get_renderer('core', 'backup');
$a = new stdClass();
$a->modtype = get_string('modulename', $cm->modname);
$a->modname = format_string($cm->name);
if (!plugin_supports('mod', $cm->modname, FEATURE_BACKUP_MOODLE2)) {
$url = new moodle_url('/course/view.php#section-' . $cm->sectionnum, array('id' => $course->id));
print_error('duplicatenosupport', 'core', $url, $a);
}
// backup the activity
$bc = new backup_controller(backup::TYPE_1ACTIVITY, $cm->id, backup::FORMAT_MOODLE,
@@ -117,10 +126,6 @@ if (empty($CFG->keeptempdirectoriesonbackup)) {
fulldelete($backupbasepath);
}
$a = new stdClass();
$a->modtype = get_string('modulename', $cm->modname);
$a->modname = format_string($cm->name);
echo $output->header();
if ($newcmid) {

Some files were not shown because too many files have changed in this diff Show More