/** * Fetches groups that the current user is a member of * If iconview is false, then the info for the listview will be fetched. * * @param boolean $iconview Selects info for the icon view * @return array Array of groupinfos */ function fetch_socialgroups_mygroups($iconview = true) { global $vbulletin; $result = $vbulletin->db->query_read_slave("\n\t\tSELECT socialgroup.*, socialgroup.dateline AS createdate,\n\t\t\tsocialgroupmember.type AS membertype,\n\t\t\tgroupread.readtime" . ($iconview ? ",sgicon.dateline AS icondateline, sgicon.thumbnail_width AS iconthumb_width, sgicon.thumbnail_height AS iconthumb_height" : ',socialgroupmember.dateline AS joindate, socialgroupmember.type AS membertype, sgc.title AS categoryname, sgc.socialgroupcategoryid AS categoryid') . "\n\t\tFROM " . TABLE_PREFIX . "socialgroupmember AS socialgroupmember\n\t\tINNER JOIN " . TABLE_PREFIX . "socialgroup AS socialgroup ON (socialgroup.groupid = socialgroupmember.groupid)\n\t\tLEFT JOIN " . TABLE_PREFIX . "groupread AS groupread ON (groupread.groupid = socialgroup.groupid\n\t\t\t\t\t\t\t\t\t\tAND groupread.userid = " . $vbulletin->userinfo['userid'] . ")" . ($iconview ? 'LEFT JOIN ' . TABLE_PREFIX . 'socialgroupicon AS sgicon ON sgicon.groupid = socialgroup.groupid' : 'INNER JOIN ' . TABLE_PREFIX . 'socialgroupcategory AS sgc ON (sgc.socialgroupcategoryid = socialgroup.socialgroupcategoryid)') . "\n\t\tWHERE socialgroupmember.userid = " . $vbulletin->userinfo['userid'] . " AND socialgroupmember.type = 'member'\n\t\tORDER BY socialgroupmember.dateline DESC\n\t"); $groups = array(); while ($group = $vbulletin->db->fetch_array($result)) { $group = prepare_socialgroup($group); if (!$iconview) { $group['delete_group'] = can_delete_group($group); $group['edit_group'] = can_edit_group($group); $group['leave_group'] = can_leave_group($group); $group['group_options'] = ($group['delete_group'] or $group['edit_group'] or $group['leave_group']); } $groups[] = $group; } $vbulletin->db->free_result($result); return $groups; }
break; case 'moderated': $leavephrase = $vbphrase['cancel_join_request']; break; } } $groupoptions['leave'] = $allowedtoleave ? 'alt1' : ''; $show['groupoptions'] = $allowedtoleave ? true : $show['groupoptions']; break; case 'edit': $allowedtoedit = can_edit_group($group); $groupoptions['edit'] = $allowedtoedit ? 'alt1' : ''; $show['groupoptions'] = $allowedtoedit ? true : $show['groupoptions']; break; case 'delete': $allowedtodelete = can_delete_group($group); $groupoptions['delete'] = $allowedtodelete ? 'alt1' : ''; $show['groupoptions'] = $allowedtodelete ? true : $show['groupoptions']; break; case 'manage': $allowedtomanage = fetch_socialgroup_modperm('caninvitemoderatemembers', $group); $groupoptions['manage'] = $allowedtomanage ? 'alt1' : ''; $show['groupoptions'] = $allowedtomanage ? true : $show['groupoptions']; break; case 'managemembers': $allowedtomanagemembers = fetch_socialgroup_modperm('canmanagemembers', $group); $groupoptions['managemembers'] = $allowedtomanagemembers ? 'alt1' : ''; $show['groupoptions'] = $allowedtomanagemembers ? true : $show['groupoptions']; break; } }
} if (!empty($group['membertype'])) { $currentmemberentry = $vbulletin->db->query_first("SELECT * FROM " . TABLE_PREFIX . "socialgroupmember WHERE userid = " . $vbulletin->userinfo['userid'] . " AND groupid = " . $vbulletin->GPC['groupid']); // remove us from the group if we're still in it if ($currentmemberentry) { $socialgroupmemberdm =& datamanager_init('SocialGroupMember', $vbulletin); $socialgroupmemberdm->set_existing($currentmemberentry); $socialgroupmemberdm->delete(); unset($socialgroupmemberdm); } } eval(print_standard_redirect('successfully_left_group')); } // ####################################################################### if ($_POST['do'] == 'dodelete') { if (!can_delete_group($group)) { print_no_permission(); } $socialgroupdm =& datamanager_init('SocialGroup', $vbulletin); $socialgroupdm->set_existing($group); $socialgroupdm->delete(); unset($socialgroupdm); if (!$group['is_owner'] and can_moderate(0, 'candeletesocialgroups')) { require_once DIR . '/includes/functions_log_error.php'; log_moderator_action($group, 'social_group_x_deleted', array($group['name'])); } $vbulletin->url = 'group.php' . $vbulletin->session->vars['sessionurl_q']; eval(print_standard_redirect('successfully_deleted_group')); } // ####################################################################### if ($_POST['do'] == 'dojoin') {
/** * Fetches groups recently updated * * @return array Array of groupinfos */ function fetch_socialgroups_updatedgroups() { global $vbulletin; $result = $vbulletin->db->query_read_slave(" SELECT socialgroup.*, socialgroup.dateline AS createdate, socialgroupmember.type AS membertype, socialgroupmember.dateline AS joindate, groupread.readtime ,sgicon.dateline AS icondateline, sgicon.thumbnail_width AS iconthumb_width, sgicon.thumbnail_height AS iconthumb_height ,sgc.title AS categoryname, sgc.socialgroupcategoryid AS categoryid FROM " . TABLE_PREFIX . "socialgroup AS socialgroup LEFT JOIN " . TABLE_PREFIX ."socialgroupmember AS socialgroupmember ON (socialgroup.groupid = socialgroupmember.groupid AND socialgroupmember.userid = " . $vbulletin->userinfo['userid'] . ") LEFT JOIN " . TABLE_PREFIX . "groupread AS groupread ON (groupread.groupid = socialgroup.groupid AND groupread.userid = " . $vbulletin->userinfo['userid'] . ") LEFT JOIN " . TABLE_PREFIX . "socialgroupicon AS sgicon ON sgicon.groupid = socialgroup.groupid INNER JOIN " . TABLE_PREFIX . "socialgroupcategory AS sgc ON (sgc.socialgroupcategoryid = socialgroup.socialgroupcategoryid) ORDER BY socialgroup.lastupdate DESC LIMIT 0, 10 "); $groups = array(); while ($group = $vbulletin->db->fetch_array($result)) { $group['delete_group'] = can_delete_group($group); $group['edit_group'] = can_edit_group($group); $group['leave_group'] = can_leave_group($group); $group['group_options'] = ($group['delete_group'] OR $group['edit_group'] OR $group['leave_group']); $groups[] = $group; } $vbulletin->db->free_result($result); return $groups; }
/** * Fetches groups recently updated * * @return array Array of groupinfos */ function fetch_socialgroups_updatedgroups() { global $vbulletin; $hook_query_fields = $hook_query_joins = $hook_query_where = ''; ($hook = vBulletinHook::fetch_hook('group_updatedgroups_query')) ? eval($hook) : false; $result = $vbulletin->db->query_read_slave("\n\t\tSELECT socialgroup.*, socialgroup.dateline AS createdate,\n\t\t\tsocialgroupmember.type AS membertype, socialgroupmember.dateline AS joindate,\n\t\t\tgroupread.readtime\n\t\t\t,sgicon.dateline AS icondateline, sgicon.thumbnail_width AS iconthumb_width, sgicon.thumbnail_height AS iconthumb_height\n\t\t\t,sgc.title AS categoryname, sgc.socialgroupcategoryid AS categoryid\n\t\t{$hook_query_fields}\n\t\tFROM " . TABLE_PREFIX . "socialgroup AS socialgroup\n\t\tLEFT JOIN " . TABLE_PREFIX . "socialgroupmember AS socialgroupmember\n\t\t\tON (socialgroup.groupid = socialgroupmember.groupid AND socialgroupmember.userid = " . $vbulletin->userinfo['userid'] . ")\n\t\tLEFT JOIN " . TABLE_PREFIX . "groupread AS groupread ON (groupread.groupid = socialgroup.groupid\n\t\t\t\t\t\t\t\t\t\tAND groupread.userid = " . $vbulletin->userinfo['userid'] . ")\n\t\tLEFT JOIN " . TABLE_PREFIX . "socialgroupicon AS sgicon ON sgicon.groupid = socialgroup.groupid\n\t\tINNER JOIN " . TABLE_PREFIX . "socialgroupcategory AS sgc ON (sgc.socialgroupcategoryid = socialgroup.socialgroupcategoryid)\n\t\t{$hook_query_joins}\n\t\t{$hook_query_where}\n\t\tORDER BY socialgroup.lastupdate DESC\n\t\tLIMIT 0, 10\n\t"); $groups = array(); while ($group = $vbulletin->db->fetch_array($result)) { $group['delete_group'] = can_delete_group($group); $group['edit_group'] = can_edit_group($group); $group['leave_group'] = can_leave_group($group); $group['group_options'] = ($group['delete_group'] or $group['edit_group'] or $group['leave_group']); $groups[] = $group; } $vbulletin->db->free_result($result); return $groups; }