]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/avatar.php
paginate on showstream
[quix0rs-gnu-social.git] / actions / avatar.php
index 851ef23f4a257915a9b89ce6a2fbc68836f49066..9c736cd3b6fd65001372f013f45e7ab9479818c9 100644 (file)
@@ -19,6 +19,8 @@
 
 if (!defined('LACONICA')) { exit(1); }
 
+require_once(INSTALLDIR.'/lib/settingsaction.php');
+
 class AvatarAction extends SettingsAction {
 
        function show_form($msg=NULL, $success=false) {
@@ -34,7 +36,8 @@ class AvatarAction extends SettingsAction {
                        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);
@@ -43,7 +46,8 @@ class AvatarAction extends SettingsAction {
                        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',
@@ -58,11 +62,9 @@ class AvatarAction extends SettingsAction {
                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() {
@@ -100,10 +102,10 @@ class AvatarAction extends SettingsAction {
                        $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)) {
@@ -121,9 +123,13 @@ class AvatarAction extends SettingsAction {
                $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
@@ -133,7 +139,6 @@ class AvatarAction extends SettingsAction {
                        common_server_error(_t('Error deleting old avatars.'));
                        return;
                }
-
                if (!$avatar->insert()) {
                        @unlink($filepath);
                        common_server_error(_t('Error inserting avatar.'));
@@ -151,26 +156,26 @@ class AvatarAction extends SettingsAction {
 
                $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;
@@ -179,16 +184,17 @@ class AvatarAction extends SettingsAction {
                $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 {
@@ -196,14 +202,16 @@ class AvatarAction extends SettingsAction {
                        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;
        }
 }