Prechádzať zdrojové kódy

Fix bug when subscribing users see BT#4816

Julio Montoya 12 rokov pred
rodič
commit
cdbfd63fec
1 zmenil súbory, kde vykonal 39 pridanie a 31 odobranie
  1. 39 31
      main/user/subscribe_user.php

+ 39 - 31
main/user/subscribe_user.php

@@ -379,7 +379,9 @@ function get_number_of_users() {
  * Get the users to display on the current page.
  */
 function get_user_data($from, $number_of_items, $column, $direction) {
-	global $_course, $_configuration;;
+	global $_course, $_configuration;
+    
+    $url_access_id = api_get_current_access_url_id();        
 
 	// Database table definitions
 	$user_table                    = Database::get_main_table(TABLE_MAIN_USER);
@@ -387,6 +389,8 @@ function get_user_data($from, $number_of_items, $column, $direction) {
 	$tbl_session_rel_course_user   = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 	$table_user_field_values 	   = Database::get_main_table(TABLE_MAIN_USER_FIELD_VALUES);
     
+    $tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
+    
     // adding teachers
 	$is_western_name_order = api_is_western_name_order();
     
@@ -454,10 +458,8 @@ function get_user_data($from, $number_of_items, $column, $direction) {
 				}
 
 				// adding a teacher NOT trough a session on a portal with multiple URLs
-				if ($_configuration['multiple_access_urls']) {
-					$url_access_id = api_get_current_access_url_id();
-					if ($url_access_id !=-1) {
-						$tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
+				if ($_configuration['multiple_access_urls']) {					
+					if ($url_access_id !=-1) {						
 						$sql = "SELECT $select_fields
 						FROM $user_table u
 						LEFT JOIN $course_user_table cu on u.user_id = cu.user_id and course_code='".$_SESSION['_course']['id']."'
@@ -482,26 +484,34 @@ function get_user_data($from, $number_of_items, $column, $direction) {
 		// adding a student
 		if (!empty($_SESSION["id_session"])) {
 			$sql = "SELECT $select_fields
-				FROM $user_table u
-				LEFT JOIN $tbl_session_rel_course_user cu on u.user_id = cu.id_user and course_code='".$_SESSION['_course']['id']."' AND id_session ='".$_SESSION["id_session"]."' ";
-
-			// applying the filter of the additional user profile fields
-			if (isset($_GET['subscribe_user_filter_value']) AND !empty($_GET['subscribe_user_filter_value'])){
-				$field_identification = explode('*',$_GET['subscribe_user_filter_value']);
-				$sql .=	"
-					LEFT JOIN $table_user_field_values field_values
-						ON field_values.user_id = u.user_id
-					WHERE cu.id_user IS NULL AND u.status<>".DRH." AND (u.official_code <> 'ADMIN' OR u.official_code IS NULL)
-						AND field_values.field_id = '".Database::escape_string($field_identification[0])."'
-						AND field_values.field_value = '".Database::escape_string($field_identification[1])."'";
-			} else	{
-				$sql .=	"WHERE cu.id_user IS NULL AND u.status<>".DRH." AND (u.official_code <> 'ADMIN' OR u.official_code IS NULL) ";
-			}
+                    FROM $user_table u
+                    LEFT JOIN $tbl_session_rel_course_user cu ON u.user_id = cu.id_user AND course_code='".$_SESSION['_course']['id']."' AND id_session ='".$_SESSION["id_session"]."' ";
+            
+            if (isset($_configuration['multiple_access_urls']) && $_configuration['multiple_access_urls']) {
+                $sql .= " INNER JOIN  $tbl_url_rel_user as url_rel_user ON (url_rel_user.user_id = u.user_id) ";                
+            }
+            
+            // applying the filter of the additional user profile fields
+            if (isset($_GET['subscribe_user_filter_value']) AND !empty($_GET['subscribe_user_filter_value'])){
+                $field_identification = explode('*',$_GET['subscribe_user_filter_value']);
+                $sql .=	"
+                    LEFT JOIN $table_user_field_values field_values
+                        ON field_values.user_id = u.user_id
+                    WHERE cu.id_user IS NULL AND u.status<>".DRH." AND (u.official_code <> 'ADMIN' OR u.official_code IS NULL)
+                        AND field_values.field_id = '".Database::escape_string($field_identification[0])."'
+                        AND field_values.field_value = '".Database::escape_string($field_identification[1])."'";
+            } else	{
+                $sql .=	"WHERE cu.id_user IS NULL AND u.status<>".DRH." AND (u.official_code <> 'ADMIN' OR u.official_code IS NULL) ";
+            }
+            
+            if (isset($_configuration['multiple_access_urls']) && $_configuration['multiple_access_urls']) {
+                $sql .=  "AND access_url_id = $url_access_id";
+            }            
+            
 		} else {
-
-		$sql = "SELECT $select_fields
-				FROM $user_table u
-				LEFT JOIN $course_user_table cu on u.user_id = cu.user_id and course_code='".$_SESSION['_course']['id']."'";
+            $sql = "SELECT $select_fields
+                    FROM $user_table u
+                    LEFT JOIN $course_user_table cu on u.user_id = cu.user_id and course_code='".$_SESSION['_course']['id']."'";
 
 			// applying the filter of the additional user profile fields
 			if (isset($_GET['subscribe_user_filter_value']) AND !empty($_GET['subscribe_user_filter_value'])){
@@ -515,14 +525,13 @@ function get_user_data($from, $number_of_items, $column, $direction) {
 			} else	{
 				$sql .=	"WHERE cu.user_id IS NULL AND u.status<>".DRH." ";
 			}
-
-			//showing only the courses of the current Dokeos access_url_id
-			global $_configuration;
+            
+			//showing only the courses of the current Chamilo access_url_id
+			
 			if (isset($_configuration['multiple_access_urls']) && $_configuration['multiple_access_urls']) {
-				$url_access_id = api_get_current_access_url_id();
+			
 				if ($url_access_id !=-1) {
 
-					$tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
 					$sql = "SELECT $select_fields
 						FROM $user_table u
 						LEFT JOIN $course_user_table cu on u.user_id = cu.user_id and course_code='".$_SESSION['_course']['id']."'
@@ -542,8 +551,7 @@ function get_user_data($from, $number_of_items, $column, $direction) {
 					} else	{
 						$sql .=	"WHERE  cu.user_id IS NULL AND u.status<>".DRH." AND access_url_id= $url_access_id ";
 					}
-
-				}
+				}              
 			}
 		}
 	}