]> git.mxchange.org Git - friendica.git/blobdiff - include/Contact.php
Bugfix: probing failed when a profile was hidden
[friendica.git] / include / Contact.php
index f1e8bbe6d629ceb9728d74fa923ccad31ea7e414..6daba33844dc04c76c04668a194bb6b5a5538a38 100644 (file)
@@ -223,7 +223,7 @@ function get_contact_details_by_url($url, $uid = -1, $default = array()) {
        // Fetch the data from the gcontact table
        if (!$r)
                $r = q("SELECT 0 AS `id`, 0 AS `cid`, `id` AS `gid`, 0 AS `zid`, 0 AS `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, '' AS `xmpp`,
-                       `keywords`, `gender`, `photo`, `photo` AS `thumb`, `photo` AS `micro`, `community` AS `forum`, 0 AS `prv`, `community`, 0 AS `contact-type`, `birthday`, 0 AS `self`
+                       `keywords`, `gender`, `photo`, `photo` AS `thumb`, `photo` AS `micro`, `community` AS `forum`, 0 AS `prv`, `community`, `contact-type`, `birthday`, 0 AS `self`
                        FROM `gcontact` WHERE `nurl` = '%s'",
                                dbesc(normalise_link($url)));
 
@@ -687,12 +687,16 @@ function formatted_location($profile) {
 /**
  * @brief Returns the account type name
  *
- * The function be called with either the profile or the contct array
+ * The function can be called with either the user or the contact array
  *
- * @param array $contact contact or profile array
+ * @param array $contact contact or user array
  */
 function account_type($contact) {
 
+       // There are several fields that indicate that the contact or user is a forum
+       // "page-flags" is a field in the user table,
+       // "forum" and "prv" are used in the contact table. They stand for PAGE_COMMUNITY and PAGE_PRVGROUP.
+       // "community" is used in the gcontact table and is true if the contact is PAGE_COMMUNITY or PAGE_PRVGROUP.
        if((isset($contact['page-flags']) && (intval($contact['page-flags']) == PAGE_COMMUNITY))
                || (isset($contact['page-flags']) && (intval($contact['page-flags']) == PAGE_PRVGROUP))
                || (isset($contact['forum']) && intval($contact['forum']))
@@ -702,23 +706,26 @@ function account_type($contact) {
        else
                $type = ACCOUNT_TYPE_PERSON;
 
+       // The "contact-type" (contact table) and "account-type" (user table) are more general then the chaos from above.
        if (isset($contact["contact-type"]))
                $type = $contact["contact-type"];
        if (isset($contact["account-type"]))
                $type = $contact["account-type"];
 
-       if ($type != 0)
-               switch($type) {
-                       case ACCOUNT_TYPE_ORGANISATION:
-                               $account_type = t("Organisation");
-                                break;
-                       case ACCOUNT_TYPE_NEWS:
-                               $account_type = t('News');
-                               break;
-                       case ACCOUNT_TYPE_COMMUNITY:
-                               $account_type = t("Forum");
-                               break;
-               }
+       switch($type) {
+               case ACCOUNT_TYPE_ORGANISATION:
+                       $account_type = t("Organisation");
+                       break;
+               case ACCOUNT_TYPE_NEWS:
+                       $account_type = t('News');
+                       break;
+               case ACCOUNT_TYPE_COMMUNITY:
+                       $account_type = t("Forum");
+                       break;
+               default:
+                       $account_type = "";
+                       break;
+       }
 
        return $account_type;
 }