]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/feedimporter.php
Make restoreuser use new FeedImporter queue handler
[quix0rs-gnu-social.git] / lib / feedimporter.php
index e2c9df72fd9f3e69515779e45e1870ce8b1d76df..0b94eeb9b85843688619eec0e0be76ecad6bad3e 100644 (file)
@@ -84,12 +84,12 @@ class FeedImporter extends QueueHandler
             if (empty($user)) {
                 if ($trusted) {
                     $user = $this->userFromAuthor($author);
+                } else {
+                    throw new ClientException(_("Can't import without a user."));
                 }
             }
 
-            $entries = $feed->getElementsByTagNameNS(Activity::ATOM, 'entry');
-
-            $activities = $this->entriesToActivities($entries, $feed);
+            $activities = $this->getActivities($feed);
 
             $qm = QueueManager::get();
 
@@ -108,6 +108,36 @@ class FeedImporter extends QueueHandler
         }
     }
 
+    function getActivities($feed)
+    {
+        $entries = $feed->getElementsByTagNameNS(Activity::ATOM, 'entry');
+
+        $activities = array();
+
+        for ($i = 0; $i < $entries->length; $i++) {
+            $activities[] = new Activity($entries->item($i));
+        }
+
+        usort($activities, array("FeedImporter", "activitySort"));
+
+        return $activities;
+    }
+
+    /**
+     * Sort activities oldest-first
+     */
+
+    static function activitySort($a, $b)
+    {
+        if ($a->time == $b->time) {
+            return 0;
+        } else if ($a->time < $b->time) {
+            return -1;
+        } else {
+            return 1;
+        }
+    }
+
     function userFromAuthor($author)
     {
         $user = User::staticGet('uri', $author->id);