]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
try to reduce memory usage in FOAF output
authorEvan Prodromou <evan@controlyourself.ca>
Fri, 3 Apr 2009 18:18:29 +0000 (14:18 -0400)
committerEvan Prodromou <evan@controlyourself.ca>
Fri, 3 Apr 2009 18:18:29 +0000 (14:18 -0400)
actions/foaf.php

index aa78b91c3ef9bed3f32890d25097cd76dbb5e43b..416935b1b724316daefc046172b9f567bedc6754 100644 (file)
@@ -139,20 +139,30 @@ class FoafAction extends Action
 
         if ($sub->find()) {
             while ($sub->fetch()) {
-                if ($sub->token) {
+                if (!empty($sub->token)) {
                     $other = Remote_profile::staticGet('id', $sub->subscribed);
                 } else {
                     $other = User::staticGet('id', $sub->subscribed);
                 }
-                if (!$other) {
+                if (empty($other)) {
                     common_debug('Got a bad subscription: '.print_r($sub,true));
                     continue;
                 }
                 $this->element('knows', array('rdf:resource' => $other->uri));
-                $person[$other->uri] = array(LISTENEE, $other);
+                $person[$other->uri] = array(LISTENEE,
+                                             $other->id,
+                                             $other->nickname,
+                                             (empty($sub->token)) ? 'User' : 'Remote_profile');
+                $other->free();
+                $other = null;
+                unset($other);
             }
         }
 
+        $sub->free();
+        $sub = null;
+        unset($sub);
+
         // Get people who subscribe to user
 
         $sub = new Subscription();
@@ -173,25 +183,36 @@ class FoafAction extends Action
                 if (array_key_exists($other->uri, $person)) {
                     $person[$other->uri][0] = BOTH;
                 } else {
-                    $person[$other->uri] = array(LISTENER, $other);
+                    $person[$other->uri] = array(LISTENER,
+                                                 $other->id,
+                                                 $other->nickname,
+                                                 (empty($sub->token)) ? 'User' : 'Remote_profile');
                 }
+                $other->free();
+                $other = null;
+                unset($other);
             }
         }
 
+        $sub->free();
+        $sub = null;
+        unset($sub);
+
         $this->elementEnd('Person');
 
         foreach ($person as $uri => $p) {
             $foaf_url = null;
-            if ($p[1] instanceof User) {
-                $foaf_url = common_local_url('foaf', array('nickname' => $p[1]->nickname));
+            list($type, $id, $nickname, $cls) = $p;
+            if ($cls == 'User') {
+                $foaf_url = common_local_url('foaf', array('nickname' => $nickname));
             }
-            $this->profile = Profile::staticGet($p[1]->id);
+            $profile = Profile::staticGet($id);
             $this->elementStart('Person', array('rdf:about' => $uri));
-            if ($p[0] == LISTENER || $p[0] == BOTH) {
+            if ($type == LISTENER || $type == BOTH) {
                 $this->element('knows', array('rdf:resource' => $this->user->uri));
             }
-            $this->showMicrobloggingAccount($this->profile, ($p[1] instanceof User) ?
-                                              common_root_url() : null);
+            $this->showMicrobloggingAccount($profile, ($cls == 'User') ?
+                                            common_root_url() : null);
             if ($foaf_url) {
                 $this->element('rdfs:seeAlso', array('rdf:resource' => $foaf_url));
             }
@@ -199,6 +220,9 @@ class FoafAction extends Action
             if ($foaf_url) {
                 $this->showPpd($foaf_url, $uri);
             }
+            $profile->free();
+            $profile = null;
+            unset($profile);
         }
 
         $this->elementEnd('rdf:RDF');