<?php
function joinGroup($group_id,$privacy)
{
global $db, $current_user,$main_smarty,$the_template,$my_base_url,$my_pligg_base;
if (!is_numeric($group_id)) die();
// Enforce "Max Joinable Groups" config option
if (reached_max_joinable_groups($db, $current_user))
return;
$privacy = $db->get_var("SELECT group_privacy FROM " . table_groups . " WHERE group_id = $group_id");
if($privacy == 'public')
$member_status = 'active';
else
$member_status = 'inactive';
if (isMember($group_id)) return;
$sql = "INSERT IGNORE INTO ". table_group_member ." ( `member_user_id` , `member_group_id`, `member_role`,`member_status` ) VALUES ('".$current_user->user_id ."', '".$group_id."','normal','".$member_status."' ) ";
$db->query($sql);
//member count update increase
if(isMemberActive($group_id) == 'active')
{
$member_count = get_group_members($group_id);
$member_update = "update ". table_groups ." set group_members = '".$member_count."' where group_id = '".$group_id."'";
$db->query($member_update);
}
if($privacy != 'public')
{
$creator_id = get_group_creator($group_id);
$to = get_group_user_email($creator_id);
$subject = $main_smarty->get_config_vars('PLIGG_Visual_Group_Email_Subject');
$body = sprintf( $main_smarty->get_config_vars('PLIGG_Visual_Group_Email_Body'),
my_base_url.getmyurl("user", $current_user->user_login),
$current_user->user_login,
my_base_url.my_pligg_base."/join_group.php?activate=true&group_id=".$group_id."&user_id=".$current_user->user_id,
my_base_url.my_pligg_base."/join_group.php?activate=false&group_id=".$group_id."&user_id=".$current_user->user_id);
$headers = 'From: ' . $main_smarty->get_config_vars("PLIGG_PassEmail_From") . "\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
mail($to, $subject, $body, $headers);
}
}
function unjoinGroup($group_id,$privacy)
{
global $db, $current_user;
if (!is_numeric($group_id)) die();
//$isMember = isMember($story_id);if($privacy == 'public')
$sql2 = "delete from ". table_group_member ." where member_user_id = '".$current_user->user_id ."' and member_group_id = '".$group_id."' ";
$db->query($sql2);
//member count update decrease
$member_count = get_group_members($group_id);
$member_update = "update ". table_groups ." set group_members = '".$member_count."' where group_id = '".$group_id."' ";
$db->query($member_update);
}
function isMember($group_id)
{
global $db, $current_user;
if (!is_numeric($group_id)) die();
return $db->get_var("SELECT count(*) FROM " . table_group_member . " WHERE member_group_id = $group_id AND member_user_id = '".$current_user->user_id ."' " );
}
function isMemberActive($group_id)
{
global $db, $current_user;
if (!is_numeric($group_id)) die();
return $db->get_var("SELECT member_status FROM " . table_group_member . " WHERE member_group_id = $group_id AND member_user_id = '".$current_user->user_id ."' " );
}
function get_group_members($group_id)
{
global $db;
if (!is_numeric($group_id)) die();
$gid = $group_id;
//$creator = $db->get_row("SELECT group_members FROM " . table_groups . " WHERE group_id = $gid");
return $db->get_var("SELECT COUNT(*) FROM " . table_group_member . " WHERE member_group_id = $gid AND member_status = 'active'" );
//return $creator->group_members;
}
//returns creator id from group id
function get_group_creator($group_id)
{
global $db;
if (!is_numeric($group_id)) die();
$gid = $group_id;
$creator = $db->get_row("SELECT group_creator FROM " . table_groups . " WHERE group_id = $gid");
return $creator->group_creator;
}
//to return name from userid
function get_group_username($uid)
{
$user_id = $uid;
if (!is_numeric($user_id)) die();
include_once(mnminclude.'user.php');
$user = new User;
$user->id = $user_id;
$user->read('short');
return $user->username;
}
//to return name from userid
function get_group_user_email($uid)
{
$user_id = $uid;
if (!is_numeric($user_id)) die();
include_once(mnminclude.'user.php');
$user = new User;
$user->id = $user_id;
$user->read('short');
return $user->email;
}
//returns the groups of the loggedin user
function get_groupid_user($userid)
{
global $db,$current_user;
if (!is_numeric($userid)) die();
$group_array = array();
// DB 01/08/09
$groupdetail = $db->get_results("SELECT DISTINCT (group_id) AS group_id FROM " . table_group_member . " WHERE member_user_id =".$userid."");
// $groupdetail = $db->get_results("SELECT DISTINCT (group_id) AS group_id FROM " . table_group_member . " , " . table_groups . " , ".table_links." WHERE link_group_id = member_group_id AND member_group_id = group_id AND member_user_id =".$userid."");
/////
$group_array = $groupdetail;
return $group_array;
/*
foreach($groupdetail as $groupcount)
{
return $groupcount->group_id;
array_splice($groupcount, count($grouup_id), 0, $groupcount->group_id);
//return $group_id_array;
}
*/
}
/*function get_groupname_user()
{
global $db,$current_user;
$groupdetail = $db->get_row("SELECT group_name FROM " . table_group_member . " , " . table_groups . " , ".table_links." WHERE link_group_id = member_group_id AND member_group_id = group_id AND member_user_id =1");
return $groupdetail->group_name;
}*/
function get_groupdetail_user()
{
global $db,$current_user;
// DB 01/08/09
$groupdetail = $db->get_results("SELECT DISTINCT (group_id) AS group_id,group_name FROM " . table_group_member . " WHERE member_user_id ='".$current_user->user_id ."'");
// $groupdetail = $db->get_results("SELECT DISTINCT (group_id) AS group_id,group_name FROM " . table_group_member . " , " . table_groups . " , ".table_links." WHERE link_group_id = member_group_id AND member_group_id = group_id AND member_user_id ='".$current_user->user_id ."'");
/////
return $groupdetail;
}
//returns votes to publish count
function group_check_to_publish($group_id)
{
global $db;
if (!is_numeric($group_id)) die();
$gid = $group_id;
$group_vote_to_publish = $db->get_row("SELECT group_vote_to_publish FROM " . table_groups . " WHERE group_id = $gid");
return $group_vote_to_publish->group_vote_to_publish;
}
/** Find out if the user has already joined the maximum allowable number of groups.
To enforce "Max Joinable Groups" config option. */
function reached_max_joinable_groups($db, $current_user) {
$user_id = $current_user->user_id;
if (!is_numeric($user_id)) die();
$current_memberships = $db->get_var('SELECT COUNT(*) FROM ' . table_group_member
. " WHERE member_user_id = '$user_id'");
return $current_memberships >= max_groups_to_join;
}
//displaying group as story
function group_display($requestID)
{
global $db,$main_smarty,$the_template;
if (!is_numeric($requestID)) die();
$group = $db->get_row("SELECT * FROM " . table_groups . " WHERE group_id = $requestID");
if($group)
{
$group_id=$group->group_id;
$group_name=$group->group_name;
$group_safename=$group->group_safename;
$group_description=$group->group_description;
$group_creator=$group->group_creator;
$group_status=$group->group_status;
$group_members=$group->group_members;
$group_date=$group->group_date;
$group_privacy=$group->group_privacy;
$group_avatar=$group->group_avatar;
$group_vote_to_publish=$group->group_vote_to_publish;
$group_notify_email=$group->group_notify_email;
$date = $db->get_var(" SELECT DATE_FORMAT(group_date, '%b, %e %Y') from ".table_groups . " WHERE group_id = $group->group_id");
//echo $date;
$group_date = $date;
//$group_date = date('M j, Y', $group->group_date);
//smarty variables
$main_smarty->assign('pretitle', "$group_name - $group_description");
$main_smarty->assign('group_id', $group_id);
$main_smarty->assign('group_name', $group_name);
$main_smarty->assign('group_safename', $group_safename);
$main_smarty->assign('group_description', $group_description);
$main_smarty->assign('group_creator', $group_creator);
$main_smarty->assign('group_status', $group_status);
$main_smarty->assign('group_members', $group_members);
$main_smarty->assign('group_privacy', $group_privacy);
$main_smarty->assign('group_avatar', $group_avatar);
$main_smarty->assign('group_date', $group_date);
$main_smarty->assign('group_notify_email', $group_notify_email);
$main_smarty->assign('group_vote_to_publish', $group_vote_to_publish);
//get group avatar path
if($group_avatar == "uploaded" && file_exists(mnmpath."avatars/groups_uploaded/".$group_id."_".group_avatar_size_width.".jpg"))
$imgsrc = my_base_url . my_pligg_base."/avatars/groups_uploaded/".$group_id."_".group_avatar_size_width.".jpg";
else
$imgsrc = my_base_url . my_pligg_base."/templates/".$the_template."/images/group_large.gif";
$main_smarty->assign('imgsrc', $imgsrc);
//get group creator and his urls
$g_name = get_group_username($group_creator);
$main_smarty->assign('group_submitter', $g_name);
$main_smarty->assign('submitter_profile_url', getmyurl('user', $g_name));
$main_smarty->assign('group_avatar_url', getmyurl('group_avatar', $group_id));
//check group admin
global $current_user;
$canIhaveAccess = $canIhaveAccess + checklevel('god');
if($current_user->user_id == $group_creator || $canIhaveAccess == 1){$main_smarty->assign('is_group_admin', 1);}
//check member
//include_once(mnminclude.'group.php');
$main_smarty->assign('is_group_member', isMember($group_id));
//check isMemberActive
$main_smarty->assign('is_member_active', isMemberActive($group_id));
// Joining and unjoining member links
// Set the url to an empty string if the user has already joined the maximum
// allowable number of groups
if (reached_max_joinable_groups($db, $current_user))
$join_url = '';
else
$join_url = getmyurl('join_group', $group_id, $group_privacy);
$main_smarty->assign('join_group_url', $join_url);
$main_smarty->assign('join_group_privacy_url', $join_url);
$main_smarty->assign('unjoin_group_url',getmyurl("unjoin_group",$group_id,$group_privacy));
$main_smarty->assign('join_group_withdraw',getmyurl("join_group_withdraw",$group_id,$current_user->user_id));
//check logged or not
$main_smarty->assign('user_logged_in', $current_user->user_login);
//sidebar
$main_smarty = do_sidebar($main_smarty);
//$main_smarty->assign('form_action', $_SERVER["PHP_SELF"]);
$group_story_url = getmyurl("group_story_title", $group_safename);
$main_smarty->assign('form_action', $group_story_url);
$main_smarty->assign('edit_form_action', getmyurl("editgroup", $group_id));
$group_array = array($group_name, $group_description, $group_privacy);
return $group_array;
}
}
//displaying member of a group
function member_display($requestID)
{
global $db,$main_smarty,$current_user;
if (!is_numeric($requestID)) die();
$change_role = $main_smarty->get_config_vars("PLIGG_Visual_Group_Change_Role");
$role_normal = $main_smarty->get_config_vars("PLIGG_Visual_Group_Role_Normal");
$role_admin = $main_smarty->get_config_vars("PLIGG_Visual_Group_Role_Admin");
$role_moderator = $main_smarty->get_config_vars("PLIGG_Visual_Group_Role_Moderator");
$role_flagged = $main_smarty->get_config_vars("PLIGG_Visual_Group_Role_Flagged");
$role_banned = $main_smarty->get_config_vars("PLIGG_Visual_Group_Role_Banned");
$gcreator = get_group_creator($requestID);
if($gcreator == $current_user->user_id)
$member = $db->get_results("SELECT * FROM " . table_group_member . " WHERE member_group_id = $requestID");
else
$member = $db->get_results("SELECT * FROM " . table_group_member . " WHERE member_group_id = $requestID and member_status = 'active'");
if($member)
{
foreach($member as $memberid)
{
$member_user_id = $memberid->member_user_id;
$member_role = $memberid->member_role;
//role change urls
$member_adminchange_url = getmyurl('group_admin', $requestID,'admin',$member_user_id);
$member_normalchange_url = getmyurl('group_normal', $requestID,'normal',$member_user_id);
$member_moderatorchange_url = getmyurl('group_moderator', $requestID,'moderator',$member_user_id);
$member_flaggedchange_url = getmyurl('group_flagged', $requestID,'flagged',$member_user_id);
$member_bannedchange_url = getmyurl('group_banned', $requestID,'banned',$member_user_id);
//get group creator and his url,avatar
$member_name = get_group_username($member_user_id);
$group_member_url = getmyurl('user', $member_name);
$group_member_avatar = get_avatar('large', "", "", "", $member_user_id);
$member_display .= '<a href="' . $group_member_url . '" class="group_member"><img src="' . $group_member_avatar . '" alt="' . $member_name . '" border="0" align="absmiddle" /> ' . $member_name . '</a>';
if($gcreator == $current_user->user_id)
{
if ($memberid->member_status=='active')
{
if($member_user_id == $current_user->user_id)
$member_display .= '<span id="groupadminlinksbutton"> <a href="javascript://" onclick=\'var replydisplay=document.getElementById("ls_groupadminlinks-'.$index.'").style.display ? "" : "none";document.getElementById("ls_groupadminlinks-'.$index.'").style.display = replydisplay;\'>'.$change_role.'</a></span><br/>';
else
$member_display .= '<span id="groupadminlinksbutton"> <a href="javascript://" onclick=\'var replydisplay=document.getElementById("ls_groupadminlinks-'.$index.'").style.display ? "" : "none";document.getElementById("ls_groupadminlinks-'.$index.'").style.display = replydisplay;\'>'.$change_role.'</a> <a href="'.my_base_url . my_pligg_base . '/join_group.php?activate=false&group_id='.$requestID.'&user_id='.$member_user_id.'">Freeze</a></span><br/>';
}
else
$member_display .= '<span id="groupadminlinksbutton"> <a href="'.my_base_url . my_pligg_base . '/join_group.php?activate=true&group_id='.$requestID.'&user_id='.$member_user_id.'">Activate</a></span><br/>';
}
$member_display .= '<span id="ls_groupadminlinks-'.$index.'" style="display:none">
<span class="rolelinks" id="ls_groupadminlinks-'.$index.'">
<a href="'.$member_adminchange_url.'">'.$role_admin.'</a>
<a href="'.$member_normalchange_url.'">'.$role_normal.'</a>
<a href="'.$member_moderatorchange_url.'">'.$role_moderator.'</a>
<a href="'.$member_flaggedchange_url.'">'.$role_flagged.'</a>
<a href="'.$member_bannedchange_url.'">'.$role_banned.'</a>
</span>
</span><br/><br/>';
$index=$index+1;
}
}
//echo $member_display;
$main_smarty->assign('member_display', $member_display);
}
//get the upcoming story for groups
function group_stories($requestID,$catId)
{
global $db,$main_smarty,$the_template,$page_size,$cached_links;
if (!is_numeric($requestID)) die();
$link = new Link;
$group_upcoming_display = "";
$group_published_display = "";
if ($catId)
{
$child_cats = '';
// do we also search the subcategories?
if(! Independent_Subcategories){
$child_array = '';
// get a list of all children and put them in $child_array.
children_id_to_array($child_array, table_categories, $catId);
if ($child_array != '') {
// build the sql
foreach($child_array as $child_cat_id) {
$child_cat_sql .= ' OR `link_category` = ' . $child_cat_id . ' ';
if (Multiple_Categories)
$child_cat_sql .= ' OR ac_cat_id = ' . $child_cat_id . ' ';
}
}
}
if (Multiple_Categories)
$child_cat_sql .= " OR ac_cat_id = $catId ";
$from_where .= " AND (link_category=$catId " . $child_cat_sql . ")";
}
$group_vote = group_check_to_publish($requestID);
if ($_GET['view'] == 'upcoming')
$from_where .= " AND link_votes<$group_vote AND link_status='queued'";
else
$from_where .= " AND ((link_votes >= $group_vote AND link_status = 'queued') OR link_status = 'published')";
$offset = (get_current_page()-1)*$page_size;
$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM " . table_links . " WHERE link_group_id = $requestID AND link_group_status!='discard' $from_where GROUP BY link_id ORDER BY link_published_date DESC, link_date DESC LIMIT $offset, $page_size";
// Search on additional categories
if ($catId && Multiple_Categories)
$sql = str_replace("WHERE", " LEFT JOIN ".table_additional_categories. " ON ac_link_id=link_id WHERE", $sql);
$links = $db->get_results($sql);
$rows = $db->get_var("SELECT FOUND_ROWS()");
if ($links) {
foreach($links as $dblink) {
$link->id=$dblink->link_id;
$cached_links[$dblink->link_id] = $dblink;
$link->read();
$group_display .= $link->print_summary('summary', true);
}
}
$main_smarty->assign('group_display', $group_display);
$main_smarty->assign('group_story_pagination', do_pages($rows, $page_size, 'group_story', true));
}
//get the shared story for groups
function group_shared($requestID,$catId)
{
global $db,$main_smarty,$the_template, $page_size,$cached_links;
if (!is_numeric($requestID)) die();
$link = new Link;
$group_shared_display = "";
if ($catId)
{
$child_cats = '';
// do we also search the subcategories?
if(! Independent_Subcategories){
$child_array = '';
// get a list of all children and put them in $child_array.
children_id_to_array($child_array, table_categories, $catId);
if ($child_array != '') {
// build the sql
foreach($child_array as $child_cat_id) {
$child_cat_sql .= ' OR `link_category` = ' . $child_cat_id . ' ';
if (Multiple_Categories)
$child_cat_sql .= ' OR ac_cat_id = ' . $child_cat_id . ' ';
}
}
}
if (Multiple_Categories)
$child_cat_sql .= " OR ac_cat_id = $catId ";
$from_where .= " AND (link_category=$catId " . $child_cat_sql . ")";
}
$offset = (get_current_page()-1)*$page_size;
$sql="SELECT SQL_CALC_FOUND_ROWS b.* FROM " . table_group_shared . " a
LEFT JOIN " . table_links . " b ON link_id=share_link_id
WHERE share_group_id = $requestID AND !ISNULL(link_id) $from_where
GROUP BY link_id
ORDER BY link_published_date DESC, link_date DESC LIMIT $offset, $page_size";
// Search on additional categories
if ($catId && Multiple_Categories)
$sql = str_replace("WHERE", " LEFT JOIN ".table_additional_categories. " ON ac_link_id=link_id WHERE", $sql);
$links = $db->get_results($sql);
$rows = $db->get_var("SELECT FOUND_ROWS()");
if ($links) {
foreach($links as $dblink) {
$link->id=$dblink->link_id;
$cached_links[$dblink->link_id] = $dblink;
$link->read();
$group_shared_display .= $link->print_summary('summary', true);
}
}
$main_smarty->assign('group_shared_display', $group_shared_display);
$main_smarty->assign('group_story_pagination', do_pages($rows, $page_size, 'group_story', true));
}
//displaying group as story
function group_print_summary($requestID)
{
global $db,$main_smarty,$the_template;
if (!is_numeric($requestID)) die();
$index = 0;
$group = $db->get_row("SELECT group_id,group_creator, group_status, group_members, group_date, group_name, group_safename, group_description, group_privacy, group_avatar FROM " . table_groups . " WHERE group_id = $requestID");
if($group)
{
$group_id=$group->group_id;
$group_name=$group->group_name;
$group_safename=$group->group_safename;
$group_description=$group->group_description;
$group_creator=$group->group_creator;
$group_status=$group->group_status;
$group_members=$group->group_members;
$group_date=$group->group_date;
$group_privacy=$group->group_privacy;
$group_avatar=$group->group_avatar;
//$group_date = date('M j, Y', $group->group_date);
$date = $db->get_var(" SELECT DATE_FORMAT(group_date, '%b, %e %Y') from ".table_groups . " WHERE group_id = $group->group_id");
//echo $date;
$group_date = $date;
//smarty variables
$main_smarty->assign('group_id', $group_id);
$main_smarty->assign('group_name', $group_name);
$main_smarty->assign('group_safename', $group_safename);
$main_smarty->assign('group_description', $group_description);
$main_smarty->assign('group_creator', $group_creator);
$main_smarty->assign('group_status', $group_status);
$main_smarty->assign('group_members', $group_members);
$main_smarty->assign('group_privacy', $group_privacy);
$main_smarty->assign('group_avatar', $group_avatar);
$main_smarty->assign('group_date', $group_date);
//get group avatar path
if($group_avatar == "uploaded" && file_exists(mnmpath."avatars/groups_uploaded/".$group_id."_".group_avatar_size_width.".jpg"))
$imgsrc = my_base_url . my_pligg_base."/avatars/groups_uploaded/".$group_id."_".group_avatar_size_width.".jpg";
else
$imgsrc = my_base_url . my_pligg_base."/templates/".$the_template."/images/group_large.gif";
$main_smarty->assign('imgsrc', $imgsrc);
//get group creator and his url
$g_name = get_group_username($group_creator);
$main_smarty->assign('group_submitter', $g_name);
$submitter_profile_url = getmyurl('user', $g_name);
$main_smarty->assign('submitter_profile_url', $submitter_profile_url);
$main_smarty->assign('group_avatar_url', getmyurl('group_avatar', $group_id));
//check group admin
global $current_user;
if($current_user->user_id == $group_creator){$main_smarty->assign('is_group_admin', 1);}
//language
$lang_Created_By = $main_smarty->get_config_vars("PLIGG_Visual_Group_Created_By");
$lang_Created_On = $main_smarty->get_config_vars("PLIGG_Visual_Group_Created_On");
$lang_Member = $main_smarty->get_config_vars("PLIGG_Visual_Group_Member");
//check member
//include_once(mnminclude.'group.php');
$main_smarty->assign('is_group_member', isMember($group_id));
// Joining and unjoining member links
// Set the url to an empty string if the user has already joined the maximum
// allowable number of groups
if (reached_max_joinable_groups($db, $current_user))
$join_url = '';
else
$join_url = getmyurl("join_group",$group_id);
$main_smarty->assign('join_group_url',$join_url);
$main_smarty->assign('unjoin_group_url',getmyurl("unjoin_group",$group_id));
//check logged or not
$main_smarty->assign('user_logged_in', $current_user->user_login);
//sidebar
$main_smarty = do_sidebar($main_smarty);
//$main_smarty->assign('form_action', $_SERVER["PHP_SELF"]);
$group_story_url = getmyurl("group_story_title", $group_safename);
$main_smarty->assign('group_story_url', $group_story_url);
$group_edit_url = getmyurl("editgroup", $group_id);
$group_delete_url = getmyurl("deletegroup", $group_id);
$group_output .= $main_smarty->fetch(The_Template . '/group_summary.tpl');
$index++;
}
return $group_output;
}
?>