From 55ba858e8cb4eac0fa60fb78f8e8c4813be065a9 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 31 Dec 2009 12:38:58 -1000 Subject: [PATCH] Script to update the location ID for users Since we added locations to the database, some users may have location strings in their profiles but not structured locations. This script updates the locations for single users or for all users. --- scripts/updatelocation.php | 125 +++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 scripts/updatelocation.php diff --git a/scripts/updatelocation.php b/scripts/updatelocation.php new file mode 100644 index 0000000000..4110660ab0 --- /dev/null +++ b/scripts/updatelocation.php @@ -0,0 +1,125 @@ +#!/usr/bin/env php +. + */ + +define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); + +$shortoptions = 'i:n:af'; +$longoptions = array('id=', 'nickname=', 'all', 'force'); + +$helptext = <<find()) { + while ($user->fetch()) { + updateLocation($user); + } + } + } else { + show_help(); + exit(1); + } +} catch (Exception $e) { + print $e->getMessage()."\n"; + exit(1); +} + +function updateLocation($user) +{ + $profile = $user->getProfile(); + + if (empty($profile)) { + throw new Exception("User has no profile: " . $user->nickname); + } + + if (empty($profile->location)) { + if (have_option('v', 'verbose')) { + print "No location string for '".$user->nickname."'\n"; + } + return; + } + + if (!empty($profile->location_id) && !have_option('f', 'force')) { + if (have_option('v', 'verbose')) { + print "Location ID already set for '".$user->nickname."'\n"; + } + return; + } + + $loc = Location::fromName($profile->location); + + if (empty($loc)) { + if (have_option('v', 'verbose')) { + print "No structured location for string '".$profile->location."' for user '".$user->nickname."'\n"; + } + return; + } else { + $orig = clone($profile); + + $profile->lat = $loc->lat; + $profile->lon = $loc->lon; + $profile->location_id = $loc->location_id; + $profile->location_ns = $loc->location_ns; + + $result = $profile->update($orig); + + if (!$result) { + common_log_db_error($profile, 'UPDATE', __FILE__); + } + + if (!have_option('q', 'quiet')) { + print "Location ID " . $profile->location_id . " set for user " . $user->nickname . "\n"; + } + } + + $profile->free(); + unset($loc); + unset($profile); + + return; +}