From cbb5586ab77c4f9a0874622ef0f809bffa48a7d9 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Sun, 2 Jun 2013 14:38:00 -0400 Subject: [PATCH] Add a registration activity to the end of every backup --- classes/User.php | 32 +++++++++++++++++++++++++++++++- lib/useractivitystream.php | 19 +++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/classes/User.php b/classes/User.php index 726a7e5c30..32a04238c2 100644 --- a/classes/User.php +++ b/classes/User.php @@ -1152,7 +1152,7 @@ class User extends Managed_DataObject $osp = Old_school_prefs::staticGet('user_id', $this->id); if (!empty($osp)) { return $osp->stream_mode_only; - } + } } return false; @@ -1180,4 +1180,34 @@ class User extends Managed_DataObject } return false; } + + function registrationActivity() + { + $profile = $this->getProfile(); + + $service = new ActivityObject(); + + $service->type = "service"; + $service->displayName = common_config('site', 'name'); + $service->url = common_root_url(); + + $act = new Activity(); + + $act->actor = ActivityObject::fromProfile($profile); + $act->verb = ActivityVerb::JOIN; + $act->objects[] = $service; + + $act->id = TagURI::mint('user:register:%d', + $this->id); + + $act->time = strtotime($this->created); + + $act->title = _("Register"); + + $act->content = sprintf(_('%1$s joined %2$s.'), + $profile->getBestName(), + $service->displayName); + + return $act; + } } diff --git a/lib/useractivitystream.php b/lib/useractivitystream.php index 5422afc2c0..59ae6184b3 100644 --- a/lib/useractivitystream.php +++ b/lib/useractivitystream.php @@ -192,6 +192,25 @@ class UserActivityStream extends AtomUserNoticeFeed common_log(LOG_ERR, $e->getMessage()); } } + + // We always add the registration activity at the end, even if + // they have older activities (from restored backups) in their stream. + + try { + $ract = $this->user->registrationActivity(); + if ($format == Feed::ATOM) { + $ract->outputTo($this, false, false); + } else { + if ($haveOne) { + fwrite($handle, ","); + } + fwrite($handle, json_encode($ract->asArray())); + $haveOne = true; + } + } catch (Exception $e) { + common_log(LOG_ERR, $e->getMessage()); + continue; + } } function compareObject($a, $b)