]> git.mxchange.org Git - friendica.git/blobdiff - mod/poco.php
Merge remote-tracking branch 'upstream/develop' into 1702-detect-server
[friendica.git] / mod / poco.php
index 372f5b45b60ef40ddcd73c81b07249282ac5aa23..422bfe5b7c88e0957b3842c54840fefb869d2fa0 100644 (file)
@@ -1,6 +1,8 @@
 <?php
+// See here for a documentation for portable contacts:
+// https://web.archive.org/web/20160405005550/http://portablecontacts.net/draft-spec.html
 
-function poco_init(&$a) {
+function poco_init(App $a) {
        require_once("include/bbcode.php");
 
        $system_mode = false;
@@ -14,8 +16,9 @@ function poco_init(&$a) {
        }
        if(! x($user)) {
                $c = q("SELECT * FROM `pconfig` WHERE `cat` = 'system' AND `k` = 'suggestme' AND `v` = 1");
-               if(! count($c))
+               if (! dbm::is_result($c)) {
                        http_status_exit(401);
+               }
                $system_mode = true;
        }
 
@@ -24,6 +27,12 @@ function poco_init(&$a) {
        $justme = false;
        $global = false;
 
+       if($a->argc > 1 && $a->argv[1] === '@server') {
+               $ret = poco_serverlist();
+               header('Content-type: application/json');
+               echo json_encode($ret);
+               killme();
+       }
        if($a->argc > 1 && $a->argv[1] === '@global') {
                $global = true;
                $update_limit = date("Y-m-d H:i:s", time() - 30 * 86400);
@@ -43,7 +52,7 @@ function poco_init(&$a) {
                        where `user`.`nickname` = '%s' and `profile`.`is-default` = 1 limit 1",
                        dbesc($user)
                );
-               if(! count($r) || $r[0]['hidewall'] || $r[0]['hide-friends'])
+               if(! dbm::is_result($r) || $r[0]['hidewall'] || $r[0]['hide-friends'])
                        http_status_exit(404);
 
                $user = $r[0];
@@ -81,7 +90,7 @@ function poco_init(&$a) {
                        dbesc(NETWORK_STATUSNET)
                );
        }
-       if(dba::is_result($r))
+       if (dbm::is_result($r))
                $totalResults = intval($r[0]['total']);
        else
                $totalResults = 0;
@@ -104,9 +113,11 @@ function poco_init(&$a) {
                );
        } elseif($system_mode) {
                logger("Start system mode query", LOGGER_DEBUG);
-               $r = q("SELECT `contact`.*, `profile`.`about` AS `pabout`, `profile`.`locality` AS `plocation`, `profile`.`pub_keywords`, `profile`.`gender` AS `pgender`,
-                       `profile`.`address` AS `paddress`, `profile`.`region` AS `pregion`, `profile`.`postal-code` AS `ppostalcode`, `profile`.`country-name` AS `pcountry`
+               $r = q("SELECT `contact`.*, `profile`.`about` AS `pabout`, `profile`.`locality` AS `plocation`, `profile`.`pub_keywords`,
+                               `profile`.`gender` AS `pgender`, `profile`.`address` AS `paddress`, `profile`.`region` AS `pregion`,
+                               `profile`.`postal-code` AS `ppostalcode`, `profile`.`country-name` AS `pcountry`, `user`.`account-type`
                        FROM `contact` INNER JOIN `profile` ON `profile`.`uid` = `contact`.`uid`
+                               INNER JOIN `user` ON `user`.`uid` = `contact`.`uid`
                        WHERE `self` = 1 AND `profile`.`is-default`
                        AND `contact`.`uid` IN (SELECT `uid` FROM `pconfig` WHERE `cat` = 'system' AND `k` = 'suggestme' AND `v` = 1) LIMIT %d, %d",
                        intval($startIndex),
@@ -155,6 +166,7 @@ function poco_init(&$a) {
                'gender' => false,
                'tags' => false,
                'address' => false,
+               'contactType' => false,
                'generation' => false
        );
 
@@ -168,8 +180,8 @@ function poco_init(&$a) {
        }
 
        if(is_array($r)) {
-               if(dba::is_result($r)) {
-                       foreach($r as $rr) {
+               if (dbm::is_result($r)) {
+                       foreach ($r as $rr) {
                                if (!isset($rr['generation'])) {
                                        if ($global)
                                                $rr['generation'] = 3;
@@ -207,6 +219,9 @@ function poco_init(&$a) {
                                if (($rr['keywords'] == "") AND isset($rr['pub_keywords']))
                                        $rr['keywords'] = $rr['pub_keywords'];
 
+                               if (isset($rr['account-type']))
+                                       $rr['contact-type'] = $rr['account-type'];
+
                                $about = Cache::get("about:".$rr['updated'].":".$rr['nurl']);
                                if (is_null($about)) {
                                        $about = bbcode($rr['about'], false, false);
@@ -300,13 +315,14 @@ function poco_init(&$a) {
                                                 $entry['address']['country'] = $rr['pcountry'];
                                }
 
+                               if($fields_ret['contactType'])
+                                       $entry['contactType'] = intval($rr['contact-type']);
+
                                $ret['entry'][] = $entry;
                        }
-               }
-               else
+               } else
                        $ret['entry'][] = array();
-       }
-       else
+       } else
                http_status_exit(500);
 
        logger("End of poco", LOGGER_DEBUG);
@@ -320,8 +336,7 @@ function poco_init(&$a) {
                header('Content-type: application/json');
                echo json_encode($ret);
                killme();
-       }
-       else
+       } else
                http_status_exit(500);