diff options
author | Evan Prodromou <evan@status.net> | 2010-04-08 12:16:31 -0400 |
---|---|---|
committer | Evan Prodromou <evan@status.net> | 2010-04-08 12:16:31 -0400 |
commit | 8ec7ebbeac157284cc87369da54f3a762c9c4c27 (patch) | |
tree | aa714afd520d3db5333cde3e16b90e90a8d44af5 | |
parent | 9ea0b0645249b7e3f4cb37ac6bc3ff8c628ad2ba (diff) | |
parent | aceaeb99e5fa451fcfb2ac444443f17c09a4908c (diff) |
Merge branch 'master' of gitorious.org:statusnet/mainline
-rwxr-xr-x | scripts/fixup_blocks.php | 76 | ||||
-rw-r--r-- | scripts/settag.php | 9 |
2 files changed, 83 insertions, 2 deletions
diff --git a/scripts/fixup_blocks.php b/scripts/fixup_blocks.php new file mode 100755 index 000000000..6b0255e72 --- /dev/null +++ b/scripts/fixup_blocks.php @@ -0,0 +1,76 @@ +#!/usr/bin/env php +<?php +/* + * StatusNet - a distributed open-source microblogging tool + * Copyright (C) 2010 StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); + +$longoptions = array('dry-run', 'start=', 'end='); + +$helptext = <<<END_OF_HELP +fixup_blocks.php [options] +Finds profile blocks where the unsubscription didn't complete, +and removes the offending subscriptions. + + --dry-run look but don't touch + +END_OF_HELP; + +require_once INSTALLDIR.'/scripts/commandline.inc'; + +/** + * Fetch subscriptions that should be disallowed by a block + */ +function get_blocked_subs() +{ + $query = "SELECT subscription.* " . + "FROM subscription " . + "INNER JOIN profile_block " . + "ON blocker=subscribed " . + "AND blocked=subscriber"; + $subscription = new Subscription(); + $subscription->query($query); + return $subscription; +} + + +$dry = have_option('dry-run'); +$sub = get_blocked_subs(); +$count = $sub->N; +while ($sub->fetch()) { + $subber = Profile::staticGet('id', $sub->subscriber); + $subbed = Profile::staticGet('id', $sub->subscribed); + if (!$subber || !$subbed) { + print "Bogus entry! $sub->subscriber subbed to $sub->subscribed\n"; + continue; + } + print "$subber->nickname ($subber->id) blocked but subbed to $subbed->nickname ($subbed->id)"; + if ($dry) { + print ": skipping; dry run\n"; + } else { + Subscription::cancel($subber, $subbed); + print ": removed\n"; + } +} +print "\n"; + +if ($dry && $count > 0) { + print "Be sure to run without --dry-run to remove the bad entries!\n"; +} else { + print "done.\n"; +} diff --git a/scripts/settag.php b/scripts/settag.php index e91d5eb50..d1b06ff10 100644 --- a/scripts/settag.php +++ b/scripts/settag.php @@ -33,13 +33,12 @@ END_OF_SETTAG_HELP; require_once INSTALLDIR.'/scripts/commandline.inc'; -if (count($args) != 2) { +if (count($args) < 1) { show_help(); exit(1); } $nickname = $args[0]; -$tag = strtolower($args[1]); $sn = Status_network::memGet('nickname', $nickname); @@ -50,6 +49,12 @@ if (empty($sn)) { $tags = $sn->getTags(); +if (count($args) == 1) { + print(implode(', ', $tags) . "\n"); + exit(0); +} +$tag = $args[1]; + $i = array_search($tag, $tags); if ($i !== false) { |