Bläddra i källkod

Adding session support when qualifying posts in a forum see BT#1837

Julio Montoya 14 år sedan
förälder
incheckning
7bd3788fe3
1 ändrade filer med 86 tillägg och 28 borttagningar
  1. 86 28
      main/forum/forumfunction.inc.php

+ 86 - 28
main/forum/forumfunction.inc.php

@@ -1563,22 +1563,40 @@ function get_thread_information($thread_id) {
 * @param	string	Course DB name (optional)
 * @return	resource array Array of type ([user_id=>w,lastname=>x,firstname=>y,thread_id=>z],[])
 * @author Christian Fasanando <christian.fasanando@dokeos.com>,
+* @todo     this function need to be improved
 * @version octubre 2008, dokeos 1.8
 */
 
 function get_thread_users_details($thread_id, $db_name = null) {
-	$t_posts = Database :: get_course_table(TABLE_FORUM_POST, (empty($db_name)?null:$db_name));
-	$t_users = Database :: get_main_table(TABLE_MAIN_USER);
-	$t_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
-
-	$sql = "SELECT DISTINCT user.user_id, user.lastname, user.firstname, thread_id
-			  FROM $t_posts , $t_users user, $t_course_user course_user
-			  WHERE poster_id = user.user_id
-			  AND user.user_id = course_user.user_id
-			  AND course_user.relation_type<>".COURSE_RELATION_TYPE_RRHH."
-			  AND thread_id = '".Database::escape_string($thread_id)."'
-			  AND course_user.status NOT IN('1')
-			  AND course_code = '".api_get_course_id()."'";
+	$t_posts               = Database :: get_course_table(TABLE_FORUM_POST, (empty($db_name)?null:$db_name));
+	$t_users               = Database :: get_main_table(TABLE_MAIN_USER);
+	$t_course_user         = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
+    $t_session_rel_user    = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
+    
+    if (api_get_session_id()) {
+        $session_info = api_get_session_info(api_get_session_id());
+        $user_to_avoid = "'".$session_info['id_coach']."', '".$session_info['session_admin_id']."'";
+        //not showing coaches
+        $sql = "SELECT DISTINCT user.user_id, user.lastname, user.firstname, thread_id
+                  FROM $t_posts , $t_users user, $t_session_rel_user session_rel_user_rel_course
+                  WHERE poster_id = user.user_id
+                  AND user.user_id = session_rel_user_rel_course.id_user
+                  AND session_rel_user_rel_course.status<>'2' 
+                  AND session_rel_user_rel_course.id_user NOT IN ($user_to_avoid)
+                  AND thread_id = '".Database::escape_string($thread_id)."'
+                  AND id_session = '".api_get_session_id()."'                        
+                  AND course_code = '".api_get_course_id()."'";
+                  
+    } else {
+    	$sql = "SELECT DISTINCT user.user_id, user.lastname, user.firstname, thread_id
+    			  FROM $t_posts , $t_users user, $t_course_user course_user
+    			  WHERE poster_id = user.user_id
+    			  AND user.user_id = course_user.user_id
+    			  AND course_user.relation_type<>".COURSE_RELATION_TYPE_RRHH."
+    			  AND thread_id = '".Database::escape_string($thread_id)."'
+    			  AND course_user.status NOT IN('1')
+    			  AND course_code = '".api_get_course_id()."'";
+    }    
 	$result = Database::query($sql);
 	return $result;
 }
@@ -1589,6 +1607,7 @@ function get_thread_users_details($thread_id, $db_name = null) {
 * @param	string	Course DB name (optional)
 * @return	array Array of type ([user_id=>w,lastname=>x,firstname=>y,thread_id=>z],[])
 * @author Jhon Hinojosa<jhon.hinojosa@dokeos.com>,
+* @todo     this function need to be improved
 * @version octubre 2008, dokeos 1.8
 */
 
@@ -1597,21 +1616,38 @@ function get_thread_users_qualify($thread_id, $db_name = null) {
 	$t_qualify = Database :: get_course_table(TABLE_FORUM_THREAD_QUALIFY, (empty($db_name)?null:$db_name));
 	$t_users = Database :: get_main_table(TABLE_MAIN_USER);
 	$t_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
-
-  $sql = "SELECT post.poster_id, user.lastname, user.firstname, post.thread_id,user.user_id,qualify.qualify
-						FROM $t_posts post,
-						     $t_qualify qualify,
-						     $t_users user,
-						     $t_course_user course_user
-						WHERE
-						     post.poster_id = user.user_id
-						     AND post.poster_id = qualify.user_id
-						     AND user.user_id = course_user.user_id
-						     AND course_user.relation_type<>".COURSE_RELATION_TYPE_RRHH."
-						     AND qualify.thread_id = '".Database::escape_string($thread_id)."'
-						     AND course_user.status not in('1')
-						     AND course_code = '".api_get_course_id()."'
-						GROUP BY post.poster_id ";
+    $t_session_rel_user    = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
+    
+    if (api_get_session_id()) {
+        $session_info = api_get_session_info(api_get_session_id());
+        $user_to_avoid = "'".$session_info['id_coach']."', '".$session_info['session_admin_id']."'";
+        //not showing coaches
+        $sql = "SELECT post.poster_id, user.lastname, user.firstname, post.thread_id,user.user_id,qualify.qualify
+                  FROM $t_posts post , $t_users user, $t_session_rel_user session_rel_user_rel_course, $t_qualify qualify
+                  WHERE poster_id = user.user_id
+                  AND post.poster_id = qualify.user_id
+                  AND user.user_id = session_rel_user_rel_course.id_user
+                  AND session_rel_user_rel_course.status<>'2' 
+                  AND session_rel_user_rel_course.id_user NOT IN ($user_to_avoid)
+                  AND qualify.thread_id = '".Database::escape_string($thread_id)."'
+                  AND id_session = '".api_get_session_id()."'                        
+                  AND course_code = '".api_get_course_id()."'";                  
+    } else {
+          $sql = "SELECT post.poster_id, user.lastname, user.firstname, post.thread_id,user.user_id,qualify.qualify
+        						FROM $t_posts post,
+        						     $t_qualify qualify,
+        						     $t_users user,
+        						     $t_course_user course_user
+        						WHERE
+        						     post.poster_id = user.user_id
+        						     AND post.poster_id = qualify.user_id
+        						     AND user.user_id = course_user.user_id
+        						     AND course_user.relation_type<>".COURSE_RELATION_TYPE_RRHH."
+        						     AND qualify.thread_id = '".Database::escape_string($thread_id)."'
+        						     AND course_user.status not in('1')
+        						     AND course_code = '".api_get_course_id()."'
+        						GROUP BY post.poster_id ";
+    }
 	$result = Database::query($sql);
 	return $result;
 }
@@ -1621,7 +1657,8 @@ function get_thread_users_qualify($thread_id, $db_name = null) {
 * @param 	int Thread ID
 * @param	string	Course DB name (optional)
 * @return	array Array of type ([user_id=>w,lastname=>x,firstname=>y,thread_id=>z],[])
-* @author Jhon Hinojosa<jhon.hinojosa@dokeos.com>,
+* @author   Jhon Hinojosa<jhon.hinojosa@dokeos.com>,
+* @todo     i'm a horrible function fix me
 * @version octubre 2008, dokeos 1.8
 */
 
@@ -1630,6 +1667,7 @@ function get_thread_users_not_qualify($thread_id, $db_name = null) {
 	$t_qualify = Database :: get_course_table(TABLE_FORUM_THREAD_QUALIFY, (empty($db_name)?null:$db_name));
 	$t_users = Database :: get_main_table(TABLE_MAIN_USER);
 	$t_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
+       $t_session_rel_user    = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
 
   	$sql1 = "select user_id FROM  $t_qualify WHERE thread_id = '".$thread_id."'";
 	$result1 = Database::query($sql1);
@@ -1642,6 +1680,25 @@ function get_thread_users_not_qualify($thread_id, $db_name = null) {
     } else  {
     	$cad=substr($cad,0,strlen($cad)-1);
     }
+    
+    if (api_get_session_id()) {
+        $session_info = api_get_session_info(api_get_session_id());
+        $user_to_avoid = "'".$session_info['id_coach']."', '".$session_info['session_admin_id']."'";
+        //not showing coaches
+        $sql = "SELECT user.user_id, user.lastname, user.firstname, post.thread_id
+                  FROM $t_posts post , $t_users user, $t_session_rel_user session_rel_user_rel_course
+                  WHERE poster_id = user.user_id
+                  AND user.user_id NOT IN (".$cad.")
+                  AND user.user_id = session_rel_user_rel_course.id_user
+                  AND session_rel_user_rel_course.status<>'2' 
+                  AND session_rel_user_rel_course.id_user NOT IN ($user_to_avoid)
+                      AND post.thread_id = '".Database::escape_string($thread_id)."'
+                  AND id_session = '".api_get_session_id()."'                        
+                  AND course_code = '".api_get_course_id()."'";
+    } else {
+        	
+        
+    
 	$sql = "SELECT DISTINCT user.user_id, user.lastname, user.firstname, post.thread_id
 			  FROM $t_posts post, $t_users user,$t_course_user course_user
 			  WHERE post.poster_id = user.user_id
@@ -1651,6 +1708,7 @@ function get_thread_users_not_qualify($thread_id, $db_name = null) {
 			  AND post.thread_id = '".Database::escape_string($thread_id)."'
 			  AND course_user.status not in('1')
 			  AND course_code = '".api_get_course_id()."'";
+    }
 	$result = Database::query($sql);
 	return $result;
 }