Browse Source

In a open group users can read and comment threads + some UI improvements

Julio Montoya 14 years ago
parent
commit
b3f0779919

+ 1 - 1
main/admin/resume_session.php

@@ -99,7 +99,7 @@ if (!empty($_GET['warn'])) {
 }
 
 
-echo Display::tag('h2', $session['name']);
+echo Display::tag('h1', $session['name']);
 echo Display::tag('h3', $tool_name);
 ?>
 <!-- General properties -->

+ 2 - 3
main/inc/lib/group_portal_manager.lib.php

@@ -405,8 +405,7 @@ class GroupPortalManager
 	 * @param  url_id
 	 * @return boolean true if success
 	 * */
-	public static function add_user_to_group($user_id, $group_id, $relation_type = GROUP_USER_PERMISSION_READER)
-	{
+	public static function add_user_to_group($user_id, $group_id, $relation_type = GROUP_USER_PERMISSION_READER) {
 		$table_url_rel_group = Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
 		if (!empty($user_id) && !empty($group_id)) {
 			$role = self::get_user_group_role($user_id,$group_id);
@@ -414,7 +413,7 @@ class GroupPortalManager
 				$sql = "INSERT INTO $table_url_rel_group
            				SET user_id = ".intval($user_id).", group_id = ".intval($group_id).", relation_type = ".intval($relation_type);
 				$result = Database::query($sql);
-			} elseif($role == GROUP_USER_PERMISSION_PENDING_INVITATION) {
+			} elseif ($role == GROUP_USER_PERMISSION_PENDING_INVITATION) {
 				//if somebody already invited me I can be added
 				self::update_user_role($user_id, $group_id, GROUP_USER_PERMISSION_READER);
 			}

+ 6 - 8
main/inc/lib/message.lib.php

@@ -976,7 +976,7 @@ class MessageManager
      * Displays messages of a group with nested view
      * @param int group id
      */
-    public static function display_message_for_group($group_id, $message_id) {
+    public static function display_message_for_group($group_id, $message_id, $is_member) {
         global $my_group_role;
         
         $main_message = self::get_message_by_id($message_id);
@@ -1005,11 +1005,10 @@ class MessageManager
         $name = api_get_person_name($user_sender_info['firstname'], $user_sender_info['lastname']);
             
         $links.= '<div id="message-reply-link">';
-        $links.= '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&message_id='.$main_message['id'].'&action=reply_message_group&anchor_topic=topic_'.$main_message['id'].'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($items_page_nr).'&topic_id='.$main_message['id'].'" class="thickbox" title="'.get_lang('Reply').'">'.Display :: return_icon('talk.png', get_lang('Reply')).'</a>';
-
         if (($my_group_role == GROUP_USER_PERMISSION_ADMIN || $my_group_role == GROUP_USER_PERMISSION_MODERATOR) || $main_message['user_sender_id'] == $current_user_id) {
-            $links.= '&nbsp;&nbsp;<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$main_message['id'].'&action=edit_message_group&anchor_topic=topic_'.$main_message['id'].'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($items_page_nr).'&topic_id='.$main_message['id'].'" class="thickbox" title="'.get_lang('Edit').'">'.Display :: return_icon('edit.gif', get_lang('Edit')).'</a>';
+            $links.= '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$main_message['id'].'&action=edit_message_group&anchor_topic=topic_'.$main_message['id'].'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($items_page_nr).'&topic_id='.$main_message['id'].'" class="thickbox" title="'.get_lang('Edit').'">'.Display :: return_icon('edit.png', get_lang('Edit'), array(), 22).'</a>';
         }
+        $links.= '&nbsp;&nbsp;<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&message_id='.$main_message['id'].'&action=reply_message_group&anchor_topic=topic_'.$main_message['id'].'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($items_page_nr).'&topic_id='.$main_message['id'].'" class="thickbox" title="'.get_lang('Reply').'">'.Display :: return_icon('talk.png', get_lang('Reply')).'</a>';
         $links.= '</div>';
                                 
         $image_path = UserManager::get_user_picture_path_by_id($main_message['user_sender_id'], 'web', false, true);                                
@@ -1051,12 +1050,11 @@ class MessageManager
                 $files_attachments = self::get_links_message_attachment_files($topic['id']);
                 $name = api_get_person_name($user_sender_info['firstname'], $user_sender_info['lastname']);
                     
-                $links.= '<div id="message-reply-link">';
-                $links.= '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=reply_message_group&anchor_topic=topic_'.$topic_id.'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($items_page_nr).'&topic_id='.$topic_id.'" class="thickbox" title="'.get_lang('Reply').'">'.Display :: return_icon('talk.png', get_lang('Reply')).'</a>';
-
+                $links.= '<div id="message-reply-link">';                
                 if (($my_group_role == GROUP_USER_PERMISSION_ADMIN || $my_group_role == GROUP_USER_PERMISSION_MODERATOR) || $topic['user_sender_id'] == $current_user_id) {
-                    $links.= '&nbsp;&nbsp;<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=edit_message_group&anchor_topic=topic_'.$topic_id.'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($items_page_nr).'&topic_id='.$topic_id.'" class="thickbox" title="'.get_lang('Edit').'">'.Display :: return_icon('edit.gif', get_lang('Edit')).'</a>';
+                    $links.= '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.$current_user_id.'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=edit_message_group&anchor_topic=topic_'.$topic_id.'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($items_page_nr).'&topic_id='.$topic_id.'" class="thickbox" title="'.get_lang('Edit').'">'.Display :: return_icon('edit.png', get_lang('Edit'), array(), 22).'</a>';
                 }
+                $links.= '&nbsp;&nbsp;<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=390&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&message_id='.$topic['id'].'&action=reply_message_group&anchor_topic=topic_'.$topic_id.'&topics_page_nr='.intval($_GET['topics_page_nr']).'&items_page_nr='.intval($items_page_nr).'&topic_id='.$topic_id.'" class="thickbox" title="'.get_lang('Reply').'">'.Display :: return_icon('talk.png', get_lang('Reply')).'</a>';
                 $links.= '</div>';
                                         
                 $image_path = UserManager::get_user_picture_path_by_id($topic['user_sender_id'], 'web', false, true);                                

+ 2 - 3
main/inc/lib/social.lib.php

@@ -320,14 +320,13 @@ class SocialManager extends UserManager {
 			$count_number_is_true=0;
 			if (isset($userfriend_id) && $userfriend_id>0) {
 				$message_title = get_lang('Invitation');
-				$count_is_true = self::send_invitation_friend(api_get_user_id(),$userfriend_id, $message_title, $content_message);
+				$count_is_true = self::send_invitation_friend(api_get_user_id(), $userfriend_id, $message_title, $content_message);
 
 				if ($count_is_true) {
 					echo Display::display_normal_message(api_htmlentities(get_lang('InvitationHasBeenSent'), ENT_QUOTES,$charset),false);
-				}else {
+				} else {
 					echo Display::display_error_message(api_htmlentities(get_lang('YouAlreadySentAnInvitation'), ENT_QUOTES,$charset),false);
 				}
-
 			}
 		}
 	}

+ 9 - 5
main/social/group_topics.php

@@ -51,13 +51,14 @@ if (empty($group_id)) {
     if (empty($group_info)) {
         api_not_allowed(true);
     }
-    $user_role = GroupPortalManager::get_user_group_role(api_get_user_id(), $group_id);
-    if (!in_array($user_role, array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_MODERATOR, GROUP_USER_PERMISSION_READER))) {
-        api_not_allowed(true);      
+    $is_member = GroupPortalManager::is_group_member($group_id);
+    
+    if ($group_info['visibility'] == GROUP_PERMISSION_CLOSED && !$is_member ) {
+        api_not_allowed(true);        
     }
 }
 
-Display :: display_header($tool_name, 'Groups');
+Display::display_header($tool_name, 'Groups');
 
 // save message group
 if (isset($_POST['token']) && $_POST['token'] === $_SESSION['sec_token']) {
@@ -75,6 +76,9 @@ if (isset($_POST['token']) && $_POST['token'] === $_SESSION['sec_token']) {
             $edit_message_id =  intval($_POST['message_id']);
             $res = MessageManager::send_message(0, $title, $content, $_FILES, '', $group_id, $parent_id, $edit_message_id);
         } else {
+            if ($_POST['action'] == 'add_message_group' && !$is_member) {
+                api_not_allowed();
+            }            
             $res = MessageManager::send_message(0, $title, $content, $_FILES, '', $group_id, $parent_id);
         }
 
@@ -121,7 +125,7 @@ echo '<div id="social-content">';
         if (!empty($show_message)){
             Display::display_confirmation_message($show_message);
         }
-        $content = MessageManager::display_message_for_group($group_id, $topic_id);
+        $content = MessageManager::display_message_for_group($group_id, $topic_id, $is_member);
         echo $content;
     echo '</div>';
 echo '</div>';

+ 49 - 18
main/social/groups.php

@@ -149,6 +149,7 @@ $my_group_role = 0;
 if ($group_id != 0 ) {
 	$user_leave_message = false;
 	$user_added_group_message = false;
+	$user_invitation_sent = false;
 	$group_info = GroupPortalManager::get_group_data($group_id);
 
 	if (isset($_GET['action']) && $_GET['action']=='leave') {
@@ -169,7 +170,7 @@ if ($group_id != 0 ) {
 				$user_added_group_message = true;
 			} else {
 				GroupPortalManager::add_user_to_group($user_join, $group_id, GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER);
-				$user_added_group_message = true;
+				$user_invitation_sent = true;
 			}
 		}
 	}
@@ -207,6 +208,12 @@ if ($group_id != 0 ) {
 	if ($user_added_group_message) {
 		Display::display_confirmation_message(get_lang('UserIsSubscribedToThisGroup'), false);
 	}
+	
+    if ($user_invitation_sent) {
+        Display::display_confirmation_message(get_lang('InvitationSent'), false);
+    }
+    
+    $is_group_member = GroupPortalManager::is_group_member($group_id);    
 
 	// details about the current group
 	echo '<div class="head_group">';    
@@ -216,15 +223,26 @@ if ($group_id != 0 ) {
 				//Group's description
 				echo '<div class="social-group-details-info">'.$group_info['description'].'</div>';
 				echo '<div class="social-group-details-info"><a target="_blank" href="'.$group_info['url'].'">'.$group_info['url'].'</a></div>';
+				
 				//Privacy
-				echo '<div class="social-group-details-info">';
-					echo '<span>'.get_lang('Privacy').' : </span>';
-					if ($group_info['visibility']== GROUP_PERMISSION_OPEN) {
-						echo get_lang('ThisIsAnOpenGroup');
-					} elseif ($group_info['visibility']== GROUP_PERMISSION_CLOSED) {
-						echo get_lang('ThisIsACloseGroup');
-					}
-				echo '</div>';
+				if (!$is_group_member) {
+    				echo '<div class="social-group-details-info">';
+    					echo '<span>'.get_lang('Privacy').' : </span>';
+    					if ($group_info['visibility']== GROUP_PERMISSION_OPEN) {
+    						echo get_lang('ThisIsAnOpenGroup');
+    					} elseif ($group_info['visibility']== GROUP_PERMISSION_CLOSED) {
+    						echo get_lang('ThisIsACloseGroup');
+    					}
+    				echo '</div>';
+				}
+				
+				if (!$is_group_member && $group_info['visibility'] == GROUP_PERMISSION_CLOSED) {
+				    $role = GroupPortalManager::get_user_group_role(api_get_user_id(), $group_id);				    
+				    if ($role == GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER) {
+				        echo Display::display_normal_message(get_lang('YouAlreadySentAnInvitation'));
+				    }
+				}
+				 
 				if (!empty($relation_group_title)) {
 				    /*
 					echo '<div class="social-group-details-info">';
@@ -241,23 +259,36 @@ if ($group_id != 0 ) {
 	echo '<div class="clear"></div>';
 
 	//-- Show message groups
-	echo '<div class="messages" style="width:700px">';
-		if (GroupPortalManager::is_group_member($group_id)) {
+	echo '<div class="messages" style="width:700px">';	    
+	     
+		if ($is_group_member || $group_info['visibility'] == GROUP_PERMISSION_OPEN) {
+		    if (!$is_group_member) {		        
+    		    if (!in_array($my_group_role, array(GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER, GROUP_USER_PERMISSION_PENDING_INVITATION))) {
+                    echo '<a href="groups.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.Display::return_icon('group_join.png', get_lang('YouShouldJoinTheGroup'), array('hspace'=>'6')).'<span class="social-menu-text4" >'.get_lang('YouShouldJoinTheGroup').'</a></span>';
+                } elseif ($my_group_role == GROUP_USER_PERMISSION_PENDING_INVITATION) {
+                    echo '<a href="groups.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.Display::return_icon('group_join.png', get_lang('YouHaveBeenInvitedJoinNow'), array('hspace'=>'6')).'<span class="social-menu-text4" >'.get_lang('YouHaveBeenInvitedJoinNow').'</span></a>';
+                }
+                echo '<br /><br />';
+		    }            
 			
 			$content = MessageManager::display_messages_for_group($group_id);
-			if (empty($content)) {			
-				$content =  '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=400&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&action=add_message_group" class="thickbox" title="'.get_lang('ComposeMessage').'">'.Display::return_icon('compose_message.png', get_lang('NewTopic'), array('hspace'=>'6')).get_lang('YouShouldCreateATopic').'</a></li>';
-			} else {
-			    $create_thread_link = '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=400&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&action=add_message_group" class="thickbox" title="'.get_lang('ComposeMessage').'">'.Display::return_icon('compose_message.png', get_lang('NewTopic'), array('hspace'=>'6')).get_lang('NewTopic').'</a>';
-			    $content = $create_thread_link.$content; 			    
-			}			
+			if ($is_group_member) {
+    			if (empty($content)) {		
+    				$content =  '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=400&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&action=add_message_group" class="thickbox" title="'.get_lang('ComposeMessage').'">'.Display::return_icon('compose_message.png', get_lang('NewTopic'), array('hspace'=>'6')).get_lang('YouShouldCreateATopic').'</a></li>';
+    			} else {
+    			    $create_thread_link = '<a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=400&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&action=add_message_group" class="thickbox" title="'.get_lang('ComposeMessage').'">'.Display::return_icon('compose_message.png', get_lang('NewTopic'), array('hspace'=>'6')).get_lang('NewTopic').'</a>';
+    			    $content = $create_thread_link.$content; 			    
+    			}			
+			}
 			$members		= GroupPortalManager::get_users_by_group($group_id);
             $member_content = '';
     		//Members
     		if (count($members) > 0) {
 				$min_count_members = 4;
 				$i = 1;
-				$member_content .= Display::url(Display::return_icon('edit.gif', get_lang('EditMembersList')).' '.get_lang('EditMembersList'), 'group_members.php?id='.$group_id);
+				if ($my_group_role == GROUP_USER_PERMISSION_ADMIN) {
+				    $member_content .= Display::url(Display::return_icon('edit.gif', get_lang('EditMembersList')).' '.get_lang('EditMembersList'), 'group_members.php?id='.$group_id);
+				}
 				
 				foreach($members as $member) {				    
 					if ($i > $min_count_members) break;

+ 11 - 4
main/social/message_for_group_form.inc.php

@@ -17,20 +17,21 @@ require_once api_get_path(LIBRARY_PATH).'fckeditor/fckeditor.php';
 
 $tok = Security::get_token();
 
-if ( isset($_REQUEST['user_friend']) ) {
+if (isset($_REQUEST['user_friend'])) {
 	$info_user_friend=array();
 	$info_path_friend=array();
  	$userfriend_id=Security::remove_XSS($_REQUEST['user_friend']);
  	// panel=1  send message
  	// panel=2  send invitation
  	$panel=Security::remove_XSS($_REQUEST['view_panel']);
- 	$info_user_friend=api_get_user_info($userfriend_id);
- 	$info_path_friend=UserManager::get_user_picture_path_by_id($userfriend_id,'web',false,true);
+ 	$info_user_friend = api_get_user_info($userfriend_id);
+ 	$info_path_friend = UserManager::get_user_picture_path_by_id($userfriend_id,'web',false,true);
 }
 
 $group_id = intval($_GET['group_id']);
+
 $message_id = intval($_GET['message_id']);
-$actions = array('add_message_group','edit_message_group','reply_message_group');
+$actions = array('add_message_group', 'edit_message_group', 'reply_message_group');
 
 $allowed_action = (isset($_GET['action']) && in_array($_GET['action'],$actions))?Security::remove_XSS($_GET['action']):'';
 
@@ -39,6 +40,12 @@ $subject = '';
 $message = '';
 if (!empty($group_id) && $allowed_action) {
 	$group_info = GroupPortalManager::get_group_data($group_id);
+	$is_member = GroupPortalManager::is_group_member($group_id);
+	
+    if ($group_info['visibility'] == GROUP_PERMISSION_CLOSED && !$is_member) {
+        api_not_allowed(true);        
+    }
+
 	$to_group   = $group_info['name'];
 	if (!empty($message_id)) {
 		$message_info = MessageManager::get_message_by_id($message_id);