* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
-
class WikiHowProfilePlugin extends Plugin
{
function onPluginVersion(&$versions)
{
$versions[] = array('name' => 'WikiHow avatar fetcher',
- 'version' => STATUSNET_VERSION,
+ 'version' => GNUSOCIAL_VERSION,
'author' => 'Brion Vibber',
'homepage' => 'http://status.net/wiki/Plugin:Sample',
'rawdescription' =>
- _m('Fetches avatar and other profile info for WikiHow users when setting up an account via OpenID.'));
+ // TRANS: Plugin description.
+ _m('Fetches avatar and other profile information for WikiHow users when setting up an account via OpenID.'));
return true;
}
/**
* Given a user's WikiHow profile URL, find their avatar.
- *
+ *
* @param string $profileUrl user page on the wiki
- *
+ *
* @return array of data; possible members:
* 'avatar' => full URL to avatar image
- *
+ *
* @throws Exception on various low-level failures
- *
+ *
* @todo pull location, web site, and about sections -- they aren't currently marked up cleanly.
*/
private function fetchProfile($profileUrl)
$client = HTTPClient::start();
$response = $client->get($profileUrl);
if (!$response->isOk()) {
- throw new Exception("WikiHow profile page fetch failed.");
+ // TRANS: Exception thrown when fetching a WikiHow profile page fails.
+ throw new Exception(_m('WikiHow profile page fetch failed.'));
// HTTP error response already logged.
return false;
}
error_reporting($old);
if (!$ok) {
- throw new Exception("HTML parse failure during check for WikiHow avatar.");
+ // TRANS: Exception thrown when parsing a WikiHow profile page fails.
+ throw new Exception(_m('HTML parse failure during check for WikiHow avatar.'));
return false;
}
private function saveAvatar($user, $url)
{
if (!common_valid_http_url($url)) {
- throw new ServerException(sprintf(_m("Invalid avatar URL %s"), $url));
+ // TRANS: Server exception thrown when an avatar URL is invalid.
+ // TRANS: %s is the invalid avatar URL.
+ throw new ServerException(sprintf(_m('Invalid avatar URL %s.'), $url));
}
- // @fixme this should be better encapsulated
+ // @todo FIXME: This should be better encapsulated
// ripped from OStatus via oauthstore.php (for old OMB client)
- $temp_filename = tempnam(sys_get_temp_dir(), 'listener_avatar');
- if (!copy($url, $temp_filename)) {
- throw new ServerException(sprintf(_m("Unable to fetch avatar from %s"), $url));
- }
-
- $profile = $user->getProfile();
- $id = $profile->id;
- // @fixme should we be using different ids?
+ $temp_filename = tempnam(common_get_temp_dir(), 'listener_avatar');
+ try {
+ if (!copy($url, $temp_filename)) {
+ // TRANS: Exception thrown when fetching an avatar from a URL fails.
+ // TRANS: %s is a URL.
+ throw new ServerException(sprintf(_m('Unable to fetch avatar from %s.'), $url));
+ }
- $imagefile = new ImageFile($id, $temp_filename);
- $filename = Avatar::filename($id,
- image_type_to_extension($imagefile->type),
- null,
- common_timestamp());
- rename($temp_filename, Avatar::path($filename));
+ $profile = $user->getProfile();
+ $id = $profile->id;
+ // @fixme should we be using different ids?
+
+ $imagefile = new ImageFile($id, $temp_filename);
+ $filename = Avatar::filename($id,
+ image_type_to_extension($imagefile->type),
+ null,
+ common_timestamp());
+ rename($temp_filename, Avatar::path($filename));
+ } catch (Exception $e) {
+ unlink($temp_filename);
+ throw $e;
+ }
$profile->setOriginal($filename);
}
-
}
-