summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@prodromou.name>2008-12-15 08:48:24 -0500
committerEvan Prodromou <evan@prodromou.name>2008-12-15 08:48:24 -0500
commit9ef3f7cee601c80d93924eec2216a36bcbce73ef (patch)
tree67861b980cae3c29337404755ec5119b95efc94f
parent0860791f3fedf4a2862f83687d6469c7d21a3de5 (diff)
correctly handle remote re-subscribe0.6.4
darcs-hash:20081215134824-84dde-de48c99b6cb45cc461125a7f8f382eb57de0bf28.gz
-rw-r--r--actions/finishremotesubscribe.php22
1 files changed, 20 insertions, 2 deletions
diff --git a/actions/finishremotesubscribe.php b/actions/finishremotesubscribe.php
index 97f972043..58040683f 100644
--- a/actions/finishremotesubscribe.php
+++ b/actions/finishremotesubscribe.php
@@ -188,13 +188,31 @@ class FinishremotesubscribeAction extends Action {
}
$sub = new Subscription();
+
$sub->subscriber = $remote->id;
$sub->subscribed = $user->id;
+
+ $sub_exists = false;
+
+ if ($sub->find(true)) {
+ $sub_exists = true;
+ $orig_sub = clone($sub);
+ } else {
+ $sub_exists = false;
+ $sub->created = DB_DataObject_Cast::dateTime(); # current time
+ }
+
$sub->token = $newtok;
$sub->secret = $newsecret;
- $sub->created = DB_DataObject_Cast::dateTime(); # current time
- if (!$sub->insert()) {
+ if ($sub_exists) {
+ $result = $sub->update($orig_sub);
+ } else {
+ $result = $sub->insert();
+ }
+
+ if (!$result) {
+ common_log_db_error($sub, ($sub_exists) ? 'UPDATE' : 'INSERT', __FILE__);
common_user_error(_('Couldn\'t insert new subscription.'));
return;
}