public static function from_fireeaglerc($fn, $token = null, $secret = null) { $text = @file_get_contents($fn); if ($text === false) { throw new FireEagleException("Could not read {$fn}", FireEagleException::CONFIG_READ_ERROR); } $info = array(); foreach (preg_split("/\n/", $text) as $line) { $line = trim(preg_replace("/#.*/", "", $line)); if (empty($line)) { continue; } if (!preg_match("/^([^\\s=]+)\\s*\\=\\s*(.*)\$/", $line, $m)) { throw new FireEagleException("Failed to parse line '{$line}' in {$fn}", FireEagleException::CONFIG_READ_ERROR); } list(, $k, $v) = $m; $info[$k] = $v; } if (empty($info['consumer_key'])) { throw new FireEagleException("Missing consumer_key in {$fn}", FireEagleException::CONFIG_READ_ERROR); } if (empty($info['consumer_secret'])) { throw new FireEagleException("Missing consumer_secret in {$fn}", FireEagleException::CONFIG_READ_ERROR); } if (isset($info['api_server'])) { self::$FE_API_ROOT = self::build_server_url($info, 'api'); } if (isset($info['auth_server'])) { self::$FE_ROOT = self::build_server_url($info, 'auth'); } return new FireEagle($info['consumer_key'], $info['consumer_secret'], $token, $secret); }
/** * refresh location * * @access private * @param mixed $who user ID, username, or e-mail address * @return boolean */ private function update($who) { $user = User::get($who); if (!$user) { return false; } $access_token = Options::get('fireeagle__access_token_' . $user->id); $access_token_secret = Options::get('fireeagle__access_token_secret_' . $user->id); if (empty($access_token) || empty($access_token_secret)) { return; } $fireeagle = new FireEagleAPI($this->consumer_key, $this->consumer_secret, $access_token, $access_token_secret); try { $result = $fireeagle->user(); } catch (FireEagleException $e) { return false; } if (!isset($result->user->best_guess)) { return false; } $location = $result->user->best_guess; $user->info->fireeagle_longitude = $location->longitude; $user->info->fireeagle_latitude = $location->latitude; $user->info->fireeagle_level = $location->level; if (isset($location->name)) { $user->info->fireeagle_location = $location->name; } else { $user->info->fireeagle_location = ''; } $user->info->commit(); Plugins::act('fireeagle_after_update', $user); return true; }