Merge branch 'master' into 0.9.x

This commit is contained in:
Brion Vibber
2010-10-07 13:30:34 -07:00
6 changed files with 525 additions and 9 deletions

View File

@@ -966,7 +966,7 @@ class OStatusPlugin extends Plugin
{
$group = User_group::staticGet('uri', $url);
if ($group) {
$local = Local_group::staticGet('id', $group->id);
$local = Local_group::staticGet('group_id', $group->id);
if ($local) {
return $group->id;
}

View File

@@ -84,6 +84,50 @@ while ($group->fetch()) {
}
echo "\n";
// And there may be user_group entries remaining where we've already killed
// the ostatus_profile. These were "harmless" until our lookup started actually
// using the uri field, at which point we can clearly see it breaks stuff.
echo "Checking for leftover bogus user_group.uri entries obscuring local_group entries...\n";
$group = new User_group();
$group->joinAdd(array('id', 'local_group:group_id'), 'LEFT');
$group->whereAdd('group_id IS NULL');
$marker = mt_rand(31337, 31337000);
$groupTemplate = common_local_url('groupbyid', array('id' => $marker));
$encGroup = $group->escape($groupTemplate, true);
$encGroup = str_replace($marker, '%', $encGroup);
echo " LIKE '$encGroup'\n";
$group->whereAdd("uri LIKE '$encGroup'");
$group->find();
$count = $group->N;
echo "Found $count...\n";
while ($group->fetch()) {
$uri = $group->uri;
if (preg_match('!/group/(\d+)/id!', $uri, $matches)) {
$id = intval($matches[1]);
$local = Local_group::staticGet('group_id', $id);
if ($local) {
$nick = $local->nickname;
} else {
$nick = '<deleted>';
}
echo "local group $id ($local->nickname) hidden by $uri (bogus group id $group->id)";
if ($dry) {
echo " - skipping\n";
} else {
echo " - removing bogus user_group entry...";
$evil = User_group::staticGet('id', $group->id);
$evil->delete();
echo " ok\n";
}
}
}
echo "\n";
// Fallback?
echo "Checking for bogus profiles blocking local users/groups by URI pattern match...\n";