]> git.mxchange.org Git - friendica.git/blobdiff - mod/noscrape.php
Replace dba::select(limit => 1) by dba::selectOne
[friendica.git] / mod / noscrape.php
index 537aff878f8e79ab81f7453ce4b27b7ff53410f0..88ac52920ef352bd48c96975055b52544180b87a 100644 (file)
@@ -1,6 +1,10 @@
 <?php
 
-function noscrape_init(&$a) {
+use Friendica\App;
+use Friendica\Core\System;
+use Friendica\Database\DBM;
+
+function noscrape_init(App $a) {
 
        if($a->argc > 1)
                $which = $a->argv[1];
@@ -15,7 +19,7 @@ function noscrape_init(&$a) {
 
        profile_load($a,$which,$profile);
 
-       if (!$a->profile['net-publish'] OR $a->profile['hidewall']) {
+       if (!$a->profile['net-publish'] || $a->profile['hidewall']) {
                header('Content-type: application/json; charset=utf-8');
                $json_info = array("hide" => true);
                echo json_encode($json_info);
@@ -30,21 +34,24 @@ function noscrape_init(&$a) {
                intval($a->profile['uid']));
 
        $json_info = array(
-               'fn' => $a->profile['name'],
-               'addr' => $a->profile['addr'],
-               'nick' => $which,
-               'key' => $a->profile['pubkey'],
-               'homepage' => $a->get_baseurl()."/profile/{$which}",
-               'comm' => (x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY),
-               'photo' => $r[0]["photo"],
-               'tags' => $keywords
+               'fn'       => $a->profile['name'],
+               'addr'     => $a->profile['addr'],
+               'nick'     => $which,
+               'guid'     => $a->profile['guid'],
+               'key'      => $a->profile['pubkey'],
+               'homepage' => System::baseUrl()."/profile/{$which}",
+               'comm'     => (x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY),
+               'photo'    => $r[0]["photo"],
+               'tags'     => $keywords
        );
 
-       if(is_array($a->profile) AND !$a->profile['hide-friends']) {
+       if (is_array($a->profile) && !$a->profile['hide-friends']) {
+               /// @todo What should this value tell us?
                $r = q("SELECT `gcontact`.`updated` FROM `contact` INNER JOIN `gcontact` WHERE `gcontact`.`nurl` = `contact`.`nurl` AND `self` AND `uid` = %d LIMIT 1",
                        intval($a->profile['uid']));
-               if (dbm::is_result($r))
+               if (DBM::is_result($r)) {
                        $json_info["updated"] =  date("c", strtotime($r[0]['updated']));
+               }
 
                $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
                                AND `network` IN ('%s', '%s', '%s', '')",
@@ -53,18 +60,40 @@ function noscrape_init(&$a) {
                        dbesc(NETWORK_DIASPORA),
                        dbesc(NETWORK_OSTATUS)
                );
-               if (dbm::is_result($r))
+               if (DBM::is_result($r)) {
                        $json_info["contacts"] = intval($r[0]['total']);
+               }
+       }
+
+       // We display the last activity (post or login), reduced to year and week number
+       $last_active = 0;
+       $condition = ['uid' => $a->profile['uid'], 'self' => true];
+       $contact = dba::selectOne('contact', ['last-item'], $condition);
+       if (DBM::is_result($contact)) {
+               $last_active = strtotime($contact['last-item']);
        }
 
+       $condition = ['uid' => $a->profile['uid']];
+       $user = dba::selectOne('user', ['login_date'], $condition);
+       if (DBM::is_result($user)) {
+               if ($last_active < strtotime($user['login_date'])) {
+                       $last_active = strtotime($user['login_date']);
+               }
+       }
+       $json_info["last-activity"] = date("o-W", $last_active);
+
        //These are optional fields.
        $profile_fields = array('pdesc', 'locality', 'region', 'postal-code', 'country-name', 'gender', 'marital', 'about');
-       foreach($profile_fields as $field)
-               if(!empty($a->profile[$field])) $json_info["$field"] = $a->profile[$field];
+       foreach ($profile_fields as $field) {
+               if (!empty($a->profile[$field])) {
+                       $json_info["$field"] = $a->profile[$field];
+               }
+       }
 
        $dfrn_pages = array('request', 'confirm', 'notify', 'poll');
-       foreach($dfrn_pages as $dfrn)
-               $json_info["dfrn-{$dfrn}"] = $a->get_baseurl()."/dfrn_{$dfrn}/{$which}";
+       foreach ($dfrn_pages as $dfrn) {
+               $json_info["dfrn-{$dfrn}"] = System::baseUrl()."/dfrn_{$dfrn}/{$which}";
+       }
 
        //Output all the JSON!
        header('Content-type: application/json; charset=utf-8');