Compare commits

..

1317 Commits

Author SHA1 Message Date
Eloy Lafuente (stronk7) 3ed9d1c176 Moodle release 2.8.11 2016-03-12 00:37:54 +01:00
Eloy Lafuente (stronk7) 488087cb69 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2016-03-12 00:37:50 +01:00
Eloy Lafuente (stronk7) 4e5732e7fe MDL-51167 tool_monitor: fix too strict condition 2016-03-10 00:14:11 +01:00
Simey Lameze d9d8e9c3fe MDL-50705 auth_db: apply standard cleaning to all fields
Also unit tests were added to cover the new clean_data() method.
2016-03-09 18:29:09 +01:00
Simey Lameze 4ee7394c8b MDL-50705 core_user: introduce new fill_properties_cache()
Also the get_property_definition() was created to get the property without retrieve the whole definition cache and
    unit tests were created to tests those new methods.
2016-03-09 18:29:07 +01:00
Simey Lameze a0cd21cd5c MDL-53031 mod_assign: add session check on assignment plugins management 2016-03-08 19:54:43 +01:00
Jun Pataleta a0034bb017 MDL-52433 user: Remove unnecessary capability check 2016-03-08 12:24:46 +01:00
Simey Lameze 89b97390d0 MDL-51167 tool_monitor: check course visibility and user 2016-03-08 03:09:57 +01:00
Cameron Ball 190757854d MDL-52651 htmlpurifier: Append rel=noreferrer to links.
Thank you to Zachary Durber for originally working on this issue.
2016-03-08 02:10:17 +01:00
Krista Koivisto dc8421575f MDL-52774 ajax: Require authentication when getting nav branch
When getting the navigation branch data through AJAX, require
login if forcelogin is set.
2016-03-08 00:38:52 +01:00
Juan Leyva 0f989a4c70 MDL-52901 mod_assign: Check due dates in external save_submission 2016-03-08 00:14:31 +01:00
David Monllao b74d0f8404 MDL-52378 singleview: Using is_disabled instead of is_locked 2016-03-07 23:01:35 +01:00
Travis Noll 71beedee8c MDL-52378 Singleview: Exclude Grade Attribute Permissions
Singleview users must have Manage Grade permission to modify the
Exclude grade attribute.
2016-03-07 23:01:25 +01:00
Juan Leyva d63ac148b9 MDL-52808 calendar: Do not return events for hidden activities 2016-03-07 22:31:49 +01:00
David Mudrák 8f95eac163 MDL-52727 mod_data: Improve output of the form fields values
This issue mostly affects the search form fields. Submitted values for
these fields are typically obtained via optional_param() with
PARAM_NOTAGS specified as the parameter type - see parse_search_field()
methods. Such values themselves are not safe enough to be printed back
directly into the HTML as they might contain malicious code.

While working on the patch, some other places with weak protection were
detected and fixed.

In case of the itemid parameters, the s() seems to be unnecessary but it
was added anyway as an extra protection (just in case the code flow
changes or the parts of the code are re-used elsewhere).
2016-03-07 22:07:17 +01:00
AMOS bot 8e12ce7e28 Automatically generated installer lang files 2016-03-03 22:24:34 +08:00
AMOS bot 3703791954 Automatically generated installer lang files 2016-03-03 22:24:33 +08:00
AMOS bot a457f23484 Automatically generated installer lang files 2016-03-03 00:04:39 +08:00
AMOS bot 608beccda3 Automatically generated installer lang files 2016-02-28 00:04:35 +08:00
AMOS bot 51eb1032de Automatically generated installer lang files 2016-02-25 00:12:05 +08:00
AMOS bot b7d5dffc77 Automatically generated installer lang files 2016-02-24 00:04:51 +08:00
Dan Poltawski d3142bcdbe weekly release 2.8.10+ 2016-02-22 09:10:51 +00:00
Dan Poltawski 75066aabb0 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2016-02-22 09:10:48 +00:00
AMOS bot 16fce86c8b Automatically generated installer lang files 2016-02-13 00:04:48 +08:00
Eloy Lafuente (stronk7) 22277cfabf MDL-51580 environment: 3.1 requirements added
Only important change is that Moodle 2.7 installed is
required to be able to upgrade to 3.1. See the issue
for opinions, votes and agreed outcomes.
2016-02-10 18:28:53 +01:00
AMOS bot 02d953d1b2 Automatically generated installer lang files 2016-02-10 00:04:34 +08:00
AMOS bot 03fb8a8769 Automatically generated installer lang files 2016-02-06 00:04:34 +08:00
AMOS bot 962bf40a1e Automatically generated installer lang files 2016-02-04 00:04:41 +08:00
AMOS bot 00c165d8f3 Automatically generated installer lang files 2016-01-28 00:04:47 +08:00
AMOS bot 54ba33e91b Automatically generated installer lang files 2016-01-26 00:04:31 +08:00
AMOS bot e96ea8d846 Automatically generated installer lang files 2016-01-25 00:04:33 +08:00
AMOS bot 3edce27167 Automatically generated installer lang files 2016-01-23 00:04:43 +08:00
AMOS bot ac60c71cb6 Automatically generated installer lang files 2016-01-19 00:05:16 +08:00
AMOS bot 63e9112aec Automatically generated installer lang files 2016-01-13 00:04:26 +08:00
Eloy Lafuente (stronk7) 2e8e92b0f1 Moodle release 2.8.10 2016-01-09 00:49:45 +01:00
Eloy Lafuente (stronk7) cd654c06a7 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2016-01-09 00:49:41 +01:00
AMOS bot b25f428173 Automatically generated installer lang files 2016-01-06 00:04:28 +08:00
Juan Leyva 535fd9678f MDL-52072 enrol: Fix course visibility checks in external functions 2016-01-05 10:31:39 +00:00
Dan Poltawski 627e723096 MDL-52552 course management: insufficient cleaning of search output 2016-01-05 10:51:43 +08:00
AMOS bot 81f444886a Automatically generated installer lang files 2016-01-04 00:04:48 +08:00
AMOS bot fe3db63c77 Automatically generated installer lang files 2015-12-25 00:04:31 +08:00
AMOS bot 0b08576ea7 Automatically generated installer lang files 2015-12-20 00:05:42 +08:00
Dan Poltawski 71d630fd59 weekly release 2.8.9+ 2015-12-18 12:27:29 +00:00
Dan Poltawski ae9a34b2d4 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-12-18 12:27:27 +00:00
Marina Glancy e0db7da9e2 MDL-52438 core: allow Moodle 3.0 to be used with PHP7 2015-12-10 17:58:01 +08:00
AMOS bot 32ea431a2f Automatically generated installer lang files 2015-12-05 00:04:59 +08:00
Eloy Lafuente (stronk7) 56068f1aeb weekly release 2.8.9+ 2015-12-03 19:41:02 +01:00
Eloy Lafuente (stronk7) bd696650b7 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-12-03 19:40:54 +01:00
AMOS bot 9157b95733 Automatically generated installer lang files 2015-12-04 00:04:59 +08:00
AMOS bot 025ed8a332 Automatically generated installer lang files 2015-11-28 00:05:17 +08:00
John Okely 397f50e376 MDL-52260 user: Fix error when saving profile with locked field 2015-11-27 11:03:12 +08:00
AMOS bot 4a702ed500 Automatically generated installer lang files 2015-11-25 00:04:45 +08:00
Dan Poltawski b6e2489fd3 weekly release 2.8.9+ 2015-11-19 09:20:36 +00:00
Dan Poltawski fc542633e8 Merge branch 'wip-MDL-52194-m28' of https://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-11-19 06:49:55 +00:00
Marina Glancy f988f63bc6 MDL-52194 flowplayer: do not check request
$_REQUEST variable may contain cookies in some php configurations. See also MDL-48085
2015-11-18 15:38:04 +08:00
David Monllao f0f739f4be weekly release 2.8.9+ 2015-11-13 15:27:46 +08:00
David Monllao df2527eb4a Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-11-13 15:27:44 +08:00
Eloy Lafuente (stronk7) ade73d44bf Merge branch 'MDL-51495-m28' of https://github.com/NeillM/moodle into MOODLE_28_STABLE 2015-11-11 16:17:26 +00:00
David Monllao 0fae5133a0 Merge branch 'MDL-51913_statistics_dup_1st_column_MDL28' of git://github.com/barrysspace/moodle into MOODLE_28_STABLE 2015-11-11 16:17:25 +00:00
David Monllao ff65861526 Merge branch 'MDL-51935-28' of git://github.com/dpalou/moodle into MOODLE_28_STABLE 2015-11-11 16:17:24 +00:00
Eloy Lafuente (stronk7) 7920d1f08b Merge branch 'wip-mdl-52077-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-11-11 16:17:24 +00:00
Eloy Lafuente (stronk7) 6193543174 Merge branch 'wip-mdl-52066-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-11-11 16:17:23 +00:00
Eloy Lafuente (stronk7) 097fe73bab Merge branch 'MDL-51686-28' of git://github.com/damyon/moodle into MOODLE_28_STABLE 2015-11-11 16:17:23 +00:00
Eloy Lafuente (stronk7) b4f7f20a74 Merge branch 'MDL-50781-28' of git://github.com/danpoltawski/moodle into MOODLE_28_STABLE 2015-11-11 16:17:22 +00:00
Eloy Lafuente (stronk7) 9856eadb1b Merge branch 'MDL-51720-28' of git://github.com/damyon/moodle into MOODLE_28_STABLE 2015-11-11 16:17:22 +00:00
AMOS bot 027baac82e Automatically generated installer lang files 2015-11-12 00:04:25 +08:00
Neill Magill 8102ded93a MDL-51495 calendar: E_WARNING in core_calendar_get_calendar_events
If a user does not have the 'moodle/calendar:manageentries' capability then an E_WARNING
can be generated by the core_calendar_external::get_calendar_events() method, that an
expected array is null

This patch creates an array that is missing when a user does not have the capability.
2015-11-11 15:23:13 +00:00
Neill Magill 7cd705334e MDL-51495 calendar: Unit test to get an individual course event
If is user requests a single event on a course via the web service they should be able to retrieve it.
2015-11-11 15:22:47 +00:00
Eloy Lafuente (stronk7) 86eaf83174 weekly release 2.8.9+ 2015-11-10 10:49:58 +01:00
Eloy Lafuente (stronk7) e8f0c133eb Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-11-10 10:49:50 +01:00
Dan Poltawski 8535cc180e MDL-52063 forum: Moved notification is not a problem
The default behaviour of $OUTPUT->notification() is to indiciate a
problem.
2015-11-10 09:38:23 +00:00
Dan Poltawski e74ff55ff5 Merge branch 'MDL-52063-28' of git://github.com/xow/moodle into MOODLE_28_STABLE 2015-11-10 09:21:33 +00:00
Dani Palou 5d2e3c1b97 MDL-51935 wiki: Add missing strings in wiki 2015-11-10 10:11:19 +01:00
Rajesh Taneja 120b3ad637 MDL-52077 unittest: Fixed string typo 2015-11-10 13:54:46 +08:00
Rajesh Taneja ed611437a6 MDL-52066 unittest: Use ics file from external repo 2015-11-10 13:43:40 +08:00
John Okely c1c1dc7a58 MDL-52063 forum: Display message when moving forum 2015-11-10 10:24:29 +08:00
AMOS bot 7511a99d0b Automatically generated installer lang files 2015-11-10 00:04:28 +08:00
Dan Poltawski 3afbdcb211 Merge branch 'MDL-51837-28' of git://github.com/junpataleta/moodle into MOODLE_28_STABLE 2015-11-09 11:33:03 +00:00
Dan Poltawski 4d47398bdc Merge branch 'MDL-51628-28' of git://github.com/damyon/moodle into MOODLE_28_STABLE 2015-11-09 11:01:43 +00:00
David Monllao f8c0d18110 Merge branch 'MDL-40245_28' of git://github.com/SWiT/moodle into MOODLE_28_STABLE 2015-11-09 16:13:46 +08:00
David Monllao d84ddfda00 Merge branch 'MDL-49473-28' of git://github.com/danpoltawski/moodle into MOODLE_28_STABLE 2015-11-09 15:13:22 +08:00
Eloy Lafuente (stronk7) ae1854f55c Moodle release 2.8.9 2015-11-06 20:51:38 +01:00
Dan Poltawski 394cba177e weekly release 2.8.8+ 2015-11-06 11:56:38 +00:00
Rajesh Taneja 9d9cfb8736 MDL-51685 unittest: Test functionality individually 2015-11-06 11:24:41 +01:00
Eloy Lafuente (stronk7) 8e2cd6b91a MDL-51861 enrol: added missing external cleanup for formal compliance 2015-11-06 10:05:56 +00:00
Dan Poltawski 6b9c205a99 MDL-51569 mod_choice: Fix use of hardcoded ids
(Previous approach of making up ids longer works now we are validating
them..)
2015-11-06 08:12:57 +00:00
Dani Palou 512633461a MDL-51861 enrol: Don't get all parts in get_enrolled_users with groups 2015-11-06 15:12:11 +08:00
Eloy Lafuente (stronk7) 61ecc0d5f0 MDL-51861 enrol: new unit test to verify all conditions and filters
This unit test does not verify contents, details, but only
that the returned users for every group mode, for every
filtering (active, groupid and withcapability) together
with permissions are correct.
2015-11-06 15:12:07 +08:00
John Okely 02d8c8ca39 MDL-51569 mod_choice: Prevent users from updating choices with curl 2015-11-06 14:53:26 +08:00
Andrew Nicols 11d4f442bb MDL-51685-master Fix unit tests following change
These unit tests were modifying the PAGE and other globals in the middle of
tests and were failing as a result.

Broke the tests up into separate tests where the functionality is now
tested individually.
2015-11-06 10:37:04 +08:00
Damyon Wiese 5c16db4fc5 MDL-51569 mod_choice: Validate the submitted optionid
Make sure any submitted choice options actually belong to the current choice
module.
2015-11-05 10:48:51 +00:00
Damyon Wiese c03882584d MDL-51720 assign: Always fallback on userid as a default sort
Even when the table has no userid column (this is normally the edit column).
2015-11-05 15:36:30 +08:00
Andrew Nicols 720d88779e Merge branch 'MDL-51395-28' of git://github.com/junpataleta/moodle into MOODLE_28_STABLE 2015-11-05 14:03:27 +08:00
Jun Pataleta 5dd381d25c MDL-51395 blog: Fix output of strings for blog comments 2015-11-04 23:47:59 -06:00
Andrew Nicols cb2220bfde Merge branch 'MDL-26429-28' of git://github.com/cameron1729/moodle into MOODLE_28_STABLE 2015-11-05 12:17:44 +08:00
Andrew Nicols c9d8b0d29a MDL-51899 mod_forum: Add test for allowing 0 grades 2015-11-05 12:08:54 +08:00
Cameron Ball 29d6115e65 MDL-26429 usability: Add course completion icons.
This patch adds a method to the course completion criteria classes
which allows them to specify an icon for display in the course
completion report table.

There is a default implementation which simply looks for an icon
in pix/i with a name matching the completion criteria type.
2015-11-05 11:41:49 +08:00
Barbara Ramiro 2dffff79c7 MDL-26429 Course completion icons for self, duration, and role. 2015-11-05 11:41:48 +08:00
Andrew Nicols 9be0bf1d10 Merge branch 'MDL-51899_28' of git://github.com/jacac/moodle into MOODLE_28_STABLE 2015-11-05 11:27:37 +08:00
Andrew Nicols 9ba8006955 Merge branch 'MDL-51685-28' of git://github.com/dpalou/moodle into MOODLE_28_STABLE 2015-11-05 10:42:29 +08:00
rajesh Taneja fe9bd2b8bb MDL-50837 mod_scorm: include locallib to access function 2015-11-05 10:25:05 +08:00
Matt Switlik d7b80c7dd4 MDL-40245 assignment: download all submissions raise time limit 2015-11-04 16:29:25 -05:00
Jakob 57d281f554 MDL-51899 mod/assign: Allow 0.00 grades while editing a grade.
The function unformat_float can return 0 and false.
We need to do strict comparison for the return value on line 92 to accept grades 0.00.
2015-11-04 11:08:06 -08:00
David Monllao d41fa94a69 MDL-51684 badges: Make sure 'moodle/badges:viewbadges' is respected
Credit to Yuliya Bozhko.
2015-11-04 13:02:44 +00:00
Juan Leyva d28eedd536 MDL-50837 mod_scorm: Fix availability checks 2015-11-04 12:56:11 +01:00
Juan Leyva 72885a5725 MDL-51569 mod_choice: Check choice availability prior to do any action 2015-11-04 11:08:51 +00:00
Cameron Ball 7bf5c6a542 MDL-51091 core_registration: session key check in registration. 2015-11-04 18:46:26 +08:00
Simey Lameze b4f4232e1c MDL-49940 mod_survey: Fix XSS on survey module 2015-11-04 18:46:26 +08:00
Hugh Davenport f03ec4ce85 MDL-49940 mod_survey: Escape user comments
This patch fixes a XSS vulnerability with surveys where a student user
    could inject arbitrary HTML in a comment on the survey. The fix is to
    escape the comment before displaying it to the teacher.
2015-11-04 18:46:26 +08:00
David Monllao 50632a0681 MDL-51000 editor_atto: No autosave for guests 2015-11-04 18:46:26 +08:00
Simey Lameze dcb42c9ed1 MDL-48109 mod_lesson: prevent CSRF on lesson
This commit add a new session key hidden field on the lesson password form
and confirm if the session key is valid on related pages to prevent CSRF on
password protected lessons.
2015-11-04 18:46:26 +08:00
Petr Skoda 7db05ae3b2 MDL-48085 flowplayer: prevent flash parameters via url 2015-11-04 10:38:34 +00:00
Andrew Nicols 8e093acc9d Merge branch 'MDL-45814-28' of git://github.com/danpoltawski/moodle into MOODLE_28_STABLE 2015-11-04 14:05:19 +08:00
Andrew Nicols 5bd1977645 Merge branch 'MDL-52004-28' of git://github.com/damyon/moodle into MOODLE_28_STABLE 2015-11-04 13:47:10 +08:00
Andrew Nicols 63d70b1eca Merge branch 'wip-MDL-51486-28' of git://github.com/abgreeve/moodle into MOODLE_28_STABLE 2015-11-04 11:50:45 +08:00
Andrew Nicols 2c6d1dd02d Merge branch 'MDL-51918-28-navigable' of https://github.com/pauln/moodle into MOODLE_28_STABLE 2015-11-04 11:30:51 +08:00
Adrian Greeve 5c31064d5e MDL-51486 mod_data: Unit test update for item ratings.
Additional checks that access is available for item ratings
on records that have a group id of zero (all participants).
2015-11-04 10:17:08 +08:00
Adrian Greeve 6dfb7f0eca MDL-51486 mod_data: Can view rating information.
When students are given the appropriate permissions
to view ratings, in the situation where there are
separate groups. The students can view the ratings
of an entry that is in the all participants group.
2015-11-04 10:16:52 +08:00
Paul Nicholls 80ef82e3f3 MDL-51918 gradereport: Fix AJAX mode keyboard navigation
Keyboard navigation (ctrl+up/down/left/right) with AJAX enabled ceased
functioning with editing mode enabled after MDL-36606, as it was looking
for cells with a "clickable" class - but was only applying that class when
editing mode is NOT enabled.  This patch uses a new "gbnavigable" class to
control keyboard navigation, whether editing mode is on or not.  It also
addresses some browser compatibility and minor behavioural issues.

# Conflicts:
#	grade/report/grader/module.js
2015-11-04 11:53:57 +13:00
Eloy Lafuente (stronk7) 336f2e073b weekly release 2.8.8+ 2015-11-03 18:46:14 +01:00
Eloy Lafuente (stronk7) 27f5d818de Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-11-03 18:45:55 +01:00
Eloy Lafuente (stronk7) c2da1ffea9 Merge branch 'wip-mdl-52007-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-11-03 18:00:50 +01:00
Eloy Lafuente (stronk7) 7f50bc1d2f Merge branch 'wip-mdl-52020-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-11-03 18:00:50 +01:00
Dan Poltawski 12f93caf45 Merge branch 'MDL-52018-28-enfix' of git://github.com/mudrd8mz/moodle into MOODLE_28_STABLE 2015-11-03 18:00:49 +01:00
AMOS bot 170bb2e118 Automatically generated installer lang files 2015-11-04 00:04:42 +08:00
Dan Poltawski 56272bb56d MDL-45814 login: don't prompt guest user to change password 2015-11-03 14:49:43 +00:00
Dan Poltawski 992591e0e1 MDL-49473 logs: ensure exported logs contain year 2015-11-03 11:38:37 +00:00
Dan Poltawski efb26ed011 MDL-50781 user: do not print useless table cell
Thanks to Maurício Severo da Silva for the patch
2015-11-03 10:53:22 +00:00
rajesh Taneja 3c5a90d52d MDL-52020 behat: Removed text checking to ensure window switch
Comment question window closes after 2 sec.
which crashes win-FF as it's slow to check for
"Changes saved" text. As after switching it is
checked the changes are saved, this step can be
avoided to ensure robustness of the scenario
2015-11-03 16:58:23 +08:00
rajesh Taneja fc3ef232d1 MDL-52007 behat: Use extended timeout for site admin expansion 2015-11-03 16:09:45 +08:00
David Mudrák b4ccb13855 MDL-52018 lang: Fix behat test to use the new string 2015-11-02 22:52:20 +01:00
Helen Foster 9e0a879c0a MDL-52018 lang: Merge English strings from the en_fix language pack 2015-11-02 22:48:28 +01:00
Eloy Lafuente (stronk7) ca2d074d95 Merge branch 'MDL-52014-28' of git://github.com/danpoltawski/moodle into MOODLE_28_STABLE 2015-11-02 20:02:32 +01:00
Marina Glancy 5a22246905 MDL-51999 user: remove unnecessary continue 2015-11-02 19:59:45 +01:00
Eloy Lafuente (stronk7) 262289493d Merge branch 'MDL-51829-28' of git://github.com/dpalou/moodle into MOODLE_28_STABLE 2015-11-02 19:40:59 +01:00
Dan Poltawski 1dcf6b339a MDL-52014 quiz: do not log preview attempt deletions
This happens automatically by the system.
2015-11-02 16:19:19 +00:00
Marina Glancy 6dce2f64b8 MDL-50633 dml: deprecated var replaced in mysql 5.7
Thanks to Charles Verge for providing a patch
2015-11-02 14:05:04 +00:00
Dan Poltawski 29f19e7e3e Merge branch 'MDL-51128-28' of git://github.com/junpataleta/moodle into MOODLE_28_STABLE 2015-11-02 10:54:54 +00:00
Damyon Wiese b43abbdccc MDL-52004 assign: Set unique urls when grading so autosaves work
The Atto autosave feature uses the $PAGE->url to generate unique hashes for
each page. Assignment uses a MUC cache to persist ordering of lists - the result
is that the urls are not unique (they depend on the cached filter).

The fix is to spoof a unique url that will grade only that student with no
active grading list (no next/prev buttons).
2015-11-02 16:46:41 +08:00
Andrew Nicols 1af0fa4d1c Merge branch 'MDL-51707-m28' of https://github.com/micaherne/moodle into MOODLE_28_STABLE 2015-11-02 14:51:49 +08:00
Jun Pataleta 1a5b8567c8 MDL-47073 lib: Replace backslashes with slashes in jquery plugin urls
This patch replaces backslash characters in the generated jQuery
plugin URL to forward slashes when slasharguments is disabled and
 the Moodle server is running on IIS.
Thanks to Ryan Panning <Ryan.Panning@district196.org> for
reporting this issue and for suggesting a fix.
2015-10-30 17:06:19 -05:00
Dan Poltawski c12979c7df weekly release 2.8.8+ 2015-10-30 21:08:41 +00:00
Andrew Nicols 1d8090a7a6 Merge branch 'wip-MDL-51552-28' of git://github.com/abgreeve/moodle into MOODLE_28_STABLE 2015-10-30 11:03:42 +08:00
Dan Poltawski 318f7454e0 Merge branch 'MDL-51939-28' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE 2015-10-29 13:55:06 +00:00
Eloy Lafuente (stronk7) 2d0a9d0255 MDL-51939 mod_forum: all participants discussions are viewed by students
Added scenario to verify that "all participants" discussions, under
separate-groups mode are, by default, visible for students.
2015-10-29 21:07:44 +08:00
Dan Poltawski 15dc45e953 Merge branch 'MDL-50811-28' of git://github.com/cameron1729/moodle into MOODLE_28_STABLE 2015-10-29 10:53:44 +00:00
Dan Poltawski eb1e78be45 Merge branch 'MDL-51921-28' of git://github.com/junpataleta/moodle into MOODLE_28_STABLE 2015-10-29 10:35:41 +00:00
Adrian Greeve 9323277c03 MDL-51552 gradebook: Update to bulk update behat test. 2015-10-29 16:16:00 +08:00
Adrian Greeve 017c71cfcf MDL-51552 gradebook: Single view bulk insert fix.
Single view now doesn't overwrite non-empty grades.

A thank you to Sam Anderson and Robert Russo for providing a patch.
2015-10-29 16:16:00 +08:00
Ryan Wyllie c07b265f77 MDL-51799 javascript: dialogue accessibility
Moved setting the aria visiblity of the dialogues from the show
and hide functions into the visibility change handler to stop
multiple calls.

Also made the visibility checker just continue to buffer the elements
it hides, rather than clearning them, on multiple calls.
2015-10-29 05:41:59 +00:00
Jun Pataleta 4b573f4d42 MDL-51921 files: Fixes for file manager issues
Fixed the issue where the file path select box goes beyond the
container with very long folder names. Instead of setting to
"width: auto", I set it the select box's "width: 100%" so that it will
just fill up its container's width.
Fixed the issue where markups are being shown on file aliases.
2015-10-28 04:51:12 -05:00
Andrew Nicols ba7fcebb79 MDL-51939 mod_forum: Correct empty groupinfo check 2015-10-28 14:04:44 +08:00
Andrew Nicols 53378d63e2 weekly release 2.8.8+ 2015-10-28 12:57:35 +08:00
Eloy Lafuente (stronk7) 2ff58a3b05 MDL-51863 packer: ensure empty zip files behavior remains consistent
With PHP bug #70322 fixed, ZipArchive::close() did start returning false
and throwing PHP Warnings with recent PHP versions (5.6.14 and up).
Previously (5.6.13 verified) it was returning true, and false in older
versions (5.4.x verified).

This change does silent the 2 "hacky" calls to close() that we perform
in core leaving the 3rd one (used for files having files) unmodified.

A new unit test has been created to cover the close() behavior, ideally
supporting both old and new PHP versions without harcoding any PHP
version.

Note that we don't use to rely much on results coming from close(), and
that's a good thing given the buggy behavior commented above. This just
keeps empty zips working like they were before.
2015-10-27 11:57:00 +00:00
Corey Wallis 7fa0d47cda MDL-50811 mod_forum: Add completion tracking for emailed replies 2015-10-27 15:55:29 +08:00
Andrew Nicols 6f3a4fb5c3 Merge branch 'MDL-51864-28' of git://github.com/junpataleta/moodle into MOODLE_28_STABLE 2015-10-27 10:58:47 +08:00
Barry Oosthuizen 9486c3fe5c MDL-51913 report_stats: Make first column unique 2015-10-26 17:27:52 +00:00
Kevin Wiliarty 5daffb32f3 MDL-51834 auth,profile: locks custom fields based on auth settings 2015-10-26 14:24:06 +00:00
Dan Poltawski 3561600a37 Merge branch 'MDL-51894-28' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE 2015-10-26 12:40:31 +00:00
Andrew Nicols d784ad13e8 MDL-51894 inboundmessage: Ensure that all mailboxes exist 2015-10-26 12:31:20 +08:00
Andrew Nicols a6cb45542d Merge branch 'MDL-51779_28' of https://github.com/Syxton/moodle into MOODLE_28_STABLE 2015-10-26 09:54:20 +08:00
Jun Pataleta c4350c40f5 MDL-51864 blocks: Fixed title display for block_course_summary 2015-10-24 00:04:42 -05:00
Matt Davidson cbb94a638e MDL-51779 assign: PDF annotate quality
Fixes the quality of pdf content when annotating.
2015-10-23 09:31:20 -04:00
Dan Poltawski 7eb88da0af weekly release 2.8.8+ 2015-10-23 12:51:47 +01:00
Andrew Nicols 5631e50ced Merge branch 'MDL-51822_28' of git://github.com/dmonllao/moodle into MOODLE_28_STABLE 2015-10-22 13:22:24 +08:00
Dan Poltawski 23eb923bcc weekly release 2.8.8+ 2015-10-20 09:56:35 +01:00
Dani Palou 80bea94ffe MDL-51829 admin: Set userquota setting as PARAM_INT 2015-10-20 10:02:52 +02:00
Mark Nelson 1430b4dc8f MDL-51782 mod_forum: fixed unit test failing on certain DBs 2015-10-20 14:46:09 +08:00
Andrew Nicols 388efc9233 Merge branch 'MDL-51782_m28' of git://github.com/markn86/moodle into MOODLE_28_STABLE 2015-10-20 11:53:00 +08:00
Mark Nelson 9383deb075 MDL-51782 mod_forum: altered unit tests for the post_deleted event
This was done to ensure we are actually testing the API, and not
just creating and triggering the event manually.
2015-10-19 20:14:05 -07:00
Mark Nelson 102ffb8e18 MDL-51782 mod_forum: moved post_deleted event into function 2015-10-19 20:14:04 -07:00
Jun Pataleta 37ccc13b0f MDL-51837 user: Check if user email is set on validation
Add a check if the user's email is set before performing validation on
the user's email address. This is to prevent the warning messages to
be shown in the case of a pending email change which causes the user's
email field to be not included in the Edit profile form.
2015-10-19 16:52:57 -05:00
Eloy Lafuente (stronk7) 6cf4677e78 Merge branch 'wip-mdl-48117-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-10-19 16:58:59 +02:00
Dan Poltawski e5ec55cbdd Merge branch 'm28_MDL-51554_Apache_PHP-FPM_Broken_File_Serving' of https://github.com/scara/moodle into MOODLE_28_STABLE 2015-10-19 15:19:38 +01:00
David Monllao 4ae6340719 Merge branch 'MDL-50483-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-10-19 17:06:59 +08:00
Eloy Lafuente (stronk7) 140bd7b3ca MDL-48117 behat: Use form field to check checkbox
On Mac-Chrome click checkbox is not generating
proper events and hence failing. Use behat_form_checkbox
to ensure checkbox is checked
2015-10-19 16:59:57 +08:00
David Monllao 1b851d1b1f Merge branch 'MDL-51771_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-10-19 16:28:17 +08:00
David Monllao 99482eb0bc MDL-51822 timezones: Update to IANA 2015g 2015-10-19 15:00:25 +08:00
Andrew Nicols 2ed5192a84 Merge branch 'MDL-51673-28' of git://github.com/junpataleta/moodle into MOODLE_28_STABLE 2015-10-19 13:50:31 +08:00
Andrew Nicols e1f8a35f27 Merge branch 'MDL-51772-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-10-19 13:35:34 +08:00
David Monllao 03f0dec4a4 Merge branch 'MDL-51759-28-2' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE 2015-10-19 13:31:17 +08:00
Simey Lameze 2ecb8fdea7 MDL-50483 gradereport_user: fix the fatal error of no enrolled users 2015-10-19 09:16:29 +08:00
Jinu Abraham 200522e7c6 MDL-50483 gradereport_user: fix the fatal error of no enrolled users 2015-10-19 09:15:50 +08:00
Andrew Nicols 131679eddc Merge branch 'MDL-50412-28' of git://github.com/danpoltawski/moodle into MOODLE_28_STABLE 2015-10-19 08:05:21 +08:00
Tim Hunt fb33a080dc MDL-51771 question engine: fix typo in SQL
Thanks to Pete at learningpool.com for finding thsi bug.
2015-10-18 16:05:41 +01:00
Jun Pataleta 61ba945d8d MDL-51673 messages: Added codes for the unit tests 2015-10-16 16:07:11 -05:00
Ben Kelada 0429a76370 MDL-51673 messages: remove strict type check of int vs string 2015-10-16 16:07:10 -05:00
Matteo Scaramuccia 0f0f997e61 MDL-51554 Files: Fix broken file serving under Apache + PHP-FPM 2015-10-16 22:06:51 +02:00
Eloy Lafuente (stronk7) e82ed9333b weekly release 2.8.8+ 2015-10-16 12:51:20 +02:00
Andrew Nicols 52b58e7cea Merge branch 'MDL-51565-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-10-16 09:37:15 +08:00
Andrew Nicols dff755c3e2 Merge branch 'MDL-51651-28' of git://github.com/danpoltawski/moodle into MOODLE_28_STABLE 2015-10-16 09:27:16 +08:00
Andrew Nicols 70f315edbc Merge branch 'MDL-50182_28' of git://github.com/stronk7/moodle into MOODLE_28_STABLE 2015-10-16 08:14:46 +08:00
Andrew Nicols d1bffa672f MDL-51759 theme: Ensure that non-svg images are cached and returned 2015-10-16 07:53:59 +08:00
Dan Poltawski 764057b0c3 Merge branch 'MDL-51703-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-10-15 13:58:20 +01:00
Dan Poltawski 2aea111faa Merge branch 'MDL-51500-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE 2015-10-15 13:52:48 +01:00
Dan Poltawski db4c084a63 Merge branch 'MDL-51563-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-10-15 13:50:13 +01:00
Dan Poltawski ec7af5aa0e Merge branch 'MDL-51652-m28' of https://github.com/sammarshallou/moodle into MOODLE_28_STABLE 2015-10-15 13:46:14 +01:00
Dan Poltawski 60e3abff94 Merge branch 'MOODLE_28_STABLE-MDL-51679-groupmode-ajax' of https://github.com/Dagefoerde/moodle into MOODLE_28_STABLE 2015-10-15 11:44:50 +01:00
Dan Poltawski 5e90e70643 MDL-51651 lang: add consitency for application of firstdayofweek
1) Set the site-wide default based on language pack
2) Use the site/user preference for js popups, like we do in /calendar/
2015-10-15 10:17:20 +01:00
Dan Poltawski 62897237f7 MDL-51651 lang: the first day of the week is Monday 2015-10-15 10:17:19 +01:00
Dan Poltawski d55e3b1fc5 Merge branch 'wip-mdl-50940-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-10-15 08:57:52 +01:00
Andrew Nicols a6e1c0afa7 Merge branch 'MDL-51756-28' of git://github.com/damyon/moodle into MOODLE_28_STABLE 2015-10-15 15:25:24 +08:00
Andrew Nicols 9a9bfb41e2 MDL-51756 tests: Refactor test to use data-provider
The benefit is that this becomes one test per external function instead of one
test testing them all - so more information is shown on failure and we get lots
more dots (we love dots!).
2015-10-15 15:19:05 +08:00
Damyon Wiese 19ab1865e3 MDL-51756 externallib: Show debugging when optional params are wrong
Optional params are not allowed as the top level value for external_function_parameters.
This is because stricter protocols (xmlrpc and soap) cannot handle optional parameters, only
optional properties in a structure.
2015-10-15 14:20:25 +08:00
Ryan Wyllie d058095357 MDL-49545 backup: Restore does not respect some capabilities
Thanks to Daniel Neis for the original patch that formed the
basis of these changes.
2015-10-15 11:55:47 +08:00
Dan Poltawski f7393e447c Merge branch 'MDL-51399_28' of https://github.com/andrewhancox/moodle into MOODLE_28_STABLE 2015-10-14 15:02:47 +01:00
Dan Poltawski ae4e4e11ff Merge branch 'MDL-51467-m28' of https://github.com/sammarshallou/moodle into MOODLE_28_STABLE 2015-10-14 13:41:03 +01:00
Jan C. Dageförde 0da8db7426 MDL-51679 course: Update groupmode CSS class
Changing groupmode of an activity via AJAX did not change the button's CSS class accordingly.
2015-10-14 14:35:47 +02:00
Juan Leyva 2b6e9e40dc MDL-51772 webservice: Export add_user_private_files as Web Service 2015-10-14 14:09:14 +02:00
Dan Poltawski 5f21490c11 weekly release 2.8.8+ 2015-10-14 10:49:05 +01:00
Dan Poltawski 2148eb566c NOBUG: Fixed SVG browser compatibility 2015-10-14 10:49:04 +01:00
Dan Poltawski 2b18ca5e3f Merge branch 'MDL-40710-28' of git://github.com/barbararamiro/moodle into MOODLE_28_STABLE 2015-10-13 15:35:28 +01:00
Dan Poltawski 45d6ea0832 Merge branch 'MDL-51435-m28' of https://github.com/NeillM/moodle into MOODLE_28_STABLE 2015-10-13 11:43:52 +01:00
Dan Poltawski a8f9db70c6 MDL-47494 grade: even more complete copyright fix.
With thanks to Tim!
2015-10-13 09:55:18 +01:00
Dan Poltawski a7f765a7a9 MDL-47494 grade: fix incorrect copyright statement
(From copy/paste error, blame Tim :P)
2015-10-13 09:39:17 +01:00
Damyon Wiese 206e677358 MDL-48861 assign: Make the requires grading filter consistent
Consistently include submissions with a null grade (see MDL-47694).
2015-10-13 14:54:47 +08:00
Damyon Wiese 2d4cf584ca MDL-48861 assign: Fix unit tests and behat tests
The tests were not working with the change to the needs grading filter.
2015-10-13 13:06:48 +08:00
Andrew Nicols f58afe07e0 Merge branch 'MDL-51302-28' of git://github.com/danpoltawski/moodle into MOODLE_28_STABLE 2015-10-13 11:35:38 +08:00
Jun Pataleta c07f0799ed MDL-51128 course: Add startdate for generated course
Added course start date for the course generated by the course
generator in order to prevent incorrect date calculations
(i.e. in assignment due dates) when the generated course is reset.
2015-10-12 22:12:13 -05:00
Andrew Nicols 7914b0a2cf Merge branch 'MDL-51427-28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-10-13 10:15:35 +08:00
Andrew Nicols 1cf1b279da Merge branch 'MDL-40442-28' of git://github.com/danpoltawski/moodle into MOODLE_28_STABLE 2015-10-13 09:49:14 +08:00
Andrew Nicols 182a393e06 Merge branch 'MDL-50079-28' of git://github.com/danpoltawski/moodle into MOODLE_28_STABLE 2015-10-13 09:33:38 +08:00
Andrew Nicols ee8072e2a1 Merge branch 'MDL-50788-28' of git://github.com/danpoltawski/moodle into MOODLE_28_STABLE 2015-10-13 08:54:42 +08:00
Eloy Lafuente (stronk7) bf0e51d1a1 MDL-50182 core: add 3.0 environmental requirements
Only change from 2.9 is the modification of the slasharguments
admin setting string to recommend always to keep the setting enabled
and fix the problem in the server, warning about the drawbacks
of disabling it.

Also, there is a little phpdoc note added to one custom check
to have clearly specified when we can get rid of it.
2015-10-13 00:35:55 +02:00
sam marshall 378f34a469 MDL-51467 Availability: Course reset should change restrict dates 2015-10-12 17:36:00 +01:00
Dan Poltawski 2c9c7b1130 Merge branch 'MDL-51375_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-10-12 17:01:44 +01:00
Dan Poltawski a78d3fa10b Merge branch 'MDL-48861-28' of git://github.com/damyon/moodle into MOODLE_28_STABLE 2015-10-12 16:53:21 +01:00
Juan Leyva 43654c4872 MDL-51563 core_user: Fix invalid passed parameteres in get_user 2015-10-12 13:54:27 +02:00
Dan Poltawski 989298d309 Merge branch 'MDL-36606-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE 2015-10-12 12:41:30 +01:00
Juan Leyva 8eb8681b5e MDL-51565 webservice: Fix return types definitions 2015-10-12 13:30:17 +02:00
Dan Poltawski 025b4cb5e9 Merge branch 'MDL-51586-28' of git://github.com/xow/moodle into MOODLE_28_STABLE 2015-10-12 10:47:17 +01:00
sam marshall 0273933079 MDL-51652 Availability: OR conditions fail when filtering user lists
When filtering a user list, if there is an OR tree where one of the
conditions does not restrict user lists such as a date condition,
then the overall result should include all users (not be filtered).
This was not working correctly.
2015-10-12 10:26:48 +01:00
David Monllao 28e4326cf1 Merge branch 'MDL-51083-28' of git://github.com/xow/moodle into MOODLE_28_STABLE 2015-10-12 16:58:13 +08:00
Andrew Nicols fb48641b5f MDL-46497 atto: Whitespace/coding style fix 2015-10-12 13:44:18 +08:00
Andrew Nicols 907093e131 Merge branch 'MDL-46497_M28' of https://github.com/nadavkav/moodle into MOODLE_28_STABLE 2015-10-12 13:43:33 +08:00
Andrew Nicols ce4c237787 Merge branch 'MDL-51451-m28' of https://github.com/sammarshallou/moodle into MOODLE_28_STABLE 2015-10-12 10:15:31 +08:00
Lior Gil 284ef7be8f MDL-46497 Atto: Fix adding redundant p elements in rtl/ltr actions 2015-10-10 01:34:07 +03:00
Juan Leyva cc595febe4 MDL-51703 mod_survey: Trigger response_submitted event in correct place 2015-10-09 16:27:20 +02:00
Dan Poltawski 6ff47714ac MDL-50412 admin: prevent fatal errors on reports admin page 2015-10-09 14:47:39 +01:00
Barbara Ramiro c3ece30f18 MDL-40710 Icon: More identifiable backpack icon 2015-10-09 18:40:19 +08:00
Dan Poltawski 1670fc84a7 MDL-50079 atto_link: respect new window option when creating from repo
Previously users had to go back and edit their link to set the new
window option.
2015-10-09 11:29:27 +01:00
Dani Palou b961b1c142 MDL-51685 user: Support gravatar images in user_get_user_details 2015-10-09 11:51:19 +02:00
Dan Poltawski d6e6b308c5 MDL-50788 classloader: Prevent cryptic errors on unreadable classes dir
Do not attempt to read an unreadable directory because previously the generated
errors were hard to fathom.

Thanks to James McQuillan for the basis of the patch.
2015-10-09 10:37:32 +01:00
Dan Poltawski 66ce9e9f1c MDL-51302 scorm: do not use invalid course urls
Previous behaviour of setting an empty sectionid was incorrect and we
were doing work which course_get_url() does for us.
2015-10-09 09:09:37 +01:00
Neill Magill c21fca27fd MDL-51435 Web Services: E_WARNING in core_webservice_get_site_info
$plugin was not being set before the version file was included.
This caused an E_WARNING: Creating default object from empty value

This change creates the plugin object before the version file sets its parameters.
2015-10-09 09:06:53 +01:00
John Okely 9b132c5b23 MDL-51586 enrol: Enrolment table displays fullname properly.
When the alternatefullnamedisplay was set to something that
didn't contain 'firstname' then nothing would be displayed
for the user's name.
2015-10-09 15:35:23 +08:00
Damyon Wiese 16ef0ac033 MDL-48861 mod_assign: use >= for requires grading filter
If the grade and submission were modified at exactly the same time,
assume that this means the grade was automatically created for the submission
and is not a real grade from a teacher interaction.
2015-10-09 15:10:46 +08:00
Damyon Wiese cce2034d5e MDL-51628 assign: invalid hardcoded capability check
Use existing function to do the check instead.
2015-10-09 15:01:08 +08:00
Mifsud Gaël f1afb82337 MDL-51083 admin: Prevent password autofill in authentication settings 2015-10-09 14:34:02 +08:00
Damyon Wiese 8ffc94ff69 MDL-51686 assign: Apply admin default for comment inline 2015-10-09 13:42:29 +08:00
Michael Aherne 545163440b MDL-51707 cron: Prevent finished tasks being returned 2015-10-08 16:44:08 +01:00
Eric Merrill 5c66e986ee MDL-36606 gradereport: Update AJAX grader to understand gradeless cells 2015-10-08 10:51:04 -04:00
Barbara Ramiro e4f2fb2665 MDL-40442 Icon: Improved svg download icon and png version 2015-10-08 13:31:46 +01:00
Dan Poltawski 6d8dbfee53 weekly release 2.8.8+ 2015-10-08 11:36:41 +01:00
Adam Olley 41c8edf46d MDL-51285 mod_forum: Posts all need to have different stamps 2015-10-08 12:23:31 +08:00
Eric Merrill 287e6a9772 MDL-51500 navigation: Compute links with destination context
We should calculate the links based on the destination context,
not the current course. Could show links that are not accessible.
2015-10-07 10:03:13 -04:00
sam marshall 735ef8ba92 MDL-51451 Moodle dialogues: Lock scroll causes background jump
When you add a module or otherwise cause a Moodle dialogue to appear, this
enables the 'lock scroll' feature (the scrollbar disappears).

On some browsers this causes the width of the viewport to change, which can
cause centered/right-aligned theme elements to move distractingly.

This change temporarily sets body max-width while lock scroll is active.
2015-10-07 10:32:59 +01:00
David Monllao a112d4ebfb Merge branch 'wip-mdl-51285-m28' of git://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-10-07 11:23:32 +08:00
Andrew Nicols 797ac16e88 Merge branch 'MDL-41042-28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-10-07 10:27:47 +08:00
David Monllao 1ce643eaad Merge branch 'MDL-51525-28' of git://github.com/ryanwyllie/moodle into MOODLE_28_STABLE 2015-10-07 09:23:24 +08:00
Dan Poltawski 936d11f137 Merge branch 'MDL-51588-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-10-06 11:42:58 +01:00
David Monllao c4dc0748a4 Merge branch 'MDL-51656_m28' of git://github.com/markn86/moodle into MOODLE_28_STABLE 2015-10-06 15:25:15 +08:00
Andrew Nicols cee7167b07 Merge branch 'MDL-51228-m28-master' of https://github.com/dthies/moodle into MOODLE_28_STABLE 2015-10-06 13:49:36 +08:00
Tim Hunt e8da65449a MDL-51375 excel output: more work to avoid invalid sheet names 2015-10-06 05:45:16 +01:00
Andrew Nicols 77712faa11 Merge branch 'MDL-44707-28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-10-06 11:36:30 +08:00
Andrew Nicols 71175baff9 Merge branch 'MDL-50805_MOODLE_28_STABLE' of https://github.com/crazyserver/moodle into MOODLE_28_STABLE 2015-10-06 10:36:32 +08:00
David Monllao 6641b6fb8a Merge branch 'MOODLE_28_STABLE-MDL-49750' of git://github.com/jojoob/moodle into MOODLE_28_STABLE 2015-10-06 09:30:04 +08:00
Dan Poltawski 4fbad85763 Merge branch 'wip-MDL-49189-MOODLE_28_STABLE' of https://github.com/kwiliarty/moodle into MOODLE_28_STABLE 2015-10-05 15:03:18 +01:00
Johannes Burk e33152d912 MDL-49750 mod_data: fix updating file/picture fields breaks references
Use file_save_draft_area_files on file/picture update and
set content to null if file was removed.
2015-10-05 11:45:18 +02:00
David Monllao 758b2d9b29 Merge branch 'MDL-51514_m28' of git://github.com/markn86/moodle into MOODLE_28_STABLE 2015-10-05 16:00:12 +08:00
rajesh Taneja b5b3a37049 MDL-50940 behat: Added support for field matching with xpath 2015-10-05 14:04:02 +08:00
David Monllao 06cb6e421b Merge branch 'MDL-51408-28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-10-05 13:50:34 +08:00
Andrew Hancox 08544e3bdb MDL-50940 behat: Added ability to check field value by xpath 2015-10-05 13:47:04 +08:00
David Monllao 192509762b MDL-50613 webservices: Upgrade info about riskbitmask 2015-10-05 12:19:07 +08:00
David Monllao f2ac95dfdf Merge branch 'MDL-50613-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-10-05 12:13:14 +08:00
Sam Chaffee f0d7264769 MDL-51514 gradebook: Optimize set_usedinaggregation query for MySQL 2015-10-04 13:20:47 -07:00
Kevin Wiliarty 36d44b206a MDL-49189 auth: Map data to profile fields with uppercase shortnames 2015-10-03 08:25:06 -04:00
Mark Nelson 2bec647d91 MDL-51656 auth_radius: fixed colon location 2015-10-02 16:35:41 -07:00
Dan Poltawski dc3850fc20 weekly release 2.8.8+ 2015-10-02 10:57:33 +01:00
Dan Poltawski 35f4f19770 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-10-02 10:57:31 +01:00
Pau Ferrer Ocaña 3262330d95 MDL-50805 Messages: Add index to message_read to speed up message crons 2015-10-01 10:37:16 +02:00
David Monllao 00f1a102ca MDL-46710 mod_lti: Removing duplicated generated events
Event generation and completion should be generated only once.
2015-10-01 12:07:07 +08:00
Eloy Lafuente (stronk7) 474b1e0040 Merge branch 'MDL-51227-m28-master' of https://github.com/dthies/moodle into MOODLE_28_STABLE 2015-10-01 00:35:25 +02:00
Andrew Robert Nicols 68dcf2dded MDL-36606 gradereport: Correctly handle ungraded assessment ajax grading 2015-09-30 15:04:12 -04:00
Eloy Lafuente (stronk7) 9194f5911b Merge branch 'wip-mdl-51266-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-09-30 20:34:59 +02:00
Andrew Hancox 4143c33d27 MDL-51399 report_outline: Hide blog column if blogs are disabled. 2015-09-30 17:04:59 +01:00
Juan Leyva ccefec7360 MDL-50613 webservice: Remove risk bit masks for Web Service protocols
This will prevent to show a 'Critical' status in security overview
report when mobile services are enabled
2015-09-30 11:18:01 +02:00
Tim Lock b68783c870 MDL-51440 gradeimport_direct: fix config require statement 2015-09-30 10:53:51 +08:00
Eloy Lafuente (stronk7) 9c46e281cb Merge branch 'MDL-49143-28' of git://github.com/cameron1729/moodle into MOODLE_28_STABLE
Note: Added small fix to unit test.
2015-09-30 03:21:07 +02:00
Dan Poltawski 773582db11 Merge branch 'MDL-51402_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-09-29 20:54:44 +01:00
Dan Poltawski 964c02c3fe Merge branch 'MDL-51424-m28-master' of https://github.com/dthies/moodle into MOODLE_28_STABLE 2015-09-29 20:33:30 +01:00
Dan Poltawski 868fb3adf9 Merge branch 'MDL-42639_28' of git://github.com/dmonllao/moodle into MOODLE_28_STABLE 2015-09-29 10:20:15 +01:00
David Monllao 0b54d6d971 MDL-42639 user: user:viewalldetails enough to view some fields
The fields are:
- username
- idnumber
- institution
- department
2015-09-29 16:56:26 +08:00
Ryan Wyllie a6bd6b3cad MDL-51525 libraries: added graphlib to thirdpartylibs.xml 2015-09-29 07:32:57 +00:00
Frederic Massart 46067fbd30 MDL-51588 webservice: Allow CORS in webservice/pluginfile.php 2015-09-29 14:41:28 +08:00
Andrew Nicols acd86d0cf2 Merge branch 'MDL-43594-28' of git://github.com/junpataleta/moodle into MOODLE_28_STABLE 2015-09-29 14:01:33 +08:00
Jun Pataleta 365644eecf MDL-43594 mod_assign: Fix calendar update on course reset
This patch fixes the updating of calendar events when the course
is reset and its start date is changed.
2015-09-29 13:47:06 +08:00
Andrew Nicols 51d6415ef3 Merge branch 'MDL-35918-28' of git://github.com/ryanwyllie/moodle into MOODLE_28_STABLE 2015-09-29 13:43:32 +08:00
Eloy Lafuente (stronk7) c022a86c38 MDL-49143 LTI: Test resource_link_id in lti_build_request() 2015-09-29 13:42:43 +08:00
Cameron Ball fa3652ef9c MDL-49143 LTI: Fix missing resource id 2015-09-29 13:42:43 +08:00
Ryan Wyllie 08db4b5843 MDL-35918 javascript: dialogues screen reader support
The YUI notification dialogues will now set the appropriate
aria attributes when they are shown/hidden to allow screen
readers to navigate them correctly.

When the dialogue is shown all background elements will be marked
as hidden while the dialogue is marked as visible to a screen reader.

When the dialogue is closed the modified elements will be reverted
to their previous state and the dialogue will be marked as hidden to
a screen reader.
2015-09-29 04:53:23 +00:00
Andrew Nicols 3497350e2f Merge branch 'wip-MDL-51241-28' of git://github.com/abgreeve/moodle into MOODLE_28_STABLE 2015-09-29 12:47:20 +08:00
Andrew Nicols 396f954b05 Merge branch 'MDL-51476_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-09-29 12:07:25 +08:00
Dan Poltawski 997e7a966b Merge branch 'MDL-51305_28_too_many_gradeitem_fetches' of https://github.com/colin-umn/moodle into MOODLE_28_STABLE 2015-09-28 16:25:57 +01:00
Dan Poltawski 94249aa198 Merge branch 'mdl46710-moodle28' of https://github.com/tlock/moodle into MOODLE_28_STABLE 2015-09-28 14:56:58 +01:00
Dan Poltawski 1916b2863c Merge branch 'MDL-51390_28' of https://github.com/totara/openbadges into MOODLE_28_STABLE 2015-09-28 13:27:17 +01:00
Mark Nielsen 0c2ddb687a MDL-51498 core_grades: Prevent unnecessary grade record fetching
All of these changes make use of already
fetched grade data.  Without these changes,
the gradebook regrade process does not scale
well with very large courses because it fetches
many grade records, one at a time.
2015-09-28 11:12:59 +01:00
Dan Poltawski 8ae33bc947 Merge branch 'MDL-49482-28' of https://github.com/blckct/moodle into MOODLE_28_STABLE 2015-09-28 10:31:50 +01:00
Yuliya Bozhko 8589530727 MDL-51390 badges: Switch backpack URL to use HTTPS
Signed-off-by: Yuliya Bozhko <yuliya.bozhko@totaralms.com>
2015-09-28 10:08:00 +01:00
AMOS bot b9e92d05e1 Automatically generated installer lang files 2015-09-28 00:04:12 +08:00
Daniel Thies 45e591a85a MDL-51424 editor_atto: Save selection and editor contents after change
Conflicts:
	lib/editor/atto/yui/build/moodle-editor_atto-editor/moodle-editor_atto-editor-min.js
2015-09-25 09:50:06 -05:00
Daniel Thies a59f24b904 MDL-51227 editor_atto: Stop Chrome losing selection when formating
Conflicts:
	lib/editor/atto/yui/build/moodle-editor_atto-editor/moodle-editor_atto-editor-min.js
2015-09-25 09:38:48 -05:00
Tim Hunt 58d7de73ac MDL-51476 questions: manual grading validation for ungraded Qs
The change in MDL-51090 broke manually commenting on questions for which
no mark is given (max mark == 0). This fixes it, with unit tests.

Thanks to Nick Phillips for the original suggestion of the fix.
2015-09-25 14:02:32 +01:00
Tim Lock e87c74e9f5 MDL-46710 mod_lti: fix logging and completion tracking in new windows 2015-09-25 06:28:28 +09:30
Eloy Lafuente (stronk7) d8edd556ab MDL-49482 sqlsrv: Implement support of Offset/Fetch in SQL Server 2012+ 2015-09-24 20:13:17 +02:00
Jakub Kania 68629452fa MDL-49482 mssql: Implement support of Offset/Fetch in SQL Server 2012+. 2015-09-24 20:13:17 +02:00
Eloy Lafuente (stronk7) 3377cbc3ba weekly release 2.8.8+ 2015-09-24 16:07:14 +02:00
rajesh Taneja 07f3c02ec7 MDL-49973 behat: Fixed string change from Continue to Delete 2015-09-24 10:35:37 +08:00
Eloy Lafuente (stronk7) 837c4dab86 Merge branch 'wip-MDL-51259-28' of git://github.com/abgreeve/moodle into MOODLE_28_STABLE 2015-09-23 16:29:06 +02:00
rajesh Taneja 551dce86ba MDL-51266 unittest: replaced low level phpunit_util calls 2015-09-23 15:44:57 +08:00
David Monllao f7666835c7 MDL-50332 enrol_self: Setting form url for guests
Credit to Andrew Nicols.
2015-09-23 11:53:12 +08:00
Adrian Greeve f9dfe738aa MDL-51241 cohorts: Update to cohort query.
This improves the speed of returning a list of
cohorts. Thanks to François Gannaz for providing
this patch.
2015-09-23 11:38:46 +08:00
Dan Poltawski 3bf8439e3a Merge branch 'MDL-49973-28' of git://github.com/cameron1729/moodle into MOODLE_28_STABLE 2015-09-22 09:44:46 +01:00
Dan Poltawski c6a6ce7914 Merge branch 'MDL-46157-28' of git://github.com/cameron1729/moodle into MOODLE_28_STABLE 2015-09-22 08:15:02 +01:00
Andrew Nicols 599eeea2a5 Merge branch 'MDL-51190-28' of https://github.com/pauln/moodle into MOODLE_28_STABLE 2015-09-22 08:32:18 +08:00
Ferenc Lengyel bfd6727b42 MDL-51402 quiz: notification emails should respect grouping
In the case where teachers do not have the accessallgroups capability,
we only send "an attempt has been sumbitted "notification to teachers
in the same group as the student who submitted.

At the moment this considers all groups in the course. If this
particular quiz has a grouping set, then the logic should only consider
the groups in that grouping.
2015-09-21 13:31:15 +01:00
Dan Poltawski 606cf274a7 Merge branch 'MDL-51052_28' of https://github.com/dmonllao/moodle into MOODLE_28_STABLE 2015-09-21 10:53:30 +01:00
Dan Poltawski 0dbd2594e8 Merge branch 'MDL-48165-28-dimgrades' of git://github.com/mudrd8mz/moodle into MOODLE_28_STABLE 2015-09-21 10:14:50 +01:00
Andrew Nicols 0c73e5335c Merge branch 'MDL-50332_28' of git://github.com/dmonllao/moodle into MOODLE_28_STABLE 2015-09-21 15:47:07 +08:00
David Monllao 18fd195086 MDL-50332 enrol_self: Formatting unavailable instances error messages
Many thanks to Andrew Nicols as this patch is based on his
proposal. Thanks Andrew.
2015-09-21 15:44:29 +08:00
Andrew Nicols 05c252e9b0 Merge branch 'MDL-51431_2_8' of https://github.com/andrewhancox/moodle into MOODLE_28_STABLE 2015-09-21 08:13:10 +08:00
David Monllao a23c44cddf MDL-51052 dml: More info about mysql and case & accent sensitiveness 2015-09-18 11:49:26 +08:00
Charles Fulton f8e0b4ece1 MDL-51052 dml: support for sql_like() under utf8_bin 2015-09-18 11:49:25 +08:00
Adrian Greeve 76ebf76be1 MDL-51259 mod_data: ratings of items not activated.
When selecting a rating method, the restrict rating
to items with dates would be automatically enabled if
not checked. This code brings the data module inline
with forum and glossary.
2015-09-18 07:28:56 +08:00
Eloy Lafuente (stronk7) a91caeefc7 weekly release 2.8.8+ 2015-09-17 18:01:22 +02:00
Simey Lameze e1efcbd1db MDL-50959 gradebook: fix XML grade export 2015-09-17 10:37:09 +08:00
Andrew Hancox 210349f647 MDL-51431 enrol_flatfile: Fix for startdate when updating users 2015-09-16 10:56:55 +01:00
Marina Glancy 193f5d4029 MDL-46705 admin: Validate unique shortname for frontpage course 2015-09-16 14:48:03 +08:00
Marina Glancy 489db61206 MDL-51427 user: correctly use strings for phone1 and phone2
Thanks to Olumuyiwa Taiwo for original patch
2015-09-16 13:36:54 +08:00
David Monllao 685aa0b7c9 Merge branch 'MDL-49561_m28' of git://github.com/markn86/moodle into MOODLE_28_STABLE
Conflicts:
	lib/bennu/readme_moodle.txt
2015-09-16 09:59:04 +08:00
David Monllao 57caaace44 Merge branch 'MDL-46705-28' of git://github.com/dkns/moodle into MOODLE_28_STABLE 2015-09-16 09:46:13 +08:00
Eloy Lafuente (stronk7) 42ba6f011e Merge branch 'MDL-50685_28' of git://github.com/dmonllao/moodle into MOODLE_28_STABLE 2015-09-16 02:16:38 +02:00
Eloy Lafuente (stronk7) 8ada99201a Merge branch 'MDL-49032_28' of https://github.com/stronk7/moodle into MOODLE_28_STABLE 2015-09-16 00:58:56 +02:00
Eloy Lafuente (stronk7) 2fab7166b5 MDL-49032 lib/bennu: update readme to document the change 2015-09-16 00:54:15 +02:00
Joby Harding f27c022e5c MDL-49032 lib/bennu: use HTAB only when folding lines 2015-09-16 00:45:38 +02:00
Eloy Lafuente (stronk7) 16eedce0c6 Merge branch 'MDL-50959-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-09-15 23:36:31 +02:00
Eloy Lafuente (stronk7) 5d4bccd775 Merge branch 'MDL-50892-28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-09-15 23:35:23 +02:00
David Monllao 2648522e3d Merge branch 'MDL-50884-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-09-15 17:16:30 +08:00
Cameron Ball e13126f85a MDL-49973 behat: Update delete button names
Conflicts:
	course/format/topics/tests/behat/edit_delete_sections.feature
	course/format/weeks/tests/behat/edit_delete_sections.feature
2015-09-15 15:39:32 +08:00
Andrew Davis 1237ba1962 MDL-49973 changed continue to delete on delete confirmations
Conflicts:
	course/editsection.php
2015-09-15 15:38:08 +08:00
David Monllao 3e08b5c04e Merge branch 'MDL-50921-28' of git://github.com/ryanwyllie/moodle into MOODLE_28_STABLE 2015-09-15 14:27:32 +08:00
David Monllao 978ef29e47 MDL-51048 backup: Removing unnecessary var 2015-09-15 13:44:36 +08:00
David Monllao 5c03acf518 Merge branch 'MDL-51048_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-09-15 13:44:32 +08:00
Andrew Nicols 8d5092cd84 Merge branch 'MDL-51290-28' of git://github.com/cameron1729/moodle into MOODLE_28_STABLE 2015-09-15 13:06:54 +08:00
Paul Nicholls add6322e5a MDL-51190 javascript: Make "maximised embed" compatible with MS Edge
MS Edge exhibits strange behaviour when M.util.init_maximised_embed hides
the embedded document by setting its width and height to 0px.  Toggling
display:none instead achieves the intended goal without breaking Edge.
2015-09-15 16:28:42 +12:00
David Monllao c87b932f1c Merge branch 'MDL-51008-28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-09-15 11:22:16 +08:00
Marina Glancy 78eb3ee407 MDL-51408 badges: fix criteria for custom profile fields 2015-09-15 11:17:42 +08:00
David Monllao 38e0d68f0a Merge branch 'MDL-51147_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-09-15 10:09:52 +08:00
David Monllao 6c974ef376 MDL-51363 mod_scorm: Removing whitespaces 2015-09-15 10:03:27 +08:00
David Monllao 17c975874f Merge branch 'm28_MDL-51363_Fix_Default_Settings_1x_Restore' of git://github.com/scara/moodle into MOODLE_28_STABLE 2015-09-15 10:02:19 +08:00
Eloy Lafuente (stronk7) 07d52ad818 Merge branch 'MDL-46239-28-2' of git://github.com/xow/moodle into MOODLE_28_STABLE 2015-09-15 01:03:08 +02:00
Matteo Scaramuccia 3f121ac514 MDL-51363 SCORM: fixed default settings on restoring 1.x backups 2015-09-15 00:01:33 +02:00
Cameron Ball eddc63f4e8 MDL-51290 user: Expand picture section in profile by default 2015-09-14 17:54:06 +08:00
David Monllao 3f72e79ee1 Merge branch 'wip-mdl-51101-m28' of git://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-09-14 16:18:55 +08:00
David Monllao 000be9c016 Merge branch 'MDL-51170-28' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE 2015-09-14 14:14:48 +08:00
David Monllao 8a6c5244c4 Merge branch 'MDL-51191-moodle28' of git://github.com/StudiUM/moodle into MOODLE_28_STABLE 2015-09-14 13:59:40 +08:00
David Monllao 5319119569 Merge branch 'MDL-51253_MOODLE_28' of git://github.com/BenKelada/moodle into MOODLE_28_STABLE 2015-09-14 13:09:18 +08:00
Ben Kelada 6dd7f1d452 MDL-51253 forum: fix urls for exceptions and redirects 2015-09-14 14:20:43 +10:00
Simey Lameze 59d26c45d9 MDL-50884 auth_shibboleth: fix logout handler url generation
This patch fixes the shibboleth redirect url generation, that can create invalid url
if the shibboleth logout_handler setting has a parameter generating two parameters
with (?) instead of (&).

Thanks to Matteo Boni for the proposed solution.
2015-09-14 09:52:20 +08:00
David Monllao 596950852c Merge branch 'MDL-51232_28' of git://github.com/jinuabraham/moodle into MOODLE_28_STABLE 2015-09-14 09:39:30 +08:00
Simey Lameze 6deeba6bcc MDL-50959 gradebook: fix XML grade publishing score 2015-09-14 09:05:49 +08:00
Daniel Thies 85cf55ebaf MDL-51228 atto_editor: Add documententation for inlineFormat flag 2015-09-13 14:26:56 -05:00
Eloy Lafuente (stronk7) e494078a27 Moodle release 2.8.8 2015-09-12 02:03:02 +02:00
Colin Campbell a03a01f2ad MDL-51305 grade: Fix slow grade operations by setting grade_item early.
Exports were fetching the grade item for every item-user combination.
Setting the grade_item object on the grade_item early prevents that.
2015-09-11 15:23:06 -05:00
Jean-Philippe Gaudreau 80764a301f MDL-51191 assign: Optimizing slow SQL query for MySQL 2015-09-11 11:12:24 -04:00
Jetha Chan 596e4603ae MDL-50685 core_form: disable hidden options, don't just hide 2015-09-11 15:09:29 +08:00
Marina Glancy 355e943c4b MDL-50892 mod: allow activity to have name '0' 2015-09-11 10:52:35 +08:00
Eloy Lafuente (stronk7) 36750a2872 weekly release 2.8.7+ 2015-09-10 11:09:59 +02:00
Eloy Lafuente (stronk7) 6c5f24d74d Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-09-10 11:09:53 +02:00
Rajesh Taneja 8102007398 MDL-51101 behat: Fixed wrong hover step usage 2015-09-10 14:56:24 +08:00
rajesh Taneja c67f4ad661 MDL-50516 behat: Back/next button reloads page
When next/back button is pressed in phantomjs/browserkit
it reload page, so adding a bug_phantomjs, so that we can
test the lesson re-attempt scenario
2015-09-10 14:52:40 +08:00
Tim Hunt d881f12cde MDL-51147 qtype_match: stats should cope even if Q edited badly
The numbers become pretty meaningless, but we need to avoid fatal
errors.
2015-09-09 16:48:39 +01:00
Andrew Nicols 447e1a755f Merge branch 'MDL-50852-28' of git://github.com/junpataleta/moodle into MOODLE_28_STABLE 2015-09-09 15:40:11 +08:00
Jun Pataleta c845d8e2e0 MDL-50852 formslib: Fixed client-side form validation problem.
This patch fixes the problem of client validation being broken when
shortforms is not enabled. This issue is caused by moodle-core-event
module not being loaded and the broadcast parameter in the
Y.Global.publish set to 2 instead of true.
2015-09-09 15:36:25 +08:00
Mark Nelson 63c2a82186 MDL-50516 mod_lesson: changes to existing behat tests 2015-09-09 15:31:13 +08:00
Mark Nelson be1f371d0d MDL-50516 mod_lesson: added behat tests 2015-09-09 15:31:13 +08:00
Mark Nelson 3a25aa92e1 MDL-50516 core_behat: added ability to go back, forward and reload the browser 2015-09-09 15:31:13 +08:00
Mark Nelson 39b50f7d3e MDL-50516 mod_lesson: fixed issue with grade not using minquestions
It's possible to reach the end of the lesson, get your result,
click back until you get to the last question, answer it correctly
and then be awarded a result of 100%. This was because the grade
calculation would only include the questions answered, rather than
all of them in the lesson. However, you can not fix this by always
grading by the amount of questions in the lesson as some lessons
bypass certain questions depending on the answer to previous ones.
The minquestion setting can now successfully be used to prevent this
behaviour by rewording the misleading string and adding logic.
2015-09-09 15:31:13 +08:00
Mark Nelson 9d5b339126 MDL-50516 mod_lesson: prevented deletion of previous attempts
The 'startlastseen' flag was removing any previous attempts
the user had from the DB. This meant that the user could
simply re-answer the question, regardless of the number
of attempts allowed.
2015-09-09 15:31:13 +08:00
Mark Nelson 67e3f70bb1 MDL-50516 mod_lesson: prevented user from repeating question
It was possible in the lesson module for a user to
answer a question, get the result, then click back
in the browser and re-answer it, even if they exceeded
the number of attempts allowed per question.
2015-09-09 15:31:12 +08:00
Eloy Lafuente (stronk7) 84cccb56a1 Merge branch 'wip-mdl-51322-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-09-09 08:25:31 +02:00
Ankit Agarwal 20ff15e22b MDL-50173 ratings: Use proper checks to ensure ratings are viewable.
Mainly to verify groups visibility this new callback has been created.

Note this was originally 2 commits but for amending purposes they have
been squashed.
2015-09-09 04:42:19 +02:00
Andrew Nicols a20bcf6598 Merge branch 'wip-MDL-34938-m28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-09-09 09:48:24 +08:00
John Okely a44fed5c80 MDL-50709 groups: Prevent XSS in grouping description 2015-09-08 12:50:02 +02:00
Dan Poltawski 0394cd902d Merge branch 'wip-MDL-50323-28' of git://github.com/abgreeve/moodle into MOODLE_28_STABLE 2015-09-08 09:14:11 +01:00
Cameron Ball 7b027ea79c MDL-46157 drag and drop: Improve item labels
Ignore the edit menu when determining the region to drag.

Conflicts:
	lib/yui/build/moodle-core-dragdrop/moodle-core-dragdrop-min.js
2015-09-08 11:46:37 +08:00
Marina Glancy b40159e771 MDL-34938 enrol_meta: sync enrolment start/end dates 2015-09-08 10:26:08 +08:00
Andrew Nicols b77fbfbc5d Merge branch 'MDL-51245_28' of git://github.com/stronk7/moodle into MOODLE_28_STABLE 2015-09-08 10:24:43 +08:00
Marina Glancy adb65a80f9 MDL-51008 grades: show correct default value in overview report 2015-09-08 10:11:47 +08:00
Adrian Greeve 5b9d6e3e7a MDL-50323 themes: Course unordered lists correctly styled.
Thank you to Ann Adamcik for providing this patch.
2015-09-08 09:39:07 +08:00
Eloy Lafuente (stronk7) a813129dc5 MDL-51245 sqlsrv: Diagnose missing READ_COMMITTED_SNAPSHOT mode
Without it, transactions are executed in standard READ_COMMITED
mode, without snapshoting/row versioning, leading to update
conflicts under high concurrency.
2015-09-08 02:59:53 +02:00
Eloy Lafuente (stronk7) 0e5bcf0a0b MDL-51245 mssql: Diagnose missing READ_COMMITTED_SNAPSHOT mode
Without it, transactions are executed in standard READ_COMMITED
mode, without snapshoting/row versioning, leading to update conflicts
under high concurrency.
2015-09-08 02:59:50 +02:00
Petr Skoda 5337b22952 MDL-50860 core: improve creation of random strings 2015-09-08 01:09:13 +02:00
Tim Lock 7fb8fcfd9d MDL-42670 mod_assign: Fix recent activity block when blind marking is on 2015-09-07 22:44:38 +02:00
Corey Wallis f558ddcc4f MDL-51048 IMS-CC: Fix import & export of true/false questions 2015-09-07 16:06:00 +01:00
Marina Glancy f7fbc80766 MDL-50744 enrol_meta: fix incorrect role assign 2015-09-07 10:29:08 +01:00
Adrian Greeve 1d70050f33 MDL-48371 editors: Option for removing managefiles
We want to remove the managefiles button from the
editors in the wiki so that students don't delete
each others files.
2015-09-07 09:59:32 +01:00
rajesh Taneja 8b55f35808 MDL-51322 behat: ensure the window is properly closed
This is to ensure we have other window closed
so there is no race-around condition
2015-09-07 16:54:21 +08:00
Marina Glancy f19717481d MDL-50921 message: allow popup messages from noreply user
Thanks Gary Harris for the patch
2015-09-07 08:15:10 +00:00
John Okely 8f4379b3d5 MDL-46239 task: Improve error message when timezone does not exist
Credit to Mark Nielsen for initial patch.
2015-09-07 15:51:27 +08:00
Mark Nelson dbeeebc0f6 MDL-49561 core_lib: added info to bennu readme
Also did some minor tweaks to existing code.
2015-09-04 19:40:02 -07:00
Lars Anderson e4d7edbf4f MDL-49561 core_calendar: Fix ical export for events with no duration 2015-09-04 19:40:01 -07:00
Marina Glancy 0e0c8c0dd7 MDL-41042 coursecat: better handle changes in coursecontact 2015-09-04 11:54:33 +08:00
Damyon Wiese f44ac5d3bf MDL-48861 assign: Fix the "needs grading" filter
When auto-creating a new grade record - do not set the timemodified > than the submission timemodified
2015-09-04 11:07:06 +08:00
rajesh Taneja 9c5a63ef1f MDL-51321 behat: Fixed save button name 2015-09-04 09:10:23 +08:00
AMOS bot 5304b65e2b Automatically generated installer lang files 2015-09-04 00:04:13 +08:00
Dan Poltawski a332c3c4e8 weekly release 2.8.7+ 2015-09-03 12:31:54 +01:00
Dan Poltawski 7dae6eede4 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-09-03 12:31:52 +01:00
rajesh Taneja d0ac61f870 MDL-51090 behat: switch to main window 2015-09-03 10:26:58 +01:00
David Monllao 684e59ea5f Merge branch 'MDL-51179-28' of git://github.com/damyon/moodle into MOODLE_28_STABLE
Conflicts:
	lib/upgrade.txt
2015-09-03 10:38:36 +02:00
Ryan Wyllie 0b9cf14980 MDL-49536 theme_clean: update help text for logo
Updated the help text on the theme settings page to
mention that the theme logo will only be displayed on
the front page and login page.
2015-09-03 10:37:58 +02:00
rajesh Taneja f3661a7ea8 MDL-51285 mod_forum: Discussion post should not have same time stamp
Discussion post are sorted by timemodified
if they have same timemodified then results
will be random
2015-09-03 15:34:33 +08:00
Tim Hunt b099c22b24 MDL-51090 question manual grading: fixing for testing issues 2015-09-02 15:09:55 +08:00
David Monllao 9a7fa2710a Merge branch 'MDL-51090_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-09-02 09:50:17 +08:00
David Monllao d772d11aa6 Merge branch 'MDL-50971-m28' of git://github.com/NeillM/moodle into MOODLE_28_STABLE 2015-09-02 09:40:16 +08:00
David Monllao 41f04955f4 Merge branch 'MDL-50920-2.8' of git://github.com/sk-unikent/moodle into MOODLE_28_STABLE 2015-09-02 08:45:14 +08:00
Eloy Lafuente (stronk7) f1b608bb5a Merge branch 'MDL-50641-28' of git://github.com/danpoltawski/moodle into MOODLE_28_STABLE 2015-09-02 01:53:41 +02:00
Tim Hunt 5c97a8dae4 MDL-51090 question: further refinements to validating manual grades 2015-09-01 23:10:18 +01:00
Nelson Moller df0c2e9578 MDL-51090: mod_quiz grading validation of an essay question
An invalid format is casted to 0 (if a string) or to some truncated value in other cases (ex: 10..5).
2015-09-01 23:09:23 +01:00
David Mudrák fa36f1d1ab MDL-48165 workshop: Validate the rubric editing form 2015-09-01 23:39:43 +02:00
David Mudrák 235d8a4196 MDL-48165 workshop: Add support for assessment forms validation 2015-09-01 23:39:41 +02:00
Dan Poltawski 2583cc53e4 MDL-50690 themes: fix commenting coding style
(See also CONTRIB-5891)
2015-09-01 21:12:39 +01:00
Dan Poltawski 6430d84b77 Merge branch 'wip_MDL-50690_m28' of git://github.com/gjb2048/moodle into MOODLE_28_STABLE 2015-09-01 20:59:59 +01:00
AMOS bot da81de59d0 Automatically generated installer lang files 2015-09-02 00:05:35 +08:00
Dan Poltawski da0950d2c5 Merge branch 'MDL-51236-28' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE 2015-09-01 15:34:03 +01:00
David Monllao 836b029252 Merge branch 'MDL-51234-M28' of git://github.com/lazydaisy/moodle into MOODLE_28_STABLE
Conflicts:
	theme/bootstrapbase/style/moodle.css
2015-09-01 18:35:09 +08:00
David Monllao 486456d66c Merge branch 'MDL-51109-28' of git://github.com/danpoltawski/moodle into MOODLE_28_STABLE 2015-09-01 18:31:58 +08:00
Dan Poltawski 56a1ac4d38 MDL-51109 task: more debug info for failed scheduled tasks 2015-09-01 11:00:46 +01:00
Dan Poltawski 6b6905b69f Merge branch 'MDL-45841_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-09-01 10:14:47 +01:00
David Monllao 963b373666 Merge branch 'wip-mdl-50963-m28' of git://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-09-01 16:06:37 +08:00
rajesh Taneja 12804263f4 MDL-50963 behat: fixed error string in behat 2015-09-01 14:49:10 +08:00
David Monllao 99a146b552 Merge branch 'MDL-50999-28' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE 2015-09-01 14:35:57 +08:00
Damyon Wiese 42e3e29791 MDL-51179 Atto: Extend autosave fix to cover text changes
Added new functions to editor api - set/get_text so the
original form text can be determined from an editor.

When calling use_editor() you should first call set_text() with
the text that will be inserted in the form element.

There is also a new scheduled task for cleaning Atto autosave drafts.
2015-09-01 13:37:27 +08:00
Damyon Wiese 31b84bd279 MDL-51179 Atto: Add a behat test for autosave 2015-09-01 13:36:30 +08:00
Damyon Wiese 8162eb2133 MDL-51179 Atto: When a resume is aborted - create a fresh draft for future saves. 2015-09-01 13:36:30 +08:00
Damyon Wiese b938b7a76a MDL-51179 Atto: Abort autosave if there are more recent changes to the files
If the files in the draft area have been modified more recently than the timestamp
of the draft - do not restore the files, or you will delete any newer files. We
cannot really guess here - merging the 2 lists of files will be wrong.
2015-09-01 13:36:30 +08:00
Marina Glancy b524b28633 MDL-50791 auth: add heading on signup form page 2015-09-01 02:02:27 +02:00
Marina Glancy b8faa63b7c MDL-50791 forms: make server validation errors accessible 2015-09-01 02:02:21 +02:00
Clement Smith 454882a4fa MDL-50963 lang/en/grades.php: Improve bad grade error message
The error message received when inputting a grade value that is too
low indicates that zero is a valid grade value. This is incorrect as
the lowest valid grade value is 1. This updates the error message to
indicate the minimum acceptable grade value is 1, not 0.
2015-09-01 01:46:05 +02:00
Eloy Lafuente (stronk7) ab5884d16d Merge branch 'MDL-49536-28' of git://github.com/ryanwyllie/moodle into MOODLE_28_STABLE 2015-08-31 20:48:36 +02:00
David Monllao 0448dbe7c1 Merge branch 'MDL-51131-28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-08-31 14:08:10 +08:00
David Monllao 15737f3df5 Merge branch 'MDL-51084-28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-08-31 12:53:59 +08:00
Michael Aherne 4750b1379f MDL-51181 config: Correct documentation of lock_factory 2015-08-31 10:55:44 +08:00
David Monllao 16134e337f Merge branch 'MDL-51215-28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-08-31 10:45:51 +08:00
Jinu Abraham 12259f01ce MDL-51232 mod_book: Filter name header 2015-08-31 12:06:29 +09:30
lazydaisy 7d8bf42081 MDL-51234 theme_bootstrapbase: hover hardly visible on invert/collapse 2015-08-30 20:13:03 +01:00
Kevin Wiliarty 5608e36d11 MDL-51229 theme: display docked block on top of fixed navbar 2015-08-30 09:44:23 -04:00
Neill Magill 70fb7ac4b3 MDL-50971 ActionMenu: Action menus cause page to jump when closing
This patch changes the behavior of open action menus when using a mouse.

Before this patch when clicking on the page with an open action menu the focus would be
returned to the action menu's call button. This could cause the page to jump when a
mouse user did not close an action menu, scrolled and then tried to perform another
action on the page.

After this patch when clicking the focus will not be returned to the action menu's call button.
The behavior of the script will not be changed when using the keyboard.
2015-08-28 12:16:46 +01:00
Marina Glancy e564027dcf MDL-51084 tool_customlang: return to the same page after submit 2015-08-28 16:20:51 +08:00
Marina Glancy 82c123c722 MDL-44707 block_html: copy files when copying instance 2015-08-28 16:04:27 +08:00
Dan Poltawski f66090899d weekly release 2.8.7+ 2015-08-28 07:38:11 +01:00
Andrew Nicols 2ccd546b62 MDL-51236 phpunit: Prevent testsuite name conflicts
The testsuite name is fed straight into a class_exists() in
PHPUnit_Framework_TestSuite. In some cases, e.g. cachestore_static, the
class does exist, it's then fed into a ReflectionClass, and the test fails.

The testsuite needs to not conflict with any classes which could be
autoloaded in Moodle core.
2015-08-28 14:27:04 +08:00
Ryan Wyllie d74ec94722 MDL-49536 theme_clean: logo only on front and login
The logo for the clean and more themes will only be
displayed on the front page and login page as it was
replacing the header information on other pages within
Moodle, causing users to lose information on the page.
2015-08-28 02:43:21 +00:00
Daniel Thies 981379ffc2 MDL-51228 editor_atto: Apply style in plugins if selection is collapsed 2015-08-27 12:33:01 -05:00
Gareth J Barnard 048444fd21 MDL-50690 themes: Theme cache SVG images are not created. 2015-08-27 15:40:03 +01:00
Dan Poltawski e9e81544e3 MDL-49826 grade: hide singleview links when no permissions
Singleview only supports grade editors not viewers at this time.
2015-08-27 13:17:43 +02:00
Eloy Lafuente (stronk7) 09890fcd8e Merge branch 'MDL-51148-28-enfix' of git://github.com/mudrd8mz/moodle into MOODLE_28_STABLE 2015-08-27 13:00:45 +02:00
Marina Glancy c34a1b7b3c MDL-51215 course: redirect to manage appropriate category 2015-08-27 11:14:47 +08:00
Helen Foster b0f17b55f3 MDL-51148 lang: Merge English strings from the en_fix language pack 2015-08-26 17:25:49 +02:00
Dan Poltawski 86867d3248 Merge branch 'MDL-49701-28' of github.com:lameze/moodle into MOODLE_28_STABLE 2015-08-26 08:13:51 +01:00
Dan Poltawski 5c82c8e43c MDL-50641 rss: fix front page rss links
Fallback to guest user token when no user is specified in rss_get_url
rather than generating a junk token which is no use to anyone, this
matches existing logic which has been in place in forum for a while
and avoids custom handling all over the place.
2015-08-26 08:10:17 +01:00
Simey Lameze d49bf95236 MDL-49701 mod_lesson: add missing closebeforeopen string 2015-08-26 10:39:28 +08:00
David Monllao c06e48e541 Merge branch 'wip_MDL-50869_m28' of git://github.com/gjb2048/moodle into MOODLE_28_STABLE 2015-08-26 09:45:29 +08:00
David Monllao fd44933e9c Merge branch 'MDL-50996_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-08-25 14:27:14 +08:00
Marina Glancy 66c0fccb9e MDL-51131 tags: remove instances when course is deleted 2015-08-25 13:15:07 +08:00
Marina Glancy 728f41933c MDL-50973 admin: do not throw exception on /admin/ 2015-08-25 10:15:52 +08:00
Clement Smith 3c23486ad2 MDL-50957 grade/report/user: Fix division by zero
When using "sum of grades" and $grademax is zero, a division by zero
error occurs in fill_contributions_column() in
grade/report/user/lib.php.
2015-08-25 10:09:08 +08:00
Eloy Lafuente (stronk7) fe9f648edc Merge branch 'MDL-50714-28' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE 2015-08-25 00:06:50 +02:00
Tim Hunt 8ebae0d3d6 MDL-45841 forum: show unread posts on blog-style forum front page 2015-08-24 21:45:46 +01:00
Dan Poltawski 9fa2166a7b Merge branch 'MDL-49701_28' of git://github.com/jmvedrine/moodle into MOODLE_28_STABLE 2015-08-24 15:14:16 +01:00
Dan Poltawski abf7126490 Merge branch 'MDL-40179-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-08-24 13:40:10 +01:00
Davo Smith 8781542c0f MDL-49826 gradereport_singleview: fix permission check
Users with capability 'moodle/grade:edit' should be able to edit grade values
- 'moodle/grade:manage' is not needed, as grade items are not being changed.
2015-08-24 10:39:46 +01:00
Dan Poltawski 549e0ff729 Merge branch 'MDL-47450-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-08-24 10:25:34 +01:00
Tim Hunt 552efbb499 MDL-50996 quiz: fix review error with unusual permissions 2015-08-24 10:02:12 +01:00
David Monllao 596aa615a3 Merge branch 'MDL-50958-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-08-24 15:41:58 +08:00
Marina Glancy b9228b0272 MDL-51184 themes: correctly check $CFG->svgicons
Thanks to Ralf Wiederhold for pointing out the bug
2015-08-24 11:08:33 +08:00
Andrew Nicols 61662e6896 MDL-51170 core: Scheme section of URL should be case insensitive 2015-08-21 12:27:16 +08:00
Bruce Silver 072ff98b64 MDL-50958 block_messages: declare missing stdClass object 2015-08-21 11:30:39 +08:00
Andrew Nicols 9fe894c779 MDL-50714 mod_forum: Add tests for all groupmodes 2015-08-21 08:22:31 +08:00
Andrew Nicols 7603f1589c MDL-50714 mod_forum: Correct use of movedicussions cap when posting
The ability to view the group dropdown was too closely related to the
movediscussions capability when posting, or editing a forum post.

The movedicussions capability should only be considered for some parts of
this logic. Users should be able to select the group to post to when
writing message, as long as they have access to that group.
2015-08-21 08:22:24 +08:00
Gareth J Barnard 7991c2d105 MDL-50869 themes: Quiz feedback colours are not accessible. 2015-08-20 16:54:50 +01:00
Dan Poltawski ef176837dc weekly release 2.8.7+ 2015-08-20 14:24:32 +01:00
Andrew Nicols 8511869bfd MDL-42634 theme: Increase margin on activity instance to not cover controls
Conflicts:
	theme/bootstrapbase/style/moodle.css
2015-08-20 15:45:21 +08:00
David Monllao 1c23a1c000 Merge branch 'wip-mdl-46387-m28' of git://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-08-20 11:22:39 +08:00
Rajesh Taneja 4a46739201 MDL-46387 behat: fixed subscript feature scenario 2015-08-20 11:20:10 +08:00
Marina Glancy ae125772a3 MDL-50880 message: correctly compare with empty string
Thanks to David Herney Bernal for providing a fix
2015-08-20 10:32:20 +08:00
David Monllao 6ff144eef4 MDL-50391 mod_lti: Fixing indentation 2015-08-20 09:49:36 +08:00
Eloy Lafuente (stronk7) a5514edf92 Merge branch 'MDL-50801_28' of git://github.com/dmonllao/moodle into MOODLE_28_STABLE 2015-08-19 20:50:13 +02:00
Simey Lameze 24cb5ad791 MDL-40179 auth_cas: change is_proxybypass parameter to use server url 2015-08-19 14:33:44 +08:00
Rajesh Taneja cb8d778e68 MDL-46387 behat: Backport behat user menu step and modified scenario
- editor preference page is not available in 28
- Profile is My profile under user menu
2015-08-19 13:57:07 +08:00
Andrew Nicols e0d9de0f43 MDL-42634 theme: Increase margin on sectionname to not cover controls 2015-08-19 04:49:25 +02:00
Eloy Lafuente (stronk7) 7b52f14f0f Merge branch 'MDL-49085_28' of git://github.com/dmonllao/moodle into MOODLE_28_STABLE 2015-08-19 01:07:13 +02:00
Eloy Lafuente (stronk7) 2fe5bfe2e1 Merge branch 'MDL-46078-28' of git://github.com/damyon/moodle into MOODLE_28_STABLE 2015-08-19 01:00:07 +02:00
Dan Poltawski 5b8994d4aa Merge branch 'wip-MDL-30315-28' of git://github.com/abgreeve/moodle into MOODLE_28_STABLE 2015-08-18 13:19:59 +01:00
Eloy Lafuente (stronk7) d99c11ecec Merge branch 'MDL-47449-28' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE 2015-08-18 13:35:53 +02:00
Dan Poltawski 81d52cc2df MDL-46387 shifter: missing built changes 2015-08-18 12:32:47 +01:00
Dan Poltawski 59031a90ad Merge branch 'MDL-46387-m28-master' of https://github.com/dthies/moodle into MOODLE_28_STABLE 2015-08-18 12:22:18 +01:00
Dan Poltawski 7709e41cfc Merge branch 'MDL-49841-28' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE 2015-08-18 11:02:57 +01:00
Adrian Greeve db99a3e09e MDL-30315 grades: Unit test for grade import. 2015-08-18 17:06:04 +08:00
Adrian Greeve 9784aa23e7 MDL-30315 gradebook: Uploading feedback doesn't override grades. 2015-08-18 17:06:04 +08:00
David Monllao 60a103b519 Merge branch 'MDL-50391-MOODLE_28' of git://github.com/aspark21/moodle into MOODLE_28_STABLE 2015-08-18 12:13:47 +08:00
David Monllao 3058d15ff4 MDL-49085 block_tag_youtube: Using Youtube data api v3 2015-08-18 11:16:44 +08:00
David Monllao 69199d4ccc Merge branch 'MDL-51102-28' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE 2015-08-18 10:41:19 +08:00
Dan Poltawski 869af180a6 Merge branch 'MDL-44828-28' of git://github.com/junpataleta/moodle into MOODLE_28_STABLE 2015-08-17 14:24:59 +01:00
Dan Poltawski eac5dcfe6c Merge branch 'MDL-42634-28' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE 2015-08-17 11:45:12 +01:00
David Monllao 1213a0e405 Merge branch 'MDL-51016-m28' of git://github.com/micaherne/moodle into MOODLE_28_STABLE 2015-08-17 14:22:38 +08:00
David Monllao 44cc619bbd Merge branch 'MDL-50637-2.8' of git://github.com/sk-unikent/moodle into MOODLE_28_STABLE 2015-08-17 13:56:58 +08:00
David Monllao 6ab5491bbf Merge branch 'wip-MDL-50881-m28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-08-17 12:04:11 +08:00
David Monllao b210b577ec Merge branch 'MDL-50911-moodle28' of git://github.com/StudiUM/moodle into MOODLE_28_STABLE 2015-08-17 11:59:22 +08:00
Marina Glancy 00390e5b14 MDL-50932 cache: fix bug in prescanned file store
Thanks to Mark Nielsen for providing a patch
2015-08-17 11:45:47 +08:00
David Monllao d66f3df82d Merge branch 'MDL-51057-M28' of git://github.com/lazydaisy/moodle into MOODLE_28_STABLE 2015-08-17 09:54:46 +08:00
David Monllao 93f2239726 Merge branch 'MDL-51077-m28' of git://github.com/sammarshallou/moodle into MOODLE_28_STABLE 2015-08-17 09:46:51 +08:00
David Monllao 1ed375f2f5 Merge branch 'MDL-51088-28' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE 2015-08-17 09:26:31 +08:00
Andrew Nicols 4291ad3e8e MDL-51102 behat: Add a non-JS version of wait 2015-08-17 08:14:02 +08:00
Daniel Thies 9957c7f7fd MDL-46387 editor_atto: Add behat test for sub/sup 2015-08-16 16:02:05 -05:00
sam marshall f69d98df43 MDL-51077 Availability: Date restriction unit test static not cleared 2015-08-14 10:54:00 +01:00
Andrew Nicols 305ee3fc27 MDL-47449 completion: Ignore timemodified when comparing 2015-08-14 10:55:06 +08:00
Andrew Nicols a4dc694d6c MDL-47449 phpunit: Add comparitor for isEqual with exceptions
We often do isEqual tests but where a field, may have a single exception.
Ordinarily we can handle this easily by breaking the test down, but when
dealing with mocked objects we can only pass an instance of a
PHPUnit_Framework_Constraint, or a single value (which is cast to an
instance of PHPUnit_Framework_Constraint_IsEqual).

To deal with instances of time-based exception, we need to be able to
compare simple objects and classes where one or two values may be
different.
2015-08-14 10:55:06 +08:00
Andrew Nicols 54013a3cd1 MDL-49841 testing: Correct composer incantation 2015-08-14 10:29:17 +08:00
Jun Pataleta 38547b00f5 MDL-44828 filelib: Fix open error for force-downloaded files in mobile
Allow guessing of file's MIME type by default. Fallback to
application/octet-stream if MIME type cannot be determined.
2015-08-14 10:18:51 +08:00
Andrew Nicols c658ddf129 MDL-51088 mod_forum: Improve mod_forum behat performance 2015-08-14 07:58:18 +08:00
Andrew Nicols 89b453d1f6 MDL-51088 completion: Do not require hover to confirm xpath 2015-08-14 07:58:18 +08:00
lazydaisy 6ee4250032 MDL-51057 theme_base: RTL fix adds missing padding to block header h2. 2015-08-14 00:29:19 +01:00
Alistair Spark bb0c37afd4 MDL-50391 format_singleactivity: fix LTI Tool opens in existing window 2015-08-13 14:10:56 +01:00
Marina Glancy 23c18ecdc8 MDL-50391 format_singleactivity: fix activity_has_subtypes() 2015-08-13 14:10:56 +01:00
Dan Poltawski 0571f136e6 MDL-51110 badges: prevent duplicate award of badges
Previously duplicate users could be returned when they had
done duplicate badge criteria - this would lead to a duplicate
constraint being hit as they were attempted to be awarded twice.
2015-08-13 13:28:22 +01:00
Eloy Lafuente (stronk7) 7da2ed7a24 weekly release 2.8.7+ 2015-08-13 12:16:54 +02:00
Eloy Lafuente (stronk7) 0747fe1269 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-08-13 12:16:48 +02:00
AMOS bot 4155a06f8f Automatically generated installer lang files 2015-08-13 00:04:29 +08:00
AMOS bot fbe7024b7f Automatically generated installer lang files 2015-08-13 00:04:28 +08:00
Skylar Kelty 50b2135b2f MDL-50920 enrol: Remove pointless DB update in enrol_meta 2015-08-12 11:56:00 +01:00
Skylar Kelty 8e606dcd69 MDL-50637 calendar: Fix subscription table layout 2015-08-12 11:43:13 +01:00
David Monllao 6bebc4092f Merge branch 'MDL-46860-28' of git://github.com/ryanwyllie/moodle into MOODLE_28_STABLE 2015-08-12 10:46:34 +08:00
David Monllao 782d3e03eb Merge branch 'MDL-51053-m28' of git://github.com/sammarshallou/moodle into MOODLE_28_STABLE 2015-08-12 08:24:29 +08:00
Eloy Lafuente (stronk7) 6d5b932b6f Merge branch 'MDL-50062-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-08-12 01:45:30 +02:00
Eloy Lafuente (stronk7) 9c257bdd4e Merge branch 'MDL-50307-28-3' of git://github.com/xow/moodle into MOODLE_28_STABLE 2015-08-11 23:45:21 +02:00
Andrew Nicols 8e58a58149 MDL-49293 db: Pass sql_concat_join to sql_concat 2015-08-11 23:12:11 +02:00
Andrew Nicols 878a6a938c MDL-49293 db: Test sql_concat_join with more conditions 2015-08-11 23:12:10 +02:00
Eloy Lafuente (stronk7) ffce730e38 Merge branch 'MDL-50642_28' of https://github.com/ecampbell/moodle into MOODLE_28_STABLE 2015-08-11 22:45:50 +02:00
Alain Benoit 3d6d4ec109 MDL-50911 Quiz: edit settings page not responsive 2015-08-11 09:20:20 -04:00
sam marshall 9cb8cd1a21 MDL-51053 Restore: Static cache breaks unit tests 2015-08-11 14:09:19 +01:00
Eloy Lafuente (stronk7) 6001950405 Merge branch 'MDL-50894_28' of https://github.com/gedion/moodle into MOODLE_28_STABLE 2015-08-11 14:18:51 +02:00
Eloy Lafuente (stronk7) 6e6fba961c Merge branch 'm28_MDL-51015' of git://github.com/danmarsden/moodle into MOODLE_28_STABLE 2015-08-11 14:09:59 +02:00
Frederic Massart 7c6925dbc1 MDL-42634 theme: Action menu is displayed correctly with hidden elements 2015-08-11 14:54:55 +08:00
David Monllao b9bdaf698c Merge branch 'MDL-51014-m28' of git://github.com/sammarshallou/moodle into MOODLE_28_STABLE 2015-08-11 13:08:56 +08:00
Marina Glancy 4889c541bd MDL-50881 calendar: do not throw exception without sesskey 2015-08-11 12:52:44 +08:00
John Okely 58dbfc1f37 MDL-50307 auth_db: Stop using AS to prevent error with some drivers 2015-08-11 12:14:17 +08:00
John Okely aa2f2a7dc9 MDL-50307 auth_db: Fix associative fetching in ADODB 2.19 2015-08-11 12:14:17 +08:00
Mark Johnson 78cd07f761 MDL-51014 behat: Wait for filepicker to load repository 2015-08-10 13:38:52 +01:00
David Monllao 48daac6bd8 Merge branch 'wip-MDL-51062-m28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-08-10 14:24:19 +08:00
Marina Glancy 018576944f MDL-51062 behat: permission steps should work without js 2015-08-10 12:01:50 +08:00
David Monllao dfaaeb73c8 Merge branch 'MDL-50992-28' of git://github.com/damyon/moodle into MOODLE_28_STABLE 2015-08-10 11:18:10 +08:00
David Monllao 625d89ffce Merge branch 'MDL-51007-m28' of git://github.com/sammarshallou/moodle into MOODLE_28_STABLE 2015-08-10 11:09:06 +08:00
David Monllao df5be2eeb9 MDL-50801 atto_table: Closing caption tag 2015-08-10 10:56:14 +08:00
Ryan Wyllie c0450b9ab9 MDL-46860 filepicker: change responsive styling
Changed the filepicker's responsive styling to kick in
on screen width less than 768px (which is the bootstrap
standard) rather than 873px. This allows the standard
styling to apply within an iframe.
2015-08-10 02:21:57 +00:00
Ryan Wyllie 3ec071a091 MDL-46860 filepicker: iframe context aware
The filepicker now checks if it's within an iframe when
creating the dialogue, if so it will set the dialogue width
to fit within the iframe and disable dragging.
2015-08-10 02:21:28 +00:00
Andrew Nicols 79a2623413 MDL-50949 cache: Improve cache performance tests 2015-08-10 08:21:20 +08:00
Andrew Nicols 136f69e9bc Merge branch 'MDL-50949-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-08-10 08:20:58 +08:00
AMOS bot 21715a1049 Automatically generated installer lang files 2015-08-08 00:04:24 +08:00
Frederic Massart 1613ce1b04 MDL-47450 blocks: Blocks can be moved on the site profile 2015-08-07 15:10:47 +08:00
AMOS bot bfb1475d57 Automatically generated installer lang files 2015-08-07 00:04:09 +08:00
Eoin Campbell 07d6525594 MDL-50642 qformat_xml: fix import of tags in Cloze questions 2015-08-06 16:48:59 +01:00
Michael Aherne 53eaea5944 MDL-51016 messaging: Fix email attachments on Windows 2015-08-06 13:07:25 +01:00
Dan Marsden a3ca598f14 MDL-51015 mod_scorm: tidy up messy code, remove use of eval() 2015-08-06 22:21:48 +12:00
Andrew Nicols f593be963c weekly release 2.8.7+ 2015-08-06 12:11:28 +08:00
Andrew Nicols 93b713c120 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-08-06 12:11:19 +08:00
Frederic Massart e043a770e5 MDL-50062 behat: Handle category mapping for grade items generator 2015-08-06 12:01:21 +08:00
Frederic Massart 87e339c40e MDL-50062 grades: Behat tests for aggregation changes 2015-08-06 12:01:20 +08:00
Frederic Massart 6cb4558ece MDL-50062 grades: Fix false positives in Behat tests 2015-08-06 12:01:20 +08:00
Frederic Massart a77191fb62 MDL-50062 grades: Tests for item::set_aggregation_fields_for_aggregation 2015-08-06 12:01:19 +08:00
Frederic Massart b127b86fe3 MDL-50062 grades: Carry agg. settings between categories when possible 2015-08-06 12:01:19 +08:00
Dave Cooper 0bd275a9e2 MDL-50062 gradebook: Fixed behaviour when changing aggregation mathods. 2015-08-06 12:01:18 +08:00
Daniel Thies dc7e49f611 MDL-46387 editor-atto: Toggle sub/sup tags using rangy
In order to have a consistant browser behavior and prevent nesting of
subscripts and superscripts, tags are converted to CSS classes and then
the CSS classes in the selection are toggeled using the rangy crossbrowser
selection library already included in Atto without using an execCommand.
2015-08-05 16:04:53 -05:00
Eloy Lafuente (stronk7) 98011f0c2a Merge branch 'MDL-44840-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-08-05 20:47:51 +02:00
Eloy Lafuente (stronk7) afc52092bc Merge branch 'MDL-50816-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-08-05 18:22:17 +02:00
AMOS bot 26a9883a74 Automatically generated installer lang files 2015-08-06 00:04:18 +08:00
AMOS bot 8b6aacac49 Automatically generated installer lang files 2015-08-06 00:04:18 +08:00
Eloy Lafuente (stronk7) a34337ffdb Merge branch 'MDL-48970_2.8' of https://github.com/andrewhancox/moodle into MOODLE_28_STABLE 2015-08-05 16:20:56 +02:00
sam marshall 349ed8c86c MDL-51007 Availability: Unit test fails with extra plugins 2015-08-05 14:31:38 +01:00
Eloy Lafuente (stronk7) 71abb43154 Merge branch 'MDL-38230_28' of git://github.com/jmvedrine/moodle into MOODLE_28_STABLE 2015-08-05 12:40:06 +02:00
Andrew Nicols 3f98ccfbc3 MDL-50999 dock: Stop adding commands to DOM
The commands div should not be added to the DOM. The version shown in the
dock is different to the standard version in the block, and is manually
added to the dock panel when it is displayed.

The docked version contains additional actions (e.g. the undock button).

The original version of the dock should ideally remain untouched.

Note: A duplicate delegation was discovered when fixing this issue. This
was previosuly not triggered because the watched Node was removed
before the delegation took effect.
2015-08-05 10:09:42 +08:00
Andrew Nicols ec5c6bc193 Merge branch 'MDL-48202-M28' of git://github.com/lazydaisy/moodle into MOODLE_28_STABLE 2015-08-05 09:10:55 +08:00
Eloy Lafuente (stronk7) d7cc44a00d MDL-35027 mod_forum: verify forced subscriptions cannot be edited
This commit adds a new scenario to verify that the option
to turn edition of subscribers is not available anymore
for forced-subscription activities.

It also gets rid of the @javascript tag in a just introduced
scenario not needing it.
2015-08-05 02:11:32 +02:00
Eloy Lafuente (stronk7) ae26fc0bb4 Merge branch 'MDL-35027-B-28' of https://github.com/bostelm/moodle into MOODLE_28_STABLE 2015-08-05 02:10:28 +02:00
Eloy Lafuente (stronk7) a06efb59b3 Merge branch 'MDL-50416-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-08-04 20:00:43 +02:00
Eloy Lafuente (stronk7) fdf6a66c52 MDL-46963 env: adding missing check_database_tables_row_format check 2015-08-04 19:41:10 +02:00
Eloy Lafuente (stronk7) 2dfc646317 MDL-50624 env: adding missing restrict_php_version_7 check 2015-08-04 19:28:46 +02:00
Bruce Silver a8d049c89f MDL-50992 lti: Fix debugging warning when creating a new tool 2015-08-04 22:30:14 +08:00
Andrew Nicols ee18715ebc Merge branch 'MDL-50893_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-08-04 16:00:44 +08:00
Andrew Nicols da3fc40642 Merge branch 'MDL-45113-28' of https://github.com/mackensen/moodle into MOODLE_28_STABLE 2015-08-04 15:24:02 +08:00
Andrew Nicols f4c182048f Merge branch 'MDL-43709-28' of https://github.com/pauln/moodle into MOODLE_28_STABLE 2015-08-04 12:45:10 +08:00
Andrew Nicols 933f0b800a Merge branch 'MDL-50532-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-08-04 12:14:52 +08:00
Andrew Nicols 888cee2a2e MDL-50493 mod_forum: Correct style issues 2015-08-04 11:57:08 +08:00
Andrew Nicols e8084e04da Merge branch 'MDL-50493-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-08-04 11:56:54 +08:00
Andrew Nicols 7a97deebbc Merge branch 'MDL-50771_28' of git://github.com/stronk7/moodle into MOODLE_28_STABLE 2015-08-04 10:29:29 +08:00
Andrew Nicols 0013bab929 Merge branch 'MDL-42626-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-08-04 10:11:12 +08:00
Andrew Nicols adb6051f4c Merge branch 'MDL-45772-28-4' of git://github.com/xow/moodle into MOODLE_28_STABLE 2015-08-04 10:02:25 +08:00
Simey Lameze eb9bf73f21 MDL-50416 environment: add missing slasharguments checks 2015-08-04 09:55:49 +08:00
John Okely 9c336fdbe5 MDL-45772 admin: Stop browsers from autofilling passwords incorrectly 2015-08-04 09:55:07 +08:00
AMOS bot c256b7ba76 Automatically generated installer lang files 2015-08-04 00:04:26 +08:00
Henning Bostelmann 096dc2d33f MDL-35027 mod_forum: Fix subscriber list in hidden forums
If the forum is force-subscribed and hidden, only subscribers that can
view hidden activities will be shown in the subscriber list.
2015-08-03 12:14:41 +01:00
Eloy Lafuente (stronk7) 0494de7a1e MDL-50771 oracle: Bind long (>4000byte) text as CLOB
While we already were detecting @ normalise_value()
both BLOBs and CLOBs properly on insert and update
statements (by introspectind the column specs), when
a long TEXT is being passed as part of an arbitrary
SQL, or within the conditions... it was being bound
as VARCHAR, leading to problems if used in combination
with DBMS_LOB functions.

This patch just ensures that any TEXT > 4000 bytes not
detected by normalise_value() will be, always, bound as CLOB,
unconditionally.

Covered with tests both covering its use with DBMS_LOB (the
reported bug) and also in general raw statements.
2015-08-03 10:52:23 +02:00
Jean-Michel Vedrine ac2aa953ac MDL-38230 mod_quiz: Create UI for removing of quiz access rule addons
Conflicts:
	mod/quiz/version.php
2015-08-03 08:58:45 +02:00
Andrew Nicols b583b40de5 Merge branch 'wip-MDL-22819-m28' of https://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-08-03 10:23:35 +08:00
Andrew Nicols aa7ac17386 Merge branch 'MDL-49864-28' of git://github.com/junpataleta/moodle into MOODLE_28_STABLE 2015-08-03 09:44:31 +08:00
Andrew Nicols a989aac8fe Merge branch 'MDL-50624-28' of git://github.com/ryanwyllie/moodle into MOODLE_28_STABLE 2015-08-03 09:21:10 +08:00
Jun Pataleta 54f0ee08d8 MDL-49864 mod_assign: Fix missing annotations when viewing PDF
Added 'draft = 1' criteria for the delete query in
page_editor::set_annotations in order to prevent the deletion of non-draft
annotations while the PDF is being edited.
2015-08-03 09:12:32 +08:00
Ryan Wyllie 713927f915 MDL-50624 environment: add PHP7 as unsupported version
Added PHP7 as an unsupported version for Moodle 2.8 and 2.9 in
the environment checks
2015-08-03 01:04:45 +00:00
lazydaisy f8fa208894 MDL-48202 theme_bootstrapbase: blocks are 6px taller after undocking. 2015-08-02 21:29:42 +01:00
Jean-Michel Vedrine e3bc5a8e27 MDL-49701 mod_lesson: open time should be before close time
Conflicts:
	mod/lesson/mod_form.php
2015-08-02 10:41:01 +02:00
Charles Fulton c90d759569 MDL-45113 auth: add is_configured method and convert auth_db to use it 2015-07-31 15:18:43 +00:00
Simey Lameze 81e3985652 MDL-50416 environment: remove slasharguments warning from install 2015-07-31 11:40:10 +08:00
Andrew Nicols 9f405b6c6d weekly release 2.8.7+ 2015-07-30 14:42:04 +08:00
Andrew Nicols cc7d7fb648 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-07-30 14:41:58 +08:00
Frederic Massart 88158ed58a MDL-50949 cache: Tests for performance debugging of cache usage 2015-07-29 14:47:47 +08:00
Frederic Massart c535e62552 MDL-50532 tasks: Delete obsolete tasks during upgrade 2015-07-29 11:25:41 +08:00
Jean-Michel Vedrine d670ca4dcd MDL-44840 mod_lesson: fix import of truefalse questions 2015-07-29 11:06:06 +08:00
Tim Hunt a36bdaeb82 MDL-50893 questions: cannot create a question with name 0 2015-07-28 18:21:08 +01:00
Barbara Ramiro 3690dd25a1 MDL-50370 Icons: Filetype icon for ePub 2015-07-28 12:43:38 +01:00
Dan Poltawski 33fb1f3d9f Merge branch 'MDL-50833-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE 2015-07-28 12:38:54 +01:00
Dan Poltawski 417d607c56 Merge branch 'MDL-50868-28' of git://github.com/jethac/moodle into MOODLE_28_STABLE 2015-07-28 12:19:03 +01:00
spvickers a73ee08811 MDL-49629 mod_lti: Add icon fields
Icon fields added to input form when defining an external tool at the
admin level.  The icon for a tool derived from a tool proxy can be
overridden.  Course cache is cleared if current icon value is changed.

Add text boxes to edit form for entering icon URLs.
2015-07-28 12:03:41 +01:00
Andrew Nicols 13613d3bab Merge branch 'wip-MDL-50874-m28' of https://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-07-28 15:03:00 +08:00
Andrew Nicols 63199d4418 Merge branch 'MDL-50295-28' of git://github.com/danpoltawski/moodle into MOODLE_28_STABLE 2015-07-28 14:03:46 +08:00
Andrew Nicols 681ef5e858 Merge branch 'MDL-44962_28' of https://github.com/dmonllao/moodle into MOODLE_28_STABLE 2015-07-28 11:38:04 +08:00
Andrew Nicols c47d5153ed Merge branch 'MDL-35148-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-07-28 11:08:35 +08:00
Frederic Massart 8ef5eea2db MDL-35148 themes: Updated checks deciding when mobile themes are used
Now, if a site-theme is set for tablet/phone AND the user is using
a tablet/phone that site-theme will be used, always. In any other
case the normal theme resolution will be used: course, category, ...
2015-07-28 11:01:31 +08:00
Damyon Wiese 05bbda7b40 MDL-46078 Assign: Completion is not using assignment API.
Should not be directly querying the DB to get the submission, use the API!
2015-07-28 10:29:18 +08:00
Juan Leyva e06ea6d9e2 MDL-42626 messages: Hide deleted users in contact/blocked list 2015-07-27 16:37:14 +02:00
Charles Fulton 9314573cf6 MDL-41598 auth_shibboleth: don't override wantsurl 2015-07-27 15:25:11 +01:00
Dan Poltawski 96b529314f Merge branch 'MDL-43785-28' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE 2015-07-27 14:49:42 +01:00
Dan Poltawski e205936ac9 Merge branch 'MDL-49360-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-07-27 12:08:47 +01:00
Dan Poltawski 27f5d33ad2 Merge branch 'wip-MDL-50649-m28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-07-27 12:00:03 +01:00
Andrew Nicols 08b7326cc5 Merge branch 'MDL-46232-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-07-27 15:58:39 +08:00
Frederic Massart 74e083713e MDL-46232 user: Handle bulk delete of users without email addresses 2015-07-27 15:48:16 +08:00
Andrew Nicols ea2e3f1c82 MDL-43785 lib: Improve session timeout warnings 2015-07-27 14:30:37 +08:00
Simey Lameze 185f689f77 MDL-49360 core_lib: add new method get_local_referer()
This commit also replace all usages of $_SERVER['HTTP_REFERER'] and get_referer().
2015-07-27 11:58:11 +08:00
AMOS bot 2644190a7b Automatically generated installer lang files 2015-07-26 00:04:07 +08:00
Gedion Woldeselassie ab49be1e54 MDL-50894 lib/conditionlib: Occasional cron error
Inhibit division by zero error warnings when rawgrademax and rawgrademin are
equal. The change does not affect existing functional behavior.
2015-07-24 10:14:45 -05:00
David Monllao f9c2569e00 MDL-44962 mod_wiki: No input filter
Thanks to Tim Lock for the partial fix.
2015-07-24 16:34:40 +02:00
Marina Glancy 88f5b27317 MDL-22819 tags: fix breadcrumb on manage tags page 2015-07-24 21:28:47 +08:00
Marina Glancy c537eb481d MDL-50649 report: query optimisation 2015-07-24 17:39:21 +08:00
Jetha Chan 8e074d1f69 MDL-50868 weblib: add unit test for ruby support 2015-07-24 14:11:53 +09:00
Jetha Chan 1e62e0c76c MDL-50868 weblib: add ruby support to purify_html 2015-07-24 14:11:53 +09:00
AMOS bot c7a40cf84a Automatically generated installer lang files 2015-07-24 00:04:25 +08:00
Dan Poltawski 97c2995445 weekly release 2.8.7+ 2015-07-22 20:42:58 +01:00
Dan Poltawski d03257d941 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-07-22 20:42:57 +01:00
Andrew Nicols 7fa65cdacf Merge branch 'MDL-50563-m28' of https://github.com/NeillM/moodle into MOODLE_28_STABLE 2015-07-22 09:37:47 +08:00
Andrew Nicols 52fccfe799 Merge branch 'MDL-50762-MOODLE28' of https://github.com/luryus/moodle into MOODLE_28_STABLE 2015-07-22 09:13:29 +08:00
Andrew Nicols f4fb074c23 Merge branch 'MDL-50699-28' of https://github.com/pauln/moodle into MOODLE_28_STABLE 2015-07-22 09:08:33 +08:00
Dan Poltawski 35bc4ecd94 Merge branch 'MDL-50293_28' of https://github.com/Syxton/moodle into MOODLE_28_STABLE 2015-07-21 12:51:58 +01:00
Marina Glancy 9df65abc4b MDL-50874 block: basic tests for tag-related blocks 2015-07-21 17:00:58 +08:00
Dan Poltawski e41fcbb337 Merge branch 'MDL-50639_mod_book_fontsize_M28' of https://github.com/barrysspace/moodle into MOODLE_28_STABLE 2015-07-21 09:08:13 +01:00
Andrew Nicols 73f2b4c674 Merge branch 'MDL-49618-m28' of https://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-07-21 12:17:43 +08:00
Andrew Nicols e53e48d459 Merge branch 'MDL-47230_M28' of https://github.com/barrysspace/moodle into MOODLE_28_STABLE 2015-07-21 11:23:52 +08:00
Andrew Nicols 06eae40f50 Merge branch 'wip-MDL-41650-m28' of https://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-07-21 10:03:12 +08:00
AMOS bot fc6277c149 Automatically generated installer lang files 2015-07-21 00:04:40 +08:00
pau.ferrer-ocana 5e56049641 MDL-49440 lib: Date picker duplicated week day names repaired
Thanks Marc Català for the patch
2015-07-20 14:04:47 +01:00
Dan Poltawski 4fb12f39be Merge branch 'wip-MDL-50678-m28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-07-20 13:54:05 +01:00
AMOS bot e8f903bc82 Automatically generated installer lang files 2015-07-20 00:05:07 +08:00
apsdehal e2c7d95dc4 MDL-41650 Tags: Changed css classes of errors and success notice 2015-07-19 20:23:53 +08:00
AMOS bot dcd6b60217 Automatically generated installer lang files 2015-07-18 00:05:24 +08:00
Lauri Koskela 43f957c3f9 MDL-50762 tool_capability: Do not hide first capability in list 2015-07-17 15:30:56 +03:00
Neill Magill f2d0c4b895 MDL-50563 blocks: A hidden block that is dropped should be dimmed
Before this patch when dragging and dropping a hidden block it would display as though visible when it was dropped.

This is only a display issue, as a page refresh caused it to be dimmed in its new position.
2015-07-17 09:08:18 +01:00
Barry Oosthuizen 4e0cd866c1 MDL-50639 mod_book: Remove 0.8em font sizes 2015-07-17 08:44:05 +01:00
AMOS bot 9a2fd1975f Automatically generated installer lang files 2015-07-17 00:05:11 +08:00
Syxton df0881384f MDL-50293 navigation: File name not wrapping
A long File name doesn't always wrap correctly in the Navigation block.
2015-07-16 10:23:19 -04:00
Michael Aherne a02fc8bb05 MDL-50490 cron: Prevent tasks from leaving uncommitted transactions 2015-07-16 11:41:16 +01:00
Dan Poltawski cecc0eb211 weekly release 2.8.7+ 2015-07-16 08:16:18 +01:00
Juan Leyva 94540f233e MDL-50816 notes: Delete never met condition code 2015-07-15 15:26:02 +02:00
Eric Merrill 2675bdb42d MDL-50833 report: Still make a chart if there are no logs 2015-07-15 09:13:53 -04:00
Barry Oosthuizen 08ed9c2f04 MDL-47230 mod_book: Sub chapter bullet formatting 2015-07-15 09:20:09 +01:00
Marina Glancy 94081247f8 MDL-50678 mod_glossary: removed extra login check 2015-07-15 14:19:09 +08:00
Dan Poltawski 41ac409428 Merge branch 'MDL-37832-M28' of git://github.com/lazydaisy/moodle into MOODLE_28_STABLE 2015-07-14 10:14:15 +01:00
Dan Poltawski 0446d70c4c Merge branch 'MDL-50814-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-07-14 08:55:20 +01:00
Mary Evans 24096407cc MDL-37832 theme: Improved "My Moodle" expandable/collapsible caption. 2015-07-14 08:50:29 +01:00
Dan Poltawski 91076c7400 Merge branch 'MDL-50711_M28' of git://github.com/lazydaisy/moodle into MOODLE_28_STABLE 2015-07-14 08:44:56 +01:00
Dan Poltawski a88e331243 Merge branch 'MDL-50799-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE 2015-07-13 16:08:22 +01:00
Juan Leyva 32d3490d55 MDL-50814 badges: Fix incorrect default ordering 2015-07-13 15:10:57 +02:00
Dan Poltawski 2562ca0bb6 Merge branch 'MDL-50806-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE 2015-07-13 13:45:59 +01:00
Dan Poltawski f72723f2b6 Merge branch 'MDL-50798-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE 2015-07-13 13:35:32 +01:00
Dan Poltawski f5e5c91b96 Merge branch 'MDL28-50800' of https://github.com/dkleto/moodle into MOODLE_28_STABLE 2015-07-13 13:27:40 +01:00
Dan Poltawski b27449ce44 Merge branch 'm28_MDL-49647' of https://github.com/danmarsden/moodle into MOODLE_28_STABLE 2015-07-13 10:05:24 +01:00
Paul Nicholls 18bc6d2177 MDL-43709 Forum: Reset forums not working with multiple forum types
The SQL being generated from the selected forum types on the course reset
form was using AND, resulting in never matching anything if more than one
forum type was selected for resetting (as each forum can only have one
type).  This should use $DB->get_in_or_equal() to generate sensible SQL.
2015-07-13 16:12:58 +12:00
Adam Riddell 2e3bc53fb3 MDL-50800 question: Add missing make_answer method
question/type/calculatedmulti/questiontype.php:
        - Add public make_answer method so that apply_attempt_state
          method in qtype_multichoice_base does not cause a fatal
          error when attempting to call make_answer.
2015-07-13 09:47:31 +10:00
Mary Evans 7b84e17a3a MDL-50711 theme_bootstrapbase: Added inverse horizontal divider colors. 2015-07-12 02:55:51 +01:00
Eloy Lafuente (stronk7) 4c7c7632dd weekly release 2.8.7+ 2015-07-10 18:11:22 +02:00
Eric Merrill a4bb044f62 MDL-50806 questions: Allow more memory when doing a question import 2015-07-09 12:46:47 -04:00
Dan Marsden c1e65f42a5 MDL-49647 mod_scorm: correct escaping of javascript content. 2015-07-09 16:58:03 +12:00
Eric Merrill 4a97af59ef MDL-50799 question: Improve Show all text to be more accurate 2015-07-08 22:03:16 -04:00
Marina Glancy 4a75799c9e MDL-49618 forum: apply format_string 2015-07-09 07:55:35 +08:00
Eric Merrill 92c067f617 MDL-50798 question: Raise time limit when rendering questions
Rendering a large number of questions may be quite slow, so we want to
raise the limit.

We don’t call raise() in the loop because the quiz buffer captures this
function for a AJAX script, and we should only call raise if we expect
a corresponding output to the users browser. This helps to prevent
unexpected load balancer disconnects. See core_php_time_limit::raise()
for more details.
2015-07-08 15:49:54 -04:00
Eloy Lafuente (stronk7) 2b5883adb0 Merge branch 'MDL-50489-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-07-07 19:13:21 +02:00
Eloy Lafuente (stronk7) 8f2a74ab57 Merge branch 'MDL-49185-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-07-07 16:59:13 +02:00
Dan Poltawski ec2342495d MDL-50466 logstore: bump version to load new task definitions 2015-07-07 15:09:01 +01:00
Dan Poltawski 220fbca1aa MDL-50295 output: prevent 'emoji' arrows
We need to append U+FE0E VARIATION SELECTOR-15 to the arrow to ensure
our l/rarrows are displayed as text icons, not 'emoji' icons.

See http://unicode.org/reports/tr51/#Diversity for more details of why
this changed in iOS 8.3+.
2015-07-07 14:27:05 +01:00
Michael Aherne 772dc9df94 MDL-50466 tasks: Specific minute values for log cleanup 2015-07-07 09:39:11 +01:00
Dan Poltawski 118c600ba5 MDL-50749 js: add some TODOs to some small hacks 2015-07-07 08:49:30 +01:00
Dan Poltawski 29f2ac3b81 Merge branch 'MDL-50749-28' of https://github.com/mackensen/moodle into MOODLE_28_STABLE 2015-07-07 08:38:46 +01:00
Charles Fulton 3b994f6ab2 MDL-50749 course: add fake element for behat compatibility 2015-07-03 20:01:40 +00:00
Eloy Lafuente (stronk7) 1f2979d0e5 Moodle release 2.8.7 2015-07-03 13:38:19 +02:00
Eloy Lafuente (stronk7) 385cd9ee23 Merge branch 'MDL-50757-28' of git://github.com/damyon/moodle into MOODLE_28_STABLE 2015-07-03 11:27:58 +02:00
Damyon Wiese 3d517153fa MDL-50757 upgrade: Unset config value that will never be used again 2015-07-03 16:48:37 +08:00
Adrian Greeve 1d19128f68 MDL-50757 gradebook: Update fix for pre 2.8 upgrades.
Moodle installations that updated before the 2.8 grade push
were being flagged for a gradebook freeze. This was resulting in
calculated grades being shown as different to how they were
displayed before the upgrade. This fix retains the original
grade value.
2015-07-03 13:20:06 +08:00
Dan Poltawski c0ba953afc weekly release 2.8.6+ 2015-07-02 14:26:02 +01:00
Dan Poltawski 67d1edca87 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-07-02 14:25:59 +01:00
Juan Leyva e2b7ee6662 MDL-50489 forum: Handle qanda forums in get_forum_discussions_paginated
I removed the last qanda checks in forum_user_can_see_discussion because they are not necessary and
they make the external function fail.

A user in a qanda forum can always see a discussion (he needs to see the discussion to be able to reply).
What he cannot see are the other user posts unless he has replied to the discussion once and the edition period
(usually 30 minutes) has ended.

Note also that forum_user_can_see_discussion was originally only used when displaying forums in blog format
in order to display the button show more or not, this is the reason this wasn't detected before.
2015-07-02 10:41:00 +02:00
Marina Glancy b930e2005c MDL-48239 grades: corrected docs url for calculation changes 2015-07-02 15:50:24 +08:00
Marina Glancy 0c89600969 MDL-48239 grades: fix notification class 2015-07-02 15:50:22 +08:00
Adrian Greeve 801964cabb MDL-48239 gradebook: Oracle fix for string compare.
Update to upgradelib.php where string comparisions cause
phpunit failures in Oracle.
2015-07-02 12:30:40 +08:00
Eloy Lafuente (stronk7) 3a4cd8db0f Merge branch 'wip-MDL-48239-28' of git://github.com/abgreeve/moodle into MOODLE_28_STABLE 2015-07-02 05:42:39 +02:00
Adrian Greeve 1a9f295e47 MDL-48239 gradebook: Change to calculated grade item min and max.
Regardless of the setting 'Min and max grades used in calculation'
Calculated grade items will always update the min and max raw grade.
2015-07-02 11:30:49 +08:00
Adrian Greeve 2adc935709 MDL-48239 gradebook: Unit test for upgrade function. 2015-07-02 11:30:49 +08:00
Adrian Greeve 98c04f38cd MDL-48239 gradebook: Behat tests for calculated grade items. 2015-07-02 11:30:48 +08:00
Adrian Greeve 02bc1d3b88 MDL-48239 gradebook: Calculated grades maxgrade now able to be set. 2015-07-02 11:30:48 +08:00
Andrew Hancox 0f8a6256d5 MDL-48970 groups: Fix hover description on groups overview page
If a course exists within multiple groupings then the description
should display when you mouseover any instance of it on the overview
page.
2015-07-01 21:28:20 +01:00
Rajesh Taneja 0996a2966c MDL-50481 behat: SingleSelect can be urlselect and should support id/name 2015-07-01 11:23:39 +08:00
David Monllao c556c5fca5 Merge branch 'MDL-50497-M28' of git://github.com/lazydaisy/moodle into MOODLE_28_STABLE
Conflicts:
	theme/bootstrapbase/style/moodle.css
2015-07-01 08:57:15 +08:00
Juan Leyva 7b15a36320 MDL-50130 users: Filter profile fields data in external functions 2015-06-30 19:51:20 +02:00
AMOS bot c0ce8e7ae5 Automatically generated installer lang files 2015-07-01 00:05:01 +08:00
Dan Poltawski 4f46506fdb Merge branch 'wip-mdl-50481-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-06-30 12:25:54 +02:00
Dan Poltawski 2f5e10392c Merge branch 'MDL-33765_m28_offset' of git://github.com/markn86/moodle into MOODLE_28_STABLE 2015-06-30 12:20:09 +02:00
Dan Poltawski bc65073a61 Merge branch 'MDL-47787-m28' of https://github.com/tbannister/moodle into MOODLE_28_STABLE 2015-06-30 10:24:49 +02:00
David Monllao 41b330abe1 MDL-50569 backup: Missing get_target call 2015-06-30 10:33:44 +08:00
Dan Marsden d942f0311c MDL-50614 mod_scorm: Improve validation on currentorg 2015-06-30 10:14:33 +08:00
David Monllao 419f4c47e4 Merge branch 'MDL-50569-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-06-30 09:33:20 +08:00
Eloy Lafuente (stronk7) 1777d32cb2 Merge branch 'wip-mdl-50675-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-06-29 18:33:26 +02:00
Eloy Lafuente (stronk7) a8753fb85a MDL-50688 lib: small cleanup + http/https coverage. 2015-06-29 17:50:04 +02:00
Petr Skoda 980bd08bdc MDL-50688 lib: fix local url validation bug
Change-Id: I350bb8c9ace5cc0403f083f728c100097be7aa7e
Reviewed-on: https://review.totaralms.com/8101
Tested-by: Jenkins Automation <jenkins@totaralms.com>
Reviewed-by: Sam Hemelryk <sam.hemelryk@totaralms.com>
Reviewed-by: Alastair Munro <alastair.munro@totaralms.com>
2015-06-29 17:50:00 +02:00
Nadav Kavalerchik 3a8b5c11d2 MDL-50708 SCORM: Right align menu item folder icon, when in RTL mode. 2015-06-29 15:58:22 +08:00
Frederic Massart 3423321b32 MDL-50569 grades: Restore as merge always ignores minmaxtouse 2015-06-29 14:28:02 +08:00
Frederic Massart 7610449b02 MDL-50569 grades: Handle minmaxtouse in backup/restore 2015-06-29 14:28:02 +08:00
David Monllao 142d17da19 Merge branch 'MDL-50652_28' of git://github.com/reskit/moodle into MOODLE_28_STABLE 2015-06-29 13:02:56 +08:00
Mark Nelson 67e6cefa41 MDL-33765 filter_glossary: fixed jshint warning 2015-06-28 22:01:56 -07:00
Martin Mastny 025e0130c9 MDL-33765 filter_glossary: Stacking JS windows with offset 2015-06-28 21:16:29 -07:00
Martin Mastny 5a0a0a4d7e MDL-33765 mod_glossary: Concept in ajax request not linking to itself 2015-06-28 21:16:19 -07:00
David Monllao 860a35db66 Merge branch 'wip_MDL-50659_m28' of git://github.com/gjb2048/moodle into MOODLE_28_STABLE 2015-06-29 11:48:43 +08:00
Rajesh Taneja 82d0bd3246 MDL-50675 repository_wikimedia: Fixed title varaible 2015-06-29 09:57:36 +08:00
Rajesh Taneja ae7f9ead0e MDL-50675 repository_wikimedia: Wikimedia is using https and not http 2015-06-29 09:57:36 +08:00
Mary Evans 5856c76917 MDL-50497 theme_bootstrapbase: Divider colours look wrong when inverted 2015-06-26 23:10:03 +01:00
Gareth J Barnard 777a4a2d2e MDL-50659 themes: Regression: Drag a link makes icons move. 2015-06-26 11:46:20 +01:00
Paul Nicholls f97240de8a MDL-50699 Lesson: "Link to next activity" empty until Lesson saved
Due to a logic bug, the "Link to next activity" dropdown was empty (only
contains the "None" option) until the Lesson had been saved.  This minor
change allows a "next activity" to be specified when initially creating
the Lesson whilst still preventing the user from choosing the Lesson as its
own next activity.
2015-06-26 14:44:43 +12:00
Tyler Bannister d45b318a5d MDL-47787 course: Added question delete to cm delete. 2015-06-25 16:36:50 -04:00
Marc Català f81f6bbda5 MDL-50652 workshop: Workshop module allows duplicated ID number 2015-06-25 14:26:10 +02:00
Marina Glancy 40c3419184 MDL-49257 grades: apply freeze when restoring with contents deleting 2015-06-25 14:40:06 +08:00
David Monllao 47cbd1b42d weekly release 2.8.6+ 2015-06-25 13:50:06 +08:00
David Monllao 3fc06c5776 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-06-25 13:50:04 +08:00
Rajesh Taneja 6d55d3b4f8 MDL-50481 core_grades: Fixed behat feature and step to work with non-js
xPath used in step is not using proper oring
and fails with goutee driver. Also, feature don't
really need to be executed in js, so setting that
as non-js
2015-06-25 13:15:14 +08:00
Rajesh Taneja c74f4582c2 MDL-50481 behat: Press go button for given single select in non-js
For non-js mode, ensure we press the go button
for the specified single select, as there can be
multiple single selects on the page with go button
2015-06-25 13:15:14 +08:00
Marina Glancy 05fde3409f MDL-49257 grades: strings adjustments 2015-06-25 10:00:23 +08:00
Eloy Lafuente (stronk7) aa79c57c1e MDL-49022 auth_ldap: keep method visibility unmodified. 2015-06-24 03:04:59 +02:00
Eloy Lafuente (stronk7) fb124fc068 Merge branch 'wip-mdl-49022-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-06-24 03:03:18 +02:00
Eloy Lafuente (stronk7) 17d14ff177 MDL-49497 curl: keep api private and test it using reflection.
While strictly we should not be testing private APIs, in order
to get this backported to stables without changing visibility
we use reflection to access to such private properties and methods.

Also added one exttest to verify user agent is properly sent.

Finally, fix some wrong whitespace and changed the helper class name
to better alternative.
2015-06-23 16:25:59 +01:00
Dan Poltawski 54659b0a06 Merge branch 'MDL-49497-28' of git://github.com/gurgus/moodle into MOODLE_28_STABLE 2015-06-23 16:25:43 +01:00
Dan Poltawski dc129d0b68 Merge branch 'wip-MDL-49257-m28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-06-23 11:20:30 +01:00
Rajesh Taneja 7a26c7b0c3 MDL-49022 auth_ldap: Updated unit test, checking sync_user events 2015-06-23 17:05:38 +08:00
Mark Ward e7199f8944 MDL-49022 auth_ldap: trigger event when required.
When calling update_user_record() for auth_ldap the method
now has option to trigger event core\event\user_updated when
syncing with domain controller.
This means that the event will be triggered by sync_users()
but not by user_signup().
2015-06-23 17:05:38 +08:00
Marina Glancy 567f1c3c4c MDL-49257 grades: behat tests for extra credit 2015-06-23 14:25:27 +08:00
Marina Glancy e48f0ef106 MDL-49257 grades: fix bugs with extra credit weights
When we adjust the weights in natural grading (setup screen), the extra credit items
should not depend on other overrides. If extra credit item's weight was overriden, it stays as it is.
Otherwise it is calculated as itemgrademax / totalgrademax (total excludes extra credit items)
2015-06-23 14:25:27 +08:00
Marina Glancy 4a84177457 MDL-49257 grades: introduce calculation freeze
In order to prevent changes in the existing grades when we fix bugs
we are introducing the gradebook code versioning. Each course may
"freeze" the code version to the older date. Freezing is usually done
during upgrade or restore and can be removed by the teacher by pressing
the button and accepting potential grade changes. There is no visible
setting and not possible to change the version back manually.

See MDL-50432 and MDL-50522
2015-06-23 14:25:24 +08:00
David Monllao cd7544d403 MDL-50611 testing: Extra http status code checking 2015-06-23 10:37:00 +08:00
David Monllao 0691b264e2 Merge branch 'MDL-50611-28' of git://github.com/LukeCarrier/moodle into MOODLE_28_STABLE 2015-06-23 10:30:33 +08:00
spvickers e0cefc24ab MDL-49185 mod_lti: Check for all capabilities
Added check for explicit and implicit enabled capabilities when parsing
a custom parameter.
2015-06-23 10:26:42 +08:00
Eloy Lafuente (stronk7) 0b2c4cf27d Merge branch 'MDL-50089-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE 2015-06-22 19:59:24 +02:00
Eloy Lafuente (stronk7) a4f64284aa Merge branch 'MDL-50583_28' of git://github.com/dmonllao/moodle into MOODLE_28_STABLE 2015-06-22 19:22:58 +02:00
Eric Merrill b60e213341 MDL-50089 grades: Use grade item min/max in exports 2015-06-22 12:59:36 -04:00
Luke Carrier 2af7590d98 MDL-50611 test: use cURL extension to download Composer
The curl binary is nowhere near as common in Windows environments as it is
in Linux and Mac ones. In order to encourage more users to adopt Behat and
PHPUnit for their testing, we should avoid introducing unnecessary
hurdles.
2015-06-22 15:53:26 +01:00
Dan Poltawski 8ce0acb5de Merge branch 'MDL-50091_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-06-22 12:06:53 +01:00
David Monllao ad02c3adf0 Merge branch 'MDL-50622-28-enfix' of git://github.com/mudrd8mz/moodle into MOODLE_28_STABLE 2015-06-22 17:45:02 +08:00
Helen Foster d1d1d24396 MDL-50622 lang: Merge English strings from the en_fix language pack 2015-06-22 11:42:29 +02:00
David Monllao 8972c8627d Merge branch 'wip-MDL-50568-m28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-06-22 15:33:59 +08:00
Tim Hunt ce4d2810a0 MDL-50648 grader report: columns misaligned with some permissions
If a user can see the grader report and singleview report, but not
the user report ($CFG->grade_profilereport) then the colspans
were wrong and so the columns did not line up under the right headers.
2015-06-19 12:41:31 +01:00
AMOS bot 965fcec3a1 Automatically generated installer lang files 2015-06-19 00:04:14 +08:00
Dan Poltawski 89273142e2 weekly release 2.8.6+ 2015-06-18 14:03:06 +01:00
Dan Poltawski 2e8d88fe22 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-06-18 14:03:04 +01:00
Tim Hunt 8e3f31debe MDL-50091 grade singleview: use standard API to build the link
Acutally the necessary code was already there. There was just some
unnecessary code that was added with the issue number MDL-47746. I have
just stripped out the unused code, which fixes the bug where a missing
activity caused a fatal error.
2015-06-17 13:56:41 +01:00
Eloy Lafuente (stronk7) 23e1349810 Merge branch 'MDL-50004-M28' of git://github.com/lazydaisy/moodle into MOODLE_28_STABLE 2015-06-17 01:01:28 +02:00
Eloy Lafuente (stronk7) abf8b970be Merge branch 'MDL-50107-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-06-17 00:16:51 +02:00
AMOS bot b13273c21f Automatically generated installer lang files 2015-06-17 00:04:08 +08:00
AMOS bot 7871b634b2 Automatically generated installer lang files 2015-06-17 00:04:08 +08:00
Dan Poltawski eb98d24713 Merge branch 'MDL-49959_course_dnd_message_MDL28' of https://github.com/barrysspace/moodle into MOODLE_28_STABLE 2015-06-16 13:07:19 +01:00
Martin Mastny 3e8064b84a MDL-49744 JavaScript: Glossary term window is draggable 2015-06-16 10:20:23 +01:00
Andrew Nicols c1b716ed30 Merge branch 'wip-MDL-50216-28' of git://github.com/abgreeve/moodle into MOODLE_28_STABLE 2015-06-16 12:22:59 +08:00
Martin Mastny 3e0a9b33d9 MDL-50216 JavaScript: Default visibility of M.core.info set to false
Conflicts:
	lib/yui/build/moodle-core-notification-dialogue/moodle-core-notification-dialogue-min.js
2015-06-16 11:35:55 +08:00
Andrew Nicols 7c4c64d821 MDL-39353 xmlrpc: Add note to upgrde.txt regarding proxybypass 2015-06-16 11:35:31 +08:00
Andrew Nicols 62a20889ef Merge branch 'MDL-39353-28' of https://github.com/rtcn2/moodle into MOODLE_28_STABLE 2015-06-16 11:34:57 +08:00
Andrew Nicols ca37641c24 Merge branch 'MDL-50380-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-06-16 07:58:42 +08:00
Dan Poltawski 90e175670a Merge branch 'MDL-49368_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-06-15 12:33:31 +01:00
Andrew Nicols 9b7d060c5e Merge branch 'MDL-50459-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-06-15 16:04:56 +08:00
Juan Leyva 346cd40859 MDL-50459 messages: Handle deleted users in external functions 2015-06-15 09:57:51 +02:00
Andrew Nicols 81de8dc4c1 Merge branch 'wip-MDL-50222-m28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-06-15 15:17:57 +08:00
GeekSmith d932630feb MDL-50583 upgrade: Optimize upgrade_minmaxgrade
Reverse join order to use existing database keys. Changed query to use the
more easily read NOT IN.
2015-06-15 10:41:37 +08:00
Andrew Nicols c7828a7e89 Merge branch 'MDL-50438-28' of git://github.com/mastnym/moodle into MOODLE_28_STABLE 2015-06-15 10:21:53 +08:00
Andrew Nicols 499c254bd9 Merge branch 'MDL-50509-28-vartypo' of git://github.com/mudrd8mz/moodle into MOODLE_28_STABLE 2015-06-15 09:59:45 +08:00
Andrew Nicols b349a501bf MDL-50554 themes: Rebuild of bootstrapbase 2015-06-15 09:47:12 +08:00
Mary Evans 088528038c MDL-50004 theme: Fixes frontpage coursename and enrolment icons.
Conflicts:

	theme/bootstrapbase/style/moodle.css
2015-06-15 00:27:31 +01:00
Gareth J Barnard 8e78b057a3 MDL-50554 themes: Drag a link move mouse makes icons move in Chrome. 2015-06-14 21:49:11 +01:00
Dan Poltawski 49ec7f8b7a weekly release 2.8.6+ 2015-06-12 10:24:40 +01:00
Dan Poltawski 327132f929 Merge branch 'MDL-48618_28-test-calculated' of git://github.com/dmonllao/moodle into MOODLE_28_STABLE 2015-06-12 10:19:41 +01:00
Eloy Lafuente (stronk7) c69966dc7b MDL-50176 repository_youtube: delay loading google service stuff
Loading Google client services is a little monster, eating around
2MB (opcache enabled) of memory. As far as we instantiate the
repository instances really early, no matter they are not used
later (editor, file picker, admin...).. we are delaying the
load of the service until we know we are going to use it.

Surely applying this very same (sort of lazy load) techinque
to other repositories could lead to a nice memory reduction
in lots of pages.

MDL-50176 repository_youtube: also delay the inclusion of client.

While memory was fixed with previous commit, still some extra included
files where being reported, so go crazy and move all the stuff to
the new init delayed method.
2015-06-12 10:31:50 +02:00
David Monllao 40765660a8 MDL-48618 grades: Testing calculated items with minmaxtouse 2015-06-12 14:31:29 +08:00
Marina Glancy e5871c89f5 MDL-50568 navigation: correct cap check 2015-06-12 10:46:09 +08:00
Frederic Massart 623ecdaddb MDL-48618 grades: Do not run minmax upgrade for fresh installs 2015-06-11 17:16:52 +08:00
Rajesh Taneja 4facd41f67 MDL-49659 theme_clean: Add login info in the nav bar 2015-06-11 10:00:36 +01:00
David Monllao 8dac9b29d4 MDL-48618 upgrade: Matching conditions and upgrade savepoints 2015-06-11 15:04:15 +08:00
David Monllao bf8ebd6d96 Merge branch 'MDL-48618-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-06-11 14:23:22 +08:00
Juan Leyva 13513264fa MDL-50107 webservices: Enable CORS in login/token.php 2015-06-10 11:34:24 +02:00
Rod Norfor 3b6d698f51 MDL-39353 xmlrpc: Add proxy support 2015-06-10 08:20:48 +01:00
Frederic Massart 965271de64 MDL-48618 grades: Test for the minmax upgrade step 2015-06-10 12:53:07 +08:00
Frederic Massart 4c796650e6 MDL-48618 grades: Behat tests to cover min/max grade changes
The values provided as part of this test are similar to values
that can be found in 2.7. This is to ensure that users will not
experience changes in grades.
2015-06-10 12:53:07 +08:00
Frederic Massart eff9e9ddea MDL-48618 grades: Unit tests for grade_grade::get_min/max_grade() 2015-06-10 12:53:07 +08:00
Frederic Massart 7907689825 MDL-48618 grades: Handling of inconsistencies due to min/max grades 2015-06-10 12:52:43 +08:00
Eric Merrill 582d2448b5 MDL-48618 gradebook: Only use individual min/max for aggrigate grades 2015-06-10 12:44:55 +08:00
Eloy Lafuente (stronk7) b0d06e3c2c Merge branch 'MDL-47480-28' of git://github.com/ankitagarwal/moodle into MOODLE_28_STABLE 2015-06-10 00:33:28 +02:00
Eloy Lafuente (stronk7) 6d29831de6 Merge branch 'm28_MDL-50415_Add_PHP_Variables_In_PHPInfo_Admin_Page' of https://github.com/scara/moodle into MOODLE_28_STABLE 2015-06-09 20:37:36 +02:00
Eloy Lafuente (stronk7) bbef2dc030 Merge branch 'MDL-50176_28' of git://github.com/aolley/moodle into MOODLE_28_STABLE 2015-06-09 20:14:16 +02:00
Dan Poltawski aeae977eed Merge branch 'MDL-43731-28_STABLE' of https://github.com/ramdesh/moodle into MOODLE_28_STABLE 2015-06-09 14:57:02 +01:00
Dan Poltawski 5b5635628f Merge branch 'MDL-49659_M28' of git://github.com/lazydaisy/moodle into MOODLE_28_STABLE 2015-06-09 14:42:05 +01:00
Marina Glancy adc2d84d49 MDL-50222 admin: do not use deprecated print_textarea() 2015-06-09 20:59:09 +08:00
Dan Poltawski bbfc652b71 Merge branch 'MDL-49885_course_overview_block2_28' of https://github.com/andyjdavis/moodle into MOODLE_28_STABLE 2015-06-09 13:57:25 +01:00
Martin Mastny d89a43f195 MDL-50186 forms: Removed special characters from id attribute 2015-06-09 13:33:03 +01:00
Adam Olley 9e44b9e55d MDL-50176 repository_youtube: Switch to using YouTube Data API
As of April 20, 2015, the old API used by repository_youtube is no longer
accessible. This change switches over to using the standard Google Data
API v3.

Unfortunately this means that to search YouTube, a developer api key is now
*required*.

Special thanks to UNSW for sponsoring this work.
2015-06-09 09:48:22 +09:30
David Mudrák 1d19a5eb47 MDL-50509 datalib: Fix the typo in the variable name
The line is supposed to sanitize the function parameter.
2015-06-08 11:18:02 +02:00
Dave Cooper 3b6b8abc57 MDL-49497 curl: Add configurable User-Agent unit tests. 2015-06-08 17:03:41 +08:00
Dave Cooper 4193196b8f MDL-49497 curl: Allow configurable User-Agent.
Thanks to Kartik Yadav for assistance with this patch.
2015-06-08 17:02:50 +08:00
Barry Oosthuizen cbb3c3e0b9 MDL-49959 course: Fix hidden drag and drop message 2015-06-08 09:33:51 +01:00
Andrew Davis 933a5e26cc MDL-49885 core_blocks: fixed course_overview block applicable_formats() 2015-06-08 06:40:05 +08:00
Juan Leyva a4f93d57ac MDL-50493 forum: Handle correctly qanda forums in get_discussion_posts 2015-06-06 00:01:25 +02:00
Mary Evans b451b66b40 MDL-49659 theme: Removed home link and limited login info in secure.php
Credits: Thanks go to Andreas Hruska [https://github.com/ahruska] for the original patch for this issue.
2015-06-04 17:50:38 +01:00
Eloy Lafuente (stronk7) 570bcd8274 weekly release 2.8.6+ 2015-06-04 12:09:07 +02:00
Eloy Lafuente (stronk7) a777a3f222 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-06-04 12:09:01 +02:00
Rajesh Taneja 5a0a9c8e73 MDL-47995 lib: encode title properly, before additing it to image title 2015-06-04 12:56:30 +08:00
Matteo Scaramuccia fd4ae15898 MDL-50415 Admin: added the PHP Variables section in the PHPinfo page. 2015-06-03 21:23:46 +02:00
Eloy Lafuente (stronk7) c2a0ce47db Merge branch 'MDL-47995-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-06-03 11:11:35 +02:00
Simey Lameze 29010702b2 MDL-50380 mod_wiki: fix missing parameter on wiki edit files page
Also fixing a typo on the $referer variable.
2015-06-03 16:46:06 +08:00
Dan Poltawski 31aa2496d1 Merge branch 'MDL-49323-28' of git://github.com/nmoller/moodle into MOODLE_28_STABLE 2015-06-02 13:23:31 +01:00
Martin Mastny 029972ac7c MDL-50438 filter_glossary: Added missing exception classes 2015-06-02 16:31:50 +08:00
Dan Poltawski 8c37f8667e Merge branch 'MDL-46927_m28' of git://github.com/markn86/moodle into MOODLE_28_STABLE 2015-06-02 09:03:54 +01:00
Mark Nelson fee1d071bd MDL-46927 core_files: fixed issue with system course restores
When clicking on 'Restore' next to a file in the 'Course
backup area' in the system context the message 'Sorry,
the requested file could not be found' was displayed.
This fix adds missing functionality to the class
'file_info_context_system' so that the file information
is correctly returned.
2015-06-01 23:09:23 -07:00
Ankit Agarwal 6dbe2aaacb MDL-47480 tasks: Define order for getting tasks 2015-06-02 08:18:13 +05:30
AMOS bot 2562ce63d4 Automatically generated installer lang files 2015-06-02 00:04:20 +08:00
Nelson Moller 615d97944e MDL-49323 mod_assign: Fixed numeric validation in grade form.
The behat test for another decimal separator was incorporated.
2015-06-01 11:03:19 -04:00
Dan Poltawski 413288345c Merge branch 'MDL-50341_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-06-01 15:03:47 +01:00
Dan Poltawski 6e09b240bf MDL-50322 forum: add basic split post behat coverage
Also bump version for autoloading new class.
2015-06-01 15:00:01 +01:00
Dan Poltawski 2fef7540f1 Merge branch 'MDL-50322-28' of git://github.com/mastnym/moodle into MOODLE_28_STABLE 2015-06-01 14:55:32 +01:00
Dan Poltawski d0be17a749 Merge branch 'MDL-50304_28' of https://github.com/jinhofer/moodle into MOODLE_28_STABLE 2015-06-01 13:21:57 +01:00
Dan Poltawski c71949dc53 MDL-50406 less: built. 2015-06-01 11:56:51 +01:00
Dan Poltawski cd20ea8b95 Merge branch 'MDL-50406_M28' of git://github.com/nadavkav/moodle into MOODLE_28_STABLE 2015-06-01 11:42:25 +01:00
Dan Poltawski bc1a1aaf32 Merge branch 'MDL-49707-28' of git://github.com/ankitagarwal/moodle into MOODLE_28_STABLE 2015-06-01 10:22:03 +01:00
Ankit Agarwal 51208a3c32 MDL-49707 inbound: localpart should be < 15 2015-06-01 10:10:09 +05:30
Tim Hunt 01b3b79a94 MDL-50341 quiz statistics: non-attempted questions broke first-try stats
For behaviours that allow multiple tries, and when the teacher had chosen to
generate statistics for the first tries only, and when a student had not
attempted one question, then an error occurred. It should have been classified
as no response.
2015-05-31 13:54:38 +01:00
Nadav Kavalerchik 50885a5b23 MDL-50406 Messages: Right align messages menu box, in RTL mode. 2015-05-30 12:22:39 +03:00
AMOS bot 9d759a8b9e Automatically generated installer lang files 2015-05-30 00:04:09 +08:00
Martin Mastny 183c8315d9 MDL-50322 mod_forum: Added validation when spliting discussions 2015-05-29 09:15:19 +08:00
AMOS bot 9c9f81b9e7 Automatically generated installer lang files 2015-05-29 00:04:03 +08:00
jinhofer fb06f2a87c MDL-50304 atto/plugins/table: Fixed _addRowAfter function 2015-05-28 07:54:17 -05:00
David Monllao 14d2791057 weekly release 2.8.6+ 2015-05-28 10:55:03 +08:00
David Monllao 66296d8f06 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-05-28 10:55:01 +08:00
Eloy Lafuente (stronk7) 6992979404 Merge branch 'wip-mdl-49806-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-05-27 12:52:10 +02:00
David Monllao 537361c5e4 Merge branch 'MDL-50340-28' of git://github.com/ankitagarwal/moodle into MOODLE_28_STABLE 2015-05-27 11:59:00 +08:00
Rajesh Taneja f6fa9b4997 MDL-49806 behat: Ensure user is marked complete before runnning cron 2015-05-27 09:27:20 +08:00
David Monllao 330930ae62 MDL-49611 completion: Update dangling err_nocriteria lang strings
Credit to Aaron Barnes.
2015-05-27 08:52:59 +08:00
Eloy Lafuente (stronk7) 02ee1effbd Merge branch 'wip-MDL-50191-m28' of https://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-05-26 18:20:00 +02:00
AMOS bot aa0a762aa4 Automatically generated installer lang files 2015-05-27 00:03:54 +08:00
Dan Poltawski b6e389b74a Merge branch 'MDL-50318-28-courseresources' of git://github.com/mudrd8mz/moodle into MOODLE_28_STABLE 2015-05-26 13:05:08 +01:00
Dan Poltawski d4f82690a5 Merge branch 'MDL-49787_email_attachments_symlink_fix_28' of https://github.com/iamandrew/moodle into MOODLE_28_STABLE 2015-05-26 12:56:32 +01:00
Dan Poltawski 744c5a5bb8 Merge branch 'MDL-49776-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-05-26 11:53:56 +01:00
Dan Poltawski 4ef0f57dbc Merge branch 'MDL-49560-28' of git://github.com/gurgus/moodle into MOODLE_28_STABLE 2015-05-26 11:33:47 +01:00
Dan Poltawski d88c3438c5 Merge branch 'MDL-50271-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-05-26 11:31:54 +01:00
David Monllao 8ff5016cef Merge branch 'MDL-50344-28' of git://github.com/ankitagarwal/moodle into MOODLE_28_STABLE 2015-05-26 17:29:56 +08:00
David Monllao 2efaa63376 Merge branch 'MDL-48664-28' of git://github.com/jethac/moodle into MOODLE_28_STABLE 2015-05-26 14:46:24 +08:00
Ankit Agarwal 1a7bdd06d7 MDL-50340 adminstration: Fix restore course links 2015-05-26 12:04:13 +05:30
David Monllao d35759ae7d Merge branch 'MDL-46550-28' of git://github.com/ankitagarwal/moodle into MOODLE_28_STABLE 2015-05-26 12:29:36 +08:00
Ankit Agarwal 4cd93d2596 MDL-50315 behat: I am on site homepage behat step 2015-05-26 12:19:58 +08:00
Jetha Chan f678a6eec0 MDL-48664 output: change paging_bar to not use non-breaking spaces 2015-05-26 12:14:07 +08:00
Dan Poltawski 077eaa11a1 Merge branch 'MDL-50313-28-featureidnumber' of git://github.com/mudrd8mz/moodle into MOODLE_28_STABLE 2015-05-25 13:54:08 +01:00
Dan Poltawski a56d0af3f6 Merge branch 'MDL-40592_M28' of https://github.com/nadavkav/moodle into MOODLE_28_STABLE 2015-05-25 12:28:40 +01:00
Dan Poltawski c237de3747 Merge branch 'MDL-49493-28' of git://github.com/mastnym/moodle into MOODLE_28_STABLE 2015-05-25 12:02:16 +01:00
David Monllao 59c638dc00 Merge branch 'wip-MDL-49572-m28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-05-25 17:54:59 +08:00
Marina Glancy 421f72704e MDL-49560 webservice: avoid recursion in soap
Thanks to El Leonidych for providing a patch
2015-05-25 16:01:25 +08:00
Ankit Agarwal e49a94cd14 MDL-50344 restore: Make restore file required 2015-05-25 12:08:26 +05:30
spvickers 0444eedad7 MDL-49776 mod_lti: Set parameter in privacy check
Moved sending of the lis_result_sourcedid parameter to within the block
which checks that grades are being accepted for the link.
2015-05-25 13:03:08 +08:00
iclearn 127b75e161 MDL-47995 mod_url: add proper title encoding on url mod 2015-05-25 12:55:40 +08:00
iclearn 42a3d7709d MDL-47995 mod_resource: properly encode resource title 2015-05-25 12:55:40 +08:00
Martin Mastny 69a1435d46 MDL-49493 backup: Implemented missing methods for anonymous backup 2015-05-25 10:41:49 +08:00
AMOS bot 892dba30c6 Automatically generated installer lang files 2015-05-23 00:04:08 +08:00
Juan Leyva caf3cb78e5 MDL-50271 webservices: Allow to load multiple themes in WS_SERVER mode 2015-05-22 13:27:06 +02:00
Damien Bezborodov 811f699514 MDL-50285 gradereport_user: Grade categories calculate wrong with suspended users (Student's view) 2015-05-22 17:53:07 +09:30
Nadav Kavalerchik 851bc55bde MDL-40592 assign/grading: Display default user picture, if none is set. 2015-05-22 10:37:23 +03:00
Tim Hunt 6f1b265a2b MDL-49368 qtypes match & multichice: cope with editing after attempt
Teachers should not radically edit a question after it has been
attempted. However, if they do, we should handle it gracefully, rather
than triggering PHP errors.
2015-05-21 18:17:45 +01:00
AMOS bot 1736fc82fa Automatically generated installer lang files 2015-05-22 00:03:54 +08:00
David Mudrák 2daaae15ea MDL-50318 course: Fix the URL of embedded images at resources overview
Not only mod_resource instances are listed here. All modules that
declare their FEATURE_MOD_ARCHETYPE as MOD_ARCHETYPE_RESOURCE (well, all
but those without own view page, such as mod_label) are listed. So we
must use the real plugin name when rendering the intro field.
2015-05-21 17:18:05 +02:00
David Mudrák 5157d7e013 MDL-50313 docs: Fix the documentation for the FEATURE_IDNUMBER constant
The constant is used by course/moodleform_mod.php to decide whether the
field 'ID number' (cmidnumber) should be included in the common module
settings section of the activity settings form. Activity modules that do
not use grades (such as the Label) can explicitly return false when
checking for this feature support. By default, all activity modules are
supposed to support it.
2015-05-21 16:50:15 +02:00
Eloy Lafuente (stronk7) 08d1c32b45 weekly release 2.8.6+ 2015-05-21 12:37:20 +02:00
Marina Glancy a5dcc1b90f MDL-50191 cohorts: check manage cap to display hide icon 2015-05-21 12:19:38 +08:00
Marina Glancy 4b74b4791f MDL-49572 cache: correctly purge cache on event 2015-05-20 14:06:43 +08:00
Rajesh Taneja 5a554e9746 MDL-49061 behat: Fixed input name to use full activity name 2015-05-20 10:19:10 +08:00
Eloy Lafuente (stronk7) 6c05d34bf4 Merge branch 'wip-mdl-50259-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-05-19 18:02:51 +02:00
Eloy Lafuente (stronk7) f790a5d1e4 Merge branch 'MDL-50275-28' of git://github.com/danpoltawski/moodle into MOODLE_28_STABLE 2015-05-19 17:46:03 +02:00
Dan Poltawski 9cc1cf5808 Merge branch 'MDL-49680_m28' of https://github.com/markn86/moodle into MOODLE_28_STABLE 2015-05-19 16:36:41 +01:00
Dan Poltawski cf14d5d951 MDL-50275 quiz: version bump for MDL-49941
Otherwise the new capability risk does not get loaded
2015-05-19 15:41:25 +01:00
Dan Poltawski 39baf6a0e2 Merge branch 'wip-MDL-49061-m28' of https://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-05-19 15:00:53 +01:00
Dan Poltawski ed1b321918 Merge branch 'wip-mdl-50203-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-05-19 12:39:00 +01:00
Rajesh Taneja 5dcbbcc117 MDL-50259 behat: Use strict activity name checking
contains might select wrong activity
so using strict activity text checking
2015-05-19 14:48:29 +08:00
Mark Nelson 8ee8195650 MDL-49680 core_question: added ability to order questions by dates
Backport of MDL-25721.
2015-05-18 19:06:09 -07:00
Skylar Kelty f8e680ca11 MDL-50169: Fix grade report SQL logic 2015-05-19 02:04:11 +02:00
Eloy Lafuente (stronk7) a942187816 Merge branch 'MDL-50280_28' of https://github.com/sk-unikent/moodle into MOODLE_28_STABLE 2015-05-19 01:43:21 +02:00
Eloy Lafuente (stronk7) fdcf4144dc Merge branch 'MDL-48467-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE 2015-05-19 01:33:14 +02:00
Eloy Lafuente (stronk7) da8ee816a7 Merge branch 'MDL-50197_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-05-19 00:35:47 +02:00
Eloy Lafuente (stronk7) 3c68e824d7 Merge branch 'MDL-50245_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-05-19 00:33:25 +02:00
Skylar Kelty 9d472d7319 MDL-50280 WebCT import scripts don't always clean up 2015-05-18 16:49:27 +01:00
Dan Poltawski f53c8c2a02 Merge branch 'MDL-49764_28' of https://github.com/jinhofer/moodle into MOODLE_28_STABLE 2015-05-18 15:29:02 +01:00
Dan Poltawski f324728737 Merge branch 'MDL-50092_28' of git://github.com/dmonllao/moodle into MOODLE_28_STABLE 2015-05-18 13:59:50 +01:00
jinhofer ecf17cfd73 MDL-49764 grade/report/grader: Fixed height issue for IE 2015-05-18 07:48:14 -05:00
Dan Poltawski e8b9d60c27 Merge branch 'MDL-50177_28' of git://github.com/dmonllao/moodle into MOODLE_28_STABLE 2015-05-18 13:01:48 +01:00
Andrew Davidson 4ee8f04bef MDL-49787 email: Updated email attachement path check to use realpath() in order to allow for symlinked temp directories 2015-05-18 12:04:50 +01:00
Ankit Agarwal b3b4c00d5b MDL-46550 logs: Fix incorrect url
Thanks to Nadav Kavalerchik for the suggestion on patch
2015-05-18 12:02:36 +05:30
Adrian Greeve cfa002f6ee MDL-49742 lib: Removed additional names on tables for sorting.
When additional names are disabled, they are no longer shown as
sortable headings in the enrolment and admin user tables.
2015-05-15 15:33:52 +08:00
Tim Hunt e5636f9aa4 MDL-50245 quiz: fix CSS of search options in the qbank dialogue 2015-05-14 14:41:22 +01:00
David Monllao 18202cbed7 weekly release 2.8.6+ 2015-05-14 11:34:27 +08:00
Rajesh Taneja bb4bc850f4 MDL-50203 behat: Click on link in student 1 row 2015-05-13 15:23:40 +08:00
Marina Glancy 5f7d350f72 MDL-49061 reports: call format_string on activities names 2015-05-13 12:18:31 +08:00
David Monllao 7ce3c31e12 Merge branch 'MDL-25138-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-05-13 10:26:00 +08:00
Damyon Wiese e9f173e2d4 MDL-25138 core_tags: remove duplicated related tags 2015-05-12 13:07:01 +08:00
Simey Lameze 916ac383ef MDL-25138 core_tag: fix correlated tags query unique error 2015-05-12 13:07:00 +08:00
David Monllao d1d546a0c4 MDL-50177 completion: Also accepting cm integer strings 2015-05-12 12:21:55 +08:00
David Monllao b26f0f688f Merge branch 'MDL-34102_28' of git://github.com/jmvedrine/moodle into MOODLE_28_STABLE 2015-05-12 12:12:50 +08:00
Tim Hunt bcda2f3745 MDL-50197 quiz editing: fix dialogue titles at the end of the quiz 2015-05-11 16:22:16 +01:00
David Monllao d11eec562a MDL-50092 enrol_imsenterprise: Fixing wrong field name
Thanks to JD for the fix.
2015-05-11 14:55:15 +08:00
Eloy Lafuente (stronk7) dc7b914677 Moodle release 2.8.6 2015-05-10 11:39:22 +02:00
Eloy Lafuente (stronk7) 8f018d49ac weekly release 2.8.5+ 2015-05-08 12:14:47 +02:00
Eloy Lafuente (stronk7) 5a71a6b7e5 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-05-08 12:14:30 +02:00
Andrew Nicols 0fee379892 MDL-50153 messageinbound: Normalise line endings instead of rtrim 2015-05-08 16:20:44 +08:00
Andrew Nicols 51483fe057 Merge branch 'wip-mdl-50154-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-05-08 13:42:17 +08:00
Rajesh Taneja cb2cf4a6a7 MDL-50154 behat: Click on Grades link under navigation 2015-05-08 13:08:38 +08:00
Rajesh Taneja b9acc1422a MDL-50154 behat: Resize pdf window so toolbar is always visible 2015-05-08 13:08:13 +08:00
Andrew Nicols 2ca3c8ad0d MDL-50153 messageinbound: Make messageinbound tests dos-safe 2015-05-08 12:17:21 +08:00
Andrew Nicols c1108ed7fc MDL-50153 core: Use directory_separator when autoloading psr0 classes 2015-05-08 12:17:20 +08:00
Ramindu Deshapriya c408fe813c MDL-43731 mod_book: Added Behat test to automate MDLQA-1791 2015-05-08 00:43:42 +05:30
Adrian Greeve b3ec0280ea MDL-50039 tool_monitor: Behat update to fix error.
The teacher does not have the option to select Site
level rules so this section has been removed.
2015-05-07 13:13:21 +08:00
Adrian Greeve ac6f7b18be MDL-50039 tool_monitor: Additional checks for subscription.
Additional capability checks are now in place to stop unauthorised
users from accessing the event monitor subscription page.
2015-05-07 13:13:21 +08:00
Frederic Massart c3bec9f51e MDL-50128 mod_data: String needed escaping before being used in regex 2015-05-07 11:21:09 +08:00
Andrew Nicols d186a97e10 Merge branch 'm28_MDL-50133' of https://github.com/danmarsden/moodle into MOODLE_28_STABLE 2015-05-07 10:25:18 +08:00
Andrew Nicols c1452371db Merge branch 'MDL-49783-28' of git://github.com/mastnym/moodle into MOODLE_28_STABLE 2015-05-07 09:42:51 +08:00
Martin Mastny 835bbc41fd MDL-49783 forms: Collapsed form section is opened on error 2015-05-07 09:14:34 +08:00
Dan Marsden 1a0d12e4a2 MDL-50133 mod_scorm: use correct captypes 2015-05-07 11:46:23 +12:00
Marina Glancy 032f18c4a5 MDL-49788 navigation: Ensure we only check active enrolments 2015-05-06 08:02:45 +01:00
Salih Gedik d7f66ebe07 MDL-49789 mod_book: filter book chapter content 2015-05-06 13:55:07 +08:00
Marina Glancy 7f5bd0da0e MDL-49718 externallib: unittest correction 2015-05-06 13:01:53 +08:00
Marina Glancy 98c38993fd MDL-50090 user: suspended user can login upon conrimation 2015-05-06 11:01:20 +08:00
Juan Leyva 77067fbb3a MDL-49718 webservices: Fix forced format and force external text cleaning 2015-05-06 10:56:17 +08:00
Juan Leyva 8e8ee75304 MDL-49994 files: Prevent to browse private files when are disabled 2015-05-06 10:27:32 +08:00
AMOS bot 9a1dc85511 Automatically generated installer lang files 2015-05-06 00:03:57 +08:00
Marina Glancy e2e7e35da3 MDL-50099 auth: less verbose account confirmed message 2015-05-05 15:33:50 +01:00
Frederic Massart 8c45d46d36 MDL-49179 setuplib: print_error() uses local URLs exclusively 2015-05-05 18:31:14 +08:00
Frederic Massart 17b8efa585 MDL-49179 weblib: Secure the direct usage of $_SERVER['HTTP_REFERER'] 2015-05-05 18:31:14 +08:00
Frederic Massart 71c1cfb143 MDL-49179 mod_forum, mod_quiz: Prevent misuse of get_referer() 2015-05-05 18:31:14 +08:00
Tim Hunt 1ce4f44df7 MDL-49941 quiz: mod/quiz:grade should declare RISK_XSS 2015-05-05 18:31:14 +08:00
Frederic Massart 9bf7fea937 MDL-49401 moodlelib: PARAM_LOCALURL supports loginhttps 2015-05-05 18:31:14 +08:00
Eloy Lafuente (stronk7) f3895b00a5 weekly release 2.8.5+ 2015-05-05 12:28:47 +02:00
David Monllao 1b1d0419a4 Merge branch 'wip-MDL-49778-28' of git://github.com/abgreeve/moodle into MOODLE_28_STABLE 2015-05-05 15:05:50 +08:00
David Monllao a86de7c0d9 Merge branch 'MDL-49227-28' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE 2015-05-05 14:36:55 +08:00
Adrian Greeve ec2a1ba2fe MDL-49778 lib: Update to upgrade_stale_php_files_present() 2015-05-05 12:45:24 +08:00
Andrew Nicols 9b94fabcb0 MDL-48002 inbound: Tidy up language in unit test 2015-05-05 10:59:49 +08:00
David Monllao 2cd81b11b1 Merge branch 'MDL-50055-28' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE 2015-05-05 10:52:07 +08:00
David Monllao 6cb5fe8472 Merge branch 'MDL-49848-28' of git://github.com/xow/moodle into MOODLE_28_STABLE 2015-05-05 10:38:45 +08:00
John Okely 33b16dd3cd MDL-49848 message: Make messaging interface responsive 2015-05-05 10:31:52 +08:00
Andrew Nicols d4b4f96e6c MDL-50055 enrol: Stop requiring javascript for behat tests 2015-05-05 10:24:30 +08:00
Andrew Nicols 5e3fca4d3b MDL-50055 tests: Add new step to deal with Single Selects 2015-05-05 10:24:29 +08:00
David Monllao eaa13b3809 Merge branch 'MDL-48002-28' of git://github.com/ankitagarwal/moodle into MOODLE_28_STABLE 2015-05-05 10:21:46 +08:00
Ankit Agarwal a2d176c2ed MDL-48002: inbound: Add outlook fixture 2015-05-04 15:21:51 +05:30
Ankit Agarwal d9e191b89e MDL-48002 inbound: Update regex for token matching 2015-05-04 15:21:51 +05:30
Ankit Agarwal 813c1136bc MDL-48002: inbound: Add ios fixture 2015-05-04 15:21:51 +05:30
Ankit Agarwal 149017a96c MDL-48002 inbound: Update fixtures to add client info 2015-05-04 15:21:51 +05:30
Ankit Agarwal e945517d66 MDL-48002 inbound: add tests for evolution 2015-05-04 15:21:51 +05:30
Andrew Nicols c712250d6b MDL-48002 inbound Unit tests from fixtures for quoted text 2015-05-04 15:21:51 +05:30
Ankit Agarwal e39a1db7b6 MDL-48002 inbound: Remove quoted text from forum emails 2015-05-04 15:21:51 +05:30
David Monllao d63c8ec710 Merge branch 'MDL-49954-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-05-04 15:16:19 +08:00
Andrew Nicols 62383073f5 MDL-49227 mod_forum: Improve discussion subscription on post
If the user has posted in the forum before, follow their previous
discussion preference.

If the user has not posted before, but is subscribed to the forum, follow
their forum preference.

Otherwise, follow their user-preference.

This has the result that if a user has unsubscribed from a forum and writes
their first response; the user preference will be followed. This may
override the forum subscription.

This commit also changes from a dropdown to a checkbox in the post form.

This is a backport of MDL-48221
2015-05-04 09:56:05 +08:00
Andrew Nicols 0013192227 Merge branch 'wip-mdl-50103-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-05-04 09:39:03 +08:00
David Monllao 1be0ead2d4 MDL-50103 mod_assign: Fixing behat test
The participant number is dynamically generated so it is not possible to
match known values.

Match on the submission text instead.
2015-05-04 09:33:05 +08:00
Andrew Nicols 5c8bc25cd1 Merge branch 'wip-MDL-50066-m28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-05-04 09:14:48 +08:00
David Monllao 0706e7ac17 weekly release 2.8.5+ 2015-05-01 16:47:25 +08:00
David Monllao 8069916549 MDL-49232 enrol_self: Adapting unit test to new can_self_enrol() output 2015-05-01 15:49:10 +08:00
Andrew Nicols f293278132 Merge branch 'MDL-49232_m28' of git://github.com/markn86/moodle into MOODLE_28_STABLE 2015-05-01 09:27:41 +08:00
Dan Poltawski e6a09c5359 Merge branch 'MDL-50028_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-04-30 16:07:16 +01:00
Jean-Michel Vedrine 06e7de3d96 MDL-34102 mod_lesson: display feedback
Feedback for incorrect answer was not diplayed when
Provide option to try a question again was set to Yes.

Conflicts:
	mod/lesson/locallib.php
2015-04-30 13:14:42 +02:00
Marina Glancy ed402015bb MDL-50066 strings: unable to deprecate string from moodle.php 2015-04-30 16:15:24 +08:00
Andrew Nicols 9495b310e5 Merge branch 'MDL-49583-m28' of https://github.com/NeillM/moodle into MOODLE_28_STABLE 2015-04-30 15:11:42 +08:00
Andrew Nicols e3a371a7a1 Merge branch 'MDL-50038-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-04-30 14:56:30 +08:00
David Monllao a3a4c4f028 Merge branch 'MDL-49281-28' of git://github.com/mastnym/moodle into MOODLE_28_STABLE 2015-04-30 14:54:04 +08:00
Martin Mastny 986ee9fd2a MDL-49281 grades: Calculation settings upgraded 2015-04-30 13:43:45 +08:00
Andrew Nicols 95bfd8108b Merge branch 'MDL-50033-28-enfix' of git://github.com/mudrd8mz/moodle into MOODLE_28_STABLE 2015-04-30 10:51:37 +08:00
Andrew Nicols 23eee911ef MDL-49232 enrol_self: Add behat test for non-guest self-enrolment 2015-04-29 18:02:45 -07:00
Mark Nelson bbaf38b921 MDL-49232 enrol_self: display continue button 2015-04-29 18:02:44 -07:00
David Mudrák a0deded716 MDL-50033 lang: Update Behat scenario to use the new string 2015-04-29 23:35:28 +02:00
Helen Foster cdf4ba9549 MDL-50033 lang: Merge English strings from the en_fix language pack 2015-04-29 23:22:36 +02:00
Frederic Massart 4127b60cb5 MDL-50038 my: Redirect admin users to the notifications page when needed 2015-04-29 19:05:36 +08:00
Neill Magill eaba80f68d MDL-49583 enrol: enrol/index.php page doesn't handle direct access well
Before this patch if a user who is not logged in to Moodle accesses the
enrol/index.php page directly they were redirected to the Moodle front
page after login, rather than back to a page that would allow them to
self enrol, if it is enabled on the course.

This change will cause a user who directly accesses the page to be
redirected back to it after they have logged in, unless the course has guest
access enabled.

Thanks to Marina Glancy for suggesting the use of get_referer()
2015-04-29 09:19:00 +01:00
David Monllao 32f86cd8e9 Merge branch 'MDL-49637-m28' of git://github.com/NeillM/moodle into MOODLE_28_STABLE 2015-04-29 12:05:09 +08:00
Tim Hunt 00d5b5c9a3 MDL-50028 qtype_match: fix correct answer display
Atto's stupid tendency to create HTML like
<p>You don't need a br at the end of a paragraph!</br></p>
was breaking it.
2015-04-28 13:08:24 +01:00
Tim Hunt a81b8267c7 MDL-50028 questions: split into one testcase class per file 2015-04-28 13:08:22 +01:00
Dan Poltawski 9fb9aa7215 weekly release 2.8.5+ 2015-04-28 09:28:06 +01:00
Dan Poltawski 0309e1e39d Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-04-28 09:28:04 +01:00
Neill Magill 895d6c75a4 MDL-49637 assign: Workflow & blind marking do not always show feedback
Before this patch if an assignment has workflow and blind marking enabled if a teacher
sets a submission to have its grades released to students before they reveal student
identities the feedback they have given is not displayed to the student.

The patch causes the reveal_identities() method to pass the correct value to the
get_feedback_plugin_by_type() function in the assign class.
2015-04-28 09:09:08 +01:00
Neill Magill 4358b705e5 MDL-49637 assign: Behat test for blind marking with workflow
This test checks that that if reveal student identities is used before or after the submissions grades have
been set released that the teacher's feedback is displayed to students.
2015-04-28 09:08:53 +01:00
David Monllao 39daab950a Merge branch 'MDL-42449-2.8' of git://github.com/andrewhancox/moodle into MOODLE_28_STABLE 2015-04-28 11:08:29 +08:00
Andrew Nicols 3c3c41682c Merge branch 'MDL-49926-28' of git://github.com/mastnym/moodle into MOODLE_28_STABLE 2015-04-28 10:27:12 +08:00
Martin Mastny 93e4b10b8e MDL-49926 gradereport: Cursor changes to pointer on hover 2015-04-28 10:23:03 +08:00
David Monllao f8ef412113 Merge branch 'MDL-49911-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-04-28 09:47:01 +08:00
Juan Leyva 0c19d0828a MDL-49954 forum: Use clean_returnvalue properly in external unit tests 2015-04-27 18:26:06 +02:00
AMOS bot ee0cb8eb8d Automatically generated installer lang files 2015-04-28 00:04:14 +08:00
Dan Poltawski 5ff4e7ad7b Merge branch 'MDL-49993_28' of git://github.com/grabs/moodle into MOODLE_28_STABLE 2015-04-27 14:48:00 +01:00
Dan Poltawski 08c051c00b Merge branch 'MDL-49913_28' of git://github.com/jmvedrine/moodle into MOODLE_28_STABLE 2015-04-27 14:28:28 +01:00
Dan Poltawski 6a2192e887 Merge branch 'MDL-49977_m28' of git://github.com/markn86/moodle into MOODLE_28_STABLE 2015-04-27 10:53:18 +01:00
Andreas Grabs 6a7b2dd0cb MDL-49993 mod_feedback: Question auto numbers have no space between number and question 2015-04-26 19:04:21 +02:00
AMOS bot 796987c5f6 Automatically generated installer lang files 2015-04-25 00:04:08 +08:00
Andrew Hancox 8a5908a9b3 MDL-42449 backup: Fix for activity grade category
Retain grade category when restoring an activity into the course that
it came from
2015-04-24 14:01:31 +01:00
Dan Poltawski ee056895a3 weekly release 2.8.5+ 2015-04-24 12:10:52 +01:00
Dan Poltawski e61f453067 Merge branch 'MDL-49960-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-04-24 09:06:40 +01:00
Frederic Massart 2607a4e671 MDL-49911 admin: Prevent notices when updatenotifications is disabled 2015-04-24 14:49:15 +08:00
Martin Mastny 1ac7e7e5c8 MDL-49926 gradereport: Feedback gets saved when editing grade in ajax mode 2015-04-24 13:17:01 +08:00
Andrew Nicols e5bb411fe4 Merge branch 'MDL-49311-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-04-24 11:40:37 +08:00
papillon a65ba62f66 MDL-49311 user: fix default sorting problem 2015-04-24 09:13:53 +08:00
Mark Nelson 197824b5f8 MDL-49977 mod_assign: added missing page titles 2015-04-23 17:08:49 -07:00
Dan Poltawski 4a1a78244e Merge branch 'MDL-49946_28' of https://github.com/jmvedrine/moodle into MOODLE_28_STABLE 2015-04-23 13:32:36 +01:00
Frederic Massart 53318d9fce MDL-49960 message: Adding behat test for recent conversations 2015-04-23 14:55:52 +08:00
Jean-Michel Vedrine a1be2ce57d MDL-49913 mod_lesson: studentanswer format should be HTML 2015-04-23 08:28:36 +02:00
Jean-Michel Vedrine 19a6d37b9f MDL-49913 mod_lesson: fix import scores and jumps 2015-04-23 08:28:34 +02:00
Jean-Michel Vedrine 34acf52a3f MDL-49913 mod_lesson: defaultanswer to avoid duplication 2015-04-23 08:28:31 +02:00
Jean-Michel Vedrine 837c7f5696 MDL-49913 mod_lesson: round question grades on import 2015-04-23 08:28:28 +02:00
Andrew Nicols 1498e02eba Merge branch 'MDL-49319_backport_28' of https://github.com/andyjdavis/moodle into MOODLE_28_STABLE 2015-04-23 14:13:51 +08:00
Andrew Nicols 1007677df4 Merge branch 'MDL-49477-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-04-23 13:52:15 +08:00
Andrew Nicols 38bf1824f8 Merge branch 'MDL-34921_28_unwanted-sitehome-redirects' of https://github.com/colin-umn/moodle into MOODLE_28_STABLE 2015-04-23 12:28:21 +08:00
Andrew Nicols e08df28765 Merge branch 'MDL-49613-m28' of https://github.com/NeillM/moodle into MOODLE_28_STABLE 2015-04-23 11:20:50 +08:00
Jean-Michel Vedrine 0de51e6ad1 MDL-49946 mod_lesson: improve qformat_default::defaultquestion 2015-04-22 19:49:59 +02:00
Dan Poltawski 52388b1bb4 Merge branch 'MDL-49921-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-04-22 16:41:35 +01:00
Andrew Davis 19a4bdb7f4 MDL-49319 core_registration: altered registration strings 2015-04-22 20:00:05 +08:00
Viduranga Wijesooriya cfd867e7d9 MDL-49477 availability_grade-form: checkbox disable problem fixed
Signed-off-by: Viduranga Wijesooriya <vpowerrc@gmail.com>
2015-04-22 17:35:41 +08:00
Tony Butler e8062e2cfe MDL-49933 mod_assign: Sort marker select lists alphabetically by name 2015-04-22 17:02:39 +08:00
Neill Magill e115db6dce MDL-49613 access: count_role_users gives unexpected results
The count_role_users function in lib/accesslib.php gives the wrong results if a user has the
same role at multiple levels in a context path.

For example a user is a coursecreator on a course and the category that the course is in,
in this case they would be counted twice, rather than being recognised as the same user.

This change will make the function only count unique users.
2015-04-22 09:31:27 +01:00
Neill Magill dd97173944 MDL-49613 access: Unit test for count_role_users 2015-04-22 09:31:26 +01:00
Juan Leyva 5f155af825 MDL-49921 forum: Handle exceptions correctly in get_forums_by_courses 2015-04-22 09:48:31 +02:00
Andrew Nicols c40fbd5e14 Merge branch 'MDL-49753-m28' of https://github.com/alexmitin/moodle into MOODLE_28_STABLE 2015-04-22 11:05:07 +08:00
Dan Poltawski 8fc43b0d64 weekly release 2.8.5+ 2015-04-21 11:16:27 +01:00
Dan Poltawski 8543e7c0d0 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-04-21 11:16:25 +01:00
Andrew Nicols fa35ed9955 MDL-40811 uploaduser: Optimise testuser code 2015-04-21 11:35:48 +08:00
Andrew Nicols b6f2ac8c59 Merge branch 'MDL-40881_M28' of https://github.com/nadavkav/moodle into MOODLE_28_STABLE 2015-04-21 11:34:20 +08:00
Brian Barnes c41e9a3312 MDL-49782 general: removed uses of window.status 2015-04-21 10:46:02 +08:00
AMOS bot 0ccc3820c4 Automatically generated installer lang files 2015-04-21 00:04:20 +08:00
Andrew Nicols 42adb9f74a Merge branch 'wip-mdl-49799-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-04-20 12:27:41 +08:00
David Monllao 5e67fb9442 Merge branch 'MDL-48187_m28' of git://github.com/markn86/moodle into MOODLE_28_STABLE 2015-04-20 12:20:04 +08:00
David Monllao 4d83fde993 Merge branch 'wip-MDL-49880-28' of git://github.com/abgreeve/moodle into MOODLE_28_STABLE 2015-04-20 12:13:00 +08:00
Mark Nelson fb3a9ecb92 MDL-48187 core_course: use updated '$grade_item' 2015-04-19 20:30:34 -07:00
Rajesh Taneja 768d7fca5f MDL-49799 behat: replaced asd.com with example.com
asd.com is a valid domain, we should use reserved domain names for testing
2015-04-20 11:23:28 +08:00
David Monllao f5095227d3 Merge branch 'm28_MDL-49904' of git://github.com/totara/moodle into MOODLE_28_STABLE 2015-04-20 10:40:57 +08:00
Adrian Greeve 0485403978 MDL-49880 mod_lesson: Fixed notice while importing questions.
Cloze questions (not supported by lesson) threw up a notice saying that
the course wasn't set.
2015-04-20 08:41:09 +08:00
Dan Poltawski 81e0be88e9 weekly release 2.8.5+ 2015-04-17 10:53:53 +01:00
Dave Cooper da1af82875 MDL-49573 gradereport_singleview: Add tests for bulk grade inserts 2015-04-17 12:56:15 +08:00
David Monllao 52c475e082 Merge branch 'MDL-48723_28_forum-plagiarism_errors' of git://github.com/colin-umn/moodle into MOODLE_28_STABLE 2015-04-17 10:41:35 +08:00
Brian Barnes 2f2e2a3cc2 MDL-49904 user: set title when editing another user 2015-04-17 11:57:23 +12:00
Dan Poltawski 4140295c9f Merge branch 'MDL-49894-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-04-16 16:10:26 +01:00
Dan Poltawski 9d40bd98be Merge branch 'MDL-49573-28' of git://github.com/gurgus/moodle into MOODLE_28_STABLE 2015-04-16 16:08:24 +01:00
Juan Leyva c58cafbbaa MDL-49894 forum: Add deprecated information for get_forum_discussions 2015-04-16 15:21:58 +02:00
Dan Poltawski d902884587 Merge branch 'MDL-49837-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-04-16 12:17:51 +01:00
David Monllao 2a5a747fec Merge branch 'MDL-45131-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-04-16 17:04:56 +08:00
Juan Leyva 19ddaeb782 MDL-45131 notes: Add validation for returned parameters in WS tests 2015-04-16 10:35:52 +02:00
Juan Leyva 43d7576332 MDL-45131 course: Add validation for returned parameters in WS tests 2015-04-16 10:34:48 +02:00
Juan Leyva a1b54310e1 MDL-45131 user: Add validation for returned parameters in WS tests 2015-04-16 10:33:40 +02:00
Juan Leyva 728b068e24 MDL-45131 message: Add validation for returned parameters in WS tests 2015-04-16 10:33:40 +02:00
Juan Leyva 772f17a280 MDL-45131 files: Add validation for returned parameters in WS tests 2015-04-16 10:33:39 +02:00
Juan Leyva db4f496b52 MDL-45131 enrol: Add validation for returned parameters in WS tests 2015-04-16 10:33:38 +02:00
Juan Leyva 58611999f3 MDL-45131 cohort: Add validation for returned parameters in WS tests 2015-04-16 10:32:42 +02:00
Juan Leyva 1bfd51f16b MDL-45131 calendar: Add validation for returned parameters in WS tests 2015-04-16 10:32:41 +02:00
Dave Cooper c40624308f MDL-49573 gradereport_singleview: Add tests for bulk grade inserts 2015-04-16 13:26:47 +08:00
Dave Cooper 7fc9e24121 MDL-49573 gradereport_singleview: Fixed bulk insert override logic. 2015-04-16 13:26:46 +08:00
Skylar Kelty 4b55cb7109 MDL-49489 caching: Prevent full coursecontact purge 2015-04-16 07:49:59 +08:00
Dan Poltawski 27b7886b44 Merge branch 'MDL-49763-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-04-15 15:53:18 +01:00
Dan Poltawski 5ac077568d Merge branch 'MDL-49803_28' of git://github.com/dmonllao/moodle into MOODLE_28_STABLE 2015-04-15 15:06:18 +01:00
David Monllao 1927f330c4 Revert "MDL-46963 core_upgrade: change the call to guess_antelope_row_size"
This reverts commit 55f4e4c9cf.
2015-04-15 15:52:51 +08:00
David Monllao e9e274d60b MDL-49803 mod_quiz: Fixing overrides restore 2015-04-15 15:30:26 +08:00
Simey Lameze 55f4e4c9cf MDL-46963 core_upgrade: change the call to guess_antelope_row_size 2015-04-15 15:01:34 +08:00
David Monllao e712433e97 Merge branch 'MDL-46963-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-04-15 13:36:48 +08:00
Nadav Kavalerchik e5e43e747a MDL-40881 uploaduser: Validate profile fields unique values 2015-04-14 19:12:10 +03:00
Dan Poltawski eb5fab4fd9 weekly release 2.8.5+ 2015-04-14 16:49:13 +01:00
Dan Poltawski 10787caae9 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-04-14 16:49:10 +01:00
Rajesh Taneja e2ca0b6e67 MDL-44611 behat: Description is required field and should be set 2015-04-14 12:16:49 +08:00
AMOS bot 36e07617ed Automatically generated installer lang files 2015-04-14 00:04:15 +08:00
Juan Leyva 7dedfc8b79 MDL-49837 assign: Use correct assertions and fix return params cleaning 2015-04-13 17:38:09 +02:00
Juan Leyva 88045d94ae MDL-49837 assign: Fix external functions return declaration
Incorrect use of external_warnings function
2015-04-13 17:38:00 +02:00
Dan Poltawski 1cc2d506aa Merge branch 'MDL-48702_backport_log' of https://github.com/andyjdavis/moodle into MOODLE_28_STABLE 2015-04-13 16:26:46 +01:00
Dan Poltawski 2d21dc38c6 Merge branch 'MDL-49166_site_rego_28' of https://github.com/andyjdavis/moodle into MOODLE_28_STABLE 2015-04-13 15:34:26 +01:00
Dan Poltawski d09ef20526 Merge branch 'MDL-49756-28' of git://github.com/mr-russ/moodle into MOODLE_28_STABLE 2015-04-13 15:05:42 +01:00
Andrew Nicols 351460000d Merge branch 'MDL-49426-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-04-13 14:32:35 +08:00
Simey Lameze 742bb09d38 MDL-46963 environment: add check for antelope row format 2015-04-13 14:24:50 +08:00
Andrew Nicols 71d8fb3c66 Merge branch 'MDL-33328_search_enrol_users_MDL28' of https://github.com/barrysspace/moodle into MOODLE_28_STABLE 2015-04-13 13:47:36 +08:00
Andrew Nicols 7955764966 Merge branch 'MDL-49762_M28' of git://github.com/nadavkav/moodle into MOODLE_28_STABLE 2015-04-13 13:39:36 +08:00
Andrew Nicols 7d621c689b Merge branch 'MDL-48836_m28' of https://github.com/markn86/moodle into MOODLE_28_STABLE 2015-04-13 13:28:53 +08:00
Ramindu Deshapriya eced61f6d1 MDL-44611 core_course: Added Behat test to automate MDLQA 5252 2015-04-13 11:12:57 +08:00
AMOS bot 11d14cacb9 Automatically generated installer lang files 2015-04-13 00:04:14 +08:00
Russell Smith 5ff1820a1f MDL-49756 course: Add unit tests for section_options. 2015-04-11 07:44:44 +10:00
Russell Smith 886fc0ba20 MDL-48836 backup: Use a trie for grouped path detection.
Backport of MDL-41674.
2015-04-10 14:11:47 -07:00
Juan Leyva e51a432d0f MDL-49763 webservices: Handle correctly deleted users for forums 2015-04-10 22:28:15 +02:00
Juan Leyva c8d1553d0e MDL-49426 webservices: Allow upload to draft area always 2015-04-10 10:44:47 +02:00
David Monllao 538b837c62 Merge branch 'MDL-49575-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-04-10 15:11:25 +08:00
Barry Oosthuizen b99dcf40fd MDL-33328 enrol_manual: use correct parameter in search function
Searching for user from "Enrol users" panel causes blocks to dock in IE
2015-04-09 19:01:24 +01:00
Nadav Kavalerchik 1ae727b538 MDL-49762 Atto: Set HTML directionality to LTR, in RTL mode. 2015-04-09 16:10:43 +03:00
Dan Poltawski d705b4abb4 weekly release 2.8.5+ 2015-04-09 10:27:07 +01:00
Dan Poltawski c3c06055f0 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-04-09 10:27:05 +01:00
Frederic Massart 6d2a555f8e MDL-49575 gradereport_singleview: Regrade item when (un)overriding 2015-04-09 16:26:19 +08:00
Colin Campbell 08fe5496d1 MDL-48723 mod/forum: Fix cron task error on digest attachments. 2015-04-08 13:06:13 -05:00
Andrew Davis 2721dc593e MDL-49166 registration: now states whether or not site is registered 2015-04-08 20:51:05 +08:00
AMOS bot 8efba305f2 Automatically generated installer lang files 2015-04-08 00:04:15 +08:00
Damyon Wiese 7d33c56890 Merge branch 'MDL-49736_m28' of git://github.com/markn86/moodle into MOODLE_28_STABLE 2015-04-07 21:43:47 +08:00
Eloy Lafuente (stronk7) 6dbfaf2235 Merge branch 'MDL-48205_28' of https://github.com/totara/openbadges into MOODLE_28_STABLE 2015-04-07 14:21:31 +02:00
Brendan Heywood be72c3df67 MDL-49740 Lock: Fixed task lock release bugs 2015-04-07 13:09:36 +01:00
David Monllao 996e83fdd4 MDL-43558 theme_base: We don't need edit toggle if modeditingmenu is disabled 2015-04-07 16:25:31 +08:00
David Monllao 1758e6efc0 Merge branch 'MDL-37984-28' of git://github.com/mastnym/moodle into MOODLE_28_STABLE 2015-04-07 16:08:43 +08:00
Alex Mitin c1e53206d1 MDL-49753 enrolments: preselct status filter if needed 2015-04-07 15:53:45 +08:00
Andrew Nicols 8527d33766 MDL-49395 core: add more unit tests for get_enrolled_sql 2015-04-07 15:29:07 +08:00
Andrew Nicols c7b415e792 Merge branch 'suspended_userids_memory_28' of git://github.com/tlevi/moodle into MOODLE_28_STABLE 2015-04-07 15:29:01 +08:00
Dan Poltawski 2615ec14ad Merge branch 'mdl38210-moodle28' of https://github.com/tlock/moodle into MOODLE_28_STABLE 2015-04-06 12:36:07 +01:00
Colin Campbell cf862db4bc MDL-34921 course/format: Fix unwanted redirects from Site home 2015-04-03 16:00:19 -05:00
AMOS bot 608ab1c385 Automatically generated installer lang files 2015-04-04 00:04:10 +08:00
Eloy Lafuente (stronk7) badfcb70e4 weekly release 2.8.5+ 2015-04-02 11:49:02 +02:00
David Monllao c582672225 MDL-46805 mod_scorm: Re-fix as previous object was removed in 2.8 2015-04-02 09:21:26 +01:00
Rajesh Taneja d406c3893e MDL-46805 scorm: Set user_id if scorm|aiccuserid config is set 2015-04-02 15:43:49 +08:00
Tony Levi 8e602172ff MDL-49395 accesslib: Make get_suspended_userids more efficient 2015-04-02 13:54:50 +10:30
Rajesh Taneja d21f9cc2dd MDL-49513 behat: Updated step name to match new step 2015-04-02 09:47:26 +08:00
Andrew Nicols 240d90b149 Merge branch 'MDL-49686-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE
Conflicts:
	lib/editor/atto/yui/build/moodle-editor_atto-editor/moodle-editor_atto-editor-min.js
2015-04-01 18:47:53 +08:00
Andrew Nicols 47f8e3e117 Merge branch 'wip-mdl-49513-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-04-01 18:34:08 +08:00
Rajesh Taneja f57728674e MDL-49513 behat: Set admin config using php api
Added a new set to set config using set_config() api
to make steps faster and more efficient
2015-04-01 14:28:27 +08:00
Mark Nelson 0f2786da69 MDL-49736 core_question: fixed ability to unhide questions 2015-03-31 23:06:07 -07:00
Andrew Nicols cd32489d7a Merge branch 'MDL-49693-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE
Conflicts:
	lib/editor/atto/yui/build/moodle-editor_atto-editor/moodle-editor_atto-editor-min.js
2015-04-01 12:37:37 +08:00
Tim Lock 0ea62d56c4 MDL-38210 report_participation: implement get view/post actions 2015-04-01 10:28:41 +10:30
Eloy Lafuente (stronk7) 16008dfd92 Merge branch 'wip-mdl-48605-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-04-01 01:13:20 +02:00
Dan Poltawski 811b80a4c5 Merge branch 'MDL-49564-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE
Conflicts:
	lib/editor/atto/yui/build/moodle-editor_atto-editor/moodle-editor_atto-editor-min.js
2015-03-31 19:29:23 +01:00
Dan Poltawski bbc9f54a6b Merge branch 'MDL-49666_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-03-31 19:18:11 +01:00
Tim Hunt 8d7fa47e0d MDL-49666 qbehaviour_informationitem: respect $options->readonly 2015-03-31 15:19:56 +01:00
Dan Poltawski 32623b4d3c Merge branch 'MDL-49671-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE 2015-03-31 15:11:06 +01:00
Rajesh Taneja c01741c8cc MDL-48605 unit_test: Only touch real file/dir 2015-03-31 21:46:21 +08:00
Dan Poltawski d128e18674 Merge branch 'MDL-49547_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-03-31 14:44:09 +01:00
Dan Poltawski 8794018916 Merge branch 'MDL-49645_m28' of git://github.com/markn86/moodle into MOODLE_28_STABLE 2015-03-31 13:28:20 +01:00
Dan Poltawski 664749aaea Merge branch 'MDL-49641-get_external_files_m28' of https://github.com/jpahullo/moodle into MOODLE_28_STABLE 2015-03-31 13:15:10 +01:00
Dan Poltawski c2ca02e489 Merge branch 'MDL-49674-28-commentformat' of git://github.com/mudrd8mz/moodle into MOODLE_28_STABLE 2015-03-31 12:17:25 +01:00
Dan Poltawski 55d31273e3 Merge branch 'MDL-48880_28' of git://github.com/jmvedrine/moodle into MOODLE_28_STABLE 2015-03-31 11:19:21 +01:00
Dan Poltawski ccd4382245 Merge branch 'm28_MDL-43818_Unable_Download_Package_Via_URL' of https://github.com/scara/moodle into MOODLE_28_STABLE 2015-03-31 09:27:54 +01:00
Andrew Nicols e47d8445b9 Merge branch 'MDL-49695_m28' of git://github.com/markn86/moodle into MOODLE_28_STABLE 2015-03-31 15:15:15 +08:00
Rajesh Taneja f93ff30cde MDL-48605 unit_test: Fixed file_temp_cleanup_task
touch should only work on temp and below
dir's. With path we get temp/.. and temp/.
So we were modfying moodledata dir as well
and it was failing because of permission issues.
2015-03-31 14:58:51 +08:00
Andrew Nicols bc8acaffc1 MDL-49294 logging: Improve cleanup tests 2015-03-31 14:12:54 +08:00
Andrew Nicols eb9845115b Merge branch 'log_cleanup_28' of https://github.com/tlevi/moodle into MOODLE_28_STABLE 2015-03-31 14:01:30 +08:00
Andrew Nicols f2512fddb3 MDL-49669 badges: Add comment to explain CURLOPT_POSTREDIR 2015-03-31 12:24:32 +08:00
Andrew Nicols a3d579f922 Merge branch 'MDL-49669_28' of https://github.com/totara/openbadges into MOODLE_28_STABLE 2015-03-31 12:24:22 +08:00
Yuliya Bozhko d9dbcdf893 MDL-48205 badges: Get rid of ucfirst() and make modnames translatable
Signed-off-by: Yuliya Bozhko <yuliya.bozhko@totaralms.com>
2015-03-31 16:46:01 +13:00
David Monllao ec148b2574 Merge branch 'MDL-49114-28' of git://github.com/lameze/moodle into MOODLE_28_STABLE 2015-03-31 11:29:30 +08:00
David Monllao b7df272247 Merge branch 'MDL-49474_28' of git://github.com/jmvedrine/moodle into MOODLE_28_STABLE 2015-03-31 10:15:03 +08:00
Andrew Nicols 6ba6b23280 Merge branch 'm28_MDL-46805' of https://github.com/danmarsden/moodle into MOODLE_28_STABLE 2015-03-31 08:18:01 +08:00
Dan Marsden d444af3d74 MDL-46805 SCORM: AICC restricts allowed characters in the username 2015-03-31 10:39:26 +13:00
Matteo Scaramuccia a9e99ebd02 MDL-43818 SCORM: unable to download the Package via URL. 2015-03-30 20:38:50 +02:00
Eloy Lafuente (stronk7) b4e4c37e52 Merge branch 'wip-mdl-49708-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-03-30 13:27:32 +02:00
Dan Poltawski f9212fb311 Merge branch 'wip-MDL-47337-m28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-03-30 11:06:38 +01:00
Rajesh Taneja b070387e03 MDL-49708 behat: Resize window back to default
Leaving window size to large fails in chrome
Reset it to default size works to ensure stamp
is visible by selenium driver
2015-03-30 17:30:08 +08:00
Rajesh Taneja e0d460673a MDL-49708 behat: Fix chromedriver failure
Chromedriver tries to click in center of link
As these links wrap on next line it fails to
click on links on small screen
2015-03-30 12:35:32 +08:00
David Monllao 808836c60b Merge branch 'mdl36506-moodle28' of git://github.com/tlock/moodle into MOODLE_28_STABLE 2015-03-30 10:32:12 +08:00
Simey Lameze e22f5c6d87 MDL-49114 environment: add slasharguments warning message 2015-03-30 10:07:14 +08:00
Jean-Michel Vedrine e807911c99 MDL-48880 mod_lesson: clean lesson_branch on upgrade and restore 2015-03-29 21:37:01 +02:00
Jean-Michel Vedrine 0619c4ecc4 MDL-48880 mod_lesson: clean lesson_branch when a page is deleted 2015-03-29 21:37:01 +02:00
Mark Nelson 8624dcbc4d MDL-49695 tool_behat: fixed URL 2015-03-27 16:54:46 -07:00
Eric Merrill 89a50d82e3 MDL-48467 atto: Clean the textarea during submission when in HTML mode 2015-03-27 15:24:34 -04:00
Eric Merrill 93e80c9b45 MDL-49693 atto: Clean textarea contents before inserting into editor 2015-03-27 12:27:47 -04:00
Eric Merrill 42fb2c1b70 MDL-49686 atto: Process style and class attributes in sub-functions
To ensure we only clean style and classes, first we select the inside
of those attributes and "replace" them with handler functions. Those
functions scan the actual attribute values for class or styles that
we want to exclude.

The first level regex has 3 groups. group1 selects everything in the
tag leading up to the attribute values, group2 has the attributes,
group3 has the trailing quote mark. We work on group2 then return
the combination of group1, group2, and group3.
2015-03-27 11:36:26 -04:00
Eric Merrill fbcc8eba37 MDL-49671 atto: Any pastes that don't have html should clean everything
Browsers may not provide html content in the clipboard object event
though it will really be pasted as such. This includes Firefox on
Windows, Internet Explorer, and some niche cases in Safari.

Because of this, we need to scrub the entire editor anytime we can't
intercept a paste event.

In some magical day in the future when there is better cross browser
support, we can undo this.
2015-03-26 23:59:06 -04:00
Eric Merrill 0f9a1675cd MDL-49564 atto: Improve empty span removal
Paste from MS word, followed by cleaning, may leave many many unused
spans. Try to remove them.
2015-03-26 23:08:22 -04:00
Marina Glancy 7f1b995194 MDL-47337 course: merge section options during restore 2015-03-27 08:50:26 +08:00
Mark Nelson 1d663d1776 MDL-49645 core_backup: fixed 'expirythreshold' setting not being saved 2015-03-26 16:38:59 -07:00
Yuliya Bozhko b9aa500ea9 MDL-49669 badges: Handle curl redirects when posting to backpack
Signed-off-by: Yuliya Bozhko <yuliya.bozhko@totaralms.com>
2015-03-27 09:30:12 +13:00
Tim Hunt 94fa39d226 MDL-49547 question restore: avoid tag-related notices. 2015-03-26 15:30:13 +00:00
David Mudrák 64bef5f9f6 MDL-49674 comment: Use correct format when displaying the comment
The plugin callback executed above can eventually change the format. We
need to use that one to have the formatting of the first AJAX response
consistent with following displays.
2015-03-26 13:00:56 +01:00
Eloy Lafuente (stronk7) 0a4b99f35b weekly release 2.8.5+ 2015-03-26 10:48:15 +01:00
Eloy Lafuente (stronk7) 36843ff28b Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-03-26 10:48:09 +01:00
David Monllao 49fad98ab2 MDL-47002 editor_atto: Remove all after html when pasting 2015-03-26 10:07:57 +01:00
David Monllao 5baa2de21e MDL-47002 editor_atto: Clean the comments separately 2015-03-26 14:50:17 +08:00
Tony Levi fd7dd8f237 MDL-49294 logging: Cleanup runs in smaller chunks
Just running a huge log cleanup will probably cause big problems on large sites.
So we break this down into smaller day-by-day chunks until reaching the target.
2015-03-26 12:01:53 +10:30
Eloy Lafuente (stronk7) ea1dba053d Merge branch 'MDL-47002-int-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE 2015-03-25 18:19:46 +01:00
Eric Merrill 0c2d24e908 MDL-47002 atto: Prevent removal of Rangy spans 2015-03-25 10:02:13 -04:00
David Monllao 751fe02a01 MDL-49558 gradereport_user: Fixing table border 2015-03-25 08:41:38 +00:00
Eric Merrill b8bf3fe36b MDL-47003 atto: Update behat test for copyright symbol 2015-03-25 15:20:39 +08:00
Jordi Pujol Ahulló b94e9188e7 MDL-49641 repository_dropbox: preventing poor performance.
get_external_files placed with second argument as '' to prevent poor performance.
2015-03-25 08:02:24 +01:00
Martin Mastny 08d18b09c1 MDL-37984 portfolio: Google drive using official client library 2015-03-25 12:40:40 +08:00
David Monllao be39358439 MDL-45619 repository: Don't allow repository_recent to be uninstalled
We have tests that depends on it and it
is a simple repo that can just be disabled.
2015-03-25 09:39:59 +08:00
David Monllao c34e3ca994 Merge branch 'MDL-45619_m28' of git://github.com/sbourget/moodle into MOODLE_28_STABLE 2015-03-25 09:39:48 +08:00
Daniel Kosinski 5d9bc0acc3 MDL-46705 admin: Check if course with same shortname already exists 2015-03-24 23:36:28 +01:00
Dan Poltawski 12fd2baec7 Merge branch 'MDL-49354-28' of https://github.com/mtavella-netspot/moodle into MOODLE_28_STABLE 2015-03-24 15:14:11 +00:00
Andrew Nicols 16dab5d9c7 MDL-48918 course: Fix keyboard drag/drop after dropped resource 2015-03-24 15:11:24 +00:00
Eloy Lafuente (stronk7) 3209753b78 Merge branch 'MDL-48795_28' of https://github.com/apsdehal/moodle into MOODLE_28_STABLE 2015-03-24 15:44:54 +01:00
Dan Poltawski 54924b24c7 Merge branch 'wip-mdl-49374-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-03-24 13:36:58 +00:00
Dan Poltawski 05de057c00 Merge branch 'MDL-49070_scheduled_28' of https://github.com/andyjdavis/moodle into MOODLE_28_STABLE 2015-03-24 13:33:53 +00:00
Dan Poltawski f7751d8cd6 Merge branch 'wip_MDL-49631_28_utfregex' of https://github.com/skodak/moodle into MOODLE_28_STABLE 2015-03-24 11:11:37 +00:00
Dan Poltawski 9e84f9063e Merge branch 'MDL-46746-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE
Conflicts:
	lib/editor/atto/yui/build/moodle-editor_atto-editor/moodle-editor_atto-editor-min.js
2015-03-24 11:04:18 +00:00
Dan Poltawski 932d1d33d1 Merge branch 'MDL-49565-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE 2015-03-24 09:57:20 +00:00
Dan Poltawski c4862951d8 Merge branch 'wip_MDL-49327_2.8_guide_getinstance' of https://github.com/nixorv/moodle into MOODLE_28_STABLE
Conflicts:
	grade/grading/form/guide/tests/guide_test.php
2015-03-24 09:31:13 +00:00
Nadav Kavalerchik 7204bbf743 MDL-49558 user grades: Fix range & percent grade display in RTL mode 2015-03-24 14:51:47 +08:00
David Monllao d794cb3935 Merge branch 'MDL-49555-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-03-24 11:00:27 +08:00
David Monllao 0a79d25826 Merge branch 'MDL-47003-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE 2015-03-24 10:17:40 +08:00
Tim Lock 4101e04265 MDL-36506 mod_book: Skip legacy files migration if missing a CM record 2015-03-24 12:47:18 +10:30
Mohamed Alsharaf 99046d557e MDL-35482 lesson: return to previous page after edit and page save 2015-03-24 00:41:17 +01:00
Nikita Kalinin 4ef8b1d07e MDL-49327 marking guide: Added condition on definitionid. 2015-03-24 00:12:17 +03:00
AMOS bot b1660e619b Automatically generated installer lang files 2015-03-24 00:06:32 +08:00
Dan Poltawski a3fcd87495 Merge branch 'wip_MDL-49327_2.8_guide_getinstance' of https://github.com/nixorv/moodle into MOODLE_28_STABLE 2015-03-23 15:49:05 +00:00
Dan Poltawski be8c5c6944 Merge branch 'MDL-48443-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-03-23 15:03:59 +00:00
Dan Poltawski c3ae3253d9 Merge branch 'wip-mdl-49432-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-03-23 12:37:06 +00:00
Dan Poltawski 77d0becd77 Merge branch 'm28_MDL-48419' of https://github.com/danmarsden/moodle into MOODLE_28_STABLE 2015-03-23 11:17:05 +00:00
Dan Poltawski 4bc1c5994d Merge branch 'MDL-21201-28-feedback_anon' of https://github.com/DSI-Universite-Rennes2/moodle into MOODLE_28_STABLE 2015-03-23 11:03:29 +00:00
David Monllao 01f0148c64 MDL-48456 course: Using default max int value 2015-03-23 15:18:06 +08:00
David Monllao 02a9c25040 Merge branch 'MDL-48456-28' of git://github.com/dkns/moodle into MOODLE_28_STABLE 2015-03-23 15:17:56 +08:00
David Monllao c0339626a2 Merge branch 'MDL-47002-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE 2015-03-23 14:59:23 +08:00
Petr Skoda 4f431ffe43 MDL-49631 fix incorrect whitespace remplacements 2015-03-23 17:40:45 +13:00
AMOS bot 727bbbfa03 Automatically generated installer lang files 2015-03-23 00:04:20 +08:00
Daniel Kosinski 482ad496c7 MDL-48456 course: increase timeout when deleting all courses in category 2015-03-22 16:24:13 +01:00
AMOS bot b1a5caec65 Automatically generated installer lang files 2015-03-21 00:04:08 +08:00
AMOS bot 4c7ec86fcd Automatically generated installer lang files 2015-03-21 00:04:08 +08:00
Julien Boulen b8e75114c9 MDL-21201 Feedback: hide anonymous responses in recent activity reports 2015-03-20 16:27:25 +01:00
Andrew Davis 3a389c1d46 MDL-49070 core_registration: removed now unused config setting 2015-03-20 20:58:57 +08:00
Andrew Davis 592608b287 MDL-49070 core_registration: improved site registration scheduled task 2015-03-20 20:55:06 +08:00
Nikita Kalinin 8060eb6fc7 MDL-49327 marking guide: Added condition on definitionid. 2015-03-20 12:20:46 +03:00
Rajesh Taneja cc8cc5c8b0 MDL-49374 behat: Get install or re-install error code after composer
After composer is installed make sure we just process only
install or re-install
2015-03-20 14:05:28 +08:00
Rajesh Taneja 895661bf74 MDL-49432 behat: guzzle packages has been unified
Current version of goutte is pointing to old guzzle packages
guzzle/common, guzzle/stream, guzzle/parser and guzzle/http.
They have been unified to guzzlehttp/guzzle, so include it to
avoid using old packages
2015-03-20 12:09:55 +08:00
Eloy Lafuente (stronk7) 3ea79917c9 weekly release 2.8.5+ 2015-03-19 12:42:13 +01:00
Eloy Lafuente (stronk7) 87a27b23a1 NOBUG: Fixed file access permissions 2015-03-19 12:42:13 +01:00
Jean-Michel Vedrine 53aad1f086 MDL-49474 mod_lesson: intro and introformat missing from backup/restore
Conflicts:
	mod/lesson/backup/moodle2/backup_lesson_stepslib.php
	mod/lesson/backup/moodle2/restore_lesson_stepslib.php
2015-03-18 23:27:13 +01:00
Marina Glancy 9cdcf8748d MDL-45619 repository: corrections to uninstall, display link 2015-03-18 13:45:09 -04:00
Stephen Bourget fad0019cb2 MDL-45619 Repository: Allow repositories to be uninstalled 2015-03-18 13:45:06 -04:00
Eric Merrill cf539782c0 MDL-49565 atto: Allow html comments in editor code 2015-03-18 12:30:06 -04:00
Eric Merrill d6ee0f6897 MDL-46746 atto: Remove unnecessary filtering of unicode characters 2015-03-18 12:09:51 -04:00
Eric Merrill 016c76ec57 MDL-47003 atto: Make code cleanup more targeted
Apply different, stricter, code cleanup when we receive HTML (WYSIWYG)
paste events, but be more lax the rest of the time.

Also, update the regexes to be more targeted for specific code patterns
pasted from office packages.
2015-03-18 11:47:22 -04:00
Eric Merrill 5cb7093166 MDL-47002 atto: Improve paste behaviour to ensure propper cleanup
Old code failed to clean the editor div which resulted in
undesirable code being being left in the div for editing. To properly
handel incoming code, we should try to intercept and clean before the
paste, or clean the entire editable div.
2015-03-18 09:29:43 -04:00
info@ewallah.net bb04cfe20e MDL-49555 enrol_paypal: Only display icon if method available 2015-03-18 14:23:25 +01:00
Juan Leyva abde87bf41 MDL-48443 webservices: Prevent duplicated user devices 2015-03-18 11:43:56 +01:00
Dan Marsden 5663c1771f MDL-48419 mod_scorm: Check net script too agressive
in some cases high latency and network issues result in longer
than 2 sec responses from a server, increase this to avoid
excessive warnings.
2015-03-18 20:05:36 +13:00
David Monllao 67258145ea Revert "Merge branch 'MDL-49445_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE"
This reverts commit ea505f1b35, reversing
changes made to bad69e63f5.
2015-03-18 10:51:15 +08:00
Eloy Lafuente (stronk7) 23be970b7f Merge branch 'MDL-49296_m28v3' of https://github.com/sbourget/moodle into MOODLE_28_STABLE 2015-03-17 12:05:25 +01:00
Dan Poltawski 58873bcae3 Merge branch 'MDL-49359_m28' of https://github.com/markn86/moodle into MOODLE_28_STABLE 2015-03-17 08:53:31 +00:00
Mark Nelson 3c2c8a0628 MDL-49359 install: warn against using MyISAM 2015-03-16 20:41:56 -07:00
Stephen Bourget 6ec0c5fba5 MDL-49296 Lesson: Add titles to action links 2015-03-16 20:35:15 -04:00
Eloy Lafuente (stronk7) 39a765703e Merge branch 'MDL-49389_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-03-17 00:29:22 +01:00
Mike Grant 87fd4f6b0d MDL-49276 config-dist: Removed legacy config options
Both $CFG->logsql and $CFG->dblogerror had no use in moodle core
since ages ago (just the former had one use for nothing). Good time
to get rid of both as they are 100% misleading.
2015-03-16 23:42:57 +01:00
Dan Poltawski 21acd586a8 Merge branch 'MDL-48965_28' of git://github.com/jmvedrine/moodle into MOODLE_28_STABLE 2015-03-16 21:05:57 +00:00
Dan Poltawski 8d8124fa9f Merge branch 'wip-MDL-49267-m28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-03-16 15:52:38 +00:00
Dan Poltawski b6c5e8f790 Merge branch 'MDL-49104-28' of git://github.com/DanBennettUK/moodle into MOODLE_28_STABLE 2015-03-16 15:05:13 +00:00
Dan Poltawski 8736f9b956 Merge branch 'MDL-49187-28' of https://github.com/spvickers/moodle into MOODLE_28_STABLE 2015-03-16 14:52:05 +00:00
Dan Poltawski d8088471b0 Merge branch 'MDL-49442-28' of git://github.com/jethac/moodle into MOODLE_28_STABLE 2015-03-16 13:31:07 +00:00
David Monllao ea505f1b35 Merge branch 'MDL-49445_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-03-16 15:38:13 +08:00
David Monllao bad69e63f5 MDL-47712 question_multianswer: Concat as string 2015-03-16 13:51:17 +08:00
David Monllao 54fbcc3105 Merge branch 'MDL-47712-m28-master' of git://github.com/dthies/moodle into MOODLE_28_STABLE 2015-03-16 10:33:40 +08:00
David Monllao c35f3e97da Merge branch 'm28_MDL-44548' of git://github.com/danmarsden/moodle into MOODLE_28_STABLE 2015-03-16 10:04:34 +08:00
David Monllao 9455b8b96b Merge branch 'wip-MDL-47729-m28' of git://github.com/marinaglancy/moodle into MOODLE_28_STABLE 2015-03-16 09:50:31 +08:00
Dan Marsden 4050f60b55 MDL-44548 mod_scorm: force an external sync to check for updated files. 2015-03-16 09:03:01 +13:00
Daniel Thies 55526a8a53 MDL-47712 qtype_multianswer: Move mathjaxloader spans to outer question 2015-03-13 21:33:16 -05:00
Tim Hunt 44242e1a40 MDL-49446 behat: should_not_be_visible steps were not working
I fixed all similar problems in this class, even ones where it did
actually work becuase the two exceptions were of different types.
This pattern seems to have been copied and pasted a lot in this class,
and I am sure that will happen again, so I did not want to leave any
dangerous potential examples around.
2015-03-13 14:22:52 +00:00
Tim Hunt 6d01dfe627 MDL-49445 behat: selectors should match the most specific tr or li
I also fixed the text rule, which already did this, to use the same
idiom. It is unnecessarily inefficient to count all the things and
compare to 0. Not exists should be faster.

Also, updated all the selectors here to consistently start relative to
the current node (.//, not //).
2015-03-13 14:22:44 +00:00
Tim Hunt d8ace7dd74 MDL-49389 blocklib: avoid notices when moving blocks to the bottom 2015-03-13 14:22:35 +00:00
Marina Glancy 1a17ca8bdd MDL-47729 repository_filesystem: smarter sync of references
It was noticed that if file content was once imported the following
synchronisations do not discover the changes
2015-03-13 11:21:14 +08:00
David Monllao 79dfb73824 weekly release 2.8.5+ 2015-03-13 10:27:41 +08:00
David Monllao 4d82d742c5 Merge branch 'install_28_STABLE' of https://git.in.moodle.com/amosbot/moodle-install into MOODLE_28_STABLE 2015-03-13 10:27:39 +08:00
David Monllao 4bb1c9764e Merge branch 'MDL-48897_28' of git://github.com/jmvedrine/moodle into MOODLE_28_STABLE 2015-03-11 08:51:57 +08:00
David Monllao 135aeaacc4 Merge branch 'MDL-48858-28' of git://github.com/mastnym/moodle into MOODLE_28_STABLE 2015-03-11 08:46:50 +08:00
Tim Hunt 0612ff1f56 MDL-49315 questions: unit tests for each behaviour type class 2015-03-11 08:28:18 +08:00
Eloy Lafuente (stronk7) 807e21f64e Merge branch 'MDL-49159-28' of https://github.com/spvickers/moodle into MOODLE_28_STABLE 2015-03-11 00:18:28 +01:00
AMOS bot 2229917a8f Automatically generated installer lang files 2015-03-11 00:04:06 +08:00
Dan Poltawski 1a72a44f97 Merge branch 'wip_MDL-49074_M28' of git://github.com/gjb2048/moodle into MOODLE_28_STABLE 2015-03-10 11:51:45 +00:00
David Monllao 0d87b1f548 Merge branch 'MDL-49256-28' of git://github.com/andrewnicols/moodle into MOODLE_28_STABLE
Conflicts:
	lib/editor/atto/yui/build/moodle-editor_atto-editor/moodle-editor_atto-editor-min.js
2015-03-10 17:46:01 +08:00
Dan Poltawski f09cb26d51 Merge branch 'wip-mdl-49402-m28' of https://github.com/rajeshtaneja/moodle into MOODLE_28_STABLE 2015-03-10 08:33:35 +00:00
Dan Poltawski dd8b3324ef Merge branch 'MDL-48682_28' of git://github.com/dmonllao/moodle into MOODLE_28_STABLE 2015-03-10 08:25:30 +00:00
David Monllao 3fca7fd7c7 Merge branch 'MDL-49346-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-03-10 15:32:05 +08:00
David Monllao 3622940192 Merge branch 'MDL-49351-28' of git://github.com/jleyva/moodle into MOODLE_28_STABLE 2015-03-10 15:21:30 +08:00
David Monllao 655193dc84 Merge branch 'MDL-49366_28' of git://github.com/timhunt/moodle into MOODLE_28_STABLE 2015-03-10 14:41:29 +08:00
Jetha Chan a34b18ad21 MDL-49442 javascript: add handlebars hashtable to support get_string 2015-03-10 13:07:28 +08:00
David Monllao 65b61b07e0 Merge branch 'MDL-49107-28' of git://github.com/FMCorz/moodle into MOODLE_28_STABLE 2015-03-10 11:43:31 +08:00
David Monllao f61d29c317 Merge branch 'MDL-49332-28' of git://github.com/merrill-oakland/moodle into MOODLE_28_STABLE 2015-03-10 10:43:11 +08:00
David Monllao 62d334e985 Merge branch 'MDL-48572_28' of git://github.com/rlorenzo/moodle into MOODLE_28_STABLE 2015-03-10 10:35:37 +08:00
David Monllao 0f9b21a5d7 Merge branch 'MDL-39262_28' of git://github.com/jmvedrine/moodle into MOODLE_28_STABLE 2015-03-10 10:13:00 +08:00
Eloy Lafuente (stronk7) be3e6f6202 Moodle release 2.8.5 2015-03-10 00:42:44 +01:00
Dan Bennett 116f2c5714 MDL-49104 repository_s3: backport of MDL-43725 2015-03-09 16:03:12 +00:00
Eloy Lafuente (stronk7) 49f4e7c976 weekly release 2.8.4+ 2015-03-09 16:47:53 +01:00
Marina Glancy 2d73956d8e MDL-49418 core: partial revert of MDL-48804
this is a quick fix for the issue 'Course module with two or more availability restrictions is not accessible'
MDL-49434 is created to deal with the renderer access inside availability check
2015-03-09 11:26:18 +08:00
Jean-Michel Vedrine a4ff234c80 MDL-39262 mod_lesson: disable shortforms in lesson question display
Conflicts:
	mod/lesson/pagetypes/shortanswer.php
2015-03-08 11:20:22 +01:00
Amanpreet Singh b2959e1323 MDL-48795 lang: Update message for nothingnew
In lang/en/moodle.php file
2015-03-08 10:06:39 +05:30
Jean-Michel Vedrine 10a40946c6 MDL-48897 mod_lesson: behat tests for pages edition
This is a backport of MDL-48675.
2015-03-07 22:52:02 +01:00
Jean-Michel Vedrine 5d911423dc MDL-48897 mod_lesson: Error displayed while editing content page jumps
This change also fix MDL-32343 and MDL-31778 related to problems
when editing cluster pages.

This is a backport of MDL-48675.
2015-03-07 22:52:02 +01:00
Jean-Michel Vedrine fbfa01b847 MDL-48965 mod_lesson: avoid short answer question without any answers 2015-03-07 22:07:00 +01:00
Juan Leyva 4567c1c3a0 MDL-49346 ratings: ratingarea should be a required parameter 2015-03-06 11:45:03 +01:00
Juan Leyva b610727b5b MDL-49351 ratings: Correct check of viewallratings permission 2015-03-06 11:43:05 +01:00
Marina Glancy 1118c28a51 MDL-49267 mod_wiki: always apply filters to the wiki name 2015-03-06 13:54:29 +08:00
Andrew Nicols 1879f64350 MDL-49256 atto: Check form existence before resetAutosave 2015-03-06 12:01:50 +08:00
Rajesh Taneja 8b215b4110 MDL-49402 behat: Fixed feature file with same scenario name
1. We should not have same scanrio name in 1 feature file
   As it doesn't explain what is being tested. So modified.
2. Removed empty line, to keep it consistnet with other features
2015-03-06 11:47:56 +08:00
David Monllao 69023cd3e9 MDL-48682 behat: Changing window size on specific tests 2015-03-06 11:03:17 +08:00
David Monllao f4a201cdf2 MDL-49376 behat: Fixing resize step regex 2015-03-06 10:59:47 +08:00
Rex Lorenzo 086f4b6e4f MDL-48572 gradereport_grader: Average wrong with suspended users 2015-03-05 11:38:09 -08:00
Eric Merrill cf1a558531 MDL-49332 gradebook: Raise time limit if we get into regrade
Because all regrading should (and does) start from this point, it
is safe and best to call it just once, from this point.
2015-03-05 10:10:13 -05:00
Tim Hunt 3338ba48d9 MDL-49366 questions: avoid PHP notices from bad pluginfile URLs 2015-03-05 12:17:43 +00:00
spvickers f9db06b107 MDL-49187 mod_lti: Fix tool config lookup
Changed code to look for a tool ID before then matching on the URL.
2015-03-03 18:56:41 -07:00
Gareth J Barnard f300e1021b MDL-49074 themes: WOFF2 fonts are not supported. Backport of MDL-46728. 2015-03-03 10:45:30 +00:00
Adrian Greeve 49308a3f57 MDL-48858 mod_data: Update to behat tests
A bulk delete of entries has been added to
the behat tests.
2015-03-03 11:34:14 +08:00
Matthew Tavella 0d2a4f8ee9 MDL-49354 YUI: Remove event-autohide module from yui-moodlesimple rollup 2015-03-03 10:29:18 +10:30
spvickers 06085cc6d4 MDL-49159 mod_lti: Incorrect IDs in tools table
The "_tools" suffix for the IDs of tabs in the tools settings table was
being duplicated.
2015-02-27 11:32:34 -07:00
Frederic Massart 7b414d50a8 MDL-49107 atto_link: Insert link even when selection is empty 2015-02-25 16:38:10 +01:00
Andrew Davis 73639b4124 MDL-48702 logs: switched retrieval to get_recordset_select() 2015-01-08 09:08:50 +01:00
1091 changed files with 26811 additions and 7381 deletions
+4 -2
View File
@@ -64,6 +64,8 @@ echo "<form id=\"authmenu\" method=\"post\" action=\"auth_config.php\">\n";
echo "<div>\n";
echo "<input type=\"hidden\" name=\"sesskey\" value=\"".sesskey()."\" />\n";
echo "<input type=\"hidden\" name=\"auth\" value=\"".$auth."\" />\n";
// HACK to prevent browsers from automatically inserting the user's password into the wrong fields.
echo prevent_form_autofill_password();
// auth plugin description
echo $OUTPUT->box_start();
@@ -146,8 +148,8 @@ function print_auth_lock_options($auth, $user_fields, $helptext, $retrieveopts,
// If custom field then pick name from database.
$fieldshortname = str_replace('profile_field_', '', $fieldname);
$fieldname = $customfieldname[$fieldshortname]->name;
} elseif (preg_match('/^(.+?)(\d+)$/', $fieldname, $matches)) {
$fieldname = get_string($matches[1]) . ' ' . $matches[2];
} elseif ($fieldname == 'phone1') {
$fieldname = get_string('phone');
} elseif ($fieldname == 'url') {
$fieldname = get_string('webpage');
} else {
@@ -0,0 +1,103 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* This script fixes orphaned question categories.
*
* Orphaned question categories have had their associated context deleted
* but the category itself remains in the database with an invalid context.
*
* @package core
* @subpackage cli
* @copyright 2013 Tyler Bannister (tyler.bannister@remote-learner.net)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
define('CLI_SCRIPT', true);
require(__DIR__.'/../../config.php');
require_once($CFG->libdir.'/clilib.php');
require_once($CFG->libdir.'/questionlib.php');
$long = array('fix' => false, 'help' => false);
$short = array('f' => 'fix', 'h' => 'help');
// Now get cli options.
list($options, $unrecognized) = cli_get_params($long, $short);
if ($unrecognized) {
$unrecognized = implode("\n ", $unrecognized);
cli_error(get_string('cliunknowoption', 'admin', $unrecognized));
}
if ($options['help']) {
$help =
"Fix orphaned question categories.
This scripts detects question categories that have had their
context deleted, thus severing them from their original purpose.
This script will find the orphaned categories and delete the unused
questions in each category found. Used questions will not be
deleted, instead they will be moved to a rescue question category.
Options:
-h, --help Print out this help
-f, --fix Fix the orphaned question categories in the DB.
If not specified only check and report problems to STDERR.
Example:
\$sudo -u www-data /usr/bin/php admin/cli/fix_orphaned_question_categories.php
\$sudo -u www-data /usr/bin/php admin/cli/fix_orphaned_question_categories.php -f
";
echo $help;
die;
}
cli_heading('Checking for orphaned categories');
$sql = 'SELECT qc.id, qc.contextid, qc.name
FROM {question_categories} qc
LEFT JOIN {context} c ON qc.contextid = c.id
WHERE c.id IS NULL';
$categories = $DB->get_recordset_sql($sql);
$i = 0;
foreach ($categories as $category) {
$i += 1;
echo "Found orphaned category: {$category->name}\n";
if (!empty($options['fix'])) {
echo "Cleaning...";
// One transaction per category.
$transaction = $DB->start_delegated_transaction();
question_category_delete_safe($category);
$transaction->allow_commit();
echo " Done!\n";
}
}
if (($i > 0) && !empty($options['fix'])) {
echo "Found and removed {$i} orphaned question categories\n";
} else if ($i > 0) {
echo "Found {$i} orphaned question categories. To fix, run:\n";
echo "\$sudo -u www-data /usr/bin/php admin/cli/fix_orphaned_question_categories.php --fix\n";
} else {
echo "No orphaned question categories found.\n";
}
$categories->close();
+437
View File
@@ -1027,6 +1027,7 @@
<VENDOR name="oracle" version="10.2" />
</DATABASE>
<PHP version="5.4.4" level="required">
<RESTRICT function="restrict_php_version_7" message="unsupportedphpversion7" />
</PHP>
<PCREUNICODE level="optional">
<FEEDBACK>
@@ -1134,9 +1135,292 @@
<ON_ERROR message="quizattemptsupgradedmessage" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
<FEEDBACK>
<ON_CHECK message="slashargumentswarning" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
<FEEDBACK>
<ON_CHECK message="unsupporteddbtablerowformat" />
</FEEDBACK>
</CUSTOM_CHECK>
</CUSTOM_CHECKS>
</MOODLE>
<MOODLE version="2.8" requires="2.2">
<UNICODE level="required">
<FEEDBACK>
<ON_ERROR message="unicoderequired" />
</FEEDBACK>
</UNICODE>
<DATABASE level="required">
<VENDOR name="mariadb" version="5.5.31" />
<VENDOR name="mysql" version="5.5.31" />
<VENDOR name="postgres" version="9.1" />
<VENDOR name="mssql" version="10.0" />
<VENDOR name="oracle" version="10.2" />
</DATABASE>
<PHP version="5.4.4" level="required">
<RESTRICT function="restrict_php_version_7" message="unsupportedphpversion7" />
</PHP>
<PCREUNICODE level="optional">
<FEEDBACK>
<ON_CHECK message="pcreunicodewarning" />
</FEEDBACK>
</PCREUNICODE>
<PHP_EXTENSIONS>
<PHP_EXTENSION name="iconv" level="required">
<FEEDBACK>
<ON_ERROR message="iconvrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="mbstring" level="optional">
<FEEDBACK>
<ON_CHECK message="mbstringrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="curl" level="required">
<FEEDBACK>
<ON_ERROR message="curlrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="openssl" level="optional">
<FEEDBACK>
<ON_CHECK message="opensslrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="tokenizer" level="optional">
<FEEDBACK>
<ON_CHECK message="tokenizerrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="xmlrpc" level="optional">
<FEEDBACK>
<ON_CHECK message="xmlrpcrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="soap" level="optional">
<FEEDBACK>
<ON_CHECK message="soaprecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="ctype" level="required">
<FEEDBACK>
<ON_ERROR message="ctyperequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="zip" level="required">
<FEEDBACK>
<ON_ERROR message="ziprequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="zlib" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="gd" level="required">
<FEEDBACK>
<ON_ERROR message="gdrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="simplexml" level="required">
<FEEDBACK>
<ON_ERROR message="simplexmlrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="spl" level="required">
<FEEDBACK>
<ON_ERROR message="splrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="pcre" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="dom" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="xml" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="intl" level="optional">
<FEEDBACK>
<ON_CHECK message="intlrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="json" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="hash" level="required"/>
</PHP_EXTENSIONS>
<PHP_SETTINGS>
<PHP_SETTING name="memory_limit" value="96M" level="required">
<FEEDBACK>
<ON_ERROR message="settingmemorylimit" />
</FEEDBACK>
</PHP_SETTING>
<PHP_SETTING name="file_uploads" value="1" level="optional">
<FEEDBACK>
<ON_CHECK message="settingfileuploads" />
</FEEDBACK>
</PHP_SETTING>
<PHP_SETTING name="opcache.enable" value="1" level="optional">
<FEEDBACK>
<ON_CHECK message="opcacherecommended" />
</FEEDBACK>
</PHP_SETTING>
</PHP_SETTINGS>
<CUSTOM_CHECKS>
<CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
<FEEDBACK>
<ON_ERROR message="quizattemptsupgradedmessage" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
<FEEDBACK>
<ON_CHECK message="slashargumentswarning" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
<FEEDBACK>
<ON_CHECK message="unsupporteddbtablerowformat" />
</FEEDBACK>
</CUSTOM_CHECK>
</CUSTOM_CHECKS>
</MOODLE>
<MOODLE version="2.9" requires="2.2">
<UNICODE level="required">
<FEEDBACK>
<ON_ERROR message="unicoderequired" />
</FEEDBACK>
</UNICODE>
<DATABASE level="required">
<VENDOR name="mariadb" version="5.5.31" />
<VENDOR name="mysql" version="5.5.31" />
<VENDOR name="postgres" version="9.1" />
<VENDOR name="mssql" version="10.0" />
<VENDOR name="oracle" version="10.2" />
</DATABASE>
<PHP version="5.4.4" level="required">
<RESTRICT function="restrict_php_version_7" message="unsupportedphpversion7" />
</PHP>
<PCREUNICODE level="optional">
<FEEDBACK>
<ON_CHECK message="pcreunicodewarning" />
</FEEDBACK>
</PCREUNICODE>
<PHP_EXTENSIONS>
<PHP_EXTENSION name="iconv" level="required">
<FEEDBACK>
<ON_ERROR message="iconvrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="mbstring" level="optional">
<FEEDBACK>
<ON_CHECK message="mbstringrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="curl" level="required">
<FEEDBACK>
<ON_ERROR message="curlrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="openssl" level="optional">
<FEEDBACK>
<ON_CHECK message="opensslrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="tokenizer" level="optional">
<FEEDBACK>
<ON_CHECK message="tokenizerrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="xmlrpc" level="optional">
<FEEDBACK>
<ON_CHECK message="xmlrpcrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="soap" level="optional">
<FEEDBACK>
<ON_CHECK message="soaprecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="ctype" level="required">
<FEEDBACK>
<ON_ERROR message="ctyperequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="zip" level="required">
<FEEDBACK>
<ON_ERROR message="ziprequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="zlib" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="gd" level="required">
<FEEDBACK>
<ON_ERROR message="gdrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="simplexml" level="required">
<FEEDBACK>
<ON_ERROR message="simplexmlrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="spl" level="required">
<FEEDBACK>
<ON_ERROR message="splrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="pcre" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="dom" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="xml" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="intl" level="optional">
<FEEDBACK>
<ON_CHECK message="intlrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="json" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="hash" level="required"/>
</PHP_EXTENSIONS>
<PHP_SETTINGS>
<PHP_SETTING name="memory_limit" value="96M" level="required">
<FEEDBACK>
<ON_ERROR message="settingmemorylimit" />
</FEEDBACK>
</PHP_SETTING>
<PHP_SETTING name="file_uploads" value="1" level="optional">
<FEEDBACK>
<ON_CHECK message="settingfileuploads" />
</FEEDBACK>
</PHP_SETTING>
<PHP_SETTING name="opcache.enable" value="1" level="optional">
<FEEDBACK>
<ON_CHECK message="opcacherecommended" />
</FEEDBACK>
</PHP_SETTING>
</PHP_SETTINGS>
<CUSTOM_CHECKS>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
<FEEDBACK>
<ON_ERROR message="unsupporteddbstorageengine" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
<FEEDBACK>
<ON_ERROR message="quizattemptsupgradedmessage" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
<FEEDBACK>
<ON_CHECK message="slashargumentswarning" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
<FEEDBACK>
<ON_CHECK message="unsupporteddbtablerowformat" />
</FEEDBACK>
</CUSTOM_CHECK>
</CUSTOM_CHECKS>
</MOODLE>
<MOODLE version="3.0" requires="2.2">
<UNICODE level="required">
<FEEDBACK>
<ON_ERROR message="unicoderequired" />
@@ -1252,11 +1536,164 @@
</PHP_SETTING>
</PHP_SETTINGS>
<CUSTOM_CHECKS>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
<FEEDBACK>
<ON_ERROR message="unsupporteddbstorageengine" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
<FEEDBACK>
<ON_ERROR message="quizattemptsupgradedmessage" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
<FEEDBACK>
<ON_CHECK message="slashargumentswarning" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
<FEEDBACK>
<ON_CHECK message="unsupporteddbtablerowformat" />
</FEEDBACK>
</CUSTOM_CHECK>
</CUSTOM_CHECKS>
</MOODLE>
<MOODLE version="3.1" requires="2.7">
<UNICODE level="required">
<FEEDBACK>
<ON_ERROR message="unicoderequired" />
</FEEDBACK>
</UNICODE>
<DATABASE level="required">
<VENDOR name="mariadb" version="5.5.31" />
<VENDOR name="mysql" version="5.5.31" />
<VENDOR name="postgres" version="9.1" />
<VENDOR name="mssql" version="10.0" />
<VENDOR name="oracle" version="10.2" />
</DATABASE>
<PHP version="5.4.4" level="required">
</PHP>
<PCREUNICODE level="optional">
<FEEDBACK>
<ON_CHECK message="pcreunicodewarning" />
</FEEDBACK>
</PCREUNICODE>
<PHP_EXTENSIONS>
<PHP_EXTENSION name="iconv" level="required">
<FEEDBACK>
<ON_ERROR message="iconvrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="mbstring" level="optional">
<FEEDBACK>
<ON_CHECK message="mbstringrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="curl" level="required">
<FEEDBACK>
<ON_ERROR message="curlrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="openssl" level="optional">
<FEEDBACK>
<ON_CHECK message="opensslrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="tokenizer" level="optional">
<FEEDBACK>
<ON_CHECK message="tokenizerrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="xmlrpc" level="optional">
<FEEDBACK>
<ON_CHECK message="xmlrpcrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="soap" level="optional">
<FEEDBACK>
<ON_CHECK message="soaprecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="ctype" level="required">
<FEEDBACK>
<ON_ERROR message="ctyperequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="zip" level="required">
<FEEDBACK>
<ON_ERROR message="ziprequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="zlib" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="gd" level="required">
<FEEDBACK>
<ON_ERROR message="gdrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="simplexml" level="required">
<FEEDBACK>
<ON_ERROR message="simplexmlrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="spl" level="required">
<FEEDBACK>
<ON_ERROR message="splrequired" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="pcre" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="dom" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="xml" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="intl" level="optional">
<FEEDBACK>
<ON_CHECK message="intlrecommended" />
</FEEDBACK>
</PHP_EXTENSION>
<PHP_EXTENSION name="json" level="required">
</PHP_EXTENSION>
<PHP_EXTENSION name="hash" level="required"/>
</PHP_EXTENSIONS>
<PHP_SETTINGS>
<PHP_SETTING name="memory_limit" value="96M" level="required">
<FEEDBACK>
<ON_ERROR message="settingmemorylimit" />
</FEEDBACK>
</PHP_SETTING>
<PHP_SETTING name="file_uploads" value="1" level="optional">
<FEEDBACK>
<ON_CHECK message="settingfileuploads" />
</FEEDBACK>
</PHP_SETTING>
<PHP_SETTING name="opcache.enable" value="1" level="optional">
<FEEDBACK>
<ON_CHECK message="opcacherecommended" />
</FEEDBACK>
</PHP_SETTING>
</PHP_SETTINGS>
<CUSTOM_CHECKS>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_storage_engine" level="required">
<FEEDBACK>
<ON_ERROR message="unsupporteddbstorageengine" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="question/engine/upgrade/upgradelib.php" function="quiz_attempts_upgraded" level="required">
<FEEDBACK>
<ON_ERROR message="quizattemptsupgradedmessage" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_slasharguments" level="optional">
<FEEDBACK>
<ON_CHECK message="slashargumentswarning" />
</FEEDBACK>
</CUSTOM_CHECK>
<CUSTOM_CHECK file="lib/upgradelib.php" function="check_database_tables_row_format" level="optional">
<FEEDBACK>
<ON_CHECK message="unsupporteddbtablerowformat" />
</FEEDBACK>
</CUSTOM_CHECK>
</CUSTOM_CHECKS>
</MOODLE>
</COMPATIBILITY_MATRIX>
+30 -17
View File
@@ -514,7 +514,15 @@ if (isguestuser()) {
redirect(get_login_url());
}
$context = context_system::instance();
require_capability('moodle/site:config', $context);
if (!has_capability('moodle/site:config', $context)) {
// Do not throw exception display an empty page with administration menu if visible for current user.
$PAGE->set_title($SITE->fullname);
$PAGE->set_heading($SITE->fullname);
echo $OUTPUT->header();
echo $OUTPUT->footer();
exit;
}
// check that site is properly customized
$site = get_site();
@@ -561,31 +569,36 @@ $cronoverdue = ($lastcron < time() - 3600 * 24);
$dbproblems = $DB->diagnose();
$maintenancemode = !empty($CFG->maintenance_enabled);
// Available updates for Moodle core
// Available updates for Moodle core.
$updateschecker = \core\update\checker::instance();
$availableupdates = array();
$availableupdates['core'] = $updateschecker->get_update_info('core',
array('minmaturity' => $CFG->updateminmaturity, 'notifybuilds' => $CFG->updatenotifybuilds));
$availableupdatesfetch = null;
// Available updates for contributed plugins
$pluginman = core_plugin_manager::instance();
foreach ($pluginman->get_plugins() as $plugintype => $plugintypeinstances) {
foreach ($plugintypeinstances as $pluginname => $plugininfo) {
if (!empty($plugininfo->availableupdates)) {
foreach ($plugininfo->availableupdates as $pluginavailableupdate) {
if ($pluginavailableupdate->version > $plugininfo->versiondisk) {
if (!isset($availableupdates[$plugintype.'_'.$pluginname])) {
$availableupdates[$plugintype.'_'.$pluginname] = array();
if (empty($CFG->disableupdatenotifications)) {
// Only compute the update information when it is going to be displayed to the user.
$availableupdates['core'] = $updateschecker->get_update_info('core',
array('minmaturity' => $CFG->updateminmaturity, 'notifybuilds' => $CFG->updatenotifybuilds));
// Available updates for contributed plugins
$pluginman = core_plugin_manager::instance();
foreach ($pluginman->get_plugins() as $plugintype => $plugintypeinstances) {
foreach ($plugintypeinstances as $pluginname => $plugininfo) {
if (!empty($plugininfo->availableupdates)) {
foreach ($plugininfo->availableupdates as $pluginavailableupdate) {
if ($pluginavailableupdate->version > $plugininfo->versiondisk) {
if (!isset($availableupdates[$plugintype.'_'.$pluginname])) {
$availableupdates[$plugintype.'_'.$pluginname] = array();
}
$availableupdates[$plugintype.'_'.$pluginname][] = $pluginavailableupdate;
}
$availableupdates[$plugintype.'_'.$pluginname][] = $pluginavailableupdate;
}
}
}
}
}
// The timestamp of the most recent check for available updates
$availableupdatesfetch = $updateschecker->get_last_timefetched();
// The timestamp of the most recent check for available updates
$availableupdatesfetch = $updateschecker->get_last_timefetched();
}
$buggyiconvnomb = (!function_exists('mb_convert_encoding') and @iconv('UTF-8', 'UTF-8//IGNORE', '100'.chr(130).'€') !== '100€');
//check if the site is registered on Moodle.org
+1 -1
View File
@@ -11,7 +11,7 @@
echo '<div class="phpinfo">';
ob_start();
phpinfo(INFO_GENERAL + INFO_CONFIGURATION + INFO_MODULES);
phpinfo(INFO_GENERAL + INFO_CONFIGURATION + INFO_MODULES + INFO_VARIABLES);
$html = ob_get_contents();
ob_end_clean();
+1 -1
View File
@@ -65,7 +65,7 @@ if (!empty($registeredhub) and $registeredhub->token == $token) {
$registeredhub->hubname = $hubname;
$registrationmanager->update_registeredhub($registeredhub);
//display notficiation message
// Display notification message.
$notificationmessage = $OUTPUT->notification(
get_string('registrationconfirmedon', 'hub', $hublink), 'notifysuccess');
echo $notificationmessage;
+3 -3
View File
@@ -22,9 +22,9 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL
* @copyright (C) 1999 onwards Martin Dougiamas http://dougiamas.com
*
* On this page the administrator selects which hub he wants to register,
* except for MOOCH. Admins can register with MOOCH with the top admin menu "Registration" link.
* On this page the administrator can also unregister from any hubs, including MOOCH.
* On this page the administrator selects which hub he wants to register (except for moodle.net)
* Admins can register with moodle.net via the site admin menu "Registration" link.
* On this page the administrator can also unregister from any hubs including moodle.net.
*/
require('../../config.php');
+22 -23
View File
@@ -53,31 +53,30 @@ class registration_manager {
public function cron() {
global $CFG;
if (extension_loaded('xmlrpc')) {
//check if the last registration cron update was less than a week ago
$lastcron = get_config('registration', 'crontime');
if ($lastcron === false or $lastcron < strtotime("-7 day")) { //set to a week, see MDL-23704
$function = 'hub_update_site_info';
require_once($CFG->dirroot . "/webservice/xmlrpc/lib.php");
$function = 'hub_update_site_info';
require_once($CFG->dirroot . "/webservice/xmlrpc/lib.php");
//update all hub where the site is registered on
$hubs = $this->get_registered_on_hubs();
foreach ($hubs as $hub) {
//update the registration
$siteinfo = $this->get_site_info($hub->huburl);
$params = array('siteinfo' => $siteinfo);
$serverurl = $hub->huburl . "/local/hub/webservice/webservices.php";
$xmlrpcclient = new webservice_xmlrpc_client($serverurl, $hub->token);
try {
$result = $xmlrpcclient->call($function, $params);
mtrace(get_string('siteupdatedcron', 'hub', $hub->hubname));
} catch (Exception $e) {
$errorparam = new stdClass();
$errorparam->errormessage = $e->getMessage();
$errorparam->hubname = $hub->hubname;
mtrace(get_string('errorcron', 'hub', $errorparam));
}
// Update all hubs where the site is registered.
$hubs = $this->get_registered_on_hubs();
if (empty($hubs)) {
mtrace(get_string('registrationwarning', 'admin'));
}
foreach ($hubs as $hub) {
// Update the registration.
$siteinfo = $this->get_site_info($hub->huburl);
$params = array('siteinfo' => $siteinfo);
$serverurl = $hub->huburl . "/local/hub/webservice/webservices.php";
$xmlrpcclient = new webservice_xmlrpc_client($serverurl, $hub->token);
try {
$result = $xmlrpcclient->call($function, $params);
$this->update_registeredhub($hub); // To update timemodified.
mtrace(get_string('siteupdatedcron', 'hub', $hub->hubname));
} catch (Exception $e) {
$errorparam = new stdClass();
$errorparam->errormessage = $e->getMessage();
$errorparam->hubname = $hub->hubname;
mtrace(get_string('errorcron', 'hub', $errorparam));
}
set_config('crontime', time(), 'registration');
}
} else {
mtrace(get_string('errorcronnoxmlrpc', 'hub'));
+9
View File
@@ -39,6 +39,8 @@ require_once($CFG->dirroot . '/' . $CFG->admin . '/registration/forms.php');
require_once($CFG->dirroot . '/webservice/lib.php');
require_once($CFG->dirroot . '/' . $CFG->admin . '/registration/lib.php');
require_sesskey();
$huburl = required_param('huburl', PARAM_URL);
$huburl = rtrim($huburl, "/");
@@ -177,6 +179,13 @@ if (!empty($error)) {
//some Moodle.org resitration explanation
if ($huburl == HUB_MOODLEORGHUBURL) {
if (!empty($registeredhub->token)) {
$registrationmessage = get_string('pleaserefreshregistration', 'admin');
} else {
$registrationmessage = get_string('registrationwarning', 'admin');
}
echo $OUTPUT->notification($registrationmessage);
echo $OUTPUT->heading(get_string('registerwithmoodleorg', 'admin'));
$renderer = $PAGE->get_renderer('core', 'register');
echo $renderer->moodleorg_registration_message();
+11 -6
View File
@@ -36,13 +36,18 @@ class core_register_renderer extends plugin_renderer_base {
* @return string
*/
public function moodleorg_registration_message() {
$moodleorgurl = html_writer::link('http://moodle.org', 'Moodle.org');
$moodleorgstatsurl = html_writer::link('http://moodle.org/stats', get_string('statsmoodleorg', 'admin'));
$moochurl = html_writer::link(HUB_MOODLEORGHUBURL, get_string('moodleorghubname', 'admin'));
$moodleorgregmsg = get_string('registermoodleorg', 'admin', $moodleorgurl);
$moodleorgstatslink = html_writer::link('http://moodle.net/stats',
get_string('statsmoodleorg', 'admin'),
array('target' => '_blank'));
$hublink = html_writer::link('https://moodle.net/mod/page/view.php?id=1',
get_string('moodleorghubname', 'admin'),
array('target' => '_blank'));
$moodleorgregmsg = get_string('registermoodleorg', 'admin', $hublink);
$items = array(get_string('registermoodleorgli1', 'admin'),
get_string('registermoodleorgli2', 'admin', $moodleorgstatsurl),
get_string('registermoodleorgli3', 'admin', $moochurl));
get_string('registermoodleorgli2', 'admin', $moodleorgstatslink));
$moodleorgregmsg .= html_writer::alist($items);
return $moodleorgregmsg;
}
+6 -2
View File
@@ -50,7 +50,8 @@ $table->set_attribute('class', 'admintable generaltable');
$table->setup();
$plugins = array();
foreach (core_component::get_plugin_list('report') as $plugin => $plugindir) {
$availableplugins = core_component::get_plugin_list('report');
foreach ($availableplugins as $plugin => $plugindir) {
if (get_string_manager()->string_exists('pluginname', 'report_' . $plugin)) {
$strpluginname = get_string('pluginname', 'report_' . $plugin);
} else {
@@ -80,7 +81,10 @@ foreach ($plugins as $plugin => $name) {
$uninstall = html_writer::link($uninstallurl, $struninstall);
}
$stores = $logmanager->get_supported_logstores('report_' . $plugin);
$stores = array();
if (isset($availableplugins[$plugin])) {
$stores = $logmanager->get_supported_logstores('report_' . $plugin);
}
if ($stores === false) {
$supportedstores = get_string('logstorenotrequired', 'admin');
} else if (!empty($stores)) {
+14 -4
View File
@@ -264,6 +264,7 @@ if (($action == 'edit') || ($action == 'new')) {
$strshow = get_string('on', 'repository');
$strhide = get_string('off', 'repository');
$strdelete = get_string('disabled', 'repository');
$struninstall = get_string('uninstallplugin', 'core_admin');
$actionchoicesforexisting = array(
'show' => $strshow,
@@ -286,9 +287,9 @@ if (($action == 'edit') || ($action == 'new')) {
// Table to list plug-ins
$table = new html_table();
$table->head = array(get_string('name'), get_string('isactive', 'repository'), get_string('order'), $settingsstr);
$table->head = array(get_string('name'), get_string('isactive', 'repository'), get_string('order'), $settingsstr, $struninstall);
$table->colclasses = array('leftalign', 'centeralign', 'centeralign', 'centeralign', 'centeralign');
$table->colclasses = array('leftalign', 'centeralign', 'centeralign', 'centeralign', 'centeralign', 'centeralign');
$table->id = 'repositoriessetting';
$table->data = array();
$table->attributes['class'] = 'admintable generaltable';
@@ -384,7 +385,12 @@ if (($action == 'edit') || ($action == 'new')) {
$updowncount++;
$table->data[] = array($i->get_readablename(), $OUTPUT->render($select), $updown, $settings);
$uninstall = '';
if ($uninstallurl = core_plugin_manager::instance()->get_uninstall_url('repository_' . $typename, 'manage')) {
$uninstall = html_writer::link($uninstallurl, $struninstall);
}
$table->data[] = array($i->get_readablename(), $OUTPUT->render($select), $updown, $settings, $uninstall);
if (!in_array($typename, $alreadyplugins)) {
$alreadyplugins[] = $typename;
@@ -400,7 +406,11 @@ if (($action == 'edit') || ($action == 'new')) {
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), '', '');
$uninstall = '';
if ($uninstallurl = core_plugin_manager::instance()->get_uninstall_url('repository_' . $plugin, 'manage')) {
$uninstall = html_writer::link($uninstallurl, $struninstall);
}
$table->data[] = array(get_string('pluginname', 'repository_'.$plugin), $OUTPUT->render($select), '', '', $uninstall);
}
}
}
@@ -472,7 +472,9 @@ class core_role_define_role_table_advanced extends core_role_capability_table_wi
}
protected function get_description_field($id) {
return print_textarea(true, 10, 50, 50, 10, 'description', $this->role->description, 0, true);
return '<textarea class="form-textarea" id="'. s($id) .'" name="description" rows="10" cols="50">' .
htmlspecialchars($this->role->description) .
'</textarea>';
}
protected function get_archetype_field($id) {
+2
View File
@@ -46,6 +46,8 @@ $resultshtml = admin_search_settings_html($query); // case insensitive search on
echo '<form action="' . $PAGE->url->out(true) . '" method="post" id="adminsettings">';
echo '<div>';
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
// HACK to prevent browsers from automatically inserting the user's password into the wrong fields.
echo prevent_form_autofill_password();
echo '</div>';
echo '<fieldset>';
echo '<div class="clearer"><!-- --></div>';
+4
View File
@@ -77,6 +77,8 @@ if (empty($SITE->fullname)) {
echo html_writer::input_hidden_params($PAGE->url);
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
echo '<input type="hidden" name="return" value="'.$return.'" />';
// HACK to prevent browsers from automatically inserting the user's password into the wrong fields.
echo prevent_form_autofill_password();
echo $settingspage->output_html();
@@ -119,6 +121,8 @@ if (empty($SITE->fullname)) {
echo html_writer::input_hidden_params($PAGE->url);
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
echo '<input type="hidden" name="return" value="'.$return.'" />';
// HACK to prevent browsers from automatically inserting the user's password into the wrong fields.
echo prevent_form_autofill_password();
echo $OUTPUT->heading($settingspage->visiblename);
echo $settingspage->output_html();
+2 -1
View File
@@ -64,7 +64,8 @@ mybadges,badges|/badges/mybadges.php|award',
array('0' => new lang_string('default', 'calendar'),
'%I:%M %p' => new lang_string('timeformat_12', 'calendar'),
'%H:%M' => new lang_string('timeformat_24', 'calendar'))));
$temp->add(new admin_setting_configselect('calendar_startwday', new lang_string('configstartwday', 'admin'), new lang_string('helpstartofweek', 'admin'), 0,
$temp->add(new admin_setting_configselect('calendar_startwday', new lang_string('configstartwday', 'admin'),
new lang_string('helpstartofweek', 'admin'), get_string('firstdayofweek', 'langconfig'),
array(
0 => new lang_string('sunday', 'calendar'),
1 => new lang_string('monday', 'calendar'),
+1 -1
View File
@@ -46,7 +46,7 @@ if ($hassiteconfig or has_any_capability($capabilities, $systemcontext)) {
$ADMIN->add('courses',
new admin_externalpage('restorecourse', new lang_string('restorecourse', 'admin'),
new moodle_url('/backup/restorefile.php', array('contextid' => context_system::instance()->id)),
array('moodle/course:create')
array('moodle/restore:restorecourse')
)
);
+2
View File
@@ -75,6 +75,8 @@ if (has_capability('moodle/grade:manage', $systemcontext)
$temp->add(new admin_setting_special_gradepointmax());
$temp->add(new admin_setting_special_gradepointdefault());
$temp->add(new admin_setting_special_grademinmaxtouse());
}
$ADMIN->add('grades', $temp);
+2 -1
View File
@@ -35,7 +35,8 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
$params = new stdClass();
$params->bytes = $defaultuserquota;
$params->displaysize = display_size($defaultuserquota);
$temp->add(new admin_setting_configtext('userquota', new lang_string('userquota', 'admin'), new lang_string('configuserquota', 'admin', $params), $defaultuserquota));
$temp->add(new admin_setting_configtext('userquota', new lang_string('userquota', 'admin'),
new lang_string('configuserquota', 'admin', $params), $defaultuserquota, PARAM_INT, 30));
$temp->add(new admin_setting_configcheckbox('allowobjectembed', new lang_string('allowobjectembed', 'admin'), new lang_string('configallowobjectembed', 'admin'), 0));
$temp->add(new admin_setting_configcheckbox('enabletrusttext', new lang_string('enabletrusttext', 'admin'), new lang_string('configenabletrusttext', 'admin'), 0));
+1 -1
View File
@@ -11,7 +11,7 @@ $hassiteconfig = has_capability('moodle/site:config', $systemcontext);
$ADMIN->add('root', new admin_externalpage('adminnotifications', new lang_string('notifications'), "$CFG->wwwroot/$CFG->admin/index.php"));
$ADMIN->add('root', new admin_externalpage('registrationmoodleorg', new lang_string('registration', 'admin'),
"$CFG->wwwroot/$CFG->admin/registration/register.php?huburl=" . HUB_MOODLEORGHUBURL . "&hubname=Moodle.org"));
"$CFG->wwwroot/$CFG->admin/registration/register.php?huburl=" . HUB_MOODLEORGHUBURL . "&hubname=Moodle.org&sesskey=" . sesskey()));
$ADMIN->add('root', new admin_externalpage('registrationhub', new lang_string('registerwith', 'hub'),
"$CFG->wwwroot/$CFG->admin/registration/register.php", 'moodle/site:config', true));
$ADMIN->add('root', new admin_externalpage('registrationhubs', new lang_string('hubs', 'admin'),
+24
View File
@@ -114,6 +114,30 @@ class behat_admin extends behat_base {
}
}
/**
* Sets the specified site settings. A table with | config | value | (optional)plugin | is expected.
*
* @Given /^the following config values are set as admin:$/
* @param TableNode $table
*/
public function the_following_config_values_are_set_as_admin(TableNode $table) {
if (!$data = $table->getRowsHash()) {
return;
}
foreach ($data as $config => $value) {
// Default plugin value is null.
$plugin = null;
if (is_array($value)) {
$plugin = $value[1];
$value = $value[0];
}
set_config($config, $value, $plugin);
}
}
/**
* Waits with the provided params if we are running a JS session.
*
+6 -6
View File
@@ -7,10 +7,10 @@ Feature: An administrator can filter user accounts by role, cohort and other pro
Background:
Given the following "users" exist:
| username | firstname | lastname | email | auth | confirmed |
| user1 | User | One | one@asd.com | manual | 0 |
| user2 | User | Two | two@asd.com | ldap | 1 |
| user3 | User | Three | three@asd.com | manual | 1 |
| user4 | User | Four | four@asd.com | ldap | 0 |
| user1 | User | One | one@example.com | manual | 0 |
| user2 | User | Two | two@example.com | ldap | 1 |
| user3 | User | Three | three@example.com | manual | 1 |
| user4 | User | Four | four@example.com | ldap | 0 |
And the following "cohorts" exist:
| name | idnumber |
| Cohort 1 | CH1 |
@@ -23,8 +23,8 @@ Feature: An administrator can filter user accounts by role, cohort and other pro
| user2 | C1 | student |
| user3 | C1 | student |
And I log in as "admin"
And I add "User Two (two@asd.com)" user to "CH1" cohort members
And I add "User Three (three@asd.com)" user to "CH1" cohort members
And I add "User Two (two@example.com)" user to "CH1" cohort members
And I add "User Three (three@example.com)" user to "CH1" cohort members
And I follow "Browse list of users"
@javascript
@@ -13,15 +13,13 @@ Feature: Set admin settings value
And I should not see "C_shortname Course fullname"
Scenario: set admin value with full name
Given I set the following administration settings values:
| Display extended course names | 1 |
When I press "Save changes"
Given the following config values are set as admin:
| courselistshortnames | 1 |
And I am on homepage
Then I should see "C_shortname Course fullname"
Scenario: set admin value with short name
Given I set the following administration settings values:
Given the following config values are set as admin:
| courselistshortnames | 1 |
When I press "Save changes"
And I am on homepage
Then I should see "C_shortname Course fullname"
+2 -2
View File
@@ -21,7 +21,7 @@ Feature: Upload users
And I should see "Tom"
And I should see "Jones"
And I should see "verysecret"
And I should see "jonest@someplace.edu"
And I should see "jonest@example.com"
And I should see "Reznor"
And I should see "course1"
And I should see "math102"
@@ -32,7 +32,7 @@ Feature: Upload users
And I follow "Browse list of users"
And I should see "Tom Jones"
And I should see "Trent Reznor"
And I should see "reznor@someplace.edu"
And I should see "reznor@example.com"
And I am on homepage
And I follow "Maths"
And I expand "Users" node
@@ -13,8 +13,8 @@ Feature: Manage availability conditions
Then I should not see "Availability restrictions"
# Enable it and check I can now see and click on it.
And I set the following administration settings values:
| Enable conditional access | 1 |
And the following config values are set as admin:
| enableavailability | 1 |
And I am on homepage
And I navigate to "Manage restrictions" node in "Site administration > Plugins > Availability restrictions"
@@ -28,9 +28,9 @@ Feature: Manage availability conditions
Given the following "courses" exist:
| fullname | shortname | format |
| Course 1 | C1 | topics |
And the following config values are set as admin:
| enableavailability | 1 |
And I log in as "admin"
And I set the following administration settings values:
| Enable conditional access | 1 |
And I am on homepage
When I navigate to "Manage restrictions" node in "Site administration > Plugins > Availability restrictions"
+8 -16
View File
@@ -44,13 +44,19 @@ require_once(__DIR__ . '/../../../../lib/behat/lib.php');
chdir(__DIR__);
$output = null;
exec("php util.php --diag", $output, $code);
// Ensure we have composer installed, before we install or re-install test site.
if ($code == TESTING_EXITCODE_COMPOSER || $code == BEHAT_EXITCODE_INSTALL || $code == BEHAT_EXITCODE_REINSTALL) {
testing_update_composer_dependencies();
chdir(__DIR__);
exec("php util.php --diag", $output, $code);
}
if ($code == 0) {
echo "Behat test environment already installed\n";
} else if ($code == BEHAT_EXITCODE_INSTALL) {
testing_update_composer_dependencies();
// Behat and dependencies are installed and we need to install the test site.
chdir(__DIR__);
passthru("php util.php --install", $code);
@@ -60,8 +66,6 @@ if ($code == 0) {
} else if ($code == BEHAT_EXITCODE_REINSTALL) {
testing_update_composer_dependencies();
// Test site data is outdated.
chdir(__DIR__);
passthru("php util.php --drop", $code);
@@ -74,18 +78,6 @@ if ($code == 0) {
exit($code);
}
} else if ($code == BEHAT_EXITCODE_COMPOSER) {
// Missing Behat dependencies.
testing_update_composer_dependencies();
// Returning to admin/tool/behat/cli.
chdir(__DIR__);
passthru("php util.php --install", $code);
if ($code != 0) {
exit($code);
}
} else {
// Generic error, we just output it.
echo implode("\n", $output)."\n";
+1 -1
View File
@@ -165,7 +165,7 @@ class tool_behat_renderer extends plugin_renderer_base {
// Info.
$installurl = behat_command::DOCS_URL . '#Installation';
$installlink = html_writer::tag('a', $installurl, array('href' => $installurl, 'target' => '_blank'));
$writetestsurl = behat_command::DOCS_URL . '#Writting_features';
$writetestsurl = behat_command::DOCS_URL . '#Writing_features';
$writetestslink = html_writer::tag('a', $writetestsurl, array('href' => $writetestsurl, 'target' => '_blank'));
$writestepsurl = behat_command::DOCS_URL . '#Adding_steps_definitions';
$writestepslink = html_writer::tag('a', $writestepsurl, array('href' => $writestepsurl, 'target' => '_blank'));
@@ -69,8 +69,8 @@ Feature: Set up contextual data for tests
Scenario: Role overrides
Given the following "users" exist:
| username | firstname | lastname | email |
| teacher1 | Teacher | 1 | teacher1@asd.com |
| student1 | Student | 1 | student1@asd.com |
| teacher1 | Teacher | 1 | teacher1@example.com |
| student1 | Student | 1 | student1@example.com |
And the following "categories" exist:
| name | category | idnumber |
| Cat 1 | 0 | CAT1 |
@@ -99,7 +99,7 @@ Feature: Set up contextual data for tests
Scenario: Add course enrolments
Given the following "users" exist:
| username | firstname | lastname | email |
| student1 | Student | 1 | student1@asd.com |
| student1 | Student | 1 | student1@example.com |
And the following "courses" exist:
| fullname | shortname | format |
| Course 1 | C1 | topics |
@@ -117,11 +117,11 @@ Feature: Set up contextual data for tests
| Custom student | custom2 | | |
And the following "users" exist:
| username | firstname | lastname | email |
| user1 | User | 1 | user1@moodlemoodle.com |
| user2 | User | 2 | user2@moodlemoodle.com |
| user3 | User | 3 | user3@moodlemoodle.com |
| user4 | User | 4 | user4@moodlemoodle.com |
| user5 | User | 5 | user5@moodlemoodle.com |
| user1 | User | 1 | user1@example.com |
| user2 | User | 2 | user2@example.com |
| user3 | User | 3 | user3@example.com |
| user4 | User | 4 | user4@example.com |
| user5 | User | 5 | user5@example.com |
And the following "categories" exist:
| name | category | idnumber |
| Cat 1 | 0 | CAT1 |
@@ -229,8 +229,8 @@ Feature: Set up contextual data for tests
Scenario: Add relations between users and groups
Given the following "users" exist:
| username | firstname | lastname | email |
| student1 | Student | 1 | student1@asd.com |
| student2 | Student | 2 | student2@asd.com |
| student1 | Student | 1 | student1@example.com |
| student2 | Student | 2 | student2@example.com |
And the following "courses" exist:
| fullname | shortname |
| Course 1 | C1 |
@@ -269,8 +269,8 @@ Feature: Set up contextual data for tests
| Cat 1 | 0 | CAT1 |
And the following "users" exist:
| username | firstname | lastname | email |
| student1 | Student | 1 | student1@asd.com |
| student2 | Student | 2 | student2@asd.com |
| student1 | Student | 1 | student1@example.com |
| student2 | Student | 2 | student2@example.com |
And the following "cohorts" exist:
| name | idnumber |
| System cohort A | CHSA |
@@ -385,9 +385,9 @@ Feature: Set up contextual data for tests
And the following "grade outcomes" exist:
| fullname | shortname | course | scale |
| Grade outcome 2 | OT2 | C1 | Test Scale 1 |
And the following config values are set as admin:
| enableoutcomes | 1 |
When I log in as "admin"
And I set the following administration settings values:
| Enable outcomes | 1 |
And I follow "Home"
And I follow "Course 1"
And I follow "Outcomes"
@@ -414,9 +414,9 @@ Feature: Set up contextual data for tests
And the following "grade items" exist:
| itemname | course | outcome | gradecategory |
| Test Outcome Grade Item 1 | C1 | OT1 | Grade category 1 |
And the following config values are set as admin:
| enableoutcomes | 1 |
When I log in as "admin"
And I set the following administration settings values:
| Enable outcomes | 1 |
And I follow "Home"
And I follow "Course 1"
And I follow "Grades"
@@ -7,7 +7,7 @@ Feature: Edit capabilities
Background:
Given the following "users" exist:
| username | firstname | lastname | email |
| teacher1 | Teacher | 1 | teacher1@asd.com |
| teacher1 | Teacher | 1 | teacher1@example.com |
And the following "courses" exist:
| fullname | shortname | category |
| Course 1 | C1 | 0 |
@@ -15,7 +15,6 @@ Feature: Edit capabilities
| user | course | role |
| teacher1 | C1 | editingteacher |
@javascript
Scenario: Default system capabilities modification
Given I log in as "admin"
And I set the following system permissions of "Teacher" role:
@@ -30,7 +29,6 @@ Feature: Edit capabilities
And "moodle/grade:managesharedforms" capability has "Prevent" permission
And "moodle/course:request" capability has "Prohibit" permission
@javascript
Scenario: Course capabilities overrides
Given I log in as "teacher1"
And I follow "Course 1"
@@ -41,11 +39,11 @@ Feature: Edit capabilities
| mod/forum:editanypost | Prevent |
| mod/forum:addquestion | Allow |
When I set the field "Advanced role override" to "Student (3)"
And I press "Go"
Then "mod/forum:deleteanypost" capability has "Prohibit" permission
And "mod/forum:editanypost" capability has "Prevent" permission
And "mod/forum:addquestion" capability has "Allow" permission
@javascript
Scenario: Module capabilities overrides
Given I log in as "teacher1"
And I follow "Course 1"
@@ -60,6 +58,7 @@ Feature: Edit capabilities
| mod/forum:editanypost | Prevent |
| mod/forum:addquestion | Allow |
When I set the field "Advanced role override" to "Student (3)"
And I press "Go"
Then "mod/forum:deleteanypost" capability has "Prohibit" permission
And "mod/forum:editanypost" capability has "Prevent" permission
And "mod/forum:addquestion" capability has "Allow" permission
@@ -10,9 +10,9 @@ Feature: Verify that all form fields values can be get and set
| Course 1 | C1 | 0 |
And the following "users" exist:
| username | email | firstname | lastname |
| student1 | s1@asd.com | Student | 1 |
| student2 | s2@asd.com | Student | 2 |
| student3 | s3@asd.com | Student | 3 |
| student1 | s1@example.com | Student | 1 |
| student2 | s2@example.com | Student | 2 |
| student3 | s3@example.com | Student | 3 |
And the following "course enrolments" exist:
| user | course | role |
| student1 | C1 | student |
@@ -137,6 +137,17 @@ Feature: Verify that all form fields values can be get and set
And I press "Save my choice"
And the field "one" matches value "1"
And the field "two" matches value ""
# Check if field xpath set/match works.
And I am on site homepage
And I follow "Course 1"
And I navigate to "Edit settings" node in "Course administration"
And I set the field with xpath "//input[@id='id_idnumber']" to "Course id number"
And the field with xpath "//input[@name='idnumber']" matches value "Course id number"
And the field with xpath "//input[@name='idnumber']" does not match value ""
And I press "Save changes"
And I navigate to "Edit settings" node in "Course administration"
And the field "Course ID number" matches value "Course id number"
Scenario: with JS disabled all form fields getters and setters works as expected
@@ -83,7 +83,6 @@ SEARCH.prototype = {
div.append(label).append(this.input);
this.select.insert(div, 'before');
this.select.one('option').setStyle('display', 'none');
this.input.on('keyup', this.typed, this);
this.select.on('change', this.validate, this);
@@ -1 +1 @@
YUI.add("moodle-tool_capability-search",function(e,t){var n=function(){n.superclass.constructor.apply(this,arguments)};n.prototype={form:null,select:null,selectoptions:{},input:null,button:null,lastsearch:null,initializer:function(){this.form=e.one("#capability-overview-form"),this.select=this.form.one("select[data-search=capability]"),this.select.setStyle("minWidth",this.select.get("offsetWidth")),this.select.get("options").each(function(e){var t=e.get("value");this.selectoptions[t]=e},this),this.button=this.form.all("input[type=submit]"),this.lastsearch=this.form.one("input[name=search]");var t=e.Node.create('<div id="capabilitysearchui"></div>'),n=e.Node.create('<label for="capabilitysearch">'+this.get("strsearch")+"</label>");this.input=e.Node.create('<input type="text" id="capabilitysearch" />'),t.append(n).append(this.input),this.select.insert(t,"before"),this.select.one("option").setStyle("display","none"),this.input.on("keyup",this.typed,this),this.select.on("change",this.validate,this),this.lastsearch&&(this.input.set("value",this.lastsearch.get("value")),this.typed(),this.select.one("option[selected]")&&this.select.set("scrollTop",this.select.one("option[selected]").get("getX"))),this.validate()},validate:function(){this.button.set("disabled",this.select.get("value")==="")},typed:function(){var e=this.input.get("value"),t=0,n=null,r;this.lastsearch&&this.lastsearch.set("value",e),this.select.all("option").remove();for(r in this.selectoptions)r.indexOf(e)>=0&&(t++,n=this.selectoptions[r],this.select.append(this.selectoptions[r]));t===0?this.input.addClass("error"):(this.input.removeClass("error"),t===1&&n.set("selected",!0)),this.validate()}},e.extend(n,e.Base,n.prototype,{NAME:"tool_capability-search",ATTRS:{strsearch:{}}}),M.tool_capability=M.tool_capability||{},M.tool_capability.init_capability_search=function(e){new n(e)}},"@VERSION@",{requires:["base","node"]});
YUI.add("moodle-tool_capability-search",function(e,t){var n=function(){n.superclass.constructor.apply(this,arguments)};n.prototype={form:null,select:null,selectoptions:{},input:null,button:null,lastsearch:null,initializer:function(){this.form=e.one("#capability-overview-form"),this.select=this.form.one("select[data-search=capability]"),this.select.setStyle("minWidth",this.select.get("offsetWidth")),this.select.get("options").each(function(e){var t=e.get("value");this.selectoptions[t]=e},this),this.button=this.form.all("input[type=submit]"),this.lastsearch=this.form.one("input[name=search]");var t=e.Node.create('<div id="capabilitysearchui"></div>'),n=e.Node.create('<label for="capabilitysearch">'+this.get("strsearch")+"</label>");this.input=e.Node.create('<input type="text" id="capabilitysearch" />'),t.append(n).append(this.input),this.select.insert(t,"before"),this.input.on("keyup",this.typed,this),this.select.on("change",this.validate,this),this.lastsearch&&(this.input.set("value",this.lastsearch.get("value")),this.typed(),this.select.one("option[selected]")&&this.select.set("scrollTop",this.select.one("option[selected]").get("getX"))),this.validate()},validate:function(){this.button.set("disabled",this.select.get("value")==="")},typed:function(){var e=this.input.get("value"),t=0,n=null,r;this.lastsearch&&this.lastsearch.set("value",e),this.select.all("option").remove();for(r in this.selectoptions)r.indexOf(e)>=0&&(t++,n=this.selectoptions[r],this.select.append(this.selectoptions[r]));t===0?this.input.addClass("error"):(this.input.removeClass("error"),t===1&&n.set("selected",!0)),this.validate()}},e.extend(n,e.Base,n.prototype,{NAME:"tool_capability-search",ATTRS:{strsearch:{}}}),M.tool_capability=M.tool_capability||{},M.tool_capability.init_capability_search=function(e){new n(e)}},"@VERSION@",{requires:["base","node"]});
@@ -83,7 +83,6 @@ SEARCH.prototype = {
div.append(label).append(this.input);
this.select.insert(div, 'before');
this.select.one('option').setStyle('display', 'none');
this.input.on('keyup', this.typed, this);
this.select.on('change', this.validate, this);
-1
View File
@@ -81,7 +81,6 @@ SEARCH.prototype = {
div.append(label).append(this.input);
this.select.insert(div, 'before');
this.select.one('option').setStyle('display', 'none');
this.input.on('keyup', this.typed, this);
this.select.on('change', this.validate, this);
+1 -1
View File
@@ -63,7 +63,7 @@ if ($translatorsubmitted) {
$checkin = optional_param('savecheckin', false, PARAM_RAW);
if ($checkin === false) {
$nexturl = $PAGE->url;
$nexturl = new moodle_url($PAGE->url, array('p' => $currentpage));
} else {
$nexturl = new moodle_url('/admin/tool/customlang/index.php', array('action'=>'checkin', 'lng' => $lng, 'sesskey'=>sesskey()));
}
+1
View File
@@ -133,6 +133,7 @@ class tool_customlang_renderer extends plugin_renderer_base {
$output .= html_writer::start_tag('div');
$output .= html_writer::empty_tag('input', array('type'=>'hidden', 'name'=>'translatorsubmitted', 'value'=>1));
$output .= html_writer::empty_tag('input', array('type'=>'hidden', 'name'=>'sesskey', 'value'=>sesskey()));
$output .= html_writer::empty_tag('input', array('type'=>'hidden', 'name'=>'p', 'value'=>$translator->currentpage));
$save1 = html_writer::empty_tag('input', array('type'=>'submit', 'name'=>'savecontinue', 'value'=>get_string('savecontinue', 'tool_customlang')));
$save2 = html_writer::empty_tag('input', array('type'=>'submit', 'name'=>'savecheckin', 'value'=>get_string('savecheckin', 'tool_customlang')));
$output .= html_writer::tag('fieldset', $save1.$save2, array('class'=>'buttonsbar'));
@@ -208,10 +208,13 @@ class tool_generator_course_backend extends tool_generator_backend {
*/
private function create_course() {
$this->log('createcourse', $this->shortname);
$courserecord = array('shortname' => $this->shortname,
'fullname' => get_string('fullname', 'tool_generator',
array('size' => get_string('shortsize_' . $this->size, 'tool_generator'))),
'numsections' => self::$paramsections[$this->size]);
$courserecord = array(
'shortname' => $this->shortname,
'fullname' => get_string('fullname', 'tool_generator',
array('size' => get_string('shortsize_' . $this->size, 'tool_generator'))),
'numsections' => self::$paramsections[$this->size],
'startdate' => usergetmidnight(time())
);
return $this->generator->create_course($courserecord, array('createsections' => true));
}
+1 -1
View File
@@ -23,7 +23,7 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
$string['healthnoproblemsfound'] = 'There is no health problem found!';
$string['healthnoproblemsfound'] = 'No health problems were found!';
$string['healthproblemsdetected'] = 'Health problems detected!';
$string['healthproblemsolution'] = 'Health problem solution';
$string['healthreturntomain'] = 'Continue';
@@ -91,19 +91,24 @@ class store implements \tool_log\log\store, \core\log\sql_select_reader {
// Replace the query with hardcoded mappings required for core.
list($selectwhere, $params, $sort) = self::replace_sql_legacy($selectwhere, $params, $sort);
$events = array();
$records = array();
try {
$records = $DB->get_records_select('log', $selectwhere, $params, $sort, '*', $limitfrom, $limitnum);
// A custom report + on the fly SQL rewriting = a possible exception.
$records = $DB->get_recordset_select('log', $selectwhere, $params, $sort, '*', $limitfrom, $limitnum);
} catch (\moodle_exception $ex) {
debugging("error converting legacy event data " . $ex->getMessage() . $ex->debuginfo, DEBUG_DEVELOPER);
return array();
}
$events = array();
foreach ($records as $data) {
$events[$data->id] = \logstore_legacy\event\legacy_logged::restore_legacy($data);
}
$records->close();
return $events;
}
@@ -44,11 +44,26 @@ class cleanup_task extends \core\task\scheduled_task {
public function execute() {
global $CFG, $DB;
// Delete old logs to save space (this might need a timer to slow it down...).
if (!empty($CFG->loglifetime)) { // Value in days.
$loglifetime = time(0) - ($CFG->loglifetime * 3600 * 24);
$DB->delete_records_select("log", "time < ?", array($loglifetime));
mtrace(" Deleted old legacy log records");
if (empty($CFG->loglifetime)) {
return;
}
$loglifetime = time() - ($CFG->loglifetime * 3600 * 24); // Value in days.
$lifetimep = array($loglifetime);
$start = time();
while ($min = $DB->get_field_select("log", "MIN(time)", "time < ?", $lifetimep)) {
// Break this down into chunks to avoid transaction for too long and generally thrashing database.
// Experiments suggest deleting one day takes up to a few seconds; probably a reasonable chunk size usually.
// If the cleanup has just been enabled, it might take e.g a month to clean the years of logs.
$params = array(min($min + 3600 * 24, $loglifetime));
$DB->delete_records_select("log", "time < ?", $params);
if (time() > $start + 300) {
// Do not churn on log deletion for too long each run.
break;
}
}
mtrace(" Deleted old legacy log records");
}
}
+1 -1
View File
@@ -28,7 +28,7 @@ $tasks = array(
array(
'classname' => '\logstore_legacy\task\cleanup_task',
'blocking' => 0,
'minute' => '*',
'minute' => 'R',
'hour' => '5',
'day' => '*',
'dayofweek' => '*',
@@ -273,4 +273,33 @@ class logstore_legacy_store_testcase extends advanced_testcase {
$this->assertContains($expectedreport, $reports);
}
}
/**
* Test that the legacy log cleanup works correctly.
*/
public function test_cleanup_task() {
global $DB;
$this->resetAfterTest();
// Create some records spread over various days; test multiple iterations in cleanup.
$record = (object) array('time' => time());
$DB->insert_record('log', $record);
$record->time -= 3600 * 24 * 30;
$DB->insert_record('log', $record);
$record->time -= 3600 * 24 * 30;
$DB->insert_record('log', $record);
$record->time -= 3600 * 24 * 30;
$DB->insert_record('log', $record);
$this->assertEquals(4, $DB->count_records('log'));
// Remove all logs before "today".
set_config('loglifetime', 1);
$this->expectOutputString(" Deleted old legacy log records\n");
$clean = new \logstore_legacy\task\cleanup_task();
$clean->execute();
$this->assertEquals(1, $DB->count_records('log'));
}
}
+1 -1
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2014111000; // The current plugin version (Date: YYYYMMDDXX).
$plugin->version = 2014111001; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2014110400; // Requires this Moodle version.
$plugin->component = 'logstore_legacy'; // Full name of the plugin (used for diagnostics).
@@ -72,7 +72,7 @@ class store implements \tool_log\log\writer, \core\log\sql_internal_reader {
$sort = self::tweak_sort_by_id($sort);
$events = array();
$records = $DB->get_records_select('logstore_standard_log', $selectwhere, $params, $sort, '*', $limitfrom, $limitnum);
$records = $DB->get_recordset_select('logstore_standard_log', $selectwhere, $params, $sort, '*', $limitfrom, $limitnum);
foreach ($records as $data) {
$extra = array('origin' => $data->origin, 'ip' => $data->ip, 'realuserid' => $data->realuserid);
@@ -94,6 +94,8 @@ class store implements \tool_log\log\writer, \core\log\sql_internal_reader {
}
}
$records->close();
return $events;
}
@@ -43,12 +43,29 @@ class cleanup_task extends \core\task\scheduled_task {
*/
public function execute() {
global $DB;
$loglifetime = (int)get_config('logstore_standard', 'loglifetime');
if ($loglifetime > 0) {
$loglifetime = time() - ($loglifetime * 3600 * 24); // Value in days.
$DB->delete_records_select("logstore_standard_log", "timecreated < ?", array($loglifetime));
mtrace(" Deleted old log records from standard store.");
if (empty($loglifetime) || $loglifetime < 0) {
return;
}
$loglifetime = time() - ($loglifetime * 3600 * 24); // Value in days.
$lifetimep = array($loglifetime);
$start = time();
while ($min = $DB->get_field_select("logstore_standard_log", "MIN(timecreated)", "timecreated < ?", $lifetimep)) {
// Break this down into chunks to avoid transaction for too long and generally thrashing database.
// Experiments suggest deleting one day takes up to a few seconds; probably a reasonable chunk size usually.
// If the cleanup has just been enabled, it might take e.g a month to clean the years of logs.
$params = array(min($min + 3600 * 24, $loglifetime));
$DB->delete_records_select("logstore_standard_log", "timecreated < ?", $params);
if (time() > $start + 300) {
// Do not churn on log deletion for too long each run.
break;
}
}
mtrace(" Deleted old log records from standard store.");
}
}
+1 -1
View File
@@ -28,7 +28,7 @@ $tasks = array(
array(
'classname' => '\logstore_standard\task\cleanup_task',
'blocking' => 0,
'minute' => '*',
'minute' => 'R',
'hour' => '4',
'day' => '*',
'dayofweek' => '*',
@@ -218,4 +218,41 @@ class logstore_standard_store_testcase extends advanced_testcase {
$this->assertContains($expectedreport, $reports);
}
}
/**
* Test that the standard log cleanup works correctly.
*/
public function test_cleanup_task() {
global $DB;
$this->resetAfterTest();
// Create some records spread over various days; test multiple iterations in cleanup.
$ctx = context_course::instance(1);
$record = (object) array(
'edulevel' => 0,
'contextid' => $ctx->id,
'contextlevel' => $ctx->contextlevel,
'contextinstanceid' => $ctx->instanceid,
'userid' => 1,
'timecreated' => time(),
);
$DB->insert_record('logstore_standard_log', $record);
$record->timecreated -= 3600 * 24 * 30;
$DB->insert_record('logstore_standard_log', $record);
$record->timecreated -= 3600 * 24 * 30;
$DB->insert_record('logstore_standard_log', $record);
$record->timecreated -= 3600 * 24 * 30;
$DB->insert_record('logstore_standard_log', $record);
$this->assertEquals(4, $DB->count_records('logstore_standard_log'));
// Remove all logs before "today".
set_config('loglifetime', 1, 'logstore_standard');
$this->expectOutputString(" Deleted old log records from standard store.\n");
$clean = new \logstore_standard\task\cleanup_task();
$clean->execute();
$this->assertEquals(1, $DB->count_records('logstore_standard_log'));
}
}
+1 -1
View File
@@ -24,6 +24,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2014111000; // The current plugin version (Date: YYYYMMDDXX).
$plugin->version = 2014111001; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2014110400; // Requires this Moodle version.
$plugin->component = 'logstore_standard'; // Full name of the plugin (used for diagnostics).
@@ -102,6 +102,10 @@ class manager {
try {
$this->client->login();
mtrace("Connection established.");
// Ensure that mailboxes exist.
$this->ensure_mailboxes_exist();
return true;
} catch (\Horde_Imap_Client_Exception $e) {
@@ -735,6 +739,27 @@ class manager {
return in_array($flag, $flags);
}
/**
* Ensure that all mailboxes exist.
*/
private function ensure_mailboxes_exist() {
$requiredmailboxes = array(
self::MAILBOX,
self::CONFIRMATIONFOLDER,
);
$existingmailboxes = $this->client->listMailboxes($requiredmailboxes);
foreach ($requiredmailboxes as $mailbox) {
if (isset($existingmailboxes[$mailbox])) {
// This mailbox was found.
continue;
}
mtrace("Unable to find the '{$mailbox}' mailbox - creating it.");
$this->client->createMailbox($mailbox);
}
}
/**
* Attempt to determine whether this message is a bulk message (e.g. automated reply).
*
+2 -2
View File
@@ -41,9 +41,9 @@ if ($hassiteconfig) {
$settings->add(new admin_setting_heading('messageinbound_mailboxconfiguration',
new lang_string('mailboxconfiguration', 'tool_messageinbound'),
new lang_string('messageinboundmailboxconfiguration_desc', 'tool_messageinbound'), ''));
$settings->add(new admin_setting_configtext('messageinbound_mailbox',
$settings->add(new admin_setting_configtext_with_maxlength('messageinbound_mailbox',
new lang_string('mailbox', 'tool_messageinbound'),
null, '', PARAM_RAW));
null, '', PARAM_RAW, null, 15));
$settings->add(new admin_setting_configtext('messageinbound_domain',
new lang_string('domain', 'tool_messageinbound'),
null, '', PARAM_RAW));
@@ -215,15 +215,20 @@ class rules extends \table_sql implements \renderable {
return false;
}
$orderby = 'visible DESC, sortorder ASC';
$options = array(0 => get_string('site'));
if ($courses = get_user_capability_course('tool/monitor:subscribe', null, true, 'fullname', $orderby)) {
$options = array();
if (has_capability('tool/monitor:subscribe', \context_system::instance())) {
$options[0] = get_string('site');
}
if ($courses = get_user_capability_course('tool/monitor:subscribe', null, true, 'fullname, visible', $orderby)) {
foreach ($courses as $course) {
$options[$course->id] = format_string($course->fullname, true,
array('context' => \context_course::instance($course->id)));
$coursecontext = \context_course::instance($course->id);
if ($course->visible || has_capability('moodle/course:viewhiddencourses', $coursecontext)) {
$options[$course->id] = format_string($course->fullname, true, array('context' => $coursecontext));
}
}
}
$url = new \moodle_url('/admin/tool/monitor/index.php');
$select = new \single_select($url, 'courseid', $options, $this->courseid);
$select = new \single_select($url, 'courseid', $options, $this->courseid, array());
$select->set_label(get_string('selectacourse', 'tool_monitor'));
return $select;
}
+1
View File
@@ -35,6 +35,7 @@ $confirm = optional_param('confirm', false, PARAM_BOOL);
// Validate course id.
if (empty($courseid)) {
require_login();
require_capability('tool/monitor:subscribe', context_system::instance());
} else {
// They might want to see rules for this course.
$course = get_course($courseid);
+1 -1
View File
@@ -10,7 +10,7 @@ Feature: tool_monitor_rule
| Course 1 | C1 |
And the following "users" exist:
| username | firstname | lastname | email |
| teacher1 | Teacher | 1 | teacher1@asd.com |
| teacher1 | Teacher | 1 | teacher1@example.com |
And the following "course enrolments" exist:
| user | course | role |
| teacher1 | C1 | editingteacher |
@@ -11,8 +11,8 @@ Feature: tool_monitor_subscriptions
| Course 2 | C2 |
And the following "users" exist:
| username | firstname | lastname | email |
| teacher1 | Teacher | 1 | teacher1@asd.com |
| teacher2 | Teacher | 2 | teacher2@asd.com |
| teacher1 | Teacher | 1 | teacher1@example.com |
| teacher2 | Teacher | 2 | teacher2@example.com |
And the following "course enrolments" exist:
| user | course | role |
| teacher1 | C1 | editingteacher |
@@ -150,8 +150,6 @@ Feature: tool_monitor_subscriptions
And I should see "You can subscribe to rules from the Event monitoring page."
And I click on "//a[text()='Event monitoring']" "xpath_element"
And the field "courseid" matches value "Course 1"
And I set the field "courseid" to "Site"
And I should not see "You can manage rules from the Event monitoring rules page."
And I log out
And I log in as "teacher2"
And I follow "Course 1"
+30 -18
View File
@@ -109,25 +109,29 @@ if ($execute = $options['execute']) {
$predbqueries = $DB->perf_get_queries();
$pretime = microtime(true);
mtrace("Scheduled task: " . $task->get_name());
// NOTE: it would be tricky to move this code to \core\task\manager class,
// because we want to do detailed error reporting.
$cronlockfactory = \core\lock\lock_config::get_lock_factory('cron');
if (!$cronlock = $cronlockfactory->get_lock('core_cron', 10)) {
mtrace('Cannot obtain cron lock');
exit(129);
}
if (!$lock = $cronlockfactory->get_lock('\\' . get_class($task), 10)) {
$cronlock->release();
mtrace('Cannot obtain task lock');
exit(130);
}
$task->set_lock($lock);
if (!$task->is_blocking()) {
$cronlock->release();
} else {
$task->set_cron_lock($cronlock);
}
try {
mtrace("Scheduled task: " . $task->get_name());
// NOTE: it would be tricky to move this code to \core\task\manager class,
// because we want to do detailed error reporting.
$cronlockfactory = \core\lock\lock_config::get_lock_factory('cron');
if (!$cronlock = $cronlockfactory->get_lock('core_cron', 10)) {
mtrace('Cannot obtain cron lock');
exit(129);
}
if (!$lock = $cronlockfactory->get_lock('\\' . get_class($task), 10)) {
mtrace('Cannot obtain task lock');
exit(130);
}
$task->set_lock($lock);
if (!$task->is_blocking()) {
$cronlock->release();
} else {
$task->set_cron_lock($cronlock);
}
get_mailer('buffer');
$task->execute();
if (isset($predbqueries)) {
@@ -145,6 +149,14 @@ if ($execute = $options['execute']) {
mtrace("... used " . ($DB->perf_get_queries() - $predbqueries) . " dbqueries");
mtrace("... used " . (microtime(true) - $pretime) . " seconds");
mtrace("Task failed: " . $e->getMessage());
if ($CFG->debugdeveloper) {
if (!empty($e->debuginfo)) {
mtrace("Debug info:");
mtrace($e->debuginfo);
}
mtrace("Backtrace:");
mtrace(format_backtrace($e->getTrace(), true));
}
\core\task\manager::scheduled_task_failed($task);
get_mailer('close');
exit(1);
+20 -4
View File
@@ -402,8 +402,13 @@ function uu_pre_process_custom_profile_data($data) {
function uu_check_custom_profile_data(&$data) {
global $CFG, $DB;
$noerror = true;
// find custom profile fields and check if data needs to converted.
$testuserid = null;
if (!empty($data['username'])) {
if (preg_match('/id=(.*)"/i', $data['username'], $result)) {
$testuserid = $result[1];
}
}
// Find custom profile fields and check if data needs to converted.
foreach ($data as $key => $value) {
if (preg_match('/^profile_field_/', $key)) {
$shortname = str_replace('profile_field_', '', $key);
@@ -413,13 +418,24 @@ function uu_check_custom_profile_data(&$data) {
$newfield = 'profile_field_'.$field->datatype;
$formfield = new $newfield($field->id, 0);
if (method_exists($formfield, 'convert_external_data') &&
is_null($formfield->convert_external_data($value))) {
is_null($formfield->convert_external_data($value))) {
$data['status'][] = get_string('invaliduserfield', 'error', $shortname);
$noerror = false;
}
// Check for duplicate value.
if (method_exists($formfield, 'edit_validate_field') ) {
$testuser = new stdClass();
$testuser->{$key} = $value;
$testuser->id = $testuserid;
$err = $formfield->edit_validate_field($testuser);
if (!empty($err[$key])) {
$data['status'][] = $err[$key].' ('.$key.')';
$noerror = false;
}
}
}
}
}
}
return $noerror;
}
}
+2
View File
@@ -63,6 +63,8 @@ echo '<form action="upgradesettings.php" method="post" id="adminsettings">';
echo '<div>';
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
echo '<input type="hidden" name="return" value="'.$return.'" />';
// HACK to prevent browsers from automatically inserting the user's password into the wrong fields.
echo prevent_form_autofill_password();
echo '<fieldset>';
echo '<div class="clearer"><!-- --></div>';
echo $newsettingshtml;
+12 -3
View File
@@ -78,8 +78,12 @@
echo $OUTPUT->header();
$fullname = fullname($user, true);
echo $OUTPUT->heading(get_string('deleteuser', 'admin'));
$optionsyes = array('delete'=>$delete, 'confirm'=>md5($delete), 'sesskey'=>sesskey());
echo $OUTPUT->confirm(get_string('deletecheckfull', '', "'$fullname'"), new moodle_url($returnurl, $optionsyes), $returnurl);
$deleteurl = new moodle_url($returnurl, $optionsyes);
$deletebutton = new single_button($deleteurl, get_string('delete'), 'post');
echo $OUTPUT->confirm(get_string('deletecheckfull', '', "'$fullname'"), $deletebutton, $returnurl);
echo $OUTPUT->footer();
die;
} else if (data_submitted() and !$user->deleted) {
@@ -190,9 +194,14 @@
// We don't need to check the fullnamedisplay setting here as the fullname function call further down has
// the override parameter set to true.
$fullnamesetting = $CFG->alternativefullnameformat;
// If we are using language or it is empty, then retrieve all of the user's names.
// If we are using language or it is empty, then retrieve the default user names of just 'firstname' and 'lastname'.
if ($fullnamesetting == 'language' || empty($fullnamesetting)) {
$fullnamesetting = implode(' ', $allusernamefields);
// Set $a variables to return 'firstname' and 'lastname'.
$a = new stdClass();
$a->firstname = 'firstname';
$a->lastname = 'lastname';
// Getting the fullname display will ensure that the order in the language file is maintained.
$fullnamesetting = get_string('fullnamedisplay', null, $a);
}
// Order in string will ensure that the name columns are in the correct order.
+1 -1
View File
@@ -187,7 +187,7 @@ class auth_plugin_cas extends auth_plugin_ldap {
}
// If Moodle is configured to use a proxy, phpCAS needs some curl options set.
if (!empty($CFG->proxyhost) && !is_proxybypass($this->config->hostname)) {
if (!empty($CFG->proxyhost) && !is_proxybypass(phpCAS::getServerLoginURL())) {
phpCAS::setExtraCurlOption(CURLOPT_PROXY, $CFG->proxyhost);
if (!empty($CFG->proxyport)) {
phpCAS::setExtraCurlOption(CURLOPT_PROXYPORT, $CFG->proxyport);
+61 -8
View File
@@ -58,6 +58,11 @@ class auth_plugin_db extends auth_plugin_base {
function user_login($username, $password) {
global $CFG, $DB;
if ($this->is_configured() === false) {
debugging(get_string('auth_notconfigured', 'auth', $this->authtype));
return false;
}
$extusername = core_text::convert($username, 'utf-8', $this->config->extencoding);
$extpassword = core_text::convert($password, 'utf-8', $this->config->extencoding);
@@ -138,8 +143,13 @@ class auth_plugin_db extends auth_plugin_base {
* Connect to external database.
*
* @return ADOConnection
* @throws moodle_exception
*/
function db_init() {
if ($this->is_configured() === false) {
throw new moodle_exception('auth_dbcantconnect', 'auth_db');
}
// Connect to the external database (forcing new connection).
$authdb = ADONewConnection($this->config->type);
if (!empty($this->config->debugauthdb)) {
@@ -193,18 +203,21 @@ class auth_plugin_db extends auth_plugin_base {
if ($selectfields) {
$select = array();
foreach ($selectfields as $localname=>$externalname) {
$select[] = "$externalname AS $localname";
$select[] = "$externalname";
}
$select = implode(', ', $select);
$sql = "SELECT $select
FROM {$this->config->table}
WHERE {$this->config->fielduser} = '".$this->ext_addslashes($extusername)."'";
if ($rs = $authdb->Execute($sql)) {
if (!$rs->EOF) {
$fields_obj = $rs->FetchObj();
$fields_obj = (object)array_change_key_case((array)$fields_obj , CASE_LOWER);
foreach ($selectfields as $localname=>$externalname) {
$result[$localname] = core_text::convert($fields_obj->{$localname}, $this->config->extencoding, 'utf-8');
$fields = $rs->FetchRow();
// Convert the associative array to an array of its values so we don't have to worry about the case of its keys.
$fields = array_values($fields);
foreach (array_keys($selectfields) as $index => $localname) {
$value = $fields[$index];
$result[$localname] = core_text::convert($value, $this->config->extencoding, 'utf-8');
}
}
$rs->Close();
@@ -301,6 +314,7 @@ class auth_plugin_db extends auth_plugin_base {
$updateuser = new stdClass();
$updateuser->id = $user->id;
$updateuser->suspended = 1;
$updateuser = $this->clean_data($updateuser);
user_update_user($updateuser, false);
$trace->output(get_string('auth_dbsuspenduser', 'auth_db', array('name'=>$user->username, 'id'=>$user->id)), 1);
}
@@ -387,6 +401,7 @@ class auth_plugin_db extends auth_plugin_base {
$updateuser = new stdClass();
$updateuser->id = $olduser->id;
$updateuser->suspended = 0;
$updateuser = $this->clean_data($updateuser);
user_update_user($updateuser);
$trace->output(get_string('auth_dbreviveduser', 'auth_db', array('name' => $username,
'id' => $olduser->id)), 1);
@@ -409,6 +424,7 @@ class auth_plugin_db extends auth_plugin_base {
$trace->output(get_string('auth_dbinsertuserduplicate', 'auth_db', array('username'=>$user->username, 'auth'=>$collision->auth)), 1);
continue;
}
$user = $this->clean_data($user);
try {
$id = user_create_user($user, false); // It is truly a new user.
$trace->output(get_string('auth_dbinsertuser', 'auth_db', array('name'=>$user->username, 'id'=>$id)), 1);
@@ -463,15 +479,15 @@ class auth_plugin_db extends auth_plugin_base {
$authdb = $this->db_init();
// Fetch userlist.
$rs = $authdb->Execute("SELECT {$this->config->fielduser} AS username
$rs = $authdb->Execute("SELECT {$this->config->fielduser}
FROM {$this->config->table} ");
if (!$rs) {
print_error('auth_dbcantconnect','auth_db');
} else if (!$rs->EOF) {
while ($rec = $rs->FetchRow()) {
$rec = (object)array_change_key_case((array)$rec , CASE_LOWER);
array_push($result, $rec->username);
$rec = array_change_key_case((array)$rec, CASE_LOWER);
array_push($result, $rec[strtolower($this->config->fielduser)]);
}
}
@@ -550,6 +566,7 @@ class auth_plugin_db extends auth_plugin_base {
}
if ($needsupdate) {
require_once($CFG->dirroot . '/user/lib.php');
$updateuser = $this->clean_data($updateuser);
user_update_user($updateuser);
}
return $DB->get_record('user', array('id'=>$userid, 'deleted'=>0));
@@ -643,6 +660,18 @@ class auth_plugin_db extends auth_plugin_base {
return ($this->config->passtype === 'internal');
}
/**
* Returns false if this plugin is enabled but not configured.
*
* @return bool
*/
public function is_configured() {
if (!empty($this->config->type)) {
return true;
}
return false;
}
/**
* Indicates if moodle should automatically update internal user
* records with data from external sources using the information
@@ -863,6 +892,30 @@ class auth_plugin_db extends auth_plugin_base {
error_reporting($CFG->debug);
ob_end_flush();
}
/**
* Clean the user data that comes from an external database.
*
* @param array $user the user data to be validated against properties definition.
* @return stdClass $user the cleaned user data.
*/
public function clean_data($user) {
if (empty($user)) {
return $user;
}
foreach ($user as $field => $value) {
// Get the property parameter type and do the cleaning.
try {
$property = core_user::get_property_definition($field);
$user->$field = clean_param($value, $property['type']);
} catch (coding_exception $e) {
debugging("The property '$field' could not be cleaned.", DEBUG_DEVELOPER);
}
}
return $user;
}
}
+73
View File
@@ -374,4 +374,77 @@ class auth_db_testcase extends advanced_testcase {
$this->cleanup_auth_database();
}
/**
* Testing the clean_data() method.
*/
public function test_clean_data() {
global $DB;
$this->resetAfterTest(false);
$this->preventResetByRollback();
$this->init_auth_database();
$auth = get_auth_plugin('db');
$auth->db_init();
// Create users on external table.
$extdbuser1 = (object)array('name'=>'u1', 'pass'=>'heslo', 'email'=>'u1@example.com');
$extdbuser1->id = $DB->insert_record('auth_db_users', $extdbuser1);
// User with malicious data on the name.
$extdbuser2 = (object)array('name'=>'user<script>alert(1);</script>xss', 'pass'=>'heslo', 'email'=>'xssuser@example.com');
$extdbuser2->id = $DB->insert_record('auth_db_users', $extdbuser2);
$trace = new null_progress_trace();
// Let's test user sync make sure still works as expected..
$auth->sync_users($trace, true);
// Get the user on moodle user table.
$user2 = $DB->get_record('user', array('email'=> $extdbuser2->email, 'auth'=>'db'));
// The malicious code should be sanitized.
$this->assertEquals($user2->username, 'userscriptalert1scriptxss');
$this->assertNotEquals($user2->username, $extdbuser2->name);
// User with correct data, should be equal to external db.
$user1 = $DB->get_record('user', array('email'=> $extdbuser1->email, 'auth'=>'db'));
$this->assertEquals($extdbuser1->name, $user1->username);
$this->assertEquals($extdbuser1->email, $user1->email);
// Now, let's update the name.
$extdbuser2->name = 'user no xss anymore';
$DB->update_record('auth_db_users', $extdbuser2);
// Run sync again to update the user data.
$auth->sync_users($trace, true);
// The user information should be updated.
$user2 = $DB->get_record('user', array('username' => 'usernoxssanymore', 'auth' => 'db'));
// The spaces should be removed, as it's the username.
$this->assertEquals($user2->username, 'usernoxssanymore');
// Now let's test just the clean_data() method isolated.
// Testing PARAM_USERNAME, PARAM_NOTAGS, PARAM_RAW_TRIMMED and others.
$user3 = new stdClass();
$user3->firstname = 'John <script>alert(1)</script> Doe';
$user3->username = 'john%#&~%*_doe';
$user3->email = ' john@testing.com ';
$user3->deleted = 'no';
$user3->description = '<b>A description <script>alert(123)</script>about myself.</b>';
$user3cleaned = $auth->clean_data($user3);
// Expected results.
$this->assertEquals($user3cleaned->firstname, 'John alert(1) Doe');
$this->assertEquals($user3cleaned->email, 'john@testing.com');
$this->assertEquals($user3cleaned->deleted, 0);
$this->assertEquals($user3->description, '<b>A description about myself.</b>');
$this->assertEquals($user3->username, 'john_doe');
// Try to clean an invalid property (fullname).
$user3->fullname = 'John Doe';
$auth->clean_data($user3);
$this->assertDebuggingCalled("The property 'fullname' could not be cleaned.");
$this->cleanup_auth_database();
}
}
+4 -4
View File
@@ -139,12 +139,12 @@ class auth_plugin_email extends auth_plugin_base {
$user = get_complete_user_data('username', $username);
if (!empty($user)) {
if ($user->confirmed) {
return AUTH_CONFIRM_ALREADY;
} else if ($user->auth != $this->authtype) {
if ($user->auth != $this->authtype) {
return AUTH_CONFIRM_ERROR;
} else if ($user->secret == $confirmsecret && $user->confirmed) {
return AUTH_CONFIRM_ALREADY;
} else if ($user->secret == $confirmsecret) { // They have provided the secret key to get in
$DB->set_field("user", "confirmed", 1, array("id"=>$user->id));
if ($user->firstaccess == 0) {
+1 -1
View File
@@ -24,7 +24,7 @@
$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'] = 'Adds a visual/audio confirmation form element to the sign-up page for email self-registering users. This protects your site against spammers and contributes to a worthwhile cause. See http://www.google.com/recaptcha for more details.';
$string['auth_emailrecaptcha_key'] = 'Enable reCAPTCHA element';
$string['auth_emailsettings'] = 'Settings';
$string['pluginname'] = 'Email-based self-registration';
+22 -15
View File
@@ -534,6 +534,7 @@ class auth_plugin_ldap extends auth_plugin_base {
*
* @param object $user new user object
* @param boolean $notify print notice with link and terminate
* @return boolean success
*/
function user_signup($user, $notify=true) {
global $CFG, $DB, $PAGE, $OUTPUT;
@@ -604,12 +605,12 @@ class auth_plugin_ldap extends auth_plugin_base {
$user = get_complete_user_data('username', $username);
if (!empty($user)) {
if ($user->confirmed) {
return AUTH_CONFIRM_ALREADY;
} else if ($user->auth != $this->authtype) {
if ($user->auth != $this->authtype) {
return AUTH_CONFIRM_ERROR;
} else if ($user->secret == $confirmsecret && $user->confirmed) {
return AUTH_CONFIRM_ALREADY;
} else if ($user->secret == $confirmsecret) { // They have provided the secret key to get in
if (!$this->user_activate($username)) {
return AUTH_CONFIRM_FAIL;
@@ -889,7 +890,7 @@ class auth_plugin_ldap extends auth_plugin_base {
foreach ($users as $user) {
echo "\t"; print_string('auth_dbupdatinguser', 'auth_db', array('name'=>$user->username, 'id'=>$user->id));
if (!$this->update_user_record($user->username, $updatekeys)) {
if (!$this->update_user_record($user->username, $updatekeys, true)) {
echo ' - '.get_string('skipped');
}
echo "\n";
@@ -987,8 +988,11 @@ class auth_plugin_ldap extends auth_plugin_base {
*
* @param string $username username
* @param boolean $updatekeys true to update the local record with the external LDAP values.
* @param bool $triggerevent set false if user_updated event should not be triggered.
* This will not affect user_password_updated event triggering.
* @return stdClass|bool updated user record or false if there is no new info to update.
*/
function update_user_record($username, $updatekeys = false) {
function update_user_record($username, $updatekeys = false, $triggerevent = false) {
global $CFG, $DB;
// Just in case check text case
@@ -1030,7 +1034,7 @@ class auth_plugin_ldap extends auth_plugin_base {
}
}
}
user_update_user($newuser, false, false);
user_update_user($newuser, false, $triggerevent);
}
} else {
return false;
@@ -1638,7 +1642,7 @@ class auth_plugin_ldap extends auth_plugin_base {
if (($_SERVER['REQUEST_METHOD'] === 'GET' // Only on initial GET of loginpage
|| ($_SERVER['REQUEST_METHOD'] === 'POST'
&& (get_referer() != strip_querystring(qualified_me()))))
&& (get_local_referer() != strip_querystring(qualified_me()))))
// Or when POSTed from another place
// See MDL-14071
&& !empty($this->config->ntlmsso_enabled) // SSO enabled
@@ -1649,12 +1653,15 @@ class auth_plugin_ldap extends auth_plugin_base {
// First, let's remember where we were trying to get to before we got here
if (empty($SESSION->wantsurl)) {
$SESSION->wantsurl = (array_key_exists('HTTP_REFERER', $_SERVER) &&
$_SERVER['HTTP_REFERER'] != $CFG->wwwroot &&
$_SERVER['HTTP_REFERER'] != $CFG->wwwroot.'/' &&
$_SERVER['HTTP_REFERER'] != $CFG->httpswwwroot.'/login/' &&
$_SERVER['HTTP_REFERER'] != $CFG->httpswwwroot.'/login/index.php')
? $_SERVER['HTTP_REFERER'] : NULL;
$SESSION->wantsurl = null;
$referer = get_local_referer(false);
if ($referer &&
$referer != $CFG->wwwroot &&
$referer != $CFG->wwwroot . '/' &&
$referer != $CFG->httpswwwroot . '/login/' &&
$referer != $CFG->httpswwwroot . '/login/index.php') {
$SESSION->wantsurl = $referer;
}
}
// Now start the whole NTLM machinery.
@@ -1679,7 +1686,7 @@ class auth_plugin_ldap extends auth_plugin_base {
// we don't want to use at all. As we can't get rid of it, just point
// $SESSION->wantsurl to $CFG->wwwroot (after all, we came from there).
if (empty($SESSION->wantsurl)
&& (get_referer() == $CFG->httpswwwroot.'/auth/ldap/ntlmsso_finish.php')) {
&& (get_local_referer() == $CFG->httpswwwroot.'/auth/ldap/ntlmsso_finish.php')) {
$SESSION->wantsurl = $CFG->wwwroot;
}
+2 -2
View File
@@ -47,7 +47,7 @@ $string['auth_ldap_expiration_desc'] = 'Select No to disable expired password ch
$string['auth_ldap_expiration_key'] = 'Expiration';
$string['auth_ldap_expiration_warning_desc'] = 'Number of days before password expiration warning is issued.';
$string['auth_ldap_expiration_warning_key'] = 'Expiration warning';
$string['auth_ldap_expireattr_desc'] = 'Optional: overrides ldap-attribute that stores password expiration time';
$string['auth_ldap_expireattr_desc'] = 'Optional: Overrides the LDAP attribute that stores password expiration time.';
$string['auth_ldap_expireattr_key'] = 'Expiration attribute';
$string['auth_ldapextrafields'] = 'These fields are optional. You can choose to pre-fill some Moodle user fields with information from the <b>LDAP fields</b> that you specify here. <p>If you leave these fields blank, then nothing will be transferred from LDAP and Moodle defaults will be used instead.</p><p>In either case, the user will be able to edit all of these fields after they log in.</p>';
$string['auth_ldap_graceattr_desc'] = 'Optional: Overrides gracelogin attribute';
@@ -71,7 +71,7 @@ $string['auth_ldap_noconnect_all'] = 'LDAP-module cannot connect to any servers:
$string['auth_ldap_noextension'] = '<em>The PHP LDAP module does not seem to be present. Please ensure it is installed and enabled if you want to use this authentication plugin.</em>';
$string['auth_ldap_no_mbstring'] = 'You need the mbstring extension to create users in Active Directory.';
$string['auth_ldapnotinstalled'] = 'Cannot use LDAP authentication. The PHP LDAP module is not installed.';
$string['auth_ldap_objectclass'] = 'Optional: Overrides objectClass used to name/search users on ldap_user_type. Usually you dont need to chage this.';
$string['auth_ldap_objectclass'] = 'Optional: Overrides objectClass used to name/search users on ldap_user_type. Usually you don\'t need to change this.';
$string['auth_ldap_objectclass_key'] = 'Object class';
$string['auth_ldap_opt_deref'] = 'Determines how aliases are handled during search. Select one of the following values: "No" (LDAP_DEREF_NEVER) or "Yes" (LDAP_DEREF_ALWAYS)';
$string['auth_ldap_opt_deref_key'] = 'Dereference aliases';
+67 -1
View File
@@ -136,9 +136,25 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
$auth = get_auth_plugin('ldap');
ob_start();
$sink = $this->redirectEvents();
$auth->sync_users(true);
$events = $sink->get_events();
$sink->close();
ob_end_clean();
// Check events, 5 users created with 2 users having roles.
$this->assertCount(7, $events);
foreach ($events as $index => $event) {
$usercreatedindex = array(0, 2, 4, 5, 6);
$roleassignedindex = array (1, 3);
if (in_array($index, $usercreatedindex)) {
$this->assertInstanceOf('\core\event\user_created', $event);
}
if (in_array($index, $roleassignedindex)) {
$this->assertInstanceOf('\core\event\role_assigned', $event);
}
}
$this->assertEquals(5, $DB->count_records('user', array('auth'=>'ldap')));
$this->assertEquals(2, $DB->count_records('role_assignments'));
$this->assertEquals(2, $DB->count_records('role_assignments', array('roleid'=>$creatorrole->id)));
@@ -150,9 +166,15 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
$this->delete_ldap_user($connection, $topdn, 1);
ob_start();
$sink = $this->redirectEvents();
$auth->sync_users(true);
$events = $sink->get_events();
$sink->close();
ob_end_clean();
// Check events, no new event.
$this->assertCount(0, $events);
$this->assertEquals(5, $DB->count_records('user', array('auth'=>'ldap')));
$this->assertEquals(0, $DB->count_records('user', array('suspended'=>1)));
$this->assertEquals(0, $DB->count_records('user', array('deleted'=>1)));
@@ -166,9 +188,17 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
$auth = get_auth_plugin('ldap');
ob_start();
$sink = $this->redirectEvents();
$auth->sync_users(true);
$events = $sink->get_events();
$sink->close();
ob_end_clean();
// Check events, 1 user got updated.
$this->assertCount(1, $events);
$event = reset($events);
$this->assertInstanceOf('\core\event\user_updated', $event);
$this->assertEquals(5, $DB->count_records('user', array('auth'=>'ldap')));
$this->assertEquals(0, $DB->count_records('user', array('auth'=>'nologin', 'username'=>'username1')));
$this->assertEquals(1, $DB->count_records('user', array('auth'=>'ldap', 'suspended'=>'1', 'username'=>'username1')));
@@ -179,9 +209,17 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
$this->create_ldap_user($connection, $topdn, 1);
ob_start();
$sink = $this->redirectEvents();
$auth->sync_users(true);
$events = $sink->get_events();
$sink->close();
ob_end_clean();
// Check events, 1 user got updated.
$this->assertCount(1, $events);
$event = reset($events);
$this->assertInstanceOf('\core\event\user_updated', $event);
$this->assertEquals(5, $DB->count_records('user', array('auth'=>'ldap')));
$this->assertEquals(0, $DB->count_records('user', array('suspended'=>1)));
$this->assertEquals(0, $DB->count_records('user', array('deleted'=>1)));
@@ -191,9 +229,17 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
$DB->set_field('user', 'auth', 'nologin', array('username'=>'username1'));
ob_start();
$sink = $this->redirectEvents();
$auth->sync_users(true);
$events = $sink->get_events();
$sink->close();
ob_end_clean();
// Check events, 1 user got updated.
$this->assertCount(1, $events);
$event = reset($events);
$this->assertInstanceOf('\core\event\user_updated', $event);
$this->assertEquals(5, $DB->count_records('user', array('auth'=>'ldap')));
$this->assertEquals(0, $DB->count_records('user', array('suspended'=>1)));
$this->assertEquals(0, $DB->count_records('user', array('deleted'=>1)));
@@ -208,9 +254,19 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
$this->delete_ldap_user($connection, $topdn, 1);
ob_start();
$sink = $this->redirectEvents();
$auth->sync_users(true);
$events = $sink->get_events();
$sink->close();
ob_end_clean();
// Check events, 2 events role_unassigned and user_deleted.
$this->assertCount(2, $events);
$event = array_pop($events);
$this->assertInstanceOf('\core\event\user_deleted', $event);
$event = array_pop($events);
$this->assertInstanceOf('\core\event\role_unassigned', $event);
$this->assertEquals(5, $DB->count_records('user', array('auth'=>'ldap')));
$this->assertEquals(0, $DB->count_records('user', array('username'=>'username1')));
$this->assertEquals(0, $DB->count_records('user', array('suspended'=>1)));
@@ -221,9 +277,19 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
$this->create_ldap_user($connection, $topdn, 1);
ob_start();
$sink = $this->redirectEvents();
$auth->sync_users(true);
$events = $sink->get_events();
$sink->close();
ob_end_clean();
// Check events, 2 events role_assigned and user_created.
$this->assertCount(2, $events);
$event = array_pop($events);
$this->assertInstanceOf('\core\event\role_assigned', $event);
$event = array_pop($events);
$this->assertInstanceOf('\core\event\user_created', $event);
$this->assertEquals(6, $DB->count_records('user', array('auth'=>'ldap')));
$this->assertEquals(1, $DB->count_records('user', array('username'=>'username1')));
$this->assertEquals(0, $DB->count_records('user', array('suspended'=>1)));
@@ -296,7 +362,7 @@ class auth_ldap_plugin_testcase extends advanced_testcase {
'lastnamephonetic' => '最後のお名前のテスト一号',
'firstnamephonetic' => 'お名前のテスト一号',
'alternatename' => 'Alternate Name User Test 1',
'email' => 'usersignuptest1@email.com',
'email' => 'usersignuptest1@example.com',
'description' => 'This is a description for user 1',
'city' => 'Perth',
'country' => 'au',
+4
View File
@@ -0,0 +1,4 @@
This files describes API changes in the auth_ldap code.
=== 2.8.7 ===
* auth_plugin_ldap::update_user_record() accepts an additional (optional) param
to trigger update event.
+1 -1
View File
@@ -60,7 +60,7 @@ if (!isset($config->changepasswordurl)) {
</tr>
<tr valign="top" >
<td align="right"><?php echo html_writer::label(get_string('auth_radiustype_key', 'auth_radius'), 'menuradiustype'); ?>: </td>
<td align="right"><?php echo html_writer::label(get_string('auth_radiustype_key', 'auth_radius') . ':', 'menuradiustype'); ?> </td>
<td>
<?php
+2 -1
View File
@@ -210,7 +210,8 @@ class auth_plugin_shibboleth extends auth_plugin_base {
}
// Overwrite redirect in order to send user to Shibboleth logout page and let him return back
$redirect = $this->config->logout_handler.'?return='.urlencode($temp_redirect);
$redirecturl = new moodle_url($this->config->logout_handler, array('return' => $temp_redirect));
$redirect = $redirecturl->out();
}
}
+1 -1
View File
@@ -10,7 +10,7 @@
// Support for WAYFless URLs.
$target = optional_param('target', '', PARAM_LOCALURL);
if (!empty($target)) {
if (!empty($target) && empty($SESSION->wantsurl)) {
$SESSION->wantsurl = $target;
}
+2 -2
View File
@@ -16,7 +16,7 @@ Feature: Authentication
Scenario: Log in as an existing admin user filling the form
Given the following "users" exist:
| username | password | firstname | lastname | email |
| testuser | testuser | Test | User | moodle@moodlemoodle.com |
| testuser | testuser | Test | User | moodle@example.com |
And I am on homepage
When I follow "Log in"
And I set the field "Username" to "testuser"
@@ -27,7 +27,7 @@ Feature: Authentication
Scenario: Log in as an unexisting user filling the form
Given the following "users" exist:
| username | password | firstname | lastname | email |
| testuser | testuser | Test | User | moodle@moodlemoodle.com |
| testuser | testuser | Test | User | moodle@example.com |
And I am on homepage
When I follow "Log in"
And I set the field "Username" to "testuser"
+16 -2
View File
@@ -328,7 +328,14 @@ class tree extends tree_node {
// Loop through all valid children.
foreach ($this->children as $index => $child) {
if (!$child->is_applied_to_user_lists()) {
continue;
if ($andoperator) {
continue;
} else {
// OR condition with one option that doesn't restrict user
// lists = everyone is allowed.
$anyconditions = false;
break;
}
}
$childresult = $child->filter_user_list($users, $innernot, $info, $checker);
if ($andoperator) {
@@ -359,7 +366,14 @@ class tree extends tree_node {
$childresults = array();
foreach ($this->children as $index => $child) {
if (!$child->is_applied_to_user_lists()) {
continue;
if ($andoperator) {
continue;
} else {
// OR condition with one option that doesn't restrict user
// lists = everyone is allowed.
$childresults = array();
break;
}
}
$childresult = $child->get_user_list_sql($innernot, $info, $onlyactive);
if ($childresult[0]) {
@@ -53,8 +53,8 @@ class condition extends \core_availability\condition {
*/
public function __construct($structure) {
// Get cmid.
if (isset($structure->cm) && is_int($structure->cm)) {
$this->cmid = $structure->cm;
if (isset($structure->cm) && is_number($structure->cm)) {
$this->cmid = (int)$structure->cm;
} else {
throw new \coding_exception('Missing or invalid ->cm for completion condition');
}
@@ -16,11 +16,9 @@ Feature: availability_completion
| user | course | role |
| teacher1 | C1 | editingteacher |
| student1 | C1 | student |
And I log in as "admin"
And I set the following administration settings values:
| Enable conditional access | 1 |
| Enable completion tracking | 1 |
And I log out
And the following config values are set as admin:
| enableavailability | 1 |
| enablecompletion | 1 |
@javascript
Scenario: Test condition
@@ -234,4 +234,68 @@ class condition extends \core_availability\condition {
}
return false;
}
/**
* Changes all date restrictions on a course by the specified shift amount.
* Used by the course reset feature.
*
* @param int $courseid Course id
* @param int $timeshift Offset in seconds
*/
public static function update_all_dates($courseid, $timeshift) {
global $DB;
$modinfo = get_fast_modinfo($courseid);
$anychanged = false;
// Adjust dates from all course modules.
foreach ($modinfo->cms as $cm) {
if (!$cm->availability) {
continue;
}
$info = new \core_availability\info_module($cm);
$tree = $info->get_availability_tree();
$dates = $tree->get_all_children('availability_date\condition');
$changed = false;
foreach ($dates as $date) {
$date->time += $timeshift;
$changed = true;
}
// Save the updated course module.
if ($changed) {
$DB->set_field('course_modules', 'availability', json_encode($tree->save()),
array('id' => $cm->id));
$anychanged = true;
}
}
// Adjust dates from all course sections.
foreach ($modinfo->get_section_info_all() as $section) {
if (!$section->availability) {
continue;
}
$info = new \core_availability\info_section($section);
$tree = $info->get_availability_tree();
$dates = $tree->get_all_children('availability_date\condition');
$changed = false;
foreach ($dates as $date) {
$date->time += $timeshift;
$changed = true;
}
// Save the updated course module.
if ($changed) {
$DB->set_field('course_sections', 'availability', json_encode($tree->save()),
array('id' => $section->id));
$anychanged = true;
}
}
// Ensure course cache is cleared if required.
if ($anychanged) {
rebuild_course_cache($courseid, true);
}
}
}
@@ -16,10 +16,8 @@ Feature: availability_date
| user | course | role |
| teacher1 | C1 | editingteacher |
| student1 | C1 | student |
And I log in as "admin"
And I set the following administration settings values:
| Enable conditional access | 1 |
And I log out
And the following config values are set as admin:
| enableavailability | 1 |
@javascript
Scenario: Test condition
@@ -25,6 +25,7 @@
defined('MOODLE_INTERNAL') || die();
use availability_date\condition;
use core_availability\tree;
/**
* Unit tests for the date condition.
@@ -233,4 +234,53 @@ class availability_date_condition_testcase extends advanced_testcase {
$information = $date->get_standalone_description(true, true, $info);
$this->assertRegExp('~from.*5 March 2014([^0-9]*)$~', $information);
}
/**
* Tests the update_all_dates function.
*/
public function test_update_all_dates() {
global $DB;
$this->resetAfterTest();
// Create a course with 3 pages.
$generator = $this->getDataGenerator();
$course = $generator->create_course();
$rec = array('course' => $course);
$page1 = $generator->get_plugin_generator('mod_page')->create_instance($rec);
$page2 = $generator->get_plugin_generator('mod_page')->create_instance($rec);
$page3 = $generator->get_plugin_generator('mod_page')->create_instance($rec);
// Set the availability page 2 to a simple date condition. You can access
// it from 1337 onwards.
$simplecondition = tree::get_root_json(array(
condition::get_json(condition::DIRECTION_FROM, 1337)));
$DB->set_field('course_modules', 'availability',
json_encode($simplecondition), array('id' => $page2->cmid));
// Set page 3 to a complex set of conditions including a nested date condition.
// You can access it until 1459, *or* after 2810 if you belong to a group.
$complexcondition = tree::get_root_json(array(
condition::get_json(condition::DIRECTION_UNTIL, 1459),
tree::get_nested_json(array(
condition::get_json(condition::DIRECTION_FROM, 2810),
\availability_group\condition::get_json()))),
tree::OP_OR);
$DB->set_field('course_modules', 'availability',
json_encode($complexcondition), array('id' => $page3->cmid));
// Now use the update_all_dates function to move date forward 100000.
condition::update_all_dates($course->id, 100000);
// Get the expected conditions after adjusting time, and compare to database.
$simplecondition->c[0]->t = 101337;
$complexcondition->c[0]->t = 101459;
$complexcondition->c[1]->c[0]->t = 102810;
$this->assertEquals($simplecondition, json_decode(
$DB->get_field('course_modules', 'availability', array('id' => $page2->cmid))));
$this->assertEquals($complexcondition, json_decode(
$DB->get_field('course_modules', 'availability', array('id' => $page3->cmid))));
// The one without availability conditions should still be null.
$this->assertNull($DB->get_field('course_modules', 'availability', array('id' => $page1->cmid)));
}
}
@@ -228,7 +228,9 @@ class condition extends \core_availability\condition {
WHERE
gi.courseid = ?', array($userid, $courseid));
foreach ($rs as $record) {
if (is_null($record->finalgrade)) {
// This function produces division by zero error warnings when rawgrademax and rawgrademin
// are equal. Below change does not affect function behavior, just avoids the warning.
if (is_null($record->finalgrade) || $record->rawgrademax == $record->rawgrademin) {
// No grade = false.
$cachedgrades[$record->id] = false;
} else {
@@ -249,7 +251,9 @@ class condition extends \core_availability\condition {
// Just get current grade.
$record = $DB->get_record('grade_grades', array(
'userid' => $userid, 'itemid' => $gradeitemid));
if ($record && !is_null($record->finalgrade)) {
// This function produces division by zero error warnings when rawgrademax and rawgrademin
// are equal. Below change does not affect function behavior, just avoids the warning.
if ($record && !is_null($record->finalgrade) && $record->rawgrademax != $record->rawgrademin) {
$score = (($record->finalgrade - $record->rawgrademin) * 100) /
($record->rawgrademax - $record->rawgrademin);
} else {
@@ -10,16 +10,14 @@ Feature: availability_grade
| Course 1 | C1 | topics | 1 |
And the following "users" exist:
| username | email |
| teacher1 | t@example.org |
| student1 | s@example.org |
| teacher1 | t@example.com |
| student1 | s@example.com |
And the following "course enrolments" exist:
| user | course | role |
| teacher1 | C1 | editingteacher |
| student1 | C1 | student |
And I log in as "admin"
And I set the following administration settings values:
| Enable conditional access | 1 |
And I log out
And the following config values are set as admin:
| enableavailability | 1 |
@javascript
Scenario: Test condition
@@ -60,8 +58,22 @@ Feature: availability_grade
And I set the field "Grade" to "A1"
And I click on "min" "checkbox" in the ".availability-item" "css_element"
And I set the field "Minimum grade percentage (inclusive)" to "50"
And I click on "max" "checkbox" in the ".availability-item" "css_element"
And I set the field "Maximum grade percentage (exclusive)" to "80"
And I press "Save and return to course"
# Check if disabling a part of the restriction is get saved.
And I open "P3" actions menu
And I click on "Edit settings" "link" in the "P3" activity
And I expand all fieldsets
And I click on "max" "checkbox" in the ".availability-item" "css_element"
And I press "Save and return to course"
And I open "P3" actions menu
And I click on "Edit settings" "link" in the "P3" activity
And I expand all fieldsets
And the field "Maximum grade percentage (exclusive)" matches value ""
And I follow "Course 1"
# Add a Page with a grade condition for 10%.
And I add a "Page" to section "4"
And I set the following fields to these values:
@@ -103,8 +115,8 @@ Feature: availability_grade
# Give the assignment 40%.
And I follow "A1"
And I follow "View/grade all submissions"
# Pick the grade link in the row that has s@example.org in it.
And I click on "//a[contains(@href, 'action=grade') and ancestor::tr/td[normalize-space(.) = 's@example.org']]/img" "xpath_element"
# Pick the grade link in the row that has s@example.com in it.
And I click on "//a[contains(@href, 'action=grade') and ancestor::tr/td[normalize-space(.) = 's@example.com']]/img" "xpath_element"
And I set the field "Grade out of 100" to "40"
And I click on "Save changes" "button"
@@ -95,6 +95,7 @@ M.availability_grade.form.getNode = function(json) {
root.delegate('click', function() {
updateCheckbox(this, true);
M.core_availability.form.update();
}, '.availability_grade input[type=checkbox]');
root.delegate('valuechange', function() {
@@ -1 +1 @@
YUI.add("moodle-availability_grade-form",function(e,t){M.availability_grade=M.availability_grade||{},M.availability_grade.form=e.Object(M.core_availability.plugin),M.availability_grade.form.grades=null,M.availability_grade.form.initInner=function(e){this.grades=e,this.nodesSoFar=0},M.availability_grade.form.getNode=function(t){this.nodesSoFar++;var n=M.str.availability_grade,r="<label>"+n.title+' <span class="availability-group">'+'<select name="id"><option value="0">'+M.str.moodle.choosedots+"</option>";for(var i=0;i<this.grades.length;i++){var s=this.grades[i];r+='<option value="'+s.id+'">'+s.name+"</option>"}r+='</select></span></label> <span class="availability-group"><label><input type="checkbox" name="min"/>'+n.option_min+'</label> <label><span class="accesshide">'+n.label_min+'</span><input type="text" name="minval" title="'+n.label_min+'"/></label>%</span>'+'<span class="availability-group">'+'<label><input type="checkbox" name="max"/>'+n.option_max+'</label> <label><span class="accesshide">'+n.label_max+'</span><input type="text" name="maxval" title="'+n.label_max+'"/></label>%</span>';var o=e.Node.create("<span>"+r+"</span>");t.id!==undefined&&o.one("select[name=id] > option[value="+t.id+"]")&&o.one("select[name=id]").set("value",""+t.id),t.min!==undefined&&(o.one("input[name=min]").set("checked",!0),o.one("input[name=minval]").set("value",t.min)),t.max!==undefined&&(o.one("input[name=max]").set("checked",!0),o.one("input[name=maxval]").set("value",t.max));var u=function(e,t){var n=e.ancestor("label").next("label").one("input"),r=e.get("checked");return n.set("disabled",!r),t&&r&&n.focus(),r};o.all("input[type=checkbox]").each(u);if(!M.availability_grade.form.addedEvents){M.availability_grade.form.addedEvents=!0;var a=e.one("#fitem_id_availabilityconditionsjson");a.delegate("change",function(){M.core_availability.form.update()},".availability_grade select[name=id]"),a.delegate("click",function(){u(this,!0)},".availability_grade input[type=checkbox]"),a.delegate("valuechange",function(){M.core_availability.form.update()},".availability_grade input[type=text]")}return o},M.availability_grade.form.fillValue=function(e,t){e.id=parseInt(t.one("select[name=id]").get("value"),10),t.one("input[name=min]").get("checked")&&(e.min=this.getValue("minval",t)),t.one("input[name=max]").get("checked")&&(e.max=this.getValue("maxval",t))},M.availability_grade.form.getValue=function(e,t){var n=t.one("input[name="+e+"]").get("value");if(!/^[0-9]+([.,][0-9]+)?$/.test(n))return n;var r=parseFloat(n.replace(",","."));return r<0||r>100?n:r},M.availability_grade.form.fillErrors=function(e,t){var n={};this.fillValue(n,t),n.id===0&&e.push("availability_grade:error_selectgradeid"),n.min!==undefined&&typeof n.min=="string"||n.max!==undefined&&typeof n.max=="string"?e.push("availability_grade:error_invalidnumber"):n.min!==undefined&&n.max!==undefined&&n.min>=n.max&&e.push("availability_grade:error_backwardrange")}},"@VERSION@",{requires:["base","node","event","moodle-core_availability-form"]});
YUI.add("moodle-availability_grade-form",function(e,t){M.availability_grade=M.availability_grade||{},M.availability_grade.form=e.Object(M.core_availability.plugin),M.availability_grade.form.grades=null,M.availability_grade.form.initInner=function(e){this.grades=e,this.nodesSoFar=0},M.availability_grade.form.getNode=function(t){this.nodesSoFar++;var n=M.str.availability_grade,r="<label>"+n.title+' <span class="availability-group">'+'<select name="id"><option value="0">'+M.str.moodle.choosedots+"</option>";for(var i=0;i<this.grades.length;i++){var s=this.grades[i];r+='<option value="'+s.id+'">'+s.name+"</option>"}r+='</select></span></label> <span class="availability-group"><label><input type="checkbox" name="min"/>'+n.option_min+'</label> <label><span class="accesshide">'+n.label_min+'</span><input type="text" name="minval" title="'+n.label_min+'"/></label>%</span>'+'<span class="availability-group">'+'<label><input type="checkbox" name="max"/>'+n.option_max+'</label> <label><span class="accesshide">'+n.label_max+'</span><input type="text" name="maxval" title="'+n.label_max+'"/></label>%</span>';var o=e.Node.create("<span>"+r+"</span>");t.id!==undefined&&o.one("select[name=id] > option[value="+t.id+"]")&&o.one("select[name=id]").set("value",""+t.id),t.min!==undefined&&(o.one("input[name=min]").set("checked",!0),o.one("input[name=minval]").set("value",t.min)),t.max!==undefined&&(o.one("input[name=max]").set("checked",!0),o.one("input[name=maxval]").set("value",t.max));var u=function(e,t){var n=e.ancestor("label").next("label").one("input"),r=e.get("checked");return n.set("disabled",!r),t&&r&&n.focus(),r};o.all("input[type=checkbox]").each(u);if(!M.availability_grade.form.addedEvents){M.availability_grade.form.addedEvents=!0;var a=e.one("#fitem_id_availabilityconditionsjson");a.delegate("change",function(){M.core_availability.form.update()},".availability_grade select[name=id]"),a.delegate("click",function(){u(this,!0),M.core_availability.form.update()},".availability_grade input[type=checkbox]"),a.delegate("valuechange",function(){M.core_availability.form.update()},".availability_grade input[type=text]")}return o},M.availability_grade.form.fillValue=function(e,t){e.id=parseInt(t.one("select[name=id]").get("value"),10),t.one("input[name=min]").get("checked")&&(e.min=this.getValue("minval",t)),t.one("input[name=max]").get("checked")&&(e.max=this.getValue("maxval",t))},M.availability_grade.form.getValue=function(e,t){var n=t.one("input[name="+e+"]").get("value");if(!/^[0-9]+([.,][0-9]+)?$/.test(n))return n;var r=parseFloat(n.replace(",","."));return r<0||r>100?n:r},M.availability_grade.form.fillErrors=function(e,t){var n={};this.fillValue(n,t),n.id===0&&e.push("availability_grade:error_selectgradeid"),n.min!==undefined&&typeof n.min=="string"||n.max!==undefined&&typeof n.max=="string"?e.push("availability_grade:error_invalidnumber"):n.min!==undefined&&n.max!==undefined&&n.min>=n.max&&e.push("availability_grade:error_backwardrange")}},"@VERSION@",{requires:["base","node","event","moodle-core_availability-form"]});
@@ -95,6 +95,7 @@ M.availability_grade.form.getNode = function(json) {
root.delegate('click', function() {
updateCheckbox(this, true);
M.core_availability.form.update();
}, '.availability_grade input[type=checkbox]');
root.delegate('valuechange', function() {
+1
View File
@@ -93,6 +93,7 @@ M.availability_grade.form.getNode = function(json) {
root.delegate('click', function() {
updateCheckbox(this, true);
M.core_availability.form.update();
}, '.availability_grade input[type=checkbox]');
root.delegate('valuechange', function() {
@@ -229,7 +229,12 @@ class condition extends \core_availability\condition {
* @return stdClass Object representing condition
*/
public static function get_json($groupid = 0) {
return (object)array('type' => 'group', 'id' => (int)$groupid);
$result = (object)array('type' => 'group');
// Id is only included if set.
if ($groupid) {
$result->id = (int)$groupid;
}
return $result;
}
public function get_user_list_sql($not, \core_availability\info $info, $onlyactive) {
@@ -16,10 +16,8 @@ Feature: availability_group
| user | course | role |
| teacher1 | C1 | editingteacher |
| student1 | C1 | student |
And I log in as "admin"
And I set the following administration settings values:
| Enable conditional access | 1 |
And I log out
And the following config values are set as admin:
| enableavailability | 1 |
@javascript
Scenario: Test condition
@@ -22,10 +22,8 @@ Feature: availability_grouping
And the following "group members" exist:
| user | group |
| student1 | GI1 |
And I log in as "admin"
And I set the following administration settings values:
| Enable conditional access | 1 |
And I log out
And the following config values are set as admin:
| enableavailability | 1 |
@javascript
Scenario: Test condition
@@ -10,16 +10,14 @@ Feature: availability_profile
| Course 1 | C1 | topics | 1 |
And the following "users" exist:
| username | email |
| teacher1 | t@example.org |
| student1 | s@example.org |
| teacher1 | t@example.com |
| student1 | s@example.com |
And the following "course enrolments" exist:
| user | course | role |
| teacher1 | C1 | editingteacher |
| student1 | C1 | student |
And I log in as "admin"
And I set the following administration settings values:
| Enable conditional access | 1 |
And I log out
And the following config values are set as admin:
| enableavailability | 1 |
@javascript
Scenario: Test condition
@@ -38,7 +36,7 @@ Feature: availability_profile
And I click on "Add restriction..." "button"
And I click on "User profile" "button"
And I set the field "User profile field" to "Email address"
And I set the field "Value to compare against" to "s@example.org"
And I set the field "Value to compare against" to "s@example.com"
And I click on ".availability-item .availability-eye img" "css_element"
And I click on "Save and return to course" "button"
@@ -52,7 +50,7 @@ Feature: availability_profile
And I click on "Add restriction..." "button"
And I click on "User profile" "button"
And I set the field "User profile field" to "Email address"
And I set the field "Value to compare against" to "q@example.org"
And I set the field "Value to compare against" to "q@example.com"
And I click on ".availability-item .availability-eye img" "css_element"
And I click on "Save and return to course" "button"
@@ -78,7 +76,7 @@ Feature: availability_profile
# Set field value for user.
And I navigate to "Browse list of users" node in "Site administration > Users > Accounts"
And I click on "a[title=Edit]" "css_element" in the "s@example.org" "table_row"
And I click on "a[title=Edit]" "css_element" in the "s@example.com" "table_row"
And I expand all fieldsets
And I set the field "Super field" to "Bananaman"
And I click on "Update profile" "button"
@@ -34,10 +34,8 @@ Feature: display_availability
| user | course | role |
| teacher1 | C1 | editingteacher |
| student1 | C1 | student |
And I log in as "admin"
And I set the following administration settings values:
| Enable conditional access | 1 |
And I log out
And the following config values are set as admin:
| enableavailability | 1 |
@javascript
Scenario: Activity availability display
@@ -76,7 +74,7 @@ Feature: display_availability
And I press "Add restriction..."
And I click on "User profile" "button" in the "Add restriction..." "dialogue"
And I set the field "User profile field" to "Email address"
And I set the field "Value to compare against" to "email@example.org"
And I set the field "Value to compare against" to "email@example.com"
And I set the field "Method of comparison" to "is equal to"
And I press "Save and return to course"
@@ -39,15 +39,10 @@ Feature: edit_availability
When I edit the section "1"
Then "Restrict access" "fieldset" should not exist
When I log out
And I log in as "admin"
And I set the following administration settings values:
| Enable conditional access | 1 |
And the following config values are set as admin:
| enableavailability | 1 |
When I log out
And I log in as "teacher1"
And I follow "Course 1"
And I turn editing mode on
And I add a "Page" to section "1"
Then "Restrict access" "fieldset" should exist
@@ -58,10 +53,8 @@ Feature: edit_availability
@javascript
Scenario: Edit availability using settings in activity form
# Set up.
Given I log in as "admin"
And I set the following administration settings values:
| Enable conditional access | 1 |
And I log out
Given the following config values are set as admin:
| enableavailability | 1 |
And I log in as "teacher1"
And I follow "Course 1"
@@ -153,10 +146,8 @@ Feature: edit_availability
@javascript
Scenario: Edit availability using settings in section form
# Set up.
Given I log in as "admin"
And I set the following administration settings values:
| Enable conditional access | 1 |
And I log out
Given the following config values are set as admin:
| enableavailability | 1 |
And I log in as "teacher1"
And I follow "Course 1"
And I turn editing mode on
@@ -172,3 +163,4 @@ Feature: edit_availability
And I should not see "None" in the "Restrict access" "fieldset"
And "Restriction type" "select" should be visible
And I should see "Date" in the "Restrict access" "fieldset"
+6 -2
View File
@@ -49,7 +49,11 @@ class core_availability_component_testcase extends advanced_testcase {
// fail, but it's obvious when running test at least.
$pluginmanager = core_plugin_manager::instance();
$list = $pluginmanager->get_enabled_plugins('availability');
$this->assertEquals(array('completion', 'date', 'grade', 'group', 'grouping', 'profile'),
array_keys($list));
$this->assertArrayHasKey('completion', $list);
$this->assertArrayHasKey('date', $list);
$this->assertArrayHasKey('grade', $list);
$this->assertArrayHasKey('group', $list);
$this->assertArrayHasKey('grouping', $list);
$this->assertArrayHasKey('profile', $list);
}
}
+5 -5
View File
@@ -35,7 +35,7 @@ use core_availability\info_section;
* @copyright 2014 The Open University
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class info_testcase extends \advanced_testcase {
class info_testcase extends advanced_testcase {
public function setUp() {
// Load the mock condition so that it can be used.
require_once(__DIR__ . '/fixtures/mock_condition.php');
@@ -87,8 +87,8 @@ class info_testcase extends \advanced_testcase {
// Check invalid one.
$info = new info_module($cm3);
$this->assertFalse($info->is_available($information));
$debugging = phpunit_util::get_debugging_messages();
phpunit_util::reset_debugging();
$debugging = $this->getDebuggingMessages();
$this->resetDebugging();
$this->assertEquals(1, count($debugging));
$this->assertContains('Invalid availability', $debugging[0]->message);
@@ -141,8 +141,8 @@ class info_testcase extends \advanced_testcase {
// Check invalid one.
$info = new info_section($sections[3]);
$this->assertFalse($info->is_available($information));
$debugging = phpunit_util::get_debugging_messages();
phpunit_util::reset_debugging();
$debugging = $this->getDebuggingMessages();
$this->resetDebugging();
$this->assertEquals(1, count($debugging));
$this->assertContains('Invalid availability', $debugging[0]->message);
+19
View File
@@ -600,6 +600,15 @@ class tree_testcase extends \advanced_testcase {
ksort($result);
$this->assertEquals(array(1, 3), array_keys($result));
// Tree with OR condition one of which doesn't filter.
$structure = tree::get_root_json(array(
self::mock(array('filter' => array(3))),
self::mock(array())), tree::OP_OR);
$tree = new tree($structure);
$result = $tree->filter_user_list($users, false, $info, $checker);
ksort($result);
$this->assertEquals(array(1, 2, 3), array_keys($result));
// Tree with two condition that both filter (&).
$structure = tree::get_root_json(array(
self::mock(array('filter' => array(2, 3))),
@@ -718,6 +727,16 @@ class tree_testcase extends \advanced_testcase {
$result = $DB->get_fieldset_sql($sql, $params);
sort($result);
$this->assertEquals(array($userinneither->id), $result);
// Tree with 'OR' of group conditions and a non-filtering condition.
// The non-filtering condition should mean that ALL users are included.
$tree = new tree(tree::get_root_json(array(
\availability_group\condition::get_json($group1->id),
\availability_date\condition::get_json(\availability_date\condition::DIRECTION_UNTIL, 3)
), tree::OP_OR));
list($sql, $params) = $tree->get_user_list_sql(false, $info, false);
$this->assertEquals('', $sql);
$this->assertEquals(array(), $params);
}
/**
+12 -2
View File
@@ -27,8 +27,18 @@ class cc_assesment_question_truefalse extends cc_assesment_question_proc_base {
public function __construct($quiz, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir) {
parent::__construct($quiz, $questions, $manifest, $section, $question_node, $rootpath, $contextid, $outdir);
$this->qtype = cc_qti_profiletype::true_false;
$this->correct_answer_node_id = $this->questions->nodeValue(
'plugin_qtype_truefalse_question/truefalse/trueanswer', $this->question_node);
// Determine the correct answer by finding out which answer has the non zero fraction...
// This is because a true / false question type can have 'false' as the correct answer.
$answers = $this->questions->nodeList('plugin_qtype_truefalse_question/answers/answer', $this->question_node);
foreach ($answers as $answer) {
$fraction = $this->questions->nodeValue('fraction', $answer);
if ($fraction != 0) {
$this->correct_answer_node_id = (int)$this->questions->nodeValue('@id', $answer);
}
}
$maximum_quiz_grade = (int)$this->quiz->nodeValue('/activity/quiz/grade');
$this->total_grade_value = ($maximum_quiz_grade + 1).'.0000000';
}
+17 -14
View File
@@ -885,27 +885,30 @@ class cc_quiz extends entities {
$sheet_question_categories_question = cc2moodle::loadsheet(SHEET_COURSE_QUESTION_CATEGORIES_QUESTION_CATEGORY_QUESTION_TRUE_FALSE);
$max_score = 0;
$true_answer_id = 0;
$false_answer_id = 0;
$trueanswer = null;
$falseanswer = null;
if (!empty($question['answers'])) {
// Identify the true and false answers.
foreach ($question['answers'] as $answer) {
if ($answer['score'] > $max_score) {
$max_score = $answer['score'];
$true_answer_id = $answer['id'];
if ($answer['identifier'] == 'true') {
$trueanswer = $answer;
} else if ($answer['identifier'] == 'false') {
$falseanswer = $answer;
} else {
// Should not happen, but just in case.
throw new coding_exception("Unknown answer identifier detected" .
" in true/false quiz question with id {$question['id']}.");
}
$node_course_question_categories_question_answer .= $this->create_node_course_question_categories_question_category_question_answer($answer);
}
foreach ($question['answers'] as $answer) {
if ($answer['id'] != $true_answer_id) {
$max_score = $answer['score'];
$false_answer_id = $answer['id'];
}
// Make sure the true and false answer was found.
if (is_null($trueanswer) || is_null($falseanswer)) {
throw new coding_exception("Unable to correctly identify the " .
"true and false answers in the question with id {$question['id']}.");
}
}
@@ -914,8 +917,8 @@ class cc_quiz extends entities {
'[#false_answer_id#]');
$replace_values = array($node_course_question_categories_question_answer,
$true_answer_id,
$false_answer_id);
$trueanswer['id'],
$falseanswer['id']);
$node_question_categories_question = str_replace($find_tags, $replace_values, $sheet_question_categories_question);
+17 -14
View File
@@ -908,27 +908,30 @@ class cc11_quiz extends entities11 {
$sheet_question_categories_question = cc112moodle::loadsheet(SHEET_COURSE_QUESTION_CATEGORIES_QUESTION_CATEGORY_QUESTION_TRUE_FALSE);
$max_score = 0;
$true_answer_id = 0;
$false_answer_id = 0;
$trueanswer = null;
$falseanswer = null;
if (!empty($question['answers'])) {
// Identify the true and false answers.
foreach ($question['answers'] as $answer) {
if ($answer['score'] > $max_score) {
$max_score = $answer['score'];
$true_answer_id = $answer['id'];
if ($answer['identifier'] == 'true') {
$trueanswer = $answer;
} else if ($answer['identifier'] == 'false') {
$falseanswer = $answer;
} else {
// Should not happen, but just in case.
throw new coding_exception("Unknown answer identifier detected " .
"in true/false quiz question with id {$question['id']}.");
}
$node_course_question_categories_question_answer .= $this->create_node_course_question_categories_question_category_question_answer($answer);
}
foreach ($question['answers'] as $answer) {
if ($answer['id'] != $true_answer_id) {
$max_score = $answer['score'];
$false_answer_id = $answer['id'];
}
// Make sure the true and false answer was found.
if (is_null($trueanswer) || is_null($falseanswer)) {
throw new coding_exception("Unable to correctly identify the " .
"true and false answers in the question with id {$question['id']}.");
}
}
@@ -937,8 +940,8 @@ class cc11_quiz extends entities11 {
'[#false_answer_id#]');
$replace_values = array($node_course_question_categories_question_answer,
$true_answer_id,
$false_answer_id);
$trueanswer['id'],
$falseanswer['id']);
$node_question_categories_question = str_replace($find_tags, $replace_values, $sheet_question_categories_question);
+3 -3
View File
@@ -299,7 +299,7 @@
<IDNUMBER>891220979</IDNUMBER>
<FIRSTNAME>Admin</FIRSTNAME>
<LASTNAME>User</LASTNAME>
<EMAIL>adamzap@gmail.com</EMAIL>
<EMAIL>adamzap@example.com</EMAIL>
<EMAILSTOP>0</EMAILSTOP>
<ICQ></ICQ>
<SKYPE></SKYPE>
@@ -368,7 +368,7 @@
<IDNUMBER>891111111</IDNUMBER>
<FIRSTNAME>Adam</FIRSTNAME>
<LASTNAME>Zapletal</LASTNAME>
<EMAIL>azaple1@lsu.edu</EMAIL>
<EMAIL>azaple1@example.com</EMAIL>
<EMAILSTOP>0</EMAILSTOP>
<ICQ></ICQ>
<SKYPE></SKYPE>
@@ -481,7 +481,7 @@
<IDNUMBER></IDNUMBER>
<FIRSTNAME>Philip</FIRSTNAME>
<LASTNAME>Cali</LASTNAME>
<EMAIL>pcali1@lsu.edu</EMAIL>
<EMAIL>pcali1@example.com</EMAIL>
<EMAILSTOP>0</EMAILSTOP>
<ICQ></ICQ>
<SKYPE></SKYPE>
+21 -2
View File
@@ -516,7 +516,7 @@ class backup_enrolments_structure_step extends backup_structure_step {
$enrol = new backup_nested_element('enrol', array('id'), array(
'enrol', 'status', 'name', 'enrolperiod', 'enrolstartdate',
'enrolenddate', 'expirynotify', 'expirytreshold', 'notifyall',
'enrolenddate', 'expirynotify', 'expirythreshold', 'notifyall',
'password', 'cost', 'currency', 'roleid',
'customint1', 'customint2', 'customint3', 'customint4', 'customint5', 'customint6', 'customint7', 'customint8',
'customchar1', 'customchar2', 'customchar3',
@@ -926,6 +926,7 @@ class backup_gradebook_structure_step extends backup_structure_step {
}
protected function define_structure() {
global $CFG, $DB;
// are we including user info?
$userinfo = $this->get_setting_value('users');
@@ -986,6 +987,13 @@ class backup_gradebook_structure_step extends backup_structure_step {
$gradebook->add_child($grade_settings);
$grade_settings->add_child($grade_setting);
// Add attribute with gradebook calculation freeze date if needed.
$gradebookcalculationfreeze = get_config('core', 'gradebook_calculations_freeze_' . $this->get_courseid());
if ($gradebookcalculationfreeze) {
$gradebook->add_attributes(array('calculations_freeze'));
$gradebook->get_attribute('calculations_freeze')->set_value($gradebookcalculationfreeze);
}
// Define sources
//Include manual, category and the course grade item
@@ -1010,7 +1018,18 @@ class backup_gradebook_structure_step extends backup_structure_step {
$letter->set_source_table('grade_letters', array('contextid' => backup::VAR_CONTEXTID));
$grade_setting->set_source_table('grade_settings', array('courseid' => backup::VAR_COURSEID));
// Set the grade settings source, forcing the inclusion of minmaxtouse if not present.
$settings = array();
$rs = $DB->get_recordset('grade_settings', array('courseid' => $this->get_courseid()));
foreach ($rs as $record) {
$settings[$record->name] = $record;
}
$rs->close();
if (!isset($settings['minmaxtouse'])) {
$settings['minmaxtouse'] = (object) array('name' => 'minmaxtouse', 'value' => $CFG->grade_minmaxtouse);
}
$grade_setting->set_source_array($settings);
// Annotations (both as final as far as they are going to be exported in next steps)
$grade_item->annotate_ids('scalefinal', 'scaleid'); // Straight as scalefinal because it's > 0
+164 -14
View File
@@ -138,6 +138,18 @@ class restore_gradebook_structure_step extends restore_structure_step {
}
protected function process_gradebook($data) {
// For non-merge restore types:
// Unset 'gradebook_calculations_freeze_' in the course and replace with the one from the backup.
$target = $this->get_task()->get_target();
if ($target == backup::TARGET_CURRENT_DELETING || $target == backup::TARGET_EXISTING_DELETING) {
set_config('gradebook_calculations_freeze_' . $this->get_courseid(), null);
}
if (!empty($data['calculations_freeze'])) {
if ($target == backup::TARGET_NEW_COURSE || $target == backup::TARGET_CURRENT_DELETING ||
$target == backup::TARGET_EXISTING_DELETING) {
set_config('gradebook_calculations_freeze_' . $this->get_courseid(), $data['calculations_freeze']);
}
}
}
protected function process_grade_item($data) {
@@ -319,13 +331,23 @@ class restore_gradebook_structure_step extends restore_structure_step {
$data->courseid = $this->get_courseid();
$target = $this->get_task()->get_target();
if ($data->name == 'minmaxtouse' &&
($target == backup::TARGET_CURRENT_ADDING || $target == backup::TARGET_EXISTING_ADDING)) {
// We never restore minmaxtouse during merge.
return;
}
if (!$DB->record_exists('grade_settings', array('courseid' => $data->courseid, 'name' => $data->name))) {
$newitemid = $DB->insert_record('grade_settings', $data);
} else {
$newitemid = $data->id;
}
$this->set_mapping('grade_setting', $oldid, $newitemid);
if (!empty($oldid)) {
// In rare cases (minmaxtouse), it is possible that there wasn't any ID associated with the setting.
$this->set_mapping('grade_setting', $oldid, $newitemid);
}
}
/**
@@ -447,9 +469,101 @@ class restore_gradebook_structure_step extends restore_structure_step {
}
$rs->close();
// Check what to do with the minmaxtouse setting.
$this->check_minmaxtouse();
// Freeze gradebook calculations if needed.
$this->gradebook_calculation_freeze();
// Restore marks items as needing update. Update everything now.
grade_regrade_final_grades($this->get_courseid());
}
/**
* Freeze gradebook calculation if needed.
*
* This is similar to various upgrade scripts that check if the freeze is needed.
*/
protected function gradebook_calculation_freeze() {
global $CFG;
$gradebookcalculationsfreeze = get_config('core', 'gradebook_calculations_freeze_' . $this->get_courseid());
preg_match('/(\d{8})/', $this->get_task()->get_info()->moodle_release, $matches);
$backupbuild = (int)$matches[1];
// Extra credits need adjustments only for backups made between 2.8 release (20141110) and the fix release (20150619).
if (!$gradebookcalculationsfreeze && $backupbuild >= 20141110 && $backupbuild < 20150619) {
require_once($CFG->libdir . '/db/upgradelib.php');
upgrade_extra_credit_weightoverride($this->get_courseid());
}
// Calculated grade items need recalculating for backups made between 2.8 release (20141110) and the fix release (20150627).
if (!$gradebookcalculationsfreeze && $backupbuild >= 20141110 && $backupbuild < 20150627) {
require_once($CFG->libdir . '/db/upgradelib.php');
upgrade_calculated_grade_items($this->get_courseid());
}
}
/**
* Checks what should happen with the course grade setting minmaxtouse.
*
* This is related to the upgrade step at the time the setting was added.
*
* @see MDL-48618
* @return void
*/
protected function check_minmaxtouse() {
global $CFG, $DB;
require_once($CFG->libdir . '/gradelib.php');
$userinfo = $this->task->get_setting_value('users');
$settingname = 'minmaxtouse';
$courseid = $this->get_courseid();
$minmaxtouse = $DB->get_field('grade_settings', 'value', array('courseid' => $courseid, 'name' => $settingname));
$version28start = 2014111000.00;
$version28last = 2014111006.05;
$target = $this->get_task()->get_target();
if ($minmaxtouse === false &&
($target != backup::TARGET_CURRENT_ADDING && $target != backup::TARGET_EXISTING_ADDING)) {
// The setting was not found because this setting did not exist at the time the backup was made.
// And we are not restoring as merge, in which case we leave the course as it was.
$version = $this->get_task()->get_info()->moodle_version;
if ($version < $version28start) {
// We need to set it to use grade_item, but only if the site-wide setting is different. No need to notice them.
if ($CFG->grade_minmaxtouse != GRADE_MIN_MAX_FROM_GRADE_ITEM) {
grade_set_setting($courseid, $settingname, GRADE_MIN_MAX_FROM_GRADE_ITEM);
}
} else if ($version >= $version28start && $version < $version28last) {
// They should be using grade_grade when the course has inconsistencies.
$sql = "SELECT gi.id
FROM {grade_items} gi
JOIN {grade_grades} gg
ON gg.itemid = gi.id
WHERE gi.courseid = ?
AND (gi.itemtype != ? AND gi.itemtype != ?)
AND (gg.rawgrademax != gi.grademax OR gg.rawgrademin != gi.grademin)";
// The course can only have inconsistencies when we restore the user info,
// we do not need to act on existing grades that were not restored as part of this backup.
if ($userinfo && $DB->record_exists_sql($sql, array($courseid, 'course', 'category'))) {
// Display the notice as we do during upgrade.
set_config('show_min_max_grades_changed_' . $courseid, 1);
if ($CFG->grade_minmaxtouse != GRADE_MIN_MAX_FROM_GRADE_GRADE) {
// We need set the setting as their site-wise setting is not GRADE_MIN_MAX_FROM_GRADE_GRADE.
// If they are using the site-wide grade_grade setting, we only want to notice them.
grade_set_setting($courseid, $settingname, GRADE_MIN_MAX_FROM_GRADE_GRADE);
}
}
} else {
// This should never happen because from now on minmaxtouse is always saved in backups.
}
}
}
}
/**
@@ -1300,6 +1414,15 @@ class restore_process_categories_and_questions extends restore_execution_step {
* as needed, rebuilding course cache and other friends
*/
class restore_section_structure_step extends restore_structure_step {
/** @var array Cache: Array of id => course format */
private static $courseformats = array();
/**
* Resets a static cache of course formats. Required for unit testing.
*/
public static function reset_caches() {
self::$courseformats = array();
}
protected function define_structure() {
global $CFG;
@@ -1472,13 +1595,30 @@ class restore_section_structure_step extends restore_structure_step {
public function process_course_format_options($data) {
global $DB;
$data = (object)$data;
$oldid = $data->id;
unset($data->id);
$data->sectionid = $this->task->get_sectionid();
$data->courseid = $this->get_courseid();
$newid = $DB->insert_record('course_format_options', $data);
$this->set_mapping('course_format_options', $oldid, $newid);
$courseid = $this->get_courseid();
if (!array_key_exists($courseid, self::$courseformats)) {
// It is safe to have a static cache of course formats because format can not be changed after this point.
self::$courseformats[$courseid] = $DB->get_field('course', 'format', array('id' => $courseid));
}
$data = (array)$data;
if (self::$courseformats[$courseid] === $data['format']) {
// Import section format options only if both courses (the one that was backed up
// and the one we are restoring into) have same formats.
$params = array(
'courseid' => $this->get_courseid(),
'sectionid' => $this->task->get_sectionid(),
'format' => $data['format'],
'name' => $data['name']
);
if ($record = $DB->get_record('course_format_options', $params, 'id, value')) {
// Do not overwrite existing information.
$newid = $record->id;
} else {
$params['value'] = $data['value'];
$newid = $DB->insert_record('course_format_options', $params);
}
$this->set_mapping('course_format_options', $data['id'], $newid);
}
}
protected function after_execute() {
@@ -2987,11 +3127,6 @@ class restore_activity_grades_structure_step extends restore_structure_step {
$oldparentid = $data->categoryid;
$courseid = $this->get_courseid();
// make sure top course category exists, all grade items will be associated
// to it. Later, if restoring the whole gradebook, categories will be introduced
$coursecat = grade_category::fetch_course_category($courseid);
$coursecatid = $coursecat->id; // Get the categoryid to be used
$idnumber = null;
if (!empty($data->idnumber)) {
// Don't get any idnumber from course module. Keep them as they are in grade_item->idnumber
@@ -3016,8 +3151,18 @@ class restore_activity_grades_structure_step extends restore_structure_step {
}
}
if (!empty($data->categoryid)) {
// If the grade category id of the grade item being restored belongs to this course
// then it is a fair assumption that this is the correct grade category for the activity
// and we should leave it in place, if not then unset it.
// TODO MDL-34790 Gradebook does not import if target course has gradebook categories.
$conditions = array('id' => $data->categoryid, 'courseid' => $courseid);
if (!$this->task->is_samesite() || !$DB->record_exists('grade_categories', $conditions)) {
unset($data->categoryid);
}
}
unset($data->id);
$data->categoryid = $coursecatid;
$data->courseid = $this->get_courseid();
$data->iteminstance = $this->task->get_activityid();
$data->idnumber = $idnumber;
@@ -3836,6 +3981,11 @@ class restore_create_categories_and_questions extends restore_structure_step {
$data = (object)$data;
$newquestion = $this->get_new_parentid('question');
$questioncreated = (bool) $this->get_mappingid('question_created', $this->get_old_parentid('question'));
if (!$questioncreated) {
// This question already exists in the question bank. Nothing for us to do.
return;
}
if (!empty($CFG->usetags)) { // if enabled in server
// TODO: This is highly inefficient. Each time we add one tag
@@ -0,0 +1,257 @@
<?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/>.
/**
* Tests for Moodle 2 format backup operation.
*
* @package core_backup
* @copyright 2014 Russell Smith
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
global $CFG;
require_once($CFG->dirroot . '/backup/util/includes/backup_includes.php');
require_once($CFG->dirroot . '/backup/util/includes/restore_includes.php');
require_once($CFG->dirroot . '/course/format/topics/lib.php');
require_once($CFG->libdir . '/completionlib.php');
/**
* Tests for Moodle 2 course format section_options backup operation.
*
* @package core_backup
* @copyright 2014 Russell Smith
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class core_backup_moodle2_course_format_testcase extends advanced_testcase {
/**
* Tidy up open files that may be left open.
*/
protected function tearDown() {
gc_collect_cycles();
}
/**
* Tests a backup and restore adds the required section option data
* when the same course format is used.
*/
public function test_course_format_options_restore() {
global $DB, $CFG;
$this->resetAfterTest(true);
$this->setAdminUser();
$CFG->enableavailability = true;
$CFG->enablecompletion = true;
// Create a course with some availability data set.
$generator = $this->getDataGenerator();
$course = $generator->create_course(
array('format' => 'test_cs_options', 'numsections' => 3,
'enablecompletion' => COMPLETION_ENABLED),
array('createsections' => true));
$courseobject = format_base::instance($course->id);
$section = $DB->get_record('course_sections',
array('course' => $course->id, 'section' => 1), '*', MUST_EXIST);
$data = array('id' => $section->id,
'numdaystocomplete' => 2);
$courseobject->update_section_format_options($data);
// Backup and restore it.
$this->backup_and_restore($course);
$sectionoptions = $courseobject->get_format_options(1);
$this->assertArrayHasKey('numdaystocomplete', $sectionoptions);
$this->assertEquals(2, $sectionoptions['numdaystocomplete']);
}
/**
* Tests an import into the same subject successfully
* restores the options without error.
*/
public function test_course_format_options_import_myself() {
global $DB, $CFG;
$this->resetAfterTest(true);
$this->setAdminUser();
$CFG->enableavailability = true;
$CFG->enablecompletion = true;
// Create a course with some availability data set.
$generator = $this->getDataGenerator();
$course = $generator->create_course(
array('format' => 'test_cs_options', 'numsections' => 3,
'enablecompletion' => COMPLETION_ENABLED),
array('createsections' => true));
$courseobject = format_base::instance($course->id);
$section = $DB->get_record('course_sections',
array('course' => $course->id, 'section' => 1), '*', MUST_EXIST);
$data = array('id' => $section->id,
'numdaystocomplete' => 2);
$courseobject->update_section_format_options($data);
$this->backup_and_restore($course, $course, backup::TARGET_EXISTING_ADDING);
$sectionoptions = $courseobject->get_format_options(1);
$this->assertArrayHasKey('numdaystocomplete', $sectionoptions);
$this->assertArrayNotHasKey('secondparameter', $sectionoptions);
$this->assertEquals(2, $sectionoptions['numdaystocomplete']);
}
/**
* Tests that all section options are copied when the course format is changed.
* None of the data is copied.
*
* It is a future enhancement to copy;
* 1. Only the relevant options.
* 2. Only the data associated with relevant options.
*/
public function test_course_format_options_restore_new_format() {
global $DB, $CFG;
$this->resetAfterTest(true);
$this->setAdminUser();
// Create a source course using the test_cs2_options format.
$generator = $this->getDataGenerator();
$course = $generator->create_course(
array('format' => 'test_cs2_options', 'numsections' => 3,
'enablecompletion' => COMPLETION_ENABLED),
array('createsections' => true));
// Create a target course using test_cs_options format.
$newcourse = $generator->create_course(
array('format' => 'test_cs_options', 'numsections' => 3,
'enablecompletion' => COMPLETION_ENABLED),
array('createsections' => true));
// Set section 2 to have both options, and a name.
$courseobject = format_base::instance($course->id);
$section = $DB->get_record('course_sections',
array('course' => $course->id, 'section' => 2), '*', MUST_EXIST);
$data = array('id' => $section->id,
'numdaystocomplete' => 2,
'secondparameter' => 8
);
$courseobject->update_section_format_options($data);
$DB->set_field('course_sections', 'name', 'Frogs', array('id' => $section->id));
// Backup and restore to the new course using 'add to existing' so it
// keeps the current (test_cs_options) format.
$this->backup_and_restore($course, $newcourse, backup::TARGET_EXISTING_ADDING);
// Check that the section contains the options suitable for the new
// format and that even the one with the same name as from the old format
// has NOT been set.
$newcourseobject = format_base::instance($newcourse->id);
$sectionoptions = $newcourseobject->get_format_options(2);
$this->assertArrayHasKey('numdaystocomplete', $sectionoptions);
$this->assertArrayNotHasKey('secondparameter', $sectionoptions);
$this->assertEquals(0, $sectionoptions['numdaystocomplete']);
// However, the name should have been changed, as this does not depend
// on the format.
$modinfo = get_fast_modinfo($newcourse->id);
$section = $modinfo->get_section_info(2);
$this->assertEquals('Frogs', $section->name);
}
/**
* Backs a course up and restores it.
*
* @param stdClass $srccourse Course object to backup
* @param stdClass $dstcourse Course object to restore into
* @param int $target Target course mode (backup::TARGET_xx)
* @return int ID of newly restored course
*/
protected function backup_and_restore($srccourse, $dstcourse = null,
$target = backup::TARGET_NEW_COURSE) {
global $USER, $CFG;
// Turn off file logging, otherwise it can't delete the file (Windows).
$CFG->backup_file_logger_level = backup::LOG_NONE;
// Do backup with default settings. MODE_IMPORT means it will just
// create the directory and not zip it.
$bc = new backup_controller(backup::TYPE_1COURSE, $srccourse->id,
backup::FORMAT_MOODLE, backup::INTERACTIVE_NO, backup::MODE_IMPORT,
$USER->id);
$backupid = $bc->get_backupid();
$bc->execute_plan();
$bc->destroy();
// Do restore to new course with default settings.
if ($dstcourse !== null) {
$newcourseid = $dstcourse->id;
} else {
$newcourseid = restore_dbops::create_new_course(
$srccourse->fullname, $srccourse->shortname . '_2', $srccourse->category);
}
$rc = new restore_controller($backupid, $newcourseid,
backup::INTERACTIVE_NO, backup::MODE_GENERAL, $USER->id,
$target);
$this->assertTrue($rc->execute_precheck());
$rc->execute_plan();
$rc->destroy();
return $newcourseid;
}
}
/**
* Class format_test_cs_options
*
* Test course format that has 1 option.
*/
class format_test_cs_options extends format_topics {
public function section_format_options($foreditform = false) {
return array(
'numdaystocomplete' => array(
'type' => PARAM_INT,
'label' => 'Test days',
'element_type' => 'text',
'default' => 0,
),
);
}
}
/**
* Class format_test_cs2_options
*
* Test course format that has 2 options, 1 inherited.
*/
class format_test_cs2_options extends format_test_cs_options {
public function section_format_options($foreditform = false) {
return array(
'numdaystocomplete' => array(
'type' => PARAM_INT,
'label' => 'Test days',
'element_type' => 'text',
'default' => 0,
),
'secondparameter' => array(
'type' => PARAM_INT,
'label' => 'Test Parmater',
'element_type' => 'text',
'default' => 0,
),
) + parent::section_format_options($foreditform);
}
}
+1
View File
@@ -30,6 +30,7 @@ class course_restore_form extends moodleform {
$mform->addElement('hidden', 'contextid', $contextid);
$mform->setType('contextid', PARAM_INT);
$mform->addElement('filepicker', 'backupfile', get_string('files'));
$mform->addRule('backupfile', get_string('required'), 'required');
$submit_string = get_string('restore');
$this->add_action_buttons(false, $submit_string);
}

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