From 4b41d05a13cc8d49871687b767640fbcd15eb05c Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 17 Dec 2010 16:27:20 -0500 Subject: [PATCH] Make restoreuser use new FeedImporter queue handler --- lib/activityimporter.php | 9 +++++++-- lib/feedimporter.php | 36 +++++++++++++++++++++++++++++++++--- scripts/restoreuser.php | 5 ++--- 3 files changed, 42 insertions(+), 8 deletions(-) diff --git a/lib/activityimporter.php b/lib/activityimporter.php index 07a6b0e77b..e936449c86 100644 --- a/lib/activityimporter.php +++ b/lib/activityimporter.php @@ -81,10 +81,10 @@ class ActivityImporter extends QueueHandler common_log(LOG_WARNING, $ce->getMessage()); return true; } catch (ServerException $se) { - common_log(LOG_ERR, $ce->getMessage()); + common_log(LOG_ERR, $se->getMessage()); return false; } catch (Exception $e) { - common_log(LOG_ERR, $ce->getMessage()); + common_log(LOG_ERR, $e->getMessage()); return false; } return true; @@ -95,6 +95,11 @@ class ActivityImporter extends QueueHandler $profile = $user->getProfile(); if ($activity->objects[0]->id == $author->id) { + + if (!$this->trusted) { + throw new ClientException(_("Can't force subscription for untrusted user.")); + } + $other = $activity->actor; $otherUser = User::staticGet('uri', $other->id); diff --git a/lib/feedimporter.php b/lib/feedimporter.php index e2c9df72fd..0b94eeb9b8 100644 --- a/lib/feedimporter.php +++ b/lib/feedimporter.php @@ -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); diff --git a/scripts/restoreuser.php b/scripts/restoreuser.php index eac7e5cf29..17f007b412 100644 --- a/scripts/restoreuser.php +++ b/scripts/restoreuser.php @@ -75,9 +75,8 @@ try { $user = null; } $xml = getActivityStreamDocument(); - $restorer = new AccountRestorer(); - $doc = $restorer->loadXML($xml); - $restorer->importActivityStream($user, $doc); + $qm = QueueManager::get(); + $qm->enqueue(array($user, $xml, true), 'feedimp'); } catch (Exception $e) { print $e->getMessage()."\n"; exit(1);