From: Evan Prodromou Date: Thu, 31 Dec 2009 22:38:58 +0000 (-1000) Subject: Script to update the location ID for users X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=55ba858e8cb4eac0fa60fb78f8e8c4813be065a9;p=quix0rs-gnu-social.git 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. --- 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; +}