function forumlist_profile_advanced($a, &$b) { $a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/forumlist/forumlist.css' . '" media="all" />' . "\r\n"; $profile = intval(get_pconfig($a->profile['profile_uid'], 'forumlist', 'show_on_profile')); if (!$profile) { return; } $forumlist = '<div id="forumlist-profile"> <div class="title">' . t("Forums:") . '</div> <div id="profile-forumlist-list">'; // place holder in case somebody wants configurability $show_total = 9999; $randomise = true; $contacts = forumlist_getpage($a->user['uid'], false, $randomise, false); $total_shown = 0; $more = false; foreach ($contacts as $contact) { $forumlist .= micropro($contact, false, 'forumlist-profile-advanced'); $total_shown++; if ($total_shown == $show_total) { break; } } $forumlist .= '</div></div><div class="clear"></div>'; if (count($contacts) > 0) { $b .= $forumlist; } }
function get() { $change = false; logger('mod_group: ' . \App::$cmd, LOGGER_DEBUG); if (!local_channel()) { notice(t('Permission denied') . EOL); return; } // Switch to text mode interface if we have more than 'n' contacts or group members $switchtotext = get_pconfig(local_channel(), 'system', 'groupedit_image_limit'); if ($switchtotext === false) { $switchtotext = get_config('system', 'groupedit_image_limit'); } if ($switchtotext === false) { $switchtotext = 400; } $tpl = get_markup_template('group_edit.tpl'); $context = array('$submit' => t('Submit')); if (argc() == 2 && argv(1) === 'new') { return replace_macros($tpl, $context + array('$title' => t('Create a group of channels.'), '$gname' => array('groupname', t('Privacy group name: '), '', ''), '$gid' => 'new', '$public' => array('public', t('Members are visible to other channels'), false, ''), '$form_security_token' => get_form_security_token("group_edit"))); } if (argc() == 3 && argv(1) === 'drop') { check_form_security_token_redirectOnErr('/group', 'group_drop', 't'); if (intval(argv(2))) { $r = q("SELECT `name` FROM `groups` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval(argv(2)), intval(local_channel())); if ($r) { $result = group_rmv(local_channel(), $r[0]['gname']); } if ($result) { info(t('Privacy group removed.') . EOL); } else { notice(t('Unable to remove privacy group.') . EOL); } } goaway(z_root() . '/group'); // NOTREACHED } if (argc() > 2 && intval(argv(1)) && argv(2)) { check_form_security_token_ForbiddenOnErr('group_member_change', 't'); $r = q("SELECT abook_xchan from abook left join xchan on abook_xchan = xchan_hash where abook_xchan = '%s' and abook_channel = %d and xchan_deleted = 0 and abook_self = 0 and abook_blocked = 0 and abook_pending = 0 limit 1", dbesc(base64url_decode(argv(2))), intval(local_channel())); if (count($r)) { $change = base64url_decode(argv(2)); } } if (argc() > 1 && intval(argv(1))) { require_once 'include/acl_selectors.php'; $r = q("SELECT * FROM `groups` WHERE `id` = %d AND `uid` = %d AND `deleted` = 0 LIMIT 1", intval(argv(1)), intval(local_channel())); if (!$r) { notice(t('Privacy group not found.') . EOL); goaway(z_root() . '/connections'); } $group = $r[0]; $members = group_get_members($group['id']); $preselected = array(); if (count($members)) { foreach ($members as $member) { if (!in_array($member['xchan_hash'], $preselected)) { $preselected[] = $member['xchan_hash']; } } } if ($change) { if (in_array($change, $preselected)) { group_rmv_member(local_channel(), $group['gname'], $change); } else { group_add_member(local_channel(), $group['gname'], $change); } $members = group_get_members($group['id']); $preselected = array(); if (count($members)) { foreach ($members as $member) { $preselected[] = $member['xchan_hash']; } } } $drop_tpl = get_markup_template('group_drop.tpl'); $drop_txt = replace_macros($drop_tpl, array('$id' => $group['id'], '$delete' => t('Delete'), '$form_security_token' => get_form_security_token("group_drop"))); $context = $context + array('$title' => t('Privacy group editor'), '$gname' => array('groupname', t('Privacy group name: '), $group['gname'], ''), '$gid' => $group['id'], '$drop' => $drop_txt, '$public' => array('public', t('Members are visible to other channels'), $group['visible'], ''), '$form_security_token' => get_form_security_token('group_edit')); } if (!isset($group)) { return; } $groupeditor = array('label_members' => t('Members'), 'members' => array(), 'label_contacts' => t('All Connected Channels'), 'contacts' => array()); $sec_token = addslashes(get_form_security_token('group_member_change')); $textmode = $switchtotext && count($members) > $switchtotext ? true : false; foreach ($members as $member) { if ($member['xchan_url']) { $member['archived'] = intval($member['abook_archived']) ? true : false; $member['click'] = 'groupChangeMember(' . $group['id'] . ',\'' . base64url_encode($member['xchan_hash']) . '\',\'' . $sec_token . '\'); return false;'; $groupeditor['members'][] = micropro($member, true, 'mpgroup', $textmode); } else { group_rmv_member(local_channel(), $group['gname'], $member['xchan_hash']); } } $r = q("SELECT abook.*, xchan.* FROM `abook` left join xchan on abook_xchan = xchan_hash WHERE `abook_channel` = %d AND abook_self = 0 and abook_blocked = 0 and abook_pending = 0 and xchan_deleted = 0 order by xchan_name asc", intval(local_channel())); if (count($r)) { $textmode = $switchtotext && count($r) > $switchtotext ? true : false; foreach ($r as $member) { if (!in_array($member['xchan_hash'], $preselected)) { $member['archived'] = intval($member['abook_archived']) ? true : false; $member['click'] = 'groupChangeMember(' . $group['id'] . ',\'' . base64url_encode($member['xchan_hash']) . '\',\'' . $sec_token . '\'); return false;'; $groupeditor['contacts'][] = micropro($member, true, 'mpall', $textmode); } } } $context['$groupeditor'] = $groupeditor; $context['$desc'] = t('Click on a channel to add or remove.'); if ($change) { $tpl = get_markup_template('groupeditor.tpl'); echo replace_macros($tpl, $context); killme(); } return replace_macros($tpl, $context); }
function contact_block() { $o = ''; $a = get_app(); if (!$a->profile['uid']) { return; } if (!perm_is_allowed($a->profile['uid'], get_observer_hash(), 'view_contacts')) { return; } $shown = get_pconfig($a->profile['uid'], 'system', 'display_friend_count'); if ($shown === false) { $shown = 25; } if ($shown == 0) { return; } $is_owner = local_channel() && local_channel() == $a->profile['uid'] ? true : false; $sql_extra = ''; $abook_flags = " and abook_pending = 0 and abook_self = 0 "; if (!$is_owner) { $abook_flags .= " and abook_hidden = 0 "; $sql_extra = " and xchan_hidden = 0 "; } if (!is_array($a->profile) || $a->profile['hide_friends']) { return $o; } $r = q("SELECT COUNT(abook_id) AS total FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d\n\t\t{$abook_flags} and xchan_orphan = 0 and xchan_deleted = 0 {$sql_extra}", intval($a->profile['uid'])); if (count($r)) { $total = intval($r[0]['total']); } if (!$total) { $contacts = t('No connections'); $micropro = null; } else { $randfunc = db_getfunc('RAND'); $r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash WHERE abook_channel = %d {$abook_flags} and abook_archived = 0 and xchan_orphan = 0 and xchan_deleted = 0 {$sql_extra} ORDER BY {$randfunc} LIMIT %d", intval($a->profile['uid']), intval($shown)); if (count($r)) { $contacts = sprintf(tt('%d Connection', '%d Connections', $total), $total); $micropro = array(); foreach ($r as $rr) { $rr['archived'] = intval($rr['abook_archived']) ? true : false; $micropro[] = micropro($rr, true, 'mpfriend'); } } } $tpl = get_markup_template('contact_block.tpl'); $o = replace_macros($tpl, array('$contacts' => $contacts, '$nickname' => $a->profile['channel_address'], '$viewconnections' => t('View Connections'), '$micropro' => $micropro)); $arr = array('contacts' => $r, 'output' => $o); call_hooks('contact_block_end', $arr); return $o; }
/** * Get html for contact block. * * @template contact_block.tpl * @hook contact_block_end (contacts=>array, output=>string) * @return string */ function contact_block() { $o = ''; $a = get_app(); $shown = get_pconfig($a->profile['uid'], 'system', 'display_friend_count'); if ($shown === false) { $shown = 24; } if ($shown == 0) { return; } if (!is_array($a->profile) || $a->profile['hide-friends']) { return $o; } $r = q("SELECT COUNT(*) AS `total` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0 AND `hidden` = 0 AND `archive` = 0", intval($a->profile['uid'])); if (count($r)) { $total = intval($r[0]['total']); } if (!$total) { $contacts = t('No contacts'); $micropro = Null; } else { $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0 AND `hidden` = 0 AND `archive` = 0 ORDER BY RAND() LIMIT %d", intval($a->profile['uid']), intval($shown)); if (count($r)) { $contacts = sprintf(tt('%d Contact', '%d Contacts', $total), $total); $micropro = array(); foreach ($r as $rr) { $micropro[] = micropro($rr, true, 'mpfriend'); } } } $tpl = get_markup_template('contact_block.tpl'); $o = replace_macros($tpl, array('$contacts' => $contacts, '$nickname' => $a->profile['nickname'], '$viewcontacts' => t('View Contacts'), '$micropro' => $micropro)); $arr = array('contacts' => $r, 'output' => $o); call_hooks('contact_block_end', $arr); return $o; }
function page_profile_advanced($a, &$b) { $profile = intval(get_pconfig($a->profile['profile_uid'], 'page', 'show_on_profile')); if (!$profile) { return; } $page = '<div id="page-profile"> <div class="title">' . t("Forums:") . '</div> <div id="profile-page-list">'; // place holder in case somebody wants configurability $show_total = 9999; $randomise = true; $contacts = page_getpage($a->user['uid'], false, $randomise); $total_shown = 0; $more = false; foreach ($contacts as $contact) { $page .= micropro($contact, false, 'page-profile-advanced'); $total_shown++; if ($total_shown == $show_total) { break; } } $page .= '</div></div><div class="clear"></div>'; if (count($contacts) > 0) { $b .= $page; } }
function contact_block() { $o = ''; $a = get_app(); if (!$a->profile['uid']) { return; } if (!perm_is_allowed($a->profile['uid'], get_observer_hash(), 'view_contacts')) { return; } $shown = get_pconfig($a->profile['uid'], 'system', 'display_friend_count'); if ($shown === false) { $shown = 25; } if ($shown == 0) { return; } $is_owner = local_channel() && local_channel() == $a->profile['uid'] ? true : false; $abook_flags = ABOOK_FLAG_PENDING | ABOOK_FLAG_SELF; $xchan_flags = XCHAN_FLAGS_ORPHAN | XCHAN_FLAGS_DELETED; if (!$is_owner) { $abook_flags = $abook_flags | ABOOK_FLAG_HIDDEN; $xchan_flags = $xchan_flags | XCHAN_FLAGS_HIDDEN; } if (!is_array($a->profile) || $a->profile['hide_friends']) { return $o; } $r = q("SELECT COUNT(abook_id) AS total FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d and ( abook_flags & %d ) = 0 and ( xchan_flags & %d ) = 0", intval($a->profile['uid']), intval($abook_flags), intval($xchan_flags)); if (count($r)) { $total = intval($r[0]['total']); } if (!$total) { $contacts = t('No connections'); $micropro = null; } else { $randfunc = db_getfunc('RAND'); $r = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash WHERE abook_channel = %d AND ( abook_flags & %d ) = 0 and ( xchan_flags & %d ) = 0 ORDER BY {$randfunc} LIMIT %d", intval($a->profile['uid']), intval($abook_flags | ABOOK_FLAG_ARCHIVED), intval($xchan_flags), intval($shown)); if (count($r)) { $contacts = sprintf(tt('%d Connection', '%d Connections', $total), $total); $micropro = array(); foreach ($r as $rr) { $rr['archived'] = $rr['abook_flags'] & ABOOK_FLAG_ARCHIVED ? true : false; $micropro[] = micropro($rr, true, 'mpfriend'); } } } $tpl = get_markup_template('contact_block.tpl'); $o = replace_macros($tpl, array('$contacts' => $contacts, '$nickname' => $a->profile['channel_address'], '$viewconnections' => t('View Connections'), '$micropro' => $micropro)); $arr = array('contacts' => $r, 'output' => $o); call_hooks('contact_block_end', $arr); return $o; }
function get() { if (!local_channel()) { notice(t('Permission denied') . EOL); return; } if (argc() < 2) { notice(t('Invalid profile identifier.') . EOL); return; } // Switch to text mod interface if we have more than 'n' contacts or group members $switchtotext = get_pconfig(local_channel(), 'system', 'groupedit_image_limit'); if ($switchtotext === false) { $switchtotext = get_config('system', 'groupedit_image_limit'); } if ($switchtotext === false) { $switchtotext = 400; } if (argc() > 2 && intval(argv(1)) && intval(argv(2))) { $r = q("SELECT abook_id FROM abook WHERE abook_id = %d and abook_channel = %d limit 1", intval(argv(2)), intval(local_channel())); if ($r) { $change = intval(argv(2)); } } if (argc() > 1 && intval(argv(1))) { $r = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d AND `is_default` = 0 LIMIT 1", intval(argv(1)), intval(local_channel())); if (!$r) { notice(t('Invalid profile identifier.') . EOL); return; } $profile = $r[0]; $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d AND abook_profile = '%s'", intval(local_channel()), dbesc($profile['profile_guid'])); $ingroup = array(); if ($r) { foreach ($r as $member) { $ingroup[] = $member['abook_id']; } } $members = $r; if ($change) { if (in_array($change, $ingroup)) { q("UPDATE abook SET abook_profile = '' WHERE abook_id = %d AND abook_channel = %d", intval($change), intval(local_channel())); } else { q("UPDATE abook SET abook_profile = '%s' WHERE abook_id = %d AND abook_channel = %d", dbesc($profile['profile_guid']), intval($change), intval(local_channel())); } //Time to update the permissions on the profile-pictures as well profile_photo_set_profile_perms($profile['id']); $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d AND abook_profile = '%s'", intval(local_channel()), dbesc($profile['profile_guid'])); $members = $r; $ingroup = array(); if (count($r)) { foreach ($r as $member) { $ingroup[] = $member['abook_id']; } } } $o .= '<h2>' . t('Profile Visibility Editor') . '</h2>'; $o .= '<h3>' . t('Profile') . ' \'' . $profile['profile_name'] . '\'</h3>'; $o .= '<div id="prof-edit-desc">' . t('Click on a contact to add or remove.') . '</div>'; } $o .= '<div id="prof-update-wrapper">'; if ($change) { $o = ''; } $o .= '<div id="prof-members-title">'; $o .= '<h3>' . t('Visible To') . '</h3>'; $o .= '</div>'; $o .= '<div id="prof-members">'; $textmode = $switchtotext && count($members) > $switchtotext ? true : false; foreach ($members as $member) { if ($member['xchan_url']) { $member['click'] = 'profChangeMember(' . $profile['id'] . ',' . $member['abook_id'] . '); return false;'; $o .= micropro($member, true, 'mpprof', $textmode); } } $o .= '</div><div id="prof-members-end"></div>'; $o .= '<hr id="prof-separator" />'; $o .= '<div id="prof-all-contcts-title">'; $o .= '<h3>' . t("All Connections") . '</h3>'; $o .= '</div>'; $o .= '<div id="prof-all-contacts">'; $r = abook_connections(local_channel()); if ($r) { $textmode = $switchtotext && count($r) > $switchtotext ? true : false; foreach ($r as $member) { if (!in_array($member['abook_id'], $ingroup)) { $member['click'] = 'profChangeMember(' . $profile['id'] . ',' . $member['abook_id'] . '); return false;'; $o .= micropro($member, true, 'mpprof', $textmode); } } } $o .= '</div><div id="prof-all-contacts-end"></div>'; if ($change) { echo $o; killme(); } $o .= '</div>'; return $o; }
function profperm_content(&$a) { if (!local_user()) { notice(t('Permission denied') . EOL); return; } if ($a->argc < 2) { notice(t('Invalid profile identifier.') . EOL); return; } // Switch to text mod interface if we have more than 'n' contacts or group members $switchtotext = get_pconfig(local_user(), 'system', 'groupedit_image_limit'); if ($switchtotext === false) { $switchtotext = get_config('system', 'groupedit_image_limit'); } if ($switchtotext === false) { $switchtotext = 400; } if ($a->argc > 2 && intval($a->argv[1]) && intval($a->argv[2])) { $r = q("SELECT `id` FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 AND `self` = 0\n\t\t\tAND `network` = '%s' AND `id` = %d AND `uid` = %d LIMIT 1", dbesc(NETWORK_DFRN), intval($a->argv[2]), intval(local_user())); if (count($r)) { $change = intval($a->argv[2]); } } if ($a->argc > 1 && intval($a->argv[1])) { $r = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d AND `is-default` = 0 LIMIT 1", intval($a->argv[1]), intval(local_user())); if (!count($r)) { notice(t('Invalid profile identifier.') . EOL); return; } $profile = $r[0]; $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `profile-id` = %d", intval(local_user()), intval($a->argv[1])); $ingroup = array(); if (count($r)) { foreach ($r as $member) { $ingroup[] = $member['id']; } } $members = $r; if ($change) { if (in_array($change, $ingroup)) { q("UPDATE `contact` SET `profile-id` = 0 WHERE `id` = %d AND `uid` = %d", intval($change), intval(local_user())); } else { q("UPDATE `contact` SET `profile-id` = %d WHERE `id` = %d AND `uid` = %d", intval($a->argv[1]), intval($change), intval(local_user())); } $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `profile-id` = %d", intval(local_user()), intval($a->argv[1])); $members = $r; $ingroup = array(); if (count($r)) { foreach ($r as $member) { $ingroup[] = $member['id']; } } } $o .= '<h2>' . t('Profile Visibility Editor') . '</h2>'; $o .= '<h3>' . t('Profile') . ' \'' . $profile['profile-name'] . '\'</h3>'; $o .= '<div id="prof-edit-desc">' . t('Click on a contact to add or remove.') . '</div>'; } $o .= '<div id="prof-update-wrapper">'; if ($change) { $o = ''; } $o .= '<div id="prof-members-title">'; $o .= '<h3>' . t('Visible To') . '</h3>'; $o .= '</div>'; $o .= '<div id="prof-members">'; $textmode = $switchtotext && count($members) > $switchtotext ? true : false; foreach ($members as $member) { if ($member['url']) { $member['click'] = 'profChangeMember(' . $profile['id'] . ',' . $member['id'] . '); return true;'; $o .= micropro($member, true, 'mpprof', $textmode); } } $o .= '</div><div id="prof-members-end"></div>'; $o .= '<hr id="prof-separator" />'; $o .= '<div id="prof-all-contcts-title">'; $o .= '<h3>' . t("All Contacts (with secure profile access)") . '</h3>'; $o .= '</div>'; $o .= '<div id="prof-all-contacts">'; $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 and `pending` = 0 and `self` = 0\n\t\t\tAND `network` = '%s' ORDER BY `name` ASC", intval(local_user()), dbesc(NETWORK_DFRN)); if (count($r)) { $textmode = $switchtotext && count($r) > $switchtotext ? true : false; foreach ($r as $member) { if (!in_array($member['id'], $ingroup)) { $member['click'] = 'profChangeMember(' . $profile['id'] . ',' . $member['id'] . '); return true;'; $o .= micropro($member, true, 'mpprof', $textmode); } } } $o .= '</div><div id="prof-all-contacts-end"></div>'; if ($change) { echo $o; killme(); } $o .= '</div>'; return $o; }
function group_content(&$a) { $change = false; if (!local_user()) { notice(t('Permission denied') . EOL); return; } // Switch to text mode interface if we have more than 'n' contacts or group members $switchtotext = get_pconfig(local_user(), 'system', 'groupedit_image_limit'); if ($switchtotext === false) { $switchtotext = get_config('system', 'groupedit_image_limit'); } if ($switchtotext === false) { $switchtotext = 400; } $tpl = get_markup_template('group_edit.tpl'); $context = array('$submit' => t('Submit')); if ($a->argc == 2 && $a->argv[1] === 'new') { return replace_macros($tpl, $context + array('$title' => t('Create a group of contacts/friends.'), '$gname' => array('groupname', t('Group Name: '), '', ''), '$gid' => 'new', '$form_security_token' => get_form_security_token("group_edit"))); } if ($a->argc == 3 && $a->argv[1] === 'drop') { check_form_security_token_redirectOnErr('/group', 'group_drop', 't'); if (intval($a->argv[2])) { $r = q("SELECT `name` FROM `group` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($a->argv[2]), intval(local_user())); if (count($r)) { $result = group_rmv(local_user(), $r[0]['name']); } if ($result) { info(t('Group removed.') . EOL); } else { notice(t('Unable to remove group.') . EOL); } } goaway($a->get_baseurl() . '/group'); // NOTREACHED } if ($a->argc > 2 && intval($a->argv[1]) && intval($a->argv[2])) { check_form_security_token_ForbiddenOnErr('group_member_change', 't'); $r = q("SELECT `id` FROM `contact` WHERE `id` = %d AND `uid` = %d and `self` = 0 and `blocked` = 0 AND `pending` = 0 LIMIT 1", intval($a->argv[2]), intval(local_user())); if (count($r)) { $change = intval($a->argv[2]); } } if ($a->argc > 1 && intval($a->argv[1])) { require_once 'include/acl_selectors.php'; $r = q("SELECT * FROM `group` WHERE `id` = %d AND `uid` = %d AND `deleted` = 0 LIMIT 1", intval($a->argv[1]), intval(local_user())); if (!count($r)) { notice(t('Group not found.') . EOL); goaway($a->get_baseurl() . '/contacts'); } $group = $r[0]; $members = group_get_members($group['id']); $preselected = array(); if (count($members)) { foreach ($members as $member) { $preselected[] = $member['id']; } } if ($change) { if (in_array($change, $preselected)) { group_rmv_member(local_user(), $group['name'], $change); } else { group_add_member(local_user(), $group['name'], $change); } $members = group_get_members($group['id']); $preselected = array(); if (count($members)) { foreach ($members as $member) { $preselected[] = $member['id']; } } } $drop_tpl = get_markup_template('group_drop.tpl'); $drop_txt = replace_macros($drop_tpl, array('$id' => $group['id'], '$delete' => t('Delete'), '$form_security_token' => get_form_security_token("group_drop"))); $celeb = $a->user['page-flags'] == PAGE_SOAPBOX || $a->user['page-flags'] == PAGE_COMMUNITY ? true : false; $context = $context + array('$title' => t('Group Editor'), '$gname' => array('groupname', t('Group Name: '), $group['name'], ''), '$gid' => $group['id'], '$drop' => $drop_txt, '$form_security_token' => get_form_security_token('group_edit')); } if (!isset($group)) { return; } $groupeditor = array('label_members' => t('Members'), 'members' => array(), 'label_contacts' => t('All Contacts'), 'contacts' => array()); $sec_token = addslashes(get_form_security_token('group_member_change')); $textmode = $switchtotext && count($members) > $switchtotext ? true : false; foreach ($members as $member) { if ($member['url']) { $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . ',\'' . $sec_token . '\'); return true;'; $groupeditor['members'][] = micropro($member, true, 'mpgroup', $textmode); } else { group_rmv_member(local_user(), $group['name'], $member['id']); } } $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 and `pending` = 0 and `self` = 0 ORDER BY `name` ASC", intval(local_user())); if (count($r)) { $textmode = $switchtotext && count($r) > $switchtotext ? true : false; foreach ($r as $member) { if (!in_array($member['id'], $preselected)) { $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . ',\'' . $sec_token . '\'); return true;'; $groupeditor['contacts'][] = micropro($member, true, 'mpall', $textmode); } } } $context['$groupeditor'] = $groupeditor; $context['$desc'] = t('Click on a contact to add or remove.'); if ($change) { $tpl = get_markup_template('groupeditor.tpl'); echo replace_macros($tpl, $context); killme(); } return replace_macros($tpl, $context); }
/** * @brief Format forumlist as contact block * * This function is used to show the forumlist in * the advanced profile. * * @param int $uid * @return string * */ function forumlist_profile_advanced($uid) { $profile = intval(feature_enabled($uid, 'forumlist_profile')); if (!$profile) { return; } $o = ''; // place holder in case somebody wants configurability $show_total = 9999; //don't sort by last updated item $lastitem = false; $contacts = get_forumlist($uid, false, $lastitem, false); $total_shown = 0; foreach ($contacts as $contact) { $forumlist .= micropro($contact, false, 'forumlist-profile-advanced'); $total_shown++; if ($total_shown == $show_total) { break; } } if (count($contacts) > 0) { $o .= $forumlist; } return $o; }
function group_content(&$a) { if (!local_user()) { notice(t('Permission denied') . EOL); return; } // Switch to text mod interface if we have more than 'n' contacts or group members $switchtotext = get_pconfig(local_user(), 'system', 'groupedit_image_limit'); if ($switchtotext === false) { $switchtotext = get_config('system', 'groupedit_image_limit'); } if ($switchtotext === false) { $switchtotext = 400; } if ($a->argc == 2 && $a->argv[1] === 'new') { $tpl = get_markup_template('group_new.tpl'); $o .= replace_macros($tpl, array('$desc' => t('Create a group of contacts/friends.'), '$name' => t('Group Name: '), '$submit' => t('Submit'))); return $o; } if ($a->argc == 3 && $a->argv[1] === 'drop') { if (intval($a->argv[2])) { $r = q("SELECT `name` FROM `group` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($a->argv[2]), intval(local_user())); if (count($r)) { $result = group_rmv(local_user(), $r[0]['name']); } if ($result) { info(t('Group removed.') . EOL); } else { notice(t('Unable to remove group.') . EOL); } } goaway($a->get_baseurl() . '/group'); // NOTREACHED } if ($a->argc > 2 && intval($a->argv[1]) && intval($a->argv[2])) { $r = q("SELECT `id` FROM `contact` WHERE `id` = %d AND `uid` = %d and `self` = 0 and `blocked` = 0 AND `pending` = 0 LIMIT 1", intval($a->argv[2]), intval(local_user())); if (count($r)) { $change = intval($a->argv[2]); } } if ($a->argc > 1 && intval($a->argv[1])) { require_once 'include/acl_selectors.php'; $r = q("SELECT * FROM `group` WHERE `id` = %d AND `uid` = %d AND `deleted` = 0 LIMIT 1", intval($a->argv[1]), intval(local_user())); if (!count($r)) { notice(t('Group not found.') . EOL); goaway($a->get_baseurl() . '/contacts'); } $group = $r[0]; $members = group_get_members($group['id']); $preselected = array(); if (count($members)) { foreach ($members as $member) { $preselected[] = $member['id']; } } if ($change) { if (in_array($change, $preselected)) { group_rmv_member(local_user(), $group['name'], $change); } else { group_add_member(local_user(), $group['name'], $change); } $members = group_get_members($group['id']); $preselected = array(); if (count($members)) { foreach ($members as $member) { $preselected[] = $member['id']; } } } $drop_tpl = get_markup_template('group_drop.tpl'); $drop_txt = replace_macros($drop_tpl, array('$id' => $group['id'], '$delete' => t('Delete'))); $celeb = $a->user['page-flags'] == PAGE_SOAPBOX || $a->user['page-flags'] == PAGE_COMMUNITY ? true : false; $tpl = get_markup_template('group_edit.tpl'); $o .= replace_macros($tpl, array('$gid' => $group['id'], '$name' => $group['name'], '$drop' => $drop_txt, '$desc' => t('Click on a contact to add or remove.'), '$title' => t('Group Editor'), '$gname' => t('Group Name: '), '$submit' => t('Submit'))); } if (!isset($group)) { return; } $o .= '<div id="group-update-wrapper">'; if ($change) { $o = ''; } $o .= '<h3>' . t('Members') . '</h3>'; $o .= '<div id="group-members">'; $textmode = $switchtotext && count($members) > $switchtotext ? true : false; foreach ($members as $member) { if ($member['url']) { $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;'; $o .= micropro($member, true, 'mpgroup', $textmode); } else { group_rmv_member(local_user(), $group['name'], $member['id']); } } $o .= '</div><div id="group-members-end"></div>'; $o .= '<hr id="group-separator" />'; $o .= '<h3>' . t('All Contacts') . '</h3>'; $o .= '<div id="group-all-contacts">'; $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 and `pending` = 0 and `self` = 0 ORDER BY `name` ASC", intval(local_user())); if (count($r)) { $textmode = $switchtotext && count($r) > $switchtotext ? true : false; foreach ($r as $member) { if (!in_array($member['id'], $preselected)) { $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;'; $o .= micropro($member, true, 'mpall', $textmode); } } } $o .= '</div><div id="group-all-contacts-end"></div>'; if ($change) { echo $o; killme(); } $o .= '</div>'; return $o; }