|
@@ -71,7 +71,7 @@ class UserGroup extends Model
|
|
|
/**
|
|
|
* @return int
|
|
|
*/
|
|
|
- public function get_count()
|
|
|
+ public function get_count($type = -1)
|
|
|
{
|
|
|
if ($this->useMultipleUrl) {
|
|
|
$urlId = api_get_current_access_url_id();
|
|
@@ -89,22 +89,40 @@ class UserGroup extends Model
|
|
|
|
|
|
return 0;
|
|
|
} else {
|
|
|
- return $this->getTotalCount();
|
|
|
+
|
|
|
+ $typeCondition = '';
|
|
|
+ if ($type != -1) {
|
|
|
+ $type = intval($type);
|
|
|
+ $typeCondition = " WHERE group_type = $type ";
|
|
|
+ }
|
|
|
+
|
|
|
+ $sql = "SELECT count(a.id) as count
|
|
|
+ FROM {$this->table} a
|
|
|
+ $typeCondition
|
|
|
+ ";
|
|
|
+ $result = Database::query($sql);
|
|
|
+ if (Database::num_rows($result)) {
|
|
|
+ $row = Database::fetch_array($result);
|
|
|
+ return $row['count'];
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @param int $course_id
|
|
|
+ * @param int $type
|
|
|
*
|
|
|
* @return mixed
|
|
|
*/
|
|
|
- public function get_usergroup_by_course_with_data_count($course_id)
|
|
|
+ public function getUserGroupByCourseWithDataCount($course_id, $type = -1)
|
|
|
{
|
|
|
if ($this->useMultipleUrl) {
|
|
|
$course_id = intval($course_id);
|
|
|
$urlId = api_get_current_access_url_id();
|
|
|
- $sql = "SELECT count(c.usergroup_id) as count FROM {$this->usergroup_rel_course_table} c
|
|
|
- INNER JOIN {$this->access_url_rel_usergroup} a ON (c.usergroup_id = a.usergroup_id)
|
|
|
+ $sql = "SELECT count(c.usergroup_id) as count
|
|
|
+ FROM {$this->usergroup_rel_course_table} c
|
|
|
+ INNER JOIN {$this->access_url_rel_usergroup} a
|
|
|
+ ON (c.usergroup_id = a.usergroup_id)
|
|
|
WHERE access_url_id = $urlId AND course_id = $course_id
|
|
|
";
|
|
|
$result = Database::query($sql);
|
|
@@ -115,14 +133,26 @@ class UserGroup extends Model
|
|
|
|
|
|
return 0;
|
|
|
} else {
|
|
|
- $row = Database::select(
|
|
|
- 'count(*) as count',
|
|
|
- $this->usergroup_rel_course_table,
|
|
|
- array('where' => array('course_id = ?' => $course_id)),
|
|
|
- 'first'
|
|
|
- );
|
|
|
+ $typeCondition = '';
|
|
|
+ if ($type != -1) {
|
|
|
+ $type = intval($type);
|
|
|
+ $typeCondition = " AND group_type = $type ";
|
|
|
+ }
|
|
|
+ $sql = "SELECT count(c.usergroup_id) as count
|
|
|
+ FROM {$this->usergroup_rel_course_table} c
|
|
|
+ INNER JOIN {$this->table} a
|
|
|
+ ON (c.usergroup_id = a.id)
|
|
|
+ WHERE
|
|
|
+ course_id = $course_id
|
|
|
+ $typeCondition
|
|
|
+ ";
|
|
|
+ $result = Database::query($sql);
|
|
|
+ if (Database::num_rows($result)) {
|
|
|
+ $row = Database::fetch_array($result);
|
|
|
+ return $row['count'];
|
|
|
+ }
|
|
|
|
|
|
- return $row['count'];
|
|
|
+ return 0;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -231,7 +261,7 @@ class UserGroup extends Model
|
|
|
*
|
|
|
* @return array
|
|
|
*/
|
|
|
- public function get_usergroup_in_course($options = array())
|
|
|
+ public function getUserGroupInCourse($options = array())
|
|
|
{
|
|
|
if ($this->useMultipleUrl) {
|
|
|
$sql = "SELECT u.* FROM {$this->usergroup_rel_course_table} usergroup
|
|
@@ -239,7 +269,8 @@ class UserGroup extends Model
|
|
|
ON (u.id = usergroup.usergroup_id)
|
|
|
INNER JOIN {$this->table_course} c
|
|
|
ON (usergroup.course_id = c.id)
|
|
|
- INNER JOIN {$this->access_url_rel_usergroup} a ON (a.usergroup_id = u.id)
|
|
|
+ INNER JOIN {$this->access_url_rel_usergroup} a
|
|
|
+ ON (a.usergroup_id = u.id)
|
|
|
";
|
|
|
} else {
|
|
|
$sql = "SELECT u.* FROM {$this->usergroup_rel_course_table} usergroup
|
|
@@ -249,13 +280,22 @@ class UserGroup extends Model
|
|
|
ON (usergroup.course_id = c.id)
|
|
|
";
|
|
|
}
|
|
|
+
|
|
|
$conditions = Database::parse_conditions($options);
|
|
|
+
|
|
|
+ if (empty($conditions)) {
|
|
|
+ $conditions .= "WHERE 1 = 1 $typeCondition ";
|
|
|
+ } else {
|
|
|
+ $conditions .= " $typeCondition ";
|
|
|
+ }
|
|
|
+
|
|
|
$sql .= $conditions;
|
|
|
if ($this->useMultipleUrl) {
|
|
|
$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);
|
|
@@ -272,10 +312,11 @@ class UserGroup extends Model
|
|
|
|
|
|
/**
|
|
|
* @param array $options
|
|
|
+ * @param int $type
|
|
|
*
|
|
|
* @return array|bool
|
|
|
*/
|
|
|
- public function get_usergroup_not_in_course($options = array())
|
|
|
+ public function getUserGroupNotInCourse($options = array(), $type = -1)
|
|
|
{
|
|
|
$course_id = null;
|
|
|
if (isset($options['course_id'])) {
|
|
@@ -287,6 +328,12 @@ class UserGroup extends Model
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ $typeCondition = '';
|
|
|
+ if ($type != -1) {
|
|
|
+ $type = intval($type);
|
|
|
+ $typeCondition = " AND group_type = $type ";
|
|
|
+ }
|
|
|
+
|
|
|
if ($this->useMultipleUrl) {
|
|
|
$urlId = api_get_current_access_url_id();
|
|
|
$sql = "SELECT DISTINCT u.*
|
|
@@ -304,6 +351,13 @@ class UserGroup extends Model
|
|
|
";
|
|
|
}
|
|
|
$conditions = Database::parse_conditions($options);
|
|
|
+
|
|
|
+ if (empty($conditions)) {
|
|
|
+ $conditions .= "WHERE 1 = 1 $typeCondition ";
|
|
|
+ } else {
|
|
|
+ $conditions .= " $typeCondition ";
|
|
|
+ }
|
|
|
+
|
|
|
$sql .= $conditions;
|
|
|
|
|
|
if ($this->useMultipleUrl) {
|