Compare commits

..

256 Commits

Author SHA1 Message Date
Eloy Lafuente (stronk7) 8ec057ca45 Moodle release 2.4.9 2014-03-07 18:51:34 +01:00
AMOS bot fbc50fb699 Merge branch 'MOODLE_24_STABLE' into install_24_STABLE 2014-03-07 00:54:52 +00:00
AMOS bot b0ec2d8cb5 Automatically generated installer lang files 2014-03-05 00:54:50 +00:00
Dan Poltawski eee61675f0 MDL-43146 enrol_imsenterprise: missing sesskey protection 2014-03-04 12:28:11 +08:00
Frederic Massart 4bc5dd3217 MDL-29409 repository_alfresco: Drop support for URL/link
The current solution has two major issues. Firstly, it is using the
session key in the file URL, allowing anyone with the link to steal
the identify of the poster. Secondly, the links are not presistent
and become broken as soon as the server is restarted. Let's not
support this any more until a proper solution is found in MDL-26454.
2014-03-04 11:35:03 +08:00
Marina Glancy d9596365e5 MDL-39990 wiki: more detailed validation of view/edit access 2014-03-03 14:45:17 +08:00
Andrew Davis 7748e17207 MDL-44082 mod_chat: added a security check for users already in the chat activity 2014-03-03 12:16:54 +08:00
Tomasz Muras aea324963d MDL-43656 mod_feedback: availablity date logic incorrect 2014-03-03 11:24:44 +08:00
Tim Hunt fd4b7f5739 MDL-43690 quiz_question_tostring missing s().
This meant that the edit quiz page sometimes had invalid HTML.
2014-03-03 11:00:33 +08:00
Maria Torres ae0ec61180 MDL-43916 - Email addresses incorrectly displayed
When capabilities and settings do not allow it.
2014-03-03 10:37:29 +08:00
Dan Poltawski b97e5658ea Merge branch 'w06_MDL-43344_m24_flow' of https://github.com/skodak/moodle into MOODLE_24_STABLE 2014-03-03 10:07:30 +08:00
AMOS bot c3083344ec Automatically generated installer lang files 2014-03-01 00:56:08 +00:00
AMOS bot b186033382 Automatically generated installer lang files 2014-02-21 00:45:34 +00:00
Eloy Lafuente (stronk7) a3edb5252a weekly release 2.4.8+ 2014-02-20 12:43:14 +01:00
Eloy Lafuente (stronk7) b268d4a05c Merge branch 'install_24_STABLE' of git://git.moodle.org/moodle-install into MOODLE_24_STABLE 2014-02-20 12:43:10 +01:00
Damyon Wiese e50a4e2386 Merge branch 'MDL-44018_24' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2014-02-19 10:25:00 +08:00
Tim Hunt 9b19a46099 MDL-44118 new environment check are all quiz attempts upgraded.
In Moodle 2.1, there was a major DB upgrade relating to questions, and
it was possible to delay some of that upgrade. Now, those DB tables are
changing again, and the time has come to insist that all the updata has
been upgraded (or deleted).
2014-02-18 12:06:15 +00:00
AMOS bot 77f8c68f44 Automatically generated installer lang files 2014-02-15 00:43:55 +00:00
AMOS bot 798b7b04af Automatically generated installer lang files 2014-02-12 00:42:56 +00:00
AMOS bot 88c96fd2f3 Automatically generated installer lang files 2014-02-11 00:42:15 +00:00
Tim Hunt 16ae4b809d MDL-44018 quesiton variant was not backed up or restored. 2014-02-06 09:53:45 +00:00
AMOS bot 35f6017d21 Automatically generated installer lang files 2014-02-02 00:42:21 +00:00
AMOS bot 085abbb371 Automatically generated installer lang files 2014-01-31 00:43:06 +00:00
Petr Skoda c3cd5e1db9 MDL-43344 upgrade to latest Flowplayer 2014-01-30 10:33:40 +08:00
AMOS bot 1f771e4103 Automatically generated installer lang files 2014-01-22 00:55:32 +00:00
AMOS bot cc18262792 Automatically generated installer lang files 2014-01-21 00:41:41 +00:00
AMOS bot ba7340108e Automatically generated installer lang files 2014-01-20 00:41:25 +00:00
AMOS bot 9dadea2557 Automatically generated installer lang files 2014-01-19 00:41:59 +00:00
AMOS bot 832d5b682d Automatically generated installer lang files 2014-01-16 00:43:20 +00:00
AMOS bot a2c9045867 Automatically generated installer lang files 2014-01-14 00:45:42 +00:00
Eloy Lafuente (stronk7) 76b9a9407f Moodle release 2.4.8 2014-01-11 15:57:17 +01:00
Damyon Wiese 532df04583 weekly release 2.4.7+ 2014-01-10 14:19:59 +08:00
Damyon Wiese f8d0e9ad5b Merge branch 'install_24_STABLE' of git://git.moodle.org/moodle-install into MOODLE_24_STABLE 2014-01-10 14:19:55 +08:00
Eloy Lafuente (stronk7) a4a01b4b96 MDL-36721 make upgrade queries cross-db 2014-01-10 11:24:52 +08:00
AMOS bot 93d224f333 Automatically generated installer lang files 2014-01-09 00:42:16 +00:00
Eloy Lafuente (stronk7) 09aa9e90b9 Merge branch 'wip-MDL-42310-24' of git://github.com/abgreeve/moodle into MOODLE_24_STABLE 2014-01-08 01:52:58 +01:00
Eloy Lafuente (stronk7) 143dc29e0d Merge branch 'm24_MDL-43508_Invalid_String_Identifier' of https://github.com/scara/moodle into MOODLE_24_STABLE 2014-01-08 00:46:31 +01:00
Dan Poltawski cf51a722c7 Merge branch 'm24_MDL-43482_Lot_Of_Passed_By_Reference_Messages' of https://github.com/scara/moodle into MOODLE_24_STABLE 2014-01-07 17:20:57 +08:00
Andrew Nicols 076792a3f1 MDL-43411 JavaScript: Correct checks for section support to use helper function 2014-01-07 12:51:01 +08:00
Dan Poltawski 32d89e0c0d Merge branch 'm24_MDL-40379_Prevent_Some_Mobile_Network_Providers_From_Modifying_Content' of https://github.com/scara/moodle into MOODLE_24_STABLE 2014-01-07 12:43:34 +08:00
Rajesh Taneja 8b2dca7427 MDL-42643 course: Member in same group should only loginas
If course groupmode is set to SEPARATEGROUPS, and user doesn't have
site:accessallgroups capability than only allow user to loginas if
current user is in same group as loginas user
2014-01-07 11:05:45 +08:00
Tony Butler a4720e016e MDL-43373 core_enrol: Display enrolments dimmed if outside of start or end times 2014-01-07 10:44:39 +08:00
Damyon Wiese f8acb4a7de Merge branch 'MDL-43448_24' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2014-01-07 09:15:08 +08:00
Tim Hunt 31a70002d3 MDL-43448 Links to the gradebook not fixed on restore.
Note we can only fix certain generic links, we can't handle ones like
/grade/report/{reportname}/index.php, but fortunately, we were only
using the generic ones.

I added a couple of other likely things too (badges and participants
list).
2014-01-06 12:31:28 +00:00
Damyon Wiese 506bae6791 Merge branch 'w01_MDL-36721_m24_passlog' of https://github.com/skodak/moodle into MOODLE_24_STABLE 2014-01-06 14:49:39 +08:00
Dan Poltawski e9576ab6b4 Merge branch '43349-24' of git://github.com/samhemelryk/moodle into MOODLE_24_STABLE 2014-01-06 14:21:50 +08:00
Rajesh Taneja a902db80d6 MDL-42883 Administration: Check sessionkey before taking action on user profile fields 2014-01-06 13:59:12 +08:00
Sam Hemelryk b8ac884f9d Merge branch 'MDL-37962_beep_24' of https://github.com/andyjdavis/moodle into MOODLE_24_STABLE 2014-01-06 11:17:47 +13:00
Sam Hemelryk 6e2745d238 Merge branch 'MDL-42212-24' of git://github.com/FMCorz/moodle into MOODLE_24_STABLE 2014-01-06 10:29:55 +13:00
Michael Milette b9bdec3f35 MDL-42310 feedback mod - Enable filtering of multichoice and multichoice rated controls
Conflicts:
	mod/feedback/item/multichoice/lib.php
	mod/feedback/item/multichoicerated/lib.php

Signed-off-by: Michael Milette <michael.milette@instruxmedia.com>
2014-01-03 10:35:41 +08:00
Sam Hemelryk 87f62d8e09 MDL-43349 cache: init now checks store requirements are met 2014-01-02 09:22:28 +13:00
AMOS bot 76f354d196 Automatically generated installer lang files 2013-12-30 00:43:27 +00:00
AMOS bot fb327938c9 Automatically generated installer lang files 2013-12-29 00:43:28 +00:00
Matteo Scaramuccia 6cafb62b1e MDL-40379 Files Prevent mobile network providers from modifying content. 2013-12-28 14:07:28 +01:00
Matteo Scaramuccia 73c8dc3692 MDL-43508 Quiz Invalid get_string() identifier. 2013-12-28 11:32:55 +01:00
Petr Škoda 6537f3525e MDL-36721 do not store passwords in config logs 2013-12-27 11:39:07 +08:00
AMOS bot 199ca97486 Automatically generated installer lang files 2013-12-25 00:42:53 +00:00
Matteo Scaramuccia adf8e5ce6e MDL-43482 Chat Lot of "Only variables should be passed by reference". 2013-12-24 11:12:17 +01:00
Sam Hemelryk 14d1f4e42e weekly release 2.4.7+ 2013-12-24 17:17:36 +13:00
Sam Hemelryk 52c4f06af3 Merge branch 'install_24_STABLE' of git://git.moodle.org/moodle-install into MOODLE_24_STABLE 2013-12-24 17:17:34 +13:00
Sam Hemelryk 27b1ba527a Merge branch 'MDL-41246-moodle24' of git://github.com/StudiUM/moodle into MOODLE_24_STABLE 2013-12-24 11:41:15 +13:00
Sam Hemelryk 085c2fd228 Merge branch 'MDL-43438-24' of git://github.com/FMCorz/moodle into MOODLE_24_STABLE 2013-12-24 11:22:37 +13:00
Sam Hemelryk 235b5a0c1d Merge branch 'MDL-43250-24' of git://github.com/damyon/moodle into MOODLE_24_STABLE 2013-12-24 11:03:51 +13:00
AMOS bot 04d6be9bb2 Automatically generated installer lang files 2013-12-23 12:40:16 +00:00
AMOS bot f66f661ce0 Automatically generated installer lang files 2013-12-23 12:26:30 +00:00
Sam Hemelryk 7f4fa839fe Merge branch 'MDL-35032-24' of git://github.com/FMCorz/moodle into MOODLE_24_STABLE 2013-12-23 15:57:25 +13:00
Sam Hemelryk faf4e51da9 Merge branch 'MDL-30195-24' of git://github.com/FMCorz/moodle into MOODLE_24_STABLE 2013-12-23 14:35:24 +13:00
Sam Hemelryk a7dae3ef8e Merge branch 'w52_MDL-43367_m24_contextpath' of https://github.com/skodak/moodle into MOODLE_24_STABLE 2013-12-23 14:31:18 +13:00
Sam Hemelryk a35428cf86 Merge branch 'MDL-34182-24' of git://github.com/andrewnicols/moodle into MOODLE_24_STABLE 2013-12-23 08:15:48 +13:00
Petr Škoda f06d89b2b5 MDL-43367 stop returning of bogus context children when path unknown
This also prevents deletion of system context.
2013-12-22 16:01:25 +08:00
Damyon Wiese 346ef562dc weekly release 2.4.7+ 2013-12-20 11:57:15 +08:00
Damyon Wiese 2718718464 Merge branch 'install_24_STABLE' of git://git.moodle.org/moodle-install into MOODLE_24_STABLE 2013-12-20 11:57:12 +08:00
Andrew Nicols 05c42f7539 MDL-34182 Repositories: Check for and warn on invalid output in the file picker 2013-12-19 10:29:56 +08:00
Andrew Nicols 05ca6dadf8 MDL-34182: Add functions to warn of output in AJAX scripts
We need to be able to capture output when including contributed code as it
may add additional content which makes makes the json we output invalid.

We only warn of these errors if the site is in debugdeveloper, otherwise
we silently drop them.
2013-12-19 10:29:56 +08:00
Eloy Lafuente (stronk7) 4226a54d53 Revert "MDL-43306 restore: fix grade item sortorder restoration"
This reverts commit bea3c273a3.
2013-12-19 02:15:51 +01:00
AMOS bot 02d052026c Automatically generated installer lang files 2013-12-19 00:44:18 +00:00
Jean-Philippe Gaudreau 19ef016778 MDL-41246 cache: Fix PHP notice of non well formed numeric values for the memcache store 2013-12-18 08:53:41 -05:00
Frederic Massart 5e64cff4f1 MDL-43438 mod_assignment: Prevent double inclusion of plugin files 2013-12-18 09:17:00 +01:00
Dan Poltawski e575b2f6d1 Merge branch 'MDL-41198-24' of https://github.com/mr-russ/moodle into MOODLE_24_STABLE 2013-12-18 15:00:11 +08:00
Russell Smith 3cc1d4b9fe MDL-41198 lib: Add comment about the changes to srand on adodb 2013-12-18 17:05:48 +11:00
Russell Smith a7b9ce4caf MDL-41198 lib: Allow PHP to generate random seed on script start
Most srand instances are removed to allow PHP to do the work.

srand was left for group randomization due to the method used.

Conflicts:

	lib/tests/accesslib_test.php
2013-12-18 17:05:09 +11:00
Russell Smith 17d617dc66 MDL-41198 lib: Allow PHP to generate random seed on script start
All mt_srand instances are removed to allow PHP to do the work.
2013-12-18 17:04:11 +11:00
Sam Hemelryk ceb23943ee Revert "MDL-42104: trap tab focus within dialog modal,"
This reverts commit 172321d7d8.
2013-12-18 15:54:21 +13:00
Russell Smith 44eaae9610 MDL-41292 cache: only update identifiers if they change 2013-12-18 02:23:55 +01:00
Sam Hemelryk 47358bdaa5 Merge branch 'MDL-42104_m24' of git://github.com/rwijaya/moodle into MOODLE_24_STABLE 2013-12-18 11:59:28 +13:00
Sam Hemelryk a39ff69d58 Merge branch 'MDL-38698-24' of git://github.com/FMCorz/moodle into MOODLE_24_STABLE 2013-12-18 09:21:10 +13:00
Eloy Lafuente (stronk7) c70955dfa9 Merge branch 'MDL-43306-24' of git://github.com/danpoltawski/moodle into MOODLE_24_STABLE 2013-12-17 10:29:51 +01:00
Frederic Massart 8187097dc0 MDL-38698 filter_urltolink: Remove performance test in Unit Test 2013-12-17 07:04:56 +01:00
Frederic Massart 3d947610a0 MDL-38698 filter_urltolink: Do not link the URL property of CSS 2013-12-17 07:04:56 +01:00
Marina Glancy 003638cb8d Merge branch 'MDL-37679-24' of git://github.com/phalacee/moodle into MOODLE_24_STABLE 2013-12-17 16:44:36 +11:00
Mark Nielsen c30533cfed MDL-37679 Course: Adding section to page title on section only pages 2013-12-17 11:43:14 +08:00
Marina Glancy 6af74e102c Merge branch 'MDL-41075-24' of git://github.com/mouneyrac/moodle into MOODLE_24_STABLE 2013-12-17 11:24:46 +11:00
Russell Smith 18559a0df6 MDL-39725 database: Add statistics collection functions
Conflicts:
	lib/dml/moodle_database.php
2013-12-17 10:29:32 +13:00
Russell Smith eb17e8ecd5 MDL-39725 database: Include stats collections in unit tests
Conflicts:
	lib/ddl/tests/ddl_test.php
2013-12-17 10:29:29 +13:00
Russell Smith 96e60a978e MDL-39725 database: Apply database statistics update to daily stats 2013-12-17 10:29:25 +13:00
Sam Hemelryk 1b5fea23bd Merge branch 'MDL-25473-24' of git://github.com/phalacee/moodle into MOODLE_24_STABLE 2013-12-17 08:53:38 +13:00
Sam Hemelryk 00621ce929 Merge branch 'MDL-34321-24' of git://github.com/phalacee/moodle into MOODLE_24_STABLE 2013-12-17 08:47:26 +13:00
Frederic Massart 1ed22de511 MDL-30195 portfolio_googledocs: Allow export of rich HTML 2013-12-16 11:05:46 +01:00
Frederic Massart 48ffd4c677 MDL-42212 mod_lesson: Localise area names 2013-12-16 06:50:02 +01:00
Frederic Massart 4a59b3b555 MDL-42212 mod_lesson: Fix callbacks retrieving activity files 2013-12-16 06:50:01 +01:00
Jerome Mouneyrac 00f2669025 MDL-41075 Remove "Choose..." option from participants page. 2013-12-16 12:09:01 +08:00
Sam Hemelryk 4d3ee68536 Merge branch 'wip-mdl-21180-m24' of https://github.com/rajeshtaneja/moodle into MOODLE_24_STABLE 2013-12-16 15:43:12 +13:00
Rajesh Taneja 0034080028 MDL-21180 Gradebook: Consistent handling of change in aggregation
Change from/to GRADE_AGGREGATE_WEIGHTED_MEAN and GRADE_AGGREGATE_EXTRACREDIT_MEAN was only
handled prior to this patch. GRADE_AGGREGATE_SUM and GRADE_AGGREGATE_WEIGHTED_MEAN2 also
behave similar and should be handled same way
2013-12-16 09:59:46 +08:00
Andrew Davis c8d061208d MDL-43188 core_message:reimplemented the beep on new message functionality from 1.9 2013-12-16 09:41:20 +08:00
Marina Glancy 5df656cadd Merge branch 'MDL-37972-24' of git://github.com/phalacee/moodle into MOODLE_24_STABLE 2013-12-16 12:29:19 +11:00
Sam Hemelryk 6a68b92cff Merge branch 'MDL-40096-24' of git://github.com/damyon/moodle into MOODLE_24_STABLE 2013-12-16 13:50:44 +13:00
Sam Hemelryk 1ce52ce8db Merge branch 'MDL-40436-24' of git://github.com/FMCorz/moodle into MOODLE_24_STABLE 2013-12-16 11:30:14 +13:00
Sam Hemelryk 7d07632f7a Merge branch 'w51_MDL-42931_m24_env27' of https://github.com/skodak/moodle into MOODLE_24_STABLE 2013-12-16 11:17:19 +13:00
Sam Hemelryk 34965b0d31 Merge branch 'MDL-42085-24' of git://github.com/mouneyrac/moodle into MOODLE_24_STABLE 2013-12-16 11:11:05 +13:00
AMOS bot 7105ca55cb Automatically generated installer lang files 2013-12-14 00:45:09 +00:00
Frederic Massart 0d3e293c5c MDL-35032 mod_book: 1.9 backup restore convertis files to book area 2013-12-13 10:26:26 +01:00
Petr Škoda f4776ae40a MDL-42931 set new requirements for 2.7 2013-12-13 14:08:21 +08:00
Sam Hemelryk c9a3d370c4 weekly release 2.4.7+ 2013-12-13 16:59:18 +13:00
Sam Hemelryk ebe7179a88 Merge branch 'install_24_STABLE' of git://git.moodle.org/moodle-install into MOODLE_24_STABLE 2013-12-13 16:59:16 +13:00
AMOS bot aec655131b Automatically generated installer lang files 2013-12-13 00:42:16 +00:00
Frederic Massart 0291a8b492 MDL-40436 block_course_list: Fix bad context resolution
We were trying to get the course context of a remote course
from a completely unrelated ID. It would sometimes work if the
ID was matching the one of a local course. In other places
we are not trying to find a context for the remote course, we
simply use the $PAGE context in format_string. So the usage
of the context has been removed here too.
2013-12-12 09:09:29 +01:00
Jerome Mouneyrac fca50b95ef MDL-42085 Enrol: Always apply enrolment duration.
Before the fix, the startdates and duration fields were integrated to HTML code only
when the user clicked on the collapsible region to see them.
It was wrong because their values were not sent by the form
if ever the user didn't expand this Enrolment options region.
2013-12-12 16:08:06 +08:00
Damyon Wiese 5506f0482c MDL-43250 Assign: separate groups mode fix
When in separate groups mode, only get graders in a group that is in the course module grouping.

Conflicts:

	mod/assign/locallib.php
	mod/assign/tests/locallib_test.php
2013-12-12 13:33:10 +08:00
Jason Fowler 410fff85d0 MDL-34321 Assignment2.2 - Fixing submission count 2013-12-12 10:36:07 +08:00
Eloy Lafuente (stronk7) 9a5af14929 MDL-31410 paypal: fix problem on notifications
This commit fixes a PHP warning about using a
unititialised variable and also the problems when
notifications are enabled and there is not yet a
teacher in the course, defaulting to admin for student
notifications and preventing teacher notifications to happen.
2013-12-12 02:03:41 +01:00
Eloy Lafuente (stronk7) a847569195 Merge branch 'w50_MDL-31410_m24_paypalipn' of https://github.com/skodak/moodle into MOODLE_24_STABLE 2013-12-12 01:17:53 +01:00
Marina Glancy 7cbba9b175 MDL-43218 blog: prepare the blog navigation only when needed 2013-12-11 15:38:07 +13:00
Simon Coggins c21708e5e4 MDL-43218 navigation: Remove link to blogs when they are disabled 2013-12-11 15:38:01 +13:00
Sam Hemelryk 133870d759 Merge branch 'wip-MDL-43279-m24' of git://github.com/marinaglancy/moodle into MOODLE_24_STABLE 2013-12-11 10:57:46 +13:00
Eloy Lafuente (stronk7) 690c28e94a Merge branch '24STABLE-wip-MDL-43135' of https://github.com/jennymgray/moodle into MOODLE_24_STABLE 2013-12-10 19:47:21 +01:00
Jenny Gray 82882a9034 MDL-43135 Guest Enrol: new language string for with key icon
AMOS BEGIN
CPY [pluginname,enrol_guest], [guestaccess_withpassword,enrol_guest]
CPY [pluginname,enrol_guest], [guestaccess_withoutpassword,enrol_guest]
AMOS END
2013-12-10 11:13:52 +00:00
rwijaya 172321d7d8 MDL-42104: trap tab focus within dialog modal,
for filepicker and filemanager
2013-12-10 15:48:48 +08:00
Sam Chaffee bf139ab2c2 MDL-37972 Assignment: fixing settings link for upload single submissions 2013-12-10 14:09:15 +08:00
Dan Poltawski bea3c273a3 MDL-43306 restore: fix grade item sortorder restoration
Previously, restore was blindly inserting the old sort order into the
database, causing duplicate sortorders which lead to unpredicatble
sorting results.

Now we will use the api function to add it after the original sortorder,
this means if a duplicate exists in the original location, this item
will appear after it.
2013-12-10 12:33:52 +08:00
Marina Glancy 143c8e7489 Merge branch 'm24_MDL-43082_IE9_Compat_View_SVG_Say_No' of https://github.com/scara/moodle into MOODLE_24_STABLE 2013-12-10 14:48:25 +11:00
Marina Glancy 10f476e3a5 Merge branch 'MDL-43131_24' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2013-12-10 14:13:30 +11:00
Jason Fowler de1982ca05 MDL-25473 mediaplayer - prevent embedded videos from looping 2013-12-10 10:42:41 +08:00
Marina Glancy 79205746bc MDL-43279 block_blog_recent: fixed undefined property notice 2013-12-10 09:30:41 +11:00
Sam Hemelryk 71e7d2552b Merge branch 'm24_MDL-43019' of git://github.com/danmarsden/moodle into MOODLE_24_STABLE 2013-12-10 08:28:35 +13:00
Eloy Lafuente (stronk7) 2c4120360a Merge branch 'MDL-40003-24' of git://github.com/FMCorz/moodle into MOODLE_24_STABLE 2013-12-09 16:24:53 +01:00
Sam Chaffee 780a21f62a MDL-40003 mod_assign: Fixed submission comments not being restored 2013-12-09 11:04:02 +01:00
Damyon Wiese 9b378f3dc5 MDL-40096 assign: Prevent js error because uniqid() is not unique.
Use html_writer::random_id instead because it incorporates a static counter.
2013-12-09 10:27:34 +08:00
Marina Glancy ada23f968a Merge branch 'MDL-39618-24' of git://github.com/danpoltawski/moodle into MOODLE_24_STABLE 2013-12-09 11:03:30 +11:00
Petr Škoda 1da6855d1c MDL-31410 always send 200 in PayPal IPN response and hide all errors 2013-12-06 10:06:20 +08:00
Matteo Scaramuccia 3f007ca625 MDL-43082 Themes IE 9 Compatibility View doesn't support SVG. 2013-12-05 16:03:19 +01:00
Tim Hunt 71660782eb MDL-43131 qbank: Fix show question text when first viewing.
When you followed the link to the question bank, the checkbox for the
"Show question text in the question list" option correctly reflected the
user's preference, but what was actually shown in the question bank did
not.
2013-12-05 11:13:50 +00:00
Sam Hemelryk 8c5ca6531b MDL-39575 install: better handling of database creation error.
Implemented better handling of DML exceptions.
Added translation for cannotcreatedb exception.
2013-12-05 16:20:00 +08:00
Dan Poltawski 98f4a31ce0 weekly release 2.4.7+ 2013-12-05 15:09:59 +08:00
Dan Poltawski 9aeef50434 Merge branch 'install_24_STABLE' of git://git.moodle.org/moodle-install into MOODLE_24_STABLE 2013-12-05 15:09:56 +08:00
Dan Poltawski a6a85dc49b Merge branch 'MDL-43068_24' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2013-12-05 09:34:04 +08:00
Dan Marsden f2858a669a MDL-43019 SCORM: always use iframe instead of object - backported from 2.6 - fixes issue with IE 11 SCORM packages not loading 2013-12-05 13:15:04 +13:00
Tim Hunt 2c7a4204e7 MDL-43068 course&gradebook: fix use of new API in old branches. 2013-12-04 15:40:00 +00:00
AMOS bot 8ecbc00c77 Automatically generated installer lang files 2013-12-04 00:43:17 +00:00
Eloy Lafuente (stronk7) 45c03504ad Merge branch 'MDL-41446-m24' of git://github.com/sammarshallou/moodle into MOODLE_24_STABLE 2013-12-03 23:56:02 +01:00
Mark Nelson e7698992b7 MDL-43142 mnet: fixed typo in variable passed to get_string 2013-12-03 23:42:04 +01:00
Mark Nelson 309481dde0 MDL-43140 mnet: display header after redirects to avoid warning 2013-12-03 23:26:11 +01:00
Eloy Lafuente (stronk7) 532a6ba83c Merge branch 'moodle24-mdl33971' of https://github.com/tlock/moodle into MOODLE_24_STABLE 2013-12-03 17:37:15 +01:00
James Pratt 5267a05191 MDL-43079 quiz statistics : fix stats graph when all grades zero 2013-12-03 17:07:22 +01:00
Damyon Wiese 7183b0f995 Merge branch 'wip-mdl-43048-m24' of https://github.com/rajeshtaneja/moodle into MOODLE_24_STABLE 2013-12-03 11:44:28 +08:00
Damyon Wiese 16d88af2ab MDL-42904: Self enrol. Fix sloppy version numbers 2013-12-03 11:21:40 +08:00
Damyon Wiese cf569389ab Merge branch 'wip-mdl-42904-m24' of https://github.com/rajeshtaneja/moodle into MOODLE_24_STABLE 2013-12-03 11:20:47 +08:00
Sam Hemelryk dc76ce70b2 Merge branch 'w48_MDL-41819_m24_maxinputvars' of https://github.com/skodak/moodle into MOODLE_24_STABLE 2013-12-03 09:57:03 +13:00
Damyon Wiese 4818244d27 Merge branch 'm24_MDL-43039_SessionDiskFull_False_Positive' of https://github.com/scara/moodle into MOODLE_24_STABLE 2013-12-02 14:35:53 +08:00
Dan Poltawski 838a2120fb Merge branch 'wip-MDL-40191-m24' of git://github.com/marinaglancy/moodle into MOODLE_24_STABLE 2013-12-02 11:19:49 +08:00
Dan Poltawski d8d43cdc18 Merge branch 'MDL-43068_24' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2013-12-02 11:11:12 +08:00
AMOS bot e623b9afcc Automatically generated installer lang files 2013-12-02 00:42:58 +00:00
Petr Škoda db217f006c MDL-41819 try to work around max_input_vars restriction 2013-12-02 08:30:47 +08:00
Marina Glancy 60aae880a4 MDL-40191 navigation: do not throw an error if activity is not visible
navigationlib is not the place to check it, let the page itself decide what to do in this case
2013-12-02 10:50:20 +11:00
David Mudrák 22bf788f6b MDL-40191 MDLSITE-2455 Do not throw coding exception when the activity is not found
Under certain conditions, coding exception is thrown when fetching items from
the navigation bar. The patch prevents them. See more details in the tracker.
2013-12-02 10:50:20 +11:00
Sam Hemelryk 7842d36f71 MDL-43033 cache: added stats logging to set_many methods 2013-12-02 09:29:32 +13:00
Sam Hemelryk fc9a82669f MDL-43033 pix: backport warning icon 2013-12-02 09:29:32 +13:00
Sam Hemelryk e88938d9cc MDL-43033 cache: fixed display of definition stores in admin interface 2013-12-02 09:29:31 +13:00
Sam Hemelryk d7b0846147 MDL-43033 cache: added a warning icon for mappings
We now show a warning icon with an explanatory alt if the user
has mapped a store as a mode default that doesn't not fulfill the
requirements of every known definition.
2013-12-02 09:29:31 +13:00
Sam Hemelryk 95b732848e MDL-43033 cache: fixed mode map event invalidation scenario 2013-12-02 09:29:31 +13:00
Sam Hemelryk afab006332 MDL-43033 cache: added stats logging to get_many methods 2013-12-02 09:29:31 +13:00
Matteo Scaramuccia 71d414b090 MDL-43039 Libraries "The session partition is full." false positive. 2013-11-30 14:32:24 +01:00
Dan Poltawski 828aff67d9 weekly release 2.4.7+ 2013-11-29 12:52:44 +08:00
Dan Poltawski 83f506da1e Merge branch 'install_24_STABLE' of git://git.moodle.org/moodle-install into MOODLE_24_STABLE 2013-11-29 12:52:42 +08:00
Tim Hunt 553672355c MDL-43068 course&gradebook: show/hide cm & CONTROLS_GRADE_VISIBILITY
Making a quiz visible on the course page, of via the settings form,
could cause the grade item to become visible in the gradebook, even
though the quiz supports FEATURE_CONTROLS_GRADE_VISIBILITY to ensure
that when the grades are hidden in the quiz settings, they do not appear
in the gradebook.

Now, if a module supports FEATURE_CONTROLS_GRADE_VISIBILITY, then
set_coursemodule_visible calls the _grade_item_update callback to update
the grade item(s).

In addition, there was a bug when saving the quiz form, where it used
the value of $cm->visible from the database, which was wrong if the
value of cm->visible had just been changed on the setting form.
2013-11-28 10:03:56 +00:00
AMOS bot eaccc920db Automatically generated installer lang files 2013-11-28 09:12:45 +00:00
Tim Lock 416d7a94be MDL-33971: When viewing course log entries for Quiz View Summary a number is displayed not the quiz name 2013-11-28 07:50:42 +10:30
Rajesh Taneja 70f62d8944 MDL-43048 block_tags: Initalised content->text for tags block 2013-11-27 14:38:07 +08:00
Dan Poltawski c96069566a Merge branch 'wip-mdl-41635-m24' of git://github.com/rajeshtaneja/moodle into MOODLE_24_STABLE 2013-11-27 11:14:52 +08:00
Rajesh Taneja da568835a5 MDL-41635 Report: Added string to action link for display 2013-11-27 09:56:34 +08:00
Tim Lock 9bd1ba9ee6 MDL-42998: Fix user selection search options autoselectunique. 2013-11-27 09:09:52 +08:00
AMOS bot f0cfc08699 Automatically generated installer lang files 2013-11-27 00:48:27 +00:00
Eloy Lafuente (stronk7) 62daeecc11 Merge branch 'm24_MDL-43045' of git://github.com/totara/moodle into MOODLE_24_STABLE 2013-11-26 21:30:46 +01:00
Dan Poltawski 7d784e4ade Merge branch 'MDL-43000_24' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2013-11-26 15:06:41 +08:00
Dan Poltawski e5ca507c6e Merge branch 'wip-mdl-41635-m24' of git://github.com/rajeshtaneja/moodle into MOODLE_24_STABLE 2013-11-26 10:25:05 +08:00
Sam Hemelryk 10123d02f6 Merge branch 'MDL-43005-24' of git://github.com/ankitagarwal/moodle into MOODLE_24_STABLE 2013-11-26 08:41:48 +13:00
Simon Coggins 3476a15b0f MDL-43045 report: Fix missing role name in security overview report 2013-11-26 08:24:09 +13:00
Damyon Wiese 689c45e54e Merge branch 'wip-MDL-41257-24' of git://github.com/abgreeve/moodle into MOODLE_24_STABLE 2013-11-25 13:47:10 +08:00
Dan Poltawski 117c147757 Merge branch 'w48_MDL-37016_m24_sloppymysql' of https://github.com/skodak/moodle into MOODLE_24_STABLE 2013-11-25 13:41:00 +08:00
Damyon Wiese 45d9d6d710 Merge branch 'wip-mdl-42924-m24' of https://github.com/rajeshtaneja/moodle into MOODLE_24_STABLE 2013-11-25 13:17:13 +08:00
Dan Poltawski 717612c7aa Merge branch 'MDL-42547_m24' of https://github.com/markn86/moodle into MOODLE_24_STABLE 2013-11-25 10:37:40 +08:00
Rajesh Taneja ccdfa44df0 MDL-42904 self_enrol: Set customint1 if it's null 2013-11-25 10:10:48 +08:00
Eloy Lafuente (stronk7) 0ecaebd487 Merge branch 'wip-MDL-29071-m24' of git://github.com/marinaglancy/moodle into MOODLE_24_STABLE 2013-11-24 16:51:37 +01:00
Petr Škoda 709752225c MDL-37016 fix sloppy mysql nulls in event.uuid 2013-11-24 15:13:27 +08:00
Tim Hunt 70127f1f3c MDL-43000 shortanswer qtype: handle patterns with many *s
Teachers were typing patterns like
********************************<em>****************************</em>
which translates into a pattern like .*.*.*.*, which is very inefficient
to try to match, althought it is equivalent ot a single .*. At a certain
point preg was just giving up.

Since people actually do this, we should simplify the regex by treating
runs of * like a single *.
2013-11-22 11:34:38 +00:00
Eloy Lafuente (stronk7) a61d4eff50 weekly release 2.4.7+ 2013-11-21 19:33:30 +01:00
Eloy Lafuente (stronk7) 9c3bfbfa3f Merge branch 'install_24_STABLE' of git://git.moodle.org/moodle-install into MOODLE_24_STABLE 2013-11-21 19:33:25 +01:00
Ankit Agarwal 9e46c17505 MDL-43005 blogs: Fix issues with blog tags 2013-11-21 13:39:43 +08:00
Marina Glancy 6cf0f60c7d MDL-29071 ddl: unittest for objects name length 2013-11-21 12:41:03 +11:00
Marina Glancy f0a9fb36a3 MDL-29071 ddl: make sure object name never exceeds max length
Many thanks to Ray Bon for finding the problem
2013-11-21 12:40:58 +11:00
Mark Nelson 8fb24d2b43 MDL-42547 tool_uploaduser: trim values before uploading users 2013-11-20 00:38:14 -08:00
FilipBenco 7da998aee8 MDL-41635 Reports: Added missing string in loglive reports
Under course administration navigation log live doesn't appear
or appear with empty string (in some themes), this is happening
because text passed is empty.
2013-11-20 11:29:23 +08:00
Marina Glancy c577657600 Merge branch 'MDL-42767-24' of git://github.com/ankitagarwal/moodle into MOODLE_24_STABLE 2013-11-20 13:24:29 +11:00
Michael Milette 4dba407997 MDL-41257 calendar: Day and Upcoming-Events view not processed through text_filters() function
This fix adds text filtering to the Calendar Day view and Upcoming Events view, specifically the event name and event description.

Signed-off-by: Michael Milette <michael.milette@instruxmedia.com>
2013-11-20 10:18:20 +08:00
Rajesh Taneja 183c7cb3f5 MDL-42924 Administration: use normalize_component to extract plugin name and type 2013-11-19 12:02:16 +08:00
Sam Hemelryk 5ba78ea1ff MDL-42060 block_course_list: fixed sorting of mycourses 2013-11-19 10:42:20 +08:00
Dan Poltawski b6ebf8d770 Merge branch 'MDL-42181_24' of git://github.com/mkassaei/moodle into MOODLE_24_STABLE 2013-11-19 10:07:09 +08:00
Damyon Wiese 199e6445f8 Merge branch 'm24_MDL-40223' of git://github.com/danmarsden/moodle into MOODLE_24_STABLE 2013-11-19 09:51:53 +08:00
AMOS bot 3cf10869b6 Automatically generated installer lang files 2013-11-19 00:40:30 +00:00
Dan Marsden 2e0a4ca447 MDL-40223 SCORM: pass limit into function instead of hardcoding to allow cross-db 2013-11-19 13:31:33 +13:00
Sam Hemelryk 12bba6cc09 Merge branch 'MDL-41316-24' of git://github.com/ankitagarwal/moodle into MOODLE_24_STABLE 2013-11-19 12:27:45 +13:00
Sam Hemelryk c53ee31d46 Merge branch 'MDL-42863_24' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2013-11-19 12:03:14 +13:00
Sam Hemelryk 7bfd342445 Merge branch 'MDL-42865_24' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2013-11-19 11:50:23 +13:00
Sam Hemelryk 7d181fd82d Merge branch 'MDL-42853-24' of git://github.com/FMCorz/moodle into MOODLE_24_STABLE 2013-11-19 10:07:49 +13:00
Ankit Agarwal 34f1a739f1 MDL-42767 notes: Delete notes on a course delete 2013-11-18 16:09:16 +08:00
Dan Poltawski f7a061c2c1 Merge branch 'MDL-42880b_24' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2013-11-18 15:38:50 +08:00
Damyon Wiese 67c0ced049 Merge branch 'm24_MDL-41695' of git://github.com/danmarsden/moodle into MOODLE_24_STABLE 2013-11-18 15:21:37 +08:00
Dan Marsden 0b0e98d794 MDL-41695 SCORM: allow unlimited decimal places in CMIDecimal 2013-11-18 10:30:15 +13:00
Dan Marsden e0a4008f4e MDL-40223 SCORM: update scorm->launch param after restore - also check that scorm->launch is valid. 2013-11-18 09:54:39 +13:00
Tim Hunt cade07b451 MDL-42880 quiz settings: remove unnecessary disabledif rules.
These rules were causing problems in the case where the form was
sumitted with validation errors. In that case, the During the attempt ->
The attempt checkbox was becoming unset, and hence the other During the
attmept checkboxes became disabled, and the values were not saved.

Thanks to Sam Marshall for suggesting this fix.
2013-11-15 19:20:20 +00:00
M Kassaei 00d737bbe8 MDL-42181 quiz nav: highight all buttons when all Qs on one page 2013-11-15 16:33:45 +00:00
Tim Hunt 24e3e96a78 MDL-42865 Make XMLDB foreign key check more robust.
Otherwise, installing one bad add-on can completely break this report.
2013-11-15 14:57:30 +00:00
Tim Hunt 6c6ae7361c MDL-42863 make capabilities overview more fault-tolerant. 2013-11-15 14:57:18 +00:00
Eloy Lafuente (stronk7) 9f887be6a6 weekly release 2.4.7+ 2013-11-15 11:14:49 +01:00
Eloy Lafuente (stronk7) c250a0d330 Merge branch 'install_24_STABLE' of git://git.moodle.org/moodle-install into MOODLE_24_STABLE 2013-11-15 11:14:44 +01:00
Frederic Massart 546a27cb50 MDL-42912 mod_glossary: Fix typo and call to core_text 2013-11-15 09:43:44 +01:00
Eloy Lafuente (stronk7) edab808254 Merge branch 'wip-MDL-42912-m24' of git://github.com/marinaglancy/moodle into MOODLE_24_STABLE 2013-11-15 02:07:01 +01:00
Marina Glancy 3d4c212f85 MDL-42912 glossary: oracle-compatibility of SQL queries 2013-11-15 11:54:44 +11:00
Frederic Massart 48488ae1d7 MDL-42853 theme: Fix incorrect CSS select and place right rules 2013-11-14 09:46:53 +08:00
AMOS bot dd031e7462 Automatically generated installer lang files 2013-11-14 00:45:23 +00:00
Damyon Wiese 28177a0a07 Merge branch 'MDL-42598_24' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2013-11-13 14:35:20 +08:00
Damyon Wiese 2847f9c8fc Merge branch 'MDL-33536-24' of git://github.com/damyon/moodle into MOODLE_24_STABLE 2013-11-13 13:12:19 +08:00
Ankit Agarwal a761cef6df MDL-41316 tool_spamcleaner: AS keyword is not allowed in sql qeries for table alias as Oracle doesn't support it 2013-11-13 11:32:18 +08:00
Damyon Wiese 3699331396 MDL-33536 Navigation: Add missing require_once for safety. 2013-11-13 10:05:37 +08:00
AMOS bot 1ef6b2298e Automatically generated installer lang files 2013-11-13 00:47:35 +00:00
Eloy Lafuente (stronk7) f77c1d2098 Merge branch 'MDL-42839-m24' of git://github.com/sammarshallou/moodle into MOODLE_24_STABLE 2013-11-13 01:10:39 +01:00
Marina Glancy 61a9dd5cd9 Merge branch 'MDL-38574_24' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2013-11-13 11:06:38 +11:00
Eloy Lafuente (stronk7) e39e0243b2 Merge branch 'wip_24_mdl-42723' of https://github.com/iarenaza/moodle into MOODLE_24_STABLE 2013-11-13 00:53:23 +01:00
Eloy Lafuente (stronk7) ef2a27eac1 Merge branch 'wip-MDL-42672-m24' of git://github.com/marinaglancy/moodle into MOODLE_24_STABLE 2013-11-12 20:07:22 +01:00
sam marshall 903c5bf341 MDL-42839 MUC: Memcache server configuration too sensitive to whitespace 2013-11-12 12:40:09 +00:00
Marina Glancy 32ef8734a9 Merge branch 'MDL-42540_24' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2013-11-12 14:50:08 +11:00
Damyon Wiese e87d98d541 Merge branch '42806-24' of git://github.com/samhemelryk/moodle into MOODLE_24_STABLE 2013-11-12 10:05:18 +08:00
AMOS bot eba496e2ae Automatically generated installer lang files 2013-11-12 00:53:15 +00:00
Eloy Lafuente (stronk7) 715cd44d3a Merge branch 'MDL-40481_24' of git://github.com/timhunt/moodle into MOODLE_24_STABLE 2013-11-12 00:41:46 +01:00
Tim Hunt 50a946f5bb MDL-42598 quiz variant randomisation not random enough.
A student would get the same question variants (for example for a
calculated question) on their first attempt at both copies of a
duplicated quiz.
2013-11-11 14:15:36 +00:00
Tim Hunt 50e9f0e048 MDL-42540 quiz manual grading should have setType 2013-11-11 14:15:25 +00:00
Tim Hunt bf2324ef15 MDL-40481 quiz responses report needs cols need text_sorting 2013-11-11 14:15:14 +00:00
Tim Hunt 53d3cd568c MDL-38574 qtype chooser: quick fix to make it fit on-screen.
MDL-32729 will provide a better fix for this, but we may as well apply
this quick fix on stable branches.
2013-11-11 14:15:02 +00:00
Marina Glancy 49202ec3e6 NOBUG: convert tabs to whitespaces 2013-11-11 21:27:08 +11:00
Marina Glancy 42d72f3297 Merge branch 'MDL-42043-24' of git://github.com/FMCorz/moodle into MOODLE_24_STABLE 2013-11-11 21:11:29 +11:00
Sam Hemelryk be56d390b7 MDL-42806 block_mentees: can only be docked if it has a valid title set. 2013-11-11 17:23:51 +08:00
Frederic Massart 2f5768b983 MDL-42043 theme: Use $theme instead of $OUTPUT for pix_url()
Conflicts:

	theme/afterburner/lib.php
2013-11-11 13:20:19 +08:00
Renaat Debleu 65930a0593 MDL-42795 course: fixed param course in sql
course_sections has course field and not courseid, hence replaced it with course.
2013-11-11 10:49:39 +08:00
Marina Glancy 62b41d8dda MDL-42672 blocks: warnings on /mod/xxx/index.php for frontpage course 2013-11-06 12:32:17 +11:00
Iñaki Arenaza bcad5fa2de MDL-42723: Hide and handle LDAP error when user not in context being checked
MDL-41304 only fixed the case when 'Search subcontext' is enabled. We need to
fix the case when it's not enabled too.

While silencing errors with an @ should be avoided if possible, there's no
other way to prevent the warnings in this case.
2013-11-05 17:13:16 +01:00
Sam Hemelryk 5b09d5e8cf MDL-33536 navigation: hide hidden categories from the navbar
Conflicts:
	lib/navigationlib.php
2013-10-31 17:13:44 +08:00
sam marshall 2d124e8f4e MDL-41446 Completion: Incorrectly marks complete when grade data present with no actual grade 2013-09-06 13:03:28 +01:00
245 changed files with 3647 additions and 812 deletions
+123
View File
@@ -1007,4 +1007,127 @@
</PHP_SETTING>
</PHP_SETTINGS>
</MOODLE>
<MOODLE version="2.7" 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">
</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_CHECKS>
</MOODLE>
</COMPATIBILITY_MATRIX>
+7 -5
View File
@@ -16,8 +16,6 @@ require_login();
admin_externalpage_setup('ssoaccesscontrol');
echo $OUTPUT->header();
if (!extension_loaded('openssl')) {
print_error('requiresopenssl', 'mnet');
}
@@ -65,9 +63,11 @@ if (!empty($action) and confirm_sesskey()) {
if (mnet_update_sso_access_control($idrec->username, $idrec->mnet_host_id, $accessctrl)) {
if ($accessctrl == 'allow') {
redirect('access_control.php', get_string('ssl_acl_allow','mnet', array('uset'=>$idrec->username, 'host'=>$mnethosts[$idrec->mnet_host_id])));
} elseif ($accessctrl == 'deny') {
redirect('access_control.php', get_string('ssl_acl_deny','mnet', array('user'=>$idrec->username, 'host'=>$mnethosts[$idrec->mnet_host_id])));
redirect('access_control.php', get_string('ssl_acl_allow','mnet', array('user' => $idrec->username,
'host' => $mnethosts[$idrec->mnet_host_id])));
} else if ($accessctrl == 'deny') {
redirect('access_control.php', get_string('ssl_acl_deny','mnet', array('user' => $idrec->username,
'host' => $mnethosts[$idrec->mnet_host_id])));
}
}
break;
@@ -118,6 +118,8 @@ if ($form = data_submitted() and confirm_sesskey()) {
exit;
}
echo $OUTPUT->header();
// Explain
echo $OUTPUT->box(get_string('ssoacldescr','mnet'));
// Are the needed bits enabled?
+9 -3
View File
@@ -139,9 +139,15 @@ if ($capability) {
// Put the contexts into a tree structure.
foreach ($contexts as $conid => $con) {
$context = context::instance_by_id($conid);
$parentcontextid = get_parent_contextid($context);
if ($parentcontextid) {
$contexts[$parentcontextid]->children[] = $conid;
try {
$parentcontext = $context->get_parent_context();
if ($parentcontext) { // Will be false if $context is the system context.
$contexts[$parentcontext->id]->children[] = $conid;
}
} catch (dml_missing_record_exception $e) {
// Ignore corrupt context tree structure here. Don't let it break
// showing the rest of the report.
continue;
}
}
@@ -46,7 +46,7 @@ class tool_qeupgradehelper_extract_options_form extends moodleform {
$qtypes = get_plugin_list('qtype');
foreach ($qtypes as $qtype => $notused) {
$qtypes[$qtype] = get_string($qtype, 'qtype_' . $qtype);
$qtypes[$qtype] = get_string('pluginname', 'qtype_' . $qtype);
}
$mform->addElement('header', 'h1', 'Either extract a specific question_session');
+6 -6
View File
@@ -179,12 +179,12 @@ function search_spammers($keywords) {
$conditions7 = '( '.implode(' OR ', $keywordfull7).' )';
$sql = "SELECT * FROM {user} WHERE deleted = 0 AND id <> :userid AND $conditions"; // Exclude oneself
$sql2 = "SELECT u.*, p.summary FROM {user} AS u, {post} AS p WHERE $conditions2 AND u.deleted = 0 AND u.id=p.userid AND u.id <> :userid";
$sql3 = "SELECT u.*, p.subject as postsubject FROM {user} AS u, {post} AS p WHERE $conditions3 AND u.deleted = 0 AND u.id=p.userid AND u.id <> :userid";
$sql4 = "SELECT u.*, c.content FROM {user} AS u, {comments} AS c WHERE $conditions4 AND u.deleted = 0 AND u.id=c.userid AND u.id <> :userid";
$sql5 = "SELECT u.*, m.fullmessage FROM {user} AS u, {message} AS m WHERE $conditions5 AND u.deleted = 0 AND u.id=m.useridfrom AND u.id <> :userid";
$sql6 = "SELECT u.*, fp.message FROM {user} AS u, {forum_posts} AS fp WHERE $conditions6 AND u.deleted = 0 AND u.id=fp.userid AND u.id <> :userid";
$sql7 = "SELECT u.*, fp.subject FROM {user} AS u, {forum_posts} AS fp WHERE $conditions7 AND u.deleted = 0 AND u.id=fp.userid AND u.id <> :userid";
$sql2 = "SELECT u.*, p.summary FROM {user} u, {post} p WHERE $conditions2 AND u.deleted = 0 AND u.id=p.userid AND u.id <> :userid";
$sql3 = "SELECT u.*, p.subject as postsubject FROM {user} u, {post} p WHERE $conditions3 AND u.deleted = 0 AND u.id=p.userid AND u.id <> :userid";
$sql4 = "SELECT u.*, c.content FROM {user} u, {comments} c WHERE $conditions4 AND u.deleted = 0 AND u.id=c.userid AND u.id <> :userid";
$sql5 = "SELECT u.*, m.fullmessage FROM {user} u, {message} m WHERE $conditions5 AND u.deleted = 0 AND u.id=m.useridfrom AND u.id <> :userid";
$sql6 = "SELECT u.*, fp.message FROM {user} u, {forum_posts} fp WHERE $conditions6 AND u.deleted = 0 AND u.id=fp.userid AND u.id <> :userid";
$sql7 = "SELECT u.*, fp.subject FROM {user} u, {forum_posts} fp WHERE $conditions7 AND u.deleted = 0 AND u.id=fp.userid AND u.id <> :userid";
$spamusers_desc = $DB->get_recordset_sql($sql, $params);
$spamusers_blog = $DB->get_recordset_sql($sql2, $params);
+5 -4
View File
@@ -231,10 +231,10 @@ if ($formdata = $mform2->is_cancelled()) {
$user->$key['text'] = $value;
$user->$key['format'] = FORMAT_MOODLE;
} else {
$user->$key = $value;
$user->$key = trim($value);
}
} else {
$user->$key = $value;
$user->$key = trim($value);
}
if (in_array($key, $upt->columns)) {
@@ -870,6 +870,7 @@ if ($formdata = $mform2->is_cancelled()) {
if ($rid) {
// find duration
$timeend = 0;
if (!empty($user->{'enrolperiod'.$i})) {
$duration = (int)$user->{'enrolperiod'.$i} * 60*60*24; // convert days to seconds
if ($duration > 0) { // sanity check
@@ -1001,7 +1002,7 @@ while ($linenum <= $previewrows and $fields = $cir->next()) {
$rowcols = array();
$rowcols['line'] = $linenum;
foreach($fields as $key => $field) {
$rowcols[$filecolumns[$key]] = s($field);
$rowcols[$filecolumns[$key]] = s(trim($field));
}
$rowcols['status'] = array();
@@ -1027,7 +1028,7 @@ while ($linenum <= $previewrows and $fields = $cir->next()) {
}
if (isset($rowcols['city'])) {
$rowcols['city'] = trim($rowcols['city']);
$rowcols['city'] = $rowcols['city'];
if (empty($rowcols['city'])) {
$rowcols['status'][] = get_string('fieldrequired', 'error', 'city');
}
@@ -53,6 +53,8 @@ class check_foreign_keys extends XMLDBCheckAction {
'noviolatedforeignkeysfound' => 'tool_xmldb',
'violatedforeignkeysfound' => 'tool_xmldb',
'violations' => 'tool_xmldb',
'unknowntable' => 'tool_xmldb',
'unknownfield' => 'tool_xmldb',
));
}
@@ -75,6 +77,19 @@ class check_foreign_keys extends XMLDBCheckAction {
}
$o.=' <li>' . $this->str['key'] . ': ' . $xmldb_key->readableInfo() . ' ';
$reftable = $xmldb_key->getRefTable();
if (!$dbman->table_exists($reftable)) {
$o.='<font color="red">' . $this->str['unknowntable'] . '</font>';
// Add the missing index to the list
$violation = new stdClass();
$violation->string = 'fkunknowntable';
$violation->table = $xmldb_table;
$violation->key = $xmldb_key;
$violation->reftable = $reftable;
$violatedkeys[] = $violation;
continue;
}
// Work out the SQL to find key violations.
$keyfields = $xmldb_key->getFields();
$reffields = $xmldb_key->getRefFields();
@@ -82,6 +97,19 @@ class check_foreign_keys extends XMLDBCheckAction {
$nullnessconditions = array();
$params = array();
foreach ($keyfields as $i => $field) {
if (!$dbman->field_exists($reftable, $reffields[$i])) {
$o.='<font color="red">' . $this->str['unknownfield'] . '</font>';
// Add the missing index to the list
$violation = new stdClass();
$violation->string = 'fkunknownfield';
$violation->table = $xmldb_table;
$violation->key = $xmldb_key;
$violation->reftable = $reftable;
$violation->reffield = $reffields[$i];
$violatedkeys[] = $violation;
continue 2;
}
$joinconditions[] = 't1.' . $field . ' = t2.' . $reffields[$i];
$xmldb_field = $xmldb_table->getField($field);
$default = $xmldb_field->getDefault();
@@ -97,7 +125,7 @@ class check_foreign_keys extends XMLDBCheckAction {
}
$nullnessconditions[] = 't2.id IS NULL';
$sql = 'SELECT count(1) FROM {' . $xmldb_table->getName() .
'} t1 LEFT JOIN {' . $xmldb_key->getRefTable() . '} t2 ON ' .
'} t1 LEFT JOIN {' . $reftable . '} t2 ON ' .
implode(' AND ', $joinconditions) . ' WHERE ' .
implode(' AND ', $nullnessconditions);
@@ -109,6 +137,7 @@ class check_foreign_keys extends XMLDBCheckAction {
$o.='<font color="red">' . $this->str['violations'] . '</font>';
// Add the missing index to the list
$violation = new stdClass;
$violation->string = 'fkviolationdetails';
$violation->table = $xmldb_table;
$violation->key = $xmldb_key;
$violation->numviolations = $violations;
@@ -145,8 +174,11 @@ class check_foreign_keys extends XMLDBCheckAction {
$violation->tablename = $violation->table->getName();
$violation->keyname = $violation->key->getName();
$r.= ' <li>' .get_string('fkviolationdetails', 'tool_xmldb', $violation) .
'<pre>' . s($violation->sql) . '; ' . s($violation->sqlparams) . '</pre></li>';
$r.= ' <li>' .get_string($violation->string, 'tool_xmldb', $violation);
if (!empty($violation->sql)) {
$r.= '<pre>' . s($violation->sql) . '; ' . s($violation->sqlparams) . '</pre>';
}
$r.= '</li>';
}
$r.= ' </ul>';
} else {
+4
View File
@@ -106,6 +106,8 @@ $string['fieldsusedinindex'] = 'This field is used as index';
$string['fieldsusedinkey'] = 'This field is used as key.';
$string['filemodifiedoutfromeditor'] = 'Warning: File locally modified while using the XMLDB Editor. Saving will overwrite local changes.';
$string['filenotwriteable'] = 'File not writeable';
$string['fkunknownfield'] = 'Foreign key {$a->keyname} on table {$a->tablename} points to a non-existent field {$a->reffield} in referenced table {$a->reftable}.';
$string['fkunknowntable'] = 'Foreign key {$a->keyname} on table {$a->tablename} points to a non-existent table {$a->reftable}.';
$string['fkviolationdetails'] = 'Foreign key {$a->keyname} on table {$a->tablename} is violated by {$a->numviolations} out of {$a->numrows} rows.';
$string['floatincorrectdecimals'] = 'Incorrect number of decimals for float field';
$string['floatincorrectlength'] = 'Incorrect length for float field';
@@ -183,6 +185,8 @@ $string['selecttable'] = 'Select table:';
$string['table'] = 'Table';
$string['tablenameempty'] = 'The table name cannot be empty';
$string['tables'] = 'Tables';
$string['unknownfield'] = 'Refers to an unknown field';
$string['unknowntable'] = 'Refers to an unknown table';
$string['unload'] = 'Unload';
$string['up'] = 'Up';
$string['view'] = 'View';
-1
View File
@@ -941,7 +941,6 @@ class auth_plugin_mnet extends auth_plugin_base {
// run the keepalive client
$this->keepalive_client();
// admin/cron.php should have run srand for us
$random100 = rand(0,100);
if ($random100 < 10) { // Approximately 10% of the time.
// nuke olden sessions
-1
View File
@@ -309,7 +309,6 @@ class entities {
$source = str_split($source, 1);
for ($i = 1; $i <= $length; $i++) {
mt_srand((double) microtime() * 1000000);
$num = mt_rand(1, count($source));
$response .= $source[$num - 1];
}
+23 -6
View File
@@ -129,20 +129,37 @@ class backup_course_task extends backup_task {
/**
* Code the transformations to perform in the course in
* order to get transportable (encoded) links
* @param string $content content in which to encode links.
* @return string content with links encoded.
*/
static public function encode_content_links($content) {
global $CFG;
$base = preg_quote($CFG->wwwroot, '/');
// Link to the course main page (it also covers "&topic=xx" and "&week=xx"
// because they don't become transformed (section number) in backup/restore
$search = '/(' . $base . '\/course\/view.php\?id\=)([0-9]+)/';
$content= preg_replace($search, '$@COURSEVIEWBYID*$2@$', $content);
// because they don't become transformed (section number) in backup/restore.
$content = self::encode_links_helper($content, 'COURSEVIEWBYID', '/course/view.php?id=');
// A few other key course links.
$content = self::encode_links_helper($content, 'GRADEINDEXBYID', '/grade/index.php?id=');
$content = self::encode_links_helper($content, 'GRADEREPORTINDEXBYID', '/grade/report/index.php?id=');
$content = self::encode_links_helper($content, 'USERINDEXVIEWBYID', '/user/index.php?id=');
return $content;
}
/**
* Helper method, used by encode_content_links.
* @param string $content content in which to encode links.
* @param unknown_type $name the name of this type of encoded link.
* @param unknown_type $path the path that identifies this type of link, up
* to the ?paramname= bit.
* @return string content with one type of link encoded.
*/
static private function encode_links_helper($content, $name, $path) {
global $CFG;
$base = preg_quote($CFG->wwwroot . $path, '/');
return preg_replace('/(' . $base . ')([0-9]+)/', '$@' . $name . '*$2@$', $content);
}
// Protected API starts here
/**
+1 -1
View File
@@ -210,7 +210,7 @@ abstract class backup_questions_activity_structure_step extends backup_activity_
$qas = new backup_nested_element($nameprefix . 'question_attempts');
$qa = new backup_nested_element($nameprefix . 'question_attempt', array('id'), array(
'slot', 'behaviour', 'questionid', 'maxmark', 'minfraction',
'slot', 'behaviour', 'questionid', 'variant', 'maxmark', 'minfraction',
'flagged', 'questionsummary', 'rightanswer', 'responsesummary',
'timemodified'));
+8 -2
View File
@@ -135,10 +135,16 @@ class restore_course_task extends restore_task {
static public function define_decode_rules() {
$rules = array();
$rules[] = new restore_decode_rule('COURSEVIEWBYID', '/course/view.php?id=$1', 'course');
// Link to the course main page (it also covers "&topic=xx" and "&week=xx"
// because they don't become transformed (section number) in backup/restore.
$rules[] = new restore_decode_rule('COURSEVIEWBYID', '/course/view.php?id=$1', 'course');
// A few other key course links.
$rules[] = new restore_decode_rule('GRADEINDEXBYID', '/grade/index.php?id=$1', 'course');
$rules[] = new restore_decode_rule('GRADEREPORTINDEXBYID', '/grade/report/index.php?id=$1', 'course');
$rules[] = new restore_decode_rule('USERINDEXVIEWBYID', '/user/index.php?id=$1', 'course');
return $rules;
}
// Protected API starts here
+3
View File
@@ -3837,6 +3837,9 @@ abstract class restore_questions_activity_structure_step extends restore_activit
$data->questionusageid = $this->get_new_parentid($nameprefix . 'question_usage');
$data->questionid = $question->newitemid;
if (!property_exists($data, 'variant')) {
$data->variant = 1;
}
$data->timemodified = $this->apply_date_offset($data->timemodified);
$newitemid = $DB->insert_record('question_attempts', $data);
@@ -0,0 +1,55 @@
<?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/>.
/**
* @package core_backup
* @category phpunit
* @copyright 2013 The Open University
* @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/moodle2/backup_course_task.class.php');
/**
* Tests for encoding content links in backup_course_task.
*
* The code that this tests is acutally in backup/moodle2/backup_course_task.class.php,
* but there is no place for unit tests near there, and perhaps one day it will
* be refactored so it becomes more generic.
*/
class backup_course_task_testcase extends basic_testcase {
/**
* Test the encode_content_links method for course.
*/
public function test_course_encode_content_links() {
global $CFG;
$encoded = backup_course_task::encode_content_links(
$CFG->wwwroot . '/course/view.php?id=123, ' .
$CFG->wwwroot . '/grade/index.php?id=123, ' .
$CFG->wwwroot . '/grade/report/index.php?id=123 and ' .
$CFG->wwwroot . '/user/index.php?id=123.');
$this->assertEquals('$@COURSEVIEWBYID*123@$, $@GRADEINDEXBYID*123@$, ' .
'$@GRADEREPORTINDEXBYID*123@$ and $@USERINDEXVIEWBYID*123@$.', $encoded);
}
}
+5
View File
@@ -73,6 +73,11 @@ abstract class base_moodleform extends moodleform {
*/
function __construct(base_ui_stage $uistage, $action=null, $customdata=null, $method='post', $target='', $attributes=null, $editable=true) {
$this->uistage = $uistage;
$attributes = (array)$attributes;
if (!isset($attributes['enctype'])) {
$attributes['enctype'] = 'application/x-www-form-urlencoded'; // Enforce compatibility with our max_input_vars hack.
}
parent::__construct($action, $customdata, $method, $target, $attributes, $editable);
}
/**
@@ -697,6 +697,7 @@ class restore_ui_stage_process extends restore_ui_stage {
$html .= html_writer::start_tag('form', array(
'action' => $url->out_omit_querystring(),
'class' => 'backup-restore',
'enctype' => 'application/x-www-form-urlencoded', // Enforce compatibility with our max_input_vars hack.
'method' => 'post'));
foreach ($url->params() as $name => $value) {
$html .= html_writer::empty_tag('input', array(
+1
View File
@@ -83,6 +83,7 @@ class block_blog_recent extends block_base {
$this->content = new stdClass();
$this->content->footer = '';
$this->content->text = '';
$context = $this->page->context;
+9 -3
View File
@@ -34,7 +34,14 @@ class block_course_list extends block_list {
if (empty($CFG->disablemycourses) and isloggedin() and !isguestuser() and
!(has_capability('moodle/course:update', context_system::instance()) and $adminseesall)) { // Just print My Courses
if ($courses = enrol_get_my_courses(NULL, 'visible DESC, fullname ASC')) {
// As this is producing navigation sort order should default to $CFG->navsortmycoursessort instead
// of using the default.
if (!empty($CFG->navsortmycoursessort)) {
$sortorder = 'visible DESC, ' . $CFG->navsortmycoursessort . ' ASC';
} else {
$sortorder = 'visible DESC, sortorder ASC';
}
if ($courses = enrol_get_my_courses(NULL, $sortorder)) {
foreach ($courses as $course) {
$coursecontext = context_course::instance($course->id);
$linkcss = $course->visible ? "" : " class=\"dimmed\" ";
@@ -120,8 +127,7 @@ class block_course_list extends block_list {
$this->content->items[] = get_string('remotecourses','mnet');
$this->content->icons[] = '';
foreach ($courses as $course) {
$coursecontext = context_course::instance($course->id);
$this->content->items[]="<a title=\"" . format_string($course->shortname, true, array('context' => $coursecontext)) . "\" ".
$this->content->items[]="<a title=\"" . format_string($course->shortname, true) . "\" ".
"href=\"{$CFG->wwwroot}/auth/mnet/jump.php?hostid={$course->hostid}&amp;wantsurl=/course/view.php?id={$course->remoteid}\">"
.$icon. format_string($course->fullname) . "</a>";
}
+9
View File
@@ -46,5 +46,14 @@ class block_mentees extends block_base {
return $this->content;
}
/**
* Returns true if the block can be docked.
* The mentees block can only be docked if it has a non-empty title.
* @return bool
*/
public function instance_can_be_docked() {
return parent::instance_can_be_docked() && isset($this->config->title) && !empty($this->config->title);
}
}
+1
View File
@@ -81,6 +81,7 @@ class block_tags extends block_base {
}
$this->content = new stdClass;
$this->content->text = '';
$this->content->footer = '';
// Get a list of tags.
+1 -1
View File
@@ -40,7 +40,7 @@ if (empty($CFG->enableblogs)) {
//correct tagid if a text tag is provided as a param
if (!empty($tag)) {
if ($tagrec = $DB->get_record_sql("SELECT * FROM {tag} WHERE ". $DB->sql_like('name', '?', false), array("%$tag%"))) {
if ($tagrec = $DB->get_record('tag', array('name' => $tag))) {
$tagid = $tagrec->id;
} else {
unset($tagid);
+6 -2
View File
@@ -957,8 +957,12 @@ function blog_get_headers($courseid=null, $groupid=null, $userid=null, $tagid=nu
$tagrec = $DB->get_record('tag', array('id'=>$tagid));
$PAGE->navbar->add($tagrec->name, $blogurl);
} elseif (!empty($tag)) {
$blogurl->param('tag', $tag);
$PAGE->navbar->add(get_string('tagparam', 'blog', $tag), $blogurl);
if ($tagrec = $DB->get_record('tag', array('name' => $tag))) {
$tagid = $tagrec->id;
$headers['filters']['tag'] = $tagid;
$blogurl->param('tag', $tag);
$PAGE->navbar->add(get_string('tagparam', 'blog', $tag), $blogurl);
}
}
// Append Search info
+1
View File
@@ -177,6 +177,7 @@ if (!empty($action) && confirm_sesskey()) {
$PAGE->set_title($title);
$PAGE->set_heading($SITE->fullname);
/* @var core_cache_renderer $renderer */
$renderer = $PAGE->get_renderer('core_cache');
echo $renderer->header();
+43 -2
View File
@@ -256,7 +256,7 @@ class cache_definition {
* An array of identifiers provided to this cache when it was initialised.
* @var array
*/
protected $identifiers = array();
protected $identifiers = null;
/**
* Key prefix for use with single key cache stores
@@ -582,6 +582,9 @@ class cache_definition {
* @return array
*/
public function get_identifiers() {
if (!isset($this->identifiers)) {
return array();
}
return $this->identifiers;
}
@@ -694,11 +697,22 @@ class cache_definition {
* @throws coding_exception
*/
public function set_identifiers(array $identifiers = array()) {
// If we are setting the exact same identifiers then just return as nothing really changed.
// We don't care about order as cache::make will use the same definition order all the time.
if ($identifiers === $this->identifiers) {
return;
}
foreach ($this->requireidentifiers as $identifier) {
if (!array_key_exists($identifier, $identifiers)) {
throw new coding_exception('Identifier required for cache has not been provided: '.$identifier);
}
}
if ($this->identifiers === null) {
// Initialize identifiers if they have not been.
$this->identifiers = array();
}
foreach ($identifiers as $name => $value) {
$this->identifiers[$name] = (string)$value;
}
@@ -820,7 +834,7 @@ class cache_definition {
'area' => $this->area,
'siteidentifier' => $this->get_cache_identifier()
);
if (!empty($this->identifiers)) {
if (isset($this->identifiers) && !empty($this->identifiers)) {
$identifiers = array();
foreach ($this->identifiers as $key => $value) {
$identifiers[] = htmlentities($key, ENT_QUOTES, 'UTF-8').'='.htmlentities($value, ENT_QUOTES, 'UTF-8');
@@ -867,4 +881,31 @@ class cache_definition {
protected function get_cache_identifier() {
return cache_helper::get_site_identifier();
}
/**
* Returns the possible sharing options that can be used with this defintion.
*
* @return int
*/
public function get_sharing_options() {
return $this->sharingoptions;
}
/**
* Returns the user entered sharing key for this definition.
*
* @return string
*/
public function get_user_input_sharing_key() {
return $this->userinputsharingkey;
}
/**
* Returns the user selected sharing option for this definition.
*
* @return int
*/
public function get_selected_sharing_option() {
return $this->selectedsharingoption;
}
}
+9 -8
View File
@@ -235,14 +235,14 @@ class cache_factory {
*/
public function create_cache(cache_definition $definition) {
$class = $definition->get_cache_class();
if ($this->is_initialising()) {
// Do nothing we just want the dummy store.
$stores = array();
} else {
$stores = cache_helper::get_cache_stores($definition);
$stores = cache_helper::get_stores_suitable_for_definition($definition);
foreach ($stores as $key => $store) {
if (!$store::are_requirements_met()) {
unset($stores[$key]);
}
}
if (count($stores) === 0) {
// Hmm no stores, better provide a dummy store to mimick functionality. The dev will be none the wiser.
// Hmm still no stores, better provide a dummy store to mimic functionality. The dev will be none the wiser.
$stores[] = $this->create_dummy_store($definition);
}
$loader = null;
@@ -258,7 +258,7 @@ class cache_factory {
/**
* Creates a store instance given its name and configuration.
*
* If the store has already been instantiated then the original objetc will be returned. (reused)
* If the store has already been instantiated then the original object will be returned. (reused)
*
* @param string $name The name of the store (must be unique remember)
* @param array $details
@@ -272,8 +272,9 @@ class cache_factory {
$store = new $class($details['name'], $details['configuration']);
$this->stores[$name] = $store;
}
/* @var cache_store $store */
$store = $this->stores[$name];
if (!$store->is_ready() || !$store->is_supported_mode($definition->get_mode())) {
if (!$store::are_requirements_met() || !$store->is_ready() || !$store->is_supported_mode($definition->get_mode())) {
return false;
}
// We always create a clone of the original store.
+70 -8
View File
@@ -143,7 +143,7 @@ class cache_helper {
*
* @param array $stores
* @param cache_definition $definition
* @return array
* @return cache_store[]
*/
protected static function initialise_cachestore_instances(array $stores, cache_definition $definition) {
$return = array();
@@ -377,34 +377,40 @@ class cache_helper {
/**
* Record a cache hit in the stats for the given store and definition.
*
* @internal
* @param string $store
* @param string $definition
* @param int $hits The number of hits to record (by default 1)
*/
public static function record_cache_hit($store, $definition) {
public static function record_cache_hit($store, $definition, $hits = 1) {
self::ensure_ready_for_stats($store, $definition);
self::$stats[$definition][$store]['hits']++;
self::$stats[$definition][$store]['hits'] += $hits;
}
/**
* Record a cache miss in the stats for the given store and definition.
*
* @internal
* @param string $store
* @param string $definition
* @param int $misses The number of misses to record (by default 1)
*/
public static function record_cache_miss($store, $definition) {
public static function record_cache_miss($store, $definition, $misses = 1) {
self::ensure_ready_for_stats($store, $definition);
self::$stats[$definition][$store]['misses']++;
self::$stats[$definition][$store]['misses'] += $misses;
}
/**
* Record a cache set in the stats for the given store and definition.
*
* @internal
* @param string $store
* @param string $definition
* @param int $sets The number of sets to record (by default 1)
*/
public static function record_cache_set($store, $definition) {
public static function record_cache_set($store, $definition, $sets = 1) {
self::ensure_ready_for_stats($store, $definition);
self::$stats[$definition][$store]['sets']++;
self::$stats[$definition][$store]['sets'] += $sets;
}
/**
@@ -449,8 +455,9 @@ class cache_helper {
$class = $store['class'];
// Found the store: is it ready?
/* @var cache_store $instance */
$instance = new $class($store['name'], $store['configuration']);
if (!$instance->is_ready()) {
if (!$instance::are_requirements_met() || !$instance->is_ready()) {
unset($instance);
return false;
}
@@ -638,4 +645,59 @@ class cache_helper {
}
}
}
/**
* Returns an array of stores that would meet the requirements for every definition.
*
* These stores would be 100% suitable to map as defaults for cache modes.
*
* @return array[] An array of stores, keys are the store names.
*/
public static function get_stores_suitable_for_mode_default() {
$factory = cache_factory::instance();
$config = $factory->create_config_instance();
$requirements = 0;
foreach ($config->get_definitions() as $definition) {
$definition = cache_definition::load($definition['component'].'/'.$definition['area'], $definition);
$requirements = $requirements | $definition->get_requirements_bin();
}
$stores = array();
foreach ($config->get_all_stores() as $name => $store) {
if (!empty($store['features']) && ($store['features'] & $requirements)) {
$stores[$name] = $store;
}
}
return $stores;
}
/**
* Returns stores suitable for use with a given definition.
*
* @param cache_definition $definition
* @return cache_store[]
*/
public static function get_stores_suitable_for_definition(cache_definition $definition) {
$factory = cache_factory::instance();
$stores = array();
if ($factory->is_initialising() || $factory->stores_disabled()) {
// No suitable stores here.
return $stores;
} else {
$stores = self::get_cache_stores($definition);
if (count($stores) === 0) {
// No suitable stores we found for the definition. We need to come up with a sensible default.
// If this has happened we can be sure that the user has mapped custom stores to either the
// mode of the definition. The first alternative to try is the system default for the mode.
// e.g. the default file store instance for application definitions.
$config = $factory->create_config_instance();
foreach ($config->get_stores($definition->get_mode()) as $name => $details) {
if (!empty($details['default'])) {
$stores[] = $factory->create_store_from_config($name, $details, $definition);
break;
}
}
}
}
return $stores;
}
}
+35 -7
View File
@@ -463,6 +463,20 @@ class cache implements cache_loader {
}
}
if ($this->perfdebug) {
$hits = 0;
$misses = 0;
foreach ($fullresult as $value) {
if ($value === false) {
$misses++;
} else {
$hits++;
}
}
cache_helper::record_cache_hit($this->storetype, $this->definition->get_id(), $hits);
cache_helper::record_cache_miss($this->storetype, $this->definition->get_id(), $misses);
}
// Return the result. Phew!
return $fullresult;
}
@@ -633,10 +647,11 @@ class cache implements cache_loader {
$this->set_in_persist_cache($data[$key]['key'], $value);
}
}
if ($this->perfdebug) {
cache_helper::record_cache_set($this->storetype, $this->definition->get_id());
$successfullyset = $this->store->set_many($data);
if ($this->perfdebug && $successfullyset) {
cache_helper::record_cache_set($this->storetype, $this->definition->get_id(), $successfullyset);
}
return $this->store->set_many($data);
return $successfullyset;
}
/**
@@ -1872,7 +1887,19 @@ class cache_session extends cache {
if ($hasmissingkeys && $strictness === MUST_EXIST) {
throw new coding_exception('Requested key did not exist in any cache stores and could not be loaded.');
}
if ($this->perfdebug) {
$hits = 0;
$misses = 0;
foreach ($return as $value) {
if ($value === false) {
$misses++;
} else {
$hits++;
}
}
cache_helper::record_cache_hit($this->storetype, $this->get_definition()->get_id(), $hits);
cache_helper::record_cache_miss($this->storetype, $this->get_definition()->get_id(), $misses);
}
return $return;
}
@@ -1946,10 +1973,11 @@ class cache_session extends cache {
'value' => $value
);
}
if ($this->perfdebug) {
cache_helper::record_cache_set($this->storetype, $definitionid);
$successfullyset = $this->get_store()->set_many($data);
if ($this->perfdebug && $successfullyset) {
cache_helper::record_cache_set($this->storetype, $definitionid, $successfullyset);
}
return $this->get_store()->set_many($data);
return $successfullyset;
}
/**
+20 -41
View File
@@ -672,59 +672,32 @@ abstract class cache_administration_helper extends cache_helper {
* @return array
*/
public static function get_definition_summaries() {
$instance = cache_config::instance();
$definitions = $instance->get_definitions();
$factory = cache_factory::instance();
$config = $factory->create_config_instance();
$storenames = array();
foreach ($instance->get_all_stores() as $key => $store) {
foreach ($config->get_all_stores() as $key => $store) {
if (!empty($store['default'])) {
$storenames[$key] = new lang_string('store_'.$key, 'cache');
}
}
$modemappings = array();
foreach ($instance->get_mode_mappings() as $mapping) {
$mode = $mapping['mode'];
if (!array_key_exists($mode, $modemappings)) {
$modemappings[$mode] = array();
}
if (array_key_exists($mapping['store'], $storenames)) {
$modemappings[$mode][] = $storenames[$mapping['store']];
} else {
$modemappings[$mode][] = $mapping['store'];
$storenames[$store['name']] = $store['name'];
}
}
$definitionmappings = array();
foreach ($instance->get_definition_mappings() as $mapping) {
$definition = $mapping['definition'];
if (!array_key_exists($definition, $definitionmappings)) {
$definitionmappings[$definition] = array();
}
if (array_key_exists($mapping['store'], $storenames)) {
$definitionmappings[$definition][] = $storenames[$mapping['store']];
} else {
$definitionmappings[$definition][] = $mapping['store'];
}
/* @var cache_definition[] $definitions */
$definitions = array();
foreach ($config->get_definitions() as $key => $definition) {
$definitions[$key] = cache_definition::load($definition['component'].'/'.$definition['area'], $definition);
}
$return = array();
foreach ($definitions as $id => $definition) {
$mappings = array();
if (array_key_exists($id, $definitionmappings)) {
$mappings = $definitionmappings[$id];
} else if (empty($definition['mappingsonly'])) {
$mappings = $modemappings[$definition['mode']];
foreach (cache_helper::get_stores_suitable_for_definition($definition) as $store) {
$mappings[] = $storenames[$store->my_name()];
}
$return[$id] = array(
'id' => $id,
'name' => cache_helper::get_definition_name($definition),
'mode' => $definition['mode'],
'component' => $definition['component'],
'area' => $definition['area'],
'name' => $definition->get_name(),
'mode' => $definition->get_mode(),
'component' => $definition->get_component(),
'area' => $definition->get_area(),
'mappings' => $mappings
);
}
@@ -976,7 +949,10 @@ abstract class cache_administration_helper extends cache_helper {
* @return array An array containing sub-arrays, one for each mode.
*/
public static function get_default_mode_stores() {
global $OUTPUT;
$instance = cache_config::instance();
$adequatestores = cache_helper::get_stores_suitable_for_mode_default();
$icon = new pix_icon('i/warning', new lang_string('inadequatestoreformapping', 'cache'));
$storenames = array();
foreach ($instance->get_all_stores() as $key => $store) {
if (!empty($store['default'])) {
@@ -999,6 +975,9 @@ abstract class cache_administration_helper extends cache_helper {
} else {
$modemappings[$mode][$mapping['store']] = $mapping['store'];
}
if (!array_key_exists($mapping['store'], $adequatestores)) {
$modemappings[$mode][$mapping['store']] = $modemappings[$mode][$mapping['store']].' '.$OUTPUT->render($icon);
}
}
return $modemappings;
}
+7 -2
View File
@@ -131,7 +131,7 @@ class cachestore_memcache extends cache_store implements cache_is_configurable {
$this->connection = new Memcache;
foreach ($this->servers as $server) {
$this->connection->addServer($server[0], $server[1], true, $server[2]);
$this->connection->addServer($server[0], (int) $server[1], true, (int) $server[2]);
}
// Test the connection to the pool of servers.
$this->isready = @$this->connection->set($this->parse_key('ping'), 'ping', MEMCACHE_COMPRESSED, 1);
@@ -350,7 +350,12 @@ class cachestore_memcache extends cache_store implements cache_is_configurable {
$lines = explode("\n", $data->servers);
$servers = array();
foreach ($lines as $line) {
$line = trim($line, ':');
// Trim surrounding colons and default whitespace.
$line = trim(trim($line), ":");
// Skip blank lines.
if ($line === '') {
continue;
}
$servers[] = explode(':', $line, 3);
}
return array(
+6 -1
View File
@@ -374,7 +374,12 @@ class cachestore_memcached extends cache_store implements cache_is_configurable
$lines = explode("\n", $data->servers);
$servers = array();
foreach ($lines as $line) {
$line = trim($line, ':');
// Trim surrounding colons and default whitespace.
$line = trim(trim($line), ":");
// Skip blank lines.
if ($line === '') {
continue;
}
$servers[] = explode(':', $line, 3);
}
return array(
+3 -2
View File
@@ -280,6 +280,7 @@ class core_calendar_renderer extends plugin_renderer_base {
*/
public function event(calendar_event $event, $showactions=true) {
$event = calendar_add_event_metadata($event);
$context = $event->context;
$anchor = html_writer::tag('a', '', array('name'=>'event_'.$event->id));
@@ -302,7 +303,7 @@ class core_calendar_renderer extends plugin_renderer_base {
if (!empty($event->referer)) {
$table->data[0]->cells[1]->text .= html_writer::tag('div', $event->referer, array('class'=>'referer'));
} else {
$table->data[0]->cells[1]->text .= html_writer::tag('div', $event->name, array('class'=>'name'));
$table->data[0]->cells[1]->text .= html_writer::tag('div', format_string($event->name, false, array('context' => $context)), array('class'=>'name'));
}
if (!empty($event->courselink)) {
$table->data[0]->cells[1]->text .= html_writer::tag('div', $event->courselink, array('class'=>'course'));
@@ -316,7 +317,7 @@ class core_calendar_renderer extends plugin_renderer_base {
$table->data[1]->cells[0] = new html_table_cell('&nbsp;');
$table->data[1]->cells[0]->attributes['class'] .= 'side';
$table->data[1]->cells[1] = new html_table_cell($event->description);
$table->data[1]->cells[1] = new html_table_cell(format_text($event->description, $event->format, array('context' => $context)));
$table->data[1]->cells[1]->attributes['class'] .= ' description';
if (isset($event->cssclass)) {
$table->data[1]->cells[1]->attributes['class'] .= ' '.$event->cssclass;
+1 -1
View File
@@ -554,7 +554,7 @@ abstract class format_base {
$sectionid = $section->id;
} else if ($this->courseid && is_int($section) &&
($sectionobj = $DB->get_record('course_sections',
array('section' => $section, 'courseid' => $this->courseid), 'id'))) {
array('section' => $section, 'course' => $this->courseid), 'id'))) {
// course section format options will be returned
$sectionid = $sectionobj->id;
} else {
+22 -11
View File
@@ -2917,14 +2917,6 @@ function set_coursemodule_visible($id, $visible) {
}
}
// Hide the associated grade items so the teacher doesn't also have to go to the gradebook and hide them there.
$grade_items = grade_item::fetch_all(array('itemtype'=>'mod', 'itemmodule'=>$modulename, 'iteminstance'=>$cm->instance, 'courseid'=>$cm->course));
if ($grade_items) {
foreach ($grade_items as $grade_item) {
$grade_item->set_hidden(!$visible);
}
}
// Updating visible and visibleold to keep them in sync. Only changing a section visibility will
// affect visibleold to allow for an original visibility restore. See set_section_visible().
$cminfo = new stdClass();
@@ -2933,6 +2925,25 @@ function set_coursemodule_visible($id, $visible) {
$cminfo->visibleold = $visible;
$DB->update_record('course_modules', $cminfo);
require_once($CFG->dirroot . '/mod/' . $modulename . '/lib.php');
$functionname = $modulename . '_grade_item_update';
// Hide the associated grade items so the teacher doesn't also have to go to the gradebook and hide them there.
// Note that this must be done after updating the row in course_modules, in case
// the modules grade_item_update function needs to access $cm->visible.
if (plugin_supports('mod', $modulename, FEATURE_CONTROLS_GRADE_VISIBILITY) &&
function_exists($functionname)) {
$instance = $DB->get_record($modulename, array('id' => $cm->instance), '*', MUST_EXIST);
$functionname($instance);
} else {
$grade_items = grade_item::fetch_all(array('itemtype'=>'mod', 'itemmodule'=>$modulename, 'iteminstance'=>$cm->instance, 'courseid'=>$cm->course));
if ($grade_items) {
foreach ($grade_items as $grade_item) {
$grade_item->set_hidden(!$visible);
}
}
}
rebuild_course_cache($cm->course, true);
return true;
}
@@ -4558,7 +4569,7 @@ function include_course_ajax($course, $usedmodules = array(), $enabledmodules =
);
// Include course dragdrop
if ($course->id != $SITE->id) {
if (course_format_uses_sections($course->format)) {
$PAGE->requires->yui_module('moodle-course-dragdrop', 'M.course.init_section_dragdrop',
array(array(
'courseid' => $course->id,
@@ -4603,8 +4614,8 @@ function include_course_ajax($course, $usedmodules = array(), $enabledmodules =
'movesection',
), 'moodle');
// Include format-specific strings
if ($course->id != $SITE->id) {
// Include section-specific strings for formats which support sections.
if (course_format_uses_sections($course->format)) {
$PAGE->requires->strings_for_js(array(
'showfromothers',
'hidefromothers',
+17
View File
@@ -60,6 +60,23 @@ if (has_capability('moodle/user:loginas', $systemcontext)) {
print_error('usernotincourse');
}
$context = $coursecontext;
// Check if course has SEPARATEGROUPS and user is part of that group.
if (groups_get_course_groupmode($course) == SEPARATEGROUPS &&
!has_capability('moodle/site:accessallgroups', $context)) {
$samegroup = false;
if ($groups = groups_get_all_groups($course->id, $USER->id)) {
foreach ($groups as $group) {
if (groups_is_member($group->id, $userid)) {
$samegroup = true;
break;
}
}
}
if (!$samegroup) {
print_error('nologinas');
}
}
}
/// Login as this user and return to course home page.
+1 -1
View File
@@ -52,7 +52,6 @@ foreach ($allmodules as $key=>$module) {
}
$strresources = get_string('resources');
$strsectionname = get_string('sectionname', 'format_'.$course->format);
$strname = get_string('name');
$strintro = get_string('moduleintro');
$strlastmodified = get_string('lastmodified');
@@ -100,6 +99,7 @@ $table = new html_table();
$table->attributes['class'] = 'generaltable mod_index';
if ($usesections) {
$strsectionname = get_string('sectionname', 'format_'.$course->format);
$table->head = array ($strsectionname, $strname, $strintro);
$table->align = array ('center', 'left', 'left');
} else {
+8
View File
@@ -239,6 +239,14 @@
}
$PAGE->set_title(get_string('course') . ': ' . $course->fullname);
// If viewing a section, make the title more specific
if ($section and $section > 0 and course_format_uses_sections($course->format)) {
// Get section details and check it exists.
$newtitle = $PAGE->title.', '.get_string('sectionname', "format_$course->format").': '.
get_section_name($course, $section);
$PAGE->set_title($newtitle);
}
$PAGE->set_heading($course->fullname);
echo $OUTPUT->header();
+2
View File
@@ -26,6 +26,8 @@
$string['allowguests'] = 'This course allows guest users to enter';
$string['guest:config'] = 'Configure guest access instances';
$string['guestaccess_withpassword'] = 'Guest access requires password';
$string['guestaccess_withoutpassword'] = 'Guest access';
$string['password'] = 'Password';
$string['password_help'] = 'A password allows guest access to the course to be restricted to only those who know the password. Guests will be required to supply the password each time they access the course.';
$string['passwordinvalid'] = 'Incorrect access password, please try again';
+2 -2
View File
@@ -45,9 +45,9 @@ class enrol_guest_plugin extends enrol_plugin {
public function get_info_icons(array $instances) {
foreach ($instances as $instance) {
if ($instance->password !== '') {
return array(new pix_icon('withpassword', get_string('pluginname', 'enrol_guest'), 'enrol_guest'));
return array(new pix_icon('withpassword', get_string('guestaccess_withpassword', 'enrol_guest'), 'enrol_guest'));
} else {
return array(new pix_icon('withoutpassword', get_string('pluginname', 'enrol_guest'), 'enrol_guest'));
return array(new pix_icon('withoutpassword', get_string('guestaccess_withoutpassword', 'enrol_guest'), 'enrol_guest'));
}
}
}
+1
View File
@@ -2,6 +2,7 @@
require_once(dirname(dirname(dirname(__FILE__))) . '/config.php');
require_login(0, false);
require_capability('moodle/site:config', context_system::instance());
require_sesskey();
$site = get_site();
+3 -1
View File
@@ -83,6 +83,8 @@ if ($ADMIN->fulltree) {
$settings->add(new admin_setting_configcheckbox('enrol_imsenterprise/imscapitafix', get_string('usecapitafix', 'enrol_imsenterprise'), get_string('usecapitafix_desc', 'enrol_imsenterprise'), 0));
$importnowstring = get_string('aftersaving...', 'enrol_imsenterprise').' <a href="../enrol/imsenterprise/importnow.php">'.get_string('doitnow', 'enrol_imsenterprise').'</a>';
$importurl = new moodle_url('/enrol/imsenterprise/importnow.php', array('sesskey' => sesskey()));
$importnowstring = get_string('aftersaving...', 'enrol_imsenterprise').' '.
html_writer::link($importurl, get_string('doitnow', 'enrol_imsenterprise'));
$settings->add(new admin_setting_heading('enrol_imsenterprise_doitnowmessage', '', $importnowstring));
}
+1 -1
View File
@@ -915,7 +915,7 @@ class course_enrolment_manager {
continue;
} else if ($ue->timestart and $ue->timeend) {
$period = get_string('periodstartend', 'enrol', array('start'=>userdate($ue->timestart), 'end'=>userdate($ue->timeend)));
$periodoutside = ($ue->timestart && $ue->timeend && $now < $ue->timestart && $now > $ue->timeend);
$periodoutside = ($ue->timestart && $ue->timeend && ($now < $ue->timestart || $now > $ue->timeend));
} else if ($ue->timestart) {
$period = get_string('periodstart', 'enrol', userdate($ue->timestart));
$periodoutside = ($ue->timestart && $now < $ue->timestart);
+2 -5
View File
@@ -156,11 +156,8 @@ YUI.add('moodle-enrol_manual-quickenrolment', function(Y) {
}
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEHEADING).one('img').setAttribute('src', M.util.image_url(collapsedimage, 'moodle'));
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEHEADING).once('click', function() {
// We want to do this just once, the first time the controls are shown.
this.populateStartDates();
this.populateDuration();
}, this);
this.populateStartDates();
this.populateDuration();
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEHEADING).on('click', function(){
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEHEADING).toggleClass(CSS.ACTIVE);
this.get(UEP.BASE).one('.'+CSS.SEARCHOPTIONS+' .'+CSS.COLLAPSIBLEAREA).toggleClass(CSS.HIDDEN);
+25 -2
View File
@@ -29,6 +29,9 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
// Disable moodle specific debug messages and any errors in output,
// comment out when debugging or better look into error log!
define('NO_DEBUG_DISPLAY', true);
require("../../config.php");
require_once("lib.php");
@@ -36,6 +39,9 @@ require_once($CFG->libdir.'/eventslib.php');
require_once($CFG->libdir.'/enrollib.php');
require_once($CFG->libdir . '/filelib.php');
// PayPal does not like when we return error messages here,
// the custom handler just logs exceptions and stops.
set_exception_handler('enrol_paypal_ipn_exception_handler');
/// Keep out casual intruders
if (empty($_POST) or !empty($_GET)) {
@@ -236,6 +242,7 @@ if (strlen($result) > 0) {
if (!empty($mailstudents)) {
$a = new stdClass();
$a->coursename = format_string($course->fullname, true, array('context' => $coursecontext));
$a->profileurl = "$CFG->wwwroot/user/view.php?id=$user->id";
@@ -243,7 +250,7 @@ if (strlen($result) > 0) {
$eventdata->modulename = 'moodle';
$eventdata->component = 'enrol_paypal';
$eventdata->name = 'paypal_enrolment';
$eventdata->userfrom = $teacher;
$eventdata->userfrom = empty($teacher) ? get_admin() : $teacher;
$eventdata->userto = $user;
$eventdata->subject = get_string("enrolmentnew", 'enrol', $shortname);
$eventdata->fullmessage = get_string('welcometocoursetext', '', $a);
@@ -254,7 +261,7 @@ if (strlen($result) > 0) {
}
if (!empty($mailteachers)) {
if (!empty($mailteachers) && !empty($teacher)) {
$a->course = format_string($course->fullname, true, array('context' => $coursecontext));
$a->user = fullname($user);
@@ -329,4 +336,20 @@ function message_paypal_error_to_admin($subject, $data) {
message_send($eventdata);
}
/**
* Silent exception handler.
*
* @param Exception $ex
* @return void - does not return. Terminates execution!
*/
function enrol_paypal_ipn_exception_handler($ex) {
$info = get_exception_info($ex);
$logerrmsg = "enrol_paypal IPN exception handler: ".$info->message;
if (debugging('', DEBUG_NORMAL)) {
$logerrmsg .= ' Debug: '.$info->debuginfo."\n".format_backtrace($info->backtrace, true);
}
error_log($logerrmsg);
exit(0);
}
+5 -1
View File
@@ -41,7 +41,11 @@ function xmldb_enrol_self_upgrade($oldversion) {
// Moodle v2.4.0 release upgrade line
// Put any upgrade step following this
if ($oldversion < 2012112901) {
// Set customint1 (group enrolment key) to 0 if it was not set (null).
$DB->execute("UPDATE {enrol} SET customint1 = 0 WHERE enrol = 'self' AND customint1 IS NULL");
upgrade_plugin_savepoint(true, 2012112901, 'enrol', 'self');
}
return true;
}
+1 -1
View File
@@ -24,7 +24,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2012112900; // The current plugin version (Date: YYYYMMDDXX)
$plugin->version = 2012112901; // The current plugin version (Date: YYYYMMDDXX)
$plugin->requires = 2012112900; // Requires this Moodle version
$plugin->component = 'enrol_self'; // Full name of the plugin (used for diagnostics)
$plugin->cron = 600;
+7 -2
View File
@@ -132,8 +132,13 @@ class filter_urltolink extends moodle_text_filter {
$querystring = '(?:\?(?:[\pL0-9\.!$&\'\(\)*+,;=_~:@/?-]|%[a-fA-F0-9]{2})*)';
$fragment = '(?:\#(?:[\pL0-9\.!$&\'\(\)*+,;=_~:@/?-]|%[a-fA-F0-9]{2})*)';
$regex = "(?<!=[\"'])$urlstart((?:$domainsegment\.)+$domainsegment|$numericip)" .
"($port?$path$querystring?$fragment?)(?<![]),.;])";
// Lookbehind assertions.
// Is not HTML attribute or CSS URL property. Unfortunately legit text like "url(http://...)" will not be a link.
$lookbehindstart = "(?<!=[\"']|\burl\([\"' ]|\burl\()";
$lookbehindend = "(?<![]),.;])";
$regex = "$lookbehindstart$urlstart((?:$domainsegment\.)+$domainsegment|$numericip)" .
"($port?$path$querystring?$fragment?)$lookbehindend";
if ($unicoderegexp) {
$regex = '#' . $regex . '#ui';
} else {
+5 -39
View File
@@ -31,19 +31,6 @@ require_once($CFG->dirroot . '/filter/urltolink/filter.php'); // Include the cod
class filter_urltolink_testcase extends basic_testcase {
/**
* Helper function that represents the legacy implementation
* of convert_urls_into_links()
*/
protected function old_convert_urls_into_links(&$text) {
/// Make lone URLs into links. eg http://moodle.com/
$text = preg_replace("%([[:space:]]|^|\(|\[)([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])%i",
'$1<a href="$2://$3$4" target="_blank">$2://$3$4</a>', $text);
/// eg www.moodle.com
$text = preg_replace("%([[:space:]]|^|\(|\[)www\.([^[:space:]]*)([[:alnum:]#?/&=])%i",
'$1<a href="http://www.$2$3" target="_blank">www.$2$3</a>', $text);
}
function get_convert_urls_into_links_test_cases() {
$texts = array (
//just a url
@@ -144,6 +131,11 @@ class filter_urltolink_testcase extends basic_testcase {
'<td background="www.moodle.org">&nbsp;</td>' => '<td background="www.moodle.org">&nbsp;</td>',
'<form name="input" action="http://moodle.org/submit.asp" method="get">'=>'<form name="input" action="http://moodle.org/submit.asp" method="get">',
'<td background="https://www.moodle.org">&nbsp;</td>' => '<td background="https://www.moodle.org">&nbsp;</td>',
// CSS URLs.
'<table style="background-image: url(\'http://moodle.org/pic.jpg\');">' => '<table style="background-image: url(\'http://moodle.org/pic.jpg\');">',
'<table style="background-image: url(http://moodle.org/pic.jpg);">' => '<table style="background-image: url(http://moodle.org/pic.jpg);">',
'<table style="background-image: url("http://moodle.org/pic.jpg");">' => '<table style="background-image: url("http://moodle.org/pic.jpg");">',
'<table style="background-image: url( http://moodle.org/pic.jpg );">' => '<table style="background-image: url( http://moodle.org/pic.jpg );">',
//partially escaped img tag
'partially escaped img tag &lt;img src="http://moodle.org/logo/logo-240x60.gif" />' => 'partially escaped img tag &lt;img src="http://moodle.org/logo/logo-240x60.gif" />',
//fully escaped img tag. Commented out as part of MDL-21183
@@ -181,32 +173,6 @@ class filter_urltolink_testcase extends basic_testcase {
$this->assertEquals($correctresult, $text);
}
function test_convert_urls_into_links_performance() {
$testablefilter = new testable_filter_urltolink();
$reps = 1000;
$text = file_get_contents(__DIR__ . '/fixtures/sample.txt');
$time_start = microtime(true);
for($i=0;$i<$reps;$i++) {
$testablefilter->convert_urls_into_links($text);
}
$time_end = microtime(true);
$new_time = $time_end - $time_start;
$time_start = microtime(true);
for($i=0;$i<$reps;$i++) {
$this->old_convert_urls_into_links($text);
}
$time_end = microtime(true);
$old_time = $time_end - $time_start;
$fast_enough = false;
if( $new_time < $old_time ) {
$fast_enough = true;
}
$this->assertEquals($fast_enough, true, 'Timing test: ' . $new_time . 'secs (new) < ' . $old_time . 'secs (old)');
}
}
+1 -1
View File
@@ -156,7 +156,7 @@ $reporthtml = $report->get_grade_table();
// print submit button
if ($USER->gradeediting[$course->id] && ($report->get_pref('showquickfeedback') || $report->get_pref('quickgrading'))) {
echo '<form action="index.php" method="post">';
echo '<form action="index.php" enctype="application/x-www-form-urlencoded" method="post">'; // Enforce compatibility with our max_input_vars hack.
echo '<div>';
echo '<input type="hidden" value="'.s($courseid).'" name="id" />';
echo '<input type="hidden" value="'.sesskey().'" name="sesskey" />';
+1 -42
View File
@@ -1734,51 +1734,10 @@ class grade_report_grader extends grade_report {
/**
* Returns the maximum number of students to be displayed on each page
*
* Takes into account the 'studentsperpage' user preference and the 'max_input_vars'
* PHP setting. Too many fields is only a problem when submitting grades but
* we respect 'max_input_vars' even when viewing grades to prevent students disappearing
* when toggling editing on and off.
*
* @return int The maximum number of students to display per page
*/
public function get_students_per_page() {
global $USER;
static $studentsperpage = null;
if ($studentsperpage === null) {
$originalstudentsperpage = $studentsperpage = $this->get_pref('studentsperpage');
// Will this number of students result in more fields that we are allowed?
$maxinputvars = ini_get('max_input_vars');
if ($maxinputvars !== false) {
// We can't do anything about there being more grade items than max_input_vars,
// but we can decrease number of students per page if there are >= max_input_vars
$fieldsperstudent = 0; // The number of fields output per student
if ($this->get_pref('quickgrading') || $this->get_pref('showquickfeedback')) {
// Each array (grade, feedback) will gain one element
$fieldsperstudent ++;
}
$fieldsrequired = $studentsperpage * $fieldsperstudent;
if ($fieldsrequired >= $maxinputvars) {
$studentsperpage = $maxinputvars - 1; // Subtract one to be on the safe side
if ($studentsperpage<1) {
// Make sure students per page doesn't fall below 1, though if your
// max_input_vars is only 1 you've got bigger problems!
$studentsperpage = 1;
}
$a = new stdClass();
$a->originalstudentsperpage = $originalstudentsperpage;
$a->studentsperpage = $studentsperpage;
$a->maxinputvars = $maxinputvars;
debugging(get_string('studentsperpagereduced', 'grades', $a));
}
}
}
return $studentsperpage;
return $this->get_pref('studentsperpage');
}
}
+5 -3
View File
@@ -30,17 +30,19 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p>Nije moguće kreirati bazu podataka.</p> <p>Određena baza podataka ne postoji i dati korisnik nema dozvolu da kreira bazu podataka.</p> <p>Site administrator bi trebao verificirati postavke baze podataka.</p>';
$string['cannotcreatelangdir'] = 'Nije moguće kreirati direktorij jezika';
$string['cannotcreatetempdir'] = 'Nije moguće kreirati privremeni direktorij';
$string['cannotdownloadcomponents'] = 'Nije moguće preuzeti komponente.';
$string['cannotdownloadzipfile'] = 'Nije moguće preuzeti arhivu';
$string['cannotdownloadcomponents'] = 'Nije moguće preuzeti komponente';
$string['cannotdownloadzipfile'] = 'Nije moguće preuzeti ZIP arhivu';
$string['cannotfindcomponent'] = 'Nije moguće pronaći komponentu.';
$string['cannotsavemd5file'] = 'Nije moguće sačuvati md5 datoteku.';
$string['cannotsavezipfile'] = 'Nije moguće sačuvati ZIP arhivu.';
$string['cannotunzipfile'] = 'Nije moguće raspakovati ZIP datoteku.';
$string['componentisuptodate'] = 'Komponenta je dostupna u svojoj najnovijoj verziji';
$string['dmlexceptiononinstall'] = '<p>Nastala je greška u bazi podataka: [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'Nije uspjela provjera preuzete datoteke';
$string['invalidmd5'] = 'Neispravna md5 datoteka';
$string['invalidmd5'] = 'Provjerena varijabla (md5 datoteka) je pogrešna - pokušajte ponovo';
$string['missingrequiredfield'] = 'Nedostaje neko obavezno polje';
$string['remotedownloaderror'] = 'Preuzimanje komponente na Vaš server nije uspjelo. Provjerite podešavanja proksi servera. PHP cURL ekstenzija se preporučuje.<br /><br />Morate da preuzmete <a href="{$a->url}">{$a->url}</a> datoteku ručno, kopirate je u direktorij "{$a->dest}" na svom sereveru i tamo je raspakovati.';
$string['wrongdestpath'] = 'Pogrešna odredišna putanja';
+3
View File
@@ -30,6 +30,8 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p>No és pot crear la base de dades.</p> <p>La base de dades especificada no existeix i l\'usuari que heu proporcionat no permís per a crear-la.</p>
<p>L\'administrador del lloc hauria de verificar la configuració de la base de dades.</p>';
$string['cannotcreatelangdir'] = 'No s\'ha pogut crear el directori d\'idiomes.';
$string['cannotcreatetempdir'] = 'No s\'ha pogut crear el directori temporal';
$string['cannotdownloadcomponents'] = 'No s\'han pogut baixar components';
@@ -39,6 +41,7 @@ $string['cannotsavemd5file'] = 'No s\'ha pogut desar el fitxer md5';
$string['cannotsavezipfile'] = 'No s\'ha pogut desar el fitxer zip';
$string['cannotunzipfile'] = 'No s\'ha pogut descomprimir el fitxer';
$string['componentisuptodate'] = 'El component està al dia';
$string['dmlexceptiononinstall'] = '<p>S\'ha produït un error de la base de dades [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'Ha fallat la comprovació del fitxer baixat';
$string['invalidmd5'] = 'L\'md5 no és vàlid. Torneu-ho a provar';
$string['missingrequiredfield'] = 'Falta algun camp necessari';
+2
View File
@@ -31,4 +31,6 @@
defined('MOODLE_INTERNAL') || die();
$string['language'] = 'زمان';
$string['next'] = 'دواتر';
$string['previous'] = 'پێشوو';
$string['reload'] = 'بارکردنەوە';
+4
View File
@@ -30,6 +30,9 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p>Nelze vytvořit databázi.</p>
<p>Určená databáze neexistuje a uživatel nemá oprávnění k vytvoření databáze. </p>
<p>Správce stránek by měl ověřit konfiguraci databáze.</p>';
$string['cannotcreatelangdir'] = 'Nelze vytvořit adresář pro jazykové soubory';
$string['cannotcreatetempdir'] = 'Nelze vytvořit dočasný adresář';
$string['cannotdownloadcomponents'] = 'Nelze stáhnout komponenty';
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = 'Nelze uložit soubor MD5';
$string['cannotsavezipfile'] = 'Nelze uložit soubor ZIP';
$string['cannotunzipfile'] = 'Nelze dekomprimovat soubor';
$string['componentisuptodate'] = 'Komponenta je aktuální';
$string['dmlexceptiononinstall'] = '<p>Došlo k chybě databáze [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'Selhala kontrola staženého souboru';
$string['invalidmd5'] = 'Ověření selhalo - zkuste to znovu';
$string['missingrequiredfield'] = 'Chybí některé z povinných polí';
+1 -1
View File
@@ -83,6 +83,6 @@ $string['welcomep30'] = 'Diese Version von <strong>{$a->installername}</strong>
$string['welcomep40'] = 'Das Paket enthält: <strong>Moodle {$a->moodlerelease} ({$a->moodleversion})</strong>.';
$string['welcomep50'] = 'Die Nutzung dieser Anwendungen ist lizenzrechtlich geprüft. Alle Anwendungen von <strong>{$a->installername}</strong> sind
<a href="http://www.opensource.org/docs/definition_plain.html"> Open Source </a> und unterliegen der <a href="http://www.gnu.org/copyleft/gpl.html"> GPL</a> Lizenz.';
$string['welcomep60'] = 'Die folgenden Webseiten führen Sie in einfachen Schritten durch die Konfiguration und Installation von <strong>Moodle</strong> auf Ihrem Computer. Sie können die vorgeschlagenen Einstellungen übernehmen oder an Ihre Bedürfnisse anpassen.';
$string['welcomep60'] = 'Die folgenden Webseiten führen Sie in einfachen Schritten durch die Installation von <strong>Moodle</strong> auf Ihrem Computer. Sie können die vorgeschlagenen Einstellungen übernehmen oder an eigene Bedürfnisse anpassen.';
$string['welcomep70'] = 'Klicken Sie auf die Taste \'Weiter\', um mit der Installation von Moodle fortzufahren.';
$string['wwwroot'] = 'Webadresse';
+2
View File
@@ -30,6 +30,7 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = 'གཞི་གྲངས་མཛོད་<p>བཟོ་མི་བཏུབ། བཀོད་མི་གཞི་གྲངས་མཛོད་</p> <p>དེ་མེད་པའི་ཁར་ ལག་ལེན་པ་ལུ་ གཞི་གྲངས་མཛོད་བཟོ་ནི་གི་གནང་བ་མེད།གནས་ཁོངས་བདག་སྐྱོང་པ་ </p> <p>་གིས་གཞི་གྲངས་མཛོད་དེ་གི་སྡེབ་སྒྲིག་</p>གཏན་འབེབས་འབད་དགོ';
$string['cannotcreatelangdir'] = 'སྐད་ཡིག་སྣོད་ཐོ་ གསར་བསྐྲུན་འབད་མི་བཏུབ།';
$string['cannotcreatetempdir'] = 'གནས་སྐབས་ཀྱི་སྣོད་ཐོ་ གསར་བསྐྲུན་འབད་མི་བཏུབ།';
$string['cannotdownloadcomponents'] = 'ཆ་ཤས་ཚུ་ཕབ་ལེན་འབད་མི་བཏུབ།';
@@ -39,6 +40,7 @@ $string['cannotsavemd5file'] = 'md5 ཡིག་སྣོད་ སྲུངས
$string['cannotsavezipfile'] = 'ZIP ཡིག་སྣོད་ སྲུངས་མི་བཏུབ།';
$string['cannotunzipfile'] = 'ཡིག་སྣོད་ unzip འབད་མི་བཏུབ།';
$string['componentisuptodate'] = 'ཆ་ཤས་འདི་ དུས་མཐུན་སྦེ་ཡོད།';
$string['dmlexceptiononinstall'] = 'p>གཞི་གྲངས་མཛོད་ཀྱི་འཛོལ་བཅིག་འཐོན་ནུག [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'ཕབ་ལེན་འབད་ཡོད་པའི་ཡིག་སྣོད་ཞིབ་དཔྱད་འཐུས་ཤོར་བྱུང་ཡོདཔ།';
$string['invalidmd5'] = 'check འགྱུར་ཅནའདི་ཕྱི་འགྱུར་ཨིན་མས་ - ལོག་འབད་གནང་།';
$string['missingrequiredfield'] = 'དགོ་པའི་ས་སྒོ་འདི་མིན་འདུག';
+4
View File
@@ -30,6 +30,9 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p>Cannot create the database.</p>
<p>The specified database does not exist and the given user does not have permission to create the database.</p>
<p>The site administrator should verify database configuration.</p>';
$string['cannotcreatelangdir'] = 'Cannot create lang directory';
$string['cannotcreatetempdir'] = 'Cannot create temp directory';
$string['cannotdownloadcomponents'] = 'Cannot download components';
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = 'Cannot save md5 file';
$string['cannotsavezipfile'] = 'Cannot save ZIP file';
$string['cannotunzipfile'] = 'Cannot unzip file';
$string['componentisuptodate'] = 'Component is up-to-date';
$string['dmlexceptiononinstall'] = '<p>A database error has occurred [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'Downloaded file check failed';
$string['invalidmd5'] = 'The check variable was wrong - try again';
$string['missingrequiredfield'] = 'Some required field is missing';
+2
View File
@@ -30,6 +30,7 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p> No se puede crear la base de datos. </p><p> La base de datos especificada no existe y el usuario indicado no tiene permiso para crear la base de datos. </p><p> El administrador del sitio debe comprobar la configuración de base de datos. </p>';
$string['cannotcreatelangdir'] = 'No se puede crear el directorio de idioma.';
$string['cannotcreatetempdir'] = 'No se puede crear el directorio temp.';
$string['cannotdownloadcomponents'] = 'No se puede descargar componentes';
@@ -39,6 +40,7 @@ $string['cannotsavemd5file'] = 'No se puede guardar el archivo md5';
$string['cannotsavezipfile'] = 'No se puede guardar el archivo ZIP';
$string['cannotunzipfile'] = 'No se puede descomprimir el archivo';
$string['componentisuptodate'] = 'El componente está actualizado';
$string['dmlexceptiononinstall'] = '<p>Se ha producido un error de base de datos [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'Ha fallado la comprobación del archivo descargado';
$string['invalidmd5'] = 'La variable de verificación MD5 es incorrecta no es valida - trate nuevamente';
$string['missingrequiredfield'] = 'Falta algún campo necesario';
-34
View File
@@ -1,34 +0,0 @@
<?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/>.
/**
* Automatically generated strings for Moodle installer
*
* Do not edit this file manually! It contains just a subset of strings
* needed during the very first steps of installation. This file was
* generated automatically by export-installer.php (which is part of AMOS
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
* list of strings defined in /install/stringnames.txt.
*
* @package installer
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
$string['parentlanguage'] = 'es';
$string['thislanguage'] = 'Español - Argentina';
-35
View File
@@ -1,35 +0,0 @@
<?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/>.
/**
* Automatically generated strings for Moodle installer
*
* Do not edit this file manually! It contains just a subset of strings
* needed during the very first steps of installation. This file was
* generated automatically by export-installer.php (which is part of AMOS
* {@link http://docs.moodle.org/dev/Languages/AMOS}) using the
* list of strings defined in /install/stringnames.txt.
*
* @package installer
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die();
$string['parentlanguage'] = 'es';
$string['thisdirection'] = 'ltr';
$string['thislanguage'] = 'Español - España';
+2
View File
@@ -30,6 +30,7 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p>No puede crearse la BasedeDatos.</p> <p>La BasedeDatos especificada no existe y el usuario dado no tiene permiso para crear la BasedeDatos.</p> <p>El administrador del sitio debería verificar la configuración de la BasedeDatos.</p>';
$string['cannotcreatelangdir'] = 'No se puede crear el directorio de idioma.';
$string['cannotcreatetempdir'] = 'No se puede crear el directorio temp.';
$string['cannotdownloadcomponents'] = 'No se puede descargar componentes';
@@ -39,6 +40,7 @@ $string['cannotsavemd5file'] = 'No se puede guardar el archivo md5';
$string['cannotsavezipfile'] = 'No se puede guardar el archivo ZIP';
$string['cannotunzipfile'] = 'No se puede descomprimir el archivo';
$string['componentisuptodate'] = 'El componente está actualizado';
$string['dmlexceptiononinstall'] = '<p>Ocurrió un error en la BasedeDatos[{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'Ha fallado la comprobación del archivo descargado';
$string['invalidmd5'] = 'La variable de verificación MD5 es incorrecta no es valida - trate nuevamente';
$string['missingrequiredfield'] = 'Falta algún campo necesario';
+4
View File
@@ -30,6 +30,9 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p>Impossible de créer la base de données.</p>
<p>La base de données indiquées n\'existe pas et l\'utilisateur spécifié n\'a pas les autorisations permettant de créer une base de données.</p>.
<p>L\'administrateur du site doit revoir la configuration de la base de données.</p>';
$string['cannotcreatelangdir'] = 'Création du dossier lang impossible';
$string['cannotcreatetempdir'] = 'Création du dossier temp impossible';
$string['cannotdownloadcomponents'] = 'Téléchargement des composants impossible';
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = 'Enregistrement du fichier md5 impossible';
$string['cannotsavezipfile'] = 'Enregistrement du fichier ZIP impossible';
$string['cannotunzipfile'] = 'Décompression du fichier ZIP impossible';
$string['componentisuptodate'] = 'Le composant est à jour';
$string['dmlexceptiononinstall'] = '<p>Une erreur de base de données est survenue [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'La vérification du fichier téléchargé à échoué';
$string['invalidmd5'] = 'Le code de contrôle md5 n\'est pas valide';
$string['missingrequiredfield'] = 'Un champ obligatoire n\'est pas renseigné';
+2
View File
@@ -32,4 +32,6 @@ defined('MOODLE_INTERNAL') || die();
$string['clianswerno'] = 'एन';
$string['cliansweryes'] = 'वाई';
$string['cliincorrectvalueretry'] = 'ग़लत मान, कृपया पुनः प्रयास करें';
$string['clitypevalue'] = 'टाइप मूल्य';
$string['cliyesnoprompt'] = 'टाइप Y (का मतलब है हाँ) या N (का मतलब है नहीं )';
+2
View File
@@ -30,6 +30,7 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p>Az adatbázis nem hozható létre.</p> <p>A megadott adatbázis nem létezik, a felhasználó pedig nem jogosult létrehozni egyet.</p> <p>A portál rendszergazdájának ellenőrizni kell az adatbázis-beállításokat.</p>';
$string['cannotcreatelangdir'] = 'Nem hozható létre a lang könyvtár.';
$string['cannotcreatetempdir'] = 'Nem hozható létre a temp könyvtár.';
$string['cannotdownloadcomponents'] = 'Az összetevőket nem lehet letölteni.';
@@ -39,6 +40,7 @@ $string['cannotsavemd5file'] = 'Az md5 állományt nem lehet elmenteni.';
$string['cannotsavezipfile'] = 'A tömörített állományt nem lehet elmenteni.';
$string['cannotunzipfile'] = 'A tömörített állományt nem lehet kicsomagolni.';
$string['componentisuptodate'] = 'Az összetevő a legújabb.';
$string['dmlexceptiononinstall'] = '<p>Adatbázishiba történt [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'A letöltött állomány ellenőrzése nem sikerült.';
$string['invalidmd5'] = 'Az ellenőrző változó hibás volt próbálkozzék ismét';
$string['missingrequiredfield'] = 'Egy szükséges mező hiányzik.';
+1 -1
View File
@@ -55,7 +55,7 @@ $string['paths'] = 'Útvonalak';
$string['pathserrcreatedataroot'] = 'A telepítő nem tudja létrehozni az adatkönyvtárat ({$a->dataroot}).';
$string['pathshead'] = 'Útvonalak megerősítése';
$string['pathsrodataroot'] = 'Az adatok gyökérkönyvtára nem írható.';
$string['pathsroparentdataroot'] = 'A felettes könyvtás ({$a->parent}) nem írható. A telepítő nem tudja létrehozni az adatkönyvtárat ({$a->dataroot}).';
$string['pathsroparentdataroot'] = 'A felettes könyvtár ({$a->parent}) nem írható. A telepítő nem tudja létrehozni az adatkönyvtárat ({$a->dataroot}).';
$string['pathssubadmindir'] = 'Egy pár webes gazdagép esetén az /admin speciális URL pl. a vezérlőpanel eléréséhez. Ez ütközik a Moodle admin oldalainak standard helyével. Javítás: a telepítésben nevezze át a rendszergazda könyvtárát, az új nevet pedig írja be ide. Például: <em>moodleadmin</em>. Ezzel helyrehozhatók a Moodle rendszergazdai ugrópontjai.';
$string['pathssubdataroot'] = 'Szüksége van egy helyre, ahol a Moodle mentheti a feltöltött állományokat. Ez a könyvtár a webszerver felhasználója (általában \'nobody\' vagy \'apache\') számára legyen mind olvasható, MIND ÍRHATÓ. Ha nem létezik, a telepítő megpróbálja létrehozni.';
$string['pathssubdirroot'] = 'Teljes útvonal a Moodle telepítéséhez. ';
+1
View File
@@ -30,5 +30,6 @@
defined('MOODLE_INTERNAL') || die();
$string['parentlanguage'] = '';
$string['thisdirection'] = 'ltr';
$string['thislanguage'] = 'magyar';
+2
View File
@@ -30,5 +30,7 @@
defined('MOODLE_INTERNAL') || die();
$string['clianswerno'] = 'ոչ';
$string['cliansweryes'] = 'այո';
$string['environmentrequireinstall'] = 'անհրաժեշտ է, որպեսզի տեղակայված և թույլատրված լինի';
$string['environmentrequireversion'] = 'պահանջվում է {$a->needed} տարբերակը, դուք գործարկում եք՝ {$a->current}';
+3
View File
@@ -30,6 +30,8 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p>Non è possibile creare il database </p> <p>Il database non esiste e l\'utente fornito non è autorizzato a crearlo.</p>
<p>E\' necessario che l\'amministratore del sito verifichi la configurazione del database.</p>';
$string['cannotcreatelangdir'] = 'Non è possibile creare la cartella lang';
$string['cannotcreatetempdir'] = 'Non è possibile creare la cartella temp';
$string['cannotdownloadcomponents'] = 'Non è possibile scaricare componenti.';
@@ -39,6 +41,7 @@ $string['cannotsavemd5file'] = 'Non è possibile salvare il file md5';
$string['cannotsavezipfile'] = 'Non è possibile salvare il file ZIP';
$string['cannotunzipfile'] = 'Non è possibile decomprimere il file.';
$string['componentisuptodate'] = 'Il componente è aggiornato.';
$string['dmlexceptiononinstall'] = '<p>Si è verificato un errore nel database: [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'Il controllo del file scaricato non è andato a buon fine.';
$string['invalidmd5'] = 'La variabile di controllo era errata - prova di nuovo';
$string['missingrequiredfield'] = 'Mancano alcuni campi richiesti';
+5 -1
View File
@@ -30,6 +30,9 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p>データベースを作成できません。</p>
<p>指定されたデータベースは存在しません。また、ユーザにはデータベースを作成するパーミッションがありません。</p>
<p>サイト管理者はデータベース設定を確認してください。</p>';
$string['cannotcreatelangdir'] = 'langディレクトリを作成できません。';
$string['cannotcreatetempdir'] = 'tempディレクトリを作成できません。';
$string['cannotdownloadcomponents'] = 'コンポーネットをダウンロードできません。';
@@ -39,10 +42,11 @@ $string['cannotsavemd5file'] = 'mp5ファイルを保存できません。';
$string['cannotsavezipfile'] = 'ZIPファイルを保存できません。';
$string['cannotunzipfile'] = 'ZIPファイルを解凍できません。';
$string['componentisuptodate'] = 'コンポーネントは最新です。';
$string['dmlexceptiononinstall'] = '<p>データベースエラーが発生しました: [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'ダウンロードファイルのチェックに失敗しました。';
$string['invalidmd5'] = 'チェック変数が正しくありません - 再度お試しください。';
$string['missingrequiredfield'] = 'いくつかの必須入力フィールドが入力されていません。';
$string['remotedownloaderror'] = 'あなたのサーバへのコンポーネントのダウンロードに失敗しました。プロクシ設定を確認してください。PHP cURL拡張モジュールの使用を強くお勧めします。<br /><br /><a href="{$a->url}">{$a->url}</a>ファイルを手動でダウンロードした後、あなたのサーバの「{$a->dest}」にコピーおよび解凍してください。';
$string['wrongdestpath'] = '宛先パスが正しくありません。';
$string['wrongsourcebase'] = 'ソースURIベースが正しくありません。';
$string['wrongsourcebase'] = 'ソースURLベースが正しくありません。';
$string['wrongzipfilename'] = 'ZIPファイル名が正しくありません。';
+2 -2
View File
@@ -66,10 +66,10 @@ $string['pathserrcreatedataroot'] = 'データディレクトリ ({$a->dataroot}
$string['pathshead'] = 'パスを確認する';
$string['pathsrodataroot'] = 'datarootディレクトリに書き込み権がありません。';
$string['pathsroparentdataroot'] = '親ディレクトリ ({$a->parent}) に書き込み権がありません。データディレクトリ ({$a->dataroot}) は、インストーラーで作成できません。';
$string['pathssubadmindir'] = '極わずかですが、あなたがコントロールパネル等にアクセスするため、特別なURIとして/adminを使用するウェブホストがあります。残念なことに、これはMoodle管理ページの標準的なローケーションと競合してしまいます。ここに新しいディレクトリ名を入力することで、あなたのMoodleのadminディレクトリを修正することができます。例えば、<em>moodleadmin</em>です。これにより、Moodleのadminリンクが修正されます。';
$string['pathssubadmindir'] = '極わずかですが、あなたがコントロールパネル等にアクセスするため、特別なURLとして/adminを使用するウェブホストがあります。残念なことに、これはMoodle管理ページの標準的なローケーションと競合してしまいます。ここに新しいディレクトリ名を入力することで、あなたのMoodleのadminディレクトリを修正することができます。例えば、<em>moodleadmin</em>です。これにより、Moodleのadminリンクが修正されます。';
$string['pathssubdataroot'] = 'あなたには、Moodleがファイルをアップロードすることのできる場所が必要です。このディレクトリは、ウェブサーバユーザ (通常「nobody」または「apache」) から読み込みおよび「書き込み」できる必要があります。しかし、ウェブからは直接アクセスできないようにしてください。データディレクトリがない場合、インストーラーは作成を試みます。';
$string['pathssubdirroot'] = 'Moodleインストールに関するフルディレクトリパスです。';
$string['pathssubwwwroot'] = 'Moodleにアクセスすることのできるフルウェブアドレスです。複数アドレスを使用して、Moodleにアクセスすることはできません。あなたのサイトに複数のパブリックアドレスがある場合、このアドレスを除く、すべてのアドレスにパーマネントリダイレクトを設定してください。あなたのサイトにイントラネットおよびインターネットからアクセスできる場合、ここにはパブリックアドレスを入力してください。また、イントラネットユーザもパブリックアドレスを利用できるよう、DNSを設定してください。アドレスが正しくない場合、あなたのブラウザのURIを変更して、異なる値でインストールを再開してください。';
$string['pathssubwwwroot'] = 'Moodleにアクセスすることのできるフルウェブアドレスです。複数アドレスを使用して、Moodleにアクセスすることはできません。あなたのサイトに複数のパブリックアドレスがある場合、このアドレスを除く、すべてのアドレスにパーマネントリダイレクトを設定してください。あなたのサイトにイントラネットおよびインターネットからアクセスできる場合、ここにはパブリックアドレスを入力してください。また、イントラネットユーザもパブリックアドレスを利用できるよう、DNSを設定してください。アドレスが正しくない場合、あなたのブラウザのURLを変更して、異なる値でインストールを再開してください。';
$string['pathsunsecuredataroot'] = 'dirrootロケーションが安全ではありません。';
$string['pathswrongadmindir'] = 'adminディレクトリがありません。';
$string['phpextension'] = '{$a} PHP拡張モジュール';
+5
View File
@@ -30,8 +30,13 @@
defined('MOODLE_INTERNAL') || die();
$string['clianswerno'] = 'n';
$string['cliansweryes'] = 't';
$string['cliincorrectvalueerror'] = 'Klaida, klaidinga "{$a->option}" reikšmė "{$a->value}"';
$string['cliincorrectvalueretry'] = 'Klaidinga reikšmė, bandykite dar kartą';
$string['clitypevalue'] = 'tipo reikšmė';
$string['clitypevaluedefault'] = 'tipo reikšmė, paspauskite „Enter“, jei norite naudoti numatytąją reikšmę ({$a})';
$string['cliunknowoption'] = 'Neatpažintos parinktys: {$a} naudokite --žinyno parinktį.';
$string['cliyesnoprompt'] = 'įveskite t (taip) arba n (ne)';
$string['environmentrequireinstall'] = 'turi būti įdiegta ir įjungta';
$string['environmentrequireversion'] = 'būtina naudoti versiją {$a->needed}, o jūs naudojate {$a->current}';
+4
View File
@@ -30,6 +30,9 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p>Kan databank niet maken.</p>
<p>De opgegeven databank bestaat niet en de opgegeven gebruiker heeft onvoldoende rechten om de databank te maken.</p>
<p>De site-beheerder moet de databankconfiguratie controleren.</p>';
$string['cannotcreatelangdir'] = 'Kan lang map niet maken';
$string['cannotcreatetempdir'] = 'Kan tijdelijke map niet maken.';
$string['cannotdownloadcomponents'] = 'Kan componenten niet downloaden.';
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = 'Kan md5-bestand niet bewaren.';
$string['cannotsavezipfile'] = 'Kan ZIP-bestand niet bewaren.';
$string['cannotunzipfile'] = 'Kon bestand niet unzippen';
$string['componentisuptodate'] = 'Component is up-to-date';
$string['dmlexceptiononinstall'] = '<p>Databankfout [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'Controle van het gedownloade bestand mislukt';
$string['invalidmd5'] = 'De controlevariable was fout - probeer nog eens';
$string['missingrequiredfield'] = 'Vereist veld ontbreekt';
+4
View File
@@ -30,6 +30,9 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p>Kan ikke opprette databasen.</p>
<p>Den angitte databasen eksisterer ikke og oppgitt bruker har ikke rettigheter til å opprette databasen.</p>
<p>Portaladministratoren derfor verifisere databaseoppsettet.</p>';
$string['cannotcreatelangdir'] = 'Kan ikke opprette mappen \'lang\'.';
$string['cannotcreatetempdir'] = 'Kan ikke opprette mappen \'temp';
$string['cannotdownloadcomponents'] = 'Kan ikke laste ned komponentene.';
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = 'Kan ikke lagre md5-fil.';
$string['cannotsavezipfile'] = 'Kan ikke lagre ZIP-fil.';
$string['cannotunzipfile'] = 'Kan ikke pakke opp filen.';
$string['componentisuptodate'] = 'Komponenten er oppdatert';
$string['dmlexceptiononinstall'] = '<p>Det oppstod en databasefeil [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'Sjekk av nedlastet fil mislykkes.';
$string['invalidmd5'] = 'Ugyldig md5, prøv igjen';
$string['missingrequiredfield'] = 'Noen påkrevde felt mangler';
+1
View File
@@ -30,5 +30,6 @@
defined('MOODLE_INTERNAL') || die();
$string['parentlanguage'] = '';
$string['thisdirection'] = 'ltr';
$string['thislanguage'] = 'Norsk - bokmål';
+2
View File
@@ -30,6 +30,7 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p> Não é possível criar a base de dados. </p><p> A base de dados especificada não existe e o utilizador em questão não tem permissão para criar a base de dados. </p><p> O administrador do site deve verificar a configuração da base de dados. </p>';
$string['cannotcreatelangdir'] = 'Não é possível criar a pasta de pacotes linguísticos';
$string['cannotcreatetempdir'] = 'Não é possível criar a pasta de ficheiros temporários';
$string['cannotdownloadcomponents'] = 'Não é possível descarregar os componentes.';
@@ -39,6 +40,7 @@ $string['cannotsavemd5file'] = 'Não é possível gravar o ficheiro md5';
$string['cannotsavezipfile'] = 'Não é possível gravar o ficheiro ZIP';
$string['cannotunzipfile'] = 'Não é possível descompactar o ficheiro ZIP';
$string['componentisuptodate'] = 'O componente está atualizado.';
$string['dmlexceptiononinstall'] = '<p>Ocorreu um erro de base de dados [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'A verificação do ficheiro descarregado falhou.';
$string['invalidmd5'] = 'A variável de verificação está errada - tente novamente.';
$string['missingrequiredfield'] = 'Um dos campos obrigatórios está em falta';
+1 -1
View File
@@ -39,6 +39,6 @@ $string['clitypevaluedefault'] = 'digite o valor, pressione Enter para utilizar
$string['cliunknowoption'] = 'Opções não reconhecidas:
{$a}
Por favor use a opção --help.';
$string['cliyesnoprompt'] = 'digite y (sim) ou n (não)';
$string['cliyesnoprompt'] = 'digite s (sim) ou n (não)';
$string['environmentrequireinstall'] = 'deve ser instalado e habilitado';
$string['environmentrequireversion'] = 'a versão {$a->needed} é necessária e você está usando a versão {$a->current}';
+1 -1
View File
@@ -32,7 +32,7 @@ defined('MOODLE_INTERNAL') || die();
$string['clianswerno'] = 'n';
$string['cliansweryes'] = 'y';
$string['cliincorrectvalueerror'] = 'Ошибка, некорректное значение "{$a->value}" для "{$a->option}"';
$string['cliincorrectvalueerror'] = 'Ошибка, некорректное значение «{$a->value}» для «{$a->option}»';
$string['cliincorrectvalueretry'] = 'Некорректное значение, пожалуйста, попробуйте заново';
$string['clitypevalue'] = 'введите значение';
$string['clitypevaluedefault'] = 'введите значение, нажмите Enter для использования значения по умолчанию ({$a})';
+3 -1
View File
@@ -30,6 +30,7 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p> Невозможно создать базу данных. </p><p> Указанная база данных не существует, и данный пользователь не имеет разрешения на создание базы данных. </p><p> Администратор сайта должен проверить конфигурацию базы данных. </p>';
$string['cannotcreatelangdir'] = 'Не удается создать каталог языка';
$string['cannotcreatetempdir'] = 'Не удается создать временный каталог';
$string['cannotdownloadcomponents'] = 'Невозможно загрузить компоненты.';
@@ -39,10 +40,11 @@ $string['cannotsavemd5file'] = 'Не удалось сохранить MD5-фа
$string['cannotsavezipfile'] = 'Не удалось сохранить ZIP-файл';
$string['cannotunzipfile'] = 'Не удалось распаковать файл';
$string['componentisuptodate'] = 'Компонент не нуждается в обновлении';
$string['dmlexceptiononinstall'] = '<p>Произошла ошибка базы данных [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'Ошибка проверки загруженного файла';
$string['invalidmd5'] = 'Некорректная md5';
$string['missingrequiredfield'] = 'Отсутствуют некоторые обязательные поля';
$string['remotedownloaderror'] = 'Не удалось загрузить компонент на сервер, проверьте настройки прокси-сервера, настоятельно рекомендуется установка расширения cURL языка PHP.<br /> <br />Вам следует вручную загрузить файл по ссылке <a href="{$a->url}">{$a->url}</a>, скопировать его в папку "{$a->dest}" на своём сервере и там его распаковать.';
$string['remotedownloaderror'] = 'Не удалось загрузить компонент на сервер, проверьте настройки прокси-сервера, настоятельно рекомендуется установка расширения cURL языка PHP.<br /> <br />Вам следует вручную загрузить файл по ссылке <a href="{$a->url}">{$a->url}</a>, скопировать его в папку «{$a->dest}» на своем сервере и там его распаковать.';
$string['wrongdestpath'] = 'Ошибочный путь назначения';
$string['wrongsourcebase'] = 'Неправильный адрес источника';
$string['wrongzipfilename'] = 'Неверное имя ZIP-файла';
+6 -6
View File
@@ -42,7 +42,7 @@ $string['databasename'] = 'Название базы данных';
$string['databasetypehead'] = 'Выберите драйвер базы данных';
$string['dataroot'] = 'Каталог данных';
$string['datarootpermission'] = 'Разрешения на каталоги данных';
$string['dbprefix'] = 'Префикс имён таблиц';
$string['dbprefix'] = 'Префикс имен таблиц';
$string['dirroot'] = 'Каталог Moodle';
$string['environmenthead'] = 'Проверка среды...';
$string['environmentsub2'] = 'У каждой версии Moodle есть минимальные требования к версии PHP и набор обязательных расширений PHP.
@@ -50,7 +50,7 @@ $string['environmentsub2'] = 'У каждой версии Moodle есть ми
Пожалуйста, свяжитесь с администратором сервера, если не знаете, как установить новую версию или включить расширения PHP.';
$string['errorsinenvironment'] = 'Проверка окружения не выполнена!';
$string['installation'] = 'Установка';
$string['langdownloaderror'] = 'К сожалению, не удалось установить язык "{$a}". Процесс установки продолжится на английском.';
$string['langdownloaderror'] = 'К сожалению, не удалось установить язык «{$a}». Процесс установки продолжится на английском.';
$string['memorylimithelp'] = '<p>Сейчас ограничение памяти в PHP на Вашем сервере установлено в {$a}.</p>
<p>Из-за этого у через какое-то время у Moodle могут возникнуть проблемы с памятью, особенно если у Вас будет много модулей и/или пользователей.</p>
@@ -58,13 +58,13 @@ $string['memorylimithelp'] = '<p>Сейчас ограничение памят
<p>Мы рекомендуем, если возможно, установить в PHP более высокое ограничение памяти, например 40M.
Это можно попробовать сделать следующими способами:</p>
<ol>
<li>Если есть возможность, перекомпилируёте PHP с ключом <i>--enable-memory-limit</i>.
<li>Если есть возможность, перекомпилируете PHP с ключом <i>--enable-memory-limit</i>.
В этом случае Moodle сможет самостоятельна установить ограничение памяти.</li>
<li>Если у Вас есть доступ к файлу php.ini, Вы можете изменить параметр <b>memory_limit</b>
на что-нибудь типа 40M. Если доступа у Вас нет, может быть у Вас есть возможность попросить администратора сделать это.</li>
<li>На некоторых серверах PHP можно создать в каталоге Moodle файл .htaccess содержащий следующую строку:
<blockquote><div>php_value memory_limit 40M</div></blockquote>
<p>Тем не менее, на некоторых серверах из-за этого могут перестать работать <b>все</b> страницы PHP (Вы увидите ошибки на страницах). В этом случае файл придётся удалить файл .htaccess.</p></li>
<p>Тем не менее, на некоторых серверах из-за этого могут перестать работать <b>все</b> страницы PHP (Вы увидите ошибки на страницах). В этом случае файл придется удалить файл .htaccess.</p></li>
</ol>';
$string['paths'] = 'Пути';
$string['pathserrcreatedataroot'] = 'Программа установки не может создать каталог данных ({$a->dataroot}).';
@@ -81,7 +81,7 @@ $string['pathssubwwwroot'] = 'Полный веб-адрес, по которо
Если указанный здесь адрес неверный, измените URL в строке адреса браузера, чтобы перезапустить установку с другим значением.';
$string['pathsunsecuredataroot'] = 'Расположение каталога данных не отвечает требованиям безопасности';
$string['pathswrongadmindir'] = 'Каталог admin не существует';
$string['phpextension'] = 'Расширение PHP "{$a}"';
$string['phpextension'] = 'Расширение PHP «{$a}»';
$string['phpversion'] = 'Версия PHP';
$string['phpversionhelp'] = '<p>Для Moodle необходим PHP версии 4.3.0 и выше или 5.1.0 и выше (известны некоторые проблемы с версией 5.0.x).</p>
<p>Сейчас у Вас используется версия {$a}</p>
@@ -93,5 +93,5 @@ $string['welcomep30'] = 'Эта версия набора программ <stro
$string['welcomep40'] = 'Также в этот набор входит <strong>Moodle {$a->moodlerelease} ({$a->moodleversion})</strong>.';
$string['welcomep50'] = 'Порядок использования приложений, входящих в этот набор, регламентируется соответствующими лицензиями. Набор программ <strong>{$a->installername}</strong> является полностью <a href="http://ru.wikipedia.org/wiki/Открытое_программное_обеспечение">открытым </a> и распространяется на условиях лицензии <a href="http://www.gnu.org/copyleft/gpl.html">GPL</a>.';
$string['welcomep60'] = 'На следующих страницах Вы сможете за несколько простых шагов настроить и установить <strong>Moodle</strong> на свой компьютер. Вы сможете принять настройки по умолчанию или изменить их в зависимости от своих потребностей.';
$string['welcomep70'] = 'Нажмите кнопку "Далее" чтобы продолжить процесс установки <strong>Moodle</strong>.';
$string['welcomep70'] = 'Нажмите кнопку «Далее» чтобы продолжить процесс установки <strong>Moodle</strong>.';
$string['wwwroot'] = 'Веб-адрес';
+4
View File
@@ -30,6 +30,9 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p>Није могуће креирати базу података.</p>
<p>Специфицирана база не постоји и дати корисник нема права да је креира.</p>
<p>Администратор сајта би требао да провери подешавања базе.</p>';
$string['cannotcreatelangdir'] = 'Није могуће креирати директоријум језика';
$string['cannotcreatetempdir'] = 'Није могуће креирати привремени директоријум';
$string['cannotdownloadcomponents'] = 'Није могуће преузети компоненте.';
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = 'Није могуће сачувати md5 да
$string['cannotsavezipfile'] = 'Није могуће сачувти ZIP архиву.';
$string['cannotunzipfile'] = 'Није могуће распаковати ZIP датотеку.';
$string['componentisuptodate'] = 'Компонента је доступна у својој најновијој верзији';
$string['dmlexceptiononinstall'] = '<p>Дошло је до грешке везане за базу података [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'Није успела провера преузете датотеке';
$string['invalidmd5'] = 'Неисправна md5 датотека';
$string['missingrequiredfield'] = 'Недостаје неко обавезно поље';
+4
View File
@@ -30,6 +30,9 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p>Nije moguće kreirati bazu podataka.</p>
<p>Specificirana baza ne postoji i dati korisnik nema prava da je kreira.</p>
<p>Administrator sajta bi trebao da proveri podešavanja baze.</p>';
$string['cannotcreatelangdir'] = 'Nije moguće kreirati direktorijum jezika';
$string['cannotcreatetempdir'] = 'Nije moguće kreirati privremeni direktorijum';
$string['cannotdownloadcomponents'] = 'Nije moguće preuzeti komponente.';
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = 'Nije moguće sačuvati md5 datoteku.';
$string['cannotsavezipfile'] = 'Nije moguće sačuvti ZIP arhivu.';
$string['cannotunzipfile'] = 'Nije moguće raspakovati ZIP datoteku.';
$string['componentisuptodate'] = 'Komponenta je dostupna u svojoj najnovijoj verziji';
$string['dmlexceptiononinstall'] = '<p>Došlo je do greške vezane za bazu podataka [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['downloadedfilecheckfailed'] = 'Nije uspela provera preuzete datoteke';
$string['invalidmd5'] = 'Neispravna md5 datoteka';
$string['missingrequiredfield'] = 'Nedostaje neko obavezno polje';
+2 -2
View File
@@ -38,7 +38,7 @@ $string['clitypevalue'] = 'değeri yazın';
$string['clitypevaluedefault'] = 'değeri yazın, varsayılan değeri ({$a}) kullanmak için Enter tuşuna basın';
$string['cliunknowoption'] = 'Tanınmayan seçenekler:
{$a}
. Lütfen --help seçeneğini kullanın.';
Lütfen --help seçeneğini kullanın.';
$string['cliyesnoprompt'] = 'e (evet) veya h (hayır) yazın';
$string['environmentrequireinstall'] = 'yüklenmesi/etkinleştirilmesi gerekli';
$string['environmentrequireinstall'] = 'yüklenmiş ve etkinleştirilmiş olmalıdır';
$string['environmentrequireversion'] = 'sürüm {$a->needed} gerekli ve şu anda {$a->current} çalışıyor';
+15 -15
View File
@@ -30,19 +30,19 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatelangdir'] = 'Dil dizini oluşturulamıyor.';
$string['cannotcreatetempdir'] = 'Geçici dizin oluşturulamıyor.';
$string['cannotdownloadcomponents'] = 'Bileşenler indirilemedi.';
$string['cannotdownloadzipfile'] = 'ZIP dosyası indirilemedi.';
$string['cannotfindcomponent'] = 'Bileşen bulunamadı.';
$string['cannotsavemd5file'] = 'Md5 dosyadı kaydedilemedi.';
$string['cannotsavezipfile'] = 'ZIP dosyası kaydedilemedi.';
$string['cannotunzipfile'] = 'Dosya arşivi açılamadı.';
$string['componentisuptodate'] = 'Bileşen günceldir.';
$string['downloadedfilecheckfailed'] = 'İndirilmiş dosya kontrol hatası';
$string['invalidmd5'] = 'Geçersiz md5';
$string['missingrequiredfield'] = 'Bazı gerekli alanlar eksik';
$string['cannotcreatelangdir'] = 'Dil dizini oluşturulamıyor';
$string['cannotcreatetempdir'] = 'Geçici dizin oluşturulamıyor';
$string['cannotdownloadcomponents'] = 'Bileşenler indirilemedi';
$string['cannotdownloadzipfile'] = 'ZIP dosyası indirilemedi';
$string['cannotfindcomponent'] = 'Bileşen bulunamadı';
$string['cannotsavemd5file'] = 'md5 dosyası kaydedilemedi';
$string['cannotsavezipfile'] = 'ZIP dosyası kaydedilemedi';
$string['cannotunzipfile'] = 'Dosya arşivi açılamadı';
$string['componentisuptodate'] = 'Bileşen güncel';
$string['downloadedfilecheckfailed'] = 'İndirilen dosya kontrolü hatası';
$string['invalidmd5'] = 'Kontrol değişkeni yanlış - yeniden deneyin';
$string['missingrequiredfield'] = 'Gerekli alanlardan bazıları eksik';
$string['remotedownloaderror'] = 'Bileşeni sunucunuza indirirken hata oluştu, lütfen proxy(vekil) ayarlarını kontrol edin. PHP cURL eklentisi şiddetle tavsiye edilir.<br /><br /><a href="{$a->url}">{$a->url}</a><br />dosyasını kendiniz indirmeli ve indirdiğiniz dosyayı sunucunuzundaki "{$a->dest}" klasörüne kaydetmeli ve zip arşivini açmalısınız.';
$string['wrongdestpath'] = 'Hatalı hedef yolu';
$string['wrongsourcebase'] = 'Hatalı kaynak URL base.';
$string['wrongzipfilename'] = 'Hatalı ZIP dosya adı.';
$string['wrongdestpath'] = 'Yanlış hedef yolu';
$string['wrongsourcebase'] = 'Yanlış kaynak URL tabanı';
$string['wrongzipfilename'] = 'Yanlış ZIP dosya adı';
+13 -4
View File
@@ -31,19 +31,22 @@
defined('MOODLE_INTERNAL') || die();
$string['admindirname'] = 'Yönetici Dizini';
$string['availablelangs'] = 'Kullanılabilir diller';
$string['availablelangs'] = 'Kullanılabilir dil paketleri';
$string['chooselanguagehead'] = 'Bir dil seçin';
$string['chooselanguagesub'] = 'Lütfen, SADECE kurulum için bir dil seçin. Site ve kullanıcı dillerini sonraki ekranda seçebilirsiniz.';
$string['clialreadyconfigured'] = 'config.php halihazırda mevcut, lütfen eğer bu siteyi yüklemek istiyorsanız şu dizini kullanın: admin/cli/install_database.php';
$string['clialreadyinstalled'] = 'Config.php zaten var. Sitenizi güncellemek istiyorsanız bu adresi kullanın: admin/cli/upgrade.php';
$string['cliinstallheader'] = 'Moodle {$a} komut satırı kurulum programı';
$string['databasehost'] = 'Veritabanı sunucusu:';
$string['databasename'] = 'Veritabanı adı:';
$string['databasehost'] = 'Veritabanı sunucusu';
$string['databasename'] = 'Veritabanı adı';
$string['databasetypehead'] = 'Veritabanı sürücünü seçin';
$string['dataroot'] = 'Veri Dizini';
$string['datarootpermission'] = 'Veri dizinleri izni';
$string['dbprefix'] = 'Tablo öneki';
$string['dirroot'] = 'Moodle Dizini';
$string['environmenthead'] = 'Ortam kontrol ediliyor...';
$string['errorsinenvironment'] = 'Ortamda hatalar var!';
$string['environmentsub2'] = 'Her Moodle dağıtımı, bazı PHP versiyon gereksinimi ve bir takım PHP uzantılarının yüklü olmalı zorunluluğuna sahiptir. Tüm ortam denetimi her yükleme ve güncellemeden önce yapılmalıdır. Eğer PHP \'nin yeni versiyonunu veya PHP uzantılarını nasıl yükleyeceğinizi bilmiyorsanız lütfen sunucu yöneticiniz ile iletişime geçiniz.';
$string['errorsinenvironment'] = 'Ortam kontrolu başarısız oldu!';
$string['installation'] = 'Kurulum';
$string['langdownloaderror'] = 'Maalesef "{$a}" dil paketi kurulamadı. Kuruluma İngilizce olarak devam edilecek.';
$string['memorylimithelp'] = '<p>Sunucunuz için PHP bellek limiti şu anda {$a} olarak ayarlanmış durumda.</p>
@@ -74,7 +77,13 @@ $string['pathserrcreatedataroot'] = 'Veri Klasörü ({$a->dataroot}) kurulum tar
$string['pathshead'] = 'Yolları doğrulayın';
$string['pathsrodataroot'] = 'Veri yolu yazılabilir değil.';
$string['pathsroparentdataroot'] = 'Ana klasör ({$a->parent}) yazılabilir değil. Veri Klasörü ({$a->dataroot}) kurulum tarafından oluşturulamıyor.';
$string['pathssubadmindir'] = 'Pek az web sunucusu /admin adresini kontrol paneline yada benzeri birşeye erişmek için kullanır. Ne yazık ki bu Moodle admin sayfalarının standart konumuyla bir karışıklık yaratır. Bu durumu düzeltmek için kurulumunuzdaki admin dizinini yeniden isimlendirip buraya yeni ismi yazınız. Örneğin: <em>moodleadmin</em>. Bu Moodle\'daki admin bağlantısını düzeltecektir.';
$string['pathssubdataroot'] = 'Moodle\'ın yüklenen dosyaları kayıt etmesi için bir yere ihtiyacınız var. Bu dizin/klasör web sunucusunun kullanıcı hesabı tarafından okunabilir ve yazılabilir olmalıdır. Bu okuma, yazma izinlerini klasöre vermelisiniz. Fakat bu klasör aynı zamanda web üzerinden direk erişilebilir olmamalıdır. Yükleyici eğer klasör yok ise oluşturmayı deneyecektir.';
$string['pathssubdirroot'] = 'Moodle kurulumu için tam klasör yolu. Sadece sembolik linkleri kullanmaya gereksinim duyuyorsanız değiştirin.';
$string['pathssubwwwroot'] = 'Moodle\'a erişlecek tam web adresi. Moodle\'ın birden çok adres kullanması mümkün değildir.
Eğer siteniz birden fazla adrese sahip ise bu adres harici diğerlerinin yönlendirme ayarlarını yapılandırın.
Eğer siteniz Intranet ve İnternet üzerinden erişilebilirse burada genel bir adres kullanın ve DNS\'iniz ayarlayın. Bu şekilde Intranet kullanıcları da genel adresi kullanabilirler.
Eğer adres doğru değilse lütfen kurulumu tekrar başlatmak için tarayıcınızdaki URL\'i değiştirin.';
$string['pathsunsecuredataroot'] = 'Veri yolu güvenli değil';
$string['pathswrongadmindir'] = 'Yönetici klasörü yok';
$string['phpextension'] = '{$a} PHP eklentisi';
+4
View File
@@ -30,6 +30,9 @@
defined('MOODLE_INTERNAL') || die();
$string['cannotcreatedboninstall'] = '<p>無法建立資料庫</p>
<p>指定之資料庫並不存在。使用者並未有權限建立資料庫</p>
<p>網站管理員需查明資料庫之組態.</p>';
$string['cannotcreatelangdir'] = '無法建立語言資料夾。';
$string['cannotcreatetempdir'] = '無法建立暫存資料夾。';
$string['cannotdownloadcomponents'] = '無法下載元件。';
@@ -39,6 +42,7 @@ $string['cannotsavemd5file'] = '無法儲存 md5 檔案。';
$string['cannotsavezipfile'] = '無法儲存 ZIP 檔案。';
$string['cannotunzipfile'] = '無法解壓縮檔案。';
$string['componentisuptodate'] = '元件已經是最新的了。';
$string['dmlexceptiononinstall'] = '<p>資料庫有誤 [{$a->錯誤碼}].<br />{$a->排除故障資訊}</p>';
$string['downloadedfilecheckfailed'] = '下載的檔案檢查失敗';
$string['invalidmd5'] = '這檢查變項是錯的,再試一次。';
$string['missingrequiredfield'] = '缺少部份必填欄位';
+2
View File
@@ -1,5 +1,6 @@
admindirname,install
availablelangs,install
cannotcreatedboninstall,error
cannotcreatelangdir,error
cannotcreatetempdir,error
cannotdownloadcomponents,error
@@ -28,6 +29,7 @@ databasetypehead,install
dataroot,install
datarootpermission,install
dbprefix,install
dmlexceptiononinstall,error
dirroot,install
downloadedfilecheckfailed,error
environmenthead,install
+1
View File
@@ -856,6 +856,7 @@ $string['questioncwqpfscheck'] = 'One or more \'random\' questions in a quiz are
$string['questioncwqpfsok'] = 'Good. There are no \'random\' questions in your quizzes that are set up to select questions from a mixture of shared and unshared question categories.';
$string['questiontype'] = 'Question type';
$string['questiontypes'] = 'Question types';
$string['quizattemptsupgradedmessage'] = 'In Moodle 2.1 there was a major upgrade to questions. It was possible to delay parts of the database upgrade to be run later. Before upgrading to Moodle 2.7, this upgrade must be completed.';
$string['recaptchaprivatekey'] = 'ReCAPTCHA private key';
$string['recaptchapublickey'] = 'ReCAPTCHA public key';
$string['register'] = 'Register your site';
+1
View File
@@ -67,6 +67,7 @@ $string['ex_unabletolock'] = 'Unable to acquire a lock for caching.';
$string['ex_unmetstorerequirements'] = 'You are unable to use this store at the present time. Please refer to the documentation to determine its requirements.';
$string['gethit'] = 'Get - Hit';
$string['getmiss'] = 'Get - Miss';
$string['inadequatestoreformapping'] = 'This store doesn\'t meet the requirements for all known definitions. Definitions for which this store is inadequate will be given the original default store instead of the selected store.';
$string['invalidplugin'] = 'Invalid plugin';
$string['invalidstore'] = 'Invalid cache store provided';
$string['lockdefault'] = 'Default';
+4
View File
@@ -46,6 +46,9 @@ $string['cannotcallscript'] = 'You cannot call this script in that way';
$string['cannotcallusgetselecteduser'] = 'You cannot call user_selector::get_selected_user if multi select is true.';
$string['cannotcreatebackupdir'] = 'Could not create backupdata folder. The site administrator needs to fix the file permissions';
$string['cannotcreatecategory'] = 'The category was not inserted';
$string['cannotcreatedboninstall'] = '<p>Cannot create the database.</p>
<p>The specified database does not exist and the given user does not have permission to create the database.</p>
<p>The site administrator should verify database configuration.</p>';
$string['cannotcreategroup'] = 'Error creating group';
$string['cannotcreatelangbase'] = 'Error: Could not create base lang directory';
$string['cannotcreatelangdir'] = 'Cannot create lang directory';
@@ -199,6 +202,7 @@ $string['ddlunknownerror'] = 'Unknown DDL library error';
$string['ddlxmlfileerror'] = 'XML database file errors found';
$string['destinationcmnotexit'] = 'The destination course module does not exist';
$string['detectedbrokenplugin'] = 'Plugin "{$a}" is defective or outdated, can not continue, sorry.';
$string['dmlexceptiononinstall'] = '<p>A database error has occurred [{$a->errorcode}].<br />{$a->debuginfo}</p>';
$string['dmlreadexception'] = 'Error reading from database';
$string['dmltransactionexception'] = 'Database transaction error';
$string['dmlwriteexception'] = 'Error writing to database';
+1 -1
View File
@@ -32,7 +32,7 @@ $string['allmine'] = 'All messages to me or from me';
$string['allstudents'] = 'All messages between students in course';
$string['allusers'] = 'All messages from all users';
$string['backupmessageshelp'] = 'If enabled, then instant messages will be included in SITE automated backups';
$string['beepnewmessage'] = 'Beep on new message';
$string['beepnewmessage'] = 'Beep when popup notification is displayed';
$string['blockcontact'] = 'Block contact';
$string['blockedmessages'] = '{$a} message(s) to/from blocked users';
$string['blockedusers'] = 'Blocked users ({$a})';
+2 -2
View File
@@ -213,8 +213,8 @@ $string['serviceswesubscribeto'] = 'Services on {$a} that we subscribe to.';
$string['settings'] = 'Settings';
$string['showlocal'] = 'Show local users';
$string['showremote'] = 'Show remote users';
$string['ssl_acl_allow'] = 'SSO ACL: Allow user {$a->user} from {$a->host}';
$string['ssl_acl_deny'] = 'SSO ACL: Deny user {$a->user} from {$a->host}';
$string['ssl_acl_allow'] = 'SSO ACL: Allow user \'{$a->user}\' from \'{$a->host}\'';
$string['ssl_acl_deny'] = 'SSO ACL: Deny user \'{$a->user}\' from \'{$a->host}\'';
$string['ssoaccesscontrol'] = 'SSO access control';
$string['ssoacldescr'] = 'Use this page to grant/deny access to specific users from remote MNet hosts. This is functional when you are offering SSO services to remote users. To control your <em>local</em> users\' ability to roam to other MNet hosts, use the roles system to grant them the <em>mnetlogintoremote</em> capability.';
$string['ssoaclneeds'] = 'For this functionality to work, you must have Networking on, plus the MNet authentication plugin enabled.';
+14
View File
@@ -5270,6 +5270,10 @@ abstract class context extends stdClass implements IteratorAggregate {
public function delete() {
global $DB;
if ($this->_contextlevel <= CONTEXT_SYSTEM) {
throw new coding_exception('Cannot delete system context');
}
// double check the context still exists
if (!$DB->record_exists('context', array('id'=>$this->_id))) {
context::cache_remove($this);
@@ -5365,6 +5369,11 @@ abstract class context extends stdClass implements IteratorAggregate {
public function get_child_contexts() {
global $DB;
if (empty($this->_path) or empty($this->_depth)) {
debugging('Can not find child contexts of context '.$this->_id.' try rebuilding of context paths');
return array();
}
$sql = "SELECT ctx.*
FROM {context} ctx
WHERE ctx.path LIKE ?";
@@ -6337,6 +6346,11 @@ class context_coursecat extends context {
public function get_child_contexts() {
global $DB;
if (empty($this->_path) or empty($this->_depth)) {
debugging('Can not find child contexts of context '.$this->_id.' try rebuilding of context paths');
return array();
}
$sql = "SELECT ctx.*
FROM {context} ctx
WHERE ctx.path LIKE ? AND (ctx.depth = ? OR ctx.contextlevel = ?)";
+30 -3
View File
@@ -1552,7 +1552,20 @@ abstract class admin_setting {
rebuild_course_cache(0, true);
}
// log change
$this->add_to_config_log($name, $oldvalue, $value);
return true; // BC only
}
/**
* Log config changes if necessary.
* @param string $name
* @param string $oldvalue
* @param string $value
*/
protected function add_to_config_log($name, $oldvalue, $value) {
global $DB, $USER;
$log = new stdClass();
$log->userid = during_initial_install() ? 0 :$USER->id; // 0 as user id during install
$log->timemodified = time();
@@ -1561,8 +1574,6 @@ abstract class admin_setting {
$log->value = $value;
$log->oldvalue = $oldvalue;
$DB->insert_record('config_log', $log);
return true; // BC only
}
/**
@@ -1919,6 +1930,22 @@ class admin_setting_configpasswordunmask extends admin_setting_configtext {
parent::__construct($name, $visiblename, $description, $defaultsetting, PARAM_RAW, 30);
}
/**
* Log config changes if necessary.
* @param string $name
* @param string $oldvalue
* @param string $value
*/
protected function add_to_config_log($name, $oldvalue, $value) {
if ($value !== '') {
$value = '********';
}
if ($oldvalue !== '' and $oldvalue !== null) {
$oldvalue = '********';
}
parent::add_to_config_log($name, $oldvalue, $value);
}
/**
* Returns XHTML for the field
* Writes Javascript into the HTML below right before the last div
-5
View File
@@ -169,11 +169,6 @@
die("Illegal path http:// or ftp://");
}
// Initialize random number generator for randomizing cache flushes
// -- note Since PHP 4.2.0, the seed becomes optional and defaults to a random value if omitted.
srand(((double)microtime())*1000000);
/**
* ADODB version as a string.
*/
+1 -1
View File
@@ -19,6 +19,6 @@ Added:
* readme_moodle.txt - this file ;-)
Our changes:
* none
* Removed random seed initialization from lib/adodb/adodb.inc.php:172
skodak, iarenaza, moodler, stronk7
+37
View File
@@ -80,3 +80,40 @@ function ajaxenabled(array $browsers = null) {
return false;
}
}
/**
* Starts capturing output whilst processing an AJAX request.
*
* This should be used in combination with ajax_check_captured_output to
* report any captured output to the user.
*
* @retrun Boolean Returns true on success or false on failure.
*/
function ajax_capture_output() {
// Start capturing output in case of broken plugins.
return ob_start();
}
/**
* Check captured output for content. If the site has a debug level of
* debugdeveloper set, and the content is non-empty, then throw a coding
* exception which can be captured by the Y.IO request and displayed to the
* user.
*
* @return Any output that was captured.
*/
function ajax_check_captured_output() {
global $CFG;
// Retrieve the output - there should be none.
$output = ob_get_contents();
ob_end_clean();
if ($CFG->debug == DEBUG_DEVELOPER && !empty($output)) {
// Only throw an error if the site is in debugdeveloper.
throw new coding_exception('Unexpected output whilst processing AJAX request. ' .
'This could be caused by trailing whitespace. Output received: ' .
var_export($output, true));
}
return $output;
}
+4 -1
View File
@@ -1195,9 +1195,12 @@ class completion_info {
* @return int Completion state e.g. COMPLETION_INCOMPLETE
*/
public static function internal_get_grade_state($item, $grade) {
if (!$grade) {
// If no grade is supplied or the grade doesn't have an actual value, then
// this is not complete.
if (!$grade || (is_null($grade->finalgrade) && is_null($grade->rawgrade))) {
return COMPLETION_INCOMPLETE;
}
// Conditions to show pass/fail:
// a) Grade has pass mark (default is 0.00000 which is boolean true so be careful)
// b) Grade is visible (neither hidden nor hidden-until)
-1
View File
@@ -67,7 +67,6 @@ function cron_run() {
// Run cleanup core cron jobs, but not every time since they aren't too important.
// These don't have a timer to reduce load, so we'll use a random number
// to randomly choose the percentage of times we should run these jobs.
srand ((double) microtime() * 10000000);
$random100 = rand(0,100);
if ($random100 < 20) { // Approximately 20% of the time.
mtrace("Running clean-up tasks...");
+4 -3
View File
@@ -15,15 +15,16 @@
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* This is a one-line short description of the file
* This is a place to put custom environment checks, if there is not a better place.
*
* This library contains a collection of functions able to perform
* some custom checks executed by environmental tests (automatically
* executed on install & upgrade and under petition in the admin block).
*
* Any function in this library must return:
* Any function in this library gets a environment_results object passed in.
* It must return:
* - null: if the test isn't relevant and must not be showed (ignored)
* - environment_results object with the status set to:
* - the environment_results object that was passed in, with the status set to:
* - true: if passed
* - false: if failed
*
+62 -5
View File
@@ -1293,13 +1293,13 @@ function xmldb_main_upgrade($oldversion) {
}
if ($oldversion < 2012103003.00) {
// Fix uuid field in event table to match RFC-2445 UID property
// Fix uuid field in event table to match RFC-2445 UID property.
$table = new xmldb_table('event');
$field = new xmldb_field('uuid', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, 'visible');
if ($dbman->field_exists($table, $field)) {
// Changing precision of field uuid on table event to (255)
$dbman->change_field_precision($table, $field);
}
// The column already exists, so make sure there are no nulls (crazy mysql).
$DB->set_field_select('event', 'uuid', $DB->sql_empty(), "uuid IS NULL");
// Changing precision of field uuid on table event to (255).
$dbman->change_field_precision($table, $field);
// Main savepoint reached
upgrade_main_savepoint(true, 2012103003.00);
}
@@ -1849,5 +1849,62 @@ function xmldb_main_upgrade($oldversion) {
upgrade_main_savepoint(true, 2012120306.09);
}
if ($oldversion < 2012120307.02) {
// Delete notes of deleted courses.
$sql = "DELETE FROM {post}
WHERE NOT EXISTS (SELECT {course}.id FROM {course}
WHERE {course}.id = {post}.courseid)
AND {post}.module = ?";
$DB->execute($sql, array('notes'));
// Main savepoint reached.
upgrade_main_savepoint(true, 2012120307.02);
}
if ($oldversion < 2012120307.09) {
// Purge stored passwords from config_log table, ideally this should be in each plugin
// but that would complicate backporting...
$items = array(
'core/cronremotepassword', 'core/proxypassword', 'core/smtppass', 'core/jabberpassword',
'enrol_database/dbpass', 'enrol_ldap/bind_pw', 'url/secretphrase');
foreach ($items as $item) {
list($plugin, $name) = explode('/', $item);
$sqlcomparevalue = $DB->sql_compare_text('value');
$sqlcompareoldvalue = $DB->sql_compare_text('oldvalue');
$sqlempty = $DB->sql_empty();
if ($plugin === 'core') {
$sql = "UPDATE {config_log}
SET value = :value
WHERE name = :name AND plugin IS NULL AND $sqlcomparevalue <> :empty";
$params = array('value' => '********', 'name' => $name, 'empty' => $sqlempty);
$DB->execute($sql, $params);
$sql = "UPDATE {config_log}
SET oldvalue = :value
WHERE name = :name AND plugin IS NULL AND $sqlcompareoldvalue <> :empty";
$params = array('value' => '********', 'name' => $name, 'empty' => $sqlempty);
$DB->execute($sql, $params);
} else {
$sql = "UPDATE {config_log}
SET value = :value
WHERE name = :name AND plugin = :plugin AND $sqlcomparevalue <> :empty";
$params = array('value' => '********', 'name' => $name, 'plugin' => $plugin, 'empty' => $sqlempty);
$DB->execute($sql, $params);
$sql = "UPDATE {config_log}
SET oldvalue = :value
WHERE name = :name AND plugin = :plugin AND $sqlcompareoldvalue <> :empty";
$params = array('value' => '********', 'name' => $name, 'plugin' => $plugin, 'empty' => $sqlempty);
$DB->execute($sql, $params);
}
}
// Main savepoint reached.
upgrade_main_savepoint(true, 2012120307.09);
}
return true;
}

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