aportugal 15 年之前
父節點
當前提交
19cadb4dd9
共有 4 個文件被更改,包括 72 次插入10 次删除
  1. 1 0
      documentation/changelog.html
  2. 44 5
      main/chat/chat_banner.php
  3. 14 1
      main/group/group_space.php
  4. 13 4
      main/inc/lib/groupmanager.lib.php

+ 1 - 0
documentation/changelog.html

@@ -30,6 +30,7 @@
   <li>Added sessions history (optional access to previous sessions in read-only for students)</li>
   <li>Added advanced search  in sessions: you can also search by session name, session category, tutor and visibility. (DT#5541)</li>
   <li>Added an option to configure courses as "auto-registered" (every user has it in his courses list and is automatically subscribed)</li>
+  <li>Added chat tool to the groups(DT#3318)</li>
   <li>Allowed password to be recovered using username *or* e-mail</li>
   <li>Added editable section to the registration form</li>
   <li>Reporting: notification of user who have never been active yet</li>

+ 44 - 5
main/chat/chat_banner.php

@@ -31,15 +31,54 @@
 */
 
 $language_file = array ('chat');
-
 include('../inc/global.inc.php');
+require_once api_get_path(LIBRARY_PATH).'groupmanager.lib.php';
+
+//$interbreadcrumb[] = array ("url" => "chat.php", "name" => get_lang("Chat"));
+//$noPHP_SELF=true;
+//$shortBanner=false;
+//Display::display_header(null,"Chat");
+
+$tool_name = get_lang('Chat');
+
+// If it is a group chat then the breadcrumbs.
+if ($_SESSION['_gid'] OR $_GET['group_id']) {
+
+	if (isset($_SESSION['_gid'])) {
+		$_clean['group_id']=(int)$_SESSION['_gid'];
+	}
+	if (isset($_GET['group_id'])) {
+		$_clean['group_id']=(int)Database::escape_string($_GET['group_id']);
+	}
 
+	$group_properties  = GroupManager :: get_group_properties($_clean['group_id']);
+	$interbreadcrumb[] = array ("url" => "../group/group.php", "name" => get_lang('Groups'));
+	$interbreadcrumb[] = array ("url"=>"../group/group_space.php?gidReq=".$_SESSION['_gid'], "name"=> get_lang('GroupSpace').' ('.$group_properties['name'].')');
+	$noPHP_SELF=true;
+	$shortBanner=false;
+	$add_group_to_title = ' ('.$group_properties['name'].')';
+	$groupfilter='group_id="'.$_clean['group_id'].'"';
 
-$interbreadcrumb[] = array ("url" => "chat.php", "name" => get_lang("Chat"));
-$noPHP_SELF=true;
-$shortBanner=false;
+	//ensure this tool in groups whe it's private or deactivated
+	/*if 	($group_properties['chat_state']==0)
+	{
+		echo api_not_allowed();
+	}
+	elseif ($group_properties['chat_state']==2)
+	{
+ 		if (!api_is_allowed_to_edit(false,true) and !GroupManager :: is_user_in_group($_user['user_id'], $_SESSION['_gid']))
+		{
+			echo api_not_allowed();
+		}
+	}*/
 
-Display::display_header(null,"Chat");
+}
+else
+{
+	$groupfilter='group_id=0';
+}
+Display::display_header($tool_name, 'Chat');
+//$is_allowed_to_edit = api_is_allowed_to_edit(false,true);
 ?>
 
 </body>

+ 14 - 1
main/group/group_space.php

@@ -79,7 +79,7 @@ if (is_array($forums_of_groups)) {
 	}
 }
 
-if 	($current_group['doc_state']!=1 and $current_group['calendar_state']!=1 and $current_group['work_state']!=1 and $current_group['announcements_state']!=1 and $current_group['wiki_state']!=1 and $forum_state_public!=1) {
+if 	($current_group['doc_state']!=1 and $current_group['calendar_state']!=1 and $current_group['work_state']!=1 and $current_group['announcements_state']!=1 and $current_group['wiki_state']!=1 and $current_group['chat_state']!=1 and $forum_state_public!=1) {
 	if (!api_is_allowed_to_edit(null,true) and !GroupManager :: is_user_in_group($_user['user_id'], $current_group['id'])) {
 		echo api_not_allowed($print_headers);
 	}
@@ -214,6 +214,13 @@ if (api_is_allowed_to_edit(false,true) OR GroupManager :: is_user_in_group($_SES
 		//link to the wiki area of this group
 		$tools .= "<div style='margin-bottom: 5px;'><a href=\"../wiki/index.php?".api_get_cidreq()."&amp;toolgroup=".$current_group['id']."\">".Display::return_icon('wiki.gif', get_lang("GroupWiki"))."&nbsp;".get_lang("GroupWiki")."</a></div>";
 	}
+	
+	if ( $current_group['chat_state'] != TOOL_NOT_AVAILABLE)
+	{
+		//link to the chat area of this group
+		$tools .= "<div style='margin-bottom: 5px;'><a href=\"../chat/chat.php?".api_get_cidreq()."&amp;toolgroup=".$current_group['id']."\">".Display::return_icon('chat.gif', get_lang("Chat"))."&nbsp;".get_lang("Chat")."</a></div>";
+	}
+	
 	echo '<div class="actions-message" style="margin-bottom:4px;"><b>'.get_lang("Tools").':</b></div>';
 	if (!empty($tools))
 	{
@@ -262,6 +269,12 @@ if (api_is_allowed_to_edit(false,true) OR GroupManager :: is_user_in_group($_SES
 		//link to the wiki area of this group
 		$tools .= "<a href=\"../wiki/index.php?".api_get_cidreq()."&amp;toolgroup=".$current_group['id']."\">".Display::return_icon('wiki.gif', get_lang('GroupWiki'))."&nbsp;".get_lang('GroupWiki')."</a><br/>";
 	}
+	
+	if ( $current_group['chat_state'] == TOOL_PUBLIC )
+	{
+		//link to the chat area of this group
+		$tools .= "<a href=\"../chat/chat.php?".api_get_cidreq()."&amp;toolgroup=".$current_group['id']."\">".Display::return_icon('chat.gif', get_lang('Chat'))."&nbsp;".get_lang('Chat')."</a><br/>";
+	}
 
 	echo '<br/>';
 

+ 13 - 4
main/inc/lib/groupmanager.lib.php

@@ -68,6 +68,7 @@ define("GROUP_TOOL_CALENDAR","2");
 define("GROUP_TOOL_ANNOUNCEMENT","3");
 define("GROUP_TOOL_WORK","4");
 define("GROUP_TOOL_WIKI", "5");
+define("GROUP_TOOL_CHAT", "6");
 
 /**
  * Fixed id's for group categories
@@ -226,7 +227,7 @@ class GroupManager {
 		}
 		$sql = "INSERT INTO ".$table_group." SET
 				category_id='".Database::escape_string($category_id)."', max_student = '".$places."', doc_state = '".$category['doc_state']."',
-				calendar_state = '".$category['calendar_state']."', work_state = '".$category['work_state']."', announcements_state = '".$category['announcements_state']."', forum_state = '".$category['forum_state']."', wiki_state = '".$category['wiki_state']."', self_registration_allowed = '".$category['self_reg_allowed']."',  self_unregistration_allowed = '".$category['self_unreg_allowed']."', session_id='".Database::escape_string($my_id_session)."'";
+				calendar_state = '".$category['calendar_state']."', work_state = '".$category['work_state']."', announcements_state = '".$category['announcements_state']."', forum_state = '".$category['forum_state']."', wiki_state = '".$category['wiki_state']."', chat_state = '".$category['chat_state']."', self_registration_allowed = '".$category['self_reg_allowed']."',  self_unregistration_allowed = '".$category['self_unreg_allowed']."', session_id='".Database::escape_string($my_id_session)."'";
 		Database::query($sql,__FILE__,__LINE__);
 		$lastId = Database::insert_id();
 		/*$secret_directory = uniqid("")."_team_".$lastId;
@@ -470,6 +471,7 @@ class GroupManager {
 			$result['announcements_state'] = $db_object->announcements_state;
 			$result['forum_state'] = $db_object->forum_state;
 			$result['wiki_state'] = $db_object->wiki_state;
+			$result['chat_state'] = $db_object->chat_state;
 			$result['directory'] = $db_object->secret_directory;
 			$result['self_registration_allowed'] = $db_object->self_registration_allowed;
 			$result['self_unregistration_allowed'] = $db_object->self_unregistration_allowed;
@@ -489,11 +491,12 @@ class GroupManager {
 	 * @param int		Announcement tool's visibility (0=none,1=private,2=public)
 	 * @param int		Forum tool's visibility (0=none,1=private,2=public)
 	 * @param int		Wiki tool's visibility (0=none,1=private,2=public)
+	 * @param int		Chat tool's visibility (0=none,1=private,2=public)
 	 * @param bool 		Whether self registration is allowed or not
 	 * @param bool 		Whether self unregistration is allowed or not
 	 * @return bool 	TRUE if properties are successfully changed, false otherwise
 	 */
-	public static function set_group_properties ($group_id, $name, $description, $maximum_number_of_students, $doc_state, $work_state, $calendar_state, $announcements_state, $forum_state,$wiki_state, $self_registration_allowed, $self_unregistration_allowed) {
+	public static function set_group_properties ($group_id, $name, $description, $maximum_number_of_students, $doc_state, $work_state, $calendar_state, $announcements_state, $forum_state, $wiki_state, $chat_state, $self_registration_allowed, $self_unregistration_allowed) {
 		$table_group = Database :: get_course_table(TABLE_GROUP);
 		$table_forum = Database :: get_course_table(TABLE_FORUM);
 		//$forum_id = get_forums_of_group($group_id);
@@ -506,6 +509,7 @@ class GroupManager {
 					announcements_state = '".Database::escape_string($announcements_state)."',
 					forum_state = '".Database::escape_string($forum_state)."',
 					wiki_state = '".Database::escape_string($wiki_state)."',
+					chat_state = '".Database::escape_string($chat_state)."',
 					description='".Database::escape_string(trim($description))."',
 					max_student=".Database::escape_string($maximum_number_of_students).",
 					self_registration_allowed='".Database::escape_string($self_registration_allowed)."',
@@ -642,7 +646,7 @@ class GroupManager {
 	 * @param int $max_number_of_students
 	 * @param int $groups_per_user
 	 */
-	public static function create_category ($title, $description, $doc_state, $work_state, $calendar_state, $announcements_state, $forum_state, $wiki_state, $self_registration_allowed, $self_unregistration_allowed, $maximum_number_of_students, $groups_per_user) {
+	public static function create_category ($title, $description, $doc_state, $work_state, $calendar_state, $announcements_state, $forum_state, $wiki_state, $chat_state, $self_registration_allowed, $self_unregistration_allowed, $maximum_number_of_students, $groups_per_user) {
 		$table_group_category = Database :: get_course_table(TABLE_GROUP_CATEGORY);
 		$sql = "SELECT MAX(display_order)+1 as new_order FROM $table_group_category ";
 		$res = Database::query($sql,__FILE__,__LINE__);
@@ -661,6 +665,7 @@ class GroupManager {
               		announcements_state = '".Database::escape_string($announcements_state)."',
               		forum_state = '".Database::escape_string($forum_state)."',
 					wiki_state = '".Database::escape_string($wiki_state)."',
+					chat_state = '".Database::escape_string($chat_state)."',
 					groups_per_user   = '".Database::escape_string($groups_per_user)."',
 					self_reg_allowed = '".Database::escape_string($self_registration_allowed)."',
 					self_unreg_allowed = '".Database::escape_string($self_unregistration_allowed)."',
@@ -686,7 +691,7 @@ class GroupManager {
 	 * @param int $max_number_of_students
 	 * @param int $groups_per_user
 	 */
-	public static function update_category ($id, $title, $description, $doc_state, $work_state, $calendar_state, $announcements_state, $forum_state, $wiki_state, $self_registration_allowed, $self_unregistration_allowed, $maximum_number_of_students, $groups_per_user) {
+	public static function update_category ($id, $title, $description, $doc_state, $work_state, $calendar_state, $announcements_state, $forum_state, $wiki_state, $chat_state, $self_registration_allowed, $self_unregistration_allowed, $maximum_number_of_students, $groups_per_user) {
 		$table_group_category = Database :: get_course_table(TABLE_GROUP_CATEGORY);
 		$id = Database::escape_string($id);
 		$sql = "UPDATE ".$table_group_category."
@@ -698,6 +703,7 @@ class GroupManager {
             	announcements_state = '".Database::escape_string($announcements_state)."',
             	forum_state = '".Database::escape_string($forum_state)."',
 				wiki_state = '".Database::escape_string($wiki_state)."',
+				chat_state = '".Database::escape_string($chat_state)."',
 				groups_per_user   = ".Database::escape_string($groups_per_user).",
 				self_reg_allowed = '".Database::escape_string($self_registration_allowed)."',
 				self_unreg_allowed = '".Database::escape_string($self_unregistration_allowed)."',
@@ -1485,6 +1491,9 @@ class GroupManager {
 			case GROUP_TOOL_WIKI :
 				$state_key = 'wiki_state';
 				break;
+			case GROUP_TOOL_CHAT :
+				$state_key = 'chat_state';
+				break;
 			default:
 				return false;
 		}