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.
This commit is contained in:
Evan Prodromou 2011-05-02 18:51:09 -07:00
parent f5aba994b2
commit fde6e672cf

View File

@ -177,10 +177,17 @@ class DomainStatusNetworkInstaller extends Installer
throw new ServerException("Could not create status_network: " . print_r($sn, true)); 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)); $sn->setTags(array('domain='.$this->domain));
$this->sn = $sn; $this->sn = $sn;
} }
function checkSchema() function checkSchema()