if (!defined('LACONICA')) { exit(1); }
+require_once(INSTALLDIR.'/lib/settingsaction.php');
+
class AvatarAction extends SettingsAction {
function show_form($msg=NULL, $success=false) {
common_element('img', array('src' => $original->url,
'class' => 'avatar original',
'width' => $original->width,
- 'height' => $original->height));
+ 'height' => $original->height,
+ 'alt' => $user->nickname));
}
$avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
common_element('img', array('src' => $avatar->url,
'class' => 'avatar profile',
'width' => AVATAR_PROFILE_SIZE,
- 'height' => AVATAR_PROFILE_SIZE));
+ 'height' => AVATAR_PROFILE_SIZE,
+ 'alt' => $user->nickname));
}
common_element_start('form', array('enctype' => 'multipart/form-data',
common_element('input', array('name' => 'avatarfile',
'type' => 'file',
'id' => 'avatarfile'));
- common_element('input', array('name' => 'submit',
- 'type' => 'submit',
- 'id' => 'submit'),
- _t('Upload'));
+ common_submit('submit', _t('Upload'));
common_element_end('form');
+ common_show_footer();
}
function handle_post() {
$this->show_form(_t('Unsupported image file format.'));
return;
}
-
+
$user = common_current_user();
- $filename = common_avatar_filename($user, image_type_to_extension($info[2]));
+ $filename = common_avatar_filename($user, image_type_to_extension($info[2]), NULL, common_timestamp());
$filepath = common_avatar_path($filename);
if (!move_uploaded_file($_FILES['avatarfile']['tmp_name'], $filepath)) {
$avatar->filename = $filename;
$avatar->original = true;
$avatar->url = common_avatar_url($filename);
+ $avatar->created = DB_DataObject_Cast::dateTime(); # current time
foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) {
- $scaled[] = $this->scale_avatar($user, $avatar, $size);
+ # We don't need a scaled one if the original is already of that size!
+ if ($avatar->width != $size && $avatar->height != $size) {
+ $scaled[] = $this->scale_avatar($user, $avatar, $size);
+ }
}
# XXX: start a transaction here
common_server_error(_t('Error deleting old avatars.'));
return;
}
-
if (!$avatar->insert()) {
@unlink($filepath);
common_server_error(_t('Error inserting avatar.'));
$this->show_form(_t('Avatar updated.'), true);
}
-
+
function scale_avatar($user, $avatar, $size) {
$image_s = imagecreatetruecolor($size, $size);
$image_a = $this->avatar_to_image($avatar);
-
+
$square = min($avatar->width, $avatar->height);
-
+
imagecopyresampled($image_s, $image_a, 0, 0, 0, 0,
$size, $size, $square, $square);
- $ext = ($avatar->mediattype == 'image/jpeg') ? ".jpg" : ".png";
-
- $filename = common_avatar_filename($user, $ext, $size);
-
+ $ext = ($avatar->mediattype == 'image/jpeg') ? ".jpeg" : ".png";
+
+ $filename = common_avatar_filename($user, $ext, $size, common_timestamp());
+
if ($avatar->mediatype == 'image/jpeg') {
imagejpeg($image_s, common_avatar_path($filename));
} else {
imagepng($image_s, common_avatar_path($filename));
}
-
+
$scaled = DB_DataObject::factory('avatar');
$scaled->profile_id = $avatar->profile_id;
$scaled->width = $size;
$scaled->mediatype = ($avatar->mediattype == 'image/jpeg') ? 'image/jpeg' : 'image/png';
$scaled->filename = $filename;
$scaled->url = common_avatar_url($filename);
-
+ $scaled->created = DB_DataObject_Cast::dateTime(); # current time
+
return $scaled;
}
-
+
function avatar_to_image($avatar) {
$filepath = common_avatar_path($avatar->filename);
if ($avatar->mediatype == 'image/gif') {
return imagecreatefromgif($filepath);
} else if ($avatar->mediatype == 'image/jpeg') {
- return imagecreatefromjpeg($filepath);
+ return imagecreatefromjpeg($filepath);
} else if ($avatar->mediatype == 'image/png') {
return imagecreatefrompng($filepath);
} else {
return NULL;
}
}
-
+
function delete_old_avatars($user) {
$avatar = DB_DataObject::factory('avatar');
$avatar->profile_id = $user->id;
$avatar->find();
while ($avatar->fetch()) {
+ unlink(common_avatar_path($avatar->filename));
$avatar->delete();
}
+ return true;
}
}