From 25b68c938edd4ff9bac098c72569059d6e702cac Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Fri, 4 Feb 2011 15:47:27 +0100 Subject: [PATCH] Fixing add users, courses and sessions see BT#2021 --- main/admin/add_courses_to_usergroup.php | 1 - main/inc/lib/text.lib.php | 1 + main/inc/lib/usergroup.lib.php | 108 ++++++++++++++++++------ 3 files changed, 85 insertions(+), 25 deletions(-) diff --git a/main/admin/add_courses_to_usergroup.php b/main/admin/add_courses_to_usergroup.php index cb7afc98a1..0d23ad668f 100644 --- a/main/admin/add_courses_to_usergroup.php +++ b/main/admin/add_courses_to_usergroup.php @@ -89,7 +89,6 @@ if($_POST['form_sent']) { $elements_posted=array(); } if ($form_sent == 1) { - //added a parameter to send emails when registering a user $usergroup->subscribe_courses_to_usergroup($id, $elements_posted); header('Location: usergroups.php'); exit; diff --git a/main/inc/lib/text.lib.php b/main/inc/lib/text.lib.php index aa906056b5..4266aa13a8 100755 --- a/main/inc/lib/text.lib.php +++ b/main/inc/lib/text.lib.php @@ -582,6 +582,7 @@ function float_format($number, $flag = 1) { if (!$number) { $result = ($flag == 2 ? '0.00' : '0'); } else { + if (floor($number) == $number) { $result = number_format($number, ($flag == 2 ? 2 : 0)); } else { diff --git a/main/inc/lib/usergroup.lib.php b/main/inc/lib/usergroup.lib.php index f8521eaf50..c27c1b2aec 100644 --- a/main/inc/lib/usergroup.lib.php +++ b/main/inc/lib/usergroup.lib.php @@ -8,6 +8,7 @@ */ require_once 'model.lib.php'; +require_once api_get_path(LIBRARY_PATH).'sessionmanager.lib.php'; class UserGroup extends Model { @@ -125,13 +126,16 @@ class UserGroup extends Model { //Deleting items if (!empty($delete_items)) { foreach($delete_items as $session_id) { - foreach($user_list as $user_id) { - SessionManager::unsubscribe_user_from_session($session_id, $user_id); - /*foreach ($course_list as $course_data) { - foreach($user_list as $user_id) { - CourseManager::subscribe_user($user_id, $course_data['code'], $session_id); - } - }*/ + if (!empty($user_list)) { + foreach($user_list as $user_id) { + + SessionManager::unsubscribe_user_from_session($session_id, $user_id); + /*foreach ($course_list as $course_data) { + foreach($user_list as $user_id) { + CourseManager::subscribe_user($user_id, $course_data['code'], $session_id); + } + }*/ + } } Database::delete($this->usergroup_rel_session_table, array('usergroup_id = ? AND session_id = ?'=>array($usergroup_id, $session_id))); } @@ -139,10 +143,13 @@ class UserGroup extends Model { //Addding new relationships if (!empty($new_items)) { - foreach($new_items as $id) { - $params = array('session_id'=>$id, 'usergroup_id'=>$usergroup_id); - Database::insert($this->usergroup_rel_session_table, $params); - SessionManager::suscribe_users_to_session($session_id, $user_list); + foreach($new_items as $session_id) { + $params = array('session_id'=>$session_id, 'usergroup_id'=>$usergroup_id); + Database::insert($this->usergroup_rel_session_table, $params); + + if (!empty($user_list)) { + SessionManager::suscribe_users_to_session($session_id, $user_list); + } /* $course_list = SessionManager::get_course_list_by_session_id($id); foreach ($course_list as $course_data) { @@ -185,8 +192,10 @@ class UserGroup extends Model { if (!empty($delete_items)) { foreach($delete_items as $course_id) { $course_info = api_get_course_info_by_id($course_id); - foreach($user_list as $user_id) { - CourseManager::unsubscribe_user($user_id, $course_info['code']); + if (!empty($user_list)) { + foreach($user_list as $user_id) { + CourseManager::unsubscribe_user($user_id, $course_info['code']); + } } Database::delete($this->usergroup_rel_course_table, array('usergroup_id = ? AND course_id = ?'=>array($usergroup_id, $course_id))); } @@ -196,12 +205,13 @@ class UserGroup extends Model { if (!empty($new_items)) { foreach($new_items as $course_id) { $course_info = api_get_course_info_by_id($course_id); - - foreach($user_list as $user_id) { - CourseManager::subscribe_user($user_id, $course_info['code']); + if (!empty($user_list)) { + foreach($user_list as $user_id) { + CourseManager::subscribe_user($user_id, $course_info['code']); + } } - $params = array('course_id'=>$id, 'usergroup_id'=>$usergroup_id); + $params = array('course_id'=>$course_id, 'usergroup_id'=>$usergroup_id); Database::insert($this->usergroup_rel_course_table, $params); } } @@ -213,15 +223,65 @@ class UserGroup extends Model { * @param array list of user ids */ function subscribe_users_to_usergroup($usergroup_id, $list) { - $user_list = self::get_users_by_usergroup($usergroup_id); + $current_list = self::get_users_by_usergroup($usergroup_id); + $course_list = self::get_courses_by_usergroup($usergroup_id); + $session_list = self::get_sessions_by_usergroup($usergroup_id); + + $delete_items = $new_items = array(); + if (!empty($list)) { + foreach ($list as $user_id) { + if (!in_array($user_id, $current_list)) { + $new_items[] = $user_id; + } + } + } + if (!empty($current_list)) { + foreach($current_list as $user_id) { + if (!in_array($user_id, $list)) { + $delete_items[] = $user_id; + } + } + } + + //Deleting items + if (!empty($delete_items)) { + + foreach($delete_items as $user_id) { + //Removing courses + if (!empty($course_list)) { + foreach($course_list as $course_id) { + $course_info = api_get_course_info_by_id($course_id); + CourseManager::unsubscribe_user($user_id, $course_info['code']); + } + } + //Removing sessions + if (!empty($session_list)) { + foreach($session_list as $session_id) { + SessionManager::unsubscribe_user_from_session($session_id, $user_id); + } + } - //Deleting relationships - Database::delete($this->usergroup_rel_user_table, array('usergroup_id = ?'=>$usergroup_id)); + Database::delete($this->usergroup_rel_user_table, array('usergroup_id = ? AND user_id = ?'=>array($usergroup_id, $user_id))); + } + } - //Adding new relationships - if (!empty($list)) { - foreach($list as $id) { - $params = array('user_id'=>$id, 'usergroup_id'=>$usergroup_id); + //Addding new relationships + if (!empty($new_items)) { + //Adding sessions + if (!empty($session_list)) { + foreach($session_list as $session_id) { + SessionManager::suscribe_users_to_session($session_id, $new_items); + } + } + foreach($new_items as $user_id) { + //Adding courses + if (!empty($course_list)) { + foreach($course_list as $course_id) { + $course_info = api_get_course_info_by_id($course_id); + CourseManager::subscribe_user($user_id, $course_info['code']); + } + } + $params = array('user_id'=>$user_id, 'usergroup_id'=>$usergroup_id); Database::insert($this->usergroup_rel_user_table, $params); } }