From fde6e672cff80a794b038afd9cbe48ea33a841aa Mon Sep 17 00:00:00 2001
From: Evan Prodromou <evan@status.net>
Date: Mon, 2 May 2011 18:51:09 -0700
Subject: [PATCH] Fix error in domainstatusnetworkinstaller that cleared tags
 table

An error in the domainstatusnetworkinstaller cleared the tags table,
losing any information about sites on the service. (We discovered this
in production on StatusNet OnDemand). Conjunction of these factors: 1)
the installer code was using an insert()'ed object with an
auto-incrementing key, which because the statusnet.ini was incorrect,
wasn't getting updated. 2) It then called setTag() on that object,
which deletes all tags matching the id, then adds in the new ones. 3)
Because the ID was null, DB_DataObject deleted all rows in the table.

I've made a work-around that re-fetches the status_network object
based on its (unique) nickname, which gets the correct ID, which
should work for tags. Confirmed that it works. Still need to fix the
underlying problems, however.
---
 .../DomainStatusNetwork/domainstatusnetworkinstaller.php | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/plugins/DomainStatusNetwork/domainstatusnetworkinstaller.php b/plugins/DomainStatusNetwork/domainstatusnetworkinstaller.php
index ea8220056c..c871c2328e 100644
--- a/plugins/DomainStatusNetwork/domainstatusnetworkinstaller.php
+++ b/plugins/DomainStatusNetwork/domainstatusnetworkinstaller.php
@@ -177,10 +177,17 @@ class DomainStatusNetworkInstaller extends Installer
             throw new ServerException("Could not create status_network: " . print_r($sn, true));
         }
 
+        // Re-fetch; stupid auto-increment integer isn't working
+
+        $sn = Status_network::staticGet('nickname', $sn->nickname);
+
+        if (empty($sn)) {
+            throw new ServerException("Created {$this->nickname} status_network and could not find it again.");
+        }
+
         $sn->setTags(array('domain='.$this->domain));
 
         $this->sn = $sn;
-
     }
 
     function checkSchema()
-- 
2.39.5