Browse Source

Fixing add users, courses and sessions see BT#2021

Julio Montoya 14 years ago
parent
commit
25b68c938e
3 changed files with 85 additions and 25 deletions
  1. 0 1
      main/admin/add_courses_to_usergroup.php
  2. 1 0
      main/inc/lib/text.lib.php
  3. 84 24
      main/inc/lib/usergroup.lib.php

+ 0 - 1
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;        

+ 1 - 0
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 {

+ 84 - 24
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);
             }
         }