]> git.mjollnir.org Git - moodle.git/commitdiff
database: MDL-16999 fix "Required Entries" and "Required Entries before viewing"...
authorjerome <jerome>
Fri, 21 Nov 2008 07:19:00 +0000 (07:19 +0000)
committerjerome <jerome>
Fri, 21 Nov 2008 07:19:00 +0000 (07:19 +0000)
admin/environment.xml
install/stringnames.txt
lang/en_utf8/admin.php
lang/en_utf8/data.php
mod/data/lib.php
mod/data/view.php
version.php

index 315dadea677319eefb733d15e2fccee02b3b6b2a..9c1c2bac423b0799a5a892c480326e578041956b 100644 (file)
           <ON_CHECK message="globalswarning" />
         </FEEDBACK>
       </CUSTOM_CHECK>
+       <CUSTOM_CHECK file="mod/data/lib.php" function="data_check_required_entries_fields" level="optional">
+      </CUSTOM_CHECK>
     </CUSTOM_CHECKS>
   </MOODLE>
 </COMPATIBILITY_MATRIX>
index 24c3ffac717fbdea5e7051252395d1c51d638b47..2bcdf805855571941ebe1f660907e8d0db4b6d60 100644 (file)
@@ -196,6 +196,7 @@ releasenoteslink
 remotedownloaderror
 remotedownloadnotallowed
 report
+requiredentrieschanged
 restricted
 safemode
 safemodeerror
index 0ed38085567275c364716b07eb6c07a30a773e43..e37836f4893f1c5fec76337e4a889b7b7c651b7c 100644 (file)
@@ -657,6 +657,8 @@ $string['remotelangnotavailable'] = 'Because Moodle can not connect to download.
 $string['renameerrors'] = 'Rename errors';
 $string['requiredtemplate'] = 'Required. You may use template syntax here (%%l = lastname, %%f = firstname, %%u = username). See help for details and examples.';
 $string['requires'] = 'Requires';
+$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['reverseproxy'] = 'Reverse proxy';
index 4d7476faf5e4a369a3923830d5717b701cca967b..afa55d9c28abc8e86e768f751b94b9f17a87fc4e 100644 (file)
@@ -88,7 +88,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!';
index d7664bf9f4775efc112780a24023304c6559f30c..ae4fb887ce28f0c253e97a399c455d954b81f5cb 100755 (executable)
@@ -2540,6 +2540,42 @@ function data_pluginfile($course, $cminfo, $context, $filearea, $args) {
     return false;
 }
 
+/**
+ * NOTE: this function is called into environment.xml
+ * Check if both of database required entries fields have been set for a version anterior to 2008112101
+ * This check has been required by the bug MDL-16999
+ * @global <type> $CFG
+ * @param <type> $result
+ * @return object status
+ */
+function data_check_required_entries_fields($result) {
+    global $CFG, $DB;
+    if (!empty($CFG->version)                                             //we are not installing a new Moodle site
+        && $CFG->version < 2008112101                              //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("data/requiredentriesfixflag",true);
+        $databases = $DB->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;
+}
+
 require_once($CFG->libdir . '/portfoliolib.php');
 class data_portfolio_caller extends portfolio_module_caller_base {
 
index c1298b8ae9a307026d589fd7597356a142151b30..41375e12dfa2a40b68dc820043ff8960ba849267 100755 (executable)
             }
         }
 
-        // 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);
+         $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;
         }
 
index 3c29ba7d8c693587e819db65d5ffecc04d150afc..cea1711fcf6b03b992bf1c4eea40a74af866874f 100644 (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 = 2008111801;  // YYYYMMDD   = date of the last version bump
+    $version = 2008112101;  // YYYYMMDD   = date of the last version bump
                             //         XX = daily increments
 
     $release = '2.0 dev (Build: 20081121)';  // Human-friendly version name