]> git.mjollnir.org Git - moodle.git/commitdiff
Make sure we do not pass empty arrays to $DB->get_in_or_equal()
authorDavid Mudrak <david.mudrak@gmail.com>
Mon, 4 Jan 2010 18:08:58 +0000 (18:08 +0000)
committerDavid Mudrak <david.mudrak@gmail.com>
Mon, 4 Jan 2010 18:08:58 +0000 (18:08 +0000)
mod/workshop/allocation/manual/lib.php
mod/workshop/locallib.php

index 74b818b6e764b91e280c3ec85c6547d17bbf573c..1ce9811f042fa1007dbabc97b77d7b41aecde876 100644 (file)
@@ -247,26 +247,29 @@ class workshop_manual_allocator implements workshop_allocator {
         }
 
         // get current reviewees
-        list($participantids, $params) = $DB->get_in_or_equal(array_keys($participants), SQL_PARAMS_NAMED);
-        $params['workshopid'] = $this->workshop->id;
-        $sql = "SELECT a.id AS assessmentid, a.submissionid,
-                       u.id AS reviewerid,
-                       s.id AS submissionid,
-                       e.id AS revieweeid, e.lastname, e.firstname, e.picture, e.imagealt
-                  FROM {user} u
-                  JOIN {workshop_assessments} a ON (a.reviewerid = u.id)
-                  JOIN {workshop_submissions} s ON (a.submissionid = s.id)
-                  JOIN {user} e ON (s.authorid = e.id)
-                 WHERE u.id $participantids AND s.workshopid = :workshopid AND s.example = 0";
-        $reviewees = $DB->get_records_sql($sql, $params);
-        foreach ($reviewees as $reviewee) {
-            if (!isset($userinfo[$reviewee->revieweeid])) {
-                $userinfo[$reviewee->revieweeid]            = new stdClass();
-                $userinfo[$reviewee->revieweeid]->id        = $reviewee->revieweeid;
-                $userinfo[$reviewee->revieweeid]->firstname = $reviewee->firstname;
-                $userinfo[$reviewee->revieweeid]->lastname  = $reviewee->lastname;
-                $userinfo[$reviewee->revieweeid]->picture   = $reviewee->picture;
-                $userinfo[$reviewee->revieweeid]->imagealt  = $reviewee->imagealt;
+        $reviewees = array();
+        if ($participants) {
+            list($participantids, $params) = $DB->get_in_or_equal(array_keys($participants), SQL_PARAMS_NAMED);
+            $params['workshopid'] = $this->workshop->id;
+            $sql = "SELECT a.id AS assessmentid, a.submissionid,
+                           u.id AS reviewerid,
+                           s.id AS submissionid,
+                           e.id AS revieweeid, e.lastname, e.firstname, e.picture, e.imagealt
+                      FROM {user} u
+                      JOIN {workshop_assessments} a ON (a.reviewerid = u.id)
+                      JOIN {workshop_submissions} s ON (a.submissionid = s.id)
+                      JOIN {user} e ON (s.authorid = e.id)
+                     WHERE u.id $participantids AND s.workshopid = :workshopid AND s.example = 0";
+            $reviewees = $DB->get_records_sql($sql, $params);
+            foreach ($reviewees as $reviewee) {
+                if (!isset($userinfo[$reviewee->revieweeid])) {
+                    $userinfo[$reviewee->revieweeid]            = new stdClass();
+                    $userinfo[$reviewee->revieweeid]->id        = $reviewee->revieweeid;
+                    $userinfo[$reviewee->revieweeid]->firstname = $reviewee->firstname;
+                    $userinfo[$reviewee->revieweeid]->lastname  = $reviewee->lastname;
+                    $userinfo[$reviewee->revieweeid]->picture   = $reviewee->picture;
+                    $userinfo[$reviewee->revieweeid]->imagealt  = $reviewee->imagealt;
+                }
             }
         }
 
index db458bffa0fc2d73295e7b570c2c298c51074f04..52adaf57e757781dd7c99173d976fd2fe6881200 100644 (file)
@@ -245,7 +245,7 @@ class workshop {
      * tables. Does not return textual fields to prevent possible memory lack issues.
      *
      * @param mixed $authorid int|array|'all' If set to [array of] integer, return submission[s] of the given user[s] only
-     * @return array
+     * @return array of records or an empty array
      */
     public function get_submissions($authorid='all') {
         global $DB;
@@ -264,13 +264,13 @@ class workshop {
 
         if ('all' === $authorid) {
             // no additional conditions
-        } elseif (is_array($authorid)) {
+        } elseif (!empty($authorid)) {
             list($usql, $uparams) = $DB->get_in_or_equal($authorid, SQL_PARAMS_NAMED);
             $sql .= " AND authorid $usql";
             $params = array_merge($params, $uparams);
         } else {
-            $sql .= ' AND authorid = :authorid';
-            $params['authorid'] = $authorid;
+            // $authorid is empty
+            return array();
         }
         $sql .= ' ORDER BY u.lastname, u.firstname';
 
@@ -993,34 +993,40 @@ class workshop {
         }
 
         // get current reviewees
-        list($participantids, $params) = $DB->get_in_or_equal(array_keys($participants), SQL_PARAMS_NAMED);
-        $params['workshopid'] = $this->id;
-        $sql = "SELECT a.id AS assessmentid, a.submissionid, a.grade, a.gradinggrade, a.gradinggradeover,
-                       u.id AS reviewerid,
-                       s.id AS submissionid,
-                       e.id AS authorid, e.lastname, e.firstname, e.picture, e.imagealt
-                  FROM {user} u
-                  JOIN {workshop_assessments} a ON (a.reviewerid = u.id)
-                  JOIN {workshop_submissions} s ON (a.submissionid = s.id)
-                  JOIN {user} e ON (s.authorid = e.id)
-                 WHERE u.id $participantids AND s.workshopid = :workshopid";
-        $reviewees = $DB->get_records_sql($sql, $params);
-        foreach ($reviewees as $reviewee) {
-            if (!isset($userinfo[$reviewee->authorid])) {
-                $userinfo[$reviewee->authorid]            = new stdClass();
-                $userinfo[$reviewee->authorid]->id        = $reviewee->authorid;
-                $userinfo[$reviewee->authorid]->firstname = $reviewee->firstname;
-                $userinfo[$reviewee->authorid]->lastname  = $reviewee->lastname;
-                $userinfo[$reviewee->authorid]->picture   = $reviewee->picture;
-                $userinfo[$reviewee->authorid]->imagealt  = $reviewee->imagealt;
+        $reviewees = array();
+        if ($participants) {
+            list($participantids, $params) = $DB->get_in_or_equal(array_keys($participants), SQL_PARAMS_NAMED);
+            $params['workshopid'] = $this->id;
+            $sql = "SELECT a.id AS assessmentid, a.submissionid, a.grade, a.gradinggrade, a.gradinggradeover,
+                           u.id AS reviewerid,
+                           s.id AS submissionid,
+                           e.id AS authorid, e.lastname, e.firstname, e.picture, e.imagealt
+                      FROM {user} u
+                      JOIN {workshop_assessments} a ON (a.reviewerid = u.id)
+                      JOIN {workshop_submissions} s ON (a.submissionid = s.id)
+                      JOIN {user} e ON (s.authorid = e.id)
+                     WHERE u.id $participantids AND s.workshopid = :workshopid";
+            $reviewees = $DB->get_records_sql($sql, $params);
+            foreach ($reviewees as $reviewee) {
+                if (!isset($userinfo[$reviewee->authorid])) {
+                    $userinfo[$reviewee->authorid]            = new stdClass();
+                    $userinfo[$reviewee->authorid]->id        = $reviewee->authorid;
+                    $userinfo[$reviewee->authorid]->firstname = $reviewee->firstname;
+                    $userinfo[$reviewee->authorid]->lastname  = $reviewee->lastname;
+                    $userinfo[$reviewee->authorid]->picture   = $reviewee->picture;
+                    $userinfo[$reviewee->authorid]->imagealt  = $reviewee->imagealt;
+                }
             }
         }
 
         // get the current grades for assessment
-        list($participantids, $params) = $DB->get_in_or_equal(array_keys($participants), SQL_PARAMS_NAMED);
-        $params['workshopid'] = $this->id;
-        $sql = "SELECT * FROM {workshop_evaluations} WHERE reviewerid $participantids AND workshopid = :workshopid";
-        $gradinggrades = $DB->get_records_sql($sql, $params);
+        $gradinggrades = array();
+        if ($participants) {
+            list($participantids, $params) = $DB->get_in_or_equal(array_keys($participants), SQL_PARAMS_NAMED);
+            $params['workshopid'] = $this->id;
+            $sql = "SELECT * FROM {workshop_evaluations} WHERE reviewerid $participantids AND workshopid = :workshopid";
+            $gradinggrades = $DB->get_records_sql($sql, $params);
+        }
 
         // now populate the final data object to be rendered
         $grades = array();