Compare commits

...

1175 Commits

Author SHA1 Message Date
moodler b19909d9ae Bump to 1.8.2 release 2007-07-08 14:32:41 +00:00
Martin Langhoff 9084681497 cvsimport fixups 2007-07-07 14:09:13 +12:00
stronk7 305726a6a2 Small upgrade to fix some guest->mnethostid. MDL-10375 2007-07-06 17:43:33 +00:00
stronk7 62f3bee984 Use the new, central, create_guest_record() function. MDL-10375 2007-07-06 17:39:55 +00:00
stronk7 0183e41239 Adding new, central, create_guest_record() function. MDL-10375 2007-07-06 17:37:43 +00:00
poltawski 3b5d49f20c MDL-10311 - further groups import fixes 2007-07-06 16:28:43 +00:00
poltawski bdf5dce110 MDL-10311 Group import broken - missing lang strings & slight helpfile update 2007-07-06 15:30:43 +00:00
poltawski c278e8bc8f MDL-10311 Group import broken - groups import hadn't been updated for new groups,
also missing lang strings
2007-07-06 15:26:35 +00:00
moodler ed200fd420 New CAS module from Jérôme Gutierrez MDL-10366 2007-07-06 10:18:10 +00:00
urs_hunkler 44a718e930 In HTML resources the container box collapsed, when floats are used for content. Solved by adding "clearfix" to the classes. 2007-07-06 08:38:42 +00:00
moodler 5e4098df22 Automatic installer.php lang files by installer_builder (20070706) 2007-07-06 04:53:17 +00:00
skodak 300ade82c4 MDL-10355 fixed typo; backported from HEAD 2007-07-05 20:51:13 +00:00
moodler 275b342ce2 Automatic installer.php lang files by installer_builder (20070705) 2007-07-05 05:54:28 +00:00
skodak 84d7815107 MDL-10341 fixed user search cleaning 2007-07-04 08:30:53 +00:00
urs_hunkler cd1aa3bb76 working on MDL-10322 :: tabs. I added a space before the closing </li> to close the gap between the li elements used without images. I don't know why this space is necessary. 2007-07-03 20:14:20 +00:00
bobopinna 4b70ac02cd Fixed help title 2007-07-03 12:14:52 +00:00
bobopinna 2ad92ce59b Added a missing string 2007-07-03 12:09:39 +00:00
bobopinna bdf0b64635 Added missing help files 2007-07-03 12:06:39 +00:00
bobopinna fba486beb4 file whatgrade.html was added on branch MOODLE_18_STABLE on 2007-07-03 12:06:43 +0000 2007-07-03 12:04:18 +00:00
bobopinna 40bb4f3941 file stagesize.html was added on branch MOODLE_18_STABLE on 2007-07-03 12:06:43 +0000 2007-07-03 12:04:18 +00:00
bobopinna f5084fcf1f file skipview.html was added on branch MOODLE_18_STABLE on 2007-07-03 12:06:41 +0000 2007-07-03 12:04:18 +00:00
bobopinna 75f97e398e file maxattempt.html was added on branch MOODLE_18_STABLE on 2007-07-03 12:06:40 +0000 2007-07-03 12:04:18 +00:00
bobopinna 450eb77b78 file hidebrowse.html was added on branch MOODLE_18_STABLE on 2007-07-03 12:06:39 +0000 2007-07-03 12:04:17 +00:00
bobopinna 4caf41a177 Added a missing string 2007-07-03 10:28:30 +00:00
bobopinna d9a1a6f021 Fixed a bad definited string 2007-07-03 10:27:30 +00:00
bobopinna 880ae97916 Added activation string
fixed bug MDL-9570
2007-07-03 09:43:57 +00:00
bobopinna d10fd935b9 Readded Exit link now called "Exit Activity" 2007-07-03 09:36:31 +00:00
bobopinna d205581b9e Fixed bug MDL-9236 2007-07-03 09:27:42 +00:00
bobopinna e3c424e08c Fixed bug MDL-9776 2007-07-03 09:17:39 +00:00
bobopinna fa21044e08 Fixed bug MDL-10318 on db/update.php 2007-07-03 07:55:33 +00:00
bobopinna 5b696e30cc Fixed bug MDL-10318 2007-07-03 07:54:32 +00:00
stronk7 5c03a7d201 File no longer used. It's under formslib control since
Moodle 1.8. Thanks James! MDL-10036
2007-07-02 17:10:47 +00:00
stronk7 55c59f5050 XHTML conmpliance 2007-07-02 17:02:06 +00:00
stronk7 c9c54db3d8 Using the new "choose" parameter to navigate/preview/choose
IMS-CP resource packages. MDL-10036
2007-07-02 16:56:31 +00:00
stronk7 826b485ce1 Using the new choosecoursefileorimsrepo form element. MDL-10036 2007-07-02 16:53:26 +00:00
stronk7 bbbba10d73 Registering the choosecoursefileorimsrepo form element to
show the "Browse Repository" button
for IMS-CP resources type. (MDL-10036)
2007-07-02 16:50:47 +00:00
stronk7 493ac92129 Adding the choosecoursefileorimsrepo form element to
show the "Browse Repository" button
for IMS-CP resources type. (MDL-10036)
2007-07-02 16:48:32 +00:00
moodler 084712eadc Automatic installer.php lang files by installer_builder (20070702) 2007-07-02 04:56:52 +00:00
skodak 22f3e58605 MDL-9599 Glossary terms revert back to 'Not categorized' when using categories, patch by Alexander Pavlyutin 2007-07-01 15:47:46 +00:00
skodak dc6ef09c49 MDL-10309 Broken password expiration support for LDAP user types rfc2307 and rfc2307bis, patch by Iñaki Arenaza 2007-07-01 15:41:24 +00:00
thepurpleblob 3f9156bf56 MDL-10240:
Added Bb Short Response as a Moodle Essay type question.
Found quite a lot of stuff that could do to be checked and improved
in this code, so this should be considered an intermediate step.
2007-06-29 14:31:08 +00:00
moodler 52dce7612b Automatic installer.php lang files by installer_builder (20070629) 2007-06-29 04:59:49 +00:00
mchurch 552ae418de Bug MDL-8520. Adding target= to the logs buttons. 2007-06-28 18:15:13 +00:00
mchurch 4db3f36034 Bug MDL-8520. Adding target= to the prev/next buttons. 2007-06-28 18:07:09 +00:00
thepurpleblob 9259bf1c0e MDL-10234
Encoded images in subdirectories failed to load.
Thanks to Enrique Castro for fix.
2007-06-28 15:13:52 +00:00
moodler 9407c07c61 Automatic installer.php lang files by installer_builder (20070628) 2007-06-28 05:37:12 +00:00
toyomoyo 0b6c589f21 fix for MDL-10273, users with no capability sould not see New Event button 2007-06-28 03:58:39 +00:00
skodak 9da6b30269 MDL-10276 Text cleaning trouble; backported from HEAD 2007-06-27 12:00:26 +00:00
poltawski 5046d2353b MDL-10264 - fixed typo 2007-06-26 21:16:10 +00:00
gbateson 81f99d24f7 make sure $hotpot->id is set when adding calendar events for new HotPot 2007-06-26 12:04:00 +00:00
tjhunt a80094eff3 Error getting the context in old gradebook. Merged from OU moodle. 2007-06-26 11:50:19 +00:00
moodler f4921fb310 Implemented fix for MDL-10254, thanks Valery! 2007-06-26 09:07:56 +00:00
toyomoyo 6c709360f5 applying supplied patch to MDL-9051, missing $CFG->forum_enabletimedposts 2007-06-26 08:30:49 +00:00
moodler 8969caa059 Automatic installer.php lang files by installer_builder (20070626) 2007-06-26 07:56:55 +00:00
gbateson 226c671af7 in XML source files of HP quizzes, convert relative URLs to absolute URLs in links using window.open(...) 2007-06-26 05:03:38 +00:00
gbateson ca8c7dbc52 ange relative URLs to absolute URLs in window.open(...) 2007-06-26 02:45:40 +00:00
mchurch 1239139dd3 Fixing update_group_button and update_groups_button. They were no longer calling valid URL's. 2007-06-25 20:43:36 +00:00
mchurch fc1bdd6e88 Fixing update_group_button and update_groups_button. They were no longer calling valid URL's. 2007-06-25 20:33:52 +00:00
tjhunt b207f15ca2 Clean up whitespace. 2007-06-25 17:13:17 +00:00
urs_hunkler 9dd4a457c8 changed navmenuwidth to the standard value 2007-06-25 12:19:56 +00:00
moodler ea86a3aa8d Patch for JS problem in MDL-10027 (Chris Holmes did it) 2007-06-25 09:20:55 +00:00
moodler e33fc5a3ee Automatic installer.php lang files by installer_builder (20070625) 2007-06-25 06:49:18 +00:00
tjhunt 1cbf76c5fb MDL-10237 - Improve wording on true/false edit form. 2007-06-24 11:52:52 +00:00
urs_hunkler 06d11b581a Add an option $CFG->CSSEdit or $THEME->CSSEdit to Moodle. If one of both is set to true, Moodle does not write all CSS code in one single CSS file but adds CSS @include to the theme CSS file to load all single CSS files. These single CSS files can then be interactively edited and saved with CSSEdit. It's like Firebug with direct saving your changes. 2007-06-23 12:20:19 +00:00
moodler c519c19ab8 Automatic installer.php lang files by installer_builder (20070623) 2007-06-23 06:01:45 +00:00
tjhunt 357d918295 MDL-10213 - layuout problem for question in IE in Moodle 1.7. I'm taking the opportunity to clean up the CSS in 1.8 and HEAD to match what I did in 1.7. 2007-06-22 13:45:24 +00:00
jamiesensei 173e8c5dfb making environment colours css selector refer to table class instead of body id. So that colours show up on other pages besides admin page. 2007-06-22 11:06:21 +00:00
moodler 50e7e04949 Some fixups for the SCORM update page (missing strings etc) 2007-06-22 05:45:18 +00:00
tjhunt e1e9407acb MDL-7772 - improve the SQL for showing users without attemtps. 2007-06-21 16:14:32 +00:00
bobopinna 3f7cc1f861 Fixed a bad id definition for toc sublists 2007-06-20 09:23:22 +00:00
moodler 6a51d6a786 Automatic installer.php lang files by installer_builder (20070620) 2007-06-20 09:01:24 +00:00
bobopinna 8c36f3b9a9 Fixed a problem with utf8 bug MDL-10101 2007-06-20 08:53:00 +00:00
jamiesensei 2da68b0b32 added styles to install.php for colours for environment table 2007-06-20 06:37:01 +00:00
stronk7 55005a51ce Now calendar export have some correct defaults. MDL-10175 2007-06-19 17:53:14 +00:00
skodak c92d8dd677 (MDL-10155) detect failed regexes duing multilang upgrade (it was causing data loss on some sites); backported from HEAD 2007-06-19 17:26:45 +00:00
tjhunt e1e7d03480 Notices from T/F question is you submit without answering in adaptive mode. Merged from OU Moodle. 2007-06-19 16:35:58 +00:00
tjhunt 7ee50b87b8 XHTML Strict. 2007-06-19 16:32:54 +00:00
jamiesensei 687ce1c4e0 MDL-10168 improvements to display of results from environment checks 2007-06-19 16:32:07 +00:00
jamiesensei 3db1ddedd3 elaborated phpdoc comment slightly for doc_link 2007-06-19 15:17:14 +00:00
jamiesensei fc2df8c889 refactored page_doc_link into two functions. doc_link returns a link to docs. page_doc_link returns the link for this page. 2007-06-19 15:05:17 +00:00
toyomoyo 60a66a2bef fix for MDL-10122, accessibility for course search box 2007-06-19 03:20:42 +00:00
poltawski f7d555d577 MDL-10144 - Fix weak include not changed in STABLE 2007-06-18 19:37:28 +00:00
poltawski 974762e6f5 MDL-10148 - hard coded lang strings in user/message.html 2007-06-18 19:19:51 +00:00
bobopinna ab5642fe19 Fixed a typo added during last commit ;-) 2007-06-18 11:53:21 +00:00
andreabix b1b45674dd Fixed MDL-10100 2007-06-18 11:26:50 +00:00
thepurpleblob dee89d7ecc Missing a CVS Id tag 2007-06-18 10:27:08 +00:00
moodler 32caf9d6d9 Patch from Samuli Karevaara, thanks! 2007-06-18 06:34:13 +00:00
bobopinna 91c6c3dc85 Added some missing strings 2007-06-17 05:33:46 +00:00
mudrd8mz 331ecbe5b6 Undoing last three commits - I did not realized they should go into the HEAD and not into the STABLE :-( I am sorry...
I rolled back using
cvs update -j 1.88.2.8 -j 1.88.2.5 lang.php
2007-06-17 01:38:32 +00:00
mudrd8mz 46a4dde38c "Number of missing strings" or "No missing strings" displayed in the missing mode. Fixes MDL-7029 2007-06-17 01:21:16 +00:00
mudrd8mz 9b7d5f1aa8 Started to work on GUI improvements. Menu tabs introduced. Heading to fix MDL-8012 2007-06-17 00:41:22 +00:00
mudrd8mz 706ea2faf3 To choose a file to edit, popup_form() is used now. It saves some space on the screen. 2007-06-16 22:25:09 +00:00
ethem f8128f42a9 MDL-9836
Authorize.net / SSL Config Bug prevents display of options from enrol/authorize/enrol.php
2007-06-15 17:45:28 +00:00
andreabix 234e96d185 Fixed MDL-10073 2007-06-15 13:23:06 +00:00
csantossaenz 01b1fab671 Fixed bug MDL-7516 2007-06-15 09:09:36 +00:00
moodler 61d29b99d8 Skipping these may help some sites 2007-06-15 06:08:02 +00:00
moodler 8054e9aaad Push beyond 1.8.1 now 2007-06-15 04:19:22 +00:00
tjhunt ee4848432c XHTML strict! 2007-06-14 10:58:23 +00:00
tjhunt d3d4f4936e Whitespace cleanup in workshop help files. 2007-06-14 10:58:12 +00:00
toyomoyo d799be5424 backporting changes in HEAD to fix MDL-10093, administrator or course-creator assigned at course cat level can not restore new courses 2007-06-14 08:51:55 +00:00
urs_hunkler f24e0da312 MDL-9745 - added the fix for input field alignment to 1.8 too. 2007-06-14 07:08:58 +00:00
toyomoyo a8fbb9b4cd fix for MDL-10112 bulk messaging fails silently when messaging not enabled 2007-06-14 04:40:14 +00:00
stronk7 cfc673c112 Now the tokeniser is using the new textlib->entities_to_utf8()
own function (PHP4 and PHP compatible)
2007-06-13 23:21:36 +00:00
stronk7 6dfe1cc67c Added entities_to_utf8() function to textlib, suitable to convert
any entity (numerical and html) to utf-8, providing a PHP4 and PH5
way to do the work.
Also, added the code2utf8() function to convert Unicode code numbers
to UTF-8 chars.
2007-06-13 19:39:53 +00:00
tjhunt e796e306f8 Fix lang file sorting. 2007-06-13 16:39:53 +00:00
pichetp a7adb64678 Removing question/type/datasetdependent/categorydatasetdefinitions.php MDL-10072 2007-06-13 07:51:08 +00:00
toyomoyo bfd12c4dd5 fixing a bug related to setting the granular flag in restore 2007-06-13 06:33:18 +00:00
pichetp 8eede3f475 removing temporary debug print_r 2007-06-13 03:15:58 +00:00
pichetp 9267fe2f43 solving lost of dataitems MDL-10087 2007-06-13 03:11:14 +00:00
stronk7 1c09e6fe0c First cut of the tokeniser library. Modified from drupal search.module
code (see copyrights). The library converts any text/html into an array
of tokens with their score (weight). Supports stop_words, cjk basic
tokeniser (for indexers) and different modes of handling numbers.
2007-06-12 18:15:05 +00:00
pichetp 62fc4a966f set correctly default value for tolerencetype for answers 2007-06-12 15:50:24 +00:00
tjhunt 7ba648a011 Fix typo spotted by Eclipse. 2007-06-12 13:47:14 +00:00
tjhunt 19798dc28d Improve doc comments on get_context_* funcitions. 2007-06-12 11:11:34 +00:00
moodler 08f5787e35 Undoing MDL-9041 2007-06-12 07:05:30 +00:00
dwoolhead 5b99950ef1 Move Export calendar button to bottom of the page (IE especially) 2007-06-11 15:55:48 +00:00
pichetp 21cd4715de adding equation display in calculated question text(MDL-10070) and answers text length
greater.
2007-06-11 08:05:49 +00:00
moodler 9a9446e5b4 Automatic installer.php lang files by installer_builder (20070611) 2007-06-11 06:16:18 +00:00
moodler d3b57e5566 Bumping to Moodle 1.8.1 finally 2007-06-11 03:38:05 +00:00
skodak c70adc397a MDL-9696 used absolute path include in mod_forms; backported from HEAD 2007-06-10 23:28:44 +00:00
skodak a46a937d3e MDL-10057 XSS risk flag for Add/update course category; backported from HEAD 2007-06-10 19:36:49 +00:00
skodak c48083bc2d MDL-10068 "Lost Password" button does not work for ldap auth; backported from HEAD 2007-06-10 19:28:02 +00:00
skodak 9d0466e2a6 MDL-10074 User profile edition uses wrong variable for the (fatal) error message.; patch by Iñaki Arenaza; backported from HEAD 2007-06-10 19:08:27 +00:00
skodak 938122d7d2 MDL-10061 LDAP user creation broken for Novell eDirectory since 1.8; patch by Iñaki Arenaza; backported from HEAD 2007-06-09 15:34:21 +00:00
moodler 95f1ffc594 Added two recent installer langs to CVS 2007-06-09 08:24:52 +00:00
moodler 271013af0f file installer.php was added on branch MOODLE_18_STABLE on 2007-06-09 08:24:52 +0000 2007-06-09 08:22:45 +00:00
moodler 9bfb07349b Automatic installer.php lang files by installer_builder (20070609) 2007-06-09 04:50:32 +00:00
sam_marshall c6982f0c26 MDL-7541 Fixed wiki html diff 2007-06-08 13:44:02 +00:00
martinlanghoff 0989530df9 moodlelib:moodle_request_shutdown() - only call apache_child_terminate if child_terminate is true - MDL-9350
Apparently there _is_ a PHP ini setting controlling
it -- defaults to off.
2007-06-07 21:21:49 +00:00
tjhunt e32f1a5b98 OU Bug 3246 - No logs shown when a group is selected. Merged from OU Moodle. 2007-06-07 16:03:56 +00:00
tjhunt e23ec822d1 Fix logging of course settings updates. 2007-06-07 15:40:14 +00:00
tjhunt cbc29c7237 Make code slightly more robust. 2007-06-07 15:34:12 +00:00
moodler 3098552240 Teacher forums are now displayed to admins correctly MDL-9590 2007-06-07 02:44:58 +00:00
bobopinna 92addc1b42 Removed a white space in simple_play redirect function 2007-06-06 22:16:38 +00:00
bobopinna 2dc95960f4 MDL-9206 Readded unlimited attempts option (sorry I miss it) 2007-06-06 21:30:19 +00:00
bobopinna 146b674a33 MDL-9562 Fixed 2007-06-06 21:06:52 +00:00
moodler f7cc90e58c Fix for MDL-9557 and MDL-9007 (increased timeout when deleting files) 2007-06-06 09:16:21 +00:00
tjhunt a41779208c Eliminate trailing whitespace. 2007-06-05 14:56:16 +00:00
poltawski c9b9c609ba MDL-8080 Grade exceptions broken for teacher by invalid capability check. Thanks to Paul Ortman for the patch. Merged from MOODLE_17_STABLE 2007-06-04 22:57:13 +00:00
poltawski 9b602f0d3d MDL-10001 - Change the ordering of height and width parameters in the interface to reflect
previous ordering.
2007-06-04 22:23:01 +00:00
poltawski f4b35f935c MDL-9987 - Reffering to wrong capability name, thanks to seberin Terrier 2007-06-04 21:59:12 +00:00
skodak 667e06ed11 MDL-10018 Discussion for all groups not sent when groups used to users without access to all groups; backported from HEAD 2007-06-04 21:46:12 +00:00
moodler 0628867164 Fixing typos as per MDL-10013 2007-06-04 12:41:38 +00:00
skodak 39954f4087 MDL-10011 cleanup xhtml and code in report.php - forum, glossary and data mod; backported from HEAD 2007-06-03 16:18:53 +00:00
tjhunt fdd3ed4939 MDL-10006 - Sorting the quiz overview report on feedback breaks it. 2007-06-03 07:26:39 +00:00
skodak 951fd7910a MDL-10010 improved data validation in glossary rate.php; backported from HEAD 2007-06-02 15:58:01 +00:00
skodak b6c96ce21d minor xhtml strict fix and coding style; backport from HEAD 2007-06-02 14:09:42 +00:00
skodak ed0d8418ae MDL-10009 ratings settings do not work in glossary; backport from HEAD 2007-06-02 14:06:59 +00:00
nfreear 2e83e24b6d MDL-9660 - Fixed groups matches functions and added unit tests for them. Merged to 1.8 branch. 2007-06-01 14:21:57 +00:00
tjhunt 87f156a9da Remove invalid unit test. 2007-06-01 13:52:41 +00:00
tjhunt a2aa951267 Remove debug code. 2007-06-01 13:34:00 +00:00
tjhunt 21fa5360fc MDL-9996 - Multiple choice answer box too small in the question editing form in Moodle 1.8. 2007-06-01 09:14:44 +00:00
thepurpleblob f3d264801f MDL-9265:
'correctanswer' field missing for true/false.
2007-06-01 08:12:20 +00:00
thepurpleblob 5a0558be90 Fixed typo stopping image importing working 2007-05-31 08:31:09 +00:00
skodak 0f8a2e49ce MDL-4687 Password expiration support for AD (with patch) - patch by Iñaki Arenaza, thanks! backported from HEAD 2007-05-30 08:55:52 +00:00
skodak c36701675e MDL-9954 LDAP auth settings form problem with 'Member Attribute' and 'Member Attribute uses dn'; patch by Iñaki Arenaza - thanks! backported from HEAD 2007-05-30 08:50:00 +00:00
wildgirl f87414c0bb typo fix MDL-9767 2007-05-29 17:47:25 +00:00
dwoolhead 92b7f24d0d MDL-9729 Ensure start of week day calculation observes user timezone setting in the same way as month start and end dates. Prevents incorrect display of dates (1 out) on main Moodle calendar display although mini calendar display is correct. 2007-05-29 09:38:24 +00:00
mark-nielsen e8cd2b38cc Merging changes for MDL-9947 from MOODLE_17_STABLE 2007-05-28 18:50:58 +00:00
mark-nielsen b42cae480f Fixed MDL-9923, modified form to accept URLs
Media file was busted for framesets, fixed now
2007-05-28 18:48:52 +00:00
jamiesensei 58c70cace9 MDL-9745 "Checkboxes badly lined up in forms lib, e.g. "students may review" settings on quiz settings screen." Reverted previous fix for similar problem MDL-7779 as the fix for MDL-7779 causes worse problem MDL-9745 with form elements in groups. 2007-05-28 12:19:48 +00:00
jamiesensei aa38cccbdf MDL-9734 fix for clean_param PARAM_LOCALURL bug 2007-05-27 11:20:24 +00:00
moodler c417f26c85 Automatic installer.php lang files by installer_builder (20070527) 2007-05-27 04:36:10 +00:00
moodler f676fab333 Automatic installer.php lang files by installer_builder (20070526) 2007-05-26 04:11:43 +00:00
moodler 286914ebf9 Fix for footers on MDL-9826 2007-05-25 21:03:20 +00:00
moodler 8a12b18716 Automatic installer.php lang files by installer_builder (20070525) 2007-05-25 04:36:16 +00:00
sam_marshall 6ffa6bf848 MDL-9920 Allowed xmldb to create 32-bit serial fields if specified, in postgres 2007-05-24 15:18:26 +00:00
sam_marshall 36be12128c MDL-9932 Fixed calendar restore of events on same day with same description (but different names) 2007-05-24 12:09:43 +00:00
mark-nielsen 16ba21692e Fixed MDL-9619
Fixed MDL-9366
Fixed MDL-9757
Converted tabs to spaces
Cleaned up white space
2007-05-23 17:34:03 +00:00
nfreear a335226982 Follow up fix for bug MDL-9890 - replacing nicolasconnault's fixes that I overwrote - sorry! 2007-05-23 14:43:00 +00:00
thepurpleblob eb813e917e Added some set_time_limit()s to import in case of slow servers timing out. 2007-05-23 14:06:04 +00:00
nfreear 7c527b3b9d Big fix for MDL-9890 "Help should be well-formed, XHTML Strict and semantic". Merged from head. 2007-05-23 13:36:29 +00:00
thepurpleblob f9d81b4e36 Progress with making the code a bit more resilient.
Added XML tidy up if tidy extension is available.
2007-05-23 12:49:36 +00:00
nfreear 6f7cb89d17 Big fix for MDL-9890 "Help should be well-formed, XHTML Strict and semantic". Merged from head. 2007-05-23 12:08:19 +00:00
tjhunt 19ac11bd63 XHTML strict. Fix entity. 2007-05-23 10:52:00 +00:00
tjhunt be61c13c00 MDL-9914 - Can't download mark details from the quiz overview report 2007-05-23 10:21:02 +00:00
tjhunt 5f7519cd0f MDL-9881 - Attempting to delete large number of questions fails due to long URL 2007-05-22 14:03:36 +00:00
tjhunt 46b515a48c When using DEBUG_DEVELOPER, make error(...) output a stack trace. 2007-05-22 13:25:06 +00:00
tjhunt 6f304b3251 Switch a form from post to get, since that is more appropriate. 2007-05-22 13:24:47 +00:00
nfreear 3aa003edc4 Follow up for MDL-9753, accepts HTML for $text param (THEME->larrow, rarrow don't work in stock IE6). Merged 2007-05-22 09:02:39 +00:00
moodler 59cbc3ac9d Automatic installer.php lang files by installer_builder (20070522) 2007-05-22 05:25:23 +00:00
gbateson b72135d360 use PARAM_ALPHANUM on "section" parameter so that "section=all" is allowed 2007-05-22 04:27:55 +00:00
pichetp 844aed0573 adding or deleting more than 1 dataitems in one step in datasetitems_form.php 2007-05-22 02:29:33 +00:00
skodak e882741ec2 MDL-9861 Password expiration value is calculated wrong when ldap_expirationtime2unix() returns 0 - patch by Iñaki Arenaza 2007-05-21 20:07:25 +00:00
skodak 8dd34ce9bc MDL-9860 Incorrect check for password expiration at login - patch by Iñaki Arenaza 2007-05-21 19:58:50 +00:00
moodler a6989f9cbd Fix for manual unread/read marking MDL-9859 2007-05-21 14:41:21 +00:00
moodler dda9800184 Fix typo: MDL-9875 2007-05-21 13:32:39 +00:00
thepurpleblob d03d9d7a5a Turns out that the question text is not a required field.
Also fixed warning in essay questions.
2007-05-21 13:09:47 +00:00
moodler fb3557d4d9 Committed Iñaki's patch for 1.8 from MDL-7233 unchanged. Thanks! 2007-05-21 05:25:04 +00:00
moodler f895a66e50 Automatic installer.php lang files by installer_builder (20070521) 2007-05-21 04:53:33 +00:00
pichetp ff04b09e91 correcting display of datasetitems_form for multiple answers 2007-05-20 12:45:11 +00:00
moodler d10e19dca1 Automatic installer.php lang files by installer_builder (20070519) 2007-05-19 04:46:18 +00:00
pichetp 3449775fb9 correcting datasets to $datasets line 248 2007-05-18 12:53:43 +00:00
jmg324 3ba9c859b6 MDL-9802 added my:manageblocks capability so admins can define whether users can add/remove blocks from myMoodle page 2007-05-18 12:47:19 +00:00
skodak 54617ab56b MDL-984adding forgottent rs_close() - thanks Eloy! 2007-05-18 09:50:58 +00:00
skodak 77b81a215d MDL-9842 Groups from groupings not moved to "Not in a grouping" 2007-05-18 09:16:45 +00:00
thepurpleblob 722c4a9109 Check the files exist, and display ticks if they do, crosses if not. 2007-05-17 17:42:35 +00:00
martinlanghoff c54f92b59c get_my_courses() if the parameters passed are identical to the defaults... MDL-7416
We are using the defaults then ;-)

Credits for spotting it go to Yu!
Blames for the thinko to MartinL
2007-05-16 23:07:10 +00:00
skodak 4b4a3f4d40 MDL-9392 resource_popup: not working 2007-05-16 21:26:16 +00:00
skodak ddb5da6113 MDL-9618 Form remove option logic is incorrect - patch by Mark Nielsen 2007-05-16 20:31:20 +00:00
skodak 6e04be55d7 MDL-9761 Student's Gradebook view doesn't follow defaults establ;ished by the Instructor; patch by Jason Skinner 2007-05-16 20:24:04 +00:00
skodak 09048346de MDL-9418 use proper addslashes before each insert 2007-05-16 20:07:15 +00:00
skodak 9b7b42cc07 MDL-9825, MDL-9798, MDL-9799 - new workaround for the object trouble in IE caused by UFO; reverting previous patches 2007-05-16 18:14:45 +00:00
moodler 4cfaa3c85e Added navmenu icons as per MDL-9826
They can be disabled with $THEME->navmenuiconshide = true; in the theme
2007-05-16 08:01:11 +00:00
pichetp e722d7ab26 modifiyng save question so that $SESSION is not used MDL-8565 merged from HEAD 2007-05-16 02:33:11 +00:00
skodak ad2c6a55d1 MDL-9824 do not use sesskey check when user already logged out in logout.php 2007-05-15 21:11:57 +00:00
skodak bf92014116 MDL-9380 Adding a Resource of Type directory leads to SQL errors, patch by Andrew Schmadeke 2007-05-15 20:55:21 +00:00
skodak 7bda2db46d MDL-9799 can not use forms due to object bug in IE :-( 2007-05-15 20:21:04 +00:00
skodak 1422989b6a MDL-9730 resource name is now used in accessibility pdf link instead of summary hat may not be always present 2007-05-15 19:55:07 +00:00
skodak 27cde347a0 MDL-9823 Disclaimer HRef is repeated twice in the Link - Policy.php for some urls 2007-05-15 19:42:00 +00:00
skodak 321097aa82 MDL-9780 Groups 181 cleanup - part 3 2007-05-15 18:29:10 +00:00
skodak 190437b919 MDL-9780 Groups 181 cleanup - part 2 2007-05-15 18:26:48 +00:00
skodak 7ce2b7d43e MDL-9780 Groups 181 cleanup - part 1 2007-05-15 18:23:35 +00:00
skodak 52abd5d7c4 MDL-9821 incorrect permission to modify templates for non-editing teacher in db module 2007-05-15 16:57:08 +00:00
exe-cutor 0d3703f0e8 Fixed two errors that prevented the shibboleth settings from being saved unless
a file for the data modification api was given
2007-05-15 08:48:12 +00:00
skodak 439aad511a MDL-9798 fallback to html mimetype when missing index.php, index.html 2007-05-15 08:39:00 +00:00
skodak 62d35d727c MDL-9798 workaround for handling of object tag in buggy IE 2007-05-15 08:31:45 +00:00
moodler 7ce5c00bf1 Added some brackets that were missing 2007-05-15 07:48:34 +00:00
moodler 850ca88325 Automatic installer.php lang files by installer_builder (20070515) 2007-05-15 04:56:24 +00:00
pichetp dd9312b2c7 merging small modifications from head mostly for calculated questions 2007-05-15 02:57:05 +00:00
pichetp 2dfa65ae3e merging calculated question importing from last head modifications 2007-05-15 01:01:07 +00:00
pichetp 339bb9b746 merging from head so that calculated questions can be imported and other improvments 2007-05-15 00:53:21 +00:00
pichetp 63336df702 adding calculated question import and export functions for xml formats merged from head 2007-05-15 00:34:41 +00:00
stronk7 f7d5bed2d2 Add support for more tabs in module pages. Point 1. MDL-9736 2007-05-14 16:55:04 +00:00
moodler f073013d11 Automatic installer.php lang files by installer_builder (20070512) 2007-05-12 05:51:44 +00:00
nfreear d376f25fd2 Sorry, reverting my last commit which duplicated functions link_arrow_left, etc. (bug MDL-9753). 2007-05-11 13:54:28 +00:00
nfreear 8aa656699c Follow-up fix bug MDL-9753, "THEME->larrow, rarrow don't work in stock IE6". (Thought I committed this, what's going on?!) 2007-05-11 11:41:38 +00:00
nfreear da6677db3e Fixes bug MDL-9753, "THEME->larrow, rarrow don't work in stock IE6". Merged from HEAD. 2007-05-11 11:35:14 +00:00
nfreear 1e53ed8af3 Fixes bug MDL-9753, "THEME->larrow, rarrow don't work in stock IE6". Merged. 2007-05-11 11:29:45 +00:00
moodler 2b241253e4 Automatic installer.php lang files by installer_builder (20070511) 2007-05-11 06:40:04 +00:00
gbateson 8e4b3a8cd8 when inserting 'Give Up' button, if site encoding is not iso-8859-1, then set page encoding to get_string('thischarset') 2007-05-11 05:18:23 +00:00
skodak f8895a0de5 MDL-9642 auth/CAS: Dependence on external PEAR DB 2007-05-10 12:28:50 +00:00
andreabix 5aeb342d09 footer overlapping link fix 2007-05-10 09:49:49 +00:00
andreabix 3a13ab606b Strict compliance 2007-05-10 09:44:15 +00:00
skodak b68ae6fca7 MDL-9764 Require_course_login() should check cm visibility in frontpage course too 2007-05-10 08:55:10 +00:00
poltawski d09a98edf8 MDL-9649 'keep searching' in bulk messaging broken 2007-05-09 10:02:07 +00:00
Martin Langhoff 48cc1a0e6a cvsimport fixups - remove obsolete files 2007-05-09 22:01:21 +12:00
Martin Langhoff d27de862a6 cvsimport fixups - add missing files 2007-05-09 22:00:29 +12:00
sam_marshall 0b9a7f7bc6 MDL-9741: Fixed broken link on editor help page 2007-05-08 14:58:05 +00:00
thepurpleblob ebd87f75a9 MDL-9700:
Added more comprehensive checks for missing fields not exported in
previous versions.
More could be done, but this covers the basics and works for 1.6 (and
probably 1.5) exports.
2007-05-08 14:22:12 +00:00
thepurpleblob 2966e43548 Adding a couple of error messages for XML import 2007-05-08 14:14:26 +00:00
poltawski 9c85777a62 MDL-9726 - fixed phpdoc comment from MartinD's commit 2007-05-07 08:28:43 +00:00
toyomoyo a7e4899de4 fix for MDL-9727, capability typo 2007-05-07 04:59:01 +00:00
toyomoyo c9dc3ac1a5 fix for MDL-9656, blocks parents can be system context 2007-05-07 03:23:37 +00:00
moodler 6f45d0516c A little flag added to avoid checking enrolment plugins for each has_capability on other people MDL-9726 2007-05-07 03:06:30 +00:00
gbateson fc711515be modified "hpNewFunction" to allow Rottmeier quizze (Find-It, Dropdown) s to run on Safari (Mac) 2007-05-07 02:47:56 +00:00
mattc-catalyst 37c2fe3e1a MDL-9617: Fixed bug in previous commits.
- warnings being displayed in developer mode.
- caused by patch from patch series not being applied.
2007-05-06 23:41:37 +00:00
poltawski 0bf78b45f3 MDL-8917 - slasharguments description was slightly incorrect 2007-05-06 10:26:42 +00:00
poltawski 53f2fb98ac MDL-8436 Fixed typo 2007-05-06 09:55:49 +00:00
poltawski df9134b4e0 MDL-8971 - fixed typo 2007-05-06 09:43:32 +00:00
martinlanghoff df01c2f983 get_my_courses() - ensure we have groupmode, groupmodeforce in $d_fields - calendar/lib.php counts on it 2007-05-06 05:37:21 +00:00
martinlanghoff f08efe8517 get_my_courses() callers update - check of the $fields param - pass null instead
The default way to call get_my_courses() is now to pass null in the $fields
param to get the (cached copy) of the useful fields. Cuts down enormously
on DB traffic, memory footprint, and session size.
2007-05-06 05:32:03 +00:00
martinlanghoff dcf93f8107 get_my_courses() - added optimisation for guest login
- was causing very slow page generation
2007-05-06 05:28:22 +00:00
martinlanghoff b5f523ab6e get_my_courses() - tighten default fields - faster, risky
This makes get_my_courses() faster/lighter in 2 ways

 - We fetch a ton less data from the DB
 - We store a tone less data in the Session

In a test environment, with a student enrolled in  3 _empty_ courses
(just created, empty modinfo, etc), this shaves 50% off the session
size on-disk.

The problem is callers that may be expecting a given field to appear by
default. Next step: walk all callers...
2007-05-06 05:27:27 +00:00
martinlanghoff a728edc61f get_my_courses() - skip checks if we know the user has moodle/site:doanything and we are observing $doanything 2007-05-06 05:27:05 +00:00
martinlanghoff 309bb4021d get_my_courses(): tighten cache scheme - part 2
the tighter cache was fragile as we always edit $field
2007-05-06 05:25:57 +00:00
martinlanghoff f98c2af902 get_my_courses(): tighten cache scheme
This tightens the rather lax caching mechanism that
cached regardless of parameters.

Thanks to Matt Clarkson for the heads-up...
2007-05-06 05:21:52 +00:00
moodler ea5aabd1da Automatic installer.php lang files by installer_builder (20070506) 2007-05-06 04:59:29 +00:00
martinlanghoff de0489fd9f calendar: fixed group event display when only one course being viewed
Author: Matt Clarkson <mattc@catalyst.net.nz>
2007-05-06 04:38:06 +00:00
martinlanghoff 9caa000b8b calendar: bug fixed to previous commit (MDL-7416 MDL-9617)
Author: Matt Clarkson <mattc@catalyst.net.nz>
2007-05-06 04:37:24 +00:00
martinlanghoff 1a4a3b3380 calendar: performance optimisations + behaviour fix (MDL-7416 MDL-9617)
With 2500 courses the calendar was causing around 15000 queries at login and 5000 on the home page.

- Replaced queries inside loops with single unlooped queries.
- Fixed calendar so that course events will show when the users role is assigned at a category level.
- Moved calendar_session_vars() function call out of calendar/lib.php (including a lib should not have side effects)

Author: Matt Clarkson - with some conflict resolution from MartinL
2007-05-06 04:26:35 +00:00
poltawski 56fc04e3af Fixed MDL-9639 and syntax errror 2007-05-05 15:14:57 +00:00
thepurpleblob 5ceb953522 Fixing hard coded string 2007-05-04 14:30:44 +00:00
thepurpleblob eedcf27a55 Fixing hard coded string. 2007-05-04 14:05:25 +00:00
tjhunt fc56e73e49 Matching qestion type was failing to correctly determine wheterh the student had changed their answer - further improvements. 2007-05-04 10:03:56 +00:00
toyomoyo 7a543c5cfb fix for MDL-9617, calendar performance issues 2007-05-04 05:24:55 +00:00
gbateson 3cb6bd2c35 remove duplicate id attribute from body tag; microincrement version to 2007020202 (release 2.3.2) 2007-05-04 02:50:18 +00:00
gbateson 66eefc5b26 set default body font-size to "small" 2007-05-03 01:00:09 +00:00
gbateson 616f3a0584 add HP 6.2 templates; add compatability with Safari (Mac browser); microincrement version to 2007020201 (release 2.3.1) 2007-05-03 00:04:06 +00:00
tjhunt df3311ee1e Revert tiny bit that got committed to the stable branch alongside the fix to MDL-9565. 2007-05-02 19:34:57 +00:00
moodler 7d4ed65730 Automatic installer.php lang files by installer_builder (20070501) 2007-05-02 17:29:30 +12:00
andreabix 09eb1ec39c Fixed Task MDL-9611 2007-05-02 17:29:30 +12:00
donal72 d11ec62bd3 MDL-8973 : Undo API change in previous commit 2007-05-02 17:29:30 +12:00
toyomoyo 3ac3641547 Matthew's fix for MDL-9613 2007-05-02 17:29:30 +12:00
Martin Langhoff 0b1d21c0c3 Manual fixup - cvsps has dropped the CAS library 2007-04-30 10:47:39 +12:00
donal72 597cd7728e MDL-8973 : Update to the require_logout function to ensure that the user's auth plugin is the first (& only) one to have its prelogout_hook invoked. 2007-04-29 15:09:45 +00:00
donal72 791fbc5687 MDL-9288 - use addslashes to avoid injection attacks on data imported vi mnet 2007-04-29 13:59:01 +00:00
skodak ea714cfdbd MDL-8813 Cas auth for 1.8x - credit goes to Jérôme Gutierrez; TODO: redirection after failed login 2007-04-29 13:57:46 +00:00
donal72 4e0d03df62 Bugfix: The $this->response['faultCode'] was returning the 1th element of the $this->response string (because a non-empty string == 1). 2007-04-29 13:54:56 +00:00
donal72 6172153106 Prevent notices on user creation 2007-04-29 13:50:10 +00:00
skodak be1aef7fc4 MDL-9217 rearanged groups installation and upgrade - roles require groups 2007-04-29 11:36:46 +00:00
moodler 45541efc8e Automatic installer.php lang files by installer_builder (20070429) 2007-04-29 04:35:47 +00:00
moodler 26f421782d Automatic installer.php lang files by installer_builder (20070428) 2007-04-28 04:27:59 +00:00
tjhunt e7bbf42c5a MDL-9608 - Work around Firefox putting the user's password in the quiz password field. 2007-04-27 08:32:44 +00:00
moodler 122722c7aa Fix to prevent MDL-9606 happening if people delete courses before upgrade in the same session 2007-04-27 06:28:35 +00:00
pichetp e27f1fc122 MDL-9657 cleaning abstractype code merging from head 2007-04-26 23:37:38 +00:00
pichetp 4ca7cf3473 MDL-9496 Adding multianswer to calculated and MDL-9657 cleaning abstractype code merging
from head
2007-04-26 23:35:41 +00:00
pichetp b961b2249f MDL-9496 Adding multianswer to calculated and merging from head 2007-04-26 23:33:42 +00:00
mjollnir_ 1bb8b3818f MDL-9585 - mod/data: moved functions and classes out of preset.php into lib.php 2007-04-26 21:38:28 +00:00
moodler 146bc3bcf1 Fix for MDL-9594 (and removed some extra spaces) 2007-04-26 14:53:22 +00:00
moodler d74e64100c MOre XHTML strict for course category page MDL-9589 2007-04-26 08:48:07 +00:00
tjhunt c2baadf060 MDL-9565 - Fix error in previous commit. 2007-04-25 17:59:22 +00:00
thepurpleblob f9b27a7f86 :MDL-9577
Added 'correctanswer' field for true/false. Somebody changed this at some point
in the underlying questiontype class.
2007-04-25 09:39:37 +00:00
tjhunt d42dbcc1e7 Fix comedy require_once. Merged from MOODLE_16_STABLE. 2007-04-24 21:16:06 +00:00
skodak 7cc37fafdc MDL-9485 resource summary now optional again 2007-04-24 21:09:29 +00:00
skodak f98049b035 MDL-9568 Choice does not count correct 2007-04-24 20:08:16 +00:00
tjhunt 443768b8aa MDL-9565 - Question preview links don't work in developer debug mode, and not XHTML strict. Merged from OU Moodle. 2007-04-24 16:59:23 +00:00
skodak 9cb2c25061 MDL-9561 Langimport does not ignore langlist when langcache used
MDL-9563 Improve refreshing of langcache, detect permission problems
part 2
2007-04-24 16:29:34 +00:00
skodak 1a5e5787aa MDL-9561 Langimport does not ignore langlist when langcache used
MDL-9563 Improve refreshing of langcache, detect permission problems
2007-04-24 16:08:09 +00:00
skodak e1397186a9 MDL-9560 $CFG->langlist should accept both short (en) and long (en_utf8) names 2007-04-24 14:57:17 +00:00
nfreear 326129c87f Fixes bug MDL-9520, "groups_groupids_to_groups should return groups indexed by group ID" 2007-04-24 14:23:55 +00:00
skodak 0a45ab2fb2 MDL-9559 setup_lang_from_browser should respect $CFG->langlist 2007-04-24 14:21:48 +00:00
sam_marshall c5e4aebf29 MDL-9556: HTML editor shortcut button should only appear when JS enabled 2007-04-24 11:49:50 +00:00
tjhunt b74504fff3 MDL-9389 - True / False penalty factor field redundant 2007-04-23 16:23:04 +00:00
tjhunt 1e825b9dc1 MDL-9524 - Formslib gets confused if a required field is frozen. 2007-04-23 16:18:08 +00:00
tjhunt 7211a3733a MDL-9447 - Default grade field is redundant in embeded answer (Cloze) question 2007-04-23 13:55:00 +00:00
nicolasconnault cb7c915b10 MDL-9457 Missed a few files 2007-04-23 04:13:01 +00:00
toyomoyo e9b9c28e44 fix for MDL-7544, hidden users show up on participants block 2007-04-23 03:05:04 +00:00
stronk7 d09757da3f Now resource/view.php?r=XXX links are recoded properly in backup/restore. MDL-9450 2007-04-22 22:05:19 +00:00
skodak 67ca52345c MDL-9491 fixed problem with broken change/reset password in db auth when using internal passwords; backported from HEAD 2007-04-22 21:42:57 +00:00
stronk7 3e7759c3b6 Add one missing return causing db(internal) pass change not to work.
Partially, MDL-9491
2007-04-22 14:18:40 +00:00
skodak 43c99d82f1 MDL-9233 denied and allowed email address domains are not matched correctly; merged from HEAD 2007-04-21 20:10:40 +00:00
skodak f18e948bda MDL-9483 Problem with question restore relinking when quiz not selected; merged from MOODLE_17_STABLE 2007-04-21 12:40:35 +00:00
skodak e3eff7bf1c (MDL-9470) Survey submission JS broken 2007-04-20 17:51:30 +00:00
skodak e98649d7f1 MDL-9467 workaround for broken langcache problems when editting user profile 2007-04-20 14:42:15 +00:00
nicolasconnault c30e73badc Fixed many XHTML errors 2007-04-20 07:49:39 +00:00
tjhunt 181190d81b MDL-9432 - Forgot to return success/failure in two places. 2007-04-19 17:37:25 +00:00
tjhunt 8f290d7868 Fix error message to say the right thing. 2007-04-19 17:16:35 +00:00
ikawhero c9bbb97a8d Fixed typo.
Made constructor variables optional to reflect parent class
2007-04-19 07:39:51 +00:00
tjhunt 0bb51a9c00 MDL-9432 - When restoring questions, links are not recoded. Merged from OU moodle. 2007-04-18 15:57:12 +00:00
donal72 0145441c4d MDL-9420 - SSO fails over https 2007-04-18 07:12:32 +00:00
toyomoyo 3cd4774c59 fix for MDL-9398, users need site:config to add new categories 2007-04-18 04:51:59 +00:00
cataluke 7badfb42c7 admin/uploaduser.php: Fixed not enrolling user into course if user already exists
Author: Patrick Li <patrick@catalyst.net.nz>
Committer: Luke Hudson <luke@catalyst.net.nz>
2007-04-18 02:43:33 +00:00
cataluke 2ba01076aa MDL-8569 - mod/data sorting by numerical field now works with PostgreSQL
Author: Luke Hudson <luke@catalyst.net.nz>
2007-04-18 02:31:34 +00:00
ikawhero 13e0414d47 Fix for MDL-9415
New method is_empty() added.
2007-04-18 02:08:50 +00:00
skodak 72a5176d95 MDL-9409 User confirmation by admin doesn't support new auth->confirm_user function 2007-04-17 21:27:32 +00:00
skodak fb68fa74e3 MDL-9416 Double quotes and tags in helpable item breaks XHTML strict 2007-04-17 20:40:03 +00:00
moodler d696377711 Removed unnecessary requires as part of MDL-9402 2007-04-17 09:25:51 +00:00
moodler 0adcc16ccf Fix for problem caused when I removed some requires from the course formats
recently thinking they were not needed, doh.   MDL-9402
2007-04-17 09:24:26 +00:00
skodak 945bd325c4 MDL-9387 Message "Adding discussions to this forum requires group membership" if not logged 2007-04-17 08:35:40 +00:00
cataluke de06df20a4 MDL-7856 - make database search case-insensitive for PostgreSQL too.
Author: Andrew Walbran <andrew.walbran@catalyst.net.nz>
Committer: Luke Hudson <luke@catalyst.net.nz>
2007-04-17 05:49:21 +00:00
martinlanghoff f35c9f6f19 (iCalendar export) calendar: Removing filter controls from export page, as no purpose and buggy
Author: Andrew Walbran <andrew.walbran@catalyst.net.nz>
2007-04-17 03:04:20 +00:00
skodak f15eba9879 MDL-4421 unwanted space in formatted time 2007-04-16 18:50:17 +00:00
skodak ef7c98d04e MDL-6236 user editing - Default language not used instead of nonexisting one in user lang field - first lang chosen instead 2007-04-16 18:29:08 +00:00
stronk7 f68ff717aa Fixed quesry to work agains Oracle. Repeated fields + limit
are incompatible (and not needed) for Oracle. MDL-9321

Merged from MOODLE_17_STABLE
2007-04-16 14:43:37 +00:00
moodler 356e897da9 Small tweak to use format_text by default because it does some nice things like highlight URLs 2007-04-16 06:21:23 +00:00
moodler 1729e73566 Automatic installer.php lang files by installer_builder (20070416) 2007-04-16 04:27:44 +00:00
ikawhero a352220a48 Display custom profile fields in profile page - see MDL-9285
Menu type stores value rather than index - see comments on MDL-9285
General tidy up and renaming of functions in field class.
2007-04-16 02:45:50 +00:00
martinlanghoff 5ad59d2b07 moodle_request_shutdown(): silence errors when apache_child_terminate() is disallowed - (MDL-9350) 2007-04-16 00:24:42 +00:00
skodak fb733f80e3 MDL-8839 fixed markdown cleaning before editting of existing untrusted text 2007-04-15 21:53:32 +00:00
skodak c6d8a02649 fixed warning 2007-04-15 21:08:08 +00:00
skodak 28701c2fef MDL-9266 Frontpage teachers cannot ad "site" events to calendar 2007-04-15 21:06:42 +00:00
skodak 0038bff79e MDL-9225 short php tag 2007-04-15 17:22:45 +00:00
skodak 78a40f0c7f MDL-9226 missing closing label tag - patch by Mark Scherfling 2007-04-15 17:18:50 +00:00
skodak 650d657bb0 MDL-9300 The aspell spell-checker does not work in 1.8 2007-04-15 17:03:11 +00:00
skodak 396d2eefe7 MDL-9311 participants - duplicate "&perpage="; yet another forgotten debug code 2007-04-15 16:10:34 +00:00
skodak 8c961e6c84 MDL-9311 participants - duplicate "&perpage=" 2007-04-15 16:08:43 +00:00
skodak c9f6285685 MDL-9315 fixed incorrect use of localtion (should be city) in user profile 2007-04-15 15:49:15 +00:00
skodak dbf8cae35e MDL-9343 Course event filter icon incorrect 2007-04-15 15:20:32 +00:00
skodak fc9d151810 MDL-9363 update memory limit checks and docs - grrr, removed debug code; backported from HEAD 2007-04-15 14:45:22 +00:00
skodak ceb6ed3ab2 MDL-9363 update memory limit checks and docs 2007-04-15 14:25:10 +00:00
skodak d5a23c5f04 MDL-9362 unattended upgrade fixed 2007-04-15 12:49:55 +00:00
stronk7 1027fcce3b Fixing typo causing purge of accelerator cache not working. MDL-9349 2007-04-15 11:10:42 +00:00
moodler e48c333640 Added some consistency to the handling of "latest news" MDL-9308 2007-04-15 07:24:36 +00:00
tjhunt 346a83d25f Work round PHP4 being a stinking pile of crap. 2007-04-13 10:03:15 +00:00
tjhunt e904a8315b Reveted Nick's alleged typo fix. Thank you very much for trying to fix my code, but your change is definitely wrong. get_context_instance needs to be passed a coursemoduleid, not a coursemodule object. Why did you think there was a typo? And neither of us had noticed that I had left some debug code in. Removing that. 2007-04-13 08:12:19 +00:00
nicolasconnault a0eb0c7b14 MDL-9322 Fixed all non-compliant XHTML in mnet files (plus logs and enrol) 2007-04-13 06:33:00 +00:00
toyomoyo b43c3213ab some more MDL-9273 related fixes 2007-04-13 05:39:12 +00:00
martinlanghoff 8632e95b13 Bug fix: 'off by one'month bug in mupltiple locations.
When the system/user time zone was set to GMT-13 months would lag behind by
one month.


Author: Matt Clarkson <mattc@catalyst.net.nz>
2007-04-13 05:05:56 +00:00
nicolasconnault 20414f20ff Replaced all instances of old if(): else: endif; syntax with proper braces 2007-04-13 03:46:49 +00:00
nicolasconnault 65c78f2904 MDL-9220 Only fixed 1.8, since 1.7 doesn't seem affected. 2007-04-13 02:41:43 +00:00
nicolasconnault fdaeef002a MDL-9273 Applied suggested fix 2007-04-13 01:59:24 +00:00
nicolasconnault 3cba887fca Fixed a typo introduced by Tim Hunt in revision 1.85.2.11. No hard feelings :-) 2007-04-13 01:24:31 +00:00
tjhunt 0ece80c088 MDL-9325 - mod/quiz:ignoretimelimits does not work. This is a really horrific short-term fix to a problem not of my making. 2007-04-12 22:16:20 +00:00
stronk7 e3494d2af5 mnethosturl was never being restored. Detected while checking MDL-9309 2007-04-12 22:16:10 +00:00
skodak 5aeaecaa1e MDL-9324 group assignment does not work in uploaduser script 2007-04-12 21:29:38 +00:00
tjhunt 379447d88f MDL-5799 - quiz previews were sometimes showing up in the quiz overview report. Merged from MOODLE_18_STABLE. 2007-04-12 20:11:32 +00:00
stronk7 54b6d16e8c Fixing typo causing some (a few) sites to break on upgrade. Credit
goes to Rafa Gutierrez. MDL-9316

Merged from MOODLE_17_STABLE
2007-04-12 15:33:10 +00:00
jamiesensei bfeb2678df making notifytiny style a little bigger 2007-04-12 15:08:15 +00:00
csantossaenz 4c5b0669a0 Fixed problem for the Moodle 1.7 scorm packages which didn't show the structure when you updated your version to 1.8. Now is possible to access to that structure and to each sco as well. 2007-04-12 09:27:22 +00:00
csantossaenz 312191a8e9 Fixed problem with scorm_get_sco to connect with the API when there is no data in the scorm_scoes_data table. 2007-04-12 09:22:20 +00:00
nicolasconnault ade44744d7 Added a few more comments 2007-04-12 05:56:30 +00:00
nicolasconnault 7ae190c397 Typo, sorry 2007-04-12 05:00:25 +00:00
nicolasconnault b9a7a37ec0 Converted all function comments to PHPdoc style, and added stub phpdocs for functions without comments. 2007-04-12 04:21:41 +00:00
nicolasconnault f52c8e3912 MDL-9223 Fixed a coding error: $group->id changed to $discussion->groupid 2007-04-12 02:22:31 +00:00
toyomoyo ef52b6a434 MDL-9291, temporarily disabling blog this link 2007-04-12 02:16:00 +00:00
martinlanghoff 34177c462c Fixed 'off by one' month bug in month select boxes generated by
print_date_selector when users time zone set to GMT-13.


Author: Matt Clarkson <mattc@catalyst.net.nz>
Committer: Matt <mattc@catalyst.net.nz>
2007-04-12 00:42:05 +00:00
mjollnir_ 77d5965638 merged: fixing warnings in stats lib - rather than doing an include_once and noticing for every missing mod, check the file exists first from MOODLE_16_STABLE, and fixed up some weirdness in the reports 2007-04-11 23:59:11 +00:00
mjollnir_ 8a4f91b671 merged: fixing warnings in stats lib - rather than doing an include_once and noticing for every missing mod, check the file exists first from MOODLE_16_STABLE, and fixed up some weirdness in the reports 2007-04-11 23:53:14 +00:00
tjhunt b930d5a83b MDL-9082 - moodle/question:manage does not let you create questions. Also: * remove useless option from print_question_icon * use the right module context in question_list * a bit of XHTML strrrict in question_list 2007-04-11 22:56:50 +00:00
tjhunt 92b904642a MDL-9244 - If a question type provides both an old style editquestion.php and a new style moodle form, then use the moodle form. It was doing the opposite, which broke things for people who upgraded by untarring a new distribution over their old one. 2007-04-11 21:19:48 +00:00
tjhunt 724dbf2d0c MDL-9079 - Paging broken in quiz overview report. Merged from MOODLE_17_STABLE. 2007-04-11 20:38:08 +00:00
tjhunt 7ed1828798 MDL-9280 - JavaScript countdown timer did not work in 1.8 due to XHTML strict changes. Also, fixing a few more XHTML strrrrict things in attempt.php 2007-04-11 20:06:57 +00:00
tjhunt 12ff34e245 MDL-9303 - General Feedback not shown for essay questions on review screen. Merged from MOODLE_17_STABLE. 2007-04-11 19:04:59 +00:00
skodak a26c09be05 MDL-9297 - fixed broken mnet logout caused by my auth refactoring 2007-04-11 14:01:03 +00:00
skodak f2c2aeff2d MDL-9296 removing forgotten debug code in admin/mnet/trustedhosts.php 2007-04-11 13:21:09 +00:00
skodak 3f833b914c MDL-9286 Incorrect setting of defaults for rpc_negotiation_timeout 2007-04-11 13:00:10 +00:00
thepurpleblob 75b5701ae7 MDL-9123:
Added language string for error message
2007-04-11 12:16:06 +00:00
thepurpleblob 146b8728c7 MDL-9123:
No check was made of the validity of the category id read from the form.
So it could theoretically have been spoofed.
2007-04-11 10:57:21 +00:00
skodak f032cd818e MDL-9287 missing resultset check in mnet config_form() 2007-04-11 08:49:56 +00:00
skodak 9244a6be27 MDL-9286 Incorrect setting of defaults for rpc_negotiation_timeout 2007-04-11 08:45:22 +00:00
nicolasconnault 4d69204037 MDL-9241 Fixed a typo: used if($mimetype = 'application/x-pdf') instead of == 2007-04-11 06:14:35 +00:00
nicolasconnault 479206f6ff MDL-9213 Corrected $forum->format to $forum->type 2007-04-11 01:03:42 +00:00
donal72 d4c97b77a5 MNET: Uninitialised variable $timenow. Should be time()? 2007-04-10 22:20:07 +00:00
skodak 6b68f4e53b MDL-9075 utf-8 bom is now stripped from uploaded users cvs file 2007-04-10 15:30:51 +00:00
skodak 7ec5b06656 MDL-7888 rewritten email alerts to graders - "mod/assignment:grade" permission is now used instead of legacy teacher; it should also fix missing alerts when using separate groups 2007-04-10 14:49:36 +00:00
csantossaenz 445cebbdaa Removed some messages that were shown with unnecessary data 2007-04-10 14:21:29 +00:00
toyomoyo ac326d2f3b fix for MDL-9238, users assigned to a role at category-level don't view the courses of the subcategories 2007-04-10 08:56:59 +00:00
toyomoyo cf4a318f80 fix for MDL-9268 2007-04-10 04:21:48 +00:00
moodler d4c1b75664 Automatic installer.php lang files by installer_builder (20070410) 2007-04-10 03:34:39 +00:00
mjollnir_ 9076a56953 Merged from MOODLE_17_STABLE:
add support for https source for popups

previously fullscreen.php tried to load any javascript files that were
running in the popup's parent.
If the source of the script didn't start with "http:" it was assumed
that it must be a relative path. This caused problems when it tried to
make it into an absolute path.
Fixed Regex to include support for https
Credit: Peter Bulmer <peterb@catalyst.net.nz>
2007-04-09 20:39:41 +00:00
skodak 315184aeee MDL-9216 has capabilitiy does not respect doanything if admin userid specified and $USER is not admin 2007-04-09 11:10:26 +00:00
stronk7 d76f66dde9 Better approach. Use higher level MetaIndexes() and avoid some MySQL warnings. MDL-9256 2007-04-09 00:09:50 +00:00
stronk7 4f3f057884 Now MySQL looks for existing index names. MDL-9256 2007-04-08 22:56:23 +00:00
mark-nielsen c020af7119 Fix for MDL-9250 2007-04-08 20:55:23 +00:00
mark-nielsen 8a2366b231 Fix for MDL-8414 and some XHTML fixes 2007-04-08 20:47:23 +00:00
mark-nielsen 298f767799 Removing a "wtf" that someone else left in there 2007-04-07 19:21:31 +00:00
mudrd8mz c711a66af2 Fixes MDL-9248 and two other untracked bugs.
* MDL-9248 - lang.php now keeps &lt;, &gt;, &nbsp; and other HTML entities
* There was an XHTML compliance error with redundant </form></div> tags in non-editable mode
* There was an bug with ORPHANed strings in local language pack
2007-04-07 18:22:57 +00:00
stronk7 4abc65705c Now $CFG->apachemaxmem is respected.
Merged from MOODLE_17_STABLE
2007-04-07 16:07:32 +00:00
mudrd8mz 69a30a1c2f Fixed and error in rendering different background color of the row in non-editable environment. 2007-04-07 15:51:15 +00:00
skodak 0d4f86ce4b MDL-9239 New fromslib password element with reveal option 2007-04-06 14:15:16 +00:00
skodak da586c3430 MDL-9235 bad html produced when moving modules within a course; patch by Mark Scherfling 2007-04-06 08:21:14 +00:00
skodak 1c70d75ec0 MDL-9227 Inconsistent HTTPS for profile edit page; merged from MOODLE_17_STABLE 2007-04-06 07:50:10 +00:00
jamiesensei 326d894b83 see MDL-8886.
fixes bug that meant :

       $mform->disabledIf('studentfeedbackurl', 'studentfeedback', 'eq', 0);
       $mform->disabledIf('studentfeedbackurl', 'studentfeedback', 'eq', 3);
       $mform->disabledIf('studentfeedbackurl', 'studentfeedback', 'eq', 4);

didn't work.
2007-04-06 06:09:12 +00:00
stronk7 f16220e6a9 Fixing authdb->close() in some places. Credir goes to Seiti. MDL-9212 2007-04-05 22:21:25 +00:00
tjhunt b60f49c799 MDL-9224 - Score sometimes relealed, even when the quiz settings say it should not be. Merged from OU Moodle. 2007-04-05 13:54:17 +00:00
nfreear 70c64c1a46 Fixes bug MDL-9221 "new group admin - can't view full group name". 2007-04-05 10:55:27 +00:00
nfreear 9b27aac9ba Fixes bug MDL-9221 "new group admin - can't view full group name". Merged. 2007-04-05 10:46:20 +00:00
nfreear 14bc58d411 Fixes bug MDL-9221 "new group admin - can't view full group name" 2007-04-05 10:39:13 +00:00
skodak 3ebaafd6e5 MDL-9219 Replace Inherit with Not set on role definition page 2007-04-05 09:16:34 +00:00
skodak 215692747d MDL-9218 Processing of role assignments produces PHP notices 2007-04-05 08:33:43 +00:00
toyomoyo d8feb56f5d fix for MDL-9186, capability fix for calendar 2007-04-05 07:57:48 +00:00
nicolasconnault f4d8da26f5 MDL-8537 Added $CFG as the object to check for enrol method when the course is being created. 2007-04-05 07:57:19 +00:00
toyomoyo 51c761454a fix for MDL-9165, admins should be able to see private blogs 2007-04-05 05:58:39 +00:00
nicolasconnault 3836cfd7e6 MDL-9198: Embedded PDF now works fine in FF 1.5, FF 2, IE5, IE6, IE7 and Opera, and degrades beautifully in non-supported browsers (or when plugin is missing). 2007-04-05 05:49:55 +00:00
martinlanghoff 89d6849793 lib/setup moodelib: Introducing moodle_request_shutdown()
Now Moodle will have a 'shutdown_function' function. Right now
registered (and useful) only when running under apache + mod_php.

This initial function checks whether memory usage in this process exceeded
10MiB or $CFG->apachemaxmem (int, in bytes). This is really useful to prevent
using more RAM than we have.
2007-04-05 05:00:39 +00:00
toyomoyo c4269c100d fix for MDL-9197, multilang filter is not applied to default role in course settings 2007-04-05 03:56:22 +00:00
moodler b2e3ce3b2b Automatic installer.php lang files by installer_builder (20070405) 2007-04-05 03:37:47 +00:00
nicolasconnault 9a14f39663 Finally fixed XHTML error on this page. 2007-04-05 03:36:08 +00:00
nicolasconnault b41ee5a874 MDL-9204 New submission wasn't given a timemodified upon creation. 2007-04-05 03:18:45 +00:00
nicolasconnault 79c8c1dba4 Fixed broken XHTML 2007-04-05 02:11:24 +00:00
nicolasconnault 6907f59129 MDL-9207 2007-04-05 01:53:28 +00:00
nicolasconnault 2413b939a7 MDL-9090 2007-04-05 01:43:42 +00:00
skodak e2dd0ea71e MDL-8802 fixed byteserving broken by adobe anti xss patch 2007-04-04 19:43:53 +00:00
tjhunt 8ef0022d29 MDL-9208 - Only hightlight the correct answer if that option is set. 2007-04-04 18:01:27 +00:00
tjhunt 8fe9be5d8c Bug 2951 - correct PARAM_ types for answers to multichoice and shortanswer questions. Merged from OU Moodle. 2007-04-04 16:51:05 +00:00
tjhunt 9f64c0e6b7 MDL-9183 - yet another invisiblefieldset causing layout problems. 2007-04-04 15:30:28 +00:00
jamiesensei 1859dfe70d fixes MDL-9195 mform->hardFreeze() doesn't remove id attribute of label for checkbox 2007-04-04 10:27:16 +00:00
skodak 78fdca9618 MDL-9191 fix for potential incorrect use of get_auth_plugin 2007-04-04 09:18:24 +00:00
moodler db9b5fc35c Increased online users allowed (50) and added some rounding for performance MDL-6553 2007-04-04 07:22:42 +00:00
nicolasconnault 62c50f8579 MDL-9124 Added a visual notification when group membership doesn't allow adding discussions. 2007-04-04 06:24:30 +00:00
nicolasconnault bb576411ca Added rows and cols to menu options textarea, fixing xhtml break. 2007-04-04 04:38:47 +00:00
nicolasconnault be5ceecd4d MDL-9144 2007-04-04 04:30:21 +00:00
nicolasconnault a7ad3d051a MDL-9135: 2007-04-04 04:21:31 +00:00
nicolasconnault b847c863d9 MDL-9136: Added a $selected attribute to the profile_field_menu object, which gets set during initialisation. 2007-04-04 04:08:54 +00:00
toyomoyo d857dbc1c3 fix for MDL-9185 2007-04-04 04:03:27 +00:00
moodler 0e62d79714 Automatic installer.php lang files by installer_builder (20070404) 2007-04-04 04:02:59 +00:00
nicolasconnault 86b331477a MDL-9138; Edited lib/xmlize.php to return false when the passed file doesn't return any entries (when it's not valid XML or is empty). Also made it much clearer that glossary/import requires an XML file, not just any old file. 2007-04-04 03:34:00 +00:00
nicolasconnault 1cad7ef6fe MDL-9192: 2007-04-04 02:39:26 +00:00
nicolasconnault f4493074ae MDL-9193 2007-04-04 02:21:47 +00:00
nicolasconnault a204aa1838 MDL-9145 Fixed 1) and 2) 2007-04-04 01:42:43 +00:00
stronk7 b3a55ad382 Show continue button after importing glossary. MDL-9071 2007-04-03 15:42:25 +00:00
skodak 74edbb3c5f MDL-9170 https redirect doesn't happen on login page - fixed problem when guest button disabled 2007-04-03 14:58:30 +00:00
nfreear 381070ab03 Fixes bug MDL-9175 "Groups simpletest, fatal errors", also DONOTCOMMIT. Merged. 2007-04-03 10:21:38 +00:00
nfreear a2e32e1603 Fixes bug MDL-9175 "Groups simpletest, fatal errors". 2007-04-03 10:15:23 +00:00
skodak 4d5dd30513 MDL-9190 Site policy xhtml compliance and other minor fixes 2007-04-03 09:50:39 +00:00
nicolasconnault 380a4235ff MDL-9147 2007-04-03 08:23:51 +00:00
nicolasconnault 0efd6699e2 MDL-9167 and MDL-9113 both solved 2007-04-03 06:38:40 +00:00
nicolasconnault e8a2e5e491 Removed experimental Preset class, only in HEAD now 2007-04-03 04:10:42 +00:00
nicolasconnault 89a4886523 MDL-8774 2007-04-03 03:30:36 +00:00
moodler 2f48f37d29 A bit more perfectionism about checkbox alignment MDL-9126 2007-04-03 02:20:18 +00:00
moodler 372bd6bd34 Fixing checkbox alignment in ie6 MDL-9126 2007-04-03 02:13:15 +00:00
moodler 28f2414b0d FIx for wierd alignment on IE6 MDL-9126 2007-04-03 01:59:32 +00:00
stronk7 9b3939b8f5 Fixed one wrong urlencoe after error. 2007-04-02 22:01:21 +00:00
stronk7 ecb80afb03 Disable the "save" button if the file isn't writable. 2007-04-02 21:50:03 +00:00
stronk7 f0a346c4ff Centering buttons in some actions... 2007-04-02 21:36:08 +00:00
skodak 823ea10f96 MDL-9180 Change password screen doesn't show the username like it should 2007-04-02 18:02:20 +00:00
skodak c57aac2fb1 MDL-9168 nested site policy when forcelogin enabled 2007-04-02 16:12:26 +00:00
tjhunt a57365af9c Make sure print_object output is always left-aligned. Also, make it look more like other debugging output. 2007-04-02 15:28:47 +00:00
tjhunt 8a5ebf7f29 Missing format_string. 2007-04-02 15:26:09 +00:00
skodak f1a1f86ede MDL-9174 do not use PARAM_URL for site policy - it is too restrictive 2007-04-02 15:12:22 +00:00
skodak 31c6df4382 fixed warning when upload fails 2007-04-02 14:53:13 +00:00
exe-cutor 69beb9a8af Fixed bug that showed username of Shib users in manual login form 2007-04-02 14:12:02 +00:00
skodak d66683e160 MDL-9170 https redirect doesn't happen on login page 2007-04-02 13:58:01 +00:00
skodak e4335c36db MDL-9172 "Turn editing off" button disappear from category page 2007-04-02 13:44:20 +00:00
skodak 66c8048d55 MDL-9169 Error in function call in ldap/enrol.php; typo found by Svante Agnestig 2007-04-02 13:15:36 +00:00
tjhunt db0f3b9159 MDL-9173 - Can't create match anything answer to numerical question type. Merged from OU Moodle. 2007-04-02 13:02:17 +00:00
skodak 4a4d9b02df MDL-9166 auth plugins can prevent showing of last logged in user 2007-04-02 09:24:40 +00:00
skodak 86d1a59ede MDL-9155 Error when creating an "image gallery" preset database when only some fields exist and do not remove existing data, comments and ratings when applying preset 2007-04-02 09:08:54 +00:00
exe-cutor 4dbb62e0c0 Corrected example script in README 2007-04-02 07:28:35 +00:00
moodler 05ffd0842e Bump post 1.8 2007-04-02 06:43:18 +00:00
toyomoyo 345b5ba60d fix for MDL-9160, get_my_courses caching issues 2007-04-02 03:50:55 +00:00
toyomoyo 9be1b6a45e admins should not have course:view capability 2007-04-02 02:36:27 +00:00
donal72 aecd299b7a MNET: Properly remove trailing slash from wwwroot: MDL-9157 2007-04-02 01:45:37 +00:00
moodler f02d236f78 Make coursemanager easier to set to nothing. MDL-9139 2007-04-01 15:58:13 +00:00
moodler 731fa029cd Centered the submit button when editing section summary 2007-04-01 15:16:09 +00:00
stronk7 cc1eb9113b Bump backup version 2007-04-01 10:32:25 +00:00
moodler e3a3eacf9e Moved the required fields message over to the right 2007-03-31 09:09:27 +00:00
moodler 15152a0a44 Fix for MDL-6458 2007-03-31 05:23:32 +00:00
moodler 0681430f0f Fixed up the block self-test 2007-03-30 18:00:47 +00:00
moodler e3db7108a8 Bumping to release 1.8! 2007-03-30 17:25:36 +00:00
moodler 2750460adc Fixed typo in capability! 2007-03-30 17:05:20 +00:00
moodler 23e1dc24f3 I've added some logic to applicable formats so that people don't see admin blocks in the list when they can't do anything with it. MDL-9119 2007-03-30 16:50:44 +00:00
stronk7 377da1a0e2 Adding a missing parameter to the "add new course" button. MDL-9129 2007-03-30 15:35:15 +00:00
moodler 8b33bf0124 Roles without moodle/course:view capability are now ignored in participant lists MDL-7943 MDL-8093 2007-03-30 15:10:37 +00:00
nfreear ce9d5ce529 Fixes bug MDL-8695 "Form 'required' icon is hidden", see commit 13 Jan. Merged from HEAD. 2007-03-30 10:54:08 +00:00
nfreear 9401569e39 Fixes bug MDL-8695 "Form 'required' icon is hidden", see commit 13 Jan (big woops, forgot to commit around 1/3). Merged from HEAD. 2007-03-30 10:45:32 +00:00
tjhunt 696b50fff2 Small code cleanup to fix an obscure warning. If you got an error in the middle of creating a quiz attempt, you could get an attempt with no states. Then that caused an error when the attempt was deleted. Merged from MOODLE_17_STABLE. 2007-03-30 10:17:20 +00:00
csantossaenz 85bf673124 Deleted code which had been previously added to skip some steps in the ADL Test suit to test some other steps. 2007-03-30 10:15:19 +00:00
tjhunt 3849917982 Fix notice. Merged from MOODLE_17_STABLE. 2007-03-30 09:34:11 +00:00
nicolasconnault ae4d27ee4e MDL-9115 Added new strings to lang/en_utf8/group.php (where in roles.php before!). Also cleaned up page a little more so the backend code is at the top, with the HTML output at the bottom. We may be able to use mform with this page eventually. AJAX would also help. 2007-03-30 08:29:30 +00:00
toyomoyo b70af87f04 fix for MDL-9021, missing add_to_log call 2007-03-30 07:59:32 +00:00
nicolasconnault ba9c840c99 MDL-9118: The group/edit page now fetches the groupingid for the selected group if it isn't already provided. Note that this will need changing when/if multiple grouping membership is implemented, since only the first grouping is returned at present. 2007-03-30 07:50:47 +00:00
stronk7 d90cb507f3 XHTML fix. Credit goes to Jeff Graham. MDL-9103 2007-03-30 07:44:29 +00:00
nicolasconnault 853bb906ba MDL-9114: Resolved the issue for the most part. However still a problem when jumping from a group with users to an empty group. If you do so too quickly, the empty group shows the members of the previously highlighted group. But there is no more accumulation of users from one group to the next. 2007-03-30 07:29:05 +00:00
toyomoyo 8f99b22439 fix for MDL-9097, xhtml fixes for glossary 2007-03-30 07:02:57 +00:00
nicolasconnault b608d7cad3 handled another potential xhtml error: empty select when no members in group. 2007-03-30 06:28:31 +00:00
nicolasconnault 60b6fc1004 MDL-9111: Changed to "Back to groups" 2007-03-30 06:13:30 +00:00
nicolasconnault 7dfca8bbb1 MDL-9112: Fixed htmleditor height. 2007-03-30 06:01:08 +00:00
nicolasconnault bf54a837aa MDL-7186: Removed offending angle brackets, 3 counts in 2 files. 2007-03-30 05:21:02 +00:00
nicolasconnault 8ed47badec 1. Converted grouping edit form to mform
2. Added 2 buttons to disable state when pseudogroup is selected
2007-03-30 05:13:19 +00:00
gbateson dab8b4662a fix the display of the special chars keypad (in JCloze and JQuiz) 2007-03-30 03:42:10 +00:00
moodler 6317557cfe Automatic installer.php lang files by installer_builder (20070330) 2007-03-30 03:39:01 +00:00
nicolasconnault ef5a26d701 1. Fixed xhtml errors
2. Added correct breadcrumb back to group/index page, preserving selections.
2007-03-30 03:13:47 +00:00
nicolasconnault 293d2ce08e 1. Added proper breadcrumb to group/edit|create page (preserves previous grouping/group selections)
2. Changed "Create Orphan group" to "Create orphan group"
3. Added help string for groupenrolmentkey
4. Edited moodle docs for groups edit page
2007-03-30 02:38:49 +00:00
toyomoyo 4cbacc2c88 chaing help file as helen suggested 2007-03-30 02:23:54 +00:00
danmarsden c7b1aaeed4 fix for MDL-9087 screwy page when user places table into online assignment. 2007-03-30 02:09:07 +00:00
stronk7 8a57655b50 Added one more style to center some tables in glossary. 2007-03-30 00:29:46 +00:00
stronk7 fa3ce02ba1 Fixing approval interface. Step4. MDL-8793 2007-03-30 00:24:54 +00:00
stronk7 344c50611d Fixing export interface. Step3. MDL-8793 2007-03-29 23:23:37 +00:00
tjhunt c9666935af MDL-9107 (regression from) MDL-8994 - adding random questions to a quiz was broken. 2007-03-29 23:11:47 +00:00
stronk7 7cf3b7fabd Fixing import interface. Step2. MDL-8793 2007-03-29 23:10:16 +00:00
tjhunt f81b4b1a1b MDL-9094 - Penalty factor is meaningless for Essay questions, so remove it from the editing form. Manual merge of the corresponding change from MOODLE_17_STABLE. 2007-03-29 23:00:44 +00:00
stronk7 79eebc83aa Moving options from 2nd tab to main area. Step1. MDL-8793 2007-03-29 22:16:42 +00:00
tjhunt 989f2ccd47 Putting back print_box in 1.8. I know, I cocked up and committed a print_box in 1.7 when I backported something. In 1.7, that function does not exist. Thanks to?Andrea Bicciolo for fixing it. But in 1.8, print_simple_box has been deprecated. 2007-03-29 22:09:35 +00:00
skodak daea824d68 MDL-4313 LDAP doesn't properly escape extra quotes in course details + minor role unassign change 2007-03-29 21:39:35 +00:00
skodak e21c0ffc23 MDL-3339 support md5 and sha1 in ldap when adding or changing passwords 2007-03-29 19:47:21 +00:00
skodak 41fd8ea177 MDL-8590 fixed magic quotes in config settings 2007-03-29 19:03:49 +00:00
andreabix e8a51e3f44 fixed "call to undefined function print_box()" 2007-03-29 18:53:04 +00:00
tjhunt fa62c456eb MDL-6269, MDL-8958, MDL-8990 - Major fix to do with each attempt builds on last:
It used not to work with random questions, and there were problems with the computation of the grade, and regrading. Fix thanks to Paulo Matos, who not only fixed the bug and tested it, but was also incredibly patient waiting for me to have time to commit the changes to CVS.

Merged from MOODLE_17_STABLE.
2007-03-29 16:35:55 +00:00
tjhunt cca01e1519 Add developer debugging to something that should not happen, and fix one instance of it. Backported from HEAD. 2007-03-29 16:06:13 +00:00
skodak 293d56acaa MDL-8590 fixed ldap creators, added new option to specify dn in member attribute 2007-03-29 15:51:16 +00:00
moodler b0bbcb5647 Fixed a typo (won't work in other languages) 2007-03-29 13:22:07 +00:00
csantossaenz d86dca38ec Spanish comment which was left has been translated to English. 2007-03-29 10:47:43 +00:00
skodak ac594757cb MDL-9099 LDAP auth does not allow dn in idnumber field (or other user attributes); patch by Jeff Graham 2007-03-29 08:40:36 +00:00
nicolasconnault fcdca8b2ba MDL-9062: Completed the new form. 2007-03-29 08:36:53 +00:00
nicolasconnault 0927364827 MDL-9062: Only thing left to do is enable grouping selection when editing an existing group. All the rest works great. 2007-03-29 07:49:28 +00:00
toyomoyo 7d5bb42327 fix for MDL-8983, hidden assignments need a help file 2007-03-29 06:37:46 +00:00
toyomoyo c807105f75 fixing a warning 2007-03-29 06:34:22 +00:00
nicolasconnault 5a60645dc7 MDL-9062: Getting close to finishing these two files. 2007-03-29 05:32:44 +00:00
moodler 64622defdd Committing fix for MDL-9101 from Jeff Graham 2007-03-29 03:27:52 +00:00
moodler 2fe9f46996 Renamed README -> README.txt to help the windows and mac people 2007-03-29 02:54:16 +00:00
danmarsden 9228be2bd2 MDL-9102 incorrect use of unset_config() 2007-03-28 23:35:07 +00:00
sam_marshall 5c33b48580 Undoing previous commit, which happened by accident - apologies 2007-03-28 17:13:17 +00:00
sam_marshall 993f282295 Improved performance status (bug 2924) 2007-03-28 16:58:34 +00:00
tjhunt 6df6296812 MDL-9061 - Only show global assign roles warning if you are assigning roles in the global context! Also, change name of admin menu entry to reduce confusion. 2007-03-28 16:57:05 +00:00
nicolasconnault 668ce6df14 MDL-9062 Created two new files so the unfinished conversion doesn't affect any current code. Also added a convenience groups_update_group($data) method. Patience, this is taking a while but I'm learning to use these mforms for the first time :-) 2007-03-28 08:39:42 +00:00
skodak 87e70ea390 MDL-8973 auth hooks final cleanup 2007-03-28 08:26:02 +00:00
moodler 60d12f2e35 Converted from dos 2 unix MDL-9088 2007-03-28 07:16:01 +00:00
toyomoyo 7330a604c7 fix for MDL-9068 2007-03-28 03:24:34 +00:00
moodler def6f22e27 Added patch from Mark for MDL-9083 2007-03-28 03:04:18 +00:00
moodler 7567dcd370 Fixed dos2unix and excess stuff in footer.html 2007-03-28 02:49:39 +00:00
toyomoyo a26f30774b fix for MDL-9065, use $CFG->creatornewroleid setting 2007-03-28 02:29:37 +00:00
moodler b24126e9a9 New cornflower from Jeff Watkins MDL-9009 2007-03-28 02:24:34 +00:00
skodak c9609a1f0d MDL-8781 fixed typo 2007-03-27 22:02:24 +00:00
skodak 37841afffe MDL-8781 survey converted to new formslib - empty intro now means use default from language pack 2007-03-27 21:58:01 +00:00
stronk7 81b65eaec6 Now XMLDBStatements support backslashed single quotes. 2007-03-27 20:30:22 +00:00
skodak 8c2eb9802e MDL-9053 - adding new function get_enabled_auth_plugins() - this should make the code simpler and the bug should be gone forever 2007-03-27 20:22:25 +00:00
sam_marshall 6920a2a59c MDL-9072 Made forum discussion list not show links to groups if you don't have permission to view them 2007-03-27 12:23:02 +00:00
nicolasconnault b6e33658e3 MDL-9061 2007-03-27 06:54:23 +00:00
moodler ed22c4f3bc Fix for data exposure MDL-9052 2007-03-27 05:13:09 +00:00
nicolasconnault 8d5e99f086 MDL-9040: Enabled disabling of any buttons that always lead to errors. Javascript dynamically displays/hides buttons depending on which groupings/groups are selected. This required a number of extensive modifications, but degrades nicely without JS. 2007-03-27 04:09:19 +00:00
nicolasconnault bd52a0145e MDL-9040: Enabled disabling of any buttons that always lead to errors. Javascript dynamically displays/hides buttons depending on which groupings/groups are selected. This required a number of extensive modifications, but degrades nicely without JS. 2007-03-27 04:03:02 +00:00
moodler 3c58497b82 Automatic installer.php lang files by installer_builder (20070327) 2007-03-27 03:54:55 +00:00
toyomoyo f48f0e399d fix for MDL-9057, invalid contexts should be ignored 2007-03-27 03:03:01 +00:00
stronk7 68b8dfa13b ignore this... 2007-03-26 23:30:57 +00:00
stronk7 b0e97aec74 Always print the entry when adding, updating/deleting comments. MDL-9047 2007-03-26 23:01:11 +00:00
donal72 c13722179f Patch for upgrade breakage on IIS (and maybe other non-Apache webservers) MDL-8926 2007-03-26 22:51:42 +00:00
stronk7 7e7b0ef002 Avoid to end SQL commands with a trailing ';'. MDL-9058 2007-03-26 21:51:18 +00:00
skodak 7b2ce0378b MDL-9056 Undefined property in lib/db/upgrade.php 2007-03-26 21:46:42 +00:00
skodak 42693210f1 MDL-9055 wrong creation of mnet auth object in require_logout() + minor cleanup 2007-03-26 20:33:27 +00:00
skodak 6e1cef3394 MDL-8513 fixed conversion of ldap settings during upgrade to 1.8 2007-03-26 20:14:27 +00:00
skodak cad6cf5134 MDL-8973 fixed typo in signup form validation 2007-03-26 19:27:04 +00:00
skodak d71004a3a2 MDL-9053 - detect + fix broken $CFG->auth setting from the login page; backported from HEAD 2007-03-26 19:01:41 +00:00
skodak 00db7acb37 MDL-9053 - detect + fix broken $CFG->auth setting from the login page. 2007-03-26 18:59:07 +00:00
nicolasconnault dcd981ac12 MDL-9041: Added a Groups button on the users page. Easy to spot. 2007-03-26 09:24:55 +00:00
nicolasconnault 97aa751b03 MDL-9039: Corrected old groupid and groupingid URL variables. 2007-03-26 09:11:16 +00:00
nicolasconnault 67b71d5027 MDL-9038: Groups can now be created outside of any groupings. The number of groups within [Not in a grouping] is also correct now. 2007-03-26 07:59:04 +00:00
nicolasconnault 1e89d31bf8 MDL-9025: Fixed the given line, plus one in user/index.php that didn't get filtered either when viewing all users with a given role: e.g. user/index.php?contextid=38&roleid=3 2007-03-26 07:07:05 +00:00
toyomoyo 33f23cb8df sorry wrong string used 2007-03-26 06:55:17 +00:00
toyomoyo e17732128a applying inaki's patch for MDL-9012, course autocreation doesn't work in enrol/database 2007-03-26 06:49:42 +00:00
toyomoyo 0e6b0d5c48 fix for MDL-9002, missing string 2007-03-26 06:44:40 +00:00
nicolasconnault 2659a6411d MDL-8982 : Cleaned up group/index.php and added options with &nbsp; to satisfy strict XHTML. 2007-03-26 06:41:38 +00:00
toyomoyo 91e546cc58 fix for MDL-9010, course request button should not appear when disabled 2007-03-26 05:52:29 +00:00
toyomoyo 6872a4ee5f fix for MDL-8336, lacking of viewuseractivitiesreport 2007-03-26 04:12:19 +00:00
nicolasconnault 3417898861 MDL-8730: These libxml_* functions are PHP5 only. I've wrapped them in function_exists() conditional structures. 2007-03-26 03:40:38 +00:00
nicolasconnault e8c36b7a7a MDL-8922: Had to modify another bunch of files to fix a simple problem:
when a config block contains a form, the previous form needs to be closed
properly (it was, but there were non-matching closing divs etc...).
2007-03-26 03:04:33 +00:00
nicolasconnault d099661cd4 MDL-8922: Had to modify another bunch of files to fix a simple problem:
when a config block contains a form, the previous form needs to be closed
properly (it was, but there were non-matching closing divs etc...).
2007-03-26 02:57:55 +00:00
skodak 466c30cf6e MDL-9028 prelogout_hook() is never executed in login/logout.php; patch by Inaki Arenaza 2007-03-25 20:18:15 +00:00
stronk7 b0aeae8288 Deleted one debug line... 2007-03-24 00:57:43 +00:00
stronk7 a655cd9a38 Fix a problem with glossary not being able to sort by firstname. 2007-03-24 00:56:31 +00:00
stronk7 401e26306e One default was causing author view not being able to sort
by firstname or lastname.
2007-03-24 00:37:16 +00:00
stronk7 a5762bd531 Now the underscore lines in tabrow1 aren't blue anymore. Really
complex to guess the modifiers to apply!
2007-03-24 00:00:40 +00:00
stronk7 6a1a294942 Fetch local guest user using DB index. 2007-03-23 15:56:41 +00:00
skodak 5b78424ea3 MDL-9017 add mime type for ico files 2007-03-23 13:05:34 +00:00
skodak 01f35fac14 MDL-8973 improved auth plugin docs 2007-03-23 11:26:23 +00:00
csantossaenz 5466503ec1 Fixed backup problem for scorm module. Now, it includes needed files in moddata/scorm. even though the backup is done without user data and files 2007-03-23 10:53:24 +00:00
nicolasconnault 2e177ee4bc MDL-8922 : More work on cleaning up RSS block, but not quite there yet. 2007-03-23 07:58:25 +00:00
nicolasconnault 13d6383c9a MDL-8922 : Fixed a number of xhtml simple issues, but heaps of hard-core fixes yet to do. 2007-03-23 07:46:17 +00:00
toyomoyo 250aa125bb fix for MDL-9016, clearing cache after deletion of course_content 2007-03-23 07:18:00 +00:00
moodler 6e7cd09c2f Automatic installer.php lang files by installer_builder (20070323) 2007-03-23 03:45:50 +00:00
moodler af2146d651 Merged create_course and update_course changes from head MDL-9015 2007-03-23 02:42:40 +00:00
toyomoyo 5f73b9b758 fix for MDL-8987, guests should not see blogs flagged as site blogs 2007-03-23 01:41:09 +00:00
nicolasconnault d62c52b985 Corrected XHTML: hidden inputs not surrounded by container. 2007-03-23 01:16:22 +00:00
skodak 9ba5cf85e0 MDL-8347 Cannot create new glossary category if category with same name exists in another course on site; patch by Ray Lawrence 2007-03-22 22:43:22 +00:00
tjhunt 9e6f284ae6 Followup to MDL-8994 - validate the category id we got from the form. 2007-03-22 22:01:45 +00:00
tjhunt 3c8c7ad245 MDL-7241 - Manual grading report, sort by completed time didn't. Merged from MOODLE_16_STABLE. 2007-03-22 21:31:33 +00:00
tjhunt acccc0148b Make debugging more helpful by printing a full stack trace. 2007-03-22 16:43:56 +00:00
skodak 1a91392796 MDL-9007 weblib.php breaks upper-case hex Numeric Character References; patch by Gareth Morgan 2007-03-22 16:36:19 +00:00
skodak 19f417f6c3 (MDL-8973) Fix OOP model of new multi auth plugins - updated docs 2007-03-22 13:28:41 +00:00
skodak e58aa8db4a ok, again and now properly 2007-03-22 12:57:29 +00:00
skodak 47578048b9 fixing some previous commit mess, no idea what happened with this file :-( 2007-03-22 12:47:42 +00:00
skodak a045329951 (MDL-8973) Fix OOP model of new multi auth plugins + some other auth related fixes, fixed change_password, ldap updates, etc.; TODO: fix docs
backported from HEAD
2007-03-22 12:40:16 +00:00
skodak bb82c7ba82 file authlib.php was added on branch MOODLE_18_STABLE on 2007-03-22 12:40:35 +0000 2007-03-22 12:28:00 +00:00
tjhunt 79dc9d16be MDL-9004 - Breadcrumb trail is wrong when editing a quiz question. 2007-03-22 11:46:03 +00:00
nicolasconnault 803efadffc MDL-8807: The icon's title attribute wasn't being updated along with its img.src
MDL-8997: A couple of typos: groupseparate instead of groupsseparate etc...
2007-03-22 07:15:05 +00:00
nicolasconnault f6ee732c66 MDL-8807 and MDL-8564: Jamie had replaced the three group modes with Yes and No, for some
undocumented reason (See http://moodle.cvs.sourceforge.net/moodle/moodle/lib/form/modgroupmode.php?diff_format=h&view=log&pathrev=MOODLE_18_STABLE#revtext).
I reverted his changes, and this seems to work normally now.
2007-03-22 05:23:40 +00:00
moodler 90b6a3282f Automatic installer.php lang files by installer_builder (20070322) 2007-03-22 03:59:00 +00:00
toyomoyo f9109b1c40 MDL-7164, Mark Nielsen's patch for remove_course_content not calling instance_destroy() in blocks 2007-03-22 02:08:01 +00:00
tjhunt 66adefcbf6 MDL-8994 - Question category selector on the question type editing forms is ignored. 2007-03-22 00:10:32 +00:00
tjhunt c01c3954af MDL-7259 - Item analysis report does not use the right format_text settings. Merged from MOODLE_16_STABLE. 2007-03-21 23:25:27 +00:00
tjhunt c48ca9308f Fix whitespace problems and Eclipse warnings in Item Analysis quiz report. 2007-03-21 23:04:35 +00:00
skodak f77192322f MDL-8804 two digests per day 2007-03-21 22:16:21 +00:00
skodak 73b318a63f MDL-7647 Broken links on confirmation email (or others) - patch by Paulo Matos; merged from MOODLE_17_STABLE 2007-03-21 21:58:58 +00:00
tjhunt fe4acc87a0 Improve string handling in the question type base class. 2007-03-21 17:12:38 +00:00
thepurpleblob db3f7a489c Check for empty text strings. Thanks to Quedoc. 2007-03-21 11:17:38 +00:00
tjhunt aff7b7bd00 MDL-8946 - Fix a regression that broke question export. Also, partially clean up the way that question bank navigation tabs are printed, so the code is not duplicated in the quiz. Some other miscellaneous code cleaning too. 2007-03-21 10:40:35 +00:00
nicolasconnault f213d5dd64 MDL-2974 Added multilang filter to roles in Admin->Appearance->Gradebook 2007-03-21 07:36:56 +00:00
toyomoyo 8489b65737 adding string 2007-03-21 06:16:56 +00:00
nicolasconnault 8d96b8a10a MDL-8963 : The code was using $group->password instead of $group->enrolmentkey. 2007-03-21 06:15:10 +00:00
toyomoyo af007d91ee fix for MDL-8981, roles assigned at site level may result n a lot of default subscriptions 2007-03-21 06:01:33 +00:00
moodler d60572c8dd Automatic installer.php lang files by installer_builder (20070321) 2007-03-21 03:53:48 +00:00
moodler bd9abfe3db Cleaned up the default coloring of the links in sub-tabs 2007-03-21 03:10:39 +00:00
tjhunt 1d3301fc3d MDL-8978 - Regression from MDL-6386. Merged from MOODLE_16_STABLE. 2007-03-21 00:16:55 +00:00
tjhunt 52742e6f05 MDL-8299 - Wrong capability on review.php. Merged from MOODLE_17_STABLE. 2007-03-20 22:45:04 +00:00
tjhunt f9cecaf2f1 MDL-8140 Other units disappear from the editing form when there is no unit with multiplier 1. Effectively the same fix as just applied to MOODLE_1.7_STABLE. 2007-03-20 22:23:50 +00:00
skodak d3e5a45ac7 MDL-8976 smilies alt text was cached in one static cache for all langs 2007-03-20 20:46:37 +00:00
skodak e80947d967 MDL-8975 fix parameter handling in repository plugin 2007-03-20 19:45:59 +00:00
skodak 5bd068b7ad MDL-8955 Multilang filter doesn't accept different attribute order 2007-03-20 17:12:51 +00:00
tjhunt 7f1908567b MDL-4084 Backup all question categories in a course, not just the ones from which questions are used in a quiz. 2007-03-20 15:06:33 +00:00
tjhunt 1043fa2dff MDL-6386/MDL-6462 - yet more special character issues with multianswer. I think I have got them all this time. Backported from HEAD. 2007-03-20 14:31:16 +00:00
tjhunt 900022293b Matching qestion type was failing to correctly determine wheterh the student had changed their answer. 2007-03-20 14:07:00 +00:00
moodler 36244d8f41 Some format fixes related to MDL-8947 (though this was also fixes on server5) 2007-03-20 08:13:39 +00:00
skodak 5838338e84 warning fix 2007-03-20 08:07:00 +00:00
skodak f90d3476c6 MDL-8968 no auth plugin broken 2007-03-20 07:54:39 +00:00
moodler 0bd255acd7 More fixes for login block 2007-03-20 07:40:18 +00:00
skodak b8b2eacad4 MDL-8840 Loginas cleanup, some more improvements 2007-03-20 07:38:16 +00:00
moodler 638a8adc7b Some cleanups for the login block input fields 2007-03-20 07:34:03 +00:00
nicolasconnault 3af559d414 More multilang support for site fullname, plus a couple extra comments. 2007-03-20 07:07:58 +00:00
nicolasconnault ca31757ba3 MDL-8832 : Undid the stripslashes and changed calls to s($string) to s($string, true) instead. 2007-03-20 05:12:17 +00:00
nicolasconnault d609b3a37b MDL-8832 : Added stripslashes around search parameters (6 in total). 2007-03-20 04:44:41 +00:00
moodler 09b4e87bf9 Automatic installer.php lang files by installer_builder (20070320) 2007-03-20 03:38:45 +00:00
toyomoyo c9b34a7861 fixing warning 2007-03-20 02:56:42 +00:00
nicolasconnault 32c0a71736 Removed changes related to APD profiling, this development is now geared
towards 1.9 only (in HEAD at the moment).
2007-03-20 00:37:48 +00:00
nicolasconnault 2f49a4fbbc MDL-8921 : Converted the page from table layout to divs (except tabular data) and added
related css rules in styles_layout.css. Looks the same and validates XHTML strict.
2007-03-20 00:26:23 +00:00
stronk7 5ce30e94ed urlencode() hook for correct parameter handling & XHTML. 2007-03-20 00:10:25 +00:00
stronk7 b1995508c1 Changing one generic class-name to a glossary specific one in themes. 2007-03-19 23:56:57 +00:00
stronk7 4b593df481 Changing one generic class-name to a glossary specific one. 2007-03-19 23:51:31 +00:00
skodak fe219370ad MDL-8840 Loginas cleanup, better course isolation 2007-03-19 22:24:13 +00:00
pichetp 2076251d51 Give the question bank code sensible PHPdocumentor package names. 2007-03-19 21:31:22 +00:00
stronk7 de41196269 One more class to align all glossary inline explanations. 2007-03-19 20:18:25 +00:00
stronk7 99feca8c8e Deleting some inline styles and clearing some unused code. MDL-8746 2007-03-19 20:10:50 +00:00
skodak e78860178a MDL-8840 Loginas cleanup 2007-03-19 18:52:48 +00:00
skodak a5566c36e8 MDL-8840 Loginas cleanup 2007-03-19 18:45:40 +00:00
stronk7 87290838c9 Now the add/update entry page XHTML validates and doesn't show
the tabs and intro anymore.
2007-03-19 18:42:01 +00:00
stronk7 20ad9953df Now glossary "add entry" is a button instead of a tab. Part of MDL-8746 2007-03-19 18:21:30 +00:00
stronk7 d3e7c0e206 Preparing some glossary css changes...for "add entry" buttons. MDL-8746 2007-03-19 18:12:16 +00:00
stronk7 a20d27df81 $CFG->tabselectedtofront is now out. Part of MDL-8746 2007-03-19 17:17:54 +00:00
stronk7 374e173f11 $CFG->tabselectedtofront is now out. Part of MDL-8746 2007-03-19 17:17:54 +00:00
stronk7 01cb839f5c $CFG->tabselectedtofront is now out. Part of MDL-8746 2007-03-19 17:17:53 +00:00
stronk7 0c2153fd8a XHTML compliance... 2007-03-19 16:37:55 +00:00
stronk7 633e1ee493 small typo in var name
Merged from MOODLE_17_STABLE
2007-03-19 16:11:36 +00:00
skodak 8921708582 MDL-8904 please no extract()s, fixed double string filtering 2007-03-19 10:34:29 +00:00
moodler 52f979d9a1 New tags files (replaced the one Nick deleted) 2007-03-19 08:24:21 +00:00
skodak 87cba17acf MDL-8956 Mistake in admin.php - wrong cron url 2007-03-19 08:22:58 +00:00
skodak 239a789ebd MDL-8957 Multimedia filter cleanup 2007-03-19 08:07:19 +00:00
skodak 8cc503ed77 fixed typo 2007-03-19 08:05:10 +00:00
toyomoyo 32c4ae7dc3 fix for MDL-8942, can't delete blog image 2007-03-19 07:51:12 +00:00
martinlanghoff 84d46ef3d5 Auto-linking filters: fix serious caching bug in forum mailouts
Autolinking of glossaries, activity, resources and wiki names were using a
trivial single-entry cache implemented with static vars. The cache was _not_
keyed on course.

This bug was visible during forum_cron() which walks many courses. The cache
would get "stuck" on the first course that had something to put in the cache.
All mailouts from there onwards would autolink to stuff in the wrong course.
2007-03-19 06:32:24 +00:00
toyomoyo 5c044b8812 fix for MDL-8934, role assignment statements incorrect 2007-03-19 04:47:51 +00:00
nicolasconnault f6cb1501e4 MDL-8860 - Enabled multilang filter for site title. 2007-03-19 04:15:06 +00:00
nicolasconnault 88e8672ef6 Removing a tags file I accidentally checked in 2007-03-19 04:11:27 +00:00
moodler 26cce91d9b Better way to do an error like this 2007-03-19 03:00:54 +00:00
nicolasconnault f80e271577 Initial changes to introduce APD profiling along with performance reports in the footer. Not yet functional. 2007-03-19 01:17:02 +00:00
stronk7 7bae742ae7 Minor fixes for XHTML compliance 2007-03-19 00:00:46 +00:00
stronk7 5930e65512 Fixing env table when displayed on upgrade. 2007-03-18 19:36:11 +00:00
stronk7 28894c72b2 Adding the environmentbox class to the box. 2007-03-18 19:18:51 +00:00
stronk7 d9c201e1a0 Add some space between the environment table and environment box. 2007-03-18 19:14:25 +00:00
moodler 27c18c1776 Automatic installer.php lang files by installer_builder (20070318) 2007-03-18 03:33:20 +00:00
poltawski ca9825f48e MDL-8831 - forum date checkboxes loose their checked status 2007-03-17 23:40:46 +00:00
poltawski 8a08a041f4 MDL-6386 - Regression from MDL-6462, lost stripslashes in CLOZE question,
thanks to Joseph Joseph Rézeau  for his attention to this issue
2007-03-17 22:53:45 +00:00
gbateson 843808a9d8 fix hotpot reports to handle new group structure in Moodle 1.8 (MDL-8944) 2007-03-17 13:28:34 +00:00
skodak b139c82dfc MDL-8883 fixed double backslashes problem in filter settings 2007-03-16 22:16:35 +00:00
skodak 5e57504798 MDL-8932 fix static cache in userdate() + wrong en.UTF-8 locale 2007-03-16 20:48:50 +00:00
skodak c7e53eba46 backporting fix for warning when no tabs from HEAD 2007-03-16 20:31:30 +00:00
pichetp 6bfdfaffe9 adding </p> line 112 ,114 2007-03-16 20:19:39 +00:00
skodak fa86dd5898 MDL-8841 Switch role cleanup 2007-03-16 20:17:45 +00:00
moodler f1d9c9af1d Added support for $CFG->formatstringstriptags if it's defined (will always strip tags from strings) MDL-8713 2007-03-16 05:35:18 +00:00
moodler 99fc498b2f SOme small fixes for filter_string ... MDL-8713 2007-03-16 05:20:45 +00:00
moodler e9f89ed558 Slight bump to version to correct de-synch (see MDL-8931) 2007-03-16 04:42:09 +00:00
mark-nielsen d3dd9635ea Fixes for MDL-8929: branch buttons displaying horizontally broke (again) and updated lang entry 2007-03-16 04:33:31 +00:00
mark-nielsen 7a3631b6ee Fixing language string calls as noted in MDL-8930 2007-03-16 04:07:25 +00:00
mark-nielsen 5e24f43df6 Merging in fix for MDL-8196 2007-03-16 03:48:53 +00:00
martinlanghoff d15c13904e get_complete_user_data(): speedup SQL selecting local users by their mnethostid 2007-03-16 03:39:16 +00:00
moodler e217284df4 CHanged the default for striplinks in format_string from false to true, as this is likely to be the safest for the kinds of places where such strings get used. MDL-8713 2007-03-16 03:21:25 +00:00
moodler 0f26f875f5 *** empty log message *** 2007-03-16 03:10:14 +00:00
moodler e5636d3015 FIxed a mistake (code was doubled!) in format_string MDL-8713 2007-03-16 02:46:03 +00:00
toyomoyo 1ccb8ec916 put empty <option/> only when <select> is empty, for xhtml, i am pretty sure i checked this in already... 2007-03-16 02:31:44 +00:00
moodler 0f5a44ca98 FIxed autofocus on reply posts 2007-03-16 01:44:11 +00:00
skodak aba846b248 MDL-8924 fixed UPGRADE fails from 1.6.4+ to 1.8 Beta+ 2007-03-15 22:42:09 +00:00
bobopinna 264062798b Fixed the problem with asset and review mode checkbox in view.php 2007-03-15 21:23:14 +00:00
bobopinna 1e7321b854 Fixed the problem with asset and review mode checkbox in view.php 2007-03-15 21:06:53 +00:00
stronk7 cafd7f019a Fix small bug only reproduced in tests about changing field names and
xmldb_field object becoming modified. Novice OOP bug :-(
2007-03-15 20:01:28 +00:00
stronk7 09ea9739f3 Testing comments and default clauses containing chars to be escaped. 2007-03-15 19:15:22 +00:00
stronk7 6a3d064a00 DB escaping comments. MDL-8918
Merged from MOODLE_17_STABLE
2007-03-15 19:01:53 +00:00
poltawski e1578125e4 MDL-8922 - some xhtml fixes 2007-03-15 16:57:05 +00:00
poltawski 88b367e331 MDL-8582 course logs xhtml fixes 2007-03-15 16:02:32 +00:00
poltawski 5c8e9c9d6e Further fix for MDL-8582 on participants page 2007-03-15 15:45:10 +00:00
moodler b1fcf3d343 More post link fixes (#123 --> #p123) 2007-03-15 14:09:46 +00:00
moodler bd72653e3c Fixed a link from user forum post listing 2007-03-15 13:37:36 +00:00
tjhunt 81cdbf08e9 MDL-6462 - Cloze (multianswer) question special character issues. Merged from MOODLE_16_STABLE. 2007-03-15 12:59:15 +00:00
tjhunt a2b74a9300 Fix notice. 2007-03-15 12:53:03 +00:00
skodak d2d26c34ba MDL-8913 use proper returned reference assignment for forms elements (PHP4 trouble) 2007-03-15 12:40:14 +00:00
skodak 0ace4d2116 MDL-8783 fixed incorrect quotes in forum lang file 2007-03-15 12:11:52 +00:00
poltawski 19db0355d3 MDL-8906 - Additional fix to prevent needless searching on blank query 2007-03-15 11:46:14 +00:00
toyomoyo 2e8ee5302f putting user/editprofile back 2007-03-15 08:28:56 +00:00
bobopinna 8bfa3f6c5f Bug fix MDL-8903 2007-03-15 07:45:32 +00:00
nicolasconnault 3271d9e6d1 MDL-8783: Added appropriate language strings to resolve this usability issue. 2007-03-15 06:23:54 +00:00
toyomoyo 98c51965c1 MDL-8908, draft blogs should not be visible 2007-03-15 06:11:57 +00:00
moodler 84b23dce22 New filter_string() function which uses a smaller range of filters than the normal filter_text. This solves MDL-8713. 2007-03-15 06:05:15 +00:00
toyomoyo 3563c6c420 fix for MDL-7939, default teacher, editting-teacher and course creators should see hidden courses 2007-03-15 04:21:50 +00:00
moodler 1e266ae4b0 Automatic installer.php lang files by installer_builder (20070315) 2007-03-15 03:34:46 +00:00
nicolasconnault b4d17605c1 MDL-8904: Used a numerical index for the navigation elements array instead of string index.
MDL-8713: Added $CFG->formatstring temporary variable
2007-03-15 03:16:12 +00:00
nicolasconnault cf6ffbe73b MDL-8870 - All major file formats (mp3, mpeg, wmv, mov, avi, swf) now support embedding when required, in all major browsers. 2007-03-15 01:50:06 +00:00
poltawski a628b65cfa Merging revert MDL-8906 2007-03-15 01:14:07 +00:00
poltawski 7f51421503 MDL-8906 - Actually, I'll Fix blocks editing on search pages, by adding the query 2007-03-15 00:52:19 +00:00
poltawski f6a157d14a MDL-8906 - Blocks Editting Broken on Admin Search Results page, so disable
edit button
2007-03-15 00:32:38 +00:00
danmarsden fc4ac66431 Fix for MDL-8862 - order of options in choice not logical - shift option for limiting options to aboe where limits are set. 2007-03-15 00:14:37 +00:00
skodak 94e16c079c (MDL-8820) moodle/user:editprofile now works in user contexts - reverted previous fix, adding new one 2007-03-14 23:35:08 +00:00
skodak f8c56dd156 MDL-8522 better label for role reset button and confirmation text 2007-03-14 22:06:10 +00:00
skodak d8fcdab45c fixed missing global CFG 2007-03-14 21:55:03 +00:00
skodak 27fb92f48f MDL-8867 Add setting to define role that is assigned to creators in new courses
MDL-8868 Set only minimal permissions for creator role

+ improved accesslib to handle changes of context levels in capability definitions
2007-03-14 21:38:15 +00:00
tjhunt 5dc53c6b7b MDL-8127 - bad use of DESCRIPTION constant in quiz module causes upgrade to fail. Thanks to Pavel Krejci for the fix. Merged from MOODLE_17_STABLE. 2007-03-14 21:24:04 +00:00
tjhunt f0d2d9ae0c Oops, reverting. Eloy had already fixed it. 2007-03-14 21:10:49 +00:00
tjhunt 7a43fb909b MDL-8232 - can't use = on TEXT colums with MSSQL - was breaking numerical question type upgrade. Merged from MOODLE_17_STABLE. 2007-03-14 21:08:04 +00:00
tjhunt 77f814a368 MDL-8772 - Use the same list of places to search in get_string and help.php. 2007-03-14 20:14:48 +00:00
poltawski 8eaa523a2c MDL-8900 Adding adminroot to redirects to clean up html 2007-03-14 17:23:30 +00:00
poltawski 01d38e9938 Fixed check for section for MDL-8360 2007-03-14 16:30:47 +00:00
tjhunt 04bfc2247d Notice when a student attempts a quiz, because there are no tabs to display. 2007-03-14 15:29:22 +00:00
thepurpleblob 050ed53908 Fixed true/false bug due to new 'correctanswer' field. 2007-03-14 15:14:14 +00:00
moodler 24243ec058 Fixes for wonky buttons in navigation 2007-03-14 14:54:15 +00:00
thepurpleblob 170ab43ad0 Fixed some hardcoded strings in GIFT format. 2007-03-14 14:08:57 +00:00
ethem f7b1762793 Code cleanup 2007-03-14 13:26:24 +00:00
thepurpleblob f4fb213988 Use $this->error for only error report. 2007-03-14 13:13:44 +00:00
poltawski d8572e7021 MDL-8455 - unslightly error if no course category 2007-03-14 13:05:30 +00:00
thepurpleblob 521a96d4ef MDL-8898
Improvements to error handling in question bank import/export.
2007-03-14 13:02:55 +00:00
thepurpleblob 2bab640cd6 MDL-8898
Improvements to error handling in question bank import/export.
2007-03-14 12:53:13 +00:00
poltawski ffe67636f7 MDL-8360 - Currently can't bookmark admin searches, so disable the ability to bookmark
the search page
2007-03-14 11:55:25 +00:00
tjhunt c2f3c09b3b Fix typo 2007-03-14 11:33:01 +00:00
skodak 9751ebf3ac MDL-8897 fixed shell commands in tex and algebra filters; merged from MOODLE_17_STABLE 2007-03-14 11:31:15 +00:00
toyomoyo 9e2c7c7fa3 fix for MDL-8020, bumping up version to get rid of moodle/user:editprofile as it is the same as moodle/user:update 2007-03-14 07:50:11 +00:00
nicolasconnault af7471c268 MDL-8870 - Added support for embedded flash, and css hooks for all embedded resources (e.g. class="resourceswf") 2007-03-14 05:23:03 +00:00
moodler eb87e4be97 Fixed user profile image size on message history 2007-03-14 04:48:12 +00:00
nicolasconnault e6a99eac77 MDL-8792 - Added a new language string: keepnavigationvisible 2007-03-14 04:30:41 +00:00
toyomoyo 1eca074507 fix for MDL-8885, teachers should not be able to set course to hidden if they can not view hidden courses 2007-03-14 04:29:42 +00:00
moodler 56bb24458a Automatic installer.php lang files by installer_builder (20070314) 2007-03-14 03:53:22 +00:00
nicolasconnault 538e5a2810 MDL-8792 - Added a new string: keepnavigationvisible 2007-03-14 03:17:52 +00:00
toyomoyo c6d9f6a175 fix for MDL-8885, do not show bulk message option if user has no capability 2007-03-14 01:49:43 +00:00
toyomoyo 116244fbae fix for MDL-8885, editting teacher should be able to see all messages in course 2007-03-14 01:35:31 +00:00
nicolasconnault 02c9b15942 *** empty log message *** 2007-03-14 00:45:10 +00:00
moodler 656e41c472 Further to MDL-8872 2007-03-14 00:15:25 +00:00
stronk7 fc80a68f89 Now documental search mimics real relational search behaviour. MDL-8884 2007-03-13 22:39:07 +00:00
bobopinna b40f8bad2f Fixed bug MDL-8725 and fixed some typo in regulars expressions in cmi.objectives elements store and retrieve 2007-03-13 22:09:24 +00:00
stronk7 2a0a625e35 Fix one awful background showed in form-buttons (that are enclosed in a fieldset????) 2007-03-13 18:30:15 +00:00
tjhunt 4f510e2ec8 Eliminate bizarre use of function_exists. 2007-03-13 17:43:03 +00:00
tjhunt 803b4bf64c Entity decoding only done the right number of times on import, not once too often.
Also, fix a notice and and Eclipse warning.
Backported from HEAD.
2007-03-13 16:27:56 +00:00
tjhunt 775db8e809 Use the right string processing when outputting question text on import/export. Backported from HEAD 2007-03-13 16:24:42 +00:00
tjhunt 7585949466 Use the right string processing functions when outputting question names. Backported from HEAD 2007-03-13 16:20:58 +00:00
jamiesensei 6b344faba7 small change to fix MDL-8788 which was a problem with non unique header element names 2007-03-13 14:46:17 +00:00
moodler 9609ee0a4f MDL-8872 Removed mentions of "course" from packages 2007-03-13 08:28:47 +00:00
nicolasconnault 4dfc8f1d79 MDL-8696 - Just reduced input field from 64 to 48 2007-03-13 07:37:07 +00:00
toyomoyo 9143ed3366 allow guests to see the reply link 2007-03-13 04:47:30 +00:00
toyomoyo 472da9a27d fix for MDL-8864, users with no replypost capability can see reply link 2007-03-13 04:36:23 +00:00
moodler 4d2892942a Automatic installer.php lang files by installer_builder (20070313) 2007-03-13 03:36:30 +00:00
nicolasconnault 831b76108a MDL-8855 - Wrote additional GD code to support alpha transparency in PNG files. 2007-03-13 02:37:26 +00:00
nicolasconnault 9eb89d835c commit test, ignore changes 2007-03-13 01:20:19 +00:00
toyomoyo 90459a1db8 fixing bad has_capability call 2007-03-13 00:51:12 +00:00
mark-nielsen ee4cee1a4c Converting navigation array to a breadcrumb string for MDL-8843 2007-03-12 22:59:28 +00:00
bobopinna 6c60a57d31 fixed a typo in library call 2007-03-12 20:11:59 +00:00
pichetp b97b59961e add nosharedwildcard' 2007-03-12 16:53:10 +00:00
thepurpleblob 858c53d8c9 MDL-8857
Make numerical and essay question formats more consistent.
2007-03-12 16:32:00 +00:00
moodler ae5c32e389 Straighten up registration button 2007-03-12 13:39:56 +00:00
moodler 1a9c4ef509 Tidied up the navigation menus a bit 2007-03-12 13:21:23 +00:00
sam_marshall 787b30c0c2 Merging MDL-8823 Made it so you can do require_js after header printed 2007-03-12 12:18:13 +00:00
skodak edfda53d51 MDL-5229 and MDL-6196 adding gb18030 mime header encoding 2007-03-12 08:38:33 +00:00
toyomoyo 26aac52ce0 fix for MDL-8821, do not display grade table if no grade available 2007-03-12 07:00:01 +00:00
nicolasconnault 1f322589be MDL-8737 - Added a focus() to the generated validation JS, so that if an element fails client-side validation, the focus jumps straight to it when the submit button is clicked. This doesn't yet work with HTMLArea elements. 2007-03-12 06:42:14 +00:00
nicolasconnault eab3ae18fc MDL-8792 - Simply added help icon to explain the options available regarding embedding media files in the site. 2007-03-12 05:38:02 +00:00
nicolasconnault 96ef423773 MDL-8792 - Simply added help icon to explain the options available regarding embedding media files in the site. 2007-03-12 05:27:43 +00:00
nicolasconnault a8d9136e89 MDL-8847 - Added a little 'p' :-) 2007-03-12 05:16:54 +00:00
mark-nielsen 1244ef78ac Fix for MDL-8843: Converted the breadcrumb to an array 2007-03-12 03:34:52 +00:00
toyomoyo 03008bca7e fixing a broken sql call to get_my_courses() 2007-03-12 03:05:12 +00:00
donal72 33981a427d MNET: Check that xml-rpc is installed: #MDL-8731 #MDL-8846 2007-03-12 02:32:08 +00:00
toyomoyo eea7d42fd1 parent blog forceloginforprofile fix 2007-03-12 01:11:59 +00:00
mudrd8mz a4fa47e7ea Merged the fix of MDL-8852 from the HEAD revision 1.90 2007-03-11 23:54:22 +00:00
skodak d4dd4c07fe MDL-8849 use proper value quoting 2007-03-11 19:59:13 +00:00
moodler df58100c31 Added patch from Petr (see MDL-8767) unchanged. Looks OK from a visual inspection. 2007-03-11 07:12:10 +00:00
moodler a080d1ec16 Just fixed an outdated parameter 2007-03-11 06:58:51 +00:00
moodler 321a287501 Merged new timezones from head MDL-8842 2007-03-10 14:49:37 +00:00
moodler 9ed43273aa Automatic installer.php lang files by installer_builder (20070310) 2007-03-10 03:31:39 +00:00
tjhunt 6365af1cf6 MDL-8177 - Random questions selected deleted questions. 2007-03-10 00:33:34 +00:00
stronk7 7044ea9423 Prevent some languages without word whitespace separators to use
documental searches over MySQL.
2007-03-09 20:55:18 +00:00
skodak 54618b81a4 MDL-8834 smtp debugging can now be turned off - now independent on $CFG->debug 2007-03-09 20:13:48 +00:00
stronk7 585b98c78c Adding support for forum documental searches. Disabled by default.
Only MySQL supported. Experimental under 1.8! MDL-8830
2007-03-09 18:28:11 +00:00
stronk7 b0c7638f9c Added the search_generate_text_SQL() function that generates
SQL clauses using documental indexes. Only MySQL for now.
Under 1.8 this isn't used officially (experimental!) but
we need it here right now (won't interfere at all). MDL-8830
2007-03-09 18:19:03 +00:00
sam_marshall 4fc82e8dc9 MDL-8825 Fixed html editor in wiki (invisible fieldset problem) 2007-03-09 15:41:19 +00:00
tjhunt b978bf3a87 Groups upgrade fails if you have groups defined, but none of them contain any members. 2007-03-09 14:33:43 +00:00
exe-cutor dda4dbce59 Adapted login to new authentication structure, but may need some additional adaptions 2007-03-09 12:34:03 +00:00
toyomoyo c6a5a391d4 fix for MDL-8782, adding a mentees block 2007-03-09 07:05:10 +00:00
pichetp ed6e226e64 modifs MDL-5650 2007-03-09 05:33:12 +00:00
pichetp 410cc4e472 other modifications MDL-5650 2007-03-09 05:10:47 +00:00
moodler e3ff4d6046 Fixed typo for MDL-8803 2007-03-09 05:03:44 +00:00
moodler e8e22b7718 Automatic installer.php lang files by installer_builder (20070309) 2007-03-09 03:48:39 +00:00
toyomoyo 445ef592dd forgot to check this in 2007-03-09 02:58:20 +00:00
toyomoyo 3fff3a34f7 fix for MDL-8681, importing a course creates duplicate roles 2007-03-09 02:36:56 +00:00
skodak a6376758d6 MDL-8814 fixed typo 2007-03-08 15:22:42 +00:00
moodler 8231ca599e Re-worked the forum_cron logic to fix posts display ... see MDLSTE-145
A lot more optimisation is still possible.
2007-03-08 13:53:34 +00:00
csantossaenz 80ababd00a Comments and debug messages deleted from last version 2007-03-08 12:42:58 +00:00
nfreear cab7778f18 Follow-up fixes for MDL-8531 "Groups icons..." -PARAM_ALPHANUM bug (merged from HEAD). 2007-03-08 10:38:33 +00:00
csantossaenz 950acb9c73 Fixed MDL-8600 http://tracker.moodle.org/browse/MDL-8600 2007-03-08 09:45:15 +00:00
csantossaenz d5fedfa4a3 Fixed MDL-8600 SQL Error with Postgres 7.4.16 2007-03-08 09:42:50 +00:00
moodler fa730d469f Merged and updated Yu's forum_cron optimising from head 2007-03-08 08:14:05 +00:00
moodler 9b4c44e5ed JUst fixed some notices with strangely-named files in RSS enclosures 2007-03-08 08:12:09 +00:00
nicolasconnault 1558c8e6b4 Converted embedded media files (avi, wmv and mov) to xhtml strict compliance. However, this is far from finished, since some browsers are not displaying correctly.
<table border="1" cellpadding="2" cellspacing="2">
<tr>
<td></td><th colspan="8">Browsers</th>
</tr>

<tr>
<th>File</th>
<td>FF 1.5</td>
<td>FF 2.0</td>
<td>IE 1.5</td>
<td>IE 1.6</td>
<td>IE 1.7</td>
<td>Safari 2.0</td>
<td>Opera 9.10</td>
<td>Konqueror</td>
</tr>

<tr>
<td>AVI (800x600)</td>
<td>?</td><!-- FF 1.5 -->
<td>?</td><!-- FF 2.0 -->
<td>?</td><!-- IE 1.5 -->
<td>?</td><!-- IE 1.6 -->
<td>?</td><!-- IE 1.7 -->
<td>?</td><!-- Safari 2.0 -->
<td>?</td><!-- Opera 2.0 -->
<td>?</td><!-- Konqueror 2.0 -->
</tr>

<tr>
<td>AVI (300x200)</td>
<td>?</td><!-- FF 1.5 -->
<td>OK (pb with size)</td><!-- FF 2.0 -->
<td>?</td><!-- IE 1.5 -->
<td>OK</td><!-- IE 1.6 -->
<td>OK</td><!-- IE 1.7 -->
<td>OK</td><!-- Safari 2.0 -->
<td>OK</td><!-- Opera 2.0 -->
<td>?</td><!-- Konqueror 2.0 -->
</tr>

<tr>
<td>WMV (800x600)</td>
<td>?</td><!-- FF 1.5 -->
<td>OK</td><!-- FF 2.0 -->
<td>?</td><!-- IE 1.5 -->
<td>OK</td><!-- IE 1.6 -->
<td>OK</td><!-- IE 1.7 -->
<td>NO</td><!-- Safari 2.0 -->
<td>OK</td><!-- Opera 2.0 -->
<td>?</td><!-- Konqueror 2.0 -->
</tr>

<tr>
<td>WMV (300x200)</td>
<td>?</td><!-- FF 1.5 -->
<td>OK (pb with size)</td><!-- FF 2.0 -->
<td>?</td><!-- IE 1.5 -->
<td>OK</td><!-- IE 1.6 -->
<td>OK</td><!-- IE 1.7 -->
<td>OK</td><!-- Safari 2.0 -->
<td>OK</td><!-- Opera 2.0 -->
<td>?</td><!-- Konqueror 2.0 -->
</tr>

<tr>
<td>MOV (800x600)</td>
<td>?</td><!-- FF 1.5 -->
<td>OK</td><!-- FF 2.0 -->
<td>?</td><!-- IE 1.5 -->
<td>OK</td><!-- IE 1.6 -->
<td>OK</td><!-- IE 1.7 -->
<td>NO</td><!-- Safari 2.0 -->
<td>OK</td><!-- Opera 2.0 -->
<td>?</td><!-- Konqueror 2.0 -->
</tr>

<tr>
<td>MOV (300x200)</td>
<td>?</td><!-- FF 1.5 -->
<td>OK</td><!-- FF 2.0 -->
<td>?</td><!-- IE 1.5 -->
<td>OK</td><!-- IE 1.6 -->
<td>OK</td><!-- IE 1.7 -->
<td>NO</td><!-- Safari 2.0 -->
<td>OK</td><!-- Opera 2.0 -->
<td>?</td><!-- Konqueror 2.0 -->
</tr>
</table>
2007-03-08 07:40:45 +00:00
toyomoyo b259fd9a25 fixing typo 2007-03-08 06:03:48 +00:00
moodler 6e18a9b615 Added some strings for Pierre Pichet (ppichet) he was having trouble ... 2007-03-08 05:14:25 +00:00
toyomoyo 3ad5be78b5 changing require_once to include_once to tolerate faulty mods 2007-03-08 03:23:38 +00:00
pichetp 9cd5f2f577 small correction improvements in calculated question interface MDL-8389 2007-03-08 02:56:28 +00:00
skodak 668483e068 MDL-8759 reverted previous incorrect patch with unset($USER), fixed logging function instead; solves the broken language in forum cron too 2007-03-08 01:05:13 +00:00
skodak 7da5cf7efd MDL-6196 minor related cleanup - should not be needed to backport it 2007-03-08 00:08:26 +00:00
pichetp 75889b48e3 improvements in calculated question interface MDL-8389 2007-03-08 00:05:27 +00:00
skodak d9571844fc MDL-6196 infinite loop in header encoding when using some site charsets (gb18030) 2007-03-08 00:03:09 +00:00
pichetp 30cdc044f7 adding a null, line 21 MDL-8806 2007-03-07 19:24:10 +00:00
nfreear f4f53da543 Fixes MDL-8531 "Groups icons are no longer being uploaded" (merged from HEAD). 2007-03-07 19:10:42 +00:00
pichetp d8b405fda9 correcting </divt> to </div>line 30 of mod/quiz/index.php 2007-03-07 15:02:13 +00:00
moodler 2237ea1c13 Petr's patch for MDL-8385 with only one minor change to clear the cache in require_login.
It's working OK for me in my tests now but I'm checking in to test further on a wider range of sites.

Thanks Petr!   :-)
2007-03-07 13:31:21 +00:00
skodak ad961eab24 fixed unassigning to use standard function in get_legacy_type(); backported from HEAD 2007-03-07 09:46:23 +00:00
urs_hunkler e92c4dcb0a removed commented old block widths definitions 2007-03-07 09:45:09 +00:00
urs_hunkler 52a84d9eb8 'block width definition did not work any more, needs to come after config.php is loaded' 2007-03-07 09:32:43 +00:00
moodler 64a6329f61 Some small changes to avoid notices 2007-03-07 07:49:03 +00:00
nicolasconnault 86c91b1210 MDL-8787 - Created new help file for News Forum Type, and overrode the help button for the forum type select in mod_form.php 2007-03-07 07:10:20 +00:00
toyomoyo 88dd35ee8e do not force parents to enrol 2007-03-07 06:22:04 +00:00
moodler b47bbe5255 Fixes to remove timestart and timeend from consideration when loading user capabilities
Instead, we delete role assignments in cron

This is resulting in a great speed increase!     MDL-8785

Thanks Eloy for the idea!
2007-03-07 04:54:57 +00:00
moodler 7a258d4168 FIxed up footer display of this block 2007-03-07 02:01:27 +00:00
nicolasconnault 4eaf16f264 MDL-8758 - Corrected the packagezip -> package.zip typo in 3 locations (2 in admin/langimport.php and 1 in install.php). The notification about allow_url_fopen has already been added to the default lang/en_utf8/error.php string. 2007-03-07 01:59:38 +00:00
toyomoyo 40242aaa8f fixing hidden teacher upgrade 2007-03-07 01:34:44 +00:00
nicolasconnault 1ad36c7821 MDL-2974 - Corrected notification of correctly entered new category with multilang display 2007-03-07 01:22:01 +00:00
skodak ba1d266228 MDL-8777 Failing setup_lang_from_browser if lang contains dash; user lang preference not respected; backported from HEAD 2007-03-06 23:53:18 +00:00
skodak 84bf769f6b MDL-8777 Failing setup_lang_from_browser if lang contains dash; backported from HEAD 2007-03-06 22:34:19 +00:00
skodak 80546a1195 MDL-7633 legacy capabilities now have special menu; backported from HEAD 2007-03-06 22:03:18 +00:00
skodak 45dd6a2241 MDL-8522 fixed role reset warnings + only one legacy cap type allowed now in each role; backported from HEAD 2007-03-06 19:23:34 +00:00
tjhunt 3b563f5893 MDL-8349 - responses not being filtered in history display. 2007-03-06 18:00:13 +00:00
skodak a33d21b7d9 (MDL-8745) prevent cannot logon trouble after update to 1.8; backported from HEAD 2007-03-06 16:58:53 +00:00
moodler b2ee750780 Some old fix for layout in recentactivity 2007-03-06 14:24:12 +00:00
moodler e53a867fa4 A few small fixes related to efficiency etc MDL-8767 2007-03-06 12:53:17 +00:00
skodak 3c5ecd5859 MDL-8765 user preference usage cleanup; backported from HEAD 2007-03-06 10:48:12 +00:00
tjhunt b332877b96 Add a couple more plugin types to get_string that Martin missed yesterday. 2007-03-06 07:57:13 +00:00
nicolasconnault 0ac94304fc MDL-8759 - Unset $USER 2007-03-06 06:10:34 +00:00
nicolasconnault 4e59cc4453 MDL-8771 - Restricted has_capability() sanity checks to DEVELOPER debug mode 2007-03-06 05:31:45 +00:00
toyomoyo 4a6638f689 missing user info 2007-03-06 05:15:09 +00:00
nicolasconnault e699a73bf4 Stub for a web-based integration test 2007-03-06 05:08:28 +00:00
nicolasconnault be19968cb3 Upgraded weblib::format_string() so it accepts unicode htmlentities. Also added more unit tests, including a stub for an integration web-based test. 2007-03-06 05:01:24 +00:00
moodler a2d608daf9 Fix for separate groups / all groups view MDL-8300 2007-03-06 04:28:45 +00:00
nicolasconnault 0b2db6dca0 MDL-8691 - Finally found the source of the error and fixed it. Add to apply s(format_string($week_summary)) on the optgroup's label. 2007-03-06 02:54:21 +00:00
skodak d9f6fdc21e MDL-8690 popup form now uses div instead of invisible fieldset 2007-03-05 21:41:14 +00:00
skodak a6109173a2 MDL-7693 fixed participans block on frontpage; notloggedin and authenticated roles overrides to be fixed later in separate bug 2007-03-05 20:09:55 +00:00
skodak c522818828 backporting whitespace and comments from HEAD 2007-03-05 20:03:44 +00:00
skodak 59316ec573 MDL-8765 user preference code cleanup 2007-03-05 19:57:12 +00:00
stronk7 4d4e0c7d3d Normalizing encoding by using textlib synonyms - parse_charset()
Credit goes to Petr.
2007-03-05 18:26:11 +00:00
tjhunt 196b6f3918 MDL-8764 - In menus, show question categories from this course first, then published categories from other courses. 2007-03-05 18:05:39 +00:00
nfreear e747435fcd Follow-up fix 2 for MDL-8507 "Local language pack-..." - Content-Language header (merged from HEAD). 2007-03-05 15:40:01 +00:00
moodler dcdb86c08a RSS enclosures now use main mimetypes file 2007-03-05 15:21:20 +00:00
moodler a396bc7d75 Added new string locations for plugins 2007-03-05 12:25:47 +00:00
skodak c1e4fa8fbf MDL-8756 fixed weeked days defaults 2007-03-05 11:56:15 +00:00
skodak 011d1af528 MDL-8524 general roles cleanup; MDL-8373 authenticated user role now created during upgrade from 1.7.x, xhtml and CSS cleanup in roles GUI; accesslib inline docs cleanup; risk bitmask fixes - backported from HEAD 2007-03-05 11:37:54 +00:00
pichetp 62e3a52588 stopping enter key side effects MDL-8389 2007-03-05 08:11:07 +00:00
donal72 461594cc72 Mnet: Permit 1.8 upgrade to continue, even if duplicate usernames exist in the user table. 2007-03-05 07:47:09 +00:00
moodler ecfecb994d Fixed up tabs some more, to avoid silly tabs that don't exist 2007-03-05 07:27:10 +00:00
moodler 1a5c004e96 Whoops accidentally checked insome head stuff I shouldn have. 2007-03-05 07:21:10 +00:00
moodler 8730f7dd53 Alternate fix for tabs, make it like head 2007-03-05 07:19:11 +00:00
moodler 0b22495f37 Tidied up tabs and template display 2007-03-05 07:15:23 +00:00
moodler 7aa951a2cc Use referer function 2007-03-05 05:57:41 +00:00
moodler 2fc29c74ab Fixed a notice when no REFERER was present 2007-03-05 05:46:35 +00:00
moodler c2a4225d1d Show cost info on info pages MDL-8318 2007-03-05 05:38:46 +00:00
moodler 31e1d6582c XHTML fixes for course/info.php to make it usable MDL-8755 2007-03-05 05:35:41 +00:00
donal72 ca4f8f38b3 XHTML Strict fix: # MDL-8754 2007-03-05 05:03:36 +00:00
moodler a8d101b5c4 Fixed a small notice 2007-03-05 04:46:29 +00:00
moodler 1235148f9f MOre little group tweaks MDL-8741 2007-03-05 02:52:02 +00:00
moodler a734c1f59f Undoing some of my previous fixes, which are better fixed by the change to groupmode() just made
MDL-8741
2007-03-05 02:14:14 +00:00
moodler 917aaad1a2 FIxed user picture size in messaging 2007-03-05 01:53:21 +00:00
moodler f4f655747d Further fix for groups support in forum MDL-8741 2007-03-05 01:48:13 +00:00
skodak b8b21c5d2a fomrat_string() tuning - memory, speed and accuracy in cron; backported from HEAD 2007-03-04 22:59:26 +00:00
skodak 1b94c6e4b7 fomrat_string() tuning - memory, speed and accuracy in cron; backported from HEAD 2007-03-04 22:53:46 +00:00
stronk7 6bfdf6cd1e re-re-re-re-fixing tabs for wood. :-P 2007-03-04 20:10:27 +00:00
urs_hunkler 9908a3f5a1 'MDL-8747 - added .buttons form div {display:inline} to aligen buttons beside each other' 2007-03-04 19:16:29 +00:00
urs_hunkler 211d5844d4 made tab gifs higher to give better display when font size is changed 2007-03-04 17:12:09 +00:00
urs_hunkler cd784f2438 made tab gifs higher to give better display when font size is changed 2007-03-04 17:10:34 +00:00
urs_hunkler 45e3b380d2 made tab gifs higher to give better display when font size is changed 2007-03-04 17:04:49 +00:00
urs_hunkler fabf55370a 'CSS for tabs changed to resolve IE6 + 7 tabs issues' 2007-03-04 16:59:17 +00:00
urs_hunkler c0b6773831 'convert_tree_to_html changed to resolve IE6 + 7 tabs issues' 2007-03-04 16:58:09 +00:00
urs_hunkler 74fefb48d5 'convert_tree_to_html changed to resolve IE6 + 7 issues' 2007-03-04 16:57:04 +00:00
moodler f138d59dba JUst fixing white space 2007-03-04 07:49:40 +00:00
moodler 7252b5889b If course groupmode is not forced, then we allow groups to mingle in forums. MDL-8741 2007-03-04 07:34:21 +00:00
moodler 0af074a894 Removed align-middle from group pics MDL-7861 2007-03-04 06:31:13 +00:00
moodler fa8452c1d7 Re-did fix for MDL-8385 performance problem 2007-03-04 05:40:45 +00:00
moodler 81de2d85a6 Automatic installer.php lang files by installer_builder (20070304) 2007-03-04 03:43:53 +00:00
gbateson 09182fa82d set JQuiz[7]=false, to fix checking answers for JQuiz Hybrid questions when in ShortAnswer mode 2007-03-04 01:22:19 +00:00
skodak 4e50a79a26 MDL-8522 Add role reset button into role definition form; fixed single button css; backported from HEAD 2007-03-03 22:32:59 +00:00
skodak b5820d9add MDL-8523 Show default capabilities in role definition; added CSS popup_form spacing; backported from HEAD 2007-03-03 21:09:56 +00:00
skodak a8ec259abf MDL-8733 fixed approving logic when editing; merged from MOODLE_16_STABLE 2007-03-03 12:27:02 +00:00
pichetp a62af9c397 don't allow null answers to be saved MDL-8475 2007-03-03 04:38:38 +00:00
pichetp ce53b30a7a correcting feedback comments display MDL-8588 2007-03-03 03:32:34 +00:00
skodak 9416fe3a9c notice_yesno install time fixes; backported from HEAD 2007-03-02 20:48:03 +00:00
pichetp b3cbec74d9 grading correctly small values 1e-24 MDL-8478 2007-03-02 20:40:52 +00:00
skodak 718ffbfb63 MDL-8690 fixed regression in notice_yesno ; backported from HEAD 2007-03-02 20:00:36 +00:00
skodak cc00f2763f MDL-8578 new capability for adding and replying to news in forum; backported from HEAD 2007-03-02 19:44:09 +00:00
skodak f10451c414 sesskey added to logout.php MDL-8727 ; backported from HEAD 2007-03-02 16:54:38 +00:00
pichetp 562dc5fdda changing MAX to MIN so that there is an item for each datasets MDL-8552 and 6777
could (will) be merged to older versions as this is an old problem
2007-03-02 13:59:46 +00:00
stronk7 e2dfe8bfca Skipping some thousands of require_once() calls because PHP5
is really slow (and heavy) with them. MDL-8700

Merged from MOODLE_17_STABLE
2007-03-02 09:41:22 +00:00
toyomoyo a28ee0a933 adding backward compatibility for question restores 2007-03-02 08:03:47 +00:00
toyomoyo 1fdce070c4 adding a progress bar 2007-03-02 07:57:43 +00:00
nicolasconnault 69d788e2af MDL-8597 - Fixed: weblib.php::print_speller_code was adding CDATA and <script> tags around the code, when this was already done by weblib.php::use_html_editor().
Check lib/editor/htmlarea/htmlarea.class.php for a seemingly duplicated print_speller_code method.
2007-03-02 05:04:38 +00:00
nicolasconnault 15f2ccbbbd Added a fix that Petr made only in HEAD: 2007-03-02 03:15:07 +00:00
moodler 66a988f08e Fixed formatting of title in print_header() (no bug) 2007-03-02 03:13:08 +00:00
nicolasconnault b9a6d9cd1e MDL-7861 - XHTML errors (strict) were found in course/editsection.html and mod/chat/view.php. They were corrected and additional css rules were written to replace the corrected inline styling. 2007-03-02 02:32:39 +00:00
toyomoyo 179fc95c04 changing this back to fieldset 2007-03-02 02:32:28 +00:00
toyomoyo a2182b2420 replacing fieldsets with divs in small forms 2007-03-02 02:16:17 +00:00
toyomoyo 86726446ab fixing indenting 2007-03-02 01:58:20 +00:00
mjollnir_ 3b3b5b4cc5 Merged from MOODLE_16_STABLE: fixing bug MDL-8651: import course data should clean up after itself 2007-03-02 01:43:33 +00:00
toyomoyo db68f9fedf replacing fieldsets with divs for small forms 2007-03-02 01:29:10 +00:00
nicolasconnault ea799baf48 MDL-8697 - Fixed the legacy HTML for the search table 2007-03-02 01:24:47 +00:00
toyomoyo 5bb9d213fe replacing fieldsets with divs in small forms 2007-03-02 01:18:47 +00:00
toyomoyo 2c550eefbd replacing fieldsets with divs for small forms 2007-03-02 01:03:36 +00:00
tjhunt c34b9b9c97 Make error messages non-ambiguous. 2007-03-01 16:41:50 +00:00
tjhunt 3ee2c02ec3 Make error messages non-ambiguous. 2007-03-01 16:41:43 +00:00
poltawski 59900bd490 Duplicate alt tags in course category page MDL-8711 2007-03-01 14:47:09 +00:00
nfreear c40999b0b6 Fixes Bug MDL-8709 "Javascript: pseudo-protocol in admin tree block is bad" merged from HEAD. 2007-03-01 13:08:48 +00:00
nfreear 36be64d1da Fix for bug MDL-8708 "Debug, multiple warnings in admin/uploaduser.php and user.php" (merged from HEAD). 2007-03-01 12:10:16 +00:00
nfreear 54e296b115 Follow-up fix for Bug MDL-8617 "Implement groupings & course modules..." internal - define, any_grouping=0. 2007-03-01 11:42:37 +00:00
nfreear 20ed8a7215 Follow-up fix for Bug MDL-8617 "Implement groupings & course modules..." internal (sam's patch, thank you!) 2007-03-01 11:33:35 +00:00
nfreear 504af96b2e Follow-up fix for Bug MDL-8617 "Implement groupings & course modules..." internal (sam's patch). 2007-03-01 11:32:04 +00:00
nfreear f1b29e2e69 Fixes MDL-6548 "... block should use lists" - blocks: blog tags, news items, recent activity - forum (merged from HEAD). 2007-03-01 11:17:33 +00:00
tjhunt 7c1fb23156 MDL-6773 - eliminate duplicate code for getting a list of question categories. 2007-03-01 09:45:19 +00:00
moodler 31eb4b15b8 Fixed unenrol_student MDL-8591 2007-03-01 08:05:12 +00:00
moodler 826ea2ba9a Don't redirect guests to mymoodle page! MDL-8594 2007-03-01 07:57:57 +00:00
toyomoyo 83dbd468f9 replacing fieldsets with divs in small forms 2007-03-01 07:45:06 +00:00
jamiesensei 68696f6aa8 fix to MDL-8659 Impossible to create Cloze type question in Moodle 1.8 beta 2007-03-01 07:40:25 +00:00
nicolasconnault b7e97fcc73 MDL-8693 Fixed the double-equal typos (2) 2007-03-01 07:33:01 +00:00
toyomoyo a836952539 replacing fieldsets with divs in small forms 2007-03-01 07:28:19 +00:00
defacer ba34f3372d Merging from MOODLE_16_STABLE:
Fix for MDL-8515: Prefixing chat messages with a slash should not hide the
user's name unless it's a special command we handle.

I completely removed the emoticon handling case, but it seems like it was
not needed for a long time now? Emoticons work just fine without it.
2007-03-01 07:18:32 +00:00
toyomoyo d6fd65c9c9 replacing fieldsets with divs in small forms 2007-03-01 06:57:03 +00:00
toyomoyo ed6df9192e replacing fieldsets with divs in small forms 2007-03-01 06:32:35 +00:00
toyomoyo 727c9ec658 replacing fieldsets with divs in small forms 2007-03-01 06:26:30 +00:00
toyomoyo 562a703ffd replacing fieldsets with divs in small forms 2007-03-01 06:05:22 +00:00
nicolasconnault 1bd32f7b63 MDL-8629 - Outputting correct messages during redirection after forum posting with mail-now selected 2007-03-01 05:59:46 +00:00
toyomoyo 19c8c196b2 replacing fieldsets with divs in small forms 2007-03-01 05:53:08 +00:00
toyomoyo 233fd3da0b fixing javascript error MDL-8652 2007-03-01 05:47:29 +00:00
toyomoyo 0f3a1c9382 replacing fieldset in small forms with divs 2007-03-01 05:36:50 +00:00
nicolasconnault d9fc0fc2ad MDL-8691
Added format_string() around $course->shortname in calendar.view.php
2007-03-01 05:14:27 +00:00
toyomoyo af8e80ec8a replacing fieldset in small forms with divs 2007-03-01 05:09:41 +00:00
toyomoyo c5150fe5a9 replacing fieldset with div for small forms 2007-03-01 05:02:45 +00:00
toyomoyo 09eb304cf7 replacing fieldset in small form to div 2007-03-01 04:40:38 +00:00
nicolasconnault 14b9196e8d MDL-8697 Moved inline text-align:right to stylesheet, and removed table and td text-align: center 2007-03-01 04:40:19 +00:00
toyomoyo fdefa7ef01 replacing single button fiedlsets with divs 2007-03-01 04:30:35 +00:00
nicolasconnault 9abd181aee Issue MDL-8697
Someone must have fixed this earlier, because there are no more tables. However I found the use of the align attribute which I replaced with inline CSS style=\"text-align:right\"
2007-03-01 04:07:29 +00:00
toyomoyo 2b7a363f02 changing fieldset to div 2007-03-01 04:06:14 +00:00
toyomoyo e85a202ba3 chaing fieldset in single button form to use div 2007-03-01 04:03:01 +00:00
nicolasconnault 3056105182 MDL-8701 2007-03-01 02:54:20 +00:00
toyomoyo 7c596baca7 fixing xhtml issue 2007-03-01 02:46:55 +00:00
toyomoyo ef3df6f086 fixing xhtml strict issues and display issues in restore 2007-03-01 02:44:29 +00:00
moodler 9e0c47a5bc Changed course formats to use the new ajaxenabled() so that only tested browsers are enabled. MDL-8417 2007-03-01 02:39:45 +00:00
nicolasconnault 8e4e1d73bd *** empty log message *** 2007-03-01 02:37:42 +00:00
nicolasconnault 052fdabdbd Issue 8417:
Added support for array of tested browsers to be passed to ajaxenabled()
2007-03-01 02:04:44 +00:00
nicolasconnault b336fbda27 Safari 2.0 and Opera 9.0 are now detected and supported for YUI. However, preliminary tests show that drag&drop behaviour is very slow on Opera and user-unfriendly on both browsers. A YUI debug window also pops up on Safari.
I added a unit test for ajaxlib.php

Issue MDL-8417
2007-03-01 01:16:48 +00:00
nfreear ae2ed9974a Fixes bug MDL-8695 "Form 'required' icon is hidden", see commit 13 Jan (merged from HEAD.) 2007-02-28 18:14:18 +00:00
tjhunt 28e9a6e43c When restoring numerical questions, don't create duplicate unit definitions. 2007-02-28 17:18:14 +00:00
tjhunt 1d0a5c8ff5 Improve validation code to match the recent improvements in shortanswer validation.
Also do some validation on the units entered to stop duplicate units being defined.
2007-02-28 17:16:44 +00:00
tjhunt 19623c973c Minor improvement to validation code. 2007-02-28 17:15:23 +00:00
poltawski c2b7ac3fb7 More fixes for MDL-8582 2007-02-28 16:15:36 +00:00
tjhunt 76b58ae598 XHTML Strrrrrrict! 2007-02-28 15:35:02 +00:00
tjhunt 6fce318ec5 Bug with editing essay questions. 2007-02-28 15:21:41 +00:00
tjhunt e3455f160a Remove CVS conflict markers. 2007-02-28 15:16:12 +00:00
tjhunt 95e5c19295 Remove CVS confilt markers. 2007-02-28 15:11:54 +00:00
nfreear a78af87881 Partial fix for MDL-8668 - group upgrade - applying part of the patch (merged from HEAD). 2007-02-28 13:39:11 +00:00
tjhunt 34949d8dcb XHTML Strrrrrrict! on quiz module config page.
Fix errors when config changes are saved.
2007-02-28 12:24:39 +00:00
tjhunt 1589c98c56 Correct logic for stopping people using guest access from doing quizzes. 2007-02-28 11:34:36 +00:00
toyomoyo 68060caee6 replacing <fieldset> with <div> 2007-02-28 08:00:45 +00:00
moodler 4089c20bd1 Just added an ID tag 2007-02-28 07:58:01 +00:00
nicolasconnault cbc2417b31 Added tests for moodlelib::check_browser_version (MDL-8417)
Need to add more User Agent strings for testing.
2007-02-28 07:40:39 +00:00
nicolasconnault 40e2eda7ae Added support for Opera and Safari in check_browser_version (MDL-8417) 2007-02-28 07:39:46 +00:00
toyomoyo 414c6bd2e7 fix for MDL-8655, replacing <fieldset> with <div> to remove display problems 2007-02-28 07:10:58 +00:00
toyomoyo 8732dca153 fix for MDL-8688, question pics should default to '' 2007-02-28 06:15:23 +00:00
nicolasconnault 7c08ef3653 Fixed MDL-8582
Not sure if the hotpot module is converting ampersands correctly. $heading and $title are set up differently than in other modules: instead of outputting $course->title, a temporary $title variable is created and assigned that value. That made it difficult for me to decide whether it was already formatted elsewhere or not.

Also I didn't format_string() any of the variables included in $navigation rings, because I assume these strings get processed by print_navigation(), which includes format_string().
2007-02-28 05:36:13 +00:00
gbateson e696821ea4 redo changes for 8062: replace "document.form" with "document.getELementById('form')" 2007-02-28 05:15:13 +00:00
gbateson cb8e73e2c7 redo change for MDL-8675: remove superfluous double-quote 2007-02-28 05:05:42 +00:00
toyomoyo d6693a3400 fix for MDL-8576,MDL-8686, changing <fieldset> to <div> to solve display issues 2007-02-28 04:56:27 +00:00
gbateson 104189c1f4 cogmitting merged changes for lib.php (MDL-8675) and mod.html(MDL-8062) 2007-02-28 04:41:46 +00:00
toyomoyo a727be0829 fixing insert_instance so that it can comply with the formslib form 2007-02-28 04:11:05 +00:00
gbateson 083dad4922 corrected typo (superfluous double-quote) when inserting $CFG->frametarget (see MDL-8675) 2007-02-28 03:29:29 +00:00
gbateson 9f60b599b9 replace document.form with document.forms[form], because <form> now uses an "id" instead of a "name" attribute. (see MDL-8062) 2007-02-28 03:26:33 +00:00
toyomoyo 1b98048119 fix for MDL-8645, assignment due dates not written to db 2007-02-28 03:24:43 +00:00
martinlanghoff 74f350d482 MDL-7385 - stats_cron_daily() - If a module is missing, continue processing 2007-02-28 03:04:24 +00:00
martinlanghoff 042117ea4f Fixing MDL-6795 - Stats never runs. stats_monthly table gets very full - avoid double tz calculations in stats_getmidnight() 2007-02-28 02:51:26 +00:00
martinlanghoff 7ac2e04a44 Stopping warning and possible errors in graphlib.php caused by bugs in statsgraph.php
Ported from LDC (1.5) branch


Author: Andrew Walbran <andrew.walbran@catalyst.net.nz>
2007-02-28 00:32:22 +00:00
martinlanghoff 6575c6f5ad hotpot: Fixing db upgrade script
Note MySQL upgrade (earlier on by version)


Author: Andrew Walbran <andrew.walbran@catalyst.net.nz>
2007-02-28 00:28:58 +00:00
martinlanghoff bec90d263d (Fixing upgrade script) Only try to disable lams if it is installed
Author: Andrew Walbran <andrew.walbran@catalyst.net.nz>
2007-02-28 00:26:20 +00:00
martinlanghoff 9920530563 Fixing 1.5->1.7 upgrade bug (get_courses was used unnecessarily in upgrade process, and relies on roles)
Author: Andrew Walbran <andrew.walbran@catalyst.net.nz>
2007-02-28 00:20:48 +00:00
stronk7 63513603e7 Fixing RSS link to source. http://moodle.org/mod/forum/discuss.php?d=65762
Merged from MOODLE_17_STABLE
2007-02-27 18:21:08 +00:00
tjhunt 41d7faf891 MDL-8671 - better checking when creating short answer questions. Fix thanks to Joseph R?zeau. 2007-02-27 16:20:14 +00:00
tjhunt ecec5caee8 MDL-8671 - better checking when creating short answer questions. Fix thanks to Joseph R?zeau. 2007-02-27 16:20:11 +00:00
urs_hunkler 95a3fb3aad '3 changes for better quiz display - MDL-8576' 2007-02-27 15:52:58 +00:00
defacer 04adc7de38 Not needing this anymore, we now have Moodle Docs. 2007-02-27 14:43:09 +00:00
defacer 4854bec6cf Merging from MOODLE_16_STABLE:
Fix for MDL-4701: Event URLs now include anchor so that the event is immediately visible.
2007-02-27 14:35:28 +00:00
defacer 8e74a6eb9e Merging from MOODLE_16_STABLE:
Bugfix: skodak's fix for MDL-5991 is needed here as well.
2007-02-27 13:59:22 +00:00
tjhunt 7a201b247e Improve quiz editing screen layout a little bit based on a usability suggestion in the forums.
Also, fix uppercase tag names in the tab row CSS, which did not work at DEVELOPER debug level.
2007-02-27 13:59:10 +00:00
defacer 437ef94eb2 Changing email addresses that caught my eye in the comments. 2007-02-27 13:49:14 +00:00
gbateson 8e1e849480 removed invalid use of $CFG->frametarget, and restored the original $CFG->framename.(see MDL-8675) 2007-02-27 12:54:11 +00:00
defacer e790b61e38 Merging from MOODLE_17_STABLE:
Fix for MDL-8402:
$CFG->calendar_weekdays wasn't saved correctly and misbehaved.

I took the opportunity to rewrite a little HTML too.
2007-02-27 12:40:37 +00:00
skodak 551f0b5d7e MDL-8669 broken auth signup code; backported from HEAD 2007-02-27 10:25:55 +00:00
urs_hunkler dbd594ed15 'sideblock list alignment corrected for .list line 1025 onward and line 1057. Don't know what .unlist and .inline-list are used for. Somebody should check and correct those if necessary' 2007-02-27 07:42:28 +00:00
toyomoyo ab1736ab1f fixing wrong capability check 2007-02-27 05:46:57 +00:00
toyomoyo 9f39ff6d96 fix for MDL-8666, groups import broken 2007-02-27 05:40:05 +00:00
toyomoyo 96f56bc4ff fix for MDL-8674, fixing real player multimedia filter 2007-02-27 05:25:35 +00:00
nicolasconnault 5d4c573887 Corrected end of line delimiters 2007-02-27 05:05:39 +00:00
nicolasconnault f1ad20d929 Fixed 2 typos identified by Dan (guset instead of guest). MDL-8676 2007-02-27 04:20:26 +00:00
moodler bf522dad40 Checking in Dan's patch for MDL-8670, thanks Dan! 2007-02-27 00:58:47 +00:00
defacer 2273ddbb27 Merged from MOODLE_17_STABLE:
Bugfix: $CFG->calendar_adminseesall was not working at all, Moodle behaved
as if it were always on. Reported at http://moodle.org/mod/forum/discuss.php?d=65500.
2007-02-27 00:37:35 +00:00
andreabix 5f70ddb676 Added string for 'Hide All courses' setting. 2007-02-26 15:13:05 +00:00
defacer a8088232b1 Fixing notices, I should 've done grep "BLOCK_TYPE_NUKE" earlier. 2007-02-26 13:58:14 +00:00
defacer ff1b96e9f0 Killing BLOCK_NUKE constant, since Martin nuked nuke blocks. 2007-02-26 13:26:56 +00:00
nfreear 7ccb369f67 Follow-up fix for Bug MDL-8638 "Can't move groups between groupings" (merged from HEAD.) 2007-02-26 10:57:31 +00:00
moodler 2eb638be81 Added feature is an admin config to hide the "all courses" link from users ...
Eloy wrote this I belive.  I've not tested this well .... Andrea will.
2007-02-26 08:51:22 +00:00
nicolasconnault 2ded7bc2eb Fixed MDL-8654: Added a few missing language strings. The patch attached to this issue also contained a string to be removed from moodle.php, but I didn't apply it. 2007-02-26 07:12:50 +00:00
jamiesensei c799044c2c fix for (MDL-8449) Quiz start and close times should allow the teacher to select a time as well as a date. 2007-02-26 06:32:15 +00:00
moodler 660d3b9530 Automatic installer.php lang files by installer_builder (20070226) 2007-02-26 03:42:03 +00:00
toyomoyo 0a6a753a7f taking care of context_rel cache when moving a course across categories 2007-02-26 02:33:41 +00:00
mjollnir_ 1c7166a8d4 merged from MOODLE_17_STABLE: fixing MDL-8662 2007-02-26 00:18:29 +00:00
stronk7 71989c5d39 Delete one condition used while debugging.
Merged from HEAD
2007-02-25 20:37:33 +00:00
stronk7 5066b1258c Comenting one debug sentence introduced by error in las commit. MDL-8264 2007-02-25 20:21:44 +00:00
stronk7 9c221df743 Now the editor detects if the xml file has been locally modified
since loading it. Second part of MDL-8264
2007-02-25 20:17:36 +00:00
moodler 47fcfc7317 Tidied up alignment of category counts MDL-8583 2007-02-25 07:07:08 +00:00
defacer ffeeed9b32 Fix for MDL-8653:
When updating languages through a proxy, skip to the end of the HTTP headers
as defined by RFC 1945 instead of skipping exactly 12 lines of chaff.

Credit for patch 100% to Dan Poltawski.
2007-02-25 01:31:56 +00:00
defacer f943a78cbe Updating local language packs was breaking XHTML in the "results" screen. 2007-02-25 01:07:52 +00:00
defacer 0e2b6268f0 Merged from MOODLE_16_STABLE:
Fix for MDL-4940: Social Activities block disappears when editing course settings.
2007-02-24 23:31:22 +00:00
skodak 8e0b21b0b2 MDL-8582 - reverted changes in print_navigation(), needs some minor rewrite to use print_title(); backported from HEAD 2007-02-24 10:20:35 +00:00
skodak 45864cc86e email selfregistration enabled by default again - thanks Eloy for noticing the problem; backported from HEAD 2007-02-24 09:49:51 +00:00
moodler ef8197d3af Automatic installer.php lang files by installer_builder (20070224) 2007-02-24 03:39:50 +00:00
stronk7 686bbac879 Only validate against schema if we have a schema. ;-) 2007-02-23 23:56:55 +00:00
stronk7 9ee705e74a Now XMLDB Editor performs check/validation of XML files
before loading them using the best parser available.
MDL-7726 and first part of MDL-8264
2007-02-23 20:57:06 +00:00
skodak a453501cdc MDL-8639 fixed installation notices; backported from HEAD 2007-02-23 20:26:20 +00:00
mark-nielsen af4a1292af Fixed the width of the box 2007-02-23 20:17:36 +00:00
mark-nielsen a5c3aabca8 Fixed some major display issues casued by the fieldset with class invisiblefieldset 2007-02-23 20:12:07 +00:00
skodak e0d92ff281 MDL-8582 - reverted changes in s() and added new function format_title() instead; backported from HEAD 2007-02-23 20:11:21 +00:00
mark-nielsen 03abe79e77 [Fixed] MDL-8609: Fieldset was added incorrectly causing the branch table buttons to "hide" 2007-02-23 19:23:15 +00:00
mark-nielsen b17d944267 Continued fix for MDL-8610 2007-02-23 18:54:27 +00:00
mark-nielsen 7aecee0977 [Fixed] MDL-8610: Updated code to work with the new tab API 2007-02-23 18:39:13 +00:00
stronk7 9988588aed Some more notices are now out. Caused by current_language() 2007-02-23 18:15:56 +00:00
mark-nielsen a7bd7637b4 Merged in fix for MDL-8637 2007-02-23 17:55:26 +00:00
nfreear dea80d1f30 Fixes MDL-8638 "Can't move groups between groupings" (merged from HEAD). 2007-02-23 17:50:15 +00:00
stronk7 60eaa2e72d Fixing course & category boxes in main page. 2007-02-23 16:38:10 +00:00
skodak 3364157a4b removed deprecated flag from addslashes_js() MDL-8582 and some more backporting from HEAD 2007-02-23 09:19:11 +00:00
moodler 7d728003ae Some beautification fixes for MDL-8583 2007-02-23 08:17:54 +00:00
moodler d1451e4f0e Cleaned up some strings for LDAP enrolment 2007-02-23 06:54:24 +00:00
moodler 0bc4168200 Fixed up some padding MDL-8285 2007-02-23 06:45:42 +00:00
moodler 6c6f7c851b Fixed missing strings etc on the database authentication settings page MDL-8285 2007-02-23 06:43:01 +00:00
toyomoyo 4bba5a6f44 fix for MDL-8582, adding s() to $title in print_header() 2007-02-23 05:57:58 +00:00
toyomoyo 4404eb3b01 removing 2 s() calls as they cause problems in header for survey 2007-02-23 05:45:53 +00:00
toyomoyo a65d282818 fix for MDL-8582, adding s() to course_list block 2007-02-23 05:44:36 +00:00
toyomoyo 8aee86e196 taking out s() on header 2007-02-23 05:22:22 +00:00
toyomoyo afb3efd947 checking in nick's patch for MDL-8582 2007-02-23 05:05:56 +00:00
toyomoyo 4987fdbaef fix for MDL-5736, retained search string problem 2007-02-23 03:54:49 +00:00
defacer 8f83745255 Merged from HEAD:
Fixing ugly blue border around help icon during installation
2007-02-23 01:44:22 +00:00
defacer 2f6b6e9241 Merging from HEAD:
Fixing a few tons of notices when installing
if error_reporting = E_ALL in php.ini.
2007-02-23 01:37:20 +00:00
toyomoyo 577a9f5805 fix for MDL-8585, add admin setting for $CFG->latinexcelexport 2007-02-23 01:22:15 +00:00
stronk7 7f871f939b Fix one small config name. 2007-02-23 00:35:20 +00:00
stronk7 73da033354 Now the "common settings" form in admin/auth looks like
one standard admin form.
2007-02-23 00:25:55 +00:00
stronk7 b94129bc1c Fixing the auth plugins visual. to use the flexible table properly. 2007-02-22 22:59:47 +00:00
skodak e8c5ac5251 MDL-8590 auth cleanup - reset password cleanup+fixes; backported from HEAD 2007-02-22 22:25:18 +00:00
koenr de4add7e1e fixed two typo's 2007-02-22 20:44:54 +00:00
stronk7 617ef2a336 "flexible" is now out from set_attribute() because
flexible tables are adding it automatically.
Point 3.3 of MDL-8419
2007-02-22 18:47:18 +00:00
stronk7 a55eff0fab All flexible tables will have the "flexible" class. Point 3.1 of MDL-8419 2007-02-22 18:25:21 +00:00
stronk7 a081748db4 admin modules tables styling. Points 1 & 2. MDL-8419
Backporting from HEAD.
2007-02-22 17:55:46 +00:00
sam_marshall d0afc97d3e MDL-8621 Fixed wiki locking 2007-02-22 17:46:13 +00:00
nfreear 4f7e719598 Fixes for Bug MDL-8617 "Implement groupings & course modules..." - localised mods (merged from HEAD). 2007-02-22 15:40:28 +00:00
toyomoyo ad2f4cff93 fix for MDL-8577, message textarea too big to fit 2007-02-22 03:21:49 +00:00
skodak 8bd763d2da MDL-8590 auth cleanup - part 8; backported from HEAD 2007-02-21 21:57:09 +00:00
skodak ea40ec3c8f MDL-8590 auth cleanup - part 7 and MDL-8598; backported from HEAD 2007-02-21 21:52:31 +00:00
skodak 20f2564695 MDL-8590 auth cleanup - part 6; backported from HEAD 2007-02-21 21:45:14 +00:00
thepurpleblob cc01353321 MDL-8602
Don't count modules where course=0 (ie, they must exist in real courses)
2007-02-21 14:54:18 +00:00
thepurpleblob 9cf078114f MDL-8563
$question->answer was swapped for $question->correctanswer in questiontype
for some reason! Compensated for in format type.
2007-02-21 14:18:41 +00:00
thepurpleblob 0542e675b9 D'oh - counting $totalcount wrongly (duplicate courses are ignored) 2007-02-21 13:08:27 +00:00
thepurpleblob 3cae7304e5 Slightly more helpful message if no courses can be shown. 2007-02-21 13:02:26 +00:00
thepurpleblob 59194f400e Whoops... missed setting $totalcount var 2007-02-21 11:56:34 +00:00
thepurpleblob 7577a51e48 MDL-8087
Modules and Blocks lists now link to course search page for
actual instances.
2007-02-21 11:41:39 +00:00
nfreear cd735125df Followup fix for Bug MDL-8507 "Local language pack-name can appear in language code" (Merged from HEAD). 2007-02-21 10:47:02 +00:00
stronk7 c6ce18c221 Bump to 1.8 Beta 2007-02-21 08:31:44 +00:00
urs_hunkler 4b8a063ad3 corrected hover gif on right side 2007-02-21 07:54:37 +00:00
toyomoyo 545fa9f30f replacing a trouble making fieldset with div 2007-02-21 00:58:49 +00:00
urs_hunkler 73de424b0b 'some tab display enhancements' 2007-02-20 21:01:23 +00:00
urs_hunkler 9bfb8bdbe3 'removed the uh changes comments' 2007-02-20 20:19:17 +00:00
skodak 154965a441 MDL-8590 auth cleanup - part 5; backported from HEAD 2007-02-20 17:31:37 +00:00
skodak 4b5fbbed17 MDL-8590 auth cleanup - part 4; backported from HEAD 2007-02-20 17:28:44 +00:00
skodak a2d6e38bd9 MDL-8590 auth cleanup - part 3; backported from HEAD 2007-02-20 17:23:08 +00:00
skodak 4ac48edb9b MDL-8590 auth cleanup - part 2; backported from HEAD 2007-02-20 17:13:35 +00:00
skodak 9f9743cb88 MDL-8590 auth cleanup - part 1; backported from HEAD 2007-02-20 17:06:47 +00:00
skodak 255e7cc375 file auth.php was added on branch MOODLE_18_STABLE on 2007-02-20 17:06:48 +0000 2007-02-20 17:03:43 +00:00
tjhunt 1c63d8955d Another wretched adslashes problem. Roll on placeholder. Thanks to Howard Miller. Merged from MOODLE_17_STABLE. 2007-02-20 15:18:22 +00:00
donal72 b74a216ad1 MNet goes from ISO8859-1 -> UTF-8; #MDL-8514 MDL-8514 2007-02-20 02:05:31 +00:00
lamsdev 41a5673659 Fixed javascript to be valid xhtml strict 2007-02-20 01:48:22 +00:00
tjhunt 56e1965f4f MDL-4793 - Option to show question text in the question bank. Also, fix layout problems on the quiz editing screen. 2007-02-20 01:46:01 +00:00
lamsdev d1e3c0f2ec Changed from using lib/soap/nusoap.lib library directly to using lib/soaplib.php.
Fix for MDL-6224
2007-02-20 01:11:45 +00:00
toyomoyo 7b8c690ecf applying nick's patch to MDL-8534, typo in restorelib.php 2007-02-20 01:06:20 +00:00
stronk7 f800bf46f6 Changing iso-8859-1 encoding of excel files to windows-1252. It adds support for
some more (a few) characters. MDL-7993

Merged from MOODLE_17_STABLE
2007-02-19 23:23:50 +00:00
nfreear fdcabcb3f1 Followup fix for Bug MDL-8434 "...can't delete groups" - delete _groupings_ (merged from HEAD). 2007-02-19 16:41:40 +00:00
moodler 28b7f29fbc Removed raquo from continue buttons MDL-8528 2007-02-19 13:33:56 +00:00
ethem 7575a38529 Removed unnecesary code. 2007-02-19 12:07:06 +00:00
jmg324 ca57f3dd0d MDL-8571 fixing broken links in help index 2007-02-19 11:38:55 +00:00
skodak c819e5cadd MDL-8570 broken flv player embedding and outdate player; backported from HEAD 2007-02-19 11:30:08 +00:00
tjhunt 872964f140 MDL-8145 - Add more options to the add random questions dropdown. 2007-02-19 04:24:02 +00:00
moodler 28a1d6e3c9 Automatic installer.php lang files by installer_builder (20070219) 2007-02-19 03:36:24 +00:00
moodler fc1e2380e4 SMall formatting fix, no code change 2007-02-19 02:27:55 +00:00
skodak eada4f02cc MDL-8560 Chameleon not loading pix list on start page; backported from HEAD 2007-02-18 13:01:42 +00:00
moodler 70cf311253 Fixed selector menus and strings etc at the top MDL-8558 2007-02-18 12:58:44 +00:00
moodler b0f625ebf3 I don't know why this function wasn't inheriting automatically but it works now ... 2007-02-18 06:11:41 +00:00
moodler 9c9c50d8ec Fixed a typo causing Feedback to be printed before the header 2007-02-18 05:50:43 +00:00
koenr e2f5df2d6f MDL-8400 Changed currency of peru to Nuevo Sol 2007-02-17 23:37:51 +00:00
tjhunt 3ca50b0dd3 MDL-8154 - Typo in course search code. Fix thanks to Anthony Borrow. 2007-02-17 17:16:50 +00:00
stronk7 1ecce737cc sync_users() now working both under MSSQL and Oracle. Big credits to
Jay Lee for his cool patch about MDL-7525 MDL-8023 MDL-8153
2007-02-17 01:24:16 +00:00
nfreear f882530904 Fixes bug MDL-8059 "... won't restore - error A required parameter (id) was missing" 2007-02-16 15:57:05 +00:00
nfreear 6a800f3825 Fixes bug MDL-8059 "... won't restore - error A required parameter (id) was missing", reapplied martinl's 16/1 Strict fix (merged from HEAD). 2007-02-16 15:55:59 +00:00
nfreear fb6c31f207 Fixes bug MDL-8059 "... won't restore - error A required parameter (id) was missing" (merged from HEAD). 2007-02-16 15:55:34 +00:00
nfreear 3d5bd70fea Fixes Bug MDL-8545 "Restore bugs, groups-members and role assignments" (merged from HEAD) 2007-02-16 14:47:58 +00:00
sam_marshall c32580cea0 MDL-8544 Fixed wiki locking require_js usage 2007-02-16 14:21:13 +00:00
skodak 88178d9b78 MDL-8542 External db auth cleanup
* some more sync script fixing

backported from HEAD
2007-02-16 10:56:21 +00:00
skodak 5553359aa4 MDL-8542 External db auth cleanup
* configurable encoding conversions
* fixed handling of magic quotes
* proper sybase quoting
* adodb debug mode
* fixed language strings
* sha1 support
* connection setup command (use names 'utf8')

backported from HEAD
* mysqli support
* form field labels
* general cleanup and minor fixing
2007-02-16 10:48:07 +00:00
skodak 503fc99f88 added recursive addslashes; backported from HEAD 2007-02-16 09:39:26 +00:00
vyshane ae21a6519b Merged from 1.7. 2007-02-16 08:43:10 +00:00
moodler cfc90a8c60 Automatic installer.php lang files by installer_builder (20070216) 2007-02-16 03:42:00 +00:00
toyomoyo a3572566d3 adding missing capabilities check 2007-02-16 02:40:05 +00:00
toyomoyo c8f324143a fixed wrong context, it should be possible to manage a single block 2007-02-16 01:24:58 +00:00
skodak bf4846358f fixed problem on user edit page when user not fully setup, reverted guest handling; backported from HEAD 2007-02-15 22:04:51 +00:00
skodak e3c1819c36 fixed problem on user edit page when user not fully setup; backported from HEAD 2007-02-15 20:49:06 +00:00
skodak fd95bf5153 fixed problems with undefined $USER->mnethostid causing page errors in IE during logout; backported from HEAD 2007-02-15 20:42:10 +00:00
nfreear 7342c508e7 Fixes Bug MDL-8533 "Can't add a user to more than 1 group in groupings" (merge from HEAD) 2007-02-15 14:55:34 +00:00
skodak d41d24ce4f MDL-7722 fixed wrong cleaning in backup paths; backported from HEAD 2007-02-15 09:45:37 +00:00
toyomoyo 37e936ab77 fix for MDL-8505 and some other assignemnt issues 2007-02-15 08:15:54 +00:00
moodler d8b289ae95 Latest tags 2007-02-15 07:03:11 +00:00
moodler 635b51757a Fixed a typo 2007-02-15 07:00:20 +00:00
moodler b7b0aa01a5 New strings for environment check MDL-8527 2007-02-15 06:32:10 +00:00
moodler 837a9c5c12 Added environment check to all upgrades MDL-8527 2007-02-15 06:29:32 +00:00
vyshane fe0bcf738c Merged from 1.7. 2007-02-15 06:14:00 +00:00
toyomoyo 3d18158bc8 fix for MDL-8517, fixing xhtml error for redirects 2007-02-15 05:10:59 +00:00
toyomoyo 1e35f5f18e fix for MDL-5829, blocks on blog page can not be minimized 2007-02-15 03:20:28 +00:00
moodler c3c9612c1c More fixes for format_time().. I removed weeks because they are a bit of a
language pack problem  (we already have a string 'week' = "Week" which we can not
re-use)
2007-02-15 03:13:32 +00:00
moodler e5da5f70ef FIxed some format_time changes that I checked in accidentally 2007-02-15 02:51:40 +00:00
moodler 864a2b3414 Can now login usefull as someone even if they require password change 2007-02-15 02:42:16 +00:00
stronk7 4eec1cbcee PHP 4 assignment is by value so course_header (containing edited names)
wasn't being modified. MDL-8298

Merged from MOODLE_17_STABLE
2007-02-14 23:51:54 +00:00
skodak d8f605d675 MDL-8268 fixed block get_string, patch by Mark Nielsen; backported from HEAD 2007-02-14 23:01:28 +00:00
skodak b3cac2f0e8 MDL-8268 cleanup in get_user_capability_course(); backported from HEAD 2007-02-14 22:54:03 +00:00
skodak 930eaf9ec8 MDL-8268 fixed get_user_capability_course(), patch by Mark Nielsen; backported from HEAD 2007-02-14 22:49:40 +00:00
skodak b3bef28cc0 notice_yesno() buttons now centered; merged from HEAD 2007-02-14 22:13:14 +00:00
skodak 444014a57e MDL-8520 resource navigation borked by accessibility frame changes; backported from HEAD 2007-02-14 22:07:02 +00:00
skodak 982a81c41f MDL-8519 teamspeak link support in resource mod; backported from HEAD 2007-02-14 21:32:59 +00:00
skodak fd9e9c6404 MDL-8518 incorrect link to frontpage settings from course summary block; backported from HEAD 2007-02-14 21:04:54 +00:00
skodak e8e6e54b7d MDL-8469 - 192M is much nicer than 196M; backported from HEAD 2007-02-14 20:59:14 +00:00
skodak 67faedb211 MDL-8469 increase memory limit everywhere due to changed calculation of used memory in PHP 5.2.x - the real memory useage is the same, but the reported size of used memory is now more accurate; backported from HEAD 2007-02-14 20:54:27 +00:00
1010 changed files with 38428 additions and 41089 deletions
+142 -118
View File
@@ -7,117 +7,122 @@
*
*/
require_once dirname(dirname(__FILE__)) . '/config.php';
require_once $CFG->libdir . '/tablelib.php';
require_once('../config.php');
require_once($CFG->libdir.'/adminlib.php');
require_once($CFG->libdir.'/tablelib.php');
$adminroot = admin_get_root();
admin_externalpage_setup('userauthentication', $adminroot);
$action = optional_param('action', '', PARAM_ACTION);
$auth = optional_param('auth', '', PARAM_SAFEDIR);
// get currently installed and enabled auth plugins
$authsavailable = get_list_of_plugins('auth');
if (empty($CFG->auth_plugins_enabled)) {
set_config('auth_plugins_enabled', $CFG->auth);
$CFG->auth_plugins_enabled = $CFG->auth;
}
$authsenabled = explode(',', $CFG->auth_plugins_enabled);
// save form
if ($form = data_submitted()) {
if (!confirm_sesskey()) {
error(get_string('confirmsesskeybad', 'error'));
}
if (! isset($form->guestloginbutton)) {
$form->guestloginbutton = 1;
}
if (empty($form->alternateloginurl)) {
$form->alternateloginurl = '';
}
if (empty($form->register)) {
$form->register = 'manual';
}
set_config('guestloginbutton', $form->guestloginbutton);
set_config('alternateloginurl', $form->alternateloginurl);
set_config('auth', $form->register);
// add $CFG->auth to auth_plugins_enabled list
if (!array_search($form->register, $authsenabled)) {
$authsenabled[] = $form->register;
$authsenabled = array_unique($authsenabled);
set_config('auth_plugins_enabled', implode(',', $authsenabled));
}
//revert auth_plugins_enabled
if (isset($CFG->auth_plugins_enabled)) {
set_config('auth', $CFG->auth_plugins_enabled);
delete_records('config', 'name', 'auth_plugins_enabled');
unset($CFG->auth_plugins_enabled);
}
get_enabled_auth_plugins(true); // fix the list of enabled auths
if (empty($CFG->auth)) {
$authsenabled = array();
} else {
$authsenabled = explode(',', $CFG->auth);
}
if (!isset($CFG->registerauth)) {
set_config('registerauth', '');
}
if (!isset($CFG->auth_instructions)) {
set_config('auth_instructions', '');
}
if (!empty($auth) and !exists_auth_plugin($auth)) {
error(get_string('pluginnotinstalled', 'auth', $auth), $url);
}
// grab GET/POST parameters
$params = new object();
$params->action = optional_param('action', '', PARAM_ACTION);
$params->auth = optional_param('auth', $CFG->auth, PARAM_ALPHANUM);
////////////////////////////////////////////////////////////////////////////////
// process actions
switch ($params->action) {
$status = '';
switch ($action) {
case 'save':
if (data_submitted() and confirm_sesskey()) {
// save settings
set_config('guestloginbutton', required_param('guestloginbutton', PARAM_BOOL));
set_config('alternateloginurl', stripslashes(trim(required_param('alternateloginurl', PARAM_RAW))));
set_config('registerauth', required_param('register', PARAM_SAFEDIR));
set_config('auth_instructions', stripslashes(trim(required_param('auth_instructions', PARAM_RAW))));
// enable registerauth in $CFG->auth if needed
if (!empty($CFG->registerauth) and !in_array($CFG->registerauth, $authsenabled)) {
$authsenabled[] = $CFG->registerauth;
set_config('auth', implode(',', $authsenabled));
}
$status = get_string('changessaved');
}
break;
case 'disable':
// remove from enabled list
$key = array_search($params->auth, $authsenabled);
if ($key !== false and $params->auth != $CFG->auth) {
// remove from enabled list
$key = array_search($auth, $authsenabled);
if ($key !== false) {
unset($authsenabled[$key]);
set_config('auth_plugins_enabled', implode(',', $authsenabled));
set_config('auth', implode(',', $authsenabled));
}
if ($auth == $CFG->registerauth) {
set_config('registerauth', '');
}
break;
case 'enable':
// check auth plugin is valid first
if (!exists_auth_plugin($params->auth)) {
error(get_string('pluginnotinstalled', 'auth', $params->auth), $url);
}
// add to enabled list
if (!array_search($params->auth, $authsenabled)) {
$authsenabled[] = $params->auth;
if (!in_array($auth, $authsenabled)) {
$authsenabled[] = $auth;
$authsenabled = array_unique($authsenabled);
set_config('auth_plugins_enabled', implode(',', $authsenabled));
set_config('auth', implode(',', $authsenabled));
}
break;
case 'down':
$key = array_search($params->auth, $authsenabled);
$key = array_search($auth, $authsenabled);
// check auth plugin is valid
if ($key === false) {
error(get_string('pluginnotenabled', 'auth', $params->auth), $url);
error(get_string('pluginnotenabled', 'auth', $auth), $url);
}
// move down the list
if ($key < (count($authsenabled) - 1)) {
$fsave = $authsenabled[$key];
$authsenabled[$key] = $authsenabled[$key + 1];
$authsenabled[$key + 1] = $fsave;
set_config('auth_plugins_enabled', implode(',', $authsenabled));
set_config('auth', implode(',', $authsenabled));
}
break;
case 'up':
$key = array_search($params->auth, $authsenabled);
$key = array_search($auth, $authsenabled);
// check auth is valid
if ($key === false) {
error(get_string('pluginnotenabled', 'auth', $params->auth), $url);
error(get_string('pluginnotenabled', 'auth', $auth), $url);
}
// move up the list
if ($key >= 1) {
$fsave = $authsenabled[$key];
$authsenabled[$key] = $authsenabled[$key - 1];
$authsenabled[$key - 1] = $fsave;
set_config('auth_plugins_enabled', implode(',', $authsenabled));
set_config('auth', implode(',', $authsenabled));
}
break;
case 'save':
// save settings
set_config('auth_plugins_enabled', implode(',', $authsenabled));
set_config('auth', $authsenabled[0]);
redirect("auth.php?sesskey=$USER->sesskey", get_string('changessaved'), 1);
break;
default:
break;
@@ -132,43 +137,52 @@ $txt->updown = "$txt->up/$txt->down";
// construct the display array, with enabled auth plugins at the top, in order
$displayauths = array();
$registrationauths = array();
$registrationauths['manual'] = $txt->disable;
$registrationauths[''] = $txt->disable;
foreach ($authsenabled as $auth) {
$displayauths[$auth] = get_string("auth_{$auth}title", 'auth');
$authplugin = get_auth_plugin($auth);
if (method_exists($authplugin, 'user_signup')) {
$displayauths[$auth] = get_string("auth_{$auth}title", 'auth');
if ($authplugin->can_signup()) {
$registrationauths[$auth] = get_string("auth_{$auth}title", 'auth');
}
}
}
foreach ($authsavailable as $auth) {
if (!array_key_exists($auth, $displayauths)) {
$displayauths[$auth] = get_string("auth_{$auth}title", 'auth');
if (array_key_exists($auth, $displayauths)) {
continue; //already in the list
}
$authplugin = get_auth_plugin($auth);
if (method_exists($authplugin, 'user_signup')) {
$displayauths[$auth] = get_string("auth_{$auth}title", 'auth');
if ($authplugin->can_signup()) {
$registrationauths[$auth] = get_string("auth_{$auth}title", 'auth');
}
}
}
// build the display table
$table = new flexible_table('auth_admin_table');
$table->define_columns(array('name', 'enable', 'order', 'settings'));
$table->column_style('enable', 'text-align', 'center');
$table->column_style('order', 'text-align', 'center');
$table->column_style('settings', 'text-align', 'center');
$table->define_headers(array($txt->name, $txt->enable, $txt->updown, $txt->settings));
$table->define_baseurl("{$CFG->wwwroot}/{$CFG->admin}/auth.php");
$table->set_attribute('id', 'blocks');
$table->set_attribute('class', 'flexible generaltable generalbox');
$table->set_attribute('style', 'margin:auto;');
$table->set_attribute('cellpadding', '5');
$table->set_attribute('class', 'generaltable generalbox boxaligncenter boxwidthwide');
$table->setup();
//add always enabled plugins first
$displayname = "<span>".$displayauths['manual']."</span>";
$settings = "<a href=\"auth_config.php?sesskey={$USER->sesskey}&amp;auth=manual\">{$txt->settings}</a>";
$table->add_data(array($displayname, '', '', $settings));
$displayname = "<span>".$displayauths['nologin']."</span>";
$settings = "<a href=\"auth_config.php?sesskey={$USER->sesskey}&amp;auth=nologin\">{$txt->settings}</a>";
$table->add_data(array($displayname, '', '', $settings));
// iterate through auth plugins and add to the display table
$updowncount = 1;
$authcount = count($authsenabled);
$url = "auth.php?sesskey=" . sesskey();
foreach ($displayauths as $auth => $name) {
if ($auth == 'manual' or $auth == 'nologin') {
continue;
}
// hide/show link
if (in_array($auth, $authsenabled)) {
$hideshow = "<a href=\"$url&amp;action=disable&amp;auth=$auth\">";
@@ -204,7 +218,7 @@ foreach ($displayauths as $auth => $name) {
}
++ $updowncount;
}
// settings link
$settings = "<a href=\"auth_config.php?sesskey={$USER->sesskey}&amp;auth=$auth\">{$txt->settings}</a>";
@@ -214,65 +228,75 @@ foreach ($displayauths as $auth => $name) {
// output form
admin_externalpage_print_header($adminroot);
//print stus messages
if ($status !== '') {
notify($status, 'notifysuccess');
}
print_simple_box(get_string('configauthenticationplugins', 'admin'), 'center', '700');
echo "<form $CFG->frametarget id=\"authmenu\" method=\"post\" action=\"auth.php\">";
echo "<fieldset class=\"invisiblefieldset\"><input type=\"hidden\" name=\"sesskey\" value=\"".$USER->sesskey."\" /></fieldset>";
print_table($table);
$table->print_html();
////////////////////////////////////////////////////////////////////////////////
$guestoptions = array();
$guestoptions[0] = get_string("hide");
$guestoptions[1] = get_string("show");
echo '<hr />';
echo '<form '.$CFG->frametarget.' id="adminsettings" method="post" action="auth.php">';
echo '<div class="settingsform">';
print_heading(get_string('auth_common_settings', 'auth'));
echo '<table cellspacing="0" cellpadding="5" border="0" style="margin-left:auto;margin-right:auto">';
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
echo '<input type="hidden" name="action" value="save" />';
echo '<fieldset>';
##echo '<table cellspacing="0" cellpadding="5" border="0" style="margin-left:auto;margin-right:auto">';
// User self registration
echo "<tr valign=\"top\">\n";
echo "<td align=\"right\" style=\"white-space:nowrap\">\n";
print_string("selfregistration", "auth");
echo ":</td>\n";
echo "<td>\n";
choose_from_menu($registrationauths, "register", $CFG->auth, "");
echo "</td>\n";
echo "<td>\n";
print_string("selfregistration_help", "auth");
echo "</td></tr>\n";
echo '<div class="form-item" id="admin-register">';
echo '<label for = "menuregister">' . get_string("selfregistration", "auth");
echo '<span class="form-shortname">registerauth</span>';
echo '</label>';
choose_from_menu($registrationauths, "register", $CFG->registerauth, "");
echo '<div class="description">' . get_string("selfregistration_help", "auth") . '</div>';
echo '</div>';
// Login as guest button enabled
echo "<tr valign=\"top\">\n";
echo "<td style=\"white-space:nowrap;text-align:right\">\n";
print_string("guestloginbutton", "auth");
echo ":</td>\n";
echo "<td>\n";
echo '<div class="form-item" id="admin-guestloginbutton">';
echo '<label for = "menuguestloginbutton">' . get_string("guestloginbutton", "auth");
echo '<span class="form-shortname">guestloginbutton</span>';
echo '</label>';
choose_from_menu($guestoptions, "guestloginbutton", $CFG->guestloginbutton, "");
echo "</td>\n";
echo "<td>\n";
print_string("showguestlogin","auth");
echo "</td></tr>\n";
echo '<div class="description">' . get_string("showguestlogin", "auth") . '</div>';
echo '</div>';
/// An alternate url for the login form. It means we can use login forms that are integrated
/// into non-moodle pages
echo "<tr valign=\"top\">\n";
echo "<td align=\"right\" style=\"white-space:nowrap\">\n";
print_string('alternateloginurl', 'auth');
echo "</td>\n";
echo "<td>\n";
echo '<input type="text" size="40" name="alternateloginurl" alt="'.get_string('alternateloginurl', 'auth').'" value="'.$CFG->alternateloginurl."\" />\n";
echo "</td>\n";
echo "<td>\n";
print_string('alternatelogin', 'auth', htmlspecialchars($CFG->wwwroot.'/login/index.php'));
echo "</td>\n";
echo "</tr>\n";
echo '<div class="form-item" id="admin-alternateloginurl">';
echo '<label for = "alternateloginurl">' . get_string("alternateloginurl", "auth");
echo '<span class="form-shortname">alternateloginurl</span>';
echo '</label>';
echo '<input type="text" size="60" name="alternateloginurl" id="alternateloginurl" value="'.$CFG->alternateloginurl."\" />\n";
echo '<div class="description">' . get_string("alternatelogin", "auth", htmlspecialchars($CFG->wwwroot.'/login/index.php')) . '</div>';
echo '</div>';
echo "</table>\n";
/// Instructions about login/password
/// to be showed to users
echo '<div class="form-item" id="admin-auth_instructions">';
echo '<label for = "auth_instructions">' . get_string("instructions", "auth");
echo '<span class="form-shortname">auth_instructions</span>';
echo '</label>';
echo '<textarea cols="30" rows="4" name="auth_instructions" id="auth_instructions">'.s($CFG->auth_instructions)."</textarea>\n";
echo '<div class="description">' . get_string("authinstructions", "auth") . '</div>';
echo '</div>';
echo '</fieldset>';
////////////////////////////////////////////////////////////////////////////////
echo '<div style="text-align:center"><input type="submit" value="'.get_string('savechanges').'" /></div>';
echo '<div class="form-buttons"><input class="form-submit" type="submit" value="'.get_string('savechanges', 'admin').'" /></div>';
echo '</div>';
echo '</form>';
admin_externalpage_print_footer($adminroot);
+27 -23
View File
@@ -2,13 +2,13 @@
/**
* Edit configuration for an individual auth plugin
*/
require_once '../config.php';
require_once $CFG->libdir.'/adminlib.php';
$adminroot = admin_get_root();
admin_externalpage_setup('userauthentication', $adminroot);
$auth = optional_param('auth', '', PARAM_SAFEDIR);
$auth = required_param('auth', PARAM_SAFEDIR);
$authplugin = get_auth_plugin($auth);
$err = array();
@@ -19,9 +19,9 @@ if ($frm = data_submitted()) {
error(get_string('confirmsesskeybad', 'error'));
}
if (method_exists($authplugin, 'validate_form')) {
$authplugin->validate_form($frm, $err);
}
$frm = stripslashes_recursive($frm);
$authplugin->validate_form($frm, $err);
if (count($err) == 0) {
@@ -33,19 +33,19 @@ if ($frm = data_submitted()) {
if (preg_match('/^lockconfig_(.+?)$/', $name, $matches)) {
$plugin = "auth/$auth";
$name = $matches[1];
if (!set_config($name, $value, $plugin)) {
notify("Problem saving config $name as $value for plugin $plugin");
if (!set_config($name, $value, $plugin)) {
error("Problem saving config $name as $value for plugin $plugin");
}
}
}
redirect("auth.php?sesskey=$USER->sesskey", get_string("changessaved"), 1);
redirect("auth.php");
exit;
}
} else {
foreach ($err as $key => $value) {
$focus = "form.$key";
}
}
}
} else {
$frm = get_config("auth/$auth");
}
@@ -63,6 +63,7 @@ admin_externalpage_print_header($adminroot);
// choose an authentication method
echo "<form $CFG->frametarget id=\"authmenu\" method=\"post\" action=\"auth_config.php\">\n";
echo "<div>\n";
echo "<input type=\"hidden\" name=\"sesskey\" value=\"".$USER->sesskey."\" />\n";
echo "<input type=\"hidden\" name=\"auth\" value=\"".$auth."\" />\n";
@@ -73,9 +74,10 @@ print_simple_box_start('center', '60%', '', 5, 'informationbox');
print_string("auth_{$auth}description", 'auth');
print_simple_box_end();
echo "<hr />\n";
$authplugin->config_form($frm, $err);
$authplugin->config_form($frm, $err, $user_fields);
print_simple_box_end();
echo '<center><p><input type="submit" value="' . get_string("savechanges") . "\" /></p></center>\n";
echo '<p style="text-align: center"><input type="submit" value="' . get_string("savechanges") . "\" /></p>\n";
echo "</div>\n";
echo "</form>\n";
admin_externalpage_print_footer($adminroot);
@@ -86,7 +88,7 @@ exit;
// Good enough for most auth plugins
// but some may want a custom one if they are offering
// other options
// Note: lockconfig_ fields have special handling.
// Note: lockconfig_ fields have special handling.
function print_auth_lock_options ($auth, $user_fields, $helptext, $retrieveopts, $updateopts) {
echo '<tr><td colspan="3">';
@@ -104,7 +106,7 @@ function print_auth_lock_options ($auth, $user_fields, $helptext, $retrieveopts,
'onlogin' => get_string('update_onlogin', 'auth'));
$updateextoptions = array('0' => get_string('update_never', 'auth'),
'1' => get_string('update_onupdate', 'auth'));
$pluginconfig = get_config("auth/$auth");
// helptext is on a field with rowspan
@@ -138,30 +140,32 @@ function print_auth_lock_options ($auth, $user_fields, $helptext, $retrieveopts,
$fieldname = get_string($fieldname);
}
echo '<tr valign="top"><td align="right">';
echo $fieldname;
echo '</td><td>';
if ($retrieveopts) {
$varname = 'field_map_' . $field;
echo "<input name=\"lockconfig_{$varname}\" type=\"text\" size=\"30\" value=\"{$pluginconfig->$varname}\" />";
echo '<div align="right">';
echo get_string('auth_updatelocal', 'auth') . '&nbsp;&nbsp;';
echo '<tr valign="top"><td align="right">';
echo '<label for="lockconfig_'.$varname.'">'.$fieldname.'</label>';
echo '</td><td>';
echo "<input id=\"lockconfig_{$varname}\" name=\"lockconfig_{$varname}\" type=\"text\" size=\"30\" value=\"{$pluginconfig->$varname}\" />";
echo '<div style="text-align: right">';
echo '<label for="menulockconfig_field_updatelocal_'.$field.'">'.get_string('auth_updatelocal', 'auth') . '</label>&nbsp;';
choose_from_menu($updatelocaloptions, "lockconfig_field_updatelocal_{$field}", $pluginconfig->{"field_updatelocal_$field"}, "");
echo '<br />';
if ($updateopts) {
echo get_string('auth_updateremote', 'auth') . '&nbsp;&nbsp;';
'&nbsp;&nbsp;';
echo '<label for="menulockconfig_field_updateremote_'.$field.'">'.get_string('auth_updateremote', 'auth') . '</label>&nbsp;';
choose_from_menu($updateextoptions, "lockconfig_field_updateremote_{$field}", $pluginconfig->{"field_updateremote_$field"}, "");
echo '<br />';
}
echo get_string('auth_fieldlock', 'auth') . '&nbsp;&nbsp;';
echo '<label for="menulockconfig_field_lock_'.$field.'">'.get_string('auth_fieldlock', 'auth') . '</label>&nbsp;';
choose_from_menu($lockoptions, "lockconfig_field_lock_{$field}", $pluginconfig->{"field_lock_$field"}, "");
echo '</div>';
} else {
echo '<tr valign="top"><td align="right">';
echo '<label for="menulockconfig_field_lock_'.$field.'">'.$fieldname.'</label>';
echo '</td><td>';
choose_from_menu($lockoptions, "lockconfig_field_lock_{$field}", $pluginconfig->{"field_lock_$field"}, "");
}
echo '</td>';
+1 -1
View File
@@ -59,7 +59,7 @@
print_heading($strblockname);
print_simple_box('<center>'.get_string('configwarning', 'admin').'</center>', 'center', '50%');
print_simple_box(get_string('configwarning', 'admin'), 'center', '50%');
echo '<br />';
echo '<form method="post" action="block.php">';
+12 -9
View File
@@ -17,7 +17,6 @@
$delete = optional_param('delete', 0, PARAM_INT);
$multiple = optional_param('multiple', 0, PARAM_INT);
/// Print headings
$strmanageblocks = get_string('manageblocks');
@@ -29,6 +28,7 @@
$strcourses = get_string('blockinstances', 'admin');
$strname = get_string('name');
$strmultiple = get_string('blockmultiple', 'admin');
$strshowblockcourse = get_string('showblockcourse');
admin_externalpage_print_header($adminroot);
@@ -165,11 +165,8 @@
$table->define_columns(array('name', 'instances', 'version', 'hideshow', 'multiple', 'delete', 'settings'));
$table->define_headers(array($strname, $strcourses, $strversion, $strhide.'/'.$strshow, $strmultiple, $strdelete, $strsettings));
$table->define_baseurl($CFG->wwwroot.'/'.$CFG->admin.'/blocks.php');
$table->set_attribute('cellspacing', '0');
$table->set_attribute('id', 'blocks');
$table->set_attribute('class', 'generaltable generalbox');
$table->set_attribute('class', 'generaltable generalbox boxaligncenter boxwidthwide');
$table->setup();
foreach ($blockbyname as $blockname => $blockid) {
@@ -184,6 +181,13 @@
}
$count = count_records('block_instance', 'blockid', $blockid);
if ($count>0) {
$blocklist = "<a href=\"{$CFG->wwwroot}/course/search.php?blocklist=$blockid&amp;sesskey={$USER->sesskey}\" ";
$blocklist .= "title=\"$strshowblockcourse\" >$count</a>";
}
else {
$blocklist = "$count";
}
$class = ''; // Nothing fancy, by default
if ($blocks[$blockid]->visible) {
@@ -208,8 +212,8 @@
$table->add_data(array(
'<span'.$class.'>'.$blockobject->get_title().'</span>',
$count,
$blockobject->get_version(),
$blocklist,
'<span'.$class.'>'.$blockobject->get_version().'</span>',
$visible,
$multiple,
$delete,
@@ -228,9 +232,8 @@
$table->define_headers(array($strname, $strdelete));
$table->define_baseurl($CFG->wwwroot.'/'.$CFG->admin.'/blocks.php');
$table->set_attribute('cellspacing', '0');
$table->set_attribute('id', 'incompatible');
$table->set_attribute('class', 'generaltable generalbox');
$table->set_attribute('class', 'generaltable generalbox boxaligncenter boxwidthwide');
$table->setup();
+19 -6
View File
@@ -133,11 +133,25 @@
}
}
mtrace("Finished blocks");
mtrace('Finished blocks');
if (!empty($CFG->langcache)) {
mtrace('Updating languages cache');
get_list_of_languages();
get_list_of_languages(true);
}
mtrace('Removing expired enrolments ...', ''); // See MDL-8785
$timenow = time();
if ($oldenrolments = get_records_select('role_assignments', "timeend > 0 AND timeend < '$timenow'")) {
mtrace(count($oldenrolments).' to delete');
foreach ($oldenrolments as $oldenrolment) {
if (role_unassign($oldenrolment->roleid, $oldenrolment->userid, 0, $oldenrolment->contextid)) {
mtrace("Deleted expired role assignment $oldenrolment->roleid for user $oldenrolment->userid from context $oldenrolment->contextid");
}
}
mtrace('Done');
} else {
mtrace('none found');
}
@@ -254,7 +268,7 @@
//Execute backup's cron
//Perhaps a long time and memory could help in large sites
@set_time_limit(0);
@raise_memory_limit("196M");
@raise_memory_limit("192M");
if (function_exists('apache_child_terminate')) {
// if we are running from Apache, give httpd a hint that
// it can recycle the process after it's done. Apache's
@@ -307,9 +321,8 @@
}
/// Run the auth cron, if any
if (!($auths = explode(',', $CFG->auth_plugins_enabled))) {
$auths = array($user->auth);
}
$auths = get_enabled_auth_plugins();
mtrace("Running auth crons if required...");
foreach ($auths as $auth) {
$authplugin = get_auth_plugin($auth);
+5 -5
View File
@@ -59,10 +59,10 @@
// run through submitted data
// reject if does not start with filter_
foreach ($config as $name => $value) {
set_config( $name,$value );
set_config($name, stripslashes($value));
}
}
redirect( "$CFG->wwwroot/$CFG->admin/filters.php", get_string('changessaved'), 1);
redirect("$CFG->wwwroot/$CFG->admin/filters.php");
exit;
}
@@ -74,21 +74,21 @@
admin_externalpage_print_header($adminroot);
print_heading( $filtername );
print_simple_box("<center>".get_string("configwarning", "admin")."</center>", "center", "50%");
print_simple_box(get_string("configwarning", "admin"), "center", "50%");
echo "<br />";
print_simple_box_start("center",'');
?>
<form action="filter.php?filter=<?php echo urlencode($param->filter); ?>" method="post">
<div style="text-align: center">
<input type="hidden" name="sesskey" value="<?php echo sesskey(); ?>" />
<?php include "$CFG->dirroot/$param->filter/filterconfig.html"; ?>
<center>
<input type="submit" name="submit" value="<?php print_string('savechanges'); ?>" />
<input type="submit" name="reset" value="<?php echo print_string('resettodefaults'); ?>" />
</center>
</div>
</form>
<?php
+2 -7
View File
@@ -182,15 +182,10 @@
// construct the flexible table ready to display
$table = new flexible_table(FILTER_TABLE);
$table->define_columns(array('name', 'hideshow', 'order', 'settings'));
$table->column_style('hideshow', 'text-align', 'center');
$table->column_style('order', 'text-align', 'center');
$table->column_style('settings', 'text-align', 'center');
$table->define_headers(array($txt->name, $txt->hideshow, $txt->updown, $txt->settings));
$table->define_baseurl("$CFG->wwwroot/$CFG->admin/filters.php");
$table->set_attribute('id', 'blocks');
$table->set_attribute('class', 'flexible generaltable generalbox');
$table->set_attribute('style', 'margin:auto;');
$table->set_attribute('cellpadding', '5');
$table->set_attribute('id', 'filters');
$table->set_attribute('class', 'generaltable generalbox boxaligncenter boxwidthwide');
$table->setup();
// iterate through filters adding to display table
+2 -2
View File
@@ -40,7 +40,7 @@ while(!feof($fd)) {
$user = get_record("user","id",$log->userid);
$course = get_record("course","id",$log->course);
$subject = get_string('virusfoundsubject','moodle',$site->fullname);
$subject = get_string('virusfoundsubject','moodle',format_string($site->fullname));
$a->date = userdate($log->time);
$a->action = $action;
@@ -78,7 +78,7 @@ function notify_admins_unknown($file,$a) {
global $site;
$admins = get_admins();
$subject = get_string('virusfoundsubject','moodle',$site->fullname);
$subject = get_string('virusfoundsubject','moodle',format_string($site->fullname));
$body = get_string('virusfoundlateradminnolog','moodle',$a);
foreach ($admins as $admin) {
email_to_user($admin,$admin,$subject,$body);
+44 -34
View File
@@ -136,17 +136,18 @@
echo "<br />";
notice_yesno(get_string('doyouagree'), "index.php?agreelicense=1",
"http://docs.moodle.org/en/License");
print_footer('none');
exit;
}
if (empty($confirmrelease)) {
$strcurrentrelease = get_string("currentrelease");
print_header($strcurrentrelease, $strcurrentrelease, $strcurrentrelease, "", "", false, "&nbsp;", "&nbsp;");
print_heading("Moodle $release");
print_box(get_string('releasenoteslink', 'admin', 'http://docs.moodle.org/en/Release_Notes'));
echo '<form action="index.php"><fieldset class="invisiblefieldset">';
print_box(get_string('releasenoteslink', 'admin', 'http://docs.moodle.org/en/Release_Notes'), 'generalbox boxaligncenter boxwidthwide');
echo '<form action="index.php"><div>';
echo '<input type="hidden" name="agreelicense" value="1" />';
echo '<input type="hidden" name="confirmrelease" value="1" />';
echo '</fieldset>';
echo '</div>';
echo '<div class="continuebutton"><input name="autopilot" id="autopilot" type="checkbox" value="1" /><label for="autopilot">'.get_string('unattendedoperation', 'admin').'</label>';
echo '<br /><br /><input type="submit" value="'.get_string('continue').'" /></div>';
echo '</form>';
@@ -188,10 +189,15 @@
/// Continue with the instalation
$db->debug = false;
if ($status) {
//ugly hack - install new groups: MDL-9217
require_once("$CFG->dirroot/group/db/upgrade.php");
install_group_db();
// Install the roles system.
moodle_install_roles();
set_config('statsrolesupgraded',time());
// Write default settings unconditionally (i.e. even if a setting is already set, overwrite it)
// (this should only have any effect during initial install).
$adminroot = admin_get_root();
@@ -207,6 +213,7 @@
'enrol' => 'manual',
'enrol_plugins_enabled' => 'manual',
'guestloginbutton' => 1,
'registerauth' => 'email',
'style' => 'default',
'template' => 'default',
'theme' => 'standardwhite',
@@ -270,13 +277,24 @@
print_header($strcurrentrelease, $strcurrentrelease, $strcurrentrelease, "", "", false, "&nbsp;", "&nbsp;");
print_heading("Moodle $release");
print_box(get_string('releasenoteslink', 'admin', 'http://docs.moodle.org/en/Release_Notes'));
echo '<form action="index.php"><fieldset class="invisiblefieldset">';
echo '<input type="hidden" name="confirmupgrade" value="1" />';
echo '<input type="hidden" name="confirmrelease" value="1" />';
echo '</fieldset>';
echo '<div class="continuebutton"><input name="autopilot" id="autopilot" type="checkbox" value="0" /><label for="autopilot">'.get_string('unattendedoperation', 'admin').'</label>';
echo '<br /><br /><input type="submit" value="'.get_string('continue').'" /></div>';
echo '</form>';
require_once($CFG->libdir.'/environmentlib.php');
print_heading(get_string('environment', 'admin'));
if (!check_moodle_environment($release, $environment_results, true)) {
notice_yesno(get_string('environmenterrorupgrade', 'admin'),
'index.php?confirmupgrade=1&confirmrelease=1', 'index.php');
} else {
notify(get_string('environmentok', 'admin'), 'notifysuccess');
echo '<form action="index.php"><div>';
echo '<input type="hidden" name="confirmupgrade" value="1" />';
echo '<input type="hidden" name="confirmrelease" value="1" />';
echo '</div>';
echo '<div class="continuebutton"><input name="autopilot" id="autopilot" type="checkbox" value="1" /><label for="autopilot">'.get_string('unattendedoperation', 'admin').'</label>';
echo '<br /><br /><input type="submit" value="'.get_string('continue').'" /></div>';
echo '</form>';
}
print_footer('none');
die;
} else {
@@ -307,6 +325,9 @@
/// If successful, continue upgrading roles and setting everything properly
if ($status) {
if (empty($CFG->rolesactive)) {
//ugly hack - upgrade to new groups (from 1.6) : MDL-9217
require_once("$CFG->dirroot/group/db/upgrade.php");
install_group_db();
// Upgrade to the roles system.
moodle_install_roles();
set_config('rolesactive', 1);
@@ -354,6 +375,11 @@
}
}
/// ugly hack - convert to new groups if upgrading from 1.7; must be reworked
require_once("$CFG->dirroot/group/db/upgrade.php");
upgrade_group_db("$CFG->wwwroot/$CFG->admin/index.php"); // Return here afterwards
/// Find and check all main modules and load them up or upgrade them if necessary
/// first old *.php update and then the new upgrade.php script
upgrade_activity_modules("$CFG->wwwroot/$CFG->admin/index.php"); // Return here afterwards
@@ -389,10 +415,6 @@
require_once("$CFG->dirroot/lib/locallib.php");
upgrade_local_db("$CFG->wwwroot/$CFG->admin/index.php"); // Return here afterwards
/// Check for new groups and upgrade if necessary. TODO:
require_once("$CFG->dirroot/group/db/upgrade.php");
upgrade_group_db("$CFG->wwwroot/$CFG->admin/index.php"); // Return here afterwards
/// Check for changes to RPC functions
require_once($CFG->dirroot.'/admin/mnet/adminlib.php');
upgrade_RPC_functions("$CFG->wwwroot/$CFG->admin/index.php"); // Return here afterwards
@@ -466,19 +488,7 @@
/// Check if the guest user exists. If not, create one.
if (! record_exists("user", "username", "guest")) {
$guest->auth = "manual";
$guest->username = "guest";
$guest->password = md5("guest");
$guest->firstname = addslashes(get_string("guestuser"));
$guest->lastname = " ";
$guest->email = "root@localhost";
$guest->description = addslashes(get_string("guestuserinfo"));
$guest->mnethostid = $CFG->mnet_localhost_id;
$guest->confirmed = 1;
$guest->lang = $CFG->lang;
$guest->timemodified= time();
if (! $guest->id = insert_record("user", $guest)) {
if (! $guest = create_guest_record()) {
notify("Could not create guest user record !!!");
}
}
@@ -519,7 +529,7 @@
/// Deprecated database! Warning!!
if (!empty($CFG->migrated_to_new_db)) {
print_box(print_string('dbmigrationdeprecateddb','admin'));
print_box(print_string('dbmigrationdeprecateddb', 'admin'), 'generalbox adminwarning');
}
/// Check for any special upgrades that might need to be run
@@ -528,11 +538,11 @@
}
if (ini_get_bool('register_globals') && !ini_get_bool('magic_quotes_gpc')) {
print_box(get_string('globalsquoteswarning', 'admin'));
print_box(get_string('globalsquoteswarning', 'admin'), 'generalbox adminwarning');
}
if (is_dataroot_insecure()) {
print_box(get_string('datarootsecuritywarning', 'admin', $CFG->dataroot));
print_box(get_string('datarootsecuritywarning', 'admin', $CFG->dataroot), 'generalbox adminwarning');
}
/// If no recently cron run
@@ -540,17 +550,17 @@
if (time() - $lastcron > 3600 * 24) {
$strinstallation = get_string('installation', 'install');
$helpbutton = helpbutton('install', $strinstallation, 'moodle', true, false, '', true);
print_box(get_string('cronwarning', 'admin')."&nbsp;".$helpbutton);
print_box(get_string('cronwarning', 'admin')."&nbsp;".$helpbutton, 'generalbox adminwarning');
}
/// Print multilang upgrade notice if needed
if (empty($CFG->filter_multilang_converted)) {
print_box(get_string('multilangupgradenotice', 'admin'));
print_box(get_string('multilangupgradenotice', 'admin'), 'generalbox adminwarning');
}
/// Alert if we are currently in maintenance mode
if (file_exists($CFG->dataroot.'/1/maintenance.html')) {
print_box(get_string('sitemaintenancewarning', 'admin'));
print_box(get_string('sitemaintenancewarning', 'admin'), 'generalbox adminwarning');
}
@@ -560,7 +570,7 @@
if (!isset($CFG->registered) || $CFG->registered < (time() - 3600*24*30*6)) {
$options = array();
$options['sesskey'] = $USER->sesskey;
print_box_start();
print_box_start('generalbox adminwarning');
print_string('pleaseregister', 'admin');
print_single_button('register.php', $options, get_string('registration'));
print_box_end();
+89 -14
View File
@@ -57,17 +57,17 @@
$navigation = "<a href=\"lang.php\">$strlanguage</a> -> $strmissingstrings";
$title = $strmissingstrings;
$button = '<form '.$CFG->frametarget.' method="get" action="'.$CFG->wwwroot.'/'.$CFG->admin.'/lang.php">'.
'<fieldset class="invisiblefieldset">'.
'<div>'.
'<input type="hidden" name="mode" value="compare" />'.
'<input type="submit" value="'.$streditstrings.'" /></fieldset></form>';
'<input type="submit" value="'.$streditstrings.'" /></div></form>';
break;
case "compare":
$navigation = "<a href=\"lang.php\">$strlanguage</a> -> $streditstrings";
$title = $streditstrings;
$button = '<form '.$CFG->frametarget.' method="get" action="'.$CFG->wwwroot.'/'.$CFG->admin.'/lang.php">'.
'<fieldset class="invisiblefieldset">'.
'<div>'.
'<input type="hidden" name="mode" value="missing" />'.
'<input type="submit" value="'.$strmissingstrings.'" /></fieldset></form>';
'<input type="submit" value="'.$strmissingstrings.'" /></div></form>';
break;
default:
$title = $strlanguage;
@@ -82,7 +82,7 @@
if (!$mode) {
print_box_start();
$currlang = current_language();
$langs = get_list_of_languages();
$langs = get_list_of_languages(false, true);
popup_form ("$CFG->wwwroot/$CFG->admin/lang.php?lang=", $langs, "chooselang", $currlang, "", "", "", false, 'self', $strcurrentlanguage.':');
print_heading("<a href=\"lang.php?mode=missing\">$strmissingstrings</a>");
print_heading("<a href=\"lang.php?mode=compare\">$streditstrings</a>");
@@ -170,7 +170,7 @@
$missinglinkend = '';
}
if (strlen($value) > LANG_MISSING_TEXT_MAX_LEN) {
$value = substr($value, 0, LANG_MISSING_TEXT_MAX_LEN) . ' ...';
$value = lang_xhtml_save_substr($value, 0, LANG_MISSING_TEXT_MAX_LEN) . ' ...'; // MDL-8852
}
$o .= "$"."string['".$missinglinkstart.$key.$missinglinkend."'] = \"$value\";<br />";
}
@@ -299,12 +299,12 @@
helpbutton('langswitchstorage', $strfilestoredinhelp, 'moodle');
echo '<form '.$CFG->frametarget.' method="get" action="'.$CFG->wwwroot.'/'.$CFG->admin.'/lang.php">'.
'<fieldset class="invisiblefieldset">'.
'<div>'.
'<input type="hidden" name="mode" value="compare" />'.
'<input type="hidden" name="currentfile" value="'.$currentfile.'" />'.
'<input type="hidden" name="uselocal" value="'.(1 - $uselocal % 2).'" />'.
'<input type="submit" value="'.$strswitchlang.'" />'.
'</fieldset></form>';
'</div></form>';
print_box_end();
if ($currentfile <> '') {
@@ -455,7 +455,7 @@
echo $missingnext . '</td>';
} else {
echo '<td bgcolor="'.$cellcolour.'" valign="top">'.$value.'</td>';
echo '<td '.$cellcolour.' valign="top">'.$value.'</td>';
}
echo '</tr>'."\n";
}
@@ -468,8 +468,10 @@
echo '</td></tr>';
}
echo '</table>';
echo '</div>';
echo '</form>';
if ($editable) {
echo '</div>';
echo '</form>';
}
} else {
// no $currentfile specified
@@ -526,10 +528,12 @@ function lang_save_file($path, $file, $strings, $local, $packstrings) {
$value = lang_fix_value_before_save($value);
if ($id == "string" and $value != ""){
if ((!$local) || (lang_fix_value_from_file($packstrings[$stringname]) <> lang_fix_value_from_file($value))) {
// Either we are saving the master language pack
// or we are saving local language pack and the strings differ.
fwrite($f,"\$string['$stringname'] = '$value';\n");
if (LANG_KEEP_ORPHANS && isset($orphans[$stringname])) {
unset($orphans[$stringname]);
}
}
if (LANG_KEEP_ORPHANS && isset($orphans[$stringname])) {
unset($orphans[$stringname]);
}
}
}
@@ -560,6 +564,7 @@ function lang_fix_value_from_file($value='') {
$value = trim($value); // Delete leading/trailing white space
$value = str_replace("\\","",$value); // Delete all slashes
$value = str_replace("%%","%",$value);
$value = str_replace("&","&amp;",$value); // Fixes MDL-9248
$value = str_replace("<","&lt;",$value);
$value = str_replace(">","&gt;",$value);
$value = str_replace('"',"&quot;",$value);
@@ -629,5 +634,75 @@ function lang_file_string_key($keyfromform) {
return str_replace('##46#', '.', $keyfromform);
}
/**
* Return the substring of the string and take care of XHTML compliance.
*
* There was a problem with pure substr() which could possibly produce XHTML parsing error:
* substr('Marks &amp; Spencer', 0, 9) -> 'Marks &am' ... is not XHTML compliance
* This function takes care of these cases. Fixes MDL-8852.
*
* Thanks to kovacsendre, the author of the function at http://php.net/substr
*
* @param string $str The original string
* @param int $start Start position in the $value string
* @param int $length Optional length of the returned substring
* @return string The substring as returned by substr() with XHTML compliance
* @todo Seems the function does not work with negative $start together with $length being set
*/
function lang_xhtml_save_substr($str, $start, $length = NULL) {
if ($length === 0) {
//stop wasting our time ;)
return "";
}
//check if we can simply use the built-in functions
if (strpos($str, '&') === false) {
// No entities. Use built-in functions
if ($length === NULL) {
return substr($str, $start);
} else {
return substr($str, $start, $length);
}
}
// create our array of characters and html entities
$chars = preg_split('/(&[^;\s]+;)|/', $str, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE);
$html_length = count($chars);
// check if we can predict the return value and save some processing time, i.e.:
// input string was empty OR
// $start is longer than the input string OR
// all characters would be omitted
if (($html_length === 0) or ($start >= $html_length) or (isset($length) and ($length <= -$html_length))) {
return '';
}
//calculate start position
if ($start >= 0) {
$real_start = $chars[$start][1];
} else {
//start'th character from the end of string
$start = max($start,-$html_length);
$real_start = $chars[$html_length+$start][1];
}
if (!isset($length)) {
// no $length argument passed, return all remaining characters
return substr($str, $real_start);
} elseif ($length > 0) {
// copy $length chars
if ($start+$length >= $html_length) {
// return all remaining characters
return substr($str, $real_start);
} else {
//return $length characters
return substr($str, $real_start, $chars[max($start,0)+$length][1] - $real_start);
}
} else {
//negative $length. Omit $length characters from end
return substr($str, $real_start, $chars[$html_length+$length][1] - $real_start);
}
}
?>
+26 -19
View File
@@ -29,6 +29,12 @@
admin_externalpage_print_header($adminroot);
//reset and diagnose lang cache permissions
@unlink($CFG->dataroot.'/cache/languages');
if (file_exists($CFG->dataroot.'/cache/languages')) {
notify('Language cache can not be deleted, please check permissions in dataroot.');
}
get_list_of_languages(true); //refresh lang cache
switch ($mode){
@@ -44,10 +50,10 @@
$status = $cd->install(); //returns ERROR | UPTODATE | INSTALLED
switch ($status) {
case ERROR:
case ERROR:
if ($cd->get_error() == 'remotedownloadnotallowed') {
$a = new stdClass();
$a->url = 'http://download.moodle.org/lang16/'.$pack.'zip';
$a->url = 'http://download.moodle.org/lang16/'.$pack.'.zip';
$a->dest= $CFG->dataroot.'/lang';
error(get_string($cd->get_error(), 'error', $a));
} else {
@@ -56,8 +62,8 @@
break;
case INSTALLED:
@unlink($CFG->dataroot.'/cache/languages');
redirect('langimport.php', get_string('langpackupdated','admin',$pack));
get_list_of_languages(true); //refresh lang cache
redirect('langimport.php', get_string('langpackupdated','admin',$pack), -1, $adminroot);
break;
case UPTODATE:
@@ -103,14 +109,14 @@
if (file_exists($dest2)){
$rm2 = remove_dir($dest2);
}
get_list_of_languages(true); //refresh lang cache
//delete the direcotries
if ($rm1 or $rm2) {
redirect('langimport.php', get_string('langpackremoved','admin'));
redirect('langimport.php', get_string('langpackremoved','admin'), 3, $adminroot);
} else { //nothing deleted, possibly due to permission error
error('An error has occurred, language pack is not completely uninstalled, please check file permissions');
}
}
@unlink($CFG->dataroot.'/cache/languages');
break;
case UPDATE_ALL_LANG: //1 click update for all updatable language packs
@@ -120,8 +126,7 @@
$source = 'http://download.moodle.org/lang16/languages.md5';
$md5array = array();
$updated = 0; //any packs updated?
unset($CFG->langlist); // ignore admin's langlist
$alllangs = array_keys(get_list_of_languages());
$alllangs = array_keys(get_list_of_languages(false, true)); //get all available langs
$lang16 = array(); //all the Moodle 1.6 unicode lang packs (updated and not updated)
$packs = array(); //all the packs that needs updating
@@ -185,7 +190,7 @@
case ERROR:
if ($cd->get_error() == 'remotedownloadnotallowed') {
$a = new stdClass();
$a->url = 'http://download.moodle.org/lang16/'.$pack.'zip';
$a->url = 'http://download.moodle.org/lang16/'.$pack.'.zip';
$a->dest= $CFG->dataroot.'/lang';
error(get_string($cd->get_error(), 'error', $a));
} else {
@@ -208,9 +213,9 @@
}
if ($updated) {
notice(get_string('langupdatecomplete','admin'), 'langimport.php');
notice(get_string('langupdatecomplete','admin'), 'langimport.php', NULL, $adminroot);
} else {
notice(get_string('nolangupdateneeded','admin'), 'langimport.php');
notice(get_string('nolangupdateneeded','admin'), 'langimport.php', NULL, $adminroot);
}
break;
@@ -247,8 +252,7 @@
echo '<form id="uninstallform" action="langimport.php?mode=4" method="post">';
echo '<fieldset class="invisiblefieldset">';
echo '<input name="sesskey" type="hidden" value="'.sesskey().'" />';
unset($CFG->langlist); // ignore admin's langlist
$installedlangs = get_list_of_languages();
$installedlangs = get_list_of_languages(false, true);
/// display installed langs here
@@ -262,9 +266,9 @@
echo '</fieldset>';
echo '</form>';
echo '<form id="updateform" action="langimport.php?mode=5" method="post">';
echo '<fieldset class="invisiblefieldset">';
echo '<div>';
echo '<br /><input type="submit" value="'.get_string('updatelangs','admin').'" />';
echo '</fieldset>';
echo '</div>';
echo '</form>';
/// Display option to change site language
@@ -368,13 +372,16 @@
return false; //failed
}
fputs($proxy_fp, "GET $url HTTP/1.0\r\nHost: $CFG->proxyhost\r\n\r\n");
$i = 0;
while(!feof($proxy_fp)) {
$headers_done = false;
while(!feof($proxy_fp)) {
$string = fgets($proxy_fp, 1024);
if ($i > 11) { //12 lines of info skipped
if(!$headers_done){
// A new line indicates end of HTTP headers
$headers_done = ("\r\n" == $string);
} else {
$availablelangs[] = split(',', $string);
}
$i++;
}
fclose($proxy_fp);
+3 -7
View File
@@ -127,15 +127,11 @@ $warn = '';
if (empty($CFG->mnet_dispatcher_mode) || $CFG->mnet_dispatcher_mode !== 'strict') {
$warn = '<p>' . get_string('mnetdisabled','mnet') .'</p>';
}
if (empty($CFG->auth_plugins_enabled)) {
if (!is_enabled_auth('mnet')) {
$warn .= '<p>' . get_string('authmnetdisabled','mnet').'</p>';
} else {
$auths = explode(',', $CFG->auth_plugins_enabled);
if (!in_array('mnet', $auths)) {
$warn .= '<p>' . get_string('authmnetdisabled','mnet').'</p>';
}
unset($auths);
}
if (get_config('auth/mnet', 'auto_add_remote_users') != true) {
$warn .= '<p>' . get_string('authmnetautoadddisabled','mnet').'</p>';
}
+4 -4
View File
@@ -5,8 +5,8 @@ print_header("$site->shortname: $strmnetsettings", "$site->fullname",
print_heading(get_string('mnetsettings', 'mnet'));
?>
<center>
<table align="center" class="generalbox" border="0" cellpadding="5" cellspacing="0">
<div id="trustedhosts"><!-- See theme/standard/styles_layout.css #trustedhosts .generaltable for rules -->
<table class="generalbox standard" border="0" cellpadding="5" cellspacing="0">
<tr>
<td class="generalboxcontent">
<table cellpadding="9" cellspacing="0" >
@@ -14,7 +14,7 @@ print_heading(get_string('mnetsettings', 'mnet'));
<td colspan="2" class="header" cellpadding="0"><span><?php print_string('deleteaserver', 'mnet'); ?>Deleting a Server</span></td>
</tr>
<?php
if (count($warn) > 0):
if (count($warn) > 0){
?>
<tr valign="top">
<td align="right" colspan="2"><?php print_string('receivedwarnings','mnet'); ?>:<br />
@@ -22,7 +22,7 @@ print_heading(get_string('mnetsettings', 'mnet'));
</td>
</tr>
<?php
endif;
}
?>
<tr valign="top">
<td colspan="2"><?php print_string('reallydeleteserver','mnet'); ?>: "<?php echo $mnet_peer->name; ?>"?</td>
+3 -1
View File
@@ -1,10 +1,11 @@
<form id="assignform" method="post" action="">
<div id="trustedhosts"><!-- See theme/standard/styles_layout.css #trustedhosts .generaltable for rules -->
<input type="hidden" name="previoussearch" value="<?php p($previoussearch) ?>" />
<input type="hidden" name="courseid" value="<?php p($courseid) ?>" />
<input type="hidden" name="host" value="<?php p($mnet_peer->id) ?>" />
<input type="hidden" name="sesskey" value="<?php p(sesskey()) ?>" />
<table align="center" border="0" cellpadding="5" cellspacing="0">
<table class="generaltable" border="0" cellpadding="5" cellspacing="0">
<tr>
<td valign="top">
<?php print_string('existingusers', 'role', count($mnetenrolledusers)); ?>
@@ -99,4 +100,5 @@
<td valign="top"></td>
</tr>
</table>
</div>
</form>
+1 -1
View File
@@ -258,7 +258,7 @@ $strsearchresults = get_string('searchresults');
admin_externalpage_print_header($adminroot);
print_box('<strong>' . s($mnet_peer->name) . ' : '
. s($course->shortname) .' '. s($course->fullname)
. format_string($course->shortname) .' '. format_string($course->fullname)
. '</strong><br />'
. get_string("enrolcourseenrol_desc", "mnet"));
+8 -7
View File
@@ -29,9 +29,10 @@
print_box('<strong>' . s($host->name) . ' </strong><br />'
. get_string("enrolcourses_desc", "mnet"));
echo "<hr />";
echo '<hr />';
print ('<table align="center" >');
echo '<div id="trustedhosts"><!-- See theme/standard/styles_layout.css #trustedhosts .generaltable for rules -->'
. '<table class="generaltable">';
$icon = "<img src=\"$CFG->pixpath/i/course.gif\"".
" class=\"icon\" alt=\"".get_string("course")."\" />";
@@ -39,18 +40,18 @@
foreach ($courses as $course) {
$link = $CFG->wwwroot . '/admin/mnet/enr_course_enrol.php?'
. "host={$mnethost}&amp;courseid={$course->id}&amp;sesskey={$USER->sesskey}";
print ('<tr>'
echo '<tr>'
. "<td>$icon</td>"
. "<td><a href=\"$link\">".s($course->fullname). "</a></td>"
. "<td><a href=\"$link\">".format_string($course->fullname). "</a></td>"
. '</tr><tr>'
. '<td></td>'
. '<td>'.s($course->shortname). ' - ' .s($course->cat_name).'</td>'
. '<td>'.format_string($course->shortname). ' - ' .format_string($course->cat_name).'</td>'
. '</tr><tr>'
. '<td></td>'
. "<td align=\"left\" >{$course->summary}</td>"
. '</tr>');
. '</tr>';
}
print ('</table>');
echo '</table></div>';
admin_externalpage_print_footer($adminroot);
+8 -6
View File
@@ -22,19 +22,20 @@
print_box(get_string("remoteenrolhosts_desc", "mnet"));
echo "<hr />";
echo '<hr />';
if (empty($CFG->mnet_dispatcher_mode) || $CFG->mnet_dispatcher_mode !== 'strict') {
print_box(get_string('mnetdisabled','mnet'));
}
print ('<table align="center" cellspacing="0" cellpadding="5" width="500" id="hosts" class="generaltable generalbox" >'
echo '<div id="trustedhosts"><!-- See theme/standard/styles_layout.css #trustedhosts .generaltable for rules -->'
. '<table cellspacing="0" cellpadding="5" id="hosts" class="generaltable generalbox" >'
. '<tr>'
. '<th class="header c0"> '.get_string('host', 'mnet').' </th>'
. '<th class="header c1"> '.get_string('enrolments', 'mnet').' </th>'
. '<th class="header c2"> '.get_string('courses', 'mnet').' </th>'
// . '<th class="header c3"> &nbsp; </th>'
. '</tr>');
. '</tr>';
$hosts = $enrolment->list_remote_servers();
foreach ($hosts as $host) {
$coursesurl = "{$CFG->wwwroot}/admin/mnet/enr_courses.php?host={$host->id}&amp;sesskey={$USER->sesskey}";
@@ -44,16 +45,17 @@
}
$enrolcount = get_field_sql("SELECT count(id) FROM {$CFG->prefix}mnet_enrol_assignments WHERE hostid={$host->id}");
print ('<tr>'
echo '<tr>'
. "<td><a href=\"{$coursesurl}\">{$host->name}</a></td>"
. "<td align=\"center\" >$enrolcount</td>"
. "<td align=\"center\" >$coursecount - <a href=\"{$coursesurl}\">".get_string('editenrolments', 'mnet')."</a></td>"
// TODO: teach report/log/index.php to show per-host-logs
// . '<td align="center" ><a href="{$CFG->wwwroot}/admin/report/log/index.php?course_host={$host->id}">'
// . get_string('logs', 'mnet').'</a> </td>'
. '</tr>');
. '</tr>';
}
print ('</table>');
echo '</table>'
. '</div>';
admin_externalpage_print_footer($adminroot);
+2 -2
View File
@@ -112,8 +112,8 @@
<tr valign="top">
<td align="right"><?php print_string('net', 'mnet'); ?>:</td>
<td><input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>" />
<input type="radio" name="mode" value="off" <?php echo ("off" == $CFG->mnet_dispatcher_mode)? 'checked="true"' : '' ?> /> <?php print_string('off', 'mnet'); ?> <br />
<input type="radio" name="mode" value="strict" <?php echo ("strict" == $CFG->mnet_dispatcher_mode)? 'checked="true"' : '' ?> /> <?php print_string('on', 'mnet'); ?><br />
<input type="radio" name="mode" value="off" <?php echo ("off" == $CFG->mnet_dispatcher_mode)? 'checked="checked"' : '' ?> /> <?php print_string('off', 'mnet'); ?> <br />
<input type="radio" name="mode" value="strict" <?php echo ("strict" == $CFG->mnet_dispatcher_mode)? 'checked="checked"' : '' ?> /> <?php print_string('on', 'mnet'); ?><br />
<input type="submit" name="submit" value="<?php print_string('savechanges'); ?>" />
</td>
</tr>
+11 -9
View File
@@ -19,6 +19,7 @@ print_tabs(array($tabs), 'mnetdetails');
print_simple_box_start("center", "");
?>
<form method="post" action="peers.php">
<div>
<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>" />
<input type="hidden" name="step" value="commit" />
<input type="hidden" name="last_connect_time" value="<?php echo $mnet_peer->last_connect_time; ?>" />
@@ -74,7 +75,7 @@ if (isset($mnet_peer->deleted) && $mnet_peer->deleted > 0) {
</tr>
<?php
if(!empty($currentkey)):
if(!empty($currentkey)) {
?>
<tr>
<td align="right" valign="top"></td>
@@ -85,30 +86,30 @@ if(!empty($currentkey)):
<td valign="top"><pre style="font-size: 8px;"><?php echo $currentkey;?></pre></td>
</tr>
<?php
endif;
}
if (isset($mnet_peer->id) && $mnet_peer->id > 0):
if (isset($mnet_peer->id) && $mnet_peer->id > 0) {
?>
<tr>
<td align="right" valign="top"><?php print_string('last_connect_time', 'mnet'); ?>:</td>
<td valign="top"><?php echo ($mnet_peer->last_connect_time == 0)? get_string('never','mnet') : date('H:i:s d/m/Y',$mnet_peer->last_connect_time);?></td>
</tr>
<?php
endif;
}
if (isset($mnet_peer->deleted) && $mnet_peer->deleted > 0):
if (isset($mnet_peer->deleted) && $mnet_peer->deleted > 0){
?>
<tr>
<td align="right" valign="top"><?php print_string('deleted'); ?>:</td>
<td valign="top">
<input type="radio" name="deleted" value="0" checked="true" /> <?php print_string('reenableserver','mnet'); ?><br />
<input type="radio" name="deleted" value="0" checked="checked" /> <?php print_string('reenableserver','mnet'); ?><br />
<input type="radio" name="deleted" value="1" /> <?php print_string('yes'); ?><br />
</td>
</tr>
<?php
endif;
}
if (isset($mnet_peer->ip_address) && '' != $mnet_peer->ip_address):
if (isset($mnet_peer->ip_address) && '' != $mnet_peer->ip_address){
?>
<tr>
<td align="right" valign="top"><?php print_string('ipaddress', 'mnet');
@@ -119,13 +120,14 @@ if (isset($mnet_peer->ip_address) && '' != $mnet_peer->ip_address):
</tr>
<?php
endif;
}
?>
<tr>
<td></td>
<td><input type="submit" value="<?php print_string("savechanges"); ?>" /></td>
</tr>
</table>
</div>
</form>
<?php
print_simple_box_end();
+31 -8
View File
@@ -16,21 +16,22 @@ print_simple_box_start("center", "");
?>
<form method="post" action="mnet_services.php">
<div>
<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>" />
<input type="hidden" name="step" value="<?php echo $mnet_peer->nextstep; ?>" />
<input type="hidden" name="hostid" value="<?php echo ($mnet_peer->id)? $mnet_peer->id : '0' ; ?>" />
<table cellpadding="9" cellspacing="0" >
<?php
foreach($myservices as $name => $versions):
foreach($myservices as $name => $versions) {
$version = current($versions);
?>
<tr>
<td align="left" valign="top" colspan="2">
<h3><?php echo get_string($name.'_name', $version['parent_type'].'_'.$version['parent'] , $mnet_peer->name); ?></h3>
<p><?php echo get_string($name.'_description', $version['parent_type'].'_'.$version['parent'], $mnet_peer->name); ?></p>
<?php echo get_string($name.'_description', $version['parent_type'].'_'.$version['parent'], $mnet_peer->name); ?>
<?php
$breakstring = '';
foreach($versions as $version):
foreach($versions as $version){
if (count($versions) > 1) {
$versionstring = '('.get_string('version','mnet') .' '.$version['apiversion'].')';
} else {
@@ -40,16 +41,37 @@ print_simple_box_start("center", "");
echo $breakstring;
?>
<input type="hidden" name="exists[<?php echo $version['serviceid']; ?>]" value="1" />
<input type="checkbox" name="publish[<?php echo $version['serviceid']; ?>]" <?php echo (!empty($version['I_publish']))? 'checked="checked" ': '' ; ?>/><?php print_string('publish','mnet'); ?><?php echo $versionstring; if (!empty($version['hostsubscribes'])) echo '<a href="#" title="'.get_string('issubscribed','mnet', $mnet_peer->name).'">&radic;</a> '; if (!empty($version['allhosts_publish'])) print_string("enabled_for_all",'mnet',!empty($version['I_publish'])); ?><br />
<input type="checkbox" name="subscribe[<?php echo $version['serviceid']; ?>]" <?php echo (!empty($version['I_subscribe']))? 'checked="checked" ': '' ; ?>/><?php print_string('subscribe','mnet'); ?><?php echo $versionstring; if (!empty($version['hostpublishes'])) echo '<a href="#" title="'.get_string('ispublished','mnet', $mnet_peer->name).'">&radic;</a> '; if (!empty($version['allhosts_subscribe'])) print_string("enabled_for_all",'mnet',!empty($version['I_subscribe'])); ?><br />
<?php
<input type="checkbox" name="publish[<?php echo $version['serviceid']; ?>]" <?php echo (!empty($version['I_publish']))? 'checked="checked" ': '' ; ?>/>
<?php
print_string('publish','mnet');
echo $versionstring;
if (!empty($version['hostsubscribes'])) {
echo '<a href="#" title="'.get_string('issubscribed','mnet', $mnet_peer->name).'">&radic;</a> ';
}
if (!empty($version['allhosts_publish'])) {
print_string("enabled_for_all",'mnet',!empty($version['I_publish']));
}
echo '<br />';
?>
<input type="checkbox" name="subscribe[<?php echo $version['serviceid']; ?>]" <?php echo (!empty($version['I_subscribe']))? 'checked="checked" ': '' ; ?>/>
<?php
print_string('subscribe','mnet');
echo $versionstring;
if (!empty($version['hostpublishes'])) {
echo '<a href="#" title="'.get_string('ispublished','mnet', $mnet_peer->name).'">&radic;</a> ';
}
if (!empty($version['allhosts_subscribe'])) {
print_string("enabled_for_all",'mnet',!empty($version['I_subscribe']));
}
echo '<br />';
$breakstring = '. . . . . . . . . . . . . . . . . . . . . . . . <br>';
endforeach;
} // end foreach
?>
</td>
</tr>
<?php
endforeach;
} // end foreach
?>
<tr>
<td align="left" valign="top" colspan="2">
@@ -70,6 +92,7 @@ print_simple_box_start("center", "");
</td>
</tr>
</table>
</div>
</form>
<?php
print_simple_box_end();
+59 -54
View File
@@ -5,36 +5,38 @@ if (empty($CFG->mnet_dispatcher_mode) || $CFG->mnet_dispatcher_mode !== 'strict'
print_box(get_string('mnetdisabled','mnet'));
}
?>
<center>
<form method="post" action="peers.php">
<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>" />
<input type="hidden" name="updateregisterall" value="1" />
<table cellspacing="0" cellpadding="5" width="500" id="hosts" class="generaltable generalbox" >
<tr>
<th class="header c0" nowrap="nowrap" colspan="2"><?php print_string('registerallhosts', 'mnet'); ?></th>
</tr>
<tr>
<td class="cell c1" colspan="2"><?php print_string('registerallhostsexplain', 'mnet'); ?></td>
</tr>
<tr>
<td class="cell c1"><input type="checkbox" name="registerallhosts" <?php if (!empty($CFG->mnet_register_allhosts)) echo 'checked="checked" '; ?>/></td>
<td class="cell c1"> <?php print_string('registerallhosts', 'mnet'); ?> </td>
</tr>
<tr>
<td align="right" colspan="2"><input type="submit" name="submit" value="<?php print_string('savechanges'); ?>" /></td>
</tr>
</table>
</form>
<table cellspacing="0" cellpadding="5" id="hosts" class="generaltable generalbox" >
<tr>
<th class="header c0" nowrap="nowrap"><?php print_string('site'); ?></th>
<th class="header c1" nowrap="nowrap"><?php print_string('system','mnet'); ?></th>
<th class="header c2" nowrap="nowrap"><?php print_string('last_connect_time', 'mnet'); ?></th>
<th class="header c3" nowrap="nowrap"></th>
</tr>
<div id="trustedhosts"><!-- See theme/standard/styles_layout.css #trustedhosts .generaltable for rules -->
<form method="post" action="peers.php">
<div>
<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>" />
<input type="hidden" name="updateregisterall" value="1" />
<table cellspacing="0" cellpadding="5" class="generaltable generalbox" >
<tr>
<th class="header c0" colspan="2"><?php print_string('registerallhosts', 'mnet'); ?></th>
</tr>
<tr>
<td class="cell c1" colspan="2"><?php print_string('registerallhostsexplain', 'mnet'); ?></td>
</tr>
<tr>
<td class="cell c1"><input type="checkbox" name="registerallhosts" <?php if (!empty($CFG->mnet_register_allhosts)) echo 'checked="checked" '; ?>/></td>
<td class="cell c1"> <?php print_string('registerallhosts', 'mnet'); ?> </td>
</tr>
<tr>
<td align="right" colspan="2"><input type="submit" name="submit" value="<?php print_string('savechanges'); ?>" /></td>
</tr>
</table>
</div>
</form>
<table cellspacing="0" cellpadding="5" class="generaltable generalbox standard" >
<tr>
<th class="header c0"><?php print_string('site'); ?></th>
<th class="header c1"><?php print_string('system','mnet'); ?></th>
<th class="header c2"><?php print_string('last_connect_time', 'mnet'); ?></th>
<th class="header c3"></th>
</tr>
<?php
foreach($hosts as $host):
foreach($hosts as $host) {
if ($host->last_connect_time == 0) {
$last_connect = get_string('never');
@@ -46,43 +48,46 @@ if (empty($CFG->mnet_dispatcher_mode) || $CFG->mnet_dispatcher_mode !== 'strict'
<tr>
<td class="cell c0"><a href="peers.php?step=update&amp;hostid=<?php echo $host->id; ?>"><?php echo $host->name; ?></a></td>
<td class="cell c1"><a href="peers.php?step=update&amp;hostid=<?php echo $host->id; ?>"><?php echo $host->wwwroot; ?></a></td>
<td class="cell c2" nowrap="nowrap"><?php if ($host->id != $CFG->mnet_all_hosts_id) echo $last_connect; ?></td>
<td class="cell c2"><?php if ($host->id != $CFG->mnet_all_hosts_id) echo $last_connect; ?></td>
<td class="cell c3">
<?php if ($host->id != $CFG->mnet_all_hosts_id): ?>
<?php if ($host->id != $CFG->mnet_all_hosts_id){ ?>
<form method="post" action="delete.php">
<div>
<input type="hidden" name="hostid" value="<?php echo $host->id; ?>" />
<input type="hidden" name="step" value="verify" />
<input type="submit" name="submit" value="<?php print_string('delete'); ?>"/>
</div>
</form>
<?php endif; ?>
<?php } ?>
</td>
</tr>
<?php
endforeach;
}
?>
<tr>
<td class="cell c4" colspan="4">&nbsp;</td>
</tr>
</table>
<form method="post" action="peers.php">
<tr>
<th class="header c4" nowrap="nowrap" colspan="4">
<?php print_string('addnewhost', 'mnet'); ?>
<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>" />
<input type="hidden" name="step" value="input" />
</th>
</tr>
<tr>
<td class="cell c0"></td>
<td class="cell c1"><input type="text" name="wwwroot" value="" /></td>
<td class="cell c2"></td>
<td class="cell c3"></td>
</tr>
<tr>
<td class="cell c4" align="right" colspan="4"><input type="submit" value="<?php print_string('addhost','mnet'); ?>" /></td>
</tr>
<table cellspacing="0" cellpadding="5" class="generaltable generalbox standard" >
<tr>
<th class="header c4" colspan="4">
<?php print_string('addnewhost', 'mnet'); ?>
<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>" />
<input type="hidden" name="step" value="input" />
</th>
</tr>
<tr>
<td class="cell c0"></td>
<td class="cell c1"><input type="text" name="wwwroot" value="" /></td>
<td class="cell c2"></td>
<td class="cell c3"></td>
</tr>
<tr>
<td class="cell c4" align="right" colspan="4"><input type="submit" value="<?php print_string('addhost','mnet'); ?>" /></td>
</tr>
</table>
</form>
</table>
</center>
</div>
<?php
admin_externalpage_print_footer($adminroot);
?>
?>
+7
View File
@@ -51,6 +51,13 @@ if (($form = data_submitted()) && confirm_sesskey()) {
// ensure we remove trailing slashes
$form->wwwroot = preg_replace(':/$:', '', $form->wwwroot);
}
if(!function_exists('xmlrpc_encode_request')) {
trigger_error("You must have xml-rpc enabled in your PHP build to use this feature.");
error(get_string('xmlrpc-missing', 'mnet'),'peers.php');
exit;
}
if (!empty($form->updateregisterall)) {
if (!empty($form->registerallhosts)) {
set_config('mnet_register_allhosts',1);
+25 -19
View File
@@ -1,36 +1,39 @@
<?php
admin_externalpage_print_header($adminroot);
?>
<center>
<table cellspacing="0" cellpadding="5" width="500" id="hosts" class="generaltable generalbox" >
<div id="trustedhosts"><!-- See theme/standard/styles_layout.css #trustedhosts .generaltable for rules -->
<table cellspacing="0" cellpadding="5" class="generaltable generalbox" >
<tr>
<th class="header c0" nowrap="nowrap" colspan="2"><?php print_string('trustedhosts', 'mnet'); ?></th>
<th class="header c0" colspan="2"><?php print_string('trustedhosts', 'mnet'); ?></th>
</tr>
<tr>
<td class="cell c1" colspan="2"><?php print_string('trustedhostsexplain', 'mnet'); ?></td>
</tr>
<tr>
<td class="cell c1" colspan="2"><form method="post" action="trustedhosts.php">
<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>" />
<textarea name="hostlist" cols="40" rows="20"><?php echo $trusted_hosts; ?></textarea><br />
<input type="submit" value="<?php print_string('savechanges'); ?>" />
<td class="cell c1" colspan="2">
<form method="post" action="trustedhosts.php">
<div>
<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>" />
<textarea name="hostlist" cols="40" rows="20"><?php echo $trusted_hosts; ?></textarea><br />
<input type="submit" value="<?php print_string('savechanges'); ?>" />
</div>
</form>
</td>
</tr>
</table>
<table cellspacing="0" cellpadding="5" width="500" id="hosts" class="generaltable generalbox" >
<table cellspacing="0" cellpadding="5" class="generaltable generalbox" >
<tr>
<th class="header c0" nowrap="nowrap" colspan="2"><?php print_string('testtrustedhosts', 'mnet'); ?></th>
<th class="header c0" colspan="2"><?php print_string('testtrustedhosts', 'mnet'); ?></th>
</tr>
<?php
if (!empty($test_ip_address)):
if (!empty($test_ip_address)){
?>
<tr>
<td class="cell c1" colspan="2">
<?php
if ($in_range) {
print_string('is_in_range', 'mnet', $test_ip_address);
echo '<br>';
echo '<br />';
print_string('validated_by', 'mnet', $validated_by);
} else {
print_string('not_in_range', 'mnet', $test_ip_address);
@@ -39,24 +42,27 @@ admin_externalpage_print_header($adminroot);
</td>
</tr>
<?php
else:
} else {
?>
<tr>
<td class="cell c1" colspan="2"><?php print_string('testtrustedhostsexplain', 'mnet'); ?></td>
</tr>
<?php
endif;
}
?>
<tr>
<td class="cell c1" colspan="2"><form method="get" action="trustedhosts.php">
<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>" />
<input type="text" name="testipaddress" value="<?php echo $test_ip_address; ?>" />
<input type="submit" value="<?php print_string('go'); ?>" />
<td class="cell c1" colspan="2">
<form method="get" action="trustedhosts.php">
<div>
<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>" />
<input type="text" name="testipaddress" value="<?php echo $test_ip_address; ?>" />
<input type="submit" value="<?php print_string('go'); ?>" />
</div>
</form>
</td>
</tr>
</table>
</center>
</div>
<?php
admin_externalpage_print_footer($adminroot);
?>
?>
-1
View File
@@ -49,7 +49,6 @@
/// If data submitted, process and store
if (($form = data_submitted()) && confirm_sesskey()) {
echo 'a';
$hostlist = preg_split("/[\s,]+/", $form->hostlist);
foreach($hostlist as $host) {
list($address, $mask) = explode('/', $host.'/');
+1 -1
View File
@@ -55,7 +55,7 @@
print_heading($strmodulename);
print_simple_box("<center>".get_string("configwarning", 'admin')."</center>", "center", "60%");
print_simple_box(get_string("configwarning", 'admin'), "center", "60%");
echo "<br />";
print_simple_box_start("center", "");
+35 -13
View File
@@ -2,10 +2,15 @@
// Allows the admin to manage activity modules
require_once('../config.php');
require_once('../course/lib.php');
require_once($CFG->libdir.'/adminlib.php');
require_once($CFG->libdir.'/tablelib.php');
// defines
define('MODULE_TABLE','module_administration_table');
$adminroot = admin_get_root();
admin_externalpage_setup('managemodules', $adminroot);
require_once('../course/lib.php');
$show = optional_param('show', '', PARAM_SAFEDIR);
$hide = optional_param('hide', '', PARAM_SAFEDIR);
@@ -23,6 +28,7 @@
$strsettings = get_string("settings");
$stractivities = get_string("activities");
$stractivitymodule = get_string("activitymodule");
$strshowmodulecourse = get_string('showmodulecourse');
admin_externalpage_print_header($adminroot);
@@ -149,12 +155,14 @@
ksort($modulebyname);
/// Print the table of all modules
$table->head = array ($stractivitymodule, $stractivities, $strversion, "$strhide/$strshow", $strdelete, $strsettings);
$table->align = array ("left", "right", "left", "center", "center", "center");
$table->wrap = array ("nowrap", "", "", "", "","");
$table->size = array ("100%", "10", "10", "10", "10","12");
$table->width = "100";
// construct the flexible table ready to display
$table = new flexible_table(MODULE_TABLE);
$table->define_columns(array('name', 'instances', 'version', 'hideshow', 'delete', 'settings'));
$table->define_headers(array($stractivitymodule, $stractivities, $strversion, "$strhide/$strshow", $strdelete, $strsettings));
$table->define_baseurl($CFG->wwwroot.'/'.$CFG->admin.'/modules.php');
$table->set_attribute('id', 'modules');
$table->set_attribute('class', 'generaltable generalbox boxaligncenter boxwidthwide');
$table->setup();
foreach ($modulebyname as $modulename => $module) {
@@ -169,7 +177,14 @@
$settings = "";
}
$count = count_records("$module->name");
$count = count_records_select("$module->name",'course<>0');
if ($count>0) {
$countlink = "<a href=\"{$CFG->wwwroot}/course/search.php?modulelist=$module->name" .
"&amp;sesskey={$USER->sesskey}\" title=\"$strshowmodulecourse\">$count</a>";
}
else {
$countlink = "$count";
}
if ($module->visible) {
$visible = "<a href=\"modules.php?hide=$module->name&amp;sesskey=$USER->sesskey\" title=\"$strhide\">".
@@ -178,18 +193,25 @@
} else {
$visible = "<a href=\"modules.php?show=$module->name&amp;sesskey=$USER->sesskey\" title=\"$strshow\">".
"<img src=\"$CFG->pixpath/i/show.gif\" class=\"icon\" alt=\"$strshow\" /></a>";
$class = "class=\"dimmed_text\"";
$class = " class=\"dimmed_text\"";
}
if ($module->name == "forum") {
$delete = "";
$visible = "";
$class = "";
}
$table->data[] = array ("<span $class>$icon $modulename</span>", $count, $module->version, $visible, $delete, $settings);
}
print_table($table);
echo "<br /><br />";
$table->add_data(array(
'<span'.$class.'>'.$icon.' '.$modulename.'</span>',
$countlink,
'<span'.$class.'>'.$module->version.'</span>',
$visible,
$delete,
$settings
));
}
$table->print_html();
admin_externalpage_print_footer($adminroot);
+19 -7
View File
@@ -42,7 +42,7 @@ while(@ob_end_flush());
echo '<strong>Progress:</strong>';
$i = 0;
$skiptables = array($CFG->prefix.'config');//, $CFG->prefix.'sessions2');
$skiptables = array($CFG->prefix.'config', $CFG->prefix.'user_students', $CFG->prefix.'user_teachers');//, $CFG->prefix.'sessions2');
foreach ($tables as $table) {
if (($CFG->prefix && strpos($table, $CFG->prefix) !== 0)
@@ -63,12 +63,8 @@ foreach ($tables as $table) {
if ($rs and $rs->RecordCount() > 0) {
while (!$rs->EOF) {
$text = $rs->fields[$column];
$search = '/(<(?:lang|span) lang="[a-zA-Z0-9_-]*".*?>.+?<\/(?:lang|span)>)(\s*<(?:lang|span) lang="[a-zA-Z0-9_-]*".*?>.+?<\/(?:lang|span)>)+/is';
$newtext = preg_replace_callback($search, 'multilangupgrade_impl', $text);
if ($newtext != $text) {
$newtext = addslashes($newtext);
execute_sql("UPDATE $table SET $column='$newtext' WHERE id=".$rs->fields['id'], false);
}
$id = $rs->fields['id'];
if ($i % 600 == 0) {
echo '<br />';
}
@@ -77,6 +73,22 @@ foreach ($tables as $table) {
}
$i++;
$rs->MoveNext();
if (empty($text) or is_numeric($text)) {
continue; // nothing to do
}
$search = '/(<(?:lang|span) lang="[a-zA-Z0-9_-]*".*?>.+?<\/(?:lang|span)>)(\s*<(?:lang|span) lang="[a-zA-Z0-9_-]*".*?>.+?<\/(?:lang|span)>)+/is';
$newtext = preg_replace_callback($search, 'multilangupgrade_impl', $text);
if (is_null($newtext)) {
continue; // regex error
}
if ($newtext != $text) {
$newtext = addslashes($newtext);
execute_sql("UPDATE $table SET $column='$newtext' WHERE id=$id", false);
}
}
}
}
+2 -2
View File
@@ -46,7 +46,7 @@ function online_assignment_cleanup($output=false) {
/// get a list of all courses on this site
$courses = get_courses();
$courses = get_records('course');
/// cycle through each course
foreach ($courses as $course) {
@@ -99,7 +99,7 @@ function online_assignment_cleanup($output=false) {
/// grab the section record
if (!($section = get_record('course_sections', 'id', $newsection))) {
if ($output) echo 'Serious error: Cannot retrieve section: '.$newsection.' for course: '.$course->fullname.'<br />';
if ($output) echo 'Serious error: Cannot retrieve section: '.$newsection.' for course: '. format_string($course->fullname) .'<br />';
continue;
}
+4 -3
View File
@@ -116,11 +116,12 @@ class page_admin extends page_base {
$this->init_full($section); // we're trusting that init_full() has already been called by now; it should have.
// if not, print_header() has to be called with a $section parameter
if ($this->user_allowed_editing()) {
// The search page currently doesn't handle block editing
if ($this->section != 'search' and $this->user_allowed_editing()) {
$buttons = '<div><form '.$CFG->frametarget.' method="get" action="' . $this->url_get_path() . '">'.
'<fieldset class="invisiblefieldset"><input type="hidden" name="adminedit" value="'.($this->user_is_editing()?'off':'on').'" />'.
'<div><input type="hidden" name="adminedit" value="'.($this->user_is_editing()?'off':'on').'" />'.
'<input type="hidden" name="section" value="'.$this->section.'" />'.
'<input type="submit" value="'.get_string($this->user_is_editing()?'blockseditoff':'blocksediton').'" /></fieldset></form></div>';
'<input type="submit" value="'.get_string($this->user_is_editing()?'blockseditoff':'blocksediton').'" /></div></form></div>';
} else {
$buttons = '&nbsp;';
}
+2 -2
View File
@@ -16,8 +16,8 @@ if ($_ENV['RECIPIENT'] == $CFG->noreplyaddress) {
}
$site = get_site();
$subject = get_string('noreplybouncesubject','moodle',$site->fullname);
$body = get_string('noreplybouncemessage','moodle',$site->fullname)."\n\n";
$subject = get_string('noreplybouncesubject','moodle',format_string($site->fullname));
$body = get_string('noreplybouncemessage','moodle',format_string($site->fullname))."\n\n";
$fd = fopen('php://stdin','r');
if ($fd) {
+2 -2
View File
@@ -34,7 +34,7 @@
$strregistration = get_string("registration");
$strregistrationinfo = get_string("registrationinfo");
print_header("$site->shortname: $strregistration", "$site->fullname",
print_header("$site->shortname: $strregistration", $site->fullname,
"<a href=\"../$CFG->admin/index.php\">$stradministration</a> -> $strregistration");
print_heading($strregistration);
@@ -72,7 +72,7 @@
echo '<div class="fitem">';
echo '<div class="fitemtitle"><label for="sitename">'.get_string("fullsitename").'</label></div>';
echo '<div class="felement ftext">';
echo '<input size="50" id="sitename" type="text" name="sitename" value="'.$site->fullname.'" />';
echo '<input size="50" id="sitename" type="text" name="sitename" value="'.format_string($site->fullname).'" />';
echo '</div>';
echo '</div>';
+2 -2
View File
@@ -17,7 +17,7 @@
require_capability('moodle/site:viewreports', get_context_instance(CONTEXT_SYSTEM, SITEID)); // needed?
if (empty($CFG->enablestats)) {
redirect("$CFG->wwwroot/$CFG->admin/settings.php?section=stats", get_string('mustenablestats', 'admin'));
redirect("$CFG->wwwroot/$CFG->admin/settings.php?section=stats", get_string('mustenablestats', 'admin'), 3, $adminroot);
}
@@ -117,4 +117,4 @@
}
admin_externalpage_print_footer($adminroot);
?>
?>
+1 -2
View File
@@ -45,8 +45,7 @@ class ExHtmlReporter extends HtmlReporter {
$this->strrunonlyfolder = $this->get_string('runonlyfolder');
$this->strrunonlyfile = $this->get_string('runonlyfile');
check_theme_arrows();
$this->strseparator = ' <span class="sep">'.$THEME->rarrow.'</span> ';
$this->strseparator = get_separator();
}
/**
+2 -2
View File
@@ -30,7 +30,7 @@
}
if ($mode == STATS_MODE_RANKED) {
redirect($CFG->wwwroot.'/'.$CFG->admin.'/report/stats/index.php?time='.$time);
redirect($CFG->wwwroot.'/'.$CFG->admin.'/report/stats/index.php?time='.$time, '', 3, $adminroot);
}
if (!$course = get_record("course","id",$courseid)) {
@@ -46,7 +46,7 @@
require_login();
if (empty($CFG->enablestats)) {
redirect("$CFG->wwwroot/$CFG->admin/settings.php?section=stats", get_string('mustenablestats', 'admin'));
redirect("$CFG->wwwroot/$CFG->admin/settings.php?section=stats", get_string('mustenablestats', 'admin'), 3, $adminroot);
}
require_capability('moodle/site:viewreports', get_context_instance(CONTEXT_COURSE, $course->id));
+2 -2
View File
@@ -80,9 +80,9 @@
echo '<form action="allowassign.php" method="post">';
print_table($table);
echo '<div class="singlebutton"><input type="submit" value="'.get_string('savechanges').'"/></div>';
echo '<div class="buttons"><input type="submit" value="'.get_string('savechanges').'"/>';
echo '<input type="hidden" name="dummy" value="1" />'; // this is needed otherwise we do not know a form has been submitted
echo '</form>';
echo '</div></form>';
admin_externalpage_print_footer($adminroot);
+2 -2
View File
@@ -78,9 +78,9 @@
echo '<form action="allowoverride.php" method="post">';
print_table($table);
echo '<div class="singlebutton"><input type="submit" value="'.get_string('savechanges').'"/></div>';
echo '<div class="buttons"><input type="submit" value="'.get_string('savechanges').'"/>';
echo '<input type="hidden" name="dummy" value="1" />'; // this is needed otherwise we do not know a form has been submitted
echo '</form>';
echo '</div></form>';
admin_externalpage_print_footer($adminroot);
+44 -34
View File
@@ -15,25 +15,31 @@
onfocus="getElementById('assignform').add.disabled=true;
getElementById('assignform').remove.disabled=false;
getElementById('assignform').addselect.selectedIndex=-1;">
<?php
foreach ($contextusers as $contextuser) {
$fullname = fullname($contextuser, true);
if ($contextuser->hidden) {
$hidden=' ('.get_string('hiddenassign').') ';
} else {
$hidden="";
}
echo "<option value=\"$contextuser->id\">".$fullname.", ".$contextuser->email.$hidden."</option>\n";
}
$i = 0;
foreach ($contextusers as $contextuser) {
$fullname = fullname($contextuser, true);
if ($contextuser->hidden) {
$hidden=' ('.get_string('hiddenassign').') ';
} else {
$hidden="";
}
echo "<option value=\"$contextuser->id\">".$fullname.", ".$contextuser->email.$hidden."</option>\n";
$i++;
}
if ($i==0) {
echo '<option/>'; // empty select breaks xhtml strict
}
?>
<option/>
</select></td>
<td valign="top">
<br />
<label title="<?php print_string('hiddenassign') ?>">
<input type="checkbox" name="hidden" value="1" />
<img src="<?php echo $CFG->pixpath; ?>/t/hide.gif" alt="<?php print_string('hiddenassign') ?>" class="hide-show-image" />
<?php helpbutton('hiddenassign', get_string('hiddenassign')); ?>
</label>
<?php check_theme_arrows(); ?>
<p class="arrow_button">
@@ -50,32 +56,36 @@
getElementById('assignform').remove.disabled=true;
getElementById('assignform').removeselect.selectedIndex=-1;">
<?php
$i=0;
if (!empty($searchtext)) {
echo "<optgroup label=\"$strsearchresults (" . $availableusers->_numOfRows . ")\">\n";
while ($user = rs_fetch_next_record($availableusers)) {
if (!isset($contextusers[$user->id])) {
$fullname = fullname($user, true);
echo "<option value=\"$user->id\">".$fullname.", ".$user->email."</option>\n";
$i++;
}
}
echo "</optgroup>\n";
if (!empty($searchtext)) {
echo "<optgroup label=\"$strsearchresults (" . $availableusers->_numOfRows . ")\">\n";
while ($user = rs_fetch_next_record($availableusers)) {
if (!isset($contextusers[$user->id])) {
$fullname = fullname($user, true);
echo "<option value=\"$user->id\">".$fullname.", ".$user->email."</option>\n";
}
}
echo "</optgroup>\n";
} else {
if ($usercount > MAX_USERS_PER_PAGE) {
echo '<optgroup label="'.get_string('toomanytoshow').'"><option></option></optgroup>'."\n"
} else {
if ($usercount > MAX_USERS_PER_PAGE) {
echo '<optgroup label="'.get_string('toomanytoshow').'"><option></option></optgroup>'."\n"
.'<optgroup label="'.get_string('trysearching').'"><option></option></optgroup>'."\n";
} else {
while ($user = rs_fetch_next_record($availableusers)) {
if (!isset($contextusers[$user->id])) {
$fullname = fullname($user, true);
echo "<option value=\"$user->id\">".$fullname.", ".$user->email."</option>\n";
}
}
}
}
} else {
while ($user = rs_fetch_next_record($availableusers)) {
if (!isset($contextusers[$user->id])) {
$fullname = fullname($user, true);
echo "<option value=\"$user->id\">".$fullname.", ".$user->email."</option>\n";
$i++;
}
}
}
}
if ($i==0) {
echo '<option/>'; // empty select breaks xhtml strict
}
?>
<option/>
</select>
<br />
<label for="searchtext" class="accesshide"><?php p($strsearch) ?></label>
+20 -12
View File
@@ -19,7 +19,7 @@
$timeend = optional_param('timened', 0, PARAM_INT);
$userid = optional_param('userid', 0, PARAM_INT); // needed for user tabs
$courseid = optional_param('courseid', 0, PARAM_INT); // needed for user tabs
$errors = array();
$previoussearch = ($searchtext != '') or ($previoussearch) ? 1:0;
@@ -50,9 +50,11 @@
}
} else {
$courseid = SITEID;
$course = get_site();
$course = clone($SITE);
}
require_login($course);
if ($context->contextlevel == CONTEXT_COURSE) {
require_login($context->instanceid);
} else {
@@ -61,7 +63,10 @@
require_capability('moodle/role:assign', $context);
$assignableroles = get_assignable_roles($context);
/// needed for tabs.php
$overridableroles = get_overridable_roles($context);
$assignableroles = get_assignable_roles($context);
/// Get some language strings
$strassignusers = get_string('assignusers', 'role');
@@ -103,7 +108,7 @@
/// site header
} else {
print_header("$course->fullname: $fullname", "$course->fullname",
print_header("$course->fullname: $fullname", $course->fullname,
"<a href=\"$CFG->wwwroot/user/view.php?id=$userid&amp;course=$courseid\">$fullname</a> -> $straction", "", "", true, "&nbsp;", navmenu($course));
}
@@ -163,7 +168,7 @@
$sitecontext = get_context_instance(CONTEXT_SYSTEM);
$topleveladmin = false;
// we only worry about this if the role has doanything capability at site level
if ($context->id == $sitecontext->id && $adminroles = get_roles_with_capability('moodle/site:doanything', CAP_ALLOW, $sitecontext)) {
foreach ($adminroles as $adminrole) {
@@ -172,7 +177,7 @@
}
}
}
foreach ($frm->removeselect as $removeuser) {
$removeuser = clean_param($removeuser, PARAM_INT);
@@ -205,6 +210,10 @@
print_heading_with_help(get_string('assignroles', 'role'), 'assignroles');
}
if ($context->contextlevel==CONTEXT_SYSTEM) {
print_box(get_string('globalroleswarning', 'role'));
}
if ($roleid) { /// prints a form to swap roles
/// Get all existing participants in this context.
@@ -215,7 +224,7 @@
}
$select = "username <> 'guest' AND deleted = 0 AND confirmed = 1";
$usercount = count_records_select('user', $select) - count($contextusers);
$searchtext = trim($searchtext);
@@ -227,18 +236,17 @@
$select .= " AND ($FULLNAME $LIKE '%$searchtext%' OR email $LIKE '%$searchtext%') ";
}
$availableusers = get_recordset_sql('SELECT id, firstname, lastname, email
FROM '.$CFG->prefix.'user
$availableusers = get_recordset_sql('SELECT id, firstname, lastname, email
FROM '.$CFG->prefix.'user
WHERE '.$select.'
ORDER BY lastname ASC, firstname ASC');
/// In the .html file below we loop through these results and exclude any in $contextusers
echo '<div style="text-align:center">'.$strcurrentcontext.': '.print_context_name($context).'<br/>';
echo '<label>'.$strroletoassign.'</label>: ';
$assignableroles = array('0'=>get_string('listallroles', 'role').'...') + $assignableroles;
$assignableroles = array('0'=>get_string('listallroles', 'role').'...') + $assignableroles;
popup_form("$CFG->wwwroot/$CFG->admin/roles/assign.php?userid=$userid&amp;courseid=$courseid&amp;contextid=$contextid&amp;roleid=",
$assignableroles, 'switchrole', $roleid, '');
$assignableroles, 'switchrole', $roleid, '', '', '', false, 'self', $strroletoassign);
echo '</div>';
print_simple_box_start('center');
+108 -56
View File
@@ -4,67 +4,98 @@
case 'add':
$submitlabel = get_string('addrole', 'role');
break;
case 'view':
$submitlabel = get_string('listallroles', 'role');
break;
case 'edit':
default:
$submitlabel = get_string('savechanges');
}
if ($action == 'view') {
?>
<?php
}
?>
<div align="right">
<a href="manage.php?roleid=<?php p($roleid); ?>&amp;action=duplicate"><?php print_string('duplicaterole'); ?></a>
</div>
<form id="rolesform" action="manage.php" method="post">
<fieldset class="invisiblefieldset">
<input type="hidden" name="roleid" value="<?php p($roleid) ?>" />
<input type="hidden" name="sesskey" value="<?php p(sesskey()) ?>" />
<input type="hidden" name="action" value="<?php if ($action != 'view') { echo p($action); } ?>" />
<table cellpadding="9" cellspacing="0" align="center">
<tr valign="top">
<td align="right"><?php print_string('name') ?>:</td>
<td><?php
if ($action == 'view') {
p($role->name);
} else {
echo '<input type="text" name="name" maxlength="254" size="50" value="'.s($role->name).'" />';
if (isset($errors["name"])) formerr($errors["name"]);
} ?></td>
</tr>
<tr valign="top">
<td align="right"><?php print_string('shortname') ?>:</td>
<td><?php
if ($action == 'view') {
p($role->shortname);
} else {
echo '<input type="text" name="shortname" maxlength="20" size="15" value="'.s($role->shortname).'" />';
if (isset($errors["shortname"])) formerr($errors["shortname"]);
} ?></td>
</tr>
<tr valign="top">
<td align="right"><?php print_string('description') ?>:</td>
<td><?php
if ($action == 'view') {
p($role->description);
$usehtmleditor = false;
} else {
print_textarea($usehtmleditor, 10, 50, 50, 10, 'description', $role->description);
} ?></td>
</tr>
</fieldset>
<table class="roledesc" cellpadding="9" cellspacing="0">
<?php if ($action == 'view') { ?>
<tr valign="top">
<td align="right"><?php print_string('name') ?>:</td>
<td><?php p($role->name); ?></td>
</tr>
<tr valign="top">
<td align="right"><?php print_string('shortname') ?>:</td>
<td><?php p($role->shortname); ?></td>
</tr>
<tr valign="top">
<td align="right"><?php print_string('description') ?>:</td>
<td><?php p($role->description); $usehtmleditor = false; ?></td>
</tr>
<tr valign="top">
<td align="right"><?php print_string('legacytype', 'role') ?>:</td>
<td><?php
$usehtmleditor = false;
if (empty($role->legacytype)) {
print_string('none');
} else {
print_string('legacy:'.$role->legacytype, 'role');
}
?>
</td>
</tr>
<?php } else { ?>
<tr valign="top">
<td align="right"><label for="name"><?php print_string('name') ?></label></td>
<td><?php
echo '<input type="text" id="name" name="name" maxlength="254" size="50" value="'.s($role->name).'" />';
if (isset($errors["name"])) formerr($errors["name"]);
?>
</td>
</tr>
<tr valign="top">
<td align="right"><label for="shortname"><?php print_string('shortname') ?></label></td>
<td><?php
echo '<input type="text" id="shortname" name="shortname" maxlength="20" size="15" value="'.s($role->shortname).'" />';
if (isset($errors["shortname"])) formerr($errors["shortname"]);
?>
</td>
</tr>
<tr valign="top">
<td align="right"><label for="edit-description"><?php print_string('description') ?></label></td>
<td><?php
print_textarea($usehtmleditor, 10, 50, 50, 10, 'description', $role->description);
?>
</td>
</tr>
<tr valign="top">
<td align="right"><label for="menulegacytype"><?php print_string('legacytype', 'role') ?></label></td>
<td><?php
$options = array();
$options[''] = get_string('none');
$legacyroles = get_legacy_roles();
foreach($legacyroles as $ltype=>$lcap) {
$options[$ltype] = get_string('legacy:'.$ltype, 'role');
}
choose_from_menu($options, 'legacytype', $role->legacytype, '');
?>
</td>
</tr>
<?php } ?>
</table>
<?php
<?php
print_heading_with_help(get_string('permissions','role'), 'permissions');
$strinherit = get_string('inherit','role');
$strinherit = get_string('notset','role');
$strallow = get_string('allow','role');
$strprevent = get_string('prevent','role');
$strprohibit = get_string('prohibit','role');
?>
<table class="rolecap" align="center">
<table class="rolecap">
<tr>
<th class="name" align="left" scope="col"><?php print_string('capability','role') ?></th>
@@ -84,7 +115,20 @@ $component = '';
$strrisks = s(get_string('risks', 'role'));
$strcapabilities = s(get_string('capabilities', 'role'));
// prepare legacy defaults
if (!empty($role->legacytype)) {
$defaultcaps = get_default_capabilities($role->legacytype);
} else {
$defaultcaps = false;
}
foreach ($capabilities as $capability) {
//legacy caps have their own selector
if (islegacy($capability->name)) {
continue;
}
// prints a breaker if component or name or context level
if ($capability->component != $component or $capability->contextlevel != $contextlevel) {
echo ('<tr class="rolecapheading header"><td colspan="10" class="header"><strong>'.
@@ -97,7 +141,6 @@ foreach ($capabilities as $capability) {
if (empty($errors)) {
// check the capability override for this cap, this role in this context
$sitecontext = get_context_instance(CONTEXT_SYSTEM, SITEID);
$localoverride = get_local_override($roleid, $sitecontext->id, $capability->name);
} else {
$localoverride = new object();
@@ -109,44 +152,53 @@ foreach ($capabilities as $capability) {
$riskinfo = '<td class="risk managetrust">';
$rowclasses = '';
if (RISK_MANAGETRUST & (int)$capability->riskbitmask) {
$riskinfo .= '<a target="docspopup" title="'.get_string('riskmanagetrust', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<a onclick="this.target=\'docspopup\'" title="'.get_string('riskmanagetrust', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<img src="'.$CFG->pixpath.'/i/risk_managetrust.gif" alt="'.get_string('riskmanagetrustshort', 'admin').'" /></a>';
$rowclasses .= ' riskmanagetrust';
}
$riskinfo .= '</td><td class="risk config">';
if (RISK_CONFIG & (int)$capability->riskbitmask) {
$riskinfo .= '<a target="docspopup" title="'.get_string('riskconfig', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<a onclick="this.target=\'docspopup\'" title="'.get_string('riskconfig', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<img src="'.$CFG->pixpath.'/i/risk_config.gif" alt="'.get_string('riskconfigshort', 'admin').'" /></a>';
$rowclasses .= ' riskconfig';
}
$riskinfo .= '</td><td class="risk xss">';
if (RISK_XSS & (int)$capability->riskbitmask) {
$riskinfo .= '<a target="docspopup" title="'.get_string('riskxss', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<a onclick="this.target=\'docspopup\'" title="'.get_string('riskxss', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<img src="'.$CFG->pixpath.'/i/risk_xss.gif" alt="'.get_string('riskxssshort', 'admin').'" /></a>';
$rowclasses .= ' riskxss';
}
$riskinfo .= '</td><td class="risk personal">';
if (RISK_PERSONAL & (int)$capability->riskbitmask) {
$riskinfo .= '<a target="docspopup" title="'.get_string('riskpersonal', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<a onclick="this.target=\'docspopup\'" title="'.get_string('riskpersonal', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<img src="'.$CFG->pixpath.'/i/risk_personal.gif" alt="'.get_string('riskpersonalshort', 'admin').'" /></a>';
$rowclasses .= ' riskpersonal';
}
$riskinfo .= '</td><td class="risk spam">';
if (RISK_SPAM & (int)$capability->riskbitmask) {
$riskinfo .= '<a target="docspopup" title="'.get_string('riskspam', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<a onclick="this.target=\'docspopup\'" title="'.get_string('riskspam', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<img src="'.$CFG->pixpath.'/i/risk_spam.gif" alt="'.get_string('riskspamshort', 'admin').'" /></a>';
$rowclasses .= ' riskspam';
}
$riskinfo .= '</td>';
$isinherit = (!isset($defaultcaps[$capability->name]) or $defaultcaps[$capability->name] == CAP_INHERIT) ? 'capdefault' : '';
$isallow = (isset($defaultcaps[$capability->name]) and $defaultcaps[$capability->name] == CAP_ALLOW) ? 'capdefault' : '';
$isprevent = (isset($defaultcaps[$capability->name]) and $defaultcaps[$capability->name] == CAP_PREVENT) ? 'capdefault' : '';
$isprohibit = (isset($defaultcaps[$capability->name]) and $defaultcaps[$capability->name] == CAP_PROHIBIT) ? 'capdefault' : '';
?>
<tr class="rolecap <?php echo $rowclasses; ?>">
<td class="name"><span class="cap-desc"><a target="docspopup" href="<?php echo $CFG->docroot.'/'.$lang.'/'.$strcapabilities.'/'.$capability->name ?>"><?php echo get_capability_string($capability->name); ?></a><span class="cap-name"><?php echo $capability->name ?></span></span></td>
<td class="inherit"><input type="radio" title="<?php p($strinherit); ?>" name="<?php echo $capability->name; ?>" value="<?php echo CAP_INHERIT ?>" <?php if (!isset($localoverride->permission) || $localoverride->permission==CAP_INHERIT){ echo 'checked="checked"'; }?> <?php echo $disabled; ?>/></td>
<td class="allow"><input type="radio" title="<?php p($strallow); ?>" name="<?php echo $capability->name; ?>" value="<?php echo CAP_ALLOW ?>" <?php if (isset($localoverride->permission) && $localoverride->permission==CAP_ALLOW){ echo 'checked="checked"'; }?> <?php echo $disabled; ?>/></td>
<td class="prevent" ><input type="radio" title="<?php p($strprevent); ?>" name="<?php echo $capability->name; ?>" value="<?php echo CAP_PREVENT ?>" <?php if (isset($localoverride->permission) && $localoverride->permission==CAP_PREVENT){ echo 'checked="checked"'; }?> <?php echo $disabled; ?>/></td>
<td class="prohibit" ><input type="radio" title="<?php p($strprohibit); ?>" name="<?php echo $capability->name; ?>" value="<?php echo CAP_PROHIBIT ?>" <?php if (isset($localoverride->permission) && $localoverride->permission==CAP_PROHIBIT){ echo 'checked="checked"'; }?> <?php echo $disabled; ?>/></td>
<td class="name"><span class="cap-desc"><a onclick="this.target='docspopup'" href="<?php echo $CFG->docroot.'/'.$lang.'/'.$strcapabilities.'/'.$capability->name ?>"><?php echo get_capability_string($capability->name); ?></a><span class="cap-name"><?php echo $capability->name ?></span></span></td>
<td class="inherit <?php echo $isinherit ?>">
<input type="radio" title="<?php p($strinherit); ?>" name="<?php echo $capability->name; ?>" value="<?php echo CAP_INHERIT ?>" <?php if (!isset($localoverride->permission) || $localoverride->permission==CAP_INHERIT){ echo 'checked="checked"'; }?> <?php echo $disabled; ?>/></td>
<td class="allow <?php echo $isallow ?>">
<input type="radio" title="<?php p($strallow); ?>" name="<?php echo $capability->name; ?>" value="<?php echo CAP_ALLOW ?>" <?php if (isset($localoverride->permission) && $localoverride->permission==CAP_ALLOW){ echo 'checked="checked"'; }?> <?php echo $disabled; ?>/></td>
<td class="prevent <?php echo $isprevent ?>" >
<input type="radio" title="<?php p($strprevent); ?>" name="<?php echo $capability->name; ?>" value="<?php echo CAP_PREVENT ?>" <?php if (isset($localoverride->permission) && $localoverride->permission==CAP_PREVENT){ echo 'checked="checked"'; }?> <?php echo $disabled; ?>/></td>
<td class="prohibit <?php echo $isprohibit ?>" >
<input type="radio" title="<?php p($strprohibit); ?>" name="<?php echo $capability->name; ?>" value="<?php echo CAP_PROHIBIT ?>" <?php if (isset($localoverride->permission) && $localoverride->permission==CAP_PROHIBIT){ echo 'checked="checked"'; }?> <?php echo $disabled; ?>/></td>
<?php echo $riskinfo; ?>
@@ -155,11 +207,11 @@ foreach ($capabilities as $capability) {
<?php } ?>
</table>
<div class="submit" align="center">
<input type="submit" value="<?php p($submitlabel) ?>" />
<?php if ($action != 'view') { ?>
<div class="submit buttons">
<input type="submit" value="<?php p($submitlabel) ?>" />
<input type="submit" name="cancel" value="<?php print_string('cancel') ?>" />
<?php } ?>
</div>
<?php } ?>
</form>
+143 -30
View File
@@ -15,7 +15,9 @@
$confirm = optional_param('confirm', 0, PARAM_BOOL);
$cancel = optional_param('cancel', 0, PARAM_BOOL);
$sitecontext = get_context_instance(CONTEXT_SYSTEM, SITEID);
$sitecontext = get_context_instance(CONTEXT_SYSTEM);
require_capability('moodle/role:manage', $sitecontext);
if ($cancel) {
redirect('manage.php');
@@ -55,6 +57,12 @@
if ($data = data_submitted() and confirm_sesskey()) {
$shortname = moodle_strtolower(clean_param(clean_filename($shortname), PARAM_SAFEDIR)); // only lowercase safe ASCII characters
$legacytype = required_param('legacytype', PARAM_RAW);
$legacyroles = get_legacy_roles();
if (!array_key_exists($legacytype, $legacyroles)) {
$legacytype = '';
}
if (empty($name)) {
$errors['name'] = get_string('errorbadrolename', 'role');
@@ -69,12 +77,19 @@
}
if (empty($errors)) {
$newrole = create_role($name, $shortname, $description);
$newroleid = create_role($name, $shortname, $description);
// set proper legacy type
if (!empty($legacytype)) {
assign_capability($legacyroles[$legacytype], CAP_ALLOW, $newroleid, $sitecontext->id);
}
} else {
$newrole = new object();
$newrole->name = $name;
$newrole->shortname = $shortname;
$newrole->name = $name;
$newrole->shortname = $shortname;
$newrole->description = $description;
$newrole->legacytype = $legacytype;
}
$allowed_values = array(CAP_INHERIT, CAP_ALLOW, CAP_PREVENT, CAP_PROHIBIT);
@@ -84,6 +99,12 @@
if (!isset($data->{$cap->name})) {
continue;
}
// legacy caps have their own selector
if (islegacy($data->{$cap->name})) {
continue;
}
$capname = $cap->name;
$value = clean_param($data->{$cap->name}, PARAM_INT);
if (!in_array($value, $allowed_values)) {
@@ -91,11 +112,12 @@
}
if (empty($errors)) {
assign_capability($capname, $value, $newrole, $sitecontext->id);
assign_capability($capname, $value, $newroleid, $sitecontext->id);
} else {
$newrole->$capname = $value;
}
}
if (empty($errors)) {
redirect('manage.php');
}
@@ -106,6 +128,12 @@
if ($data = data_submitted() and confirm_sesskey()) {
$shortname = moodle_strtolower(clean_param(clean_filename($shortname), PARAM_SAFEDIR)); // only lowercase safe ASCII characters
$legacytype = required_param('legacytype', PARAM_RAW);
$legacyroles = get_legacy_roles();
if (!array_key_exists($legacytype, $legacyroles)) {
$legacytype = '';
}
if (empty($name)) {
$errors['name'] = get_string('errorbadrolename', 'role');
@@ -126,9 +154,10 @@
}
if (!empty($errors)) {
$newrole = new object();
$newrole->name = $name;
$newrole->shortname = $shortname;
$newrole->name = $name;
$newrole->shortname = $shortname;
$newrole->description = $description;
$newrole->legacytype = $legacytype;
}
$allowed_values = array(CAP_INHERIT, CAP_ALLOW, CAP_PREVENT, CAP_PROHIBIT);
@@ -138,6 +167,12 @@
if (!isset($data->{$cap->name})) {
continue;
}
// legacy caps have their own selector
if (islegacy($data->{$cap->name}) === 0 ) {
continue;
}
$capname = $cap->name;
$value = clean_param($data->{$cap->name}, PARAM_INT);
if (!in_array($value, $allowed_values)) {
@@ -171,6 +206,7 @@
assign_capability($capname, $value, $roleid, $sitecontext->id);
}
}
}
if (empty($errors)) {
@@ -183,6 +219,16 @@
if (!update_record('role', $role)) {
error('Could not update role!');
}
// set proper legacy type
foreach($legacyroles as $ltype=>$lcap) {
if ($ltype == $legacytype) {
assign_capability($lcap, CAP_ALLOW, $roleid, $sitecontext->id);
} else {
unassign_capability($lcap, $roleid);
}
}
redirect('manage.php');
}
}
@@ -190,7 +236,7 @@
case 'delete':
if (in_array($roleid, $defaultroles)) {
error('This role is used as one of the default system roles, it can not be deleted');
error('This role is used as one of the default system roles, it can not be deleted');
}
if ($confirm and data_submitted() and confirm_sesskey()) {
if (!delete_role($roleid)) {
@@ -243,17 +289,38 @@
redirect('manage.php');
break;
case 'duplicate':
if (!array_key_exists($roleid, $roles)) {
redirect('manage.php');
}
if ($confirm and data_submitted() and confirm_sesskey()) {
//ok - lets duplicate!
} else {
// show confirmation
admin_externalpage_print_header($adminroot);
$optionsyes = array('action'=>'duplicate', 'roleid'=>$roleid, 'sesskey'=>sesskey(), 'confirm'=>1);
$optionsno = array('action'=>'view', 'roleid'=>$roleid);
$a = new object();
$a->id = $roleid;
$a->name = $roles[$roleid]->name;
$a->shortname = $roles[$roleid]->shortname;
notice_yesno(get_string('duplicaterolesure', 'role', $a), 'manage.php', 'manage.php', $optionsyes, $optionsno, 'post', 'get');
admin_externalpage_print_footer($adminroot);
die;
}
// duplicate current role
$sourcerole = get_record('role','id',$roleid);
$fullname = $sourcerole->name;
$shortname = $sourcerole->shortname;
$currentfullname = "";
$currentshortname = "";
$counter = 0;
// find a name for the duplicated role
// find a name for the duplicated role
do {
if ($counter) {
$suffixfull = " ".get_string("copyasnoun")." ".$counter;
@@ -269,14 +336,46 @@
$courseshort = get_record("role","shortname",addslashes($currentshortname));
$counter++;
} while ($coursefull || $courseshort);
$description = 'duplicate of '.$fullname;
$description = 'duplicate of '.$fullname;
if ($newrole = create_role($currentfullname, $currentshortname, $description)) {
// dupilcate all the capabilities
role_cap_duplicate($sourcerole, $newrole);
}
}
redirect('manage.php');
break;
case 'reset':
if (!array_key_exists($roleid, $roles)) {
redirect('manage.php');
}
if ($confirm and data_submitted() and confirm_sesskey()) {
reset_role_capabilities($roleid);
redirect('manage.php?action=view&amp;roleid='.$roleid);
} else {
// show confirmation
admin_externalpage_print_header($adminroot);
$optionsyes = array('action'=>'reset', 'roleid'=>$roleid, 'sesskey'=>sesskey(), 'confirm'=>1);
$optionsno = array('action'=>'view', 'roleid'=>$roleid);
$a = new object();
$a->id = $roleid;
$a->name = $roles[$roleid]->name;
$a->shortname = $roles[$roleid]->shortname;
$a->legacytype = get_legacy_type($roleid);
if (empty($a->legacytype)) {
$warning = get_string('resetrolesurenolegacy', 'role', $a);
} else {
$warning = get_string('resetrolesure', 'role', $a);
}
notice_yesno($warning, 'manage.php', 'manage.php', $optionsyes, $optionsno, 'post', 'get');
admin_externalpage_print_footer($adminroot);
die;
}
break;
default:
break;
}
@@ -294,9 +393,10 @@
$roleid = 0;
if (empty($errors) or empty($newrole)) {
$role = new object();
$role->name='';
$role->shortname='';
$role->description='';
$role->name = '';
$role->shortname = '';
$role->description = '';
$role->legacytype = '';
} else {
$role = stripslashes_safe($newrole);
}
@@ -306,6 +406,7 @@
if(!$role = get_record('role', 'id', $roleid)) {
error('Incorrect role ID!');
}
$role->legacytype = get_legacy_type($role->id);
}
foreach ($roles as $rolex) {
@@ -332,18 +433,28 @@
break;
}
echo '<div align="center" class="selector">';
echo '<div class="selector">';
if ($action == 'view') {
echo get_string('selectrole', 'role').': ';
echo '<form style="display:inline;" id="switchrole" action="manage.php" method="get">';
echo '<input type="hidden" name="action" value="view" />';
choose_from_menu ($roleoptions, 'roleid', $roleid, get_string('listallroles', 'role').'...', $script='switchrole.submit()');
echo '</form>';
echo '<form style="display:inline;" id="editrole" action="manage.php" method="get">';
echo '<input type="hidden" name="roleid" value="'.$roleid.'" />';
echo '<input type="hidden" name="action" value="edit" />';
echo '<input type="submit" value="'.get_string('edit').'" />';
echo '</form>';
popup_form('manage.php?action=view&amp;roleid=', $roleoptions, 'switchrole', $roleid, '', '', '',
false, 'self', get_string('selectrole', 'role'));
echo '<div class="buttons">';
$legacytype = get_legacy_type($roleid);
$options = array();
$options['roleid'] = $roleid;
$options['action'] = 'edit';
print_single_button('manage.php', $options, get_string('edit'));
$options['action'] = 'reset';
if (empty($legacytype)) {
print_single_button('manage.php', $options, get_string('resetrolenolegacy', 'role'));
} else {
print_single_button('manage.php', $options, get_string('resetrole', 'role'));
}
$options['action'] = 'duplicate';
print_single_button('manage.php', $options, get_string('duplicaterole', 'role'));
print_single_button('manage.php', null, get_string('listallroles', 'role'));
echo '</div>';
}
echo '</div>';
@@ -419,7 +530,9 @@
$options = new object();
$options->action = 'add';
echo '<div class="buttons">';
print_single_button('manage.php', $options, get_string('addrole', 'role'), 'get');
echo '</div>';
}
admin_externalpage_print_footer($adminroot);
@@ -468,12 +581,12 @@ function role_cap_duplicate($sourcerole, $targetrole) {
$systemcontext = get_context_instance(CONTEXT_SYSTEM);
$caps = get_records_sql("SELECT * FROM {$CFG->prefix}role_capabilities
WHERE roleid = $sourcerole->id
AND contextid = $systemcontext->id");
AND contextid = $systemcontext->id");
// adding capabilities
foreach ($caps as $cap) {
unset($cap->id);
$cap->roleid = $targetrole;
insert_record('role_capabilities', $cap);
}
}
}
?>
+6
View File
@@ -1,6 +1,12 @@
<?php
// this page deals with the 2 tabs for manage.php and grant.php
if (!defined('MOODLE_INTERNAL')) {
die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page
}
$toprow = array();
$toprow[] = new tabobject('manage', $CFG->wwwroot.'/'.$CFG->admin.'/roles/manage.php', get_string('manageroles', 'role'),'', true);
$toprow[] = new tabobject('allowassign', $CFG->wwwroot.'/'.$CFG->admin.'/roles/allowassign.php', get_string('allowassign', 'role'));
+16 -15
View File
@@ -6,11 +6,13 @@
?>
<form id="overrideform" action="override.php" method="post">
<fieldset class="invisiblefieldset">
<input type="hidden" name="contextid" value="<?php p($contextid) ?>" />
<input type="hidden" name="roleid" value="<?php p($roleid) ?>" />
<input type="hidden" name="sesskey" value="<?php p(sesskey()) ?>" />
<input type="hidden" name="userid" value="<?php p($userid) ?>" />
<input type="hidden" name="courseid" value="<?php p($courseid) ?>" />
</fieldset>
<table class="rolecap">
<tr>
@@ -31,6 +33,12 @@
$strcapabilities = s(get_string('capabilities', 'role'));
foreach ($capabilities as $capability) {
// legacy caps should not be overriden - we must use proper capabilities if needed
if (islegacy($capability->name)) {
continue;
}
// prints a breaker if component or name or context level
if ($capability->component != $component or $capability->contextlevel != $contextlevel) {
echo ('<tr class="rolecapheading header"><td colspan="10" class="header"><strong>'.get_component_string($capability->component, $capability->contextlevel).'</strong></td></tr>');
@@ -57,36 +65,36 @@
$isprohibit = 0;
}
$isdisabled = $isprohibit || islegacy($capability->name);
$isdisabled = $isprohibit;
$riskinfo = '<td class="risk managetrust">';
$rowclasses = '';
if (RISK_MANAGETRUST & (int)$capability->riskbitmask) {
$riskinfo .= '<a target="docspopup" title="'.get_string('riskmanagetrust', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<a onclick="this.target=\'docspopup\'" title="'.get_string('riskmanagetrust', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<img src="'.$CFG->pixpath.'/i/risk_managetrust.gif" alt="'.get_string('riskmanagetrustshort', 'admin').'" /></a>';
$rowclasses .= ' riskmanagetrust';
}
$riskinfo .= '</td><td class="risk config">';
if (RISK_CONFIG & (int)$capability->riskbitmask) {
$riskinfo .= '<a target="docspopup" title="'.get_string('riskconfig', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<a onclick="this.target=\'docspopup\'" title="'.get_string('riskconfig', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<img src="'.$CFG->pixpath.'/i/risk_config.gif" alt="'.get_string('riskconfigshort', 'admin').'" /></a>';
$rowclasses .= ' riskconfig';
}
$riskinfo .= '</td><td class="risk xss">';
if (RISK_XSS & (int)$capability->riskbitmask) {
$riskinfo .= '<a target="docspopup" title="'.get_string('riskxss', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<a onclick="this.target=\'docspopup\'" title="'.get_string('riskxss', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<img src="'.$CFG->pixpath.'/i/risk_xss.gif" alt="'.get_string('riskxssshort', 'admin').'" /></a>';
$rowclasses .= ' riskxss';
}
$riskinfo .= '</td><td class="risk personal">';
if (RISK_PERSONAL & (int)$capability->riskbitmask) {
$riskinfo .= '<a target="docspopup" title="'.get_string('riskpersonal', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<a onclick="this.target=\'docspopup\'" title="'.get_string('riskpersonal', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<img src="'.$CFG->pixpath.'/i/risk_personal.gif" alt="'.get_string('riskpersonalshort', 'admin').'" /></a>';
$rowclasses .= ' riskpersonal';
}
$riskinfo .= '</td><td class="risk spam">';
if (RISK_SPAM & (int)$capability->riskbitmask) {
$riskinfo .= '<a target="docspopup" title="'.get_string('riskspam', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<a onclick="this.target=\'docspopup\'" title="'.get_string('riskspam', 'admin').'" href="'.$CFG->docroot.'/'.$lang.'/'.$strrisks.'">';
$riskinfo .= '<img src="'.$CFG->pixpath.'/i/risk_spam.gif" alt="'.get_string('riskspamshort', 'admin').'" /></a>';
$rowclasses .= ' riskspam';
}
@@ -96,13 +104,7 @@
?>
<tr class="rolecap <?php echo $rowclasses; ?>">
<td class="name">
<span class="cap-desc">
<a target="docspopup" href="<?php echo $CFG->docroot.'/'.$lang.'/'.$strcapabilities.'/'.$capability->name ?>">
<?php echo get_capability_string($capability->name); ?></a>
</span>
<span class="cap-name"><?php echo $capability->name ?></span>
</td>
<td class="name"><span class="cap-desc"><a onclick="this.target='docspopup'" href="<?php echo $CFG->docroot.'/'.$lang.'/'.$strcapabilities.'/'.$capability->name ?>"><?php echo get_capability_string($capability->name); ?></a><span class="cap-name"><?php echo $capability->name ?></span></span></td>
<td class="inherit">
<input type="radio" title="<?php p($strinherit); ?>" name="<?php echo $capability->name; ?>" value="0"
@@ -136,8 +138,7 @@
<?php } ?>
</table>
<br />
<div align="center">
<div class="submit buttons">
<input type="submit" value="<?php print_string('savechanges') ?>" />
<input type="submit" name="cancel" value="<?php print_string('cancel') ?>" />
</div>
+33 -16
View File
@@ -2,7 +2,7 @@
require_once('../../config.php');
$contextid = required_param('contextid',PARAM_INT); // context id
$contextid = required_param('contextid', PARAM_INT); // context id
$roleid = optional_param('roleid', 0, PARAM_INT); // requested role id
$userid = optional_param('userid', 0, PARAM_INT); // needed for user tabs
$courseid = optional_param('courseid', 0, PARAM_INT); // needed for user tabs
@@ -12,29 +12,34 @@
error('Bad context ID');
}
if (!$sitecontext = get_context_instance(CONTEXT_SYSTEM, SITEID)) {
if (!$sitecontext = get_context_instance(CONTEXT_SYSTEM)) {
error('No site ID');
}
if ($context->id == $sitecontext->id) {
error ('Can not override base role capabilities');
error('Can not override base role capabilities');
}
require_capability('moodle/role:override', $context); // Just to make sure
if (!has_capability('moodle/role:override', $context)) {
error('You do not have permission to change overrides in this context!');
}
if ($courseid) {
if (!$course = get_record('course', 'id', $courseid)) {
error('Bad course ID');
}
} else {
$course = $SITE;
$course = clone($SITE);
$courseid = SITEID;
}
require_login($course);
$baseurl = 'override.php?contextid='.$context->id;
if (!empty($userid)) {
$baseurl .= '&amp;userid='.$userid;
}
if (!empty($courseid)) {
if ($courseid != SITEID) {
$baseurl .= '&amp;courseid='.$courseid;
}
@@ -42,6 +47,9 @@
redirect($baseurl);
}
/// needed for tabs.php
$overridableroles = get_overridable_roles($context);
$assignableroles = get_assignable_roles($context);
/// Get some language strings
@@ -53,6 +61,7 @@
$strparticipants = get_string('participants');
/// Make sure this user can override that role
if ($roleid) {
if (!user_can_override($context, $roleid)) {
error ('you can not override this role in this context');
@@ -64,18 +73,27 @@
$fullname = fullname($user, has_capability('moodle/site:viewfullnames', $context));
}
/// get all cababilities
$capabilities = fetch_context_capabilities($context);
/// Process incoming role override
if ($data = data_submitted() and $roleid and confirm_sesskey()) {
$allowed_values = array(CAP_INHERIT, CAP_ALLOW, CAP_PREVENT, CAP_PROHIBIT);
$capabilities = fetch_context_capabilities($context); // capabilities applicable in this context
$localoverrides = get_records_select('role_capabilities', "roleid = $roleid AND contextid = $context->id",
'', 'capability, permission, id');
foreach ($capabilities as $cap) {
if (!isset($data->{$cap->name})) {
//cap not specified in form
continue;
}
if (islegacy($data->{$cap->name})) {
continue;
}
$capname = $cap->name;
$value = clean_param($data->{$cap->name}, PARAM_INT);
if (!in_array($value, $allowed_values)) {
@@ -129,7 +147,7 @@
/// site header
} else {
print_header("$course->fullname: $fullname", "$course->fullname",
print_header("$course->fullname: $fullname", $course->fullname,
"<a href=\"$CFG->wwwroot/user/view.php?id=$userid&amp;course=$course->id\">$fullname</a> -> $straction", "", "", true, "&nbsp;", navmenu($course));
}
$showroles = 1;
@@ -151,15 +169,13 @@
print_heading_with_help(get_string('overrides', 'role'), 'overrides');
$overridableroles = get_overridable_roles($context);
if ($roleid) {
/// prints a form to swap roles
echo '<div align="center">'.$strcurrentcontext.': '.print_context_name($context).'<br/>';
echo $strroletooverride.': ';
$overridableroles = array('0'=>get_string('listallroles', 'role').'...') + $overridableroles;
echo '<div class="selector">';
echo $strcurrentcontext.': '.print_context_name($context).'<br/>';
$overridableroles = array('0'=>get_string('listallroles', 'role').'...') + $overridableroles;
popup_form("$CFG->wwwroot/$CFG->admin/roles/override.php?userid=$userid&amp;courseid=$courseid&amp;contextid=$contextid&amp;roleid=",
$overridableroles, 'switchrole', $roleid, '');
$overridableroles, 'switchrole', $roleid, '', '', '', false, 'self', $strroletooverride);
echo '</div>';
$parentcontexts = get_parent_contexts($context);
@@ -177,11 +193,12 @@
$lang = str_replace('_utf8', '', current_language());
// Get the capabilities overrideable in this context
if ($capabilities = fetch_context_capabilities($context)) {
if (!empty($capabilities)) {
// Print the capabilities overrideable in this context
print_simple_box_start('center');
include_once('override.html');
print_simple_box_end();
} else {
notice(get_string('nocapabilitiesincontext', 'role'),
$CFG->wwwroot.'/'.$CFG->admin.'/roles/'.$baseurl);
+37 -13
View File
@@ -1,6 +1,11 @@
<?php // $Id$
// Handles headers and tabs for the roles control at any level apart from SYSTEM level
// We also assume that $currenttab, $assignableroles and $overridableroles are defined
if (!defined('MOODLE_INTERNAL')) {
die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page
}
if ($currenttab != 'update') {
switch ($context->contextlevel) {
@@ -29,11 +34,14 @@ if ($currenttab != 'update') {
case CONTEXT_COURSE:
if ($context->instanceid != SITEID) {
$streditcoursesettings = get_string("editcoursesettings");
$course = get_record('course', 'id', $context->instanceid);
print_header($streditcoursesettings, "$course->fullname",
require_login($course);
print_header($streditcoursesettings, $course->fullname,
"<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> -> $straction");
}
}
break;
case CONTEXT_GROUP:
@@ -54,6 +62,8 @@ if ($currenttab != 'update') {
error("The required instance of this module doesn't exist");
}
require_login($course);
$strnav = "<a href=\"$CFG->wwwroot/mod/$module->name/view.php?id=$cm->id\">$instance->name</a> ->";
$fullmodulename = get_string("modulename", $module->name);
$streditinga = get_string("editinga", "moodle", $fullmodulename);
@@ -65,7 +75,6 @@ if ($currenttab != 'update') {
$focuscursor = "form.name";
}
$COURSE = $course;
print_header_simple($streditinga, '',
"<a href=\"$CFG->wwwroot/mod/$module->name/index.php?id=$course->id\">$strmodulenameplural</a> ->
$strnav <a href=\"$CFG->wwwroot/course/mod.php?update=$cm->id&amp;sesskey=".sesskey()."\">$streditinga</a> -> $straction", $focuscursor, "", false);
@@ -81,6 +90,9 @@ if ($currenttab != 'update') {
switch ($blockinstance->pagetype) {
case 'course-view':
if ($course = get_record('course', 'id', $blockinstance->pageid)) {
require_login($course);
if ($course->id != SITEID) {
$navigation = "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> -> $navigation";
}
@@ -104,7 +116,7 @@ if ($currenttab != 'update') {
break;
default:
error ('This is an unknown context!');
error ('This is an unknown context (' . $context->contextlevel . ') in admin/roles/tabs.php!');
return false;
}
@@ -123,14 +135,7 @@ if ($context->contextlevel != CONTEXT_SYSTEM) { // Print tabs for anything ex
$toprow[] = new tabobject('roles', $CFG->wwwroot.'/'.$CFG->admin.'/roles/assign.php?contextid='.
$context->id, get_string('roles'));
if (isset($tabsmode)) {
if (!isset($assignableroles)) {
$assignableroles = get_assignable_roles($context);
}
if (!isset($overridableroles)) {
$overridableroles = get_overridable_roles($context);
}
if (!empty($tabsmode)) {
if (!empty($assignableroles)) {
$secondrow[] = new tabobject('assign',
@@ -157,6 +162,25 @@ if ($context->contextlevel != CONTEXT_SYSTEM) { // Print tabs for anything ex
$activetwo = array();
}
/// Here other core tabs should go (always calling tabs.php files)
/// All the logic to decide what to show must be self-cointained in the tabs file
/// ej.:
/// include_once($CFG->dirroot . '/grades/tabs.php');
/// Finally, we support adding some 'on-the-fly' tabs here
/// All the logic to decide what to show must be self-cointained in the tabs file
if (isset($CFG->extratabs) && !empty($CFG->extratabs)) {
if ($extratabs = explode(',', $CFG->extratabs)) {
asort($extratabs);
foreach($extratabs as $extratab) {
/// Each extra tab mus be one $CFG->dirroot relative file
if (file_exists($CFG->dirroot . '/' . $extratab)) {
include_once($CFG->dirroot . '/' . $extratab);
}
}
}
}
if (!empty($secondrow)) {
$tabs = array($toprow, $secondrow);
} else {
+7
View File
@@ -59,8 +59,10 @@ if ($statusmsg != '') {
$resultshtml = search_settings_html(admin_get_root(), $query);
echo '<form action="search.php" method="post" id="adminsettings">';
echo '<div>';
echo '<input type="hidden" name="sesskey" value="' . sesskey() . '" />';
echo '<input type="hidden" name="query" value="' . s($query) . '" />';
echo '</div>';
echo '<fieldset>';
echo '<div class="clearer"><!-- --></div>';
if ($resultshtml != '') {
@@ -112,6 +114,11 @@ function search_settings(&$node, $query) {
function search_settings_html(&$node, $query) {
global $CFG;
if ($query == ''){
return '';
}
if (is_a($node, 'admin_category')) {
$entries = array_keys($node->children);
$return = '';
+7 -1
View File
@@ -10,14 +10,20 @@ $temp->add(new admin_setting_configcheckbox('allowuserthemes', get_string('allow
$temp->add(new admin_setting_configcheckbox('allowcoursethemes', get_string('allowcoursethemes', 'admin'), get_string('configallowcoursethemes', 'admin'), 0));
$temp->add(new admin_setting_configcheckbox('allowuserblockhiding', get_string('allowuserblockhiding', 'admin'), get_string('configallowuserblockhiding', 'admin'), 1));
$temp->add(new admin_setting_configcheckbox('showblocksonmodpages', get_string('showblocksonmodpages', 'admin'), get_string('configshowblocksonmodpages', 'admin'), 0));
$temp->add(new admin_setting_configcheckbox('tabselectedtofront', get_string('tabselectedtofronttext', 'admin'), get_string('tabselectedtofront', 'admin'), 0));
$ADMIN->add('themes', $temp);
$ADMIN->add('themes', new admin_externalpage('themeselector', get_string('themeselector','admin'), $CFG->wwwroot . '/theme/index.php'));
# for CALENDAR_TF_12 and CALENDAR_TF_24 ...
require_once($CFG->dirroot . '/calendar/lib.php');
// calendar
$temp = new admin_settingpage('calendar', get_string('calendarsettings','admin'));
$temp->add(new admin_setting_special_adminseesall());
$temp->add(new admin_setting_configselect('calendar_site_timeformat', get_string('pref_timeformat', 'calendar'), get_string('explain_site_timeformat', 'calendar'), '0',
array( 0 => get_string('default', 'calendar'),
CALENDAR_TF_12 => get_string('timeformat_12', 'calendar'),
CALENDAR_TF_24 => get_string('timeformat_24', 'calendar')
)));
$temp->add(new admin_setting_configselect('calendar_startwday', get_string('configstartwday', 'admin'), get_string('helpstartofweek', 'admin'), 0,
array(
0 => get_string('sunday', 'calendar'),
+6 -3
View File
@@ -6,13 +6,16 @@
$temp = new admin_settingpage('langsettings', get_string('languagesettings', 'admin'));
$temp->add(new admin_setting_configselect('lang', get_string('lang', 'admin'), get_string('configlang', 'admin'), current_language(), get_list_of_languages())); // $CFG->lang might be set in installer already, default en or en_utf8 is in setup.php
$temp->add(new admin_setting_configcheckbox('langmenu', get_string('langmenu', 'admin'), get_string('configlangmenu', 'admin'), 1));
$temp->add(new admin_setting_configtext('langlist', get_string('langlist', 'admin'), get_string('configlanglist', 'admin'), '', PARAM_NOTAGS));
$temp->add(new admin_setting_langlist());
$temp->add(new admin_setting_configcheckbox('langcache', get_string('langcache', 'admin'), get_string('configlangcache', 'admin'), 1));
$temp->add(new admin_setting_configtext('locale', get_string('localetext', 'admin'), get_string('configlocale', 'admin'), '', PARAM_FILE));
// new CFG variable for excel encoding
$temp->add(new admin_setting_configselect('latinexcelexport', get_string('latinexcelexport', 'admin'), get_string('configlatinexcelexport', 'admin'), '0', array('0'=>'Unicode','1'=>'Latin')));
$ADMIN->add('language', $temp);
$ADMIN->add('language', new admin_externalpage('langedit', get_string('langedit', 'admin'), "$CFG->wwwroot/$CFG->admin/lang.php"));
$ADMIN->add('language', new admin_externalpage('langimport', get_string('langpacks', 'admin'), "$CFG->wwwroot/$CFG->admin/langimport.php"));
+1 -1
View File
@@ -25,7 +25,7 @@ $temp->add(new admin_setting_configselect('fullnamedisplay', get_string('fullnam
'lastname firstname' => get_string('lastname') . ' + ' . get_string('firstname'),
'firstname' => get_string('firstname'))));
$temp->add(new admin_setting_configcheckbox('extendedusernamechars', get_string('extendedusernamechars', 'admin'), get_string('configextendedusernamechars', 'admin'), 0));
$temp->add(new admin_setting_configtext('sitepolicy', get_string('sitepolicy', 'admin'), get_string('configsitepolicy', 'admin'), '', PARAM_URL));
$temp->add(new admin_setting_configtext('sitepolicy', get_string('sitepolicy', 'admin'), get_string('configsitepolicy', 'admin'), '', PARAM_RAW));
$temp->add(new admin_setting_configselect('bloglevel', get_string('bloglevel', 'admin'), get_string('configbloglevel', 'admin'), 4, array(5 => get_string('worldblogs','blog'),
4 => get_string('siteblogs','blog'),
3 => get_string('courseblogs','blog'),
+2
View File
@@ -48,6 +48,7 @@ $temp->add(new admin_setting_configselect('digestmailtime', get_string('digestma
'22' => '22',
'23' => '23')));
$charsets = get_list_of_charsets();
unset($charsets['UTF-8']); // not needed here
$options = array();
$options['0'] = get_string('none');
$options = array_merge($options, $charsets);
@@ -85,6 +86,7 @@ $ADMIN->add('server', $temp);
$temp = new admin_settingpage('debugging', get_string('debugging', 'admin'));
$temp->add(new admin_setting_special_debug());
$temp->add(new admin_setting_special_debugdisplay());
$temp->add(new admin_setting_configcheckbox('debugsmtp', get_string('debugsmtp', 'admin'), get_string('configdebugsmtp', 'admin'), 0));
$temp->add(new admin_setting_special_perfdebug());
$ADMIN->add('server', $temp);
+11 -1
View File
@@ -23,7 +23,7 @@ $ADMIN->add('accounts', new admin_externalpage('profilefields', get_string('prof
$ADMIN->add('users', new admin_category('roles', get_string('permissions', 'role')));
$ADMIN->add('roles', new admin_externalpage('defineroles', get_string('defineroles', 'role'), "$CFG->wwwroot/$CFG->admin/roles/manage.php"));
$sitecontext = get_context_instance(CONTEXT_SYSTEM);
$ADMIN->add('roles', new admin_externalpage('assignroles', get_string('assignroles', 'role'), "$CFG->wwwroot/$CFG->admin/roles/assign.php?contextid=" . $sitecontext->id));
$ADMIN->add('roles', new admin_externalpage('assignroles', get_string('assignglobalroles', 'role'), "$CFG->wwwroot/$CFG->admin/roles/assign.php?contextid=" . $sitecontext->id));
// "userpolicies" settingpage
@@ -43,6 +43,14 @@ if ($userroles = get_roles_with_capability('moodle/legacy:user', CAP_ALLOW)) {
} else {
$userrole->id = 0;
}
if (empty($CFG->creatornewroleid)) {
if ($teacherroles = get_roles_with_capability('moodle/legacy:editingteacher', CAP_ALLOW, $context)) {
$teachereditrole = array_shift($teacherroles);
set_config('creatornewroleid', $teachereditrole->id);
} else {
set_config('creatornewroleid', 0);
}
}
// we must not use assignable roles here:
// 1/ unsetting roles as assignable for admin might bork the settings!
// 2/ default user role should not be assignable anyway
@@ -61,6 +69,8 @@ $temp->add(new admin_setting_configselect('defaultuserroleid', get_string('defau
get_string('configdefaultuserroleid', 'admin'), $userrole->id, $allroles));
$temp->add(new admin_setting_configselect('defaultcourseroleid', get_string('defaultcourseroleid', 'admin'),
get_string('configdefaultcourseroleid', 'admin'), $studentrole->id, $allroles));
$temp->add(new admin_setting_configselect('creatornewroleid', get_string('creatornewroleid', 'admin'),
get_string('configcreatornewroleid', 'admin'), $CFG->creatornewroleid, $allroles));
$temp->add(new admin_setting_configcheckbox('autologinguests', get_string('autologinguests', 'admin'), get_string('configautologinguests', 'admin'), 0));
+10 -8
View File
@@ -62,13 +62,16 @@ if ($um->preprocess_files() && confirm_sesskey()) {
// that we'll take longer, and that the process should be recycled soon
// to free up memory.
@set_time_limit(0);
@raise_memory_limit("196M");
@raise_memory_limit("192M");
if (function_exists('apache_child_terminate')) {
@apache_child_terminate();
}
//Fix mac/dos newlines
$text = my_file_get_contents($filename);
//trim utf-8 bom
$textlib = new textlib();
$text = $textlib->trim_utf8_bom($text);
//Fix mac/dos newlines
$text = preg_replace('!\r\n?!',"\n",$text);
$fp = fopen($filename, "w");
fwrite($fp,$text);
@@ -131,10 +134,10 @@ if ($um->preprocess_files() && confirm_sesskey()) {
// check for valid field names
foreach ($header as $i => $h) {
$h = trim($h); $header[$i] = $h; // remove whitespace
if (!($required[$h] or $optionalDefaults[$h] or $optional[$h])) {
if (!(isset($required[$h]) or isset($optionalDefaults[$h]) or isset($optional[$h]))) {
error(get_string('invalidfieldname', 'error', $h), 'uploaduser.php?sesskey='.$USER->sesskey);
}
if ($required[$h]) {
if (isset($required[$h])) {
$required[$h] = 0;
}
}
@@ -173,7 +176,7 @@ if ($um->preprocess_files() && confirm_sesskey()) {
// add fields to object $user
foreach ($record as $name => $value) {
// check for required values
if ($required[$name] and !$value) {
if (isset($required[$name]) and !$value) {
error(get_string('missingfield', 'error', $name). " ".
get_string('erroronline', 'error', $linenum) .". ".
get_string('processingstops', 'error'),
@@ -265,7 +268,6 @@ if ($um->preprocess_files() && confirm_sesskey()) {
//This can be used to obtain a list of userids for existing users
notify("$olduser->id ".get_string('usernotaddedregistered', 'error', $username));
$userserrors++;
continue;
}
} else { // new user
@@ -299,8 +301,8 @@ if ($um->preprocess_files() && confirm_sesskey()) {
if (!$course[$i]) {
notify(get_string('coursegroupunknown','error',$addgroup[$i]));
} else {
if ($groupid = groups_get_group_by_name($course[$i]->id, $addgroup[$i])) { //TODO:check.
$groupid[$i] = $groupid;
if ($gid = groups_get_group_by_name($course[$i]->id, $addgroup[$i])) {
$groupid[$i] = $gid;
} else {
notify(get_string('groupunknown','error',$addgroup[$i]));
}
+27 -24
View File
@@ -63,19 +63,24 @@
$strsearch = get_string('search');
$strshowallusers = get_string('showallusers');
if (empty($CFG->loginhttps)) {
$securewwwroot = $CFG->wwwroot;
} else {
$securewwwroot = str_replace('http:','https:',$CFG->wwwroot);
}
admin_externalpage_print_header($adminroot);
if ($confirmuser and confirm_sesskey()) {
if (!$user = get_record('user', 'id', $confirmuser)) {
error("No such user!");
error("No such user!", '', true);
}
$confirmeduser = new object();
$confirmeduser->id = $confirmuser;
$confirmeduser->confirmed = 1;
$confirmeduser->timemodified = time();
$auth = get_auth_plugin($user->auth);
if (update_record('user', $confirmeduser)) {
$result = $auth->user_confirm(addslashes($user->username), addslashes($user->secret));
if ($result == AUTH_CONFIRM_OK or $result == AUTH_CONFIRM_ALREADY) {
notify(get_string('userconfirmed', '', fullname($user, true)) );
} else {
notify(get_string('usernotconfirmed', '', fullname($user, true)));
@@ -88,12 +93,12 @@
}
if (!$user = get_record('user', 'id', $delete)) {
error("No such user!");
error("No such user!", '', true);
}
$primaryadmin = get_admin();
if ($user->id == $primaryadmin->id) {
error("You are not allowed to delete the primary admin user!");
error("You are not allowed to delete the primary admin user!", '', true);
}
if ($confirm != md5($delete)) {
@@ -104,12 +109,13 @@
admin_externalpage_print_footer($adminroot);
die;
} else if (data_submitted() and !$user->deleted) {
//following code is also used in auth sync scripts
$updateuser = new object();
$updateuser->id = $user->id;
$updateuser->deleted = 1;
$updateuser->username = addslashes("$user->email.".time()); // Remember it just in case
$updateuser->email = ''; // Clear this field to free it up
$updateuser->idnumber = ''; // Clear this field to free it up
$updateuser->id = $user->id;
$updateuser->deleted = 1;
$updateuser->username = addslashes("$user->email.".time()); // Remember it just in case
$updateuser->email = ''; // Clear this field to free it up
$updateuser->idnumber = ''; // Clear this field to free it up
$updateuser->timemodified = time();
if (update_record('user', $updateuser)) {
// not sure if this is needed. unenrol_student($user->id); // From all courses
@@ -126,7 +132,7 @@
error('You are not permitted to modify the MNET access control list.');
}
if (!$user = get_record('user', 'id', $acl)) {
error("No such user.");
error("No such user.", '', true);
}
if (!is_mnet_remote_user($user)) {
error('Users in the MNET access control list must be remote MNET users.');
@@ -142,12 +148,12 @@
$aclrecord->username = $user->username;
$aclrecord->accessctrl = $accessctrl;
if (!insert_record('mnet_sso_access_control', $aclrecord)) {
error("Database error - Couldn't modify the MNET access control list.");
error("Database error - Couldn't modify the MNET access control list.", '', true);
}
} else {
$aclrecord->accessctrl = $accessctrl;
if (!update_record('mnet_sso_access_control', $aclrecord)) {
error("Database error - Couldn't modify the MNET access control list.");
error("Database error - Couldn't modify the MNET access control list.", '', true);
}
}
$mnethosts = get_records('mnet_host', '', '', 'id', 'id,wwwroot,name');
@@ -296,11 +302,6 @@
}
$mainadmin = get_admin();
if(empty($CFG->loginhttps)) {
$securewwwroot = $CFG->wwwroot;
} else {
$securewwwroot = str_replace('http:','https:',$CFG->wwwroot);
}
$table->head = array ("$firstname / $lastname", $email, $city, $country, $lastaccess, "", "", "");
$table->align = array ("left", "left", "left", "left", "left", "center", "center", "center");
@@ -354,7 +355,9 @@
. get_string($changeaccessto, 'mnet') . " access</a>)";
}
// mnet info in edit column
$editbutton = $mnethosts[$user->mnethostid]->name;
if (isset($mnethosts[$user->mnethostid])) {
$editbutton = $mnethosts[$user->mnethostid]->name;
}
}
if ($user->lastaccess) {
@@ -405,7 +408,7 @@
echo "</td></tr></table>";
if (has_capability('moodle/user:create', $sitecontext)) {
print_heading('<a href="../user/editadvanced.php?id=-1">'.get_string('addnewuser').'</a>');
print_heading('<a href="'.$securewwwroot.'/user/editadvanced.php?id=-1">'.get_string('addnewuser').'</a>');
}
if (!empty($table)) {
print_table($table);
@@ -413,7 +416,7 @@
"user.php?sort=$sort&amp;dir=$dir&amp;perpage=$perpage".
"&amp;firstinitial=$firstinitial&amp;lastinitial=$lastinitial&amp;search=".urlencode(stripslashes($search))."&amp;");
if (has_capability('moodle/user:create', $sitecontext)) {
print_heading('<a href="../user/editadvanced.php?id=-1">'.get_string('addnewuser').'</a>');
print_heading('<a href="'.$securewwwroot.'/user/editadvanced.php?id=-1">'.get_string('addnewuser').'</a>');
}
}
@@ -173,7 +173,7 @@ class edit_field extends XMLDBAction {
$o.= ' </table>';
$o.= '</div></form>';
/// Calculate the buttons
$b = ' <p class="buttons">';
$b = ' <p class="centerpara buttons">';
/// The view original XML button
if ($table->getField($fieldparam)) {
$b .= '&nbsp;<a href="index.php?action=view_field_xml&amp;dir=' . urlencode(str_replace($CFG->dirroot, '', $dirpath)) . '&amp;select=original&amp;table=' . $tableparam . '&amp;field=' . $fieldparam . '">[' . $this->str['vieworiginal'] . ']</a>';
@@ -112,7 +112,7 @@ class edit_index extends XMLDBAction {
if ($structure->getIndexUses($table->getName(), $index->getName())) {
$disabled = ' disabled="disabled " ';
}
$o.= ' <tr valign="top"><td><label for="name" accesskey="n">Name:</label></td><td colspan="2"><input name="name" type="text" size="30" id="name"' . $disabled . 'value="' . s($index->getName()) . '" /></td></tr>';
$o.= ' <tr valign="top"><td><label for="name" accesskey="n">Name:</label></td><td colspan="2"><input name="name" type="text" size="30" id="name"' . $disabled . ' value="' . s($index->getName()) . '" /></td></tr>';
/// XMLDB key comment
$o.= ' <tr valign="top"><td><label for="comment" accesskey="c">Comment:</label></td><td colspan="2"><textarea name="comment" rows="3" cols="80" id="comment">' . s($index->getComment()) . '</textarea></td></tr>';
/// XMLDBIndex Type
@@ -128,7 +128,7 @@ class edit_index extends XMLDBAction {
$o.= ' </table>';
$o.= '</div></form>';
/// Calculate the buttons
$b = ' <p class="buttons">';
$b = ' <p class="centerpara buttons">';
/// The view original XML button
if ($table->getIndex($indexparam)) {
$b .= '&nbsp;<a href="index.php?action=view_index_xml&amp;dir=' . urlencode(str_replace($CFG->dirroot, '', $dirpath)) . '&amp;select=original&amp;table=' . $tableparam . '&amp;index=' . $indexparam . '">[' . $this->str['vieworiginal'] . ']</a>';
@@ -112,7 +112,7 @@ class edit_key extends XMLDBAction {
if ($structure->getKeyUses($table->getName(), $key->getName())) {
$disabled = ' disabled="disabled " ';
}
$o.= ' <tr valign="top"><td><label for="name" accesskey="n">Name:</label></td><td colspan="2"><input name="name" type="text" size="30" id="name"' . $disabled . 'value="' . s($key->getName()) . '" /></td></tr>';
$o.= ' <tr valign="top"><td><label for="name" accesskey="n">Name:</label></td><td colspan="2"><input name="name" type="text" size="30" id="name"' . $disabled . ' value="' . s($key->getName()) . '" /></td></tr>';
/// XMLDB key comment
$o.= ' <tr valign="top"><td><label for="comment" accesskey="c">Comment:</label></td><td colspan="2"><textarea name="comment" rows="3" cols="80" id="comment">' . s($key->getComment()) . '</textarea></td></tr>';
/// XMLDBKey Type
@@ -140,7 +140,7 @@ class edit_key extends XMLDBAction {
$o.= ' </table>';
$o.= '</div></form>';
/// Calculate the buttons
$b = ' <p class="buttons">';
$b = ' <p class="centerpara buttons">';
/// The view original XML button
if ($table->getKey($keyparam)) {
$b .= '&nbsp;<a href="index.php?action=view_key_xml&amp;dir=' . urlencode(str_replace($CFG->dirroot, '', $dirpath)) . '&amp;select=original&amp;table=' . $tableparam . '&amp;key=' . $keyparam . '">[' . $this->str['vieworiginal'] . ']</a>';
@@ -133,7 +133,7 @@ class edit_sentence extends XMLDBAction {
$o.= ' </table>';
$o.= '</div></form>';
/// Calculate the buttons
$b = ' <p class="buttons">';
$b = ' <p class="centerpara buttons">';
/// The back to edit statement button
$b .= '&nbsp;<a href="index.php?action=edit_statement&amp;statement=' . urlencode($statementparam) . '&amp;dir=' . urlencode(str_replace($CFG->dirroot, '', $dirpath)) . '">[' . $this->str['back'] . ']</a>';
$b .= '</p>';
@@ -115,7 +115,7 @@ class edit_statement extends XMLDBAction {
$o.= ' </table>';
$o.= '</div></form>';
/// Calculate the buttons
$b = ' <p class="buttons">';
$b = ' <p class="centerpara buttons">';
/// The view original XML button
if ($origstructure->getStatement($statementparam)) {
$b .= '&nbsp;<a href="index.php?action=view_statement_xml&amp;dir=' . urlencode(str_replace($CFG->dirroot, '', $dirpath)) . '&amp;select=original&amp;statement=' . $statementparam . '">[' . $this->str['vieworiginal'] . ']</a>';
@@ -107,7 +107,7 @@ class edit_table_save extends XMLDBAction {
"<a href=\"../index.php\">" . $this->str['administration'] . "</a> -> <a href=\"index.php\">XMLDB</a>");
notice ('<p>' .implode(', ', $errors) . '</p>
<p>' . $temptable->readableInfo(),
'index.php?action=edit_table&amp;table=' . $tableparam . '&amp;dir=' . str_replace($CFG->dirroot, '', urlencode($dirpath)));
'index.php?action=edit_table&amp;table=' . $tableparam . '&amp;dir=' . urlencode(str_replace($CFG->dirroot, '', $dirpath)));
die; /// re-die :-P
}
@@ -81,6 +81,9 @@ class load_xml_file extends XMLDBAction {
return false;
}
$xmldb_file = new XMLDBFile($dbdir->path . '/install.xml');
///Set the XML DTD and schema
$xmldb_file->setDTD($CFG->dirroot . '/lib/xmldb/xmldb.dtd');
$xmldb_file->setSchema($CFG->dirroot . '/lib/xmldb/xmldb.xsd');
/// Set dbdir as necessary
if ($xmldb_file->fileExists()) {
$dbdir->xml_exists = true;
@@ -92,6 +95,7 @@ class load_xml_file extends XMLDBAction {
$loaded = $xmldb_file->loadXMLStructure();
if ($loaded && $xmldb_file->isLoaded()) {
$dbdir->xml_loaded = true;
$dbdir->filemtime = filemtime($dbdir->path . '/install.xml');
}
$dbdir->xml_file = $xmldb_file;
} else {
@@ -152,11 +152,18 @@ class main_view extends XMLDBAction {
/// The save button
if ($dbdir->path_exists &&
file_exists($key . '/install.xml') &&
is_readable($key . '/install.xml') &&
is_writeable($key . '/install.xml') &&
is_writeable($key) &&
!empty($dbdir->xml_loaded) &&
!empty($dbdir->xml_changed)) {
$b .= '<a href="index.php?action=save_xml_file&amp;dir=' . urlencode(str_replace($CFG->dirroot, '', $key)) . '&amp;time=' . time() . '&amp;postaction=main_view#lastused">[' . $this->str['save'] . ']</a>';
/// Check if the file has been manually edited while being modified in the editor
if ($dbdir->filemtime != filemtime($key . '/install.xml')) {
/// File manually modified. Add to errors.
if ($structure =& $dbdir->xml_file->getStructure()) {
$structure->errormsg = 'Warning: File locally modified while using the XMLDB Editor. Saving will overwrite local changes';
}
}
} else {
$b .= '[' . $this->str['save'] . ']';
}
+3 -1
View File
@@ -114,6 +114,8 @@ class test extends XMLDBAction {
$table->addIndexInfo('course', XMLDB_INDEX_NOTUNIQUE, array('course'));
$table->addIndexInfo('rsstype', XMLDB_INDEX_UNIQUE, array('rsstype'));
$table->setComment("This is a test'n drop table. You can drop it safely");
/// Get SQL code and execute it
$test = new stdClass;
$test->sql = $table->getCreateTableSQL($CFG->dbtype, $CFG->prefix, true);
@@ -275,7 +277,7 @@ class test extends XMLDBAction {
/// Get SQL code and execute it
$test = new stdClass;
$field = new XMLDBField('grade');
$field->setAttributes(XMLDB_TYPE_CHAR, '20', null, XMLDB_NOTNULL, null, null, null, 'test');
$field->setAttributes(XMLDB_TYPE_CHAR, '20', null, XMLDB_NOTNULL, null, null, null, "test'n drop");
$test->sql = $table->getAlterFieldSQL($CFG->dbtype, $CFG->prefix, $field, true);
$test->status = change_field_type($table, $field, false, false);
+34 -168
View File
@@ -1,15 +1,16 @@
This directory contains authentication modules.
Each of these modules describes a different way to
check that a user has provided a correct
Each of these modules describes a different way to
check that a user has provided a correct
- username, and
- username, and
- password.
Even when external forms of authentication are being used, Moodle still
maintains the internal "user" table with all the associated information about
that user such as name, email address and so on.
Multiauthentication in Moodle 1.8
-------------------------------------
@@ -22,20 +23,26 @@ part of the enabled plugin sequence).
email - authentication by email (DEFAULT METHOD)
- user fills out form with email address
- email sent to user with link
- email sent to user with link
- user clicks on link in email to confirm
- user account is created
- user can log in
none - no authentication at all .. very insecure!!
- user logs in using ANY username and password
- if the username doesn't already exist then
a new account is created
- when user tries to access a course they
- when user tries to access a course they
are forced to set up their account details
nologin - user can not log in, login as is possible
- this plugin can be used to prevent normal user login
manual - internal authentication only
- user logs in using username and password
@@ -81,7 +88,7 @@ nntp - Uses an external NNTP server
db - Uses an external database to check username/password
- user logs in using username and password
- these are checked against an external database
- if correct, user is logged in
@@ -94,6 +101,9 @@ db - Uses an external database to check username/password
Authentication API
------------------
AUTHENTICATION PLUGINS
----------------------
Each authentication plugin is now contained in a subfolder as a class definition
in the auth.php file. For instance, the LDAP authentication plugin is the class
called auth_plugin_ldap defined in:
@@ -105,13 +115,17 @@ get_auth_plugin() that does the work for you:
$ldapauth = get_auth_plugin('ldap');
If an auth is not specified, get_auth_plugin() will return you the auth plugin
defined in the $CFG->auth variable.
Auth plugin classes are pretty basic and should be extending auth_plugin_base class.
They contain the same functions that were previously in each plugin's lib.php file,
but refactored to become class methods, and tweaked to reference the plugin's instantiated
config to get at the settings, rather than the global $CFG variable.
Auth plugin classes are pretty basic. They contain the same functions that were
previously in each plugin's lib.php file, but refactored to become class
methods, and tweaked to reference the plugin's instantiated config to get at the
settings, rather than the global $CFG variable.
When creating new plugins you can either extend the abstract auth_plugin_base class
(defined in lib/authlib.php) or create a new one and implement all methods from
auth_plugin_base.
The new plugin architecture allows creating of more advanced types such as custom SSO
without the need to patch login and logout pages (see *_hook() methods in existing plugins).
Configuration
-----------------
@@ -130,12 +144,6 @@ is now accessed as
Authentication settings have been moved to the config_plugins database table,
with the plugin field set to "auth/foo" (for instance, "auth/ldap").
Upgrading from Moodle 1.7
-----------------------------
Moodle will upgrade the old auth settings (in $CFG->auth_foobar where foo is the
auth plugin and bar is the setting) to the new style in the config_plugin
database table.
Method Names
-----------------
@@ -153,155 +161,13 @@ this also avoids having to worry about which auth/lib file to include since
Moodle takes care of it for you when you create an instance with
get_auth_plugin().
Code Usage
-----------------
Code calling auth plugins can use method_exists() to determine plugin
functionality, much in the same way that function_exists() was used until now.
In addition, auth plugins provide some methods by default that can be called:
user_login($username, $password)
This is the primary method that is used by the authenticate_user_login()
function in moodlelib.php. This method should return a boolean indicating
whether or not the username and password authenticate successfully.
is_internal()
Returns true if this authentication plugin is "internal" (which means that
Moodle stores the users' passwords and other details in the local Moodle
database).
can_change_password()
Returns true if the plugin can change the users' passwords.
change_password_url()
Returns the URL for changing the users' passwords, or false if the default
URL can be used.
user_update_password($user, $newpassword)
Updates the user's password. In previous versions of Moodle, the function
auth_user_update_password accepted a username as the first parameter. The
revised function expects a user object.
config_form()
Displays the configuration form for the auth plugin, for use in the admin
pages.
process_config()
Saves the auth plugin's configuration to the database.
Other Methods
------------------
Most of functions are from ldap-authentication module and are not implemented
(yet?) on other modules. Please feel free to extend other modules to support
same features or roll your own module.
Some of the new functions are still to be tested and are not documented here
yet.
AUTHENTICATION
Basic fuctions to authenticate users with external db.
Mandatory:
auth_plugin_foo()
Constructor. At the least, it populates config member variable with settings
from the Moodle database. It makes sense to put other startup code here.
user_login($username, $password)
Authenticate username, password with userdatabase.
Returns:
true if the username and password work
and false if they don't
Optional:
get_userinfo($username)
Query other userinformation from database.
Returns:
Userinformation in array ( name => value, ....
or false in case of error
The basic class defines all applicable methods that moodle uses, you can find
more information in lib/authlib.php file.
validate_form(&$form, &$err)
Validate form data.
Returns:
Bool. Manipulates $form and $err arrays in place
COURSE CREATING
iscreator($username)
should user have rights to create courses
Returns:
True if user have rights to crete cources otherwise false
USER CREATION
Functions that enable usercreation, activation and deactivation
from moodle to external database
user_exists ($username)
Checks if given username exist on external db
Returns:
true if given usernname exist or false
user_create ($userobject,$plainpass)
Creates new user to external db. User should be created
in inactive stage until confirmed by email.
Returns:
True on success otherwise false
user_activate ($username)
activate new user after email-address is confirmed
Returns:
True on success otherwise false
user_disable ($username) {
deactivate user in external db.
Returns:
True on success otherwise false
USER INFORMATION AND SYNCRONIZATION
get_userlist ()
Get list of usernames in external db.
Returns:
All usernames in array or false on error.
get_users($filter='*')
Get ALL USEROBJECTS FROM EXTERNAL DB.
Returns:
Array of all users as objects from external db
Upgrading from Moodle 1.7
-----------------------------
Moodle will upgrade the old auth settings (in $CFG->auth_foobar where foo is the
auth plugin and bar is the setting) to the new style in the config_plugin
database table.
-92
View File
@@ -1,92 +0,0 @@
AUTHENTICATION PLUGINS
----------------------
Each authentication plugin is now contained in a subfolder as a class definition
in the auth.php file. For instance, the LDAP authentication plugin is the class
called auth_plugin_ldap defined in:
/auth/ldap/auth.php
To instantiate the class, there is a function in lib/moodlelib called
get_auth_plugin() that does the work for you:
$ldapauth = get_auth_plugin('ldap');
If an auth is not specified, get_auth_plugin() will return you the auth plugin
defined in the $CFG->auth variable.
Auth plugin classes are pretty basic. They contain the same functions that were
previously in each plugin's lib.php file, but refactored to become class
methods, and tweaked to reference the plugin's instantiated config to get at the
settings, rather than the global $CFG variable.
Configuration
-----------------
All auth plugins must have a config property that contains the name value pairs
from the config_plugins table. This is populated using the get_config() function
in the constructor. The settings keys have also had the "auth_" prefix, as well
as the auth plugin name, trimmed. For instance, what used to be
echo $CFG->auth_ldapversion;
is now accessed as
echo $ldapauth->config->version;
Authentication settings have been moved to the config_plugins database table,
with the plugin field set to "auth/foo" (for instance, "auth/ldap").
Method Names
-----------------
When the functions from lib.php were ported to methods in auth.php, the "auth_"
prefix was dropped. For instance, calls to
auth_user_login($user, $pass);
now become
$ldapauth->user_login($user, $pass);
this also avoids having to worry about which auth/lib file to include since
Moodle takes care of it for you when you create an instance with
get_auth_plugin().
Code Use
-----------------
Code calling auth plugins can use method_exists() to determine plugin
functionality, much in the same way that function_exists() was used until now.
In addition, auth plugins provide some methods by default that can be called:
user_login($username, $password)
This is the primary method that is used by the authenticate_user_login()
function in moodlelib.php. This method should return a boolean indicating
whether or not the username and password authenticate successfully.
is_internal()
Returns true if this authentication plugin is "internal" (which means that
Moodle stores the users' passwords and other details in the local Moodle
database).
can_change_password()
Returns true if the plugin can change the users' passwords.
change_password_url()
Returns the URL for changing the users' passwords, or false if the default
URL can be used.
Other Methods
-----------------
get_userinfo()
This method should return an array of fields from the authentication source
for the given username.
Upgrading from Moodle 1.7
-----------------------------
Moodle will upgrade the old auth settings (in $CFG->auth_foobar where foo is the
auth plugin and bar is the setting) to the new style in the config_plugin
database table.
-33
View File
@@ -1,33 +0,0 @@
<?php
/**
* @author Martin Dougiamas
* @license http://www.gnu.org/copyleft/gpl.html GNU Public License
* @package moodle multiauth
*
* Multiple plugin authentication
* Support library
*
* 2006-08-28 File created, AUTH return values defined.
*/
/**
* Returned when the login was successful.
*/
define('AUTH_OK', 0);
/**
* Returned when the login was unsuccessful.
*/
define('AUTH_FAIL', 1);
/**
* Returned when the login was denied (a reason for AUTH_FAIL).
*/
define('AUTH_DENIED', 2);
/**
* Returned when some error occurred (a reason for AUTH_FAIL).
*/
define('AUTH_ERROR', 4);
?>
+1284
View File
File diff suppressed because it is too large Load Diff
+190
View File
@@ -0,0 +1,190 @@
<?php
/**
* @file CAS/PGTStorage/pgt-db.php
* Basic class for PGT database storage
*/
// include phpDB library (the test was introduced in release 0.4.8 for
// the integration into Tikiwiki).
if (!class_exists('DB')) {
@include_once('DB.php');
}
/**
* @class PGTStorageDB
* The PGTStorageDB class is a class for PGT database storage. An instance of
* this class is returned by CASClient::SetPGTStorageDB().
*
* @author Pascal Aubry <pascal.aubry at univ-rennes1.fr>
*
* @ingroup internalPGTStorageDB
*/
class PGTStorageDB extends PGTStorage
{
/**
* @addtogroup internalPGTStorageDB
* @{
*/
/**
* a string representing a PEAR DB URL to connect to the database. Written by
* PGTStorageDB::PGTStorageDB(), read by getURL().
*
* @hideinitializer
* @private
*/
var $_url='';
/**
* This method returns the PEAR DB URL to use to connect to the database.
*
* @return a PEAR DB URL
*
* @private
*/
function getURL()
{
return $this->_url;
}
/**
* The handle of the connection to the database where PGT's are stored. Written by
* PGTStorageDB::init(), read by getLink().
*
* @hideinitializer
* @private
*/
var $_link = null;
/**
* This method returns the handle of the connection to the database where PGT's are
* stored.
*
* @return a handle of connection.
*
* @private
*/
function getLink()
{
return $this->_link;
}
/**
* The name of the table where PGT's are stored. Written by
* PGTStorageDB::PGTStorageDB(), read by getTable().
*
* @hideinitializer
* @private
*/
var $_table = '';
/**
* This method returns the name of the table where PGT's are stored.
*
* @return the name of a table.
*
* @private
*/
function getTable()
{
return $this->_table;
}
// ########################################################################
+240
View File
@@ -0,0 +1,240 @@
<?php
/**
* @file CAS/PGTStorage/pgt-file.php
* Basic class for PGT file storage
*/
/**
* @class PGTStorageFile
* The PGTStorageFile class is a class for PGT file storage. An instance of
* this class is returned by CASClient::SetPGTStorageFile().
*
* @author Pascal Aubry <pascal.aubry at univ-rennes1.fr>
*
* @ingroup internalPGTStorageFile
*/
class PGTStorageFile extends PGTStorage
{
/**
* @addtogroup internalPGTStorageFile
* @{
*/
/**
* a string telling where PGT's should be stored on the filesystem. Written by
* PGTStorageFile::PGTStorageFile(), read by getPath().
*
* @private
*/
var $_path;
/**
* This method returns the name of the directory where PGT's should be stored
* on the filesystem.
*
* @return the name of a directory (with leading and trailing '/')
*
* @private
*/
function getPath()
{
return $this->_path;
}
/**
* a string telling the format to use to store PGT's (plain or xml). Written by
* PGTStorageFile::PGTStorageFile(), read by getFormat().
*
* @private
*/
var $_format;
/**
* This method returns the format to use when storing PGT's on the filesystem.
*
* @return a string corresponding to the format used (plain or xml).
*
* @private
*/
function getFormat()
{
return $this->_format;
}
// ########################################################################
// DEBUGGING
// ########################################################################
/**
* This method returns an informational string giving the type of storage
* used by the object (used for debugging purposes).
*
* @return an informational string.
* @public
*/
function getStorageType()
{
return "file";
}
/**
* This method returns an informational string giving informations on the
* parameters of the storage.(used for debugging purposes).
*
* @return an informational string.
* @public
*/
function getStorageInfo()
{
return 'path=`'.$this->getPath().'\', format=`'.$this->getFormat().'\'';
}
// ########################################################################
// CONSTRUCTOR
// ########################################################################
/**
* The class constructor, called by CASClient::SetPGTStorageFile().
*
* @param $cas_parent the CASClient instance that creates the object.
* @param $format the format used to store the PGT's (`plain' and `xml' allowed).
* @param $path the path where the PGT's should be stored
*
* @public
*/
function PGTStorageFile($cas_parent,$format,$path)
{
phpCAS::traceBegin();
// call the ancestor's constructor
$this->PGTStorage($cas_parent);
if (empty($format) ) $format = CAS_PGT_STORAGE_FILE_DEFAULT_FORMAT;
if (empty($path) ) $path = CAS_PGT_STORAGE_FILE_DEFAULT_PATH;
// check that the path is an absolute path
if ( $path[0] != '/' ) {
phpCAS::error('an absolute path is needed for PGT storage to file');
}
+188
View File
@@ -0,0 +1,188 @@
<?php
/**
* @file CAS/PGTStorage/pgt-main.php
* Basic class for PGT storage
*/
/**
* @class PGTStorage
* The PGTStorage class is a generic class for PGT storage. This class should
* not be instanciated itself but inherited by specific PGT storage classes.
*
* @author Pascal Aubry <pascal.aubry at univ-rennes1.fr>
*
* @ingroup internalPGTStorage
*/
class PGTStorage
{
/**
* @addtogroup internalPGTStorage
* @{
*/
// ########################################################################
// CONSTRUCTOR
// ########################################################################
/**
* The constructor of the class, should be called only by inherited classes.
*
* @param $cas_parent the CASclient instance that creates the current object.
*
* @protected
*/
function PGTStorage($cas_parent)
{
phpCAS::traceBegin();
if ( !$cas_parent->isProxy() ) {
phpCAS::error('defining PGT storage makes no sense when not using a CAS proxy');
}
phpCAS::traceEnd();
}
// ########################################################################
// DEBUGGING
// ########################################################################
/**
* This virtual method returns an informational string giving the type of storage
* used by the object (used for debugging purposes).
*
* @public
*/
function getStorageType()
{
phpCAS::error(__CLASS__.'::'.__FUNCTION__.'() should never be called');
}
/**
* This virtual method returns an informational string giving informations on the
* parameters of the storage.(used for debugging purposes).
*
* @public
*/
function getStorageInfo()
{
phpCAS::error(__CLASS__.'::'.__FUNCTION__.'() should never be called');
}
// ########################################################################
// ERROR HANDLING
// ########################################################################
/**
* string used to store an error message. Written by PGTStorage::setErrorMessage(),
* read by PGTStorage::getErrorMessage().
*
* @hideinitializer
* @private
* @deprecated not used.
*/
var $_error_message=FALSE;
/**
* This method sets en error message, which can be read later by
* PGTStorage::getErrorMessage().
*
* @param $error_message an error message
*
* @protected
* @deprecated not used.
*/
function setErrorMessage($error_message)
File diff suppressed because it is too large Load Diff
+277
View File
@@ -0,0 +1,277 @@
<?php
/**
* @file domxml-php4-php5.php
* Require PHP5, uses built-in DOM extension.
* To be used in PHP4 scripts using DOMXML extension.
* Allows PHP4/DOMXML scripts to run on PHP5/DOM.
* (Requires PHP5/XSL extension for domxml_xslt functions)
*
* Typical use:
* <pre>
* {
* if (version_compare(PHP_VERSION,'5','>='))
* require_once('domxml-php4-to-php5.php');
* }
* </pre>
*
* Version 1.5.5, 2005-01-18, http://alexandre.alapetite.net/doc-alex/domxml-php4-php5/
*
* ------------------------------------------------------------------<br>
* Written by Alexandre Alapetite, http://alexandre.alapetite.net/cv/
*
* Copyright 2004, Licence: Creative Commons "Attribution-ShareAlike 2.0 France" BY-SA (FR),
* http://creativecommons.org/licenses/by-sa/2.0/fr/
* http://alexandre.alapetite.net/divers/apropos/#by-sa
* - Attribution. You must give the original author credit
* - Share Alike. If you alter, transform, or build upon this work,
* you may distribute the resulting work only under a license identical to this one
* - The French law is authoritative
* - Any of these conditions can be waived if you get permission from Alexandre Alapetite
* - Please send to Alexandre Alapetite the modifications you make,
* in order to improve this file for the benefit of everybody
*
* If you want to distribute this code, please do it as a link to:
* http://alexandre.alapetite.net/doc-alex/domxml-php4-php5/
*/
function domxml_new_doc($version) {return new php4DOMDocument('');}
function domxml_open_file($filename) {return new php4DOMDocument($filename);}
function domxml_open_mem($str)
{
$dom=new php4DOMDocument('');
$dom->myDOMNode->loadXML($str);
return $dom;
}
function xpath_eval($xpath_context,$eval_str,$contextnode=null) {return $xpath_context->query($eval_str,$contextnode);}
function xpath_new_context($dom_document) {return new php4DOMXPath($dom_document);}
class php4DOMAttr extends php4DOMNode
{
function php4DOMAttr($aDOMAttr) {$this->myDOMNode=$aDOMAttr;}
function Name() {return $this->myDOMNode->name;}
function Specified() {return $this->myDOMNode->specified;}
function Value() {return $this->myDOMNode->value;}
}
class php4DOMDocument extends php4DOMNode
{
function php4DOMDocument($filename='')
{
$this->myDOMNode=new DOMDocument();
if ($filename!='') $this->myDOMNode->load($filename);
}
function create_attribute($name,$value)
{
$myAttr=$this->myDOMNode->createAttribute($name);
$myAttr->value=$value;
return new php4DOMAttr($myAttr,$this);
}
function create_cdata_section($content) {return new php4DOMNode($this->myDOMNode->createCDATASection($content),$this);}
function create_comment($data) {return new php4DOMNode($this->myDOMNode->createComment($data),$this);}
function create_element($name) {return new php4DOMElement($this->myDOMNode->createElement($name),$this);}
function create_text_node($content) {return new php4DOMNode($this->myDOMNode->createTextNode($content),$this);}
function document_element() {return new php4DOMElement($this->myDOMNode->documentElement,$this);}
function dump_file($filename,$compressionmode=false,$format=false) {return $this->myDOMNode->save($filename);}
function dump_mem($format=false,$encoding=false) {return $this->myDOMNode->saveXML();}
function get_element_by_id($id) {return new php4DOMElement($this->myDOMNode->getElementById($id),$this);}
function get_elements_by_tagname($name)
{
$myDOMNodeList=$this->myDOMNode->getElementsByTagName($name);
$nodeSet=array();
$i=0;
if (isset($myDOMNodeList))
while ($node=$myDOMNodeList->item($i))
{
$nodeSet[]=new php4DOMElement($node,$this);
$i++;
}
return $nodeSet;
}
function html_dump_mem() {return $this->myDOMNode->saveHTML();}
function root() {return new php4DOMElement($this->myDOMNode->documentElement,$this);}
}
class php4DOMElement extends php4DOMNode
{
function get_attribute($name) {return $this->myDOMNode->getAttribute($name);}
function get_elements_by_tagname($name)
{
$myDOMNodeList=$this->myDOMNode->getElementsByTagName($name);
$nodeSet=array();
$i=0;
if (isset($myDOMNodeList))
while ($node=$myDOMNodeList->item($i))
{
$nodeSet[]=new php4DOMElement($node,$this->myOwnerDocument);
$i++;
}
return $nodeSet;
}
function has_attribute($name) {return $this->myDOMNode->hasAttribute($name);}
function remove_attribute($name) {return $this->myDOMNode->removeAttribute($name);}
function set_attribute($name,$value) {return $this->myDOMNode->setAttribute($name,$value);}
function tagname() {return $this->myDOMNode->tagName;}
}
class php4DOMNode
{
var $myDOMNode;
var $myOwnerDocument;
function php4DOMNode($aDomNode,$aOwnerDocument)
{
$this->myDOMNode=$aDomNode;
$this->myOwnerDocument=$aOwnerDocument;
}
function __get($name)
{
if ($name=='type') return $this->myDOMNode->nodeType;
elseif ($name=='tagname') return $this->myDOMNode->tagName;
elseif ($name=='content') return $this->myDOMNode->textContent;
else
{
$myErrors=debug_backtrace();
trigger_error('Undefined property: '.get_class($this).'::$'.$name.' ['.$myErrors[0]['file'].':'.$myErrors[0]['line'].']',E_USER_NOTICE);
return false;
}
}
function append_child($newnode) {return new php4DOMElement($this->myDOMNode->appendChild($newnode->myDOMNode),$this->myOwnerDocument);}
function append_sibling($newnode) {return new php4DOMElement($this->myDOMNode->parentNode->appendChild($newnode->myDOMNode),$this->myOwnerDocument);}
function attributes()
+27
View File
@@ -0,0 +1,27 @@
<?php
/**
* @file languages/english.php
* @author Pascal Aubry <pascal.aubry at univ-rennes1.fr>
* @sa @link internalLang Internationalization @endlink
* @ingroup internalLang
*/
$this->_strings = array(
CAS_STR_USING_SERVER
=> 'using server',
CAS_STR_AUTHENTICATION_WANTED
=> 'CAS Authentication wanted!',
+28
View File
@@ -0,0 +1,28 @@
<?php
/**
* @file languages/english.php
* @author Pascal Aubry <pascal.aubry at univ-rennes1.fr>
* @sa @link internalLang Internationalization @endlink
* @ingroup internalLang
*/
$this->_strings = array(
CAS_STR_USING_SERVER
=> 'utilisant le serveur',
CAS_STR_AUTHENTICATION_WANTED
=> 'Authentication CAS nécessaire&nbsp;!',
+27
View File
@@ -0,0 +1,27 @@
<?php
/**
* @file languages/german.php
* @author Henrik Genssen <hg at mediafactory.de>
* @sa @link internalLang Internationalization @endlink
* @ingroup internalLang
*/
$this->_strings = array(
CAS_STR_USING_SERVER
=> 'via Server',
CAS_STR_AUTHENTICATION_WANTED
=> 'CAS Authentifizierung erforderlich!',
+27
View File
@@ -0,0 +1,27 @@
<?php
/**
* @file languages/greek.php
* @author Vangelis Haniotakis <haniotak at ucnet.uoc.gr>
* @sa @link internalLang Internationalization @endlink
* @ingroup internalLang
*/
$this->_strings = array(
CAS_STR_USING_SERVER
=> '÷ñçóéìïðïéåßôáé ï åîõðçñåôçôÞò',
CAS_STR_AUTHENTICATION_WANTED
=> 'Áðáéôåßôáé ç ôáõôïðïßçóç CAS!',
+27
View File
@@ -0,0 +1,27 @@
<?php
/**
* @file languages/japanese.php
* @author fnorif (fnorif@yahoo.co.jp)
*
* Now Encoding is EUC-JP and LF
**/
$this->_strings = array(
CAS_STR_USING_SERVER
=> 'using server',
CAS_STR_AUTHENTICATION_WANTED
=> 'CASによる認証を行います',
CAS_STR_LOGOUT
=> 'CASからログアウトします!',
CAS_STR_SHOULD_HAVE_BEEN_REDIRECTED
=> 'CASサーバに行く必要があります。自動的に転送されない場合は <a href="%s">こちら</a> をクリックして続行します。',
CAS_STR_AUTHENTICATION_FAILED
=> 'CASによる認証に失敗しました',
CAS_STR_YOU_WERE_NOT_AUTHENTICATED
=> '<p>認証できませんでした.</p><p>もう一度リクエストを送信する場合は<a href="%s">こちら</a>をクリック.</p><p>問題が解決しない場合は <a href="mailto:%s">このサイトの管理者</a>に問い合わせてください.</p>',
CAS_STR_SERVICE_UNAVAILABLE
=> 'サービス `<b>%s</b>\' は利用できません (<b>%s</b>).'
);
?>
+24
View File
@@ -0,0 +1,24 @@
<?php
/**
* @file languages/languages.php
* Internationalization constants
* @author Pascal Aubry <pascal.aubry at univ-rennes1.fr>
* @sa @link internalLang Internationalization @endlink
* @ingroup internalLang
*/
//@{
/**
+4 -7
View File
@@ -1,7 +1,4 @@
CAS-module README
Please read comments from lib.php for auth/cas module
The auth/cas module is using part of the /auth/ldap module. The /auth/ldap directory should exist.
The auth/cas use the PHPCAS project from http://esup-phpcas.sourceforge.net
CAS-module README
+1024 -214
View File
File diff suppressed because it is too large Load Diff
+12
View File
@@ -0,0 +1,12 @@
<div class="loginbox clearfix">
<div class="loginpanel">
<div>
<a href="<?php echo $CFG->wwwroot.'/login/index.php?authCAS=CAS';?>"><?php print_string("accesCAS","auth");?></a>
</div>
@@ -2,31 +2,33 @@
/** auth_ldap_sync_users.php
* Modified for cas Module
*
* This script is meant to be called from a cronjob to sync moodle with the LDAP
* This script is meant to be called from a cronjob to sync moodle with the LDAP
* backend in those setups where the LDAP backend acts as 'master'.
*
*
* Recommended cron entry:
* # 5 minutes past 4am
* 5 4 * * * /usr/bin/php -c /etc/php4/cli/php.ini /var/www/moodle/auth/ldap/auth_ldap_sync_users.php
*
* Notes:
*
* Notes:
* - If you have a large number of users, you may want to raise the memory limits
* by passing -d momory_limit=256M
* - For debugging & better logging, you are encouraged to use in the command line:
* -d log_errors=1 -d error_reporting=E_ALL -d display_errors=0 -d html_errors=0
*
*
* Performance notes:
* We have optimized it as best as we could for Postgres and mySQL, with 27K students
* we have seen this take 10 minutes.
*
* we have seen this take 10 minutes.
*
*/
if (!empty($_SERVER['GATEWAY_INTERFACE'])) {
error_log("should not be called from apache!");
if (isset($_SERVER['REMOTE_ADDR'])) {
error_log("should not be called from web server!");
exit;
}
$nomoodlecookie = true; // cookie not needed
require_once(dirname(dirname(dirname(__FILE__))).'/config.php'); // global moodle config file.
require_once($CFG->dirroot.'/course/lib.php');
@@ -34,8 +36,13 @@ require_once($CFG->dirroot.'/lib/blocklib.php');
require_once($CFG->dirroot.'/mod/resource/lib.php');
require_once($CFG->dirroot.'/mod/forum/lib.php');
require_once($CFG->dirroot.'/lib/moodlelib.php');
$CFG->debug=10;
if (!is_enabled_auth('cas')) {
echo "Plugin not enabled!";
die;
}
$casauth = get_auth_plugin('cas');
$casauth->sync_users(1000, true);
?>
?>
+303 -58
View File
@@ -6,36 +6,68 @@
$createoptions[0] = get_string("no");
$createoptions[1] = get_string("yes");
// set to defaults if undefined
if (!isset ($config->hostname)) {
// set to defaults if undefined (CAS)
if (!isset ($config->hostname))
$config->hostname = '';
}
if (!isset ($config->port)) {
if (!isset ($config->port))
$config->port = '';
}
if (!isset ($config->casversion)) {
if (!isset ($config->casversion))
$config->casversion = '';
}
if (!isset ($config->baseuri)) {
if (!isset ($config->baseuri))
$config->baseuri = '';
}
if (!isset ($config->language)) {
if (!isset ($config->language))
$config->language = '';
}
if (!isset ($config->use_cas)) {
if (!isset ($config->use_cas))
$config->use_cas = '';
}
if (!isset ($config->auth_user_create)) {
$config->auth_user_create = '0';
}
if (!isset ($config->create_user)) {
$config->create_user = '0';
}
if (!isset($config->changepasswordurl)) {
$config->changepasswordurl = '';
}
if (!isset ($config->proxycas))
$config->proxycas = '';
if (!isset ($config->logoutcas))
$config->logoutcas = '';
if (!isset ($config->multiauth))
$config->multiauth = '';
// set to defaults if undefined (LDAP)
if (!isset($config->host_url))
{ $config->host_url = ''; }
if (empty($config->ldapencoding))
{ $config->ldapencoding = 'utf-8'; }
if (!isset($config->contexts))
{ $config->contexts = ''; }
if (!isset($config->user_type))
{ $config->user_type = 'default'; }
if (!isset($config->user_attribute))
{ $config->user_attribute = ''; }
if (!isset($config->search_sub))
{ $config->search_sub = ''; }
if (!isset($config->opt_deref))
{ $config->opt_deref = LDAP_DEREF_NEVER; }
if (!isset($config->bind_dn))
{$config->bind_dn = ''; }
if (!isset($config->bind_pw))
{$config->bind_pw = ''; }
if (!isset($config->version))
{$config->version = '2'; }
if (!isset($config->objectclass))
{$config->objectclass = ''; }
if (!isset($config->memberattribute))
{$config->memberattribute = ''; }
if (!isset($config->memberattribute_isdn))
{$config->memberattribute_isdn = ''; }
if (!isset($config->groupecreators))
{$config->groupecreators = ''; }
if (!isset($config->attrcreators))
{$config->attrcreators = ''; }
if (!isset($config->removeuser))
{$config->removeuser = 0; }
$yesno = array( get_string('no'), get_string('yes') );
if (!function_exists('ldap_connect')) { // Is php4-ldap really there?
notify(get_string('auth_ldap_noextension','auth'));
}
?>
<table cellspacing="0" cellpadding="5" border="0" align="center">
<tr>
@@ -52,7 +84,7 @@
unset($options);
$options[1] = get_string('yes');
choose_from_menu ($options, 'use_cas', $config->use_cas, get_string('no'), '', '');
?>
</td>
<td><?php print_string('auth_cas_enabled', 'auth') ?></td>
@@ -63,11 +95,11 @@
<td>
<input name="hostname" type="text" size="30" value="<?php echo $config->hostname ?>" />
<?php
if (isset($err['hostname'])) {
formerr($err['hostname']);
}
}
?>
</td>
<td><?php print_string('auth_cas_hostname', 'auth') ?></td>
@@ -78,11 +110,11 @@
<td>
<input name="baseuri" type="text" size="30" value="<?php echo $config->baseuri ?>" />
<?php
if (isset($err['baseuri'])) {
formerr($err['baseuri']);
}
?>
</td>
<td><?php print_string('auth_cas_baseuri', 'auth') ?></td>
@@ -93,11 +125,11 @@
<td>
<input name="port" type="text" size="30" value="<?php echo $config->port ?>" />
<?php
if (isset($err['port'])) {
formerr($err['port']);
}
?>
</td>
<td><?php print_string('auth_cas_port', 'auth') ?></td>
@@ -130,58 +162,271 @@
<td><?php print_string('auth_cas_language', 'auth') ?></td>
</tr>
<tr valign="top">
<td align="right"><?php print_string('auth_cas_auth_user_create', 'auth') ?>: </td>
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_cas_proxycas_key', 'auth') ?>:</td>
<td>
<?php
choose_from_menu($createoptions, 'auth_user_create', $config->auth_user_create, '');
if (isset($err['auth_user_create'])) {
formerr($err['auth_user_create']);
}
?>
</td>
<td>
<?php print_string("auth_user_creation","auth"); ?>
<?php
unset($options);
$options[1] = get_string('yes');
choose_from_menu ($options, 'proxycas', $config->proxycas, get_string('no'), '', '');
?>
</td>
<td><?php print_string('auth_cas_proxycas', 'auth') ?></td>
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_cas_create_user_key', 'auth') ?>:</td>
<td align="right"><?php print_string('auth_cas_logoutcas_key', 'auth') ?>:</td>
<td>
<?php
unset($options);
$options[0] = get_string('no');
$options[1] = get_string('yes');
choose_from_menu($options, 'create_user', $config->create_user, '');
choose_from_menu ($options, 'logoutcas', $config->logoutcas, get_string('no'), '', '');
?>
</td>
<td><?php print_string('auth_cas_create_user', 'auth') ?></td>
<td><?php print_string('auth_cas_logoutcas', 'auth') ?></td>
</tr>
<tr valign="top">
<td align="right"><?php print_string('auth_cas_changepasswordurl', 'auth') ?>: </td>
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_cas_multiauth_key', 'auth') ?>:</td>
<td>
<input name="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<?php
unset($options);
$options[1] = get_string('yes');
choose_from_menu ($options, 'multiauth', $config->multiauth, get_string('no'), '', '');
?>
</td>
<td><?php print_string('auth_cas_multiauth', 'auth') ?></td>
</tr>
<tr>
<td colspan="2">
<h4><?php print_string('auth_ldap_server_settings', 'auth') ?> </h4>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="host_url"><?php print_string('auth_ldap_host_url_key','auth') ?></label></td>
<td>
<input name="host_url" id="host_url" type="text" size="30" value="<?php echo $config->host_url?>" />
<?php if (isset($err['host_url'])) formerr($err['host_url']); ?>
</td>
<td>
<?php print_string('auth_ldap_host_url','auth') ?>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="menuversion"><?php print_string('auth_ldap_version_key','auth') ?></label></td>
<td>
<?php
$versions = array();
$versions[2] = '2';
$versions[3] = '3';
choose_from_menu($versions, 'version', $config->version, '');
if (isset($err['version'])) formerr($err['version']);
?>
</td>
<td>
<?php print_string('auth_ldap_version','auth') ?>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="ldapencoding"><?php print_string("auth_ldap_ldap_encoding_key", "auth") ?></label></td>
<td>
<input id="ldapencoding" name="ldapencoding" type="text" value="<?php echo $config->ldapencoding ?>" />
<?php
if (isset($err['changepasswordurl'])) {
formerr($err['changepasswordurl']);
if (isset($err['ldapencoding'])) {
formerr($err['ldapencoding']);
}
?>
</td>
<td><?php print_string('changepasswordhelp', 'auth') ?></td>
<td><?php print_string('auth_ldap_ldap_encoding', 'auth') ?></td>
</tr>
</table>
<tr>
<td colspan="2">
<h4><?php print_string('auth_ldap_bind_settings', 'auth') ?> </h4>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="bind_dn"><?php print_string('auth_ldap_bind_dn_key','auth') ?></label></td>
<td>
<input name="bind_dn" id="bind_dn" type="text" size="30" value="<?php echo $config->bind_dn?>" />
<?php if (isset($err['bind_dn'])) formerr($err['bind_dn']); ?>
</td><td>
<?php print_string('auth_ldap_bind_dn','auth') ?>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="bind_pw"><?php print_string('auth_ldap_bind_pw_key','auth') ?></label></td>
<td>
<input name="bind_pw" id="bind_pw" type="password" size="30" value="<?php echo $config->bind_pw?>" />
<?php if (isset($err['bind_pw'])) formerr($err['bind_pw']); ?>
</td><td>
<?php print_string('auth_ldap_bind_pw','auth') ?>
</td>
</tr>
<tr>
<td colspan="2">
<h4><?php print_string('auth_ldap_user_settings', 'auth') ?> </h4>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="menuuser_type"><?php print_string('auth_ldap_user_type_key','auth') ?></label></td>
<td>
<?php choose_from_menu($this->ldap_suppported_usertypes(), 'user_type', $config->user_type, ''); ?>
<?php if (isset($err['user_type'])) formerr($err['user_type']); ?>
</td>
<td>
<?php print_string('auth_ldap_user_type', 'auth') ?>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="contexts"><?php print_string('auth_ldap_contexts_key','auth') ?></label></td>
<td>
<input name="contexts" id="contexts" type="text" size="30" value="<?php echo $config->contexts?>" />
<?php if (isset($err['contexts'])) formerr($err['contexts']); ?>
</td>
<td>
<?php print_string('auth_ldap_contexts', 'auth') ?>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="menusearch_sub"><?php print_string('auth_ldap_search_sub_key','auth') ?></label></td>
<td>
<?php choose_from_menu($yesno, 'search_sub', $config->search_sub, ''); ?>
</td>
<td>
<?php print_string('auth_ldap_search_sub','auth') ?>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="menuopt_deref"><?php print_string('auth_ldap_opt_deref_key','auth') ?></label></td>
<td>
<?php
$opt_deref = array();
$opt_deref[LDAP_DEREF_NEVER] = get_string('no');
$opt_deref[LDAP_DEREF_ALWAYS] = get_string('yes');
choose_from_menu($opt_deref, 'opt_deref', $config->opt_deref, LDAP_DEREF_NEVER, '');
if (isset($err['opt_deref'])) formerr($err['opt_deref']);
?>
</td>
<td>
<?php print_string('auth_ldap_opt_deref','auth') ?>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="user_attribute"><?php print_string('auth_ldap_user_attribute_key','auth') ?></label></td>
<td>
<input name="user_attribute" id="user_attribute" type="text" size="30" value="<?php echo $config->user_attribute?>" />
<?php if (isset($err['user_attribute'])) formerr($err['user_attribute']); ?>
</td>
<td>
<?php print_string('auth_ldap_user_attribute','auth') ?>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="memberattribute"><?php print_string('auth_ldap_memberattribute_key','auth') ?></label></td>
<td>
<input name="memberattribute" id="memberattribute" type="text" size="30" value="<?php echo $config->memberattribute?>" />
<?php if (isset($err['memberattribute'])) formerr($err['memberattribute']); ?>
</td><td>
<?php print_string('auth_ldap_memberattribute','auth') ?>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="memberattribute_isdn"><?php print_string('auth_ldap_memberattribute_isdn_key','auth') ?></label></td>
<td>
<input name="memberattribute_isdn" id="memberattribute_isdn" type="text" size="30" value="<?php echo $config->memberattribute_isdn?>" />
<?php if (isset($err['memberattribute_isdn'])) formerr($err['memberattribute_isdn']); ?>
</td><td>
<?php print_string('auth_ldap_memberattribute_isdn','auth') ?>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="objectclass"><?php print_string('auth_ldap_objectclass_key','auth') ?></label></td>
<td>
<input name="objectclass" id="objectclass" type="text" size="30" value="<?php echo $config->objectclass?>" />
<?php if (isset($err['objectclass'])) formerr($err['objectclass']); ?>
</td>
<td>
<?php print_string('auth_ldap_objectclass','auth') ?>
</td>
</tr>
<tr>
<td colspan="2">
<h4><?php print_string('coursecreators') ?> </h4>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="attrcreators_key"><?php print_string('auth_ldap_attrcreators_key','auth') ?></label></td>
<td>
<input name="attrcreators" id="attrcreators" type="text" size="30" value="<?php echo $config->attrcreators?>" />
<?php if (isset($err['attrcreators'])) formerr($err['attrcreators']); ?>
</td><td>
<?php print_string('auth_ldap_attrcreators','auth') ?>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="groupecreators_key"><?php print_string('auth_ldap_groupecreators_key','auth') ?></label></td>
<td>
<input name="groupecreators" id="groupecreators" type="text" size="30" value="<?php echo $config->groupecreators?>" />
<?php if (isset($err['groupecreators'])) formerr($err['groupecreators']); ?>
</td><td>
<?php print_string('auth_ldap_groupecreators','auth') ?>
</td>
</tr>
<tr>
<td colspan="2">
<h4><?php print_string('auth_sync_script', 'auth') ?> </h4>
</td>
</tr>
<tr valign="top">
<td align="right"><label for="menuremoveuser"><?php print_string('auth_remove_user_key','auth') ?></label></td>
<td>
<?php
$deleteopt = array();
$deleteopt['0'] = get_string('auth_remove_keep','auth');
$deleteopt['1'] = get_string('auth_remove_suspend','auth');
$deleteopt['2'] = get_string('auth_remove_delete','auth');
choose_from_menu($deleteopt, 'removeuser', $config->removeuser, '');
?>
</td>
<td>
<?php print_string('auth_remove_user','auth') ?>
</td>
</tr>
<?php
$ldapplugin = get_auth_plugin('ldap');
$ldapplugin->config_form(get_config('auth/ldap'), $err);
$help = get_string('auth_ldapextrafields','auth');
$help .= get_string('auth_updatelocal_expl','auth');
$help .= get_string('auth_fieldlock_expl','auth');
$help .= get_string('auth_updateremote_expl','auth');
$help .= '<hr />';
$help .= get_string('auth_updateremote_ldap','auth');
print_auth_lock_options('cas', $user_fields, $help, true, true);
?>
</table>
-8
View File
@@ -1,8 +0,0 @@
<table width="90%" border="0" cellspacing="10" cellpadding="5" align="center" style="font-size: small">
<tr>
<td width="50%" class="required" class="headingblock">
<p align="center"><b><font size="3"><?php formerr($errormsg) ?></font></b></p>
</td>
</tr>
</table>
-18
View File
@@ -1,18 +0,0 @@
<?php
// version $Id$
// Page for forbidden access from CAS
require("../../config.php");
if (!$site = get_site()) {
print_error('nosite', '', '', NULL, true);
}
$loginsite = get_string("loginsite");
$errormsg = get_string("auth_cas_invalidcaslogin", "auth");
print_header("$site->fullname: $loginsite", "$site->fullname", $loginsite);
include("forbidden.html");
print_footer();
exit;
?>
-85
View File
@@ -1,85 +0,0 @@
<table width="90%" border="0" cellspacing="10" cellpadding="5" align="center">
<tr>
<?php if ($show_instructions) { ?>
<td width="50%" class="headingblock">
<p align="center"><b><font size="3"><?php print_string("returningtosite") ?></font></b></p>
</td>
<td width="50%" class="headingblock">
<p align="center"><b><font size="3"><?php print_string("firsttime") ?></font></b></p>
</td>
<?php } ?>
</tr>
<tr>
<td width="50%" align="center" valign="top" class="generalbox">
<p><?php print_string("loginusing") ?>:<br />
(<?php print_string("cookiesenabled");?>)
<?php helpbutton("cookies", get_string("cookiesenabled"))?><br /><?php formerr($errormsg) ?>
</p>
<form action="index.php" method="post" id="login">
<table border="0" align="center" style="font-size: small">
<tr>
<td width="100%">
<input type="hidden" name="username" id="username" value="cas" />
<input type="hidden" name="password" id="password" value="cas" />
<input type="submit" value="<?php print_string("auth_cas_logincas", "auth") ?>" />
</td>
</tr>
</table>
</form>
<?php if ($CFG->guestloginbutton) { ?>
<hr width="80%" />
<p><?php print_string("someallowguest") ?>:</p>
<form action="index.php" method="post" id="guestlogin">
<input type="hidden" name="username" value="guest" />
<input type="hidden" name="password" value="guest" />
<input type="submit" value="<?php print_string("loginguest") ?>" />
</form>
<?php } ?>
<?php if (is_internal_auth() ) {
$changepassword = "forgot_password.php";
$changebuttonname = get_string("senddetails");
?>
<hr width="80%" />
<p><?php print_string("forgotten") ?></p>
<form action="<?php p($changepassword) ?>" method="get" id="changepassword">
<input type="submit" value="<?php p($changebuttonname) ?>" />
</form>
<?php } ?>
</td>
<?php if ($show_instructions) { ?>
<td width="50%" valign="top" class="generalbox">
<?php switch ($CFG->auth) {
case "email":
print_string("loginsteps", "", "signup.php");
?>
<div align="center">
<form action="signup.php" method="get" id="signup">
<input type="submit" value="<?php print_string("startsignup") ?>" />
</form>
</div>
<?php break;
case "none":
print_string("loginstepsnone");
break;
default:
$authplugin = get_auth_plugin($CFG->auth);
echo format_text($CFG->auth_instructions);
if (!empty($authplugin->config->user_create) and method_exists($authplugin, 'user_create')) {
?>
<div align="center">
<form action="signup.php" method="get" id="signup">
<input type="submit" value="<?php print_string("startsignup") ?>" />
</form>
</div>
<?php }
}
?>
</td></tr>
<?php } ?>
</table>
+9 -10
View File
@@ -1,10 +1,9 @@
<?PHP
// version $Id$
// List of CAS langages.
// You can add langages in /CAS/langage.
// Please send them to http://esup-phpcas.sourceforge.net
$CASLANGUAGES = array (
"greek" => "Modern Greek",
"english" => "English",
"french" => "French");
?>
<?PHP
// version $Id$
// List of CAS langages.
// You can add langages in /CAS/langage.
// Please send them to http://esup-phpcas.sourceforge.net
$CASLANGUAGES = array (
"english" => "English",
"french" => "French");
?>
-313
View File
@@ -1,313 +0,0 @@
<?php
// $Id$
// author: romualdLorthioir $
//CHANGELOG:
//05.03.2005 replace /login/index.php
defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.');
//Define variables used in page
if (!$site = get_site()) {
print_error('nosite', '', '', NULL, true);
}
if (empty($CFG->langmenu)) {
$langmenu = "";
} else {
$currlang = current_language();
$langs = get_list_of_languages();
if (empty($CFG->loginhttps)) {
$wwwroot = $CFG->wwwroot;
} else {
$wwwroot = str_replace('http:','https:',$CFG->wwwroot);
}
$langmenu = popup_form ("$wwwroot/login/index.php?lang=", $langs, "chooselang", $currlang, "", "", "", true);
}
$loginsite = get_string("loginsite");
$casauth = get_auth_plugin('cas');
$ldapauth = get_auth_plugin('ldap');
$frm = false;
$user = false;
if ((!empty($SESSION->wantsurl) and strstr($SESSION->wantsurl,'username=guest')) or $loginguest) {
/// Log in as guest automatically (idea from Zbigniew Fiedorowicz)
$frm->username = 'guest';
$frm->password = 'guest';
} else if (!empty($SESSION->wantsurl) && file_exists($CFG->dirroot.'/login/weblinkauth.php')) {
// Handles the case of another Moodle site linking into a page on this site
include($CFG->dirroot.'/login/weblinkauth.php');
if (function_exists(weblink_auth)) {
$user = weblink_auth($SESSION->wantsurl);
}
if ($user) {
$frm->username = $user->username;
} else {
$frm = data_submitted();
}
} else {
$frm = data_submitted();
}
if ($frm and (get_moodle_cookie() == '')) { // Login without cookie
$errormsg = get_string("cookiesnotenabled");
} else if ($frm) { // Login WITH cookies
$frm->username = trim(moodle_strtolower($frm->username));
if (($frm->username == 'guest') and empty($CFG->guestloginbutton)) {
$user = false; /// Can't log in as guest if guest button is disabled
$frm = false;
} else if (!$user) {
if ($CFG->auth == "cas" && $frm->username != 'guest') { /// Cas SSO case
$user = $casauth->authenticate_user_login($frm->username, $frm->password);
}else{
$user = authenticate_user_login($frm->username, $frm->password);
}
}
update_login_count();
if ($user) {
if (! $user->confirmed ) { // they never confirmed via email
print_header(get_string("mustconfirm"), get_string("mustconfirm") );
print_heading(get_string("mustconfirm"));
print_simple_box(get_string("emailconfirmsent", "", $user->email), "center");
print_footer();
die;
}
$USER = $user;
if (!empty($USER->description)) {
$USER->description = true; // No need to cart all of it around
}
$USER->loggedin = true;
$USER->site = $CFG->wwwroot; // for added security, store the site in the session
sesskey(); // for added security, used to check script parameters
if ($USER->username == "guest") {
$USER->lang = $CFG->lang; // Guest language always same as site
$USER->firstname = get_string("guestuser"); // Name always in current language
$USER->lastname = " ";
}
if (!update_user_login_times()) {
error("Wierd error: could not update login records");
}
set_moodle_cookie($USER->username);
unset($SESSION->lang);
$SESSION->justloggedin = true;
// Restore the calendar filters, if saved
if (intval(get_user_preferences('calendar_persistflt', 0))) {
include_once($CFG->dirroot.'/calendar/lib.php');
calendar_set_filters_status(get_user_preferences('calendar_savedflt', 0xff));
}
//Select password change url
$userauth = get_auth_plugin($USER->auth);
if (method_exists($userauth, 'can_change_password') and $userauth->can_change_password()) {
$passwordchangeurl=$CFG->wwwroot.'/login/change_password.php';
}
// check whether the user should be changing password
if (get_user_preferences('auth_forcepasswordchange', false)) {
if (isset($passwordchangeurl)) {
redirect($passwordchangeurl);
} else {
print_error('auth_cas_broken_password','auth');
}
}
add_to_log(SITEID, "user", "login", "view.php?id=$user->id&course=".SITEID, $user->id, 0, $user->id);
if (user_not_fully_set_up($USER)) {
$urltogo = $CFG->wwwroot.'/user/edit.php?id='.$USER->id.'&amp;course='.SITEID;
// We don't delete $SESSION->wantsurl yet, so we get there later
} else if (isset($SESSION->wantsurl) and (strpos($SESSION->wantsurl, $CFG->wwwroot) === 0)) {
$urltogo = $SESSION->wantsurl; /// Because it's an address in this site
unset($SESSION->wantsurl);
} else {
$urltogo = $CFG->wwwroot.'/'; /// Go to the standard home page
unset($SESSION->wantsurl); /// Just in case
}
// check if user password has expired
// Currently supported only for ldap-authentication module
if ($ldapauth->config->expiration == 1) {
$days2expire = $ldapauth->password_expire($USER->username);
if (intval($days2expire) > 0 && intval($days2expire) < intval($CFG->{$USER->auth.'_expiration_warning'})) {
print_header("$site->fullname: $loginsite", "$site->fullname", $loginsite, $focus, "", true, "<div align=\"right\">$langmenu</div>");
notice_yesno(get_string('auth_passwordwillexpire', 'auth', $days2expire), $passwordchangeurl, $urltogo);
print_footer();
exit;
} elseif (intval($days2expire) < 0 ) {
print_header("$site->fullname: $loginsite", "$site->fullname", $loginsite, $focus, "", true, "<div align=\"right\">$langmenu</div>");
notice_yesno(get_string('auth_passwordisexpired', 'auth'), $passwordchangeurl, $urltogo);
print_footer();
exit;
}
}
reset_login_count();
load_all_capabilities(); /// This is what lets the user do anything on the site :-)
redirect($urltogo);
exit;
} else {
if ($CFG->auth == "cas" ) { /// CAS error login
$errormsg = get_string("invalidcaslogin");
phpCAS::logout("$CFG->wwwroot/auth/cas/forbidden.php");
}else{
$errormsg = get_string("invalidlogin");
}
}
}
$user = $casauth->automatic_authenticate($user);
if ($user) {
if (! $user->confirmed ) { // they never confirmed via email
print_header(get_string("mustconfirm"), get_string("mustconfirm") );
print_heading(get_string("mustconfirm"));
print_simple_box(get_string("emailconfirmsent", "", $user->email), "center");
print_footer();
die;
}
$USER = $user;
if (!empty($USER->description)) {
$USER->description = true; // No need to cart all of it around
}
$USER->loggedin = true;
$USER->site = $CFG->wwwroot; // for added security, store the site in the session
sesskey(); // for added security, used to check script parameters
if ($USER->username == "guest") {
$USER->lang = $CFG->lang; // Guest language always same as site
$USER->firstname = get_string("guestuser"); // Name always in current language
$USER->lastname = " ";
}
if (!update_user_login_times()) {
error("Wierd error: could not update login records");
}
set_moodle_cookie($USER->username);
unset($SESSION->lang);
$SESSION->justloggedin = true;
// Restore the calendar filters, if saved
if (intval(get_user_preferences('calendar_persistflt', 0))) {
include_once($CFG->dirroot.'/calendar/lib.php');
calendar_set_filters_status(get_user_preferences('calendar_savedflt', 0xff));
}
//Select password change url
$userauth = get_auth_plugin($USER->auth);
if (method_exists($userauth, 'can_change_password') and $userauth->can_change_password()) {
$passwordchangeurl=$CFG->wwwroot.'/login/change_password.php';
}
// check whether the user should be changing password
if (get_user_preferences('auth_forcepasswordchange', false)) {
if (isset($passwordchangeurl)) {
redirect($passwordchangeurl);
} else {
print_error('auth_cas_broken_password','auth');
}
}
add_to_log(SITEID, "user", "login", "view.php?id=$user->id&course=".SITEID, $user->id, 0, $user->id);
if (user_not_fully_set_up($USER)) {
$urltogo = $CFG->wwwroot.'/user/edit.php?id='.$USER->id.'&amp;course='.SITEID;
// We don't delete $SESSION->wantsurl yet, so we get there later
} else if (isset($SESSION->wantsurl) and (strpos($SESSION->wantsurl, $CFG->wwwroot) === 0)) {
$urltogo = $SESSION->wantsurl; /// Because it's an address in this site
unset($SESSION->wantsurl);
} else {
$urltogo = $CFG->wwwroot.'/'; /// Go to the standard home page
unset($SESSION->wantsurl); /// Just in case
}
// check if user password has expired
// Currently supported only for ldap-authentication module
if ($ldapauth->config->expiration == 1) {
$days2expire = $ldapauth->password_expire($USER->username);
if (intval($days2expire) > 0 && intval($days2expire) < intval($CFG->{$USER->auth.'_expiration_warning'})) {
print_header("$site->fullname: $loginsite", "$site->fullname", $loginsite, $focus, "", true, "<div class=\"langmenu\">$langmenu</div>");
notice_yesno(get_string('auth_passwordwillexpire', 'auth', $days2expire), $passwordchangeurl, $urltogo);
print_footer();
exit;
} elseif (intval($days2expire) < 0 ) {
print_header("$site->fullname: $loginsite", "$site->fullname", $loginsite, $focus, "", true, "<div class=\"langmenu\">$langmenu</div>");
notice_yesno(get_string('auth_passwordisexpired', 'auth'), $passwordchangeurl, $urltogo);
print_footer();
exit;
}
}
reset_login_count();
load_all_capabilities(); /// This is what lets the user do anything on the site :-)
redirect($urltogo);
exit;
} else {
if (!$CFG->guestloginbutton) {
$errormsg = get_string("invalidcaslogin");
phpCAS::logout("$CFG->wwwroot/auth/cas/forbidden.php");
}
}
if (empty($errormsg)) {
$errormsg = "";
}
if (empty($SESSION->wantsurl)) {
$SESSION->wantsurl = array_key_exists('HTTP_REFERER',$_SERVER) ? $_SERVER["HTTP_REFERER"] : $CFG->wwwroot.'/';
}
if (get_moodle_cookie() == '') {
set_moodle_cookie('nobody'); // To help search for cookies
}
if (empty($frm->username)) {
$frm->username = get_moodle_cookie() === 'nobody' ? '' : get_moodle_cookie();
$frm->password = "";
}
if (!empty($frm->username)) {
$focus = "login.password";
} else {
$focus = "login.username";
}
if ($CFG->auth == "email" or $CFG->auth == "none" or chop($CFG->auth_instructions) <> "" ) {
$show_instructions = true;
} else {
$show_instructions = false;
}
print_header("$site->fullname: $loginsite", "$site->fullname", $loginsite, $focus, "", true, "<div align=\"right\">$langmenu</div>");
include($CFG->dirroot.'/auth/cas/index_form.html');
print_footer();
exit;
// No footer on this page
?>
-15
View File
@@ -1,15 +0,0 @@
<?php
// $Id$
// logout the user from CAS server (destroy the ticket)
defined('MOODLE_INTERNAL') or die('Direct access to this script is forbidden.');
global $CFG;
if ($CFG->cas_logout) {
require_once($CFG->dirroot.'/config.php');
include_once($CFG->dirroot.'/lib/cas/CAS.php');
phpCAS::client($CFG->cas_version,$CFG->cas_hostname,(int)$CFG->cas_port,$CFG->cas_baseuri);
$backurl = $CFG->wwwroot;
phpCAS::logout($backurl);
}
?>
+349 -219
View File
@@ -12,56 +12,60 @@
* 2006-08-28 File created.
*/
// This page cannot be called directly
if (!isset($CFG)) exit;
if (!defined('MOODLE_INTERNAL')) {
die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page
}
require_once($CFG->libdir.'/authlib.php');
/**
* External database authentication plugin.
*/
class auth_plugin_db {
/**
* The configuration details for the plugin.
*/
var $config;
class auth_plugin_db extends auth_plugin_base {
/**
* Constructor.
*/
function auth_plugin_db() {
$this->authtype = 'db';
$this->config = get_config('auth/db');
if (empty($this->config->extencoding)) {
$this->config->extencoding = 'utf-8';
}
}
/**
* Returns true if the username and password work and false if they are
* wrong or don't exist.
*
* @param string $username The username
* @param string $password The password
* @returns bool Authentication success or failure.
* @param string $username The username (with system magic quotes)
* @param string $password The password (with system magic quotes)
*
* @return bool Authentication success or failure.
*/
function user_login ($username, $password) {
function user_login($username, $password) {
global $CFG;
// Connect to the external database (forcing new connection)
$authdb = &ADONewConnection($this->config->type);
$authdb->Connect($this->config->host, $this->config->user, $this->config->pass, $this->config->name, true);
$authdb->SetFetchMode(ADODB_FETCH_ASSOC);
$textlib = textlib_get_instance();
$extusername = $textlib->convert(stripslashes($username), 'utf-8', $this->config->extencoding);
$extpassword = $textlib->convert(stripslashes($password), 'utf-8', $this->config->extencoding);
if ($this->config->passtype === 'internal') {
$authdb = $this->db_init();
if ($this->config->passtype === 'internal') {
// lookup username externally, but resolve
// password locally -- to support backend that
// don't track passwords
$rs = $authdb->Execute("SELECT * FROM {$this->config->table}
WHERE {$this->config->fielduser} = '$username' ");
$rs = $authdb->Execute("SELECT * FROM {$this->config->table}
WHERE {$this->config->fielduser} = '".$this->ext_addslashes($extusername)."' ");
$authdb->Close();
if (!$rs) {
print_error('auth_dbcantconnect','auth');
return false;
}
if ( $rs->RecordCount() ) {
// user exists exterally
// check username/password internally
@@ -71,60 +75,90 @@ class auth_plugin_db {
} else {
// user does not exist externally
return false;
}
}
} else {
} else {
// normal case: use external db for passwords
if ($this->config->passtype === 'md5') { // Re-format password accordingly
$password = md5($password);
$extpassword = md5($extpassword);
} else if ($this->config->passtype === 'sha1') {
$extpassword = sha1($extpassword);
}
$rs = $authdb->Execute("SELECT * FROM {$this->config->table}
WHERE {$this->config->fielduser} = '$username'
AND {$this->config->fieldpass} = '$password' ");
$rs = $authdb->Execute("SELECT * FROM {$this->config->table}
WHERE {$this->config->fielduser} = '".$this->ext_addslashes($extusername)."'
AND {$this->config->fieldpass} = '".$this->ext_addslashes($extpassword)."' ");
$authdb->Close();
if (!$rs) {
print_error('auth_dbcantconnect','auth');
return false;
}
if ( $rs->RecordCount() ) {
if ($rs->RecordCount()) {
return true;
} else {
return false;
}
}
}
}
function db_init() {
// Connect to the external database (forcing new connection)
$authdb = &ADONewConnection($this->config->type);
if (!empty($this->config->debugauthdb)) {
$authdb->debug = true;
ob_start();//start output buffer to allow later use of the page headers
}
$authdb->Connect($this->config->host, $this->config->user, $this->config->pass, $this->config->name, true);
$authdb->SetFetchMode(ADODB_FETCH_ASSOC);
if (!empty($this->config->setupsql)) {
$authdb->Execute($this->config->setupsql);
}
return $authdb;
}
/**
* retuns user attribute mappings between moodle and ldap
*
* @return array
*/
function db_attributes() {
$fields = array("firstname", "lastname", "email", "phone1", "phone2",
"department", "address", "city", "country", "description",
"idnumber", "lang" );
$moodleattributes = array();
foreach ($fields as $field) {
if (!empty($this->config->{"field_map_$field"})) {
$moodleattributes[$field] = $this->config->{"field_map_$field"};
}
}
$moodleattributes['username'] = $this->config->fielduser;
return $moodleattributes;
}
/**
* Reads any other information for a user from external database,
* then returns it in an array
*
* @param string $username (with system magic quotes)
*
* @return array without magic quotes
*/
function get_userinfo($username) {
global $CFG;
// Connect to the external database (forcing new connection)
$authdb = &ADONewConnection($this->config->type);
$authdb->Connect($this->config->host, $this->config->user, $this->config->pass, $this->config->name, true);
$authdb->SetFetchMode(ADODB_FETCH_ASSOC);
$fields = array("firstname", "lastname", "email", "phone1", "phone2",
"department", "address", "city", "country", "description",
"idnumber", "lang");
$textlib = textlib_get_instance();
$extusername = $textlib->convert(stripslashes($username), 'utf-8', $this->config->extencoding);
$authdb = $this->db_init();
//Array to map local fieldnames we want, to external fieldnames
$selectfields = array();
foreach ($fields as $field) {
if (!empty($this->config->{'field_map_' . $field})) {
$selectfields[$field] = $this->config->{'field_map_' . $field};
}
}
$selectfields = $this->db_attributes();
$result = array();
//If at least one field is mapped from external db, get that mapped data:
if ($selectfields) {
@@ -135,38 +169,36 @@ class auth_plugin_db {
$select = 'SELECT ' . substr($select,1);
$sql = $select .
" FROM {$this->config->table}" .
" WHERE {$this->config->fielduser} = '$username'";
" WHERE {$this->config->fielduser} = '".$this->ext_addslashes($extusername)."'";
if ($rs = $authdb->Execute($sql)) {
if ( $rs->RecordCount() == 1 ) {
$fields_obj = rs_fetch_record($rs);
foreach ($selectfields as $localname=>$externalname) {
if (empty($CFG->unicodedb)) {
$fields_obj->{$localname} = utf8_decode($fields_obj->{$localname});
}
$result[$localname] = addslashes(stripslashes($fields_obj->{$localname}));
$result[$localname] = $textlib->convert($fields_obj->{$localname}, $this->config->extencoding, 'utf-8');
}
}
rs_close($rs);
}
}
$authdb->Close();
return $result;
}
/**
* Change a user's password
*
* @param object $user The user to update
* @param string $newpassword The new password
* @param object $user User table object (with system magic quotes)
* @param string $newpassword Plaintext password (with system magic quotes)
*
* @return bool True on success
*/
function user_update_password($user, $newpassword) {
global $CFG;
if ($this->config->passtype === 'internal') {
return set_field('user', 'password', md5($newpassword), 'id', $user->id, 'mnethostid', $CFG->mnet_localhost_id);
return update_internal_user_password($user, $newpassword);
} else {
// we should have never been called!
return false;
@@ -179,69 +211,77 @@ class auth_plugin_db {
* Sync shouid be done by using idnumber attribute, not username.
* You need to pass firstsync parameter to function to fill in
* idnumbers if they dont exists in moodle user table.
*
*
* Syncing users removes (disables) users that dont exists anymore in external db.
* Creates new users and updates coursecreator status of users.
*
* Creates new users and updates coursecreator status of users.
*
* @param bool $do_updates Optional: set to true to force an update of existing accounts
*
* This implementation is simpler but less scalable than the one found in the LDAP module.
*
*/
function sync_users ($do_updates=0) {
function sync_users($do_updates=false) {
global $CFG;
$pcfg = get_config('auth/db');
///
/// list external users
///
/// list external users
$userlist = $this->get_userlist();
$quoteduserlist = implode("', '", $userlist);
$quoteduserlist = implode("', '", addslashes_recursive($userlist));
$quoteduserlist = "'$quoteduserlist'";
///
/// delete obsolete internal users
///
// find obsolete users
if (count($userlist)) {
$sql = 'SELECT u.id, u.username
FROM ' . $CFG->prefix .'user u
WHERE u.auth=\'db\' AND u.deleted=\'0\' AND u.username NOT IN (' . $quoteduserlist . ')';
} else {
$sql = 'SELECT u.id, u.username
FROM ' . $CFG->prefix .'user u
WHERE u.auth=\'db\' AND u.deleted=\'0\' ';
}
$remove_users = get_records_sql($sql);
/// delete obsolete internal users
if (!empty($this->config->removeuser)) {
if (!empty($remove_users)) {
print_string('auth_dbuserstoremove','auth', count($remove_users));
echo "\n";
// find obsolete users
if (count($userlist)) {
$sql = "SELECT u.id, u.username, u.email
FROM {$CFG->prefix}user u
WHERE u.auth='db' AND u.deleted=0 AND u.username NOT IN ($quoteduserlist)";
} else {
$sql = "SELECT u.id, u.username, u.email
FROM {$CFG->prefix}user u
WHERE u.auth='db' AND u.deleted=0";
}
$remove_users = get_records_sql($sql);
begin_sql();
foreach ($remove_users as $user) {
//following is copy pasted from admin/user.php
//maybe this should moved to function in lib/datalib.php
$updateuser = new stdClass();
$updateuser->id = $user->id;
$updateuser->deleted = "1";
$updateuser->timemodified = time();
if (update_record("user", $updateuser)) {
// unenrol_student($user->id); // From all courses
// remove_teacher($user->id); // From all courses
// remove_admin($user->id);
delete_records('role_assignments', 'userid', $user->id); // unassign all roles
notify(get_string("deletedactivity", "", fullname($user, true)) );
} else {
notify(get_string("deletednot", "", fullname($user, true)));
if (!empty($remove_users)) {
print_string('auth_dbuserstoremove','auth', count($remove_users)); echo "\n";
begin_sql();
foreach ($remove_users as $user) {
if ($this->config->removeuser == 2) {
//following is copy pasted from admin/user.php
//maybe this should moved to function in lib/datalib.php
$updateuser = new object();
$updateuser->id = $user->id;
$updateuser->deleted = 1;
$updateuser->username = addslashes("$user->email.".time()); // Remember it just in case
$updateuser->email = ''; // Clear this field to free it up
$updateuser->idnumber = ''; // Clear this field to free it up
$updateuser->timemodified = time();
if (update_record('user', $updateuser)) {
delete_records('role_assignments', 'userid', $user->id); // unassign all roles
//copy pasted part ends
echo "\t"; print_string('auth_dbdeleteuser', 'auth', array($user->username, $user->id)); echo "\n";
} else {
echo "\t"; print_string('auth_dbdeleteusererror', 'auth', $user->username); echo "\n";
}
} else if ($this->config->removeuser == 1) {
$updateuser = new object();
$updateuser->id = $user->id;
$updateuser->auth = 'nologin';
if (update_record('user', $updateuser)) {
echo "\t"; print_string('auth_dbsuspenduser', 'auth', array($user->username, $user->id)); echo "\n";
} else {
echo "\t"; print_string('auth_dbsuspendusererror', 'auth', $user->username); echo "\n";
}
}
}
//copy pasted part ends
}
commit_sql();
}
unset($remove_users); // free mem!
commit_sql();
}
unset($remove_users); // free mem!
}
if (!count($userlist)) {
// exit right here
@@ -269,15 +309,21 @@ class auth_plugin_db {
// only go ahead if we actually
// have fields to update locally
if (!empty($updatekeys)) {
$sql = 'SELECT u.id, u.username
FROM ' . $CFG->prefix .'user u
$sql = 'SELECT u.id, u.username
FROM ' . $CFG->prefix .'user u
WHERE u.auth=\'db\' AND u.deleted=\'0\' AND u.username IN (' . $quoteduserlist . ')';
$update_users = get_records_sql($sql);
foreach ($update_users as $user) {
$this->db_update_user_record($user->username, $updatekeys);
if ($update_users = get_records_sql($sql)) {
print "User entries to update: ". count($update_users). "\n";
foreach ($update_users as $user) {
echo "\t"; print_string('auth_dbupdatinguser', 'auth', array($user->username, $user->id));
if (!$this->update_user_record(addslashes($user->username), $updatekeys)) {
echo " - ".get_string('skipped');
}
echo "\n";
}
unset($update_users); // free memory
}
unset($update_users); // free memory
}
}
@@ -287,12 +333,12 @@ class auth_plugin_db {
///
// NOTE: this is very memory intensive
// and generally inefficient
$sql = 'SELECT u.id, u.username
FROM ' . $CFG->prefix .'user u
$sql = 'SELECT u.id, u.username
FROM ' . $CFG->prefix .'user u
WHERE u.auth=\'db\' AND u.deleted=\'0\'';
$users = get_records_sql($sql);
// simplify down to usernames
$usernames = array();
foreach ($users as $user) {
@@ -304,44 +350,38 @@ class auth_plugin_db {
unset($usernames);
if (!empty($add_users)) {
print_string('auth_dbuserstoadd','auth',count($add_users));
echo "\n";
print_string('auth_dbuserstoadd','auth',count($add_users)); echo "\n";
begin_sql();
foreach($add_users as $user) {
$username = $user;
$user = $this->get_userinfo_asobj($user);
// prep a few params
$user->username = $username;
$user->modified = time();
$user->confirmed = 1;
$user->auth = 'db';
$user->mnethostid = $CFG->mnet_localhost_id;
// insert it
$old_debug=$CFG->debug;
$CFG->debug=10;
if (empty($user->lang)) {
$user->lang = $CFG->lang;
}
$user = addslashes_object($user);
// maybe the user has been deleted before
if ($old_user = get_record('user', 'username', $user->username, 'deleted', 1, 'mnethostid', $user->mnethostid)) {
$user->id = $old_user->id;
set_field('user', 'deleted', 0, 'username', $user->username);
print_string('auth_dbrevive','auth',array($user->username, $user->id));
echo "\n";
} elseif ($id=insert_record ('user',$user)) { // it is truly a new user
print_string('auth_dbinsertuser','auth',array($user->username, $id));
echo "\n";
$user->id = $id;
echo "\t"; print_string('auth_dbreviveuser', 'auth', array(stripslashes($user->username), $user->id)); echo "\n";
} elseif ($id = insert_record ('user',$user)) { // it is truly a new user
echo "\t"; print_string('auth_dbinsertuser','auth',array(stripslashes($user->username), $id)); echo "\n";
// if relevant, tag for password generation
if ($this->config->passtype === 'internal') {
set_user_preference('auth_forcepasswordchange', 1, $id);
set_user_preference('create_password', 1, $id);
}
} else {
print_string('auth_dbinsertusererror', 'auth', $user->username);
echo "\n";
echo "\t"; print_string('auth_dbinsertusererror', 'auth', $user->username); echo "\n";
}
$CFG->debug=$old_debug;
}
commit_sql();
unset($add_users); // free mem
@@ -349,96 +389,85 @@ class auth_plugin_db {
return true;
}
function user_exists ($username) {
function user_exists($username) {
// Connect to the external database (forcing new connection)
$authdb = &ADONewConnection($this->config->type);
$authdb->Connect($this->config->host, $this->config->user, $this->config->pass, $this->config->name, true);
$authdb->SetFetchMode(ADODB_FETCH_ASSOC);
/// Init result value
$result = false;
$rs = $authdb->Execute("SELECT * FROM {$this->config->table}
WHERE {$this->config->fielduser} = '$username' ");
$authdb->Close();
$textlib = textlib_get_instance();
$extusername = $textlib->convert(stripslashes($username), 'utf-8', $this->config->extencoding);
$authdb = $this->db_init();
$rs = $authdb->Execute("SELECT * FROM {$this->config->table}
WHERE {$this->config->fielduser} = '".$this->ext_addslashes($extusername)."' ");
if (!$rs) {
print_error('auth_dbcantconnect','auth');
return false;
}
if ( $rs->RecordCount() ) {
} else if ( $rs->RecordCount() ) {
// user exists exterally
// check username/password internally
// ?? there is no $password variable, so why??
/*if ($user = get_record('user', 'username', $username)) {
return ($user->password == md5($password));
}*/
return $rs->RecordCount();
} else {
// user does not exist externally
return false;
}
$result = $rs->RecordCount();
}
$authdb->Close();
return $result;
}
function get_userlist() {
// Connect to the external database (forcing new connection)
$authdb = &ADONewConnection($this->config->type);
$authdb->Connect($this->config->host, $this->config->user, $this->config->pass, $this->config->name, true);
$authdb->SetFetchMode(ADODB_FETCH_ASSOC);
/// Init result value
$result = array();
$authdb = $this->db_init();
// fetch userlist
$rs = $authdb->Execute("SELECT {$this->config->fielduser} AS username
FROM {$this->config->table} ");
$authdb->Close();
if (!$rs) {
print_error('auth_dbcantconnect','auth');
return false;
}
if ( $rs->RecordCount() ) {
$userlist = array();
} else if ( $rs->RecordCount() ) {
while ($rec = rs_fetch_next_record($rs)) {
array_push($userlist, $rec->username);
array_push($result, $rec->username);
}
return $userlist;
} else {
return array();
}
}
$authdb->Close();
return $result;
}
/**
* reads userinformation from DB and return it in an object
*
* @param string $username username
* @param string $username username (with system magic quotes)
* @return array
*/
function get_userinfo_asobj($username) {
$user_array = truncate_userinfo($this->get_userinfo($username));
$user = new object;
$user = new object();
foreach($user_array as $key=>$value) {
$user->{$key} = $value;
}
return $user;
}
/*
* will update a local user record from an external source.
* is a lighter version of the one in moodlelib -- won't do
/**
* will update a local user record from an external source.
* is a lighter version of the one in moodlelib -- won't do
* expensive ops such as enrolment
*
* If you don't pass $updatekeys, there is a performance hit and
* If you don't pass $updatekeys, there is a performance hit and
* values removed from DB won't be removed from moodle.
*
* @param string $username username (with system magic quotes)
*/
function db_update_user_record($username, $updatekeys=false) {
function update_user_record($username, $updatekeys=false) {
global $CFG;
$pcfg = get_config('auth/db');
//just in case check text case
$username = trim(moodle_strtolower($username));
// get the current user record
$user = get_record('user', 'username', $username, 'mnethostid', $CFG->mnet_localhost_id);
if (empty($user)) { // trouble
@@ -450,69 +479,139 @@ class auth_plugin_db {
// Ensure userid is not overwritten
$userid = $user->id;
// TODO: this had a function_exists() - now we have a $this
if ($newinfo = $this->get_userinfo($username)) {
$newinfo = truncate_userinfo($newinfo);
if (empty($updatekeys)) { // all keys? this does not support removing values
$updatekeys = array_keys($newinfo);
}
foreach ($updatekeys as $key) {
unset($value);
if (isset($newinfo[$key])) {
$value = $newinfo[$key];
$value = addslashes(stripslashes($value)); // Just in case
} else {
$value = '';
}
if (!empty($this->config->{'field_updatelocal_' . $key})) {
if ($user->{$key} != $value) { // only update if it's changed
set_field('user', $key, $value, 'id', $userid);
}
if (!empty($this->config->{'field_updatelocal_' . $key})) {
if ($user->{$key} != $value) { // only update if it's changed
set_field('user', $key, addslashes($value), 'id', $userid);
}
}
}
}
return get_record_select("user", "id = '$userid' AND deleted <> '1'");
return get_record_select('user', "id = $userid AND deleted = 0");
}
// A chance to validate form data, and last chance to
// do stuff before it is inserted in config_plugin
function validate_form(&$form, &$err) {
/**
* Called when the user record is updated.
* Modifies user in external database. It takes olduser (before changes) and newuser (after changes)
* conpares information saved modified information to external db.
*
* @param mixed $olduser Userobject before modifications (without system magic quotes)
* @param mixed $newuser Userobject new modified userobject (without system magic quotes)
* @return boolean result
*
*/
function user_update($olduser, $newuser) {
if (isset($olduser->username) and isset($newuser->username) and $olduser->username != $newuser->username) {
error_log("ERROR:User renaming not allowed in ext db");
return false;
}
if (isset($olduser->auth) and $olduser->auth != 'db') {
return true; // just change auth and skip update
}
$curruser = $this->get_userinfo($olduser->username);
if (empty($curruser)) {
error_log("ERROR:User $olduser->username found in ext db");
return false;
}
$textlib = textlib_get_instance();
$extusername = $textlib->convert($olduser->username, 'utf-8', $this->config->extencoding);
$authdb = $this->db_init();
$update = array();
foreach($curruser as $key=>$value) {
if ($key == 'username') {
continue; // skip this
}
if (empty($this->config->{"field_updateremote_$key"})) {
continue; // remote update not requested
}
if (!isset($newuser->$key)) {
continue;
}
$nuvalue = stripslashes($newuser->$key);
if ($nuvalue != $value) {
$update[] = $this->config->{"field_map_$key"}."='".$this->ext_addslashes($textlib->convert($nuvalue, 'utf-8', $this->config->extencoding))."'";
}
}
if (!empty($update)) {
$authdb->Execute("UPDATE {$this->config->table}
SET ".implode(',', $update)."
WHERE {$this->config->fielduser}='".$this->ext_addslashes($extusername)."'");
}
$authdb->Close();
return true;
}
/**
* A chance to validate form data, and last chance to
* do stuff before it is inserted in config_plugin
*/
function validate_form(&$form, &$err) {
if ($form->passtype === 'internal') {
$this->config->changepasswordurl = '';
set_config('changepasswordurl', '', 'auth/db');
}
return true;
}
/**
* Returns true if this authentication plugin is 'internal'.
*
* @returns bool
* @return bool
*/
function is_internal() {
return false;
return ($this->config->passtype == 'internal');
}
/**
* Returns true if this authentication plugin can change the user's
* password.
*
* @returns bool
* @return bool
*/
function can_change_password() {
return ($this->config->passtype === 'internal');
return ($this->config->passtype == 'internal' or !empty($this->config->changepasswordurl));
}
/**
* Returns the URL for changing the user's pw, or false if the default can
* Returns the URL for changing the user's pw, or empty if the default can
* be used.
*
* @returns bool
* @return string
*/
function change_password_url() {
return $this->config->changepasswordurl;
if ($this->config->passtype == 'internal') {
// standard form
return '';
} else {
// use custom url
return $this->config->changepasswordurl;
}
}
/**
* Returns true if plugin allows resetting of internal password.
*
* @return bool
*/
function can_reset_password() {
return ($this->config->passtype == 'internal');
}
/**
@@ -523,8 +622,8 @@ class auth_plugin_db {
*
* @param array $page An object containing all the data for this page.
*/
function config_form($config, $err) {
include "config.html";
function config_form($config, $err, $user_fields) {
include 'config.html';
}
/**
@@ -533,51 +632,82 @@ class auth_plugin_db {
function process_config($config) {
// set to defaults if undefined
if (!isset($config->host)) {
$config->host = "localhost";
$config->host = 'localhost';
}
if (!isset($config->type)) {
$config->type = "mysql";
$config->type = 'mysql';
}
if (!isset($config->sybasequoting)) {
$config->sybasequoting = 0;
}
if (!isset($config->name)) {
$config->name = "";
$config->name = '';
}
if (!isset($config->user)) {
$config->user = "";
$config->user = '';
}
if (!isset($config->pass)) {
$config->pass = "";
$config->pass = '';
}
if (!isset($config->table)) {
$config->table = "";
$config->table = '';
}
if (!isset($config->fielduser)) {
$config->fielduser = "";
$config->fielduser = '';
}
if (!isset($config->fieldpass)) {
$config->fieldpass = "";
$config->fieldpass = '';
}
if (!isset($config->passtype)) {
$config->passtype = "plaintext";
$config->passtype = 'plaintext';
}
if (!isset($config->extencoding)) {
$config->extencoding = 'utf-8';
}
if (!isset($config->setupsql)) {
$config->setupsql = '';
}
if (!isset($config->debugauthdb)) {
$config->debugauthdb = 0;
}
if (!isset($config->removeuser)) {
$config->removeuser = 0;
}
if (!isset($config->changepasswordurl)) {
$config->changepasswordurl = '';
}
$config = stripslashes_recursive($config);
// save settings
set_config('host', $config->host, 'auth/db');
set_config('type', $config->type, 'auth/db');
set_config('name', $config->name, 'auth/db');
set_config('user', $config->user, 'auth/db');
set_config('pass', $config->pass, 'auth/db');
set_config('table', $config->table, 'auth/db');
set_config('fielduser', $config->fielduser, 'auth/db');
set_config('fieldpass', $config->fieldpass, 'auth/db');
set_config('passtype', $config->passtype, 'auth/db');
set_config('changepasswordurl', $config->changepasswordurl, 'auth/db');
set_config('host', $config->host, 'auth/db');
set_config('type', $config->type, 'auth/db');
set_config('sybasequoting', $config->sybasequoting, 'auth/db');
set_config('name', $config->name, 'auth/db');
set_config('user', $config->user, 'auth/db');
set_config('pass', $config->pass, 'auth/db');
set_config('table', $config->table, 'auth/db');
set_config('fielduser', $config->fielduser, 'auth/db');
set_config('fieldpass', $config->fieldpass, 'auth/db');
set_config('passtype', $config->passtype, 'auth/db');
set_config('extencoding', trim($config->extencoding), 'auth/db');
set_config('setupsql', trim($config->setupsql),'auth/db');
set_config('debugauthdb', $config->debugauthdb, 'auth/db');
set_config('removeuser', $config->removeuser, 'auth/db');
set_config('changepasswordurl', trim($config->changepasswordurl), 'auth/db');
return true;
}
function ext_addslashes($text) {
// using custom made function for now
if (empty($this->config->sybasequoting)) {
$text = str_replace('\\', '\\\\', $text);
$text = str_replace(array('\'', '"', "\0"), array('\\\'', '\\"', '\\0'), $text);
} else {
$text = str_replace("'", "''", $text);
}
return $text;
}
}
?>
+22 -15
View File
@@ -1,39 +1,46 @@
<?php
/** auth_db_sync_users.php
*
* This script is meant to be called from a cronjob to sync moodle with the LDAP
* backend in those setups where the LDAP backend acts as 'master'.
*
*
* This script is meant to be called from a system cronjob to
* sync moodle user accounts with external database.
* It is required when using internal passwords (== passwords not defined in external database).
*
* Recommended cron entry:
* # 5 minutes past 4am
* 5 4 * * * /usr/bin/php -c /etc/php4/cli/php.ini /var/www/moodle/auth/db/auth_db_sync_users.php
*
* Notes:
*
* Notes:
* - If you have a large number of users, you may want to raise the memory limits
* by passing -d memory_limit=256M
* - For debugging & better logging, you are encouraged to use in the command line:
* -d log_errors=1 -d error_reporting=E_ALL -d display_errors=0 -d html_errors=0
*
*
* Performance notes:
* + The code is simpler, but not as optimized as its LDAP counterpart.
*
*
* + The code is simpler, but not as optimized as its LDAP counterpart.
*
*
*/
if (!empty($_SERVER['GATEWAY_INTERFACE'])) {
error_log("should not be called from apache!");
if (isset($_SERVER['REMOTE_ADDR'])) {
error_log("should not be called from web server!");
exit;
}
$nomoodlecookie = true; // cookie not needed
require_once(dirname(dirname(dirname(__FILE__))).'/config.php'); // global moodle config file.
require_once($CFG->libdir.'/blocklib.php');
require_once($CFG->dirroot.'/course/lib.php');
require_once($CFG->dirroot.'/lib/blocklib.php');
require_once($CFG->dirroot.'/mod/resource/lib.php');
require_once($CFG->dirroot.'/lib/moodlelib.php');
require_once($CFG->dirroot.'/mod/forum/lib.php');
$CFG->debug=10;
if (!is_enabled_auth('db')) {
echo "Plugin not enabled!";
die;
}
$dbauth = get_auth_plugin('db');
$dbauth->sync_users(true);
+117 -40
View File
@@ -2,91 +2,114 @@
// set to defaults if undefined
if (!isset($config->host)) {
$config->host = "localhost";
$config->host = 'localhost';
}
if (!isset($config->type)) {
$config->type = "mysql";
$config->type = 'mysql';
}
if (!isset($config->sybasequoting)) {
$config->sybasequoting = 0;
}
if (!isset($config->name)) {
$config->name = "";
$config->name = '';
}
if (!isset($config->user)) {
$config->user = "";
$config->user = '';
}
if (!isset($config->pass)) {
$config->pass = "";
$config->pass = '';
}
if (!isset($config->table)) {
$config->table = "";
$config->table = '';
}
if (!isset($config->fielduser)) {
$config->fielduser = "";
$config->fielduser = '';
}
if (!isset($config->fieldpass)) {
$config->fieldpass = "";
$config->fieldpass = '';
}
if (!isset($config->passtype)) {
$config->passtype = "plaintext";
$config->passtype = 'plaintext';
}
if (!isset($config->changepasswordurl)) {
$config->changepasswordurl = '';
}
if (empty($config->extencoding)) {
$config->extencoding = 'utf-8';
}
if (empty($config->debugauthdb)) {
$config->debugauthdb = 0;
}
if (!isset($config->setupsql)) {
$config->setupsql = '';
}
if (!isset($config->removeuser)) {
$config->removeuser = 0;
}
$pluginconfig = get_config('auth/db');
$yesno = array( get_string('no'), get_string('yes') );
?>
<table cellspacing="0" cellpadding="5" border="0" align="center">
<table cellspacing="0" cellpadding="5" border="0">
<tr valign="top" class="required">
<td align="right"><?php print_string("auth_dbhost_key", "auth") ?>: </td>
<td align="right"><label for="host"><?php print_string("auth_dbhost_key", "auth") ?></label></td>
<td>
<input name="host" type="text" size="30" value="<?php echo $config->host?>" />
<input id="host" name="host" type="text" size="30" value="<?php echo $config->host?>" />
<?php
if (isset($err["host"])) {
formerr($err["host"]);
}
?>
</td>
<td><?php print_string("auth_dbhost", "auth") ?></td>
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string("auth_dbtype_key", "auth") ?>: </td>
<td align="right"><label for="menutype"><?php print_string("auth_dbtype_key", "auth") ?></label></td>
<td>
<?php $dbtypes = array("access","ado_access", "ado", "ado_mssql", "borland_ibase", "csv", "db2", "fbsql", "firebird", "ibase", "informix72", "informix", "mssql", "mssql_n", "mysql", "mysqlt", "oci805", "oci8", "oci8po", "odbc", "odbc_mssql", "odbc_oracle", "oracle", "postgres64", "postgres7", "postgres", "proxy", "sqlanywhere", "sybase", "vfp");
<?php $dbtypes = array("access","ado_access", "ado", "ado_mssql", "borland_ibase", "csv", "db2", "fbsql", "firebird", "ibase", "informix72", "informix", "mssql", "mssql_n", "mysql", "mysqli", "mysqlt", "oci805", "oci8", "oci8po", "odbc", "odbc_mssql", "odbc_oracle", "oracle", "postgres64", "postgres7", "postgres", "proxy", "sqlanywhere", "sybase", "vfp");
foreach ($dbtypes as $dbtype) {
$dboptions[$dbtype] = $dbtype;
}
choose_from_menu($dboptions, "type", $config->type, "");
?>
</td>
<td>
<?php print_string("auth_dbtype","auth") ?>
<?php print_string("auth_dbtype","auth") ?>
</td>
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string("auth_dbname_key", "auth") ?>: </td>
<td align="right"><label for="menusybasequoting"><?php print_string("auth_dbsybasequoting", "auth") ?></label></td>
<td>
<input name="name" type="text" size="30" value="<?php echo $config->name?>" />
<?php choose_from_menu($yesno, 'sybasequoting', $config->sybasequoting, ''); ?>
</td>
<td><?php print_string("auth_dbsybasequotinghelp", "auth") ?></td>
</tr>
<tr valign="top" class="required">
<td align="right"><label for="name"><?php print_string("auth_dbname_key", "auth") ?></label></td>
<td>
<input id="name" name="name" type="text" size="30" value="<?php echo $config->name?>" />
<?php
if (isset($err["name"])) {
formerr($err["name"]);
}
?>
</td>
<td><?php print_string("auth_dbname", "auth") ?></td>
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string("auth_dbuser_key", "auth") ?>: </td>
<td align="right"><label for="user"><?php print_string("auth_dbuser_key", "auth") ?></label></td>
<td>
<input name="user" type="text" size="30" value="<?php echo $config->user?>" />
<input id="user" name="user" type="text" size="30" value="<?php echo $config->user?>" />
<?php
if (isset($err["user"])) {
@@ -99,9 +122,9 @@
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string("auth_dbpass_key", "auth") ?>: </td>
<td align="right"><label for="pass"><?php print_string("auth_dbpass_key", "auth") ?></label></td>
<td>
<input name="pass" type="text" size="30" value="<?php echo $config->pass?>" />
<input id="pass" name="pass" type="text" size="30" value="<?php echo $config->pass?>" />
<?php
if (isset($err["pass"])) {
@@ -116,9 +139,9 @@
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string("auth_dbtable_key", "auth") ?>: </td>
<td align="right"><label for="table"><?php print_string("auth_dbtable_key", "auth") ?></label></td>
<td>
<input name="table" type="text" size="30" value="<?php echo $config->table?>" />
<input id="table" name="table" type="text" size="30" value="<?php echo $config->table?>" />
<?php
if (isset($err["table"])) {
@@ -131,9 +154,9 @@
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string("auth_dbfielduser_key", "auth") ?>: </td>
<td align="right"><label for="fielduser"><?php print_string("auth_dbfielduser_key", "auth") ?></label></td>
<td>
<input name="fielduser" type="text" size="30" value="<?php echo $config->fielduser?>" />
<input id="fielduser" name="fielduser" type="text" size="30" value="<?php echo $config->fielduser?>" />
<?php
if (isset($err["fielduser"])) {
@@ -146,9 +169,9 @@
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string("auth_dbfieldpass_key", "auth") ?>: </td>
<td align="right"><label for="fieldpass"><?php print_string("auth_dbfieldpass_key", "auth") ?></label></td>
<td>
<input name="fieldpass" type="text" size="30" value="<?php echo $config->fieldpass?>" />
<input id="fieldpass" name="fieldpass" type="text" size="30" value="<?php echo $config->fieldpass?>" />
<?php
if (isset($err["fieldpass"])) {
@@ -161,12 +184,13 @@
</tr>
<tr valign="top" class="required">
<td align="right"><?php print_string("auth_dbpasstype_key", "auth") ?>: </td>
<td align="right"><label for="menupasstype"><?php print_string("auth_dbpasstype_key", "auth") ?></label></td>
<td>
<?php
<?php
$passtype = array();
$passtype["plaintext"] = get_string("plaintext", "auth");
$passtype["md5"] = get_string("md5", "auth");
$passtype["sha1"] = get_string("sha1", "auth");
$passtype["internal"] = get_string("internal", "auth");
choose_from_menu($passtype, "passtype", $config->passtype, "");
@@ -175,10 +199,41 @@
<td><?php print_string("auth_dbpasstype", "auth") ?></td>
</tr>
<tr valign="top">
<td align="right"><?php print_string("auth_dbchangepasswordurl_key", "auth") ?>: </td>
<tr valign="top" class="required">
<td align="right"><label for="extencoding"><?php print_string("auth_dbextencoding", "auth") ?></label></td>
<td>
<input name="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<input id="extencoding" name="extencoding" type="text" value="<?php echo $config->extencoding ?>" />
<?php
if (isset($err['extencoding'])) {
formerr($err['extencoding']);
}
?>
</td>
<td><?php print_string('auth_dbextencodinghelp', 'auth') ?></td>
</tr>
<tr valign="top">
<td align="right"><label for="setupsql"><?php print_string("auth_dbsetupsql", "auth") ?></label></td>
<td>
<input id="setupsql" name="setupsql" type="text" value="<?php echo $config->setupsql ?>" />
</td>
<td><?php print_string('auth_dbsetupsqlhelp', 'auth') ?></td>
</tr>
<tr valign="top">
<td align="right"><label for="menudebugauthdb"><?php print_string("auth_dbdebugauthdb", "auth") ?></label></td>
<td>
<?php choose_from_menu($yesno, 'debugauthdb', $config->debugauthdb, ''); ?>
</td>
<td><?php print_string("auth_dbdebugauthdbhelp", "auth") ?></td>
</tr>
<tr valign="top">
<td align="right"><label for="changepasswordurl"><?php print_string("auth_dbchangepasswordurl_key", "auth") ?></label></td>
<td>
<input id="changepasswordurl" name="changepasswordurl" type="text" value="<?php echo $config->changepasswordurl ?>" />
<?php
if (isset($err['changepasswordurl'])) {
@@ -189,10 +244,32 @@
</td>
<td><?php print_string('changepasswordhelp', 'auth') ?></td>
</tr>
<?php
global $user_fields;
print_auth_lock_options('db', $user_fields, get_string('auth_dbextrafields', 'auth'), true, false);
<tr>
<td colspan="2">
<h4><?php print_string('auth_sync_script', 'auth') ?> </h4>
</td>
</tr>
<tr valign="top">
<td align="right"><label for="menuremoveuser"><?php print_string('auth_remove_user_key','auth') ?></label></td>
<td>
<?php
$deleteopt = array();
$deleteopt['0'] = get_string('auth_remove_keep','auth');
$deleteopt['1'] = get_string('auth_remove_suspend','auth');
$deleteopt['2'] = get_string('auth_remove_delete','auth');
choose_from_menu($deleteopt, 'removeuser', $config->removeuser, '');
?>
</td>
<td>
<?php print_string('auth_remove_user','auth') ?>
</td>
</tr>
<?php
print_auth_lock_options('db', $user_fields, get_string('auth_dbextrafields', 'auth'), true, true);
?>
</table>
+63 -36
View File
@@ -12,33 +12,22 @@
* 2006-08-28 File created.
*/
// This page cannot be called directly
if (!isset($CFG)) exit;
/**
* Error codes for user confirm
*/
define('AUTH_CONFIRM_FAIL', 0);
define('AUTH_CONFIRM_OK', 1);
define('AUTH_CONFIRM_ALREADY', 2);
define('AUTH_CONFIRM_ERROR', 3);
// TODO: instead of integers these could be the language keys?
if (!defined('MOODLE_INTERNAL')) {
die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page
}
require_once($CFG->libdir.'/authlib.php');
/**
* Email authentication plugin.
*/
class auth_plugin_email {
/**
* The configuration details for the plugin.
*/
var $config;
class auth_plugin_email extends auth_plugin_base {
/**
* Constructor.
*/
function auth_plugin_email() {
$this->authtype = 'email';
$this->config = get_config('auth/email');
}
@@ -48,7 +37,7 @@ class auth_plugin_email {
*
* @param string $username The username
* @param string $password The password
* @returns bool Authentication success or failure.
* @return bool Authentication success or failure.
*/
function user_login ($username, $password) {
global $CFG;
@@ -63,8 +52,8 @@ class auth_plugin_email {
*
* called when the user password is updated.
*
* @param object $user User
* @param string $newpassword Plaintext password
* @param object $user User table object (with system magic quotes)
* @param string $newpassword Plaintext password (with system magic quotes)
* @return boolean result
*
*/
@@ -73,10 +62,20 @@ class auth_plugin_email {
return update_internal_user_password($user, $newpassword);
}
/*
function can_signup() {
return true;
}
/**
* Sign up a new user ready for confirmation.
* Password is passed in plaintext.
*
* @param object $user new user object (with system magic quotes)
* @param boolean $notify print notice with link and terminate
*/
function user_signup($user, $notify = true) {
function user_signup($user, $notify=true) {
$user->password = hash_internal_user_password($user->password);
if (! ($user->id = insert_record('user', $user)) ) {
print_error('auth_emailnoinsert','auth');
}
@@ -89,11 +88,25 @@ class auth_plugin_email {
$emailconfirm = get_string('emailconfirm');
print_header($emailconfirm, $emailconfirm, $emailconfirm);
notice(get_string('emailconfirmsent', '', $user->email), "$CFG->wwwroot/index.php");
}
} else {
return true;
}
}
/*
/**
* Returns true if plugin allows confirming of new users.
*
* @return bool
*/
function can_confirm() {
return true;
}
/**
* Confirm the new user as registered.
*
* @param string $username (with system magic quotes)
* @param string $confirmsecret (with system magic quotes)
*/
function user_confirm($username, $confirmsecret) {
$user = get_complete_user_data('username', $username);
@@ -101,8 +114,11 @@ class auth_plugin_email {
if (!empty($user)) {
if ($user->confirmed) {
return AUTH_CONFIRM_ALREADY;
}
if ($user->secret == $confirmsecret) { // They have provided the secret key to get in
} else if ($user->auth != 'email') {
return AUTH_CONFIRM_ERROR;
} else if ($user->secret == stripslashes($confirmsecret)) { // They have provided the secret key to get in
if (!set_field("user", "confirmed", 1, "id", $user->id)) {
return AUTH_CONFIRM_FAIL;
}
@@ -111,38 +127,49 @@ class auth_plugin_email {
}
return AUTH_CONFIRM_OK;
}
} else {
return AUTH_CONFIRM_ERROR;
}
}
/**
* Returns true if this authentication plugin is 'internal'.
*
* @returns bool
* @return bool
*/
function is_internal() {
return true;
}
/**
* Returns true if this authentication plugin can change the user's
* password.
*
* @returns bool
* @return bool
*/
function can_change_password() {
return true;
}
/**
* Returns the URL for changing the user's pw, or false if the default can
* Returns the URL for changing the user's pw, or empty if the default can
* be used.
*
* @returns bool
* @return mixed
*/
function change_password_url() {
return false;
return ''; // use dafult internal method
}
/**
* Returns true if plugin allows resetting of internal password.
*
* @return bool
*/
function can_reset_password() {
return true;
}
/**
* Prints a form for configuring this authentication plugin.
*
@@ -151,7 +178,7 @@ class auth_plugin_email {
*
* @param array $page An object containing all the data for this page.
*/
function config_form($config, $err) {
function config_form($config, $err, $user_fields) {
include "config.html";
}
@@ -161,7 +188,7 @@ class auth_plugin_email {
function process_config($config) {
return true;
}
}
?>
+3 -4
View File
@@ -1,10 +1,9 @@
<!-- No config needed -->
<div align="center"><?php print_string('none'); ?></div>
<div style="text-align: center"><?php print_string('none'); ?></div>
<table cellspacing="0" cellpadding="5" border="0" align="center">
<?php
<table cellspacing="0" cellpadding="5" border="0">
<?php
global $user_fields;
print_auth_lock_options('email', $user_fields, get_string('auth_fieldlocks_help', 'auth'), false, false);
?>
+4 -4
View File
@@ -1,7 +1,7 @@
Moodle - FirstClass authentication module
-----------------------------------------
This module uses the FirstClass Flexible Provisining Protocol (FPP) to communicate between the FirstClass server
and the Moodle host.
and the Moodle host.
Installation
------------
@@ -9,7 +9,7 @@ Installation
1. Enable FPP on the FirstClass server
FPP is not doumented in the FirstClass documentation and is not enable by default.
To enable the protocol you need to edit the file \FCPO\Server\Netinfo. Open the file and insert the
following lines.
following lines.
// TCP port for Flexible Provisioning Protocol (FPP).
TCPFPPPORT = 3333
@@ -23,7 +23,7 @@ Default account name is "fcMoodle".
3. Check that the FPP protocoll is working by running a Telnet session. If everyting is working you
should get a "+0" answer from the server.
should get a "+0" answer from the server.
> telnet yourhost.domain.com 3333
+0
@@ -47,7 +47,7 @@ Get user some_user_id 1201
4. On the Moodle host go to the directory where you have installed Moodle.
Open the folder "auth", where all other authentication modules are installed,
and create a new directory with the name "fc".
and create a new directory with the name "fc".
Copy the files "config.html", "fcFPP.php" and "lib.php" to the "auth" directory.
+53 -33
View File
@@ -11,25 +11,24 @@
* 2006-08-28 File created.
*/
// This page cannot be called directly
if (!isset($CFG)) exit;
if (!defined('MOODLE_INTERNAL')) {
die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page
}
require_once 'fcFPP.php';
require_once($CFG->libdir.'/authlib.php');
require_once 'fcFPP.php';
/**
* FirstClass authentication plugin.
*/
class auth_plugin_fc {
/**
* The configuration details for the plugin.
*/
var $config;
class auth_plugin_fc extends auth_plugin_base {
/**
* Constructor.
*/
function auth_plugin_fc() {
$this->authtype = 'fc';
$this->config = get_config('auth/fc');
}
@@ -39,7 +38,7 @@ class auth_plugin_fc {
*
* @param string $username The username
* @param string $password The password
* @returns bool Authentication success or failure.
* @return bool Authentication success or failure.
*/
function user_login ($username, $password) {
global $CFG;
@@ -57,7 +56,7 @@ class auth_plugin_fc {
}
}
$fpp->close();
return $retval;
}
@@ -82,13 +81,13 @@ class auth_plugin_fc {
country -
lang -
timezone 8030 (Not used yet. Need to figure out how FC codes timezones)
description Get data from users resume. Pictures will be removed.
*/
$userinfo = array();
$fpp = new fcFPP($this->config->host, $this->config->port);
if ($fpp->open()) {
if ($fpp->login($this->config->userid, $this->config->passwd)) {
@@ -101,7 +100,7 @@ class auth_plugin_fc {
}
}
$fpp->close();
foreach($userinfo as $key => $value) {
if (!$value) {
unset($userinfo[$key]);
@@ -110,23 +109,18 @@ class auth_plugin_fc {
return $userinfo;
}
/**
* Get users group membership from the FirstClass server user and check if
* user is member of one of the groups of creators.
*/
function iscreator($username = 0) {
global $USER;
function iscreator($username) {
if (! $this->config->creators) {
return false;
return null;
}
if (! $username) {
$username = $USER->username;
}
$fcgroups = array();
$fpp = new fcFPP($this->config->host, $this->config->port);
if ($fpp->open()) {
if ($fpp->login($this->config->userid, $this->config->passwd)) {
@@ -134,24 +128,26 @@ class auth_plugin_fc {
}
}
$fpp->close();
if ((! $fcgroups)) {
return false;
}
$creators = explode(";", $this->config->creators);
foreach($creators as $creator) {
If (in_array($creator, $fcgroups)) return true;
if (in_array($creator, $fcgroups)) {
return true;
}
}
return false;
}
/**
* Returns true if this authentication plugin is 'internal'.
*
* @returns bool
* @return bool
*/
function is_internal() {
return false;
@@ -161,12 +157,36 @@ class auth_plugin_fc {
* Returns true if this authentication plugin can change the user's
* password.
*
* @returns bool
* @return bool
*/
function can_change_password() {
return false;
}
/**
* Sync roles for this user
*
* @param $user object user object (without system magic quotes)
*/
function sync_roles($user) {
$iscreator = $this->iscreator($user->username);
if ($iscreator === null) {
return; //nothing to sync - creators not configured
}
if ($roles = get_roles_with_capability('moodle/legacy:coursecreator', CAP_ALLOW)) {
$creatorrole = array_shift($roles); // We can only use one, let's use the first one
$systemcontext = get_context_instance(CONTEXT_SYSTEM);
if ($iscreator) { // Following calls will not create duplicates
role_assign($creatorrole->id, $user->id, 0, $systemcontext->id, 0, 0, 0, 'fc');
} else {
//unassign only if previously assigned by this plugin!
role_unassign($creatorrole->id, $user->id, 0, $systemcontext->id, 'fc');
}
}
}
/**
* Prints a form for configuring this authentication plugin.
*
@@ -175,7 +195,7 @@ class auth_plugin_fc {
*
* @param array $page An object containing all the data for this page.
*/
function config_form($config, $err) {
function config_form($config, $err, $user_fields) {
include "config.html";
}
+4 -5
View File
@@ -15,16 +15,16 @@
}
if (!isset($config->creators)) {
$config->creators = "";
}
}
if (!isset($config->changepasswordurl)) {
$config->changepasswordurl = '';
}
}
if (!isset($config->changepasswordurl)) {
$config->changepasswordurl = '';
}
?>
<table cellspacing="0" cellpadding="5" border="0" align="center">
<table cellspacing="0" cellpadding="5" border="0">
<tr valign="top" class="required">
<td align="right"><?php print_string("auth_fchost_key", "auth") ?>:</td>
@@ -95,9 +95,8 @@
<td><?php print_string('changepasswordhelp', 'auth') ?></td>
</tr>
<?php
<?php
global $user_fields;
print_auth_lock_options('fc', $user_fields, get_string('auth_fieldlocks_help', 'auth'), false, false);
?>
+35 -35
View File
@@ -22,21 +22,21 @@
*/
class fcFPP
{
{
var $_hostname; // hostname of FirstClass server we are connection to
var $_port; // port on which fpp is running
var $_conn = 0; // socket we are connecting on
var $_debug = FALSE; // set to true to see some debug info
// class constructor
function fcFPP($host="localhost", $port="3333")
{
$this->_hostname = $host;
$this->_port = $port;
$this->_user = "";
$this->_pwd = "";
$this->_pwd = "";
}
// open a connection to the FirstClass server
function open()
{
@@ -53,10 +53,10 @@ class fcFPP
print_error('auth_fcconnfail','auth', array($errno, $errstr));
return false;
}
// We are connected
if ($this->_debug) echo "connected!";
// Read connection message.
$line = fgets ($conn); //+0
$line = fgets ($conn); //new line
@@ -69,7 +69,7 @@ class fcFPP
// close any open connections
function close()
{
{
// get the current connection
$conn = &$this->_conn;
@@ -84,8 +84,8 @@ class fcFPP
}
return;
}
// Authenticate to the FirstClass server
function login($userid, $passwd)
{
@@ -98,37 +98,37 @@ class fcFPP
$line = fgets ($this->_conn); //new line
$line = fgets ($this->_conn); //+0
$line = fgets ($this->_conn); //new line
# Send password
fputs($this->_conn,"$passwd\r\n");
$line = fgets ($this->_conn); //new line
$line = fgets ($this->_conn); //+0
$line = fgets ($this->_conn); //+0 or message
if ($this->_debug) echo $line;
if (preg_match ("/^\+0/", $line)) { //+0, user with subadmin privileges
$this->_user = $userid;
$this->_pwd = $passwd;
return TRUE;
$this->_pwd = $passwd;
return TRUE;
} elseif (strpos($line, 'You are not allowed')) { // Denied access but a valid user and password
// "Sorry. You are not allowed to login with the FPP interface"
return TRUE;
} else { //Invalid user or password
return FALSE;
}
}
return FALSE;
}
// Get the list of groups the user is a member of
// Get the list of groups the user is a member of
function getGroups($userid) {
$groups = array();
// we must be logged in as a user with subadmin privileges
// we must be logged in as a user with subadmin privileges
if ($this->_conn AND $this->_user) {
# Send BA-command to get groups
fputs($this->_conn,"GET USER '" . $userid . "' 4 -1\r");
@@ -143,29 +143,29 @@ class fcFPP
}
if ($this->_debug) echo "getGroups:" . implode(",",$groups);
}
return $groups;
}
// Check if the user is member of any of the groups.
// Return the list of groups the user is member of.
function isMemberOf($userid, $groups) {
$usergroups = array_map("strtolower",$this->getGroups($userid));
$groups = array_map("strtolower",$groups);
$result = array_intersect($groups,$usergroups);
if ($this->_debug) echo "isMemberOf:" . implode(",",$result);
return $result;
}
function getUserInfo($userid, $field) {
$userinfo = "";
if ($this->_conn AND $this->_user) {
# Send BA-command to get data
fputs($this->_conn,"GET USER '" . $userid . "' " . $field . "\r");
@@ -180,17 +180,17 @@ class fcFPP
}
if ($this->_debug) echo "getUserInfo:" . $userinfo;
}
return str_replace('\r',' ',trim($userinfo,'"'));
}
function getResume($userid) {
$resume = "";
$pattern = "/\[.+:.+\..+\]/"; // Remove references to pictures in resumes
if ($this->_conn AND $this->_user) {
# Send BA-command to get data
fputs($this->_conn,"GET RESUME '" . $userid . "' 6\r");
@@ -203,17 +203,17 @@ class fcFPP
$resume .= preg_replace($pattern,"",str_replace('\r',"\n",trim($line,'6 ')));
$line = trim(fgets ($this->_conn));
//print $line;
}
if ($this->_debug) echo "getResume:" . $resume;
}
return $resume;
}
}
?>
+25 -27
View File
@@ -12,23 +12,22 @@
* 2006-08-31 File created.
*/
// This page cannot be called directly
if (!isset($CFG)) exit;
if (!defined('MOODLE_INTERNAL')) {
die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page
}
require_once($CFG->libdir.'/authlib.php');
/**
* IMAP authentication plugin.
*/
class auth_plugin_imap {
/**
* The configuration details for the plugin.
*/
var $config;
class auth_plugin_imap extends auth_plugin_base {
/**
* Constructor.
*/
function auth_plugin_imap() {
$this->authtype = 'imap';
$this->config = get_config('auth/imap');
}
@@ -36,16 +35,16 @@ class auth_plugin_imap {
* Returns true if the username and password work and false if they are
* wrong or don't exist.
*
* @param string $username The username
* @param string $password The password
* @returns bool Authentication success or failure.
* @param string $username The username (with system magic quotes)
* @param string $password The password (with system magic quotes)
* @return bool Authentication success or failure.
*/
function user_login ($username, $password) {
if (! function_exists('imap_open')) {
print_error('auth_imapnotinstalled','mnet');
return false;
}
global $CFG;
$hosts = split(';', $this->config->host); // Could be multiple hosts
@@ -56,22 +55,22 @@ class auth_plugin_imap {
case 'imapssl':
$host = '{'.$host.":{$this->config->port}/imap/ssl}";
break;
case 'imapcert':
$host = '{'.$host.":{$this->config->port}/imap/ssl/novalidate-cert}";
break;
case 'imaptls':
$host = '{'.$host.":{$this->config->port}/imap/tls}";
break;
default:
$host = '{'.$host.":{$this->config->port}/imap}";
}
error_reporting(0);
$connection = imap_open($host, $username, $password, OP_HALFOPEN);
error_reporting($CFG->debug);
$connection = imap_open($host, stripslashes($username), stripslashes($password), OP_HALFOPEN);
error_reporting($CFG->debug);
if ($connection) {
imap_close($connection);
@@ -85,7 +84,7 @@ class auth_plugin_imap {
/**
* Returns true if this authentication plugin is 'internal'.
*
* @returns bool
* @return bool
*/
function is_internal() {
return false;
@@ -95,23 +94,22 @@ class auth_plugin_imap {
* Returns true if this authentication plugin can change the user's
* password.
*
* @returns bool
* @return bool
*/
function can_change_password() {
return false;
return !empty($this->config->changepasswordurl);
}
/**
* Returns the URL for changing the user's pw, or false if the default can
* Returns the URL for changing the user's pw, or empty if the default can
* be used.
*
* @returns bool
* @return string
*/
function change_password_url() {
return $CFG->changepasswordurl; // TODO: will this be global?
//return $this->config->changepasswordurl;
return $this->config->changepasswordurl;
}
/**
* Prints a form for configuring this authentication plugin.
*
@@ -120,7 +118,7 @@ class auth_plugin_imap {
*
* @param array $page An object containing all the data for this page.
*/
function config_form($config, $err) {
function config_form($config, $err, $user_fields) {
include "config.html";
}
+2 -3
View File
@@ -15,7 +15,7 @@ if (!isset($config->changepasswordurl)) {
}
?>
<table cellspacing="0" cellpadding="5" border="0" align="center">
<table cellspacing="0" cellpadding="5" border="0">
<tr valign="top" class="required">
<td align="right"><?php print_string('auth_imaphost_key', 'auth') ?>: </td>
@@ -85,9 +85,8 @@ if (!isset($config->changepasswordurl)) {
<td><?php print_string('changepasswordhelp', 'auth') ?></td>
</tr>
<?php
<?php
global $user_fields;
print_auth_lock_options('imap', $user_fields, get_string('auth_fieldlocks_help', 'auth'), false, false);
?>
+1 -1
View File
@@ -1,3 +1,3 @@
LDAP-module README
Please read comments from lib.php
Please read comments from lib.php
+880 -684
View File
File diff suppressed because it is too large Load Diff

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