X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fviewcontacts.php;h=d36ea96c7de00248a5e6a572fb0c4ee684ecceeb;hb=c4038e7af15442d8bca8c7d7818ffbb9b02a0521;hp=3fd5d79e1b4ae16cfaa12739745656617d53b3d9;hpb=abff6372ddd09be7750b5f1af5a1f889cfeb9635;p=friendica.git diff --git a/mod/viewcontacts.php b/mod/viewcontacts.php index 3fd5d79e1b..d36ea96c7d 100644 --- a/mod/viewcontacts.php +++ b/mod/viewcontacts.php @@ -1,124 +1,120 @@ L10n::t('Access denied.')]); } - nav_set_selected('home'); - - if($a->argc > 1) { - $nick = $a->argv[1]; - $r = q("SELECT * FROM `user` WHERE `nickname` = '%s' AND `blocked` = 0 LIMIT 1", - dbesc($nick) - ); - - if (! dbm::is_result($r)) { - return; - } + if ($a->argc < 2) { + System::httpExit(403, ["title" => L10n::t('Access denied.')]); + } - $a->data['user'] = $r[0]; - $a->profile_uid = $r[0]['uid']; - $is_owner = (local_user() && (local_user() == $a->profile_uid)); + Nav::setSelected('home'); - profile_load($a,$a->argv[1]); + $user = DBA::selectFirst('user', [], ['nickname' => $a->argv[1], 'blocked' => false]); + if (!DBA::isResult($user)) { + System::httpExit(404, ["title" => L10n::t('Page not found.')]); } -} + $a->data['user'] = $user; + $a->profile_uid = $user['uid']; -function viewcontacts_content(&$a) { - require_once("mod/proxy.php"); + Profile::load($a, $a->argv[1]); +} - if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) { - notice( t('Public access denied.') . EOL); +function viewcontacts_content(App $a) +{ + if (Config::get('system', 'block_public') && !local_user() && !remote_user()) { + notice(L10n::t('Public access denied.') . EOL); return; } - $o = ""; + $is_owner = $a->profile['profile_uid'] == local_user(); // tabs - $o .= profile_tabs($a,$is_owner, $a->data['user']['nickname']); + $o = Profile::getTabs($a, $is_owner, $a->data['user']['nickname']); - if(((! count($a->profile)) || ($a->profile['hide-friends']))) { - notice( t('Permission denied.') . EOL); + if (!count($a->profile) || $a->profile['hide-friends']) { + notice(L10n::t('Permission denied.') . EOL); return $o; } - $r = q("SELECT COUNT(*) AS `total` FROM `contact` - WHERE `uid` = %d AND (NOT `blocked` OR `pending`) AND NOT `hidden` AND NOT `archive` - AND `network` IN ('%s', '%s', '%s')", - intval($a->profile['uid']), - dbesc(NETWORK_DFRN), - dbesc(NETWORK_DIASPORA), - dbesc(NETWORK_OSTATUS) - ); - if (dbm::is_result($r)) - $a->set_pager_total($r[0]['total']); - - $r = q("SELECT * FROM `contact` - WHERE `uid` = %d AND (NOT `blocked` OR `pending`) AND NOT `hidden` AND NOT `archive` - AND `network` IN ('%s', '%s', '%s') - ORDER BY `name` ASC LIMIT %d, %d", - intval($a->profile['uid']), - dbesc(NETWORK_DFRN), - dbesc(NETWORK_DIASPORA), - dbesc(NETWORK_OSTATUS), - intval($a->pager['start']), - intval($a->pager['itemspage']) - ); - if (!dbm::is_result($r)) { - info(t('No contacts.').EOL); + $condition = [ + 'uid' => $a->profile['uid'], + 'blocked' => false, + 'pending' => false, + 'hidden' => false, + 'archive' => false, + 'network' => [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS] + ]; + + $total = DBA::count('count', $condition); + + $pager = new Pager($a->query_string); + + $params = ['order' => ['name' => false], 'limit' => [$pager->getStart(), $pager->getItemsPerPage()]]; + + $contacts_stmt = DBA::select('contact', [], $condition, $params); + + if (!DBA::isResult($contacts_stmt)) { + info(L10n::t('No contacts.') . EOL); return $o; } - $contacts = array(); + $contacts = []; - foreach($r as $rr) { - if($rr['self']) + while ($contact = DBA::fetch($contacts_stmt)) { + /// @TODO This triggers an E_NOTICE if 'self' is not there + if ($contact['self']) { continue; + } - $url = $rr['url']; - - // route DFRN profiles through the redirect - - $is_owner = ((local_user() && ($a->profile['profile_uid'] == local_user())) ? true : false); - - if($is_owner && ($rr['network'] === NETWORK_DFRN) && ($rr['rel'])) - $url = 'redir/' . $rr['id']; - else - $url = zrl($url); - - $contact_details = get_contact_details_by_url($rr['url'], $a->profile['uid'], $rr); - - $contacts[] = array( - 'id' => $rr['id'], - 'img_hover' => sprintf( t('Visit %s\'s profile [%s]'), $contact_details['name'], $rr['url']), - 'photo_menu' => contact_photo_menu($rr), - 'thumb' => proxy_url($contact_details['thumb'], false, PROXY_SIZE_THUMB), - 'name' => htmlentities(substr($contact_details['name'],0,20)), - 'username' => htmlentities($contact_details['name']), - 'details' => $contact_details['location'], - 'tags' => $contact_details['keywords'], - 'about' => $contact_details['about'], - 'account_type' => account_type($contact_details), - 'url' => $url, - 'sparkle' => '', - 'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']), - 'network' => network_to_name($rr['network'], $rr['url']), - ); + $contact_details = Contact::getDetailsByURL($contact['url'], $a->profile['uid'], $contact); + + $contacts[] = [ + 'id' => $contact['id'], + 'img_hover' => L10n::t('Visit %s\'s profile [%s]', $contact_details['name'], $contact['url']), + 'photo_menu' => Contact::photoMenu($contact), + 'thumb' => ProxyUtils::proxifyUrl($contact_details['thumb'], false, ProxyUtils::SIZE_THUMB), + 'name' => substr($contact_details['name'], 0, 20), + 'username' => $contact_details['name'], + 'details' => $contact_details['location'], + 'tags' => $contact_details['keywords'], + 'about' => $contact_details['about'], + 'account_type' => Contact::getAccountType($contact_details), + 'url' => Contact::magicLink($contact['url']), + 'sparkle' => '', + 'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $contact['url']), + 'network' => ContactSelector::networkToName($contact['network'], $contact['url']), + ]; } + DBA::close($contacts_stmt); - $tpl = get_markup_template("viewcontact_template.tpl"); - $o .= replace_macros($tpl, array( - '$title' => t('Contacts'), + $tpl = Renderer::getMarkupTemplate("viewcontact_template.tpl"); + $o .= Renderer::replaceMacros($tpl, [ + '$title' => L10n::t('Contacts'), '$contacts' => $contacts, - '$paginate' => paginate($a), - )); - + '$paginate' => $pager->renderFull($total), + ]); return $o; }