]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/foaf.php
add 'invite-only' mode for registration
[quix0rs-gnu-social.git] / actions / foaf.php
index d005510b6c3e834085ac12731e3c07be1a5f5397..c64617e5f04c566bc7edbb00b3265154019daf2f 100644 (file)
@@ -24,26 +24,30 @@ define('LISTENEE', -1);
 define('BOTH', 0);
 
 class FoafAction extends Action {
-       
+
+       function is_readonly() {
+               return true;
+       }
+
        function handle($args) {
                parent::handle($args);
 
                $nickname = $this->trimmed('nickname');
-               
+
                $user = User::staticGet('nickname', $nickname);
-               
+
                if (!$user) {
-                       common_user_error(_t('No such user'), 404);
+                       common_user_error(_('No such user.'), 404);
                        return;
                }
 
                $profile = $user->getProfile();
 
                if (!$profile) {
-                       common_server_error(_t('User has no profile'), 500);
+                       common_server_error(_('User has no profile.'), 500);
                        return;
                }
-               
+
                header('Content-Type: application/rdf+xml');
 
                common_start_xml();
@@ -51,12 +55,14 @@ class FoafAction extends Action {
                                                                                          'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
                                                                                          'xmlns:rdfs' =>
                                                                                          'http://www.w3.org/2000/01/rdf-schema#',
+                                                                                         'xmlns:geo' =>
+                                                                                         'http://www.w3.org/2003/01/geo/wgs84_pos#',
                                                                                          'xmlns' => 'http://xmlns.com/foaf/0.1/'));
 
                # This is the document about the user
-               
+
                $this->show_ppd('', $user->uri);
-               
+
                # XXX: might not be a person
                common_element_start('Person', array('rdf:about' =>
                                                                                         $user->uri));
@@ -90,7 +96,7 @@ class FoafAction extends Action {
                                $scaled = $profile->getAvatar($size);
                                if (!$scaled->original) { # sometimes the original has one of our scaled sizes
                                        common_element_start('thumbnail');
-                                       common_element('Image', array('rdf:about', $scaled->url));
+                                       common_element('Image', array('rdf:about' => $scaled->url));
                                        common_element_end('thumbnail');
                                }
                        }
@@ -99,7 +105,7 @@ class FoafAction extends Action {
                }
 
                # Get people user is subscribed to
-               
+
                $person = array();
 
                $sub = new Subscription();
@@ -108,11 +114,15 @@ class FoafAction extends Action {
                if ($sub->find()) {
                        while ($sub->fetch()) {
                                if ($sub->token) {
-                                       $other = Remote_profile::staticGet($sub->subscribed);
+                                       $other = Remote_profile::staticGet('id', $sub->subscribed);
                                } else {
-                                       $other = User::staticGet($sub->subscribed);
+                                       $other = User::staticGet('id', $sub->subscribed);
+                               }
+                               if (!$other) {
+                                       common_debug('Got a bad subscription: '.print_r($sub,TRUE));
+                                       continue;
                                }
-                               common_element('knows', array('rdf:about', $other->uri));
+                               common_element('knows', array('rdf:resource' => $other->uri));
                                $person[$other->uri] = array(LISTENEE, $other);
                        }
                }
@@ -125,9 +135,13 @@ class FoafAction extends Action {
                if ($sub->find()) {
                        while ($sub->fetch()) {
                                if ($sub->token) {
-                                       $other = Remote_profile::staticGet($sub->subscribed);
+                                       $other = Remote_profile::staticGet('id', $sub->subscriber);
                                } else {
-                                       $other = User::staticGet($sub->subscribed);
+                                       $other = User::staticGet('id', $sub->subscriber);
+                               }
+                               if (!$other) {
+                                       common_debug('Got a bad subscription: '.print_r($sub,TRUE));
+                                       continue;
                                }
                                if (array_key_exists($other->uri, $person)) {
                                        $person[$other->uri][0] = BOTH;
@@ -136,7 +150,7 @@ class FoafAction extends Action {
                                }
                        }
                }
-               
+
                common_element_end('Person');
 
                foreach ($person as $uri => $p) {
@@ -147,7 +161,7 @@ class FoafAction extends Action {
                        $profile = Profile::staticGet($p[1]->id);
                        common_element_start('Person', array('rdf:about' => $uri));
                        if ($p[0] == LISTENER || $p[0] == BOTH) {
-                               common_element('knows', array('rdf:about', $user->uri));
+                               common_element('knows', array('rdf:resource' => $user->uri));
                        }
                        $this->show_microblogging_account($profile, ($p[1] instanceof User) ?
                                                                                          common_root_url() : NULL);
@@ -159,17 +173,17 @@ class FoafAction extends Action {
                                $this->show_ppd($foaf_url, $uri);
                        }
                }
-               
+
                common_element_end('rdf:RDF');
        }
-       
+
        function show_ppd($foaf_url, $person_uri) {
                common_element_start('PersonalProfileDocument', array('rdf:about' => $foaf_url));
                common_element('maker', array('rdf:resource' => $person_uri));
                common_element('primaryTopic', array('rdf:resource' => $person_uri));
                common_element_end('PersonalProfileDocument');
        }
-       
+
        function show_microblogging_account($profile, $service=NULL) {
                # Their account
                common_element_start('holdsAccount');