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;
    }
}
Exemple #2
0
 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);
 }
Exemple #3
0
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;
}
Exemple #4
0
 /**
  * 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;
 }
Exemple #5
0
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;
    }
}
Exemple #6
0
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;
 }
Exemple #8
0
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;
}
Exemple #9
0
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);
}
Exemple #10
0
/**
 * @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;
}
Exemple #11
0
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;
}