forked from GNUsocial/gnu-social
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:
parent
f5aba994b2
commit
fde6e672cf
@ -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()
|
||||||
|
Loading…
Reference in New Issue
Block a user