Groups changes see BT#7156

Adding event_system (important activities) in group class add/delete/user_subscribe/user_unsubscribe,
adding 'allow_members_leave_group' option, require DB change
if the column does not exists the option returns 1 (users can leave groups default behaviour).
1.9.x
Julio Montoya 11 years ago
parent 6a2ddbc2c2
commit a0901d0708
  1. 44
      main/admin/statistics/statistics.lib.php
  2. 38
      main/inc/lib/events.lib.inc.php
  3. 215
      main/inc/lib/group_portal_manager.lib.php
  4. 22
      main/inc/lib/main_api.lib.php
  5. 42
      main/inc/lib/social.lib.php
  6. 31
      main/social/group_add.php
  7. 56
      main/social/group_edit.php
  8. 551
      main/social/groups.php

@ -164,6 +164,11 @@ class Statistics
/**
* Get activities data to display
* @param int $from
* @param int $number_of_items
* @param int $column
* @param string $direction
* @return array
*/
static function get_activities_data($from, $number_of_items, $column, $direction)
{
@ -189,8 +194,10 @@ class Statistics
"user.username as col3, ".
"user.user_id as col4, ".
"default_date as col5 ".
"FROM $track_e_default as track_default, $table_user as user, $access_url_rel_user_table as url ".
"WHERE track_default.default_user_id = user.user_id AND url.user_id=user.user_id AND access_url_id='".$current_url_id."'";
"FROM $track_e_default as track_default, $table_user as user, $access_url_rel_user_table as url
WHERE track_default.default_user_id = user.user_id AND
url.user_id = user.user_id AND
access_url_id='".$current_url_id."'";
} else {
$sql = "SELECT ".
"default_event_type as col0, ".
@ -205,7 +212,10 @@ class Statistics
if (isset($_GET['keyword'])) {
$keyword = Database::escape_string(trim($_GET['keyword']));
$sql .= " AND (user.username LIKE '%".$keyword."%' OR default_event_type LIKE '%".$keyword."%' OR default_value_type LIKE '%".$keyword."%' OR default_value LIKE '%".$keyword."%') ";
$sql .= " AND (user.username LIKE '%".$keyword."%' OR
default_event_type LIKE '%".$keyword."%' OR
default_value_type LIKE '%".$keyword."%' OR
default_value LIKE '%".$keyword."%') ";
}
if (!empty($column) && !empty($direction)) {
@ -213,12 +223,13 @@ class Statistics
} else {
$sql .= " ORDER BY col5 DESC ";
}
$sql .= " LIMIT $from,$number_of_items ";
$sql .= " LIMIT $from,$number_of_items ";
$res = Database::query($sql);
$activities = array ();
while ($row = Database::fetch_row($res)) {
if (strpos($row[1], '_object') === false) {
if (strpos($row[1], '_object') === false && strpos($row[1], '_array') === false) {
$row[2] = $row[2];
} else {
if (!empty($row[2])) {
@ -228,15 +239,20 @@ class Statistics
}
}
}
if (!empty($row['default_date']) && $row['default_date'] != '0000-00-00 00:00:00') {
$row['default_date'] = api_get_local_time($row['default_date']);
} else {
$row['default_date'] = '-';
}
if (!empty($row[4])) { //user ID
$row[3] = Display::url($row[3],api_get_path(WEB_CODE_PATH).'admin/user_information?user_id='.$row[4], array('title' => get_lang('UserInfo')));
$row[4] = TrackingUserLog::get_ip_from_user_event($row[4],$row[5],true);
if (!empty($row['default_date']) && $row['default_date'] != '0000-00-00 00:00:00') {
$row['default_date'] = api_get_local_time($row['default_date']);
} else {
$row['default_date'] = '-';
}
if (!empty($row[4])) {
// User id.
$row[3] = Display::url(
$row[3],
api_get_path(WEB_CODE_PATH).'admin/user_information?user_id='.$row[4], array('title' => get_lang('UserInfo'))
);
$row[4] = TrackingUserLog::get_ip_from_user_event($row[4], $row[5], true);
if (empty($row[4])) {
$row[4] = get_lang('Unknown');
}

@ -71,26 +71,35 @@ function event_open()
function event_login()
{
global $TABLETRACK_LOGIN;
global $_user;
// @todo use api_get_user_info();
//$userInfo = api_get_user_info();
$userInfo = $_user;
if (empty($userInfo)) {
return false;
}
$userId = api_get_user_id();
$reallyNow = api_get_utc_datetime();
$sql = "INSERT INTO ".$TABLETRACK_LOGIN." (login_user_id, login_ip, login_date, logout_date) VALUES
('".api_get_user_id()."',
'".Database::escape_string(api_get_real_ip())."',
'".$reallyNow."',
'".$reallyNow."'
)";
('".$userId."',
'".Database::escape_string(api_get_real_ip())."',
'".$reallyNow."',
'".$reallyNow."'
)";
Database::query($sql);
// auto subscribe
$user_status = $_user['status'];
$user_status = $_user['status'] == SESSIONADMIN ? 'sessionadmin' :
$_user['status'] == COURSEMANAGER ? 'teacher' :
$_user['status'] == DRH ? 'DRH' : 'student';
// Auto subscribe
$user_status = $userInfo['status'] == SESSIONADMIN ? 'sessionadmin' :
$userInfo['status'] == COURSEMANAGER ? 'teacher' :
$userInfo['status'] == DRH ? 'DRH' : 'student';
$autoSubscribe = api_get_setting($user_status.'_autosubscribe');
if ($autoSubscribe) {
$autoSubscribe = explode('|', $autoSubscribe);
foreach ($autoSubscribe as $code) {
if (CourseManager::course_exists($code)) {
CourseManager::subscribe_user($_user['user_id'], $code);
CourseManager::subscribe_user($userId, $code);
}
}
}
@ -544,7 +553,7 @@ function event_system($event_type, $event_value_type, $event_value, $datetime =
$event_type = Database::escape_string($event_type);
$event_value_type = Database::escape_string($event_value_type);
//Clean the user_info
// Clean the user_info.
if ($event_value_type == LOG_USER_OBJECT) {
if (is_array($event_value)) {
unset($event_value['complete_name']);
@ -555,10 +564,13 @@ function event_system($event_type, $event_value_type, $event_value, $datetime =
unset($event_value['password']);
unset($event_value['lastLogin']);
unset($event_value['picture_uri']);
$event_value = serialize($event_value);
}
}
if (is_array($event_value)) {
$event_value = serialize($event_value);
}
$event_value = Database::escape_string($event_value);
$course_info = api_get_course_info($course_code);

@ -61,31 +61,42 @@ class GroupPortalManager
created_on = '".$now."',
updated_on = '".$now."'";
Database::query($sql);
$return = Database::insert_id();
return $return;
$id = Database::insert_id();
if ($id) {
event_system(LOG_GROUP_PORTAL_CREATED, LOG_GROUP_PORTAL_ID, $id);
return $id;
}
return false;
}
/**
* Updates a group
* @author Julio Montoya <gugli100@gmail.com>,
*
* @param int The id
* @param string The description of the site
* @param int is active or not
* @param int the user_id of the owner
* @return boolean if success
* @param int The id
* @param string The description of the site
* @param int is active or not
* @param int the user_id of the owner
* @param bool $allowMemberGroupToLeave
* @return bool if success
*/
public static function update($group_id, $name, $description, $url, $visibility, $picture_uri)
public static function update($group_id, $name, $description, $url, $visibility, $picture_uri, $allowMemberGroupToLeave = null)
{
$group_id = intval($group_id);
$table = Database::get_main_table(TABLE_MAIN_GROUP);
$now = api_get_utc_datetime();
$groupLeaveCondition = null;
if (isset($allowMemberGroupToLeave)) {
$allowMemberGroupToLeave = $allowMemberGroupToLeave == true ? 1 : 0;
$groupLeaveCondition = " allow_members_leave_group = $allowMemberGroupToLeave , ";
}
$sql = "UPDATE $table
SET name = '".Database::escape_string($name)."',
description = '".Database::escape_string($description)."',
picture_uri = '".Database::escape_string($picture_uri)."',
url = '".Database::escape_string($url)."',
visibility = '".Database::escape_string($visibility)."',
$groupLeaveCondition
updated_on = '".$now."'
WHERE id = '$group_id'";
$result = Database::query($sql);
@ -108,6 +119,7 @@ class GroupPortalManager
self::delete_users($id);
// Delete group image
self::delete_group_picture($id);
event_system(LOG_GROUP_PORTAL_DELETED, LOG_GROUP_PORTAL_ID, $id);
return $result;
}
@ -123,7 +135,7 @@ class GroupPortalManager
{
$table = Database :: get_main_table(TABLE_MAIN_GROUP);
$visibility = intval($visibility);
$sql = "SELECT name, description, picture_uri FROM $table WHERE visibility = $visibility ";
$sql = "SELECT * FROM $table WHERE visibility = $visibility ";
$res = Database::query($sql);
$data = array();
while ($item = Database::fetch_array($res)) {
@ -162,7 +174,7 @@ class GroupPortalManager
{
$table = Database :: get_main_table(TABLE_MAIN_GROUP);
$group_id = intval($group_id);
$sql = "SELECT id, name, description, picture_uri, url, visibility FROM $table WHERE id = $group_id ";
$sql = "SELECT * FROM $table WHERE id = $group_id ";
$res = Database::query($sql);
$item = array();
if (Database::num_rows($res) > 0) {
@ -174,10 +186,10 @@ class GroupPortalManager
/**
* Set a parent group
* @param int $group_id
* @param int $parent_group_id, if 0, we delete the parent_group association
* @param int $parent_group_id if 0, we delete the parent_group association
* @param int $relation_type
* @return bool
* */
* @return resource
**/
public static function set_parent_group($group_id, $parent_group_id, $relation_type = 1)
{
$table = Database :: get_main_table(TABLE_MAIN_GROUP_REL_GROUP);
@ -189,14 +201,14 @@ class GroupPortalManager
$sql = "SELECT group_id FROM $table WHERE subgroup_id = $group_id";
$res = Database::query($sql);
if (Database::num_rows($res) == 0) {
$sql = "INSERT INTO $table SET group_id = $parent_group_id, subgroup_id = $group_id, relation_type = $relation_type";
$sql = "INSERT INTO $table SET group_id = $parent_group_id, subgroup_id = $group_id, relation_type = $relation_type";
} else {
$sql = "UPDATE $table SET group_id = $parent_group_id, relation_type = $relation_type
WHERE subgroup_id = $group_id";
}
}
$res = Database::query($sql);
return($res);
return $res;
}
/**
@ -587,6 +599,7 @@ class GroupPortalManager
**/
public static function add_user_to_group($user_id, $group_id, $relation_type = GROUP_USER_PERMISSION_READER)
{
$result = false;
$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);
@ -594,8 +607,14 @@ 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);
event_system(
LOG_GROUP_PORTAL_USER_SUBSCRIBED,
LOG_GROUP_PORTAL_REL_USER_ARRAY,
array('user_id' => $user_id, 'group_id' => $group_id, 'relation_type' => $relation_type)
);
} elseif ($role == GROUP_USER_PERMISSION_PENDING_INVITATION) {
//if somebody already invited me I can be added
// If somebody already invited me I can be added
self::update_user_role($user_id, $group_id, GROUP_USER_PERMISSION_READER);
}
}
@ -610,25 +629,17 @@ class GroupPortalManager
**/
public static function add_users_to_groups($user_list, $group_list, $relation_type = GROUP_USER_PERMISSION_READER)
{
$table_url_rel_group = Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
$result_array = array();
$relation_type = intval($relation_type);
if (is_array($user_list) && is_array($group_list)) {
foreach ($group_list as $group_id) {
foreach ($user_list as $user_id) {
$role = self::get_user_group_role($user_id, $group_id);
if ($role == 0) {
$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);
if ($result)
$result_array[$group_id][$user_id] = 1;
else
$result_array[$group_id][$user_id] = 0;
$result = self::add_user_to_group($user_id, $group_id, $relation_type);
if ($result) {
$result_array[$group_id][$user_id] = 1;
} else {
$result_array[$group_id][$user_id] = 0;
}
}
}
@ -637,13 +648,13 @@ class GroupPortalManager
}
/**
* Deletes a group and user relationship
* Deletes a group and user relationship
* @author Julio Montoya
* @param int user id
* @param int relation type (optional)
* @return boolean true if success
* */
public static function delete_users($group_id, $relation_type = '')
public static function delete_users($group_id, $relation_type = null)
{
$table_ = Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
$condition_relation = "";
@ -653,6 +664,13 @@ class GroupPortalManager
}
$sql = "DELETE FROM $table_ WHERE group_id = ".intval($group_id).$condition_relation;
$result = Database::query($sql);
event_system(
LOG_GROUP_PORTAL_USER_DELETE_ALL,
LOG_GROUP_PORTAL_REL_USER_ARRAY,
array('group_id' => $group_id, 'relation_type' => $relation_type)
);
return $result;
}
@ -668,25 +686,48 @@ class GroupPortalManager
$table = Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
$sql = "DELETE FROM $table WHERE user_id = ".intval($user_id)." AND group_id=".intval($group_id);
$result = Database::query($sql);
event_system(
LOG_GROUP_PORTAL_USER_UNSUBSCRIBED,
LOG_GROUP_PORTAL_REL_USER_ARRAY,
array('user_id' => $user_id, 'group_id' => $group_id)
);
return $result;
}
/**
* Updates the group_rel_user table with a given user and group ids
* @author Julio Montoya
* @param int user id
* @param int group id
* @param int relation type
* */
* @param int $user_id
* @param int $group_id
* @param int $relation_type
* @return bool
**/
public static function update_user_role($user_id, $group_id, $relation_type = GROUP_USER_PERMISSION_READER)
{
$table_group_rel_user = Database :: get_main_table(TABLE_MAIN_USER_REL_GROUP);
$table_group_rel_user = Database::get_main_table(TABLE_MAIN_USER_REL_GROUP);
if (empty($user_id) || empty($group_id) || empty($relation_type)) {
return false;
}
$group_id = intval($group_id);
$user_id = intval($user_id);
$sql = "UPDATE $table_group_rel_user
SET relation_type = ".intval($relation_type)." WHERE user_id = $user_id AND group_id = $group_id";
SET relation_type = ".intval($relation_type)."
WHERE
user_id = $user_id AND
group_id = $group_id
";
Database::query($sql);
event_system(
LOG_GROUP_PORTAL_USER_UPDATE_ROLE,
LOG_GROUP_PORTAL_REL_USER_ARRAY,
array('user_id' => $user_id, 'group_id' => $group_id, 'relation_type' => $relation_type)
);
return true;
}
/**
@ -772,8 +813,7 @@ class GroupPortalManager
*/
public static function update_group_picture($group_id, $file = null, $source_file = null)
{
// Validation 1.
// Validation.
if (empty($group_id)) {
return false;
}
@ -872,7 +912,6 @@ class GroupPortalManager
*/
public static function get_group_picture_path_by_id($id, $type = 'none', $preview = false, $anonymous = false)
{
switch ($type) {
case 'system': // Base: absolute system path.
$base = api_get_path(SYS_CODE_PATH);
@ -966,16 +1005,16 @@ class GroupPortalManager
}
switch ($size_picture) {
case GROUP_IMAGE_SIZE_ORIGINAL :
case GROUP_IMAGE_SIZE_ORIGINAL:
$size_picture = '';
break;
case GROUP_IMAGE_SIZE_BIG :
case GROUP_IMAGE_SIZE_BIG:
$size_picture = 'big_';
break;
case GROUP_IMAGE_SIZE_MEDIUM :
case GROUP_IMAGE_SIZE_MEDIUM:
$size_picture = 'medium_';
break;
case GROUP_IMAGE_SIZE_SMALL :
case GROUP_IMAGE_SIZE_SMALL:
$size_picture = 'small_';
break;
default:
@ -995,7 +1034,6 @@ class GroupPortalManager
$picture['style'] = ' style="padding-top:'.$margin.'px; width:'.$dimension['width'].'px; height:'.$dimension['height'].';" ';
}
} else {
//$file = api_get_path(SYS_CODE_PATH).$patch_profile.$user_id.'/'.$picture_file;
$file = $image_array_sys['dir'].$picture_file;
if (file_exists($file) && !is_dir($file)) {
$picture['file'] = $image_array['dir'].$picture_file;
@ -1108,14 +1146,18 @@ class GroupPortalManager
// I'm just a reader
$relation_group_title = get_lang('IAmAReader');
$links .= '<li><a href="group_invitation.php?id='.$group_id.'">'.Display::return_icon('invitation_friend.png', get_lang('InviteFriends'), array('hspace' => '6')).'<span class="'.($show == 'invite_friends' ? 'social-menu-text-active' : 'social-menu-text4').'" >'.get_lang('InviteFriends').'</span></a></li>';
$links .= '<li><a href="groups.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace' => '6')).'<span class="social-menu-text4" >'.get_lang('LeaveGroup').'</span></a></li>';
if (GroupPortalManager::canLeave($group_info)) {
$links .= '<li><a href="groups.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace' => '6')).'<span class="social-menu-text4" >'.get_lang('LeaveGroup').'</span></a></li>';
}
break;
case GROUP_USER_PERMISSION_ADMIN:
$relation_group_title = get_lang('IAmAnAdmin');
$links .= '<li><a href="group_edit.php?id='.$group_id.'">'.Display::return_icon('group_edit.png', get_lang('EditGroup'), array('hspace' => '6')).'<span class="'.($show == 'group_edit' ? 'social-menu-text-active' : 'social-menu-text4').'" >'.get_lang('EditGroup').'</span></a></li>';
$links .= '<li><a href="group_waiting_list.php?id='.$group_id.'">'.Display::return_icon('waiting_list.png', get_lang('WaitingList'), array('hspace' => '6')).'<span class="'.($show == 'waiting_list' ? 'social-menu-text-active' : 'social-menu-text4').'" >'.get_lang('WaitingList').'</span></a></li>';
$links .= '<li><a href="group_invitation.php?id='.$group_id.'">'.Display::return_icon('invitation_friend.png', get_lang('InviteFriends'), array('hspace' => '6')).'<span class="'.($show == 'invite_friends' ? 'social-menu-text-active' : 'social-menu-text4').'" >'.get_lang('InviteFriends').'</span></a></li>';
$links .= '<li><a href="groups.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace' => '6')).'<span class="social-menu-text4" >'.get_lang('LeaveGroup').'</span></a></li>';
if (GroupPortalManager::canLeave($group_info)) {
$links .= '<li><a href="groups.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace' => '6')).'<span class="social-menu-text4" >'.get_lang('LeaveGroup').'</span></a></li>';
}
break;
case GROUP_USER_PERMISSION_PENDING_INVITATION:
// $links .= '<li><a href="groups.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.Display::return_icon('addd.gif', get_lang('YouHaveBeenInvitedJoinNow'), array('hspace'=>'6')).'<span class="social-menu-text4" >'.get_lang('YouHaveBeenInvitedJoinNow').'</span></a></li>';
@ -1132,7 +1174,9 @@ class GroupPortalManager
$links .= '<li><a href="group_waiting_list.php?id='.$group_id.'">'.Display::return_icon('waiting_list.png', get_lang('WaitingList'), array('hspace' => '6')).'<span class="'.($show == 'waiting_list' ? 'social-menu-text-active' : 'social-menu-text4').'" >'.get_lang('WaitingList').'</span></a></li>';
}
$links .= '<li><a href="group_invitation.php?id='.$group_id.'">'.Display::return_icon('invitation_friend.png', get_lang('InviteFriends'), array('hspace' => '6')).'<span class="'.($show == 'invite_friends' ? 'social-menu-text-active' : 'social-menu-text4').'" >'.get_lang('InviteFriends').'</span></a></li>';
$links .= '<li><a href="groups.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace' => '6')).'<span class="social-menu-text4" >'.get_lang('LeaveGroup').'</span></a></li>';
if (GroupPortalManager::canLeave($group_info)) {
$links .= '<li><a href="groups.php?id='.$group_id.'&action=leave&u='.api_get_user_id().'">'.Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace' => '6')).'<span class="social-menu-text4" >'.get_lang('LeaveGroup').'</span></a></li>';
}
break;
case GROUP_USER_PERMISSION_HRM:
$relation_group_title = get_lang('IAmAHRM');
@ -1202,4 +1246,79 @@ class GroupPortalManager
}
return 0;
}
/**
* @param FormValidator $form
* @param array
*/
public static function setGroupForm($form, $groupData = array())
{
// Name
$form->addElement('text', 'name', get_lang('Name'), array('class'=>'span5', 'maxlength'=>120));
$form->applyFilter('name', 'html_filter');
$form->applyFilter('name', 'trim');
$form->addRule('name', get_lang('ThisFieldIsRequired'), 'required');
// Description
$form->addElement('textarea', 'description', get_lang('Description'), array('class'=>'span5', 'cols'=>58, 'onKeyDown' => "textarea_maxlength()", 'onKeyUp' => "textarea_maxlength()"));
$form->applyFilter('description', 'html_filter');
$form->applyFilter('description', 'trim');
$form->addRule('name', '', 'maxlength',255);
// Url
$form->addElement('text', 'url', get_lang('URL'), array('class'=>'span5'));
$form->applyFilter('url', 'html_filter');
$form->applyFilter('url', 'trim');
// Picture
$form->addElement('file', 'picture', get_lang('AddPicture'));
$allowed_picture_types = array ('jpg', 'jpeg', 'png', 'gif');
$form->addRule('picture', get_lang('OnlyImagesAllowed').' ('.implode(',', $allowed_picture_types).')', 'filetype', $allowed_picture_types);
if (!empty($groupData)) {
if (isset($groupData['picture_uri']) && strlen($groupData['picture_uri']) > 0) {
$form->addElement('checkbox', 'delete_picture', '', get_lang('DelImage'));
}
}
// Status
$status = array();
$status[GROUP_PERMISSION_OPEN] = get_lang('Open');
$status[GROUP_PERMISSION_CLOSED] = get_lang('Closed');
$form->addElement('select', 'visibility', get_lang('GroupPermissions'), $status, array());
if (!empty($groupData)) {
if (self::canLeaveFeatureEnabled($groupData)) {
$form->addElement('checkbox', 'allow_members_leave_group', '', get_lang('AllowMemberLeaveGroup'));
}
// Set default values
$form->setDefaults($groupData);
}
return $form;
}
/**
* Check if the can leave feature exists.
* @param array $groupData
* @return bool
*/
public static function canLeaveFeatureEnabled($groupData)
{
if (isset($groupData['allow_members_leave_group'])) {
return true;
}
return false;
}
/**
* @param array $groupData
* @return bool
*/
public static function canLeave($groupData)
{
if (self::canLeaveFeatureEnabled($groupData)) {
return $groupData['allow_members_leave_group'] == 1 ? true : false;
}
return true;
}
}

@ -154,12 +154,26 @@ define('DIR_HOTPOTATOES','/HotPotatoes_files');
// event logs types
define('LOG_COURSE_DELETE', 'course_deleted');
define('LOG_COURSE_CREATE', 'course_created');
// @todo replace 'soc_gr' with social_group
define('LOG_GROUP_PORTAL_CREATED', 'soc_gr_created');
define('LOG_GROUP_PORTAL_UPDATED', 'soc_gr_updated');
define('LOG_GROUP_PORTAL_DELETED', 'soc_gr_deleted');
define('LOG_GROUP_PORTAL_USER_DELETE_ALL', 'soc_gr_delete_users');
define('LOG_GROUP_PORTAL_ID', 'soc_gr_portal_id');
define('LOG_GROUP_PORTAL_REL_USER_ARRAY', 'soc_gr_user_array');
define('LOG_GROUP_PORTAL_USER_SUBSCRIBED', 'soc_gr_u_subs');
define('LOG_GROUP_PORTAL_USER_UNSUBSCRIBED', 'soc_gr_u_unsubs');
define('LOG_GROUP_PORTAL_USER_UPDATE_ROLE', 'soc_gr_update_role');
define('LOG_USER_DELETE', 'user_deleted');
define('LOG_USER_CREATE', 'user_created');
define('LOG_USER_ENABLE', 'user_enable');
define('LOG_USER_DISABLE', 'user_disable');
define('LOG_USER_FIELD_CREATE', 'user_field_created');
define('LOG_USER_FIELD_DELETE', 'user_field_deleted');
define('LOG_USER_FIELD_CREATE', 'user_field_created');
define('LOG_USER_FIELD_DELETE', 'user_field_deleted');
define('LOG_SESSION_CREATE', 'session_created');
define('LOG_SESSION_DELETE', 'session_deleted');
define('LOG_SESSION_CATEGORY_CREATE', 'session_category_created');
@ -184,7 +198,7 @@ define('LOG_WIKI_ACCESS', 'wiki_page_view');
define('LOG_COURSE_CODE', 'course_code');
define('LOG_USER_ID', 'user_id');
define('LOG_USER_OBJECT', 'user_object');
define('LOG_USER_FIELD_VARIABLE', 'user_field_variable');
define('LOG_USER_FIELD_VARIABLE', 'user_field_variable');
define('LOG_SESSION_ID', 'session_id');
define('LOG_SESSION_CATEGORY_ID', 'session_category_id');
define('LOG_CONFIGURATION_SETTINGS_CATEGORY', 'settings_category');
@ -1064,7 +1078,7 @@ function _api_format_user($user, $add_password = false) {
$firstname = $user['firstName'];
$lastname = $user['lastName'];
}
$result['phone']= $user['phone'];
$result['phone'] = $user['phone'];
$result['complete_name'] = api_get_person_name($firstname, $lastname);

@ -40,7 +40,6 @@ class SocialManager extends UserManager
public static function show_list_type_friends()
{
$friend_relation_list = array();
$count_list = 0;
$tbl_my_friend_relation_type = Database :: get_main_table(TABLE_MAIN_USER_FRIEND_RELATION_TYPE);
$sql = 'SELECT id,title FROM '.$tbl_my_friend_relation_type.' WHERE id<>6 ORDER BY id ASC';
$result = Database::query($sql);
@ -82,8 +81,15 @@ class SocialManager extends UserManager
{
$tbl_my_friend_relation_type = Database :: get_main_table(TABLE_MAIN_USER_FRIEND_RELATION_TYPE);
$tbl_my_friend = Database :: get_main_table(TABLE_MAIN_USER_REL_USER);
$sql = 'SELECT rt.id as id FROM '.$tbl_my_friend_relation_type.' rt '.
'WHERE rt.id=(SELECT uf.relation_type FROM '.$tbl_my_friend.' uf WHERE user_id='.((int) $user_id).' AND friend_user_id='.((int) $user_friend).' AND uf.relation_type <> '.USER_RELATION_TYPE_RRHH.' )';
$sql = 'SELECT rt.id as id FROM '.$tbl_my_friend_relation_type.' rt
WHERE rt.id = (
SELECT uf.relation_type FROM '.$tbl_my_friend.' uf
WHERE
user_id='.((int) $user_id).' AND
friend_user_id='.((int) $user_friend).' AND
uf.relation_type <> '.USER_RELATION_TYPE_RRHH.'
LIMIT 1
)';
$res = Database::query($sql);
if (Database::num_rows($res) > 0) {
$row = Database::fetch_array($res, 'ASSOC');
@ -249,7 +255,9 @@ class SocialManager extends UserManager
{
$list_friend_invitation = array();
$tbl_message = Database::get_main_table(TABLE_MAIN_MESSAGE);
$sql = 'SELECT user_sender_id,send_date,title,content FROM '.$tbl_message.' WHERE user_receiver_id='.intval($user_id).' AND msg_status = '.MESSAGE_STATUS_INVITATION_PENDING;
$sql = 'SELECT user_sender_id,send_date,title,content
FROM '.$tbl_message.'
WHERE user_receiver_id='.intval($user_id).' AND msg_status = '.MESSAGE_STATUS_INVITATION_PENDING;
$res = Database::query($sql);
while ($row = Database::fetch_array($res, 'ASSOC')) {
$list_friend_invitation[] = $row;
@ -267,7 +275,9 @@ class SocialManager extends UserManager
{
$list_friend_invitation = array();
$tbl_message = Database::get_main_table(TABLE_MAIN_MESSAGE);
$sql = 'SELECT user_receiver_id, send_date,title,content FROM '.$tbl_message.' WHERE user_sender_id = '.intval($user_id).' AND msg_status = '.MESSAGE_STATUS_INVITATION_PENDING;
$sql = 'SELECT user_receiver_id, send_date,title,content
FROM '.$tbl_message.'
WHERE user_sender_id = '.intval($user_id).' AND msg_status = '.MESSAGE_STATUS_INVITATION_PENDING;
$res = Database::query($sql);
while ($row = Database::fetch_array($res, 'ASSOC')) {
$list_friend_invitation[$row['user_receiver_id']] = $row;
@ -277,15 +287,20 @@ class SocialManager extends UserManager
/**
* Accepts invitation
* @param int user sender id
* @param int user receiver id
* @param int $user_send_id
* @param int $user_receiver_id
* @author isaac flores paz
* @author Julio Montoya <gugli100@gmail.com> Cleaning code
*/
public static function invitation_accepted($user_send_id, $user_receiver_id)
{
$tbl_message = Database::get_main_table(TABLE_MAIN_MESSAGE);
$sql = 'UPDATE '.$tbl_message.' SET msg_status='.MESSAGE_STATUS_INVITATION_ACCEPTED.' WHERE user_sender_id='.((int) $user_send_id).' AND user_receiver_id='.((int) $user_receiver_id).';';
$sql = "UPDATE $tbl_message
SET msg_status = ".MESSAGE_STATUS_INVITATION_ACCEPTED."
WHERE
user_sender_id = ".((int) $user_send_id)." AND
user_receiver_id=".((int) $user_receiver_id)." AND
msg_status = ".MESSAGE_STATUS_INVITATION_PENDING;
Database::query($sql);
}
@ -299,9 +314,11 @@ class SocialManager extends UserManager
public static function invitation_denied($user_send_id, $user_receiver_id)
{
$tbl_message = Database::get_main_table(TABLE_MAIN_MESSAGE);
//$msg_status=7;
//$sql='UPDATE '.$tbl_message.' SET msg_status='.$msg_status.' WHERE user_sender_id='.((int)$user_send_id).' AND user_receiver_id='.((int)$user_receiver_id).';';
$sql = 'DELETE FROM '.$tbl_message.' WHERE user_sender_id='.((int) $user_send_id).' AND user_receiver_id='.((int) $user_receiver_id).';';
$sql = 'DELETE FROM '.$tbl_message.'
WHERE
user_sender_id = '.((int) $user_send_id).' AND
user_receiver_id='.((int) $user_receiver_id).' AND
msg_status = '.MESSAGE_STATUS_INVITATION_PENDING;
Database::query($sql);
}
@ -316,7 +333,8 @@ class SocialManager extends UserManager
{
$tbl_user_friend = Database::get_main_table(TABLE_MAIN_USER_REL_USER);
$user_id = api_get_user_id();
$sql = 'UPDATE '.$tbl_user_friend.' SET relation_type='.((int) $type_qualify).' WHERE user_id='.((int) $user_id).' AND friend_user_id='.((int) $id_friend_qualify).';';
$sql = 'UPDATE '.$tbl_user_friend.' SET relation_type='.((int) $type_qualify).'
WHERE user_id = '.((int) $user_id).' AND friend_user_id='.(int) $id_friend_qualify;
Database::query($sql);
}

@ -36,34 +36,7 @@ function text_longitud(){
$table_message = Database::get_main_table(TABLE_MESSAGE);
$form = new FormValidator('add_group');
// name
$form->addElement('text', 'name', get_lang('Name'), array('class'=>'span5', 'maxlength'=>120));
$form->applyFilter('name', 'html_filter');
$form->applyFilter('name', 'trim');
$form->addRule('name', get_lang('ThisFieldIsRequired'), 'required');
// Description
$form->addElement('textarea', 'description', get_lang('Description'), array('class'=>'span5', 'cols'=>58, 'onKeyDown' => "text_longitud()", 'onKeyUp' => "text_longitud()"));
$form->applyFilter('description', 'html_filter');
$form->applyFilter('description', 'trim');
// url
$form->addElement('text', 'url', get_lang('URL'), array('class'=>'span5'));
$form->applyFilter('url', 'html_filter');
$form->applyFilter('url', 'trim');
// Picture
$form->addElement('file', 'picture', get_lang('AddPicture'));
$allowed_picture_types = array ('jpg', 'jpeg', 'png', 'gif');
$form->addRule('picture', get_lang('OnlyImagesAllowed').' ('.implode(',', $allowed_picture_types).')', 'filetype', $allowed_picture_types);
// Status
$status = array();
$status[GROUP_PERMISSION_OPEN] = get_lang('Open');
$status[GROUP_PERMISSION_CLOSED] = get_lang('Closed');
$form->addElement('select', 'visibility', get_lang('GroupPermissions'), $status);
$form = GroupPortalManager::setGroupForm($form);
$form->addElement('style_submit_button', 'add_group', get_lang('AddGroup'), 'class="save"');
$form->setRequiredNote(api_xml_http_response_encode('<span class="form_required">*</span> <small>'.get_lang('ThisFieldIsRequired').'</small>'));
@ -81,7 +54,7 @@ if ($form->validate()) {
$picture = $_FILES['picture'];
$group_id = GroupPortalManager::add($name, $description, $url, $status);
GroupPortalManager::add_user_to_group(api_get_user_id(), $group_id,GROUP_USER_PERMISSION_ADMIN);
GroupPortalManager::add_user_to_group(api_get_user_id(), $group_id, GROUP_USER_PERMISSION_ADMIN);
if (!empty($picture['name'])) {
$picture_uri = GroupPortalManager::update_group_picture($group_id, $_FILES['picture']['name'], $_FILES['picture']['tmp_name']);

@ -42,12 +42,10 @@ $interbreadcrumb[] = array('url' => 'home.php','name' => get_lang('Social'));
$interbreadcrumb[] = array('url' => 'groups.php','name' => get_lang('Groups'));
$table_group = Database::get_main_table(TABLE_MAIN_GROUP);
$group_data = GroupPortalManager::get_group_data($group_id);
$sql = "SELECT * FROM $table_group WHERE id = '".$group_id."'";
$res = Database::query($sql);
if (Database::num_rows($res) != 1) {
header('Location: groups.php?id='.$group_id);
exit;
if (empty($group_data)) {
api_not_allowed();
}
//only group admins can edit the group
@ -55,49 +53,13 @@ if (!GroupPortalManager::is_group_admin($group_id)) {
api_not_allowed();
}
$group_data = Database::fetch_array($res, 'ASSOC');
// Create the form
$form = new FormValidator('group_edit', 'post', '', '');
$form->addElement('hidden', 'id', $group_id);
// name
$form->addElement('text', 'name', get_lang('Name'), array('class'=>'span5', 'maxlength'=>120));
$form->applyFilter('name', 'html_filter');
$form->applyFilter('name', 'trim');
$form->addRule('name', get_lang('ThisFieldIsRequired'), 'required');
// Description
$form->addElement('textarea', 'description', get_lang('Description'), array('class'=>'span5', 'cols'=>58, 'onKeyDown' => "textarea_maxlength()", 'onKeyUp' => "textarea_maxlength()"));
$form->applyFilter('description', 'html_filter');
$form->applyFilter('description', 'trim');
$form->addRule('name', '', 'maxlength',255);
// url
$form->addElement('text', 'url', get_lang('URL'), array('class'=>'span5'));
$form->applyFilter('url', 'html_filter');
$form->applyFilter('url', 'trim');
// Picture
$form->addElement('file', 'picture', get_lang('AddPicture'));
$allowed_picture_types = array ('jpg', 'jpeg', 'png', 'gif');
$form->addRule('picture', get_lang('OnlyImagesAllowed').' ('.implode(',', $allowed_picture_types).')', 'filetype', $allowed_picture_types);
if (strlen($group_data['picture_uri']) > 0) {
$form->addElement('checkbox', 'delete_picture', '', get_lang('DelImage'));
}
// Status
$status = array();
$status[GROUP_PERMISSION_OPEN] = get_lang('Open');
$status[GROUP_PERMISSION_CLOSED] = get_lang('Closed');
$form->addElement('select', 'visibility', get_lang('GroupPermissions'), $status, array());
$form = GroupPortalManager::setGroupForm($form, $group_data);
// Submit button
$form->addElement('style_submit_button', 'submit', get_lang('ModifyInformation'), 'class="save"');
// Set default values
$form->setDefaults($group_data);
// Validate form
if ($form->validate()) {
$group = $form->exportValues();
@ -116,7 +78,11 @@ if ($form->validate()) {
$url = $group['url'];
$status = intval($group['visibility']);
GroupPortalManager::update($group_id, $name, $description, $url, $status, $picture_uri);
$allowMemberGroupToLeave = null;
if (GroupPortalManager::canLeaveFeatureEnabled($group_data)) {
$allowMemberGroupToLeave = isset($group['allow_members_leave_group']) ? true : false;
}
GroupPortalManager::update($group_id, $name, $description, $url, $status, $picture_uri, $allowMemberGroupToLeave);
$tok = Security::get_token();
header('Location: groups.php?id='.$group_id.'&action=show_message&message='.urlencode(get_lang('GroupUpdated')).'&sec_token='.$tok);
exit();
@ -142,10 +108,6 @@ $social_right_content = $form->return_form();
$tpl = new Template($tool_name);
$tpl->set_help('Groups');
$tpl->assign('social_left_content', $social_left_content);
$tpl->assign('social_left_menu', $social_left_menu);
$tpl->assign('social_right_content', $social_right_content);
$tpl->assign('actions', $actions);
$tpl->assign('message', $show_message);
$tpl->assign('content', $content);
$social_layout = $tpl->get_template('layout/social_layout.tpl');
$tpl->display($social_layout);

@ -22,7 +22,7 @@ $this_section = SECTION_SOCIAL;
// prepare anchor for message group topic
$anchor = '';
if (isset($_GET['anchor_topic'])) {
$anchor = Security::remove_XSS($_GET['anchor_topic']);
$anchor = Security::remove_XSS($_GET['anchor_topic']);
} else {
$match = 0;
$param_names = array_keys($_GET);
@ -123,61 +123,67 @@ $allowed_views = array('mygroups','newest','pop');
$interbreadcrumb[]= array ('url' =>'home.php','name' => get_lang('SocialNetwork'));
$content = null;
if (isset($_GET['view']) && in_array($_GET['view'],$allowed_views)) {
if ($_GET['view'] == 'mygroups') {
$interbreadcrumb[]= array ('url' =>'groups.php','name' => get_lang('Groups'));
$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('MyGroups'));
} else if ( $_GET['view'] == 'newest') {
$interbreadcrumb[]= array ('url' =>'groups.php','name' => get_lang('Groups'));
$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('Newest'));
} else {
$interbreadcrumb[]= array ('url' =>'groups.php','name' => get_lang('Groups'));
$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('Popular'));
}
if (isset($_GET['view']) && in_array($_GET['view'], $allowed_views)) {
if ($_GET['view'] == 'mygroups') {
$interbreadcrumb[]= array ('url' =>'groups.php','name' => get_lang('Groups'));
$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('MyGroups'));
} else if ($_GET['view'] == 'newest') {
$interbreadcrumb[]= array ('url' =>'groups.php','name' => get_lang('Groups'));
$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('Newest'));
} else {
$interbreadcrumb[]= array ('url' =>'groups.php','name' => get_lang('Groups'));
$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('Popular'));
}
} else {
$interbreadcrumb[]= array ('url' =>'groups.php','name' => get_lang('Groups'));
if (!isset($_GET['id'])) {
$interbreadcrumb[]= array ('url' =>'groups.php','name' => get_lang('Groups'));
if (!isset($_GET['id'])) {
$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('GroupList'));
} else {
//$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('Group'));
}
} else {
//$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('Group'));
}
}
//Display :: display_header($tool_name, 'Groups');
// getting group information
$group_id = isset($_GET['id']) ? intval($_GET['id']) : null;
$group_id = isset($_GET['id']) ? intval($_GET['id']) : null;
$relation_group_title = '';
$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') {
$user_leaved = intval($_GET['u']);
//I can "leave me myself"
if (api_get_user_id() == $user_leaved) {
GroupPortalManager::delete_user_rel_group($user_leaved, $group_id);
$user_leave_message = true;
}
}
// add a user to a group if its open
if (isset($_GET['action']) && $_GET['action']=='join') {
// we add a user only if is a open group
$user_join = intval($_GET['u']);
if (api_get_user_id() == $user_join && !empty($group_id)) {
if ($group_info['visibility'] == GROUP_PERMISSION_OPEN) {
GroupPortalManager::add_user_to_group($user_join, $group_id);
$user_added_group_message = true;
} else {
GroupPortalManager::add_user_to_group($user_join, $group_id, GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER);
$user_invitation_sent = true;
}
}
}
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 (!empty($group_id)) {
$interbreadcrumb[]= array ('url' =>'#','name' => $group_info['name']);
}
if (isset($_GET['action']) && $_GET['action']=='leave') {
$user_leaved = intval($_GET['u']);
if (GroupPortalManager::canLeave($group_info)) {
// I can "leave me myself"
if (api_get_user_id() == $user_leaved) {
GroupPortalManager::delete_user_rel_group($user_leaved, $group_id);
$user_leave_message = true;
}
}
}
// add a user to a group if its open
if (isset($_GET['action']) && $_GET['action']=='join') {
// we add a user only if is a open group
$user_join = intval($_GET['u']);
if (api_get_user_id() == $user_join && !empty($group_id)) {
if ($group_info['visibility'] == GROUP_PERMISSION_OPEN) {
GroupPortalManager::add_user_to_group($user_join, $group_id);
$user_added_group_message = true;
} else {
GroupPortalManager::add_user_to_group($user_join, $group_id, GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER);
$user_invitation_sent = true;
}
}
}
}
$create_thread_link = '';
@ -195,20 +201,20 @@ $social_right_content = null;
if ($group_id != 0 ) {
$group_info = GroupPortalManager::get_group_data($group_id);
$group_info = GroupPortalManager::get_group_data($group_id);
//Loading group information
if (isset($_GET['status']) && $_GET['status']=='sent') {
$social_right_content .= Display::return_message(get_lang('MessageHasBeenSent'), 'confirmation', false);
}
//Loading group information
if (isset($_GET['status']) && $_GET['status']=='sent') {
$social_right_content .= Display::return_message(get_lang('MessageHasBeenSent'), 'confirmation', false);
}
if ($user_leave_message) {
$social_right_content .= Display::return_message(get_lang('UserIsNotSubscribedToThisGroup'), 'confirmation', false);
}
if ($user_leave_message) {
$social_right_content .= Display::return_message(get_lang('UserIsNotSubscribedToThisGroup'), 'confirmation', false);
}
if ($user_added_group_message) {
$social_right_content .= Display::return_message(get_lang('UserIsSubscribedToThisGroup'), 'confirmation', false);
}
if ($user_added_group_message) {
$social_right_content .= Display::return_message(get_lang('UserIsSubscribedToThisGroup'), 'confirmation', false);
}
if ($user_invitation_sent) {
$social_right_content .= Display::return_message(get_lang('InvitationSent'), 'confirmation', false);
@ -219,40 +225,33 @@ if ($group_id != 0 ) {
// details about the current group
$social_right_content = '<div class="span9">';
$social_right_content .= '<div id="social-group-details">';
//Group's title
$social_right_content .= Display::tag('h2', Security::remove_XSS($group_info['name'], STUDENT, true));
//Privacy
if (!$is_group_member) {
$social_right_content .= '<div class="social-group-details-info">';
$social_right_content .= '<span>'.get_lang('Privacy').' : </span>';
if ($group_info['visibility']== GROUP_PERMISSION_OPEN) {
$social_right_content .= get_lang('ThisIsAnOpenGroup');
} elseif ($group_info['visibility']== GROUP_PERMISSION_CLOSED) {
$social_right_content .= get_lang('ThisIsACloseGroup');
}
$social_right_content .= '</div>';
}
//Group's title
$social_right_content .= Display::tag('h2', Security::remove_XSS($group_info['name'], STUDENT, true));
//Privacy
if (!$is_group_member) {
$social_right_content .= '<div class="social-group-details-info">';
$social_right_content .= '<span>'.get_lang('Privacy').' : </span>';
if ($group_info['visibility']== GROUP_PERMISSION_OPEN) {
$social_right_content .= get_lang('ThisIsAnOpenGroup');
} elseif ($group_info['visibility']== GROUP_PERMISSION_CLOSED) {
$social_right_content .= get_lang('ThisIsACloseGroup');
}
$social_right_content .= '</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) {
$social_right_content .= Display::return_message(get_lang('YouAlreadySentAnInvitation'));
}
}
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) {
$social_right_content .= Display::return_message(get_lang('YouAlreadySentAnInvitation'));
}
}
if (!empty($relation_group_title)) {
/*
echo '<div class="social-group-details-info">';
echo '<span>'.get_lang('StatusInThisGroup').' : </span>';
echo $relation_group_title;
echo '</div>';*/
}
//Group's tags
if (!empty($tags)) {
$social_right_content .= '<div id="social-group-details-info"><span>'.get_lang('Tags').' : </span>'.$tags.'</div>';
}
$social_right_content .= '</div>';
// Group's tags
if (!empty($tags)) {
$social_right_content .= '<div id="social-group-details-info"><span>'.get_lang('Tags').' : </span>'.$tags.'</div>';
}
$social_right_content .= '</div>';
$social_right_content .= '</div>';
//-- Show message groups
@ -308,10 +307,6 @@ if ($group_id != 0 ) {
if (!empty($create_thread_link)) {
$create_thread_link = Display::div($create_thread_link, array('style'=>'padding-top:2px;height:40px'));
}
//api_get_item_property_by_tool('group', $course_info, $group_id);
//$updates =
//get_lang('Updates'),
$headers = array(get_lang('Discussions'), get_lang('Members'));
$social_right_content .= Display::tabs($headers, array($create_thread_link.$content, $member_content),'tabs');
} else {
@ -325,209 +320,209 @@ if ($group_id != 0 ) {
$social_right_content .= '</div>'; // end layout messages
} else {
// My groups -----
$results = GroupPortalManager::get_groups_by_user(api_get_user_id(), 0);
$grid_my_groups = array();
$my_group_list = array();
if (is_array($results) && count($results) > 0) {
foreach ($results as $result) {
$id = $result['id'];
$result['name'] = Security::remove_XSS($result['name'], STUDENT, true);
$result['description'] = Security::remove_XSS($result['description'], STUDENT, true);
$my_group_list[] = $id;
$url_open = '<a href="groups.php?id='.$id.'">';
$url_close = '</a>';
$name = cut($result['name'], GROUP_TITLE_LENGTH, true);
if ($result['relation_type'] == GROUP_USER_PERMISSION_ADMIN) {
$name .= ' '.Display::return_icon('social_group_admin.png', get_lang('Admin'), array('style'=>'vertical-align:middle'));
} elseif ($result['relation_type'] == GROUP_USER_PERMISSION_MODERATOR) {
$name .= ' '.Display::return_icon('social_group_moderator.png', get_lang('Moderator'), array('style'=>'vertical-align:middle'));
}
$count_users_group = count(GroupPortalManager::get_users_by_group($id, false, array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_READER, GROUP_USER_PERMISSION_MODERATOR), 0 , 1000));
if ($count_users_group == 1 ) {
$count_users_group = $count_users_group.' '.get_lang('Member');
} else {
$count_users_group = $count_users_group.' '.get_lang('Members');
}
// My groups -----
$results = GroupPortalManager::get_groups_by_user(api_get_user_id(), 0);
$grid_my_groups = array();
$my_group_list = array();
if (is_array($results) && count($results) > 0) {
foreach ($results as $result) {
$id = $result['id'];
$result['name'] = Security::remove_XSS($result['name'], STUDENT, true);
$result['description'] = Security::remove_XSS($result['description'], STUDENT, true);
$my_group_list[] = $id;
$url_open = '<a href="groups.php?id='.$id.'">';
$url_close = '</a>';
$name = cut($result['name'], GROUP_TITLE_LENGTH, true);
if ($result['relation_type'] == GROUP_USER_PERMISSION_ADMIN) {
$name .= ' '.Display::return_icon('social_group_admin.png', get_lang('Admin'), array('style'=>'vertical-align:middle'));
} elseif ($result['relation_type'] == GROUP_USER_PERMISSION_MODERATOR) {
$name .= ' '.Display::return_icon('social_group_moderator.png', get_lang('Moderator'), array('style'=>'vertical-align:middle'));
}
$count_users_group = count(GroupPortalManager::get_users_by_group($id, false, array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_READER, GROUP_USER_PERMISSION_MODERATOR), 0 , 1000));
if ($count_users_group == 1 ) {
$count_users_group = $count_users_group.' '.get_lang('Member');
} else {
$count_users_group = $count_users_group.' '.get_lang('Members');
}
$picture = GroupPortalManager::get_picture_group($result['id'], $result['picture_uri'],80);
$result['picture_uri'] = '<img class="social-groups-image" src="'.$picture['file'].'" hspace="4" height="50" border="2" align="left" width="50" />';
$item_0 = Display::div($result['picture_uri'], array('class'=>'box_description_group_image'));
$members = Display::span($count_users_group, array('class'=>'box_description_group_member'));
$item_1 = Display::div(Display::tag('h3', $url_open.$name.$url_close).$members, array('class'=>'box_description_group_title'));
$picture = GroupPortalManager::get_picture_group($result['id'], $result['picture_uri'],80);
$result['picture_uri'] = '<img class="social-groups-image" src="'.$picture['file'].'" hspace="4" height="50" border="2" align="left" width="50" />';
$item_0 = Display::div($result['picture_uri'], array('class'=>'box_description_group_image'));
$members = Display::span($count_users_group, array('class'=>'box_description_group_member'));
$item_1 = Display::div(Display::tag('h3', $url_open.$name.$url_close).$members, array('class'=>'box_description_group_title'));
$item_2 = '';
$item_3 = '';
if ($result['description'] != '') {
$item_3 = '<div class="box_description_group_content" >'.cut($result['description'],100,true).'</div>';
} else {
$item_2 = '<div class="box_description_group_title" ><span class="social-groups-text2"></span></div>';
$item_3 = '<div class="box_description_group_content" ></div>';
}
$grid_item_2 = $item_0.$item_1.$item_2.$item_3;
$grid_my_groups[]= array($grid_item_2);
}
}
$item_2 = '';
$item_3 = '';
if ($result['description'] != '') {
$item_3 = '<div class="box_description_group_content" >'.cut($result['description'],100,true).'</div>';
} else {
$item_2 = '<div class="box_description_group_title" ><span class="social-groups-text2"></span></div>';
$item_3 = '<div class="box_description_group_content" ></div>';
}
$grid_item_2 = $item_0.$item_1.$item_2.$item_3;
$grid_my_groups[]= array($grid_item_2);
}
}
// Newest groups
$results = GroupPortalManager::get_groups_by_age(4,false);
$grid_newest_groups = array();
foreach ($results as $result) {
$result['name'] = Security::remove_XSS($result['name'], STUDENT, true);
$result['description'] = Security::remove_XSS($result['description'], STUDENT, true);
$id = $result['id'];
$url_open = '<a href="groups.php?id='.$id.'">';
$url_close = '</a>';
$count_users_group = count(GroupPortalManager::get_users_by_group($id, false, array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_READER, GROUP_USER_PERMISSION_MODERATOR), 0 , 1000));
if ($count_users_group == 1 ) {
$count_users_group = $count_users_group.' '.get_lang('Member');
} else {
$count_users_group = $count_users_group.' '.get_lang('Members');
}
// Newest groups
$results = GroupPortalManager::get_groups_by_age(4,false);
$grid_newest_groups = array();
foreach ($results as $result) {
$result['name'] = Security::remove_XSS($result['name'], STUDENT, true);
$result['description'] = Security::remove_XSS($result['description'], STUDENT, true);
$id = $result['id'];
$url_open = '<a href="groups.php?id='.$id.'">';
$url_close = '</a>';
$count_users_group = count(GroupPortalManager::get_users_by_group($id, false, array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_READER, GROUP_USER_PERMISSION_MODERATOR), 0 , 1000));
if ($count_users_group == 1 ) {
$count_users_group = $count_users_group.' '.get_lang('Member');
} else {
$count_users_group = $count_users_group.' '.get_lang('Members');
}
$name = cut($result['name'],GROUP_TITLE_LENGTH,true);
$picture = GroupPortalManager::get_picture_group($result['id'], $result['picture_uri'],80);
$result['picture_uri'] = '<img class="social-groups-image" src="'.$picture['file'].'" hspace="4" height="50" border="2" align="left" width="50" />';
$name = cut($result['name'],GROUP_TITLE_LENGTH,true);
$picture = GroupPortalManager::get_picture_group($result['id'], $result['picture_uri'],80);
$result['picture_uri'] = '<img class="social-groups-image" src="'.$picture['file'].'" hspace="4" height="50" border="2" align="left" width="50" />';
$item_0 = Display::div($result['picture_uri'], array('class'=>'box_description_group_image'));
$members = Display::span($count_users_group, array('class'=>'box_description_group_member'));
$item_1 = Display::div(Display::tag('h3', $url_open.$name.$url_close).$members, array('class'=>'box_description_group_title'));
$item_0 = Display::div($result['picture_uri'], array('class'=>'box_description_group_image'));
$members = Display::span($count_users_group, array('class'=>'box_description_group_member'));
$item_1 = Display::div(Display::tag('h3', $url_open.$name.$url_close).$members, array('class'=>'box_description_group_title'));
if ($result['description'] != '') {
$item_3 = '<div class="box_description_group_content" >'.cut($result['description'],100,true).'</div>';
} else {
$item_2 = '<div class="box_description_group_title" ><span class="social-groups-text2"></span></div>';
$item_3 = '<div class="box_description_group_content" ></div>';
}
//Avoiding my groups
$join_url = '';
if (!in_array($id,$my_group_list)) {
$join_url = '<a class="btn" href="groups.php?id='.$id.'&action=join&u='.api_get_user_id().'">'.get_lang('JoinGroup').'</a> ';
}
if ($result['description'] != '') {
$item_3 = '<div class="box_description_group_content" >'.cut($result['description'],100,true).'</div>';
} else {
$item_2 = '<div class="box_description_group_title" ><span class="social-groups-text2"></span></div>';
$item_3 = '<div class="box_description_group_content" ></div>';
}
//Avoiding my groups
$join_url = '';
if (!in_array($id,$my_group_list)) {
$join_url = '<a class="btn" href="groups.php?id='.$id.'&action=join&u='.api_get_user_id().'">'.get_lang('JoinGroup').'</a> ';
}
$item_4 = '<div class="box_description_group_actions" >'.$join_url.'</div>';
$grid_item_2 = $item_0.$item_1.$item_2.$item_3.$item_4;
$item_4 = '<div class="box_description_group_actions" >'.$join_url.'</div>';
$grid_item_2 = $item_0.$item_1.$item_2.$item_3.$item_4;
$grid_newest_groups[]= array($grid_item_2);
}
$grid_newest_groups[]= array($grid_item_2);
}
// Pop groups
$results = GroupPortalManager::get_groups_by_popularity(4,false);
$grid_pop_groups = array();
if (is_array($results) && count($results) > 0) {
foreach ($results as $result) {
$result['name'] = Security::remove_XSS($result['name'], STUDENT, true);
$result['description'] = Security::remove_XSS($result['description'], STUDENT, true);
$id = $result['id'];
$url_open = '<a href="groups.php?id='.$id.'">';
$url_close = '</a>';
$count_users_group = count(GroupPortalManager::get_users_by_group($id, false, array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_READER, GROUP_USER_PERMISSION_MODERATOR), 0 , 1000));
if ($count_users_group == 1 ) {
$count_users_group = $count_users_group.' '.get_lang('Member');
} else {
$count_users_group = $count_users_group.' '.get_lang('Members');
}
// Pop groups
$results = GroupPortalManager::get_groups_by_popularity(4,false);
$grid_pop_groups = array();
if (is_array($results) && count($results) > 0) {
foreach ($results as $result) {
$result['name'] = Security::remove_XSS($result['name'], STUDENT, true);
$result['description'] = Security::remove_XSS($result['description'], STUDENT, true);
$id = $result['id'];
$url_open = '<a href="groups.php?id='.$id.'">';
$url_close = '</a>';
$count_users_group = count(GroupPortalManager::get_users_by_group($id, false, array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_READER, GROUP_USER_PERMISSION_MODERATOR), 0 , 1000));
if ($count_users_group == 1 ) {
$count_users_group = $count_users_group.' '.get_lang('Member');
} else {
$count_users_group = $count_users_group.' '.get_lang('Members');
}
$name = cut($result['name'],GROUP_TITLE_LENGTH,true);
$picture = GroupPortalManager::get_picture_group($result['id'], $result['picture_uri'],80);
$result['picture_uri'] = '<img class="social-groups-image" src="'.$picture['file'].'" hspace="4" height="50" border="2" align="left" width="50" />';
$name = cut($result['name'],GROUP_TITLE_LENGTH,true);
$picture = GroupPortalManager::get_picture_group($result['id'], $result['picture_uri'],80);
$result['picture_uri'] = '<img class="social-groups-image" src="'.$picture['file'].'" hspace="4" height="50" border="2" align="left" width="50" />';
$item_0 = Display::div($result['picture_uri'], array('class'=>'box_description_group_image'));
$members = Display::span($count_users_group, array('class'=>'box_description_group_member'));
$item_1 = Display::div(Display::tag('h3', $url_open.$name.$url_close).$members, array('class'=>'box_description_group_title'));
$item_0 = Display::div($result['picture_uri'], array('class'=>'box_description_group_image'));
$members = Display::span($count_users_group, array('class'=>'box_description_group_member'));
$item_1 = Display::div(Display::tag('h3', $url_open.$name.$url_close).$members, array('class'=>'box_description_group_title'));
if ($result['description'] != '') {
$item_3 = '<div class="box_description_group_content" >'.cut($result['description'],100,true).'</div>';
} else {
$item_2 = '<div class="box_description_group_title" ><span class="social-groups-text2"></span></div>';
$item_3 = '<div class="box_description_group_content" ></div>';
}
if ($result['description'] != '') {
$item_3 = '<div class="box_description_group_content" >'.cut($result['description'],100,true).'</div>';
} else {
$item_2 = '<div class="box_description_group_title" ><span class="social-groups-text2"></span></div>';
$item_3 = '<div class="box_description_group_content" ></div>';
}
$join_url = '';
if (!in_array($id,$my_group_list)) {
$join_url = '<a class="btn" href="groups.php?id='.$id.'&action=join&u='.api_get_user_id().'">'.get_lang('JoinGroup').'</a> ';
}
$item_4 = '<div class="box_description_group_actions" >'.$join_url.'</div>';
$join_url = '';
if (!in_array($id,$my_group_list)) {
$join_url = '<a class="btn" href="groups.php?id='.$id.'&action=join&u='.api_get_user_id().'">'.get_lang('JoinGroup').'</a> ';
}
$item_4 = '<div class="box_description_group_actions" >'.$join_url.'</div>';
$grid_item_2 = $item_0.$item_1.$item_2.$item_3.$item_4;
$grid_pop_groups[]= array($grid_item_2);
}
}
$grid_item_2 = $item_0.$item_1.$item_2.$item_3.$item_4;
$grid_pop_groups[]= array($grid_item_2);
}
}
// Display groups (newest, mygroups, pop)
$query_vars = array();
$newest_content = $popular_content = $my_group_content = null;
if (isset($_GET['view']) && in_array($_GET['view'],$allowed_views)) {
$view_group = $_GET['view'];
switch ($view_group) {
case 'mygroups' :
if (count($grid_my_groups) > 0) {
$my_group_content = Display::return_sortable_grid('mygroups', array(), $grid_my_groups, array('hide_navigation'=>true, 'per_page' => 2), $query_vars, false, array(true, true, true,false));
}
if (api_get_setting('allow_students_to_create_groups_in_social') == 'true') {
$create_group_item = '<a class="btn" href="'.api_get_path(WEB_PATH).'main/social/group_add.php">'.get_lang('CreateASocialGroup').'</a>';
//$my_group_content = $create_group_item. $my_group_content;
} else {
if (api_is_allowed_to_edit(null,true)) {
$create_group_item = '<a class="btn" href="'.api_get_path(WEB_PATH).'main/social/group_add.php">'.get_lang('CreateASocialGroup').'</a>';
}
}
break;
case 'newest' :
if (count($grid_newest_groups) > 0) {
$newest_content = Display::return_sortable_grid('newest', array(), $grid_newest_groups, array('hide_navigation'=>true, 'per_page' => 100), $query_vars, false, array(true, true, true,false));
}
if (api_is_platform_admin() || api_get_setting('allow_students_to_create_groups_in_social') == 'true') {
if (empty($grid_newest_groups)) {
//echo '<a href="group_add.php">'.get_lang('YouShouldCreateAGroup').'</a>';
}
}
break;
default :
if (count($grid_pop_groups) > 0) {
$popular_content = Display::return_sortable_grid('popular', array(), $grid_pop_groups, array('hide_navigation'=>true, 'per_page' => 100), $query_vars, false, array(true, true, true,true,true));
}
if (api_is_platform_admin() || api_get_setting('allow_students_to_create_groups_in_social') == 'true') {
if (empty($grid_pop_groups)) {
//echo '<a href="group_add.php">'.get_lang('YouShouldCreateAGroup').'</a>';
}
}
break;
}
} else {
$my_group_content = null;
if (count($grid_my_groups) > 0) {
$my_group_content = Display::return_sortable_grid('mygroups', array(), $grid_my_groups, array('hide_navigation'=>true, 'per_page' => 2), $query_vars, false, array(true, true, true,false));
}
if (api_get_setting('allow_students_to_create_groups_in_social') == 'true') {
$create_group_item = '<a class="btn" href="'.api_get_path(WEB_PATH).'main/social/group_add.php">'.get_lang('CreateASocialGroup').'</a>';
//$my_group_content = $create_group_item. $my_group_content;
} else {
if (api_is_allowed_to_edit(null,true)) {
// Display groups (newest, mygroups, pop)
$query_vars = array();
$newest_content = $popular_content = $my_group_content = null;
if (isset($_GET['view']) && in_array($_GET['view'],$allowed_views)) {
$view_group = $_GET['view'];
switch ($view_group) {
case 'mygroups':
if (count($grid_my_groups) > 0) {
$my_group_content = Display::return_sortable_grid('mygroups', array(), $grid_my_groups, array('hide_navigation'=>true, 'per_page' => 2), $query_vars, false, array(true, true, true,false));
}
if (api_get_setting('allow_students_to_create_groups_in_social') == 'true') {
$create_group_item = '<a class="btn" href="'.api_get_path(WEB_PATH).'main/social/group_add.php">'.get_lang('CreateASocialGroup').'</a>';
//$my_group_content = $create_group_item. $my_group_content;
} else {
if (api_is_allowed_to_edit(null,true)) {
$create_group_item = '<a class="btn" href="'.api_get_path(WEB_PATH).'main/social/group_add.php">'.get_lang('CreateASocialGroup').'</a>';
}
}
break;
case 'newest':
if (count($grid_newest_groups) > 0) {
$newest_content = Display::return_sortable_grid('newest', array(), $grid_newest_groups, array('hide_navigation'=>true, 'per_page' => 100), $query_vars, false, array(true, true, true,false));
}
if (api_is_platform_admin() || api_get_setting('allow_students_to_create_groups_in_social') == 'true') {
if (empty($grid_newest_groups)) {
//echo '<a href="group_add.php">'.get_lang('YouShouldCreateAGroup').'</a>';
}
}
break;
default :
if (count($grid_pop_groups) > 0) {
$popular_content = Display::return_sortable_grid('popular', array(), $grid_pop_groups, array('hide_navigation'=>true, 'per_page' => 100), $query_vars, false, array(true, true, true,true,true));
}
if (api_is_platform_admin() || api_get_setting('allow_students_to_create_groups_in_social') == 'true') {
if (empty($grid_pop_groups)) {
//echo '<a href="group_add.php">'.get_lang('YouShouldCreateAGroup').'</a>';
}
}
break;
}
} else {
$my_group_content = null;
if (count($grid_my_groups) > 0) {
$my_group_content = Display::return_sortable_grid('mygroups', array(), $grid_my_groups, array('hide_navigation'=>true, 'per_page' => 2), $query_vars, false, array(true, true, true,false));
}
if (api_get_setting('allow_students_to_create_groups_in_social') == 'true') {
$create_group_item = '<a class="btn" href="'.api_get_path(WEB_PATH).'main/social/group_add.php">'.get_lang('CreateASocialGroup').'</a>';
//$my_group_content = $create_group_item. $my_group_content;
} else {
if (api_is_allowed_to_edit(null,true)) {
$create_group_item = '<a class="btn" href="'.api_get_path(WEB_PATH).'main/social/group_add.php">'.get_lang('CreateASocialGroup').'</a>';
}
if (count($grid_newest_groups) > 0) {
$newest_content = Display::return_sortable_grid('mygroups', array(), $grid_newest_groups, array('hide_navigation'=>true, 'per_page' => 100), $query_vars, false, array(true, true, true,false));
}
if (count($grid_pop_groups) > 0) {
$popular_content = Display::return_sortable_grid('mygroups', array(), $grid_pop_groups, array('hide_navigation'=>true, 'per_page' => 100), $query_vars, false, array(true, true, true,true,true));
}
}
}
if (count($grid_newest_groups) > 0) {
$newest_content = Display::return_sortable_grid('mygroups', array(), $grid_newest_groups, array('hide_navigation'=>true, 'per_page' => 100), $query_vars, false, array(true, true, true,false));
}
if (count($grid_pop_groups) > 0) {
$popular_content = Display::return_sortable_grid('mygroups', array(), $grid_pop_groups, array('hide_navigation'=>true, 'per_page' => 100), $query_vars, false, array(true, true, true,true,true));
}
}
if (!empty($create_group_item)) {
$social_right_content .= Display::div($create_group_item, array('class'=>'span9'));
}
$headers = array(get_lang('Newest'), get_lang('Popular'), get_lang('MyGroups'));
$social_right_content .= '<div class="span9">'.Display::tabs($headers, array($newest_content, $popular_content, $my_group_content),'tab_browse').'</div>';
if (!empty($create_group_item)) {
$social_right_content .= Display::div($create_group_item, array('class'=>'span9'));
}
$headers = array(get_lang('Newest'), get_lang('Popular'), get_lang('MyGroups'));
$social_right_content .= '<div class="span9">'.Display::tabs($headers, array($newest_content, $popular_content, $my_group_content),'tab_browse').'</div>';
}
$show_message = null;
if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'show_message' && $_REQUEST['msg'] == 'topic_deleted') {
@ -542,4 +537,4 @@ $tpl->assign('social_right_content', $social_right_content);
$tpl->assign('message', $show_message);
$tpl->assign('content', $content);
$social_layout = $tpl->get_template('layout/social_layout.tpl');
$tpl->display($social_layout);
$tpl->display($social_layout);

Loading…
Cancel
Save