]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/foaf.php
README for new version
[quix0rs-gnu-social.git] / actions / foaf.php
index 3169bd2d238bb7f35e255efc675d80159b7a1b16..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));
@@ -99,7 +105,7 @@ class FoafAction extends Action {
                }
 
                # Get people user is subscribed to
-               
+
                $person = array();
 
                $sub = new Subscription();
@@ -112,6 +118,10 @@ class FoafAction extends Action {
                                } else {
                                        $other = User::staticGet('id', $sub->subscribed);
                                }
+                               if (!$other) {
+                                       common_debug('Got a bad subscription: '.print_r($sub,TRUE));
+                                       continue;
+                               }
                                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('id', $sub->subscribed);
+                                       $other = Remote_profile::staticGet('id', $sub->subscriber);
                                } else {
-                                       $other = User::staticGet('id', $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) {
@@ -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');