database: MDL-16999 fix "Required Entries" and "Required Entries before viewing" settings. Display a warning message during upgrade process if the fields were set previously (partially merged from 1.9)

This commit is contained in:
jerome
2008-11-21 07:11:01 +00:00
parent 2601887ca9
commit e9a84e1016
6 changed files with 62 additions and 11 deletions
+4
View File
@@ -128,6 +128,10 @@
</FEEDBACK>
</PHP_EXTENSION>
</PHP_EXTENSIONS>
<CUSTOM_CHECKS>
<CUSTOM_CHECK file="mod/data/lib.php" function="check_required_entries_fields" level="optional">
</CUSTOM_CHECK>
</CUSTOM_CHECKS>
</MOODLE>
<MOODLE version="1.9">
<UNICODE level="required">
+2
View File
@@ -494,6 +494,8 @@ $string['rcachettl'] = 'Record cache TTL';
$string['releasenoteslink'] = 'For information about this version of Moodle, please see the online <a target=\"_new\" href=\"$a\">Release Notes</a>';
$string['remotelangnotavailable'] = 'Because Moodle can not connect to download.moodle.org, we are unable to do language pack installation automatically. Please download the appropriate zip file(s) from the list below, copy them to your $a directory and unzip them manually.';
$string['renameerrors'] = 'Errors in renames';
$string['requiredentrieschanged'] = '<strong>IMPORTANT - PLEASE READ</strong><br/>Due to a bug fix, the behaviour of database activities using the \'Required entries\' and \'Required entries before viewing settings\' settings will change. A more detailed explaination of the changes can be read on <a href=\"http://moodle.org/mod/forum/discuss.php?d=110928\">the database module forum</a> and <a href=\"http://docs.moodle.org/en/Adding/editing_a_database#Required_entries\">Moodle Docs</a>.
<br/><br/>This change affects the following databases in your system: (Please save this list now, and after the upgrade, check that these activities still work the way that the teacher intends.)<br/><strong style=\"color:red\">$a->text</strong><br/>';
$string['restrictbydefault'] = 'Restrict modules by default';
$string['restrictmodulesfor'] = 'Restrict modules for';
$string['riskconfig'] = 'Users could change site configuration and behaviour';
+2 -1
View File
@@ -71,7 +71,8 @@ $string['editordisable'] = 'Disable editor';
$string['emptyadd'] = 'The Add template is empty, generating a default form...';
$string['emptyaddform'] = 'You did not fill out any fields!';
$string['entries'] = 'Entries';
$string['entrieslefttoadd'] = 'You must add $a->entriesleft more entry/entries before you can view other participants\' entries.';
$string['entrieslefttoaddtoview'] = 'You must add $a->entrieslefttoview more entry/entries before you can view other participants\' entries.';
$string['entrieslefttoadd'] = 'You must add $a->entriesleft more entry/entries in order to complete this activity';
$string['entry'] = 'Entry';
$string['entrysaved'] = 'Your entry has been saved';
$string['errormustbeteacher'] = 'You need to be a teacher to use this page!';
+37
View File
@@ -1878,4 +1878,41 @@ function data_preset_path($course, $userid, $shortname) {
return 'Does it disturb you that this code will never run?';
}
/**
* This function is called into environment.xml
* Check if both of database required entries fields have been set for a version anterior to 2007021572
* This check has been required by the bug MDL-16999
* @global <type> $CFG
* @param <type> $result
* @return object status
*/
function check_required_entries_fields($result) {
global $CFG;
if (!empty($CFG->version) //we are not installing a new Moodle site
&& $CFG->version < 2007021572 //the version is anterior to the one when the fix has been applied
&& !get_config("data","requiredentriesfixflag")) { //do not show message when upgrading an anterior version when the patch has already been applied
set_config("requiredentriesfixflag",true, "data"); //set a flag into database in order to let know a Moodle 1.9 upgrade that the message has already been displayed
$databases = get_records_sql("SELECT d.*, c.fullname
FROM {$CFG->prefix}data d,
{$CFG->prefix}course c
WHERE d.course = c.id
ORDER BY c.fullname, d.name");
if (!empty($databases)) {
$a = new object();
foreach($databases as $database) {
if ($database->requiredentries != 0 || $database->requiredentriestoview != 0) {
$a->text .= "".$database->fullname." - " .$database->name. " (course id: ".$database->course." - database id: ".$database->id.")<br/>";
//set the feedback string here and not in xml file since we need something
//more complex than just a string picked from admin.php lang file
$result->setFeedbackStr(array('requiredentrieschanged', 'admin', $a));
$result->setStatus(false);//fail test
}
}
return $result;
}
}
return null;
}
?>
+16 -9
View File
@@ -266,15 +266,22 @@
}
}
// Check the number of entries required against the number of entries already made (doesn't apply to teachers)
$requiredentries_allowed = true;
$numentries = data_numentries($data);
if ($data->requiredentries > 0 && $numentries < $data->requiredentries && !has_capability('mod/data:manageentries', $context)) {
$data->entriesleft = $data->requiredentries - $numentries;
$strentrieslefttoadd = get_string('entrieslefttoadd', 'data', $data);
notify($strentrieslefttoadd);
$requiredentries_allowed = false;
}
$numentries = data_numentries($data);
/// Check the number of entries required against the number of entries already made (doesn't apply to teachers)
if ($data->requiredentries > 0 && $numentries < $data->requiredentries && !has_capability('mod/data:manageentries', $context)) {
$data->entriesleft = $data->requiredentries - $numentries;
$strentrieslefttoadd = get_string('entrieslefttoadd', 'data', $data);
notify($strentrieslefttoadd);
}
/// Check the number of entries required before to view other participant's entries against the number of entries already made (doesn't apply to teachers)
$requiredentries_allowed = true;
if ($data->requiredentriestoview > 0 && $numentries < $data->requiredentriestoview && !has_capability('mod/data:manageentries', $context)) {
$data->entrieslefttoview = $data->requiredentriestoview - $numentries;
$strentrieslefttoaddtoview = get_string('entrieslefttoaddtoview', 'data', $data);
notify($strentrieslefttoaddtoview);
$requiredentries_allowed = false;
}
/// We need to examine the whole dataset to produce the correct paging
+1 -1
View File
@@ -6,7 +6,7 @@
// This is compared against the values stored in the database to determine
// whether upgrades should be performed (see lib/db/*.php)
$version = 2007021571; // YYYYMMDD = date of the 1.8 branch (don't change)
$version = 2007021572; // YYYYMMDD = date of the 1.8 branch (don't change)
// X = release number 1.8.[0,1,2,3...]
// Y = micro-increments between releases