X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Ffeedimporter.php;h=e46858cc51824510d4610f9392cfbab5a1eb2f57;hb=1d29ba83150bdd7a23e497ca9a743ac2b6158b6f;hp=e2c9df72fd9f3e69515779e45e1870ce8b1d76df;hpb=044763cf06b1fb99cd8246dcbb8bb4a3e545d3ed;p=quix0rs-gnu-social.git diff --git a/lib/feedimporter.php b/lib/feedimporter.php index e2c9df72fd..e46858cc51 100644 --- a/lib/feedimporter.php +++ b/lib/feedimporter.php @@ -68,12 +68,13 @@ class FeedImporter extends QueueHandler try { $doc = DOMDocument::loadXML($xml); - if ($doc->documentElement->namespaceURI != Activity::ATOM || - $doc->documentElement->localName != 'feed') { + $feed = $doc->documentElement; + + if ($feed->namespaceURI != Activity::ATOM || + $feed->localName != 'feed') { throw new ClientException(_("Not an atom feed.")); } - $feed = $doc->documentElement; $author = ActivityUtils::getFeedAuthor($feed); @@ -84,12 +85,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 +109,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);