Browse Source

Fixing pagination error see BT#7790

Julio Montoya 11 years ago
parent
commit
36f895a7e8
1 changed files with 33 additions and 5 deletions
  1. 33 5
      main/inc/lib/usergroup.lib.php

+ 33 - 5
main/inc/lib/usergroup.lib.php

@@ -53,6 +53,7 @@ class UserGroup extends Model
     public function getTotalCount()
     {
         $row = Database::select('count(*) as count', $this->table, array(), 'first');
+
         return $row['count'];
     }
 
@@ -64,14 +65,17 @@ class UserGroup extends Model
         if ($this->useMultipleUrl) {
             $urlId = api_get_current_access_url_id();
             $sql = "SELECT count(u.id) as count FROM ".$this->table." u
-                    INNER JOIN ".$this->access_url_rel_usergroup." a ON (u.id = a.usergroup_id)
+                    INNER JOIN ".$this->access_url_rel_usergroup." a
+                        ON (u.id = a.usergroup_id)
                     WHERE access_url_id = $urlId
             ";
             $result = Database::query($sql);
             if (Database::num_rows($result)) {
                 $row  = Database::fetch_array($result);
+
                 return $row['count'];
             }
+
             return 0;
         } else {
             return $this->getTotalCount();
@@ -97,6 +101,7 @@ class UserGroup extends Model
                 $row  = Database::fetch_array($result);
                 return $row['count'];
             }
+
             return 0;
 
         } else {
@@ -106,6 +111,7 @@ class UserGroup extends Model
                 array('where' => array('course_id = ?' => $course_id)),
                 'first'
             );
+
             return $row['count'];
         }
     }
@@ -118,6 +124,7 @@ class UserGroup extends Model
     public function get_id_by_name($name)
     {
         $row = Database::select('id', $this->table, array('where' => array('name = ?' => $name)), 'first');
+
         return $row['id'];
     }
 
@@ -146,8 +153,8 @@ class UserGroup extends Model
 
     /**
      * Gets a list of course ids by user group
-     * @param   int user group id
-     * @param array $conditionsLike
+     * @param int user group id
+     * @param array $loadCourseData
      * @return  array
      */
     public function get_courses_by_usergroup($id, $loadCourseData = false)
@@ -204,11 +211,13 @@ class UserGroup extends Model
                 }
             }
         }
+
         return $array;
     }
 
     /**
      * @param array $options
+     *
      * @return array
      */
     public function get_usergroup_in_course($options = array())
@@ -235,13 +244,24 @@ class UserGroup extends Model
             $urlId = api_get_current_access_url_id();
             $sql .= " AND access_url_id = $urlId ";
         }
+
+        if (isset($options['LIMIT'])) {
+            $limits = explode(',', $options['LIMIT']);
+            $limits = array_map('intval', $limits);
+            if (isset($limits[0]) && isset($limits[1])) {
+                $sql .= " LIMIT ".$limits[0].', '.$limits[1];
+            }
+        }
+
         $result = Database::query($sql);
         $array = Database::store_result($result, 'ASSOC');
+
         return $array;
     }
 
     /**
      * @param array $options
+     *
      * @return array|bool
      */
     public function get_usergroup_not_in_course($options = array())
@@ -251,13 +271,13 @@ class UserGroup extends Model
             $course_id = intval($options['course_id']);
             unset($options['course_id']);
         }
+
         if (empty($course_id)) {
             return false;
         }
-        if ($this->useMultipleUrl) {
 
+        if ($this->useMultipleUrl) {
             $urlId = api_get_current_access_url_id();
-
             $sql = "SELECT DISTINCT u.id, name
                     FROM {$this->table} u
                     INNER JOIN {$this->access_url_rel_usergroup} a
@@ -281,8 +301,16 @@ class UserGroup extends Model
             $sql .= " AND access_url_id = $urlId";
         }
 
+        if (isset($options['LIMIT'])) {
+            $limits = explode(',', $options['LIMIT']);
+            $limits = array_map('intval', $limits);
+            if (isset($limits[0]) && isset($limits[1])) {
+                $sql .= " LIMIT ".$limits[0].', '.$limits[1];
+            }
+        }
         $result = Database::query($sql);
         $array = Database::store_result($result, 'ASSOC');
+
         return $array;
     }