]> git.mxchange.org Git - friendica.git/blobdiff - mod/viewcontacts.php
Merge pull request #4106 from annando/registered-users
[friendica.git] / mod / viewcontacts.php
index a6bf74b2885df20042a8de26186029a12db00917..1b4ff69c00285ad4b61f6536b0f4db084d479774 100644 (file)
@@ -1,54 +1,95 @@
 <?php
+
+use Friendica\App;
+use Friendica\Core\Config;
+use Friendica\Database\DBM;
+use Friendica\Model\Contact;
+
 require_once('include/contact_selectors.php');
 
-function viewcontacts_init(&$a) {
+function viewcontacts_init(App $a) {
 
-       if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+       if((Config::get('system','block_public')) && (! local_user()) && (! remote_user())) {
                return;
        }
 
-       profile_load($a,$a->argv[1]);
-}
+       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;
+               }
 
+               $a->data['user'] = $r[0];
+               $a->profile_uid = $r[0]['uid'];
+               $is_owner = (local_user() && (local_user() == $a->profile_uid));
+
+               profile_load($a,$a->argv[1]);
+       }
+}
 
-function viewcontacts_content(&$a) {
 
+function viewcontacts_content(App $a) {
        require_once("mod/proxy.php");
 
-       if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+       if((Config::get('system','block_public')) && (! local_user()) && (! remote_user())) {
                notice( t('Public access denied.') . EOL);
                return;
        }
 
+       $o = "";
+
+       // tabs
+       $o .= profile_tabs($a,$is_owner, $a->data['user']['nickname']);
+
        if(((! count($a->profile)) || ($a->profile['hide-friends']))) {
                notice( t('Permission denied.') . EOL);
-               return;
+               return $o;
        }
 
-
-       $r = q("SELECT COUNT(*) as `total` FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `hidden` = 0 AND `archive` = 0 ",
-               intval($a->profile['uid'])
+       $r = q("SELECT COUNT(*) AS `total` FROM `contact`
+               WHERE `uid` = %d AND NOT `blocked` AND NOT `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(count($r))
+       if (DBM::is_result($r))
                $a->set_pager_total($r[0]['total']);
 
-       $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `hidden` = 0 AND `archive` = 0 ORDER BY `name` ASC LIMIT %d , %d ",
+       $r = q("SELECT * FROM `contact`
+               WHERE `uid` = %d AND NOT `blocked` AND NOT `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(! count($r)) {
-               info( t('No contacts.') . EOL );
+       if (!DBM::is_result($r)) {
+               info(t('No contacts.').EOL);
                return $o;
        }
 
        $contacts = array();
 
-       foreach($r as $rr) {
-               if($rr['self'])
+       foreach ($r as $rr) {
+               /// @TODO This triggers an E_NOTICE if 'self' is not there
+               if ($rr['self']) {
                        continue;
+               }
 
-           $url = $rr['url'];
+               $url = $rr['url'];
 
                // route DFRN profiles through the redirect
 
@@ -59,15 +100,22 @@ function viewcontacts_content(&$a) {
                else
                        $url = zrl($url);
 
+               $contact_details = Contact::getDetailsByURL($rr['url'], $a->profile['uid'], $rr);
+
                $contacts[] = array(
                        'id' => $rr['id'],
-                       'img_hover' => sprintf( t('Visit %s\'s profile [%s]'), $rr['name'], $rr['url']),
-                       'thumb' => proxy_url($rr['thumb'], false, PROXY_SIZE_THUMB),
-                       'name' => htmlentities(substr($rr['name'],0,20)),
-                       'username' => htmlentities($rr['name']),
+                       'img_hover' => sprintf( t('Visit %s\'s profile [%s]'), $contact_details['name'], $rr['url']),
+                       'photo_menu' => Contact::photoMenu($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'  => Contact::getAccountType($contact_details),
                        'url' => $url,
                        'sparkle' => '',
-                       'itemurl' => $rr['url'],
+                       'itemurl' => (($contact_details['addr'] != "") ? $contact_details['addr'] : $rr['url']),
                        'network' => network_to_name($rr['network'], $rr['url']),
                );
        }
@@ -75,7 +123,7 @@ function viewcontacts_content(&$a) {
 
        $tpl = get_markup_template("viewcontact_template.tpl");
        $o .= replace_macros($tpl, array(
-               '$title' => t('View Contacts'),
+               '$title' => t('Contacts'),
                '$contacts' => $contacts,
                '$paginate' => paginate($a),
        ));