summaryrefslogtreecommitdiff
path: root/scripts/updateavatarurl.php
diff options
context:
space:
mode:
authorZach Copley <zach@status.net>2009-11-30 10:28:58 -0800
committerZach Copley <zach@status.net>2009-11-30 10:28:58 -0800
commit9dc888894be179f767c59651d523d7eb66b1020f (patch)
tree6c7191b243eb9c8bbd564ae693cc25ce58360545 /scripts/updateavatarurl.php
parent10f40661a2f517393331b554c2fec295c8c160e8 (diff)
parentbb70f77a5c8801a9bf76a85584377eb55efdb392 (diff)
Merge branch 'master' into 0.9.x
* master: (67 commits) Ticket 2038: fix bad bug tracker link Fix regression in group posting: bug introduced in commit 1319002e1519fafb0e82fbfd2d2723abdb3112e7. Need to use actual profile object rather than an id on a variable that doesn't exist when checking blocks :D Log database errors when saving notice_inbox entries Drop the username from the log id for now; seems to trigger an error loop in some circumstances request id on logs... pid + random id per web request + username + method + url Add OpenID ini info back into statusnet.ini as a stopgap until we can Some changes to the OpenID DataObjects to make them emit the exact same OpenID plugin should set 'user_openid.display' as unique key Remove relationship: user_openid.user_id -> user.id. I don't think this Have OpenID plugin DataObjects emit their own .ini info Revert "Allow plugin DB_DataObject classes to not have to use the .ini file by overriding keys(), table(), and sequenceKey() for them" Catch and report exceptions from notice_to_omb_notice() instead of letting the OMB queue handler die. Fix regression in remote subscription; added hasRole() shadow method on Remote_profile. Fix fatal error on OMB subscription for first-timers Remove annoying log msg Drop error message on setlocale() failure; this is harmless, since we actually have a working locale set up. Catch uncaught exception Fixed bug where reply-sync bit wasn't getting saved Forgot to render the nav menu when on FB Connect login tab Facebook plugin no longer takes over Login and Connect settings nav menus ... Conflicts: db/08to09_pg.sql db/statusnet_pg.sql locale/pt_BR/LC_MESSAGES/statusnet.mo plugins/Mapstraction/MapstractionPlugin.php
Diffstat (limited to 'scripts/updateavatarurl.php')
-rw-r--r--scripts/updateavatarurl.php128
1 files changed, 128 insertions, 0 deletions
diff --git a/scripts/updateavatarurl.php b/scripts/updateavatarurl.php
new file mode 100644
index 000000000..dfcfc118c
--- /dev/null
+++ b/scripts/updateavatarurl.php
@@ -0,0 +1,128 @@
+#!/usr/bin/env php
+<?php
+/*
+ * StatusNet - a distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, 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__) . '/..'));
+
+$shortoptions = 'i:n:a';
+$longoptions = array('id=', 'nickname=', 'all');
+
+$helptext = <<<END_OF_UPDATEAVATARURL_HELP
+updateavatarurl.php [options]
+update the URLs of all avatars in the system
+
+ -i --id ID of user to update
+ -n --nickname nickname of the user to update
+ -a --all update all
+
+END_OF_UPDATEAVATARURL_HELP;
+
+require_once INSTALLDIR.'/scripts/commandline.inc';
+
+try {
+ $user = null;
+
+ if (have_option('i', 'id')) {
+ $id = get_option_value('i', 'id');
+ $user = User::staticGet('id', $id);
+ if (empty($user)) {
+ throw new Exception("Can't find user with id '$id'.");
+ }
+ updateAvatars($user);
+ } else if (have_option('n', 'nickname')) {
+ $nickname = get_option_value('n', 'nickname');
+ $user = User::staticGet('nickname', $nickname);
+ if (empty($user)) {
+ throw new Exception("Can't find user with nickname '$nickname'");
+ }
+ updateAvatars($user);
+ } else if (have_option('a', 'all')) {
+ $user = new User();
+ if ($user->find()) {
+ while ($user->fetch()) {
+ updateAvatars($user);
+ }
+ }
+ } else {
+ throw new Exception("You have to provide an ID or nickname or 'all'.");
+ }
+} catch (Exception $e) {
+ print $e->getMessage()."\n";
+ exit(1);
+}
+
+function updateAvatars($user)
+{
+ $touched = false;
+
+ if (!have_option('q', 'quiet')) {
+ print "Updating avatars for user '".$user->nickname."' (".$user->id.")...";
+ }
+
+ $avatar = new Avatar();
+
+ $avatar->profile_id = $user->id;
+
+ if (!$avatar->find()) {
+ if (have_option('v', 'verbose')) {
+ print "(none found)...";
+ }
+ } else {
+ while ($avatar->fetch()) {
+ if (have_option('v', 'verbose')) {
+ if ($avatar->original) {
+ print "original...";
+ } else {
+ print $avatar->width."...";
+ }
+ }
+
+ $orig = clone($avatar);
+
+ $avatar->url = Avatar::url($avatar->filename);
+
+ if ($avatar->url != $orig->url) {
+ $sql =
+ "UPDATE avatar SET url = '" . $avatar->url . "' ".
+ "WHERE profile_id = " . $avatar->profile_id . " ".
+ "AND width = " . $avatar->width . " " .
+ "AND height = " . $avatar->height . " ";
+
+ if ($avatar->original) {
+ $sql .= "AND original = 1 ";
+ }
+
+ if (!$avatar->query($sql)) {
+ throw new Exception("Can't update avatar for user " . $user->nickname . ".");
+ } else {
+ $touched = true;
+ }
+ }
+ }
+ }
+
+ if ($touched) {
+ $profile = $user->getProfile();
+ common_broadcast_profile($profile);
+ }
+
+ if (have_option('v', 'verbose')) {
+ print "DONE.\n";
+ }
+}