Squashed commit of the following:
commit 1c0766e8f9d9e962ec553e2fb35bd2f944ffb4b0
Author: Zach Copley <zach@status.net>
Date: Mon May 9 17:00:51 2011 -0700
Make the invites from the fancier invite form save
commit 9ea45b7cf38eda8dad1d82e87b3400413a532079
Author: Zach Copley <zach@status.net>
Date: Fri May 6 16:14:40 2011 -0700
.js to let the user add (and remove) additional invitees from their domain
commit b2a02339bd11d02c7cba24629dde359e22de32b6
Author: Zach Copley <zach@status.net>
Date: Thu May 5 15:44:49 2011 -0700
Load special whitelist invite .js when loading the invite page
commit 132fed7550b40cd1d46ee506fd83974a116bce32
Author: Zach Copley <zach@status.net>
Date: Wed May 4 18:35:49 2011 -0700
Remove settings class from whitelist inviter form
commit a38437351b505594aead5da86af9a5ed089666b6
Author: Zach Copley <zach@status.net>
Date: Wed May 4 18:21:18 2011 -0700
Make a fancier form for whitelist domain invites
commit 710d4f41edf412871a9c1fbf33af317226485325
Author: Zach Copley <zach@status.net>
Date: Wed May 4 17:34:09 2011 -0700
Add some more events to the invitation page
commit 2449e4e0c1bf11568968cfc3ea2d8e69db2d875e
Author: Zach Copley <zach@status.net>
Date: Wed May 4 17:12:36 2011 -0700
Refactor invite action a bit
One of the problems we've had with running large-scale hosting systems
for StatusNet is enabling new plugins. If the plugin is not enabled,
its database tables are not checked at script time. Conversely, if it
is enabled, it may take several hours to run checkschema for tens of
thousands of sites -- during which time users might see DB errors.
A new argument to checkschema lets it pre-load one or more plugins
before checking the schema. This lets us prepare the plugins' database
tables before they're used in production. In a multihome environment,
this can be combined with tags to gradually roll out a new plugin.
In the config file, a stanza like:
$site = Status_network::getFromHostname(...);
if ($site->hasTag('fooenabled')) {
addPlugin('Foo');
}
...will only enable the plugin on certain sites. Meanwhile, a bash
script like this should gradually enable the plugin:
# For all sites...
for site in `php allsites.php`; do
# Update the schema for the Foo plugin
php checkschema.php -s$site.wildcard -xFoo;
# Enable the Foo plugin
php settag.php -s$site.wildcard fooenabled;
done
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.