#!/usr/bin/env php . */ define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..')); $longoptions = array('dry-run'); $helptext = << $marker)); $encProfile = $oprofile->escape($profileTemplate, true); $encProfile = str_replace($marker, '%', $encProfile); $groupTemplate = common_local_url('groupbyid', array('id' => $marker)); $encGroup = $oprofile->escape($groupTemplate, true); $encGroup = str_replace($marker, '%', $encGroup); $sql = "SELECT * FROM ostatus_profile WHERE uri LIKE '%s' OR uri LIKE '%s'"; $oprofile->query(sprintf($sql, $encProfile, $encGroup)); $count = $oprofile->N; echo "Found $count bogus ostatus_profile entries shadowing local users and groups:\n"; while ($oprofile->fetch()) { $uri = $oprofile->uri; if (preg_match('!/group/(\d+)/id!', $oprofile->uri, $matches)) { $id = intval($matches[1]); $group = Local_group::staticGet('group_id', $id); if ($group) { $nick = $group->nickname; } else { $nick = ''; } echo "group $id ($nick) hidden by $uri"; } else if (preg_match('!/user/(\d+)!', $uri, $matches)) { $id = intval($matches[1]); $user = User::staticGet('id', $id); if ($user) { $nick = $user->nickname; } else { $nick = ''; } echo "user $id ($nick) hidden by $uri"; } else { echo "$uri matched query, but we don't recognize it.\n"; continue; } if ($dry) { echo " - skipping\n"; } else { echo " - removing bogus ostatus_profile entry..."; $evil = clone($oprofile); $evil->delete(); echo " ok\n"; } } if ($count && $dry) { echo "NO CHANGES MADE -- To delete the bogus entries, run again without --dry-run option.\n"; } else { echo "done.\n"; }