]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/avatar.php
even better boolean handling
[quix0rs-gnu-social.git] / actions / avatar.php
index 374cef41327317b5723e42456ae40f437a649999..9c736cd3b6fd65001372f013f45e7ab9479818c9 100644 (file)
@@ -36,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);
@@ -45,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',
@@ -60,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',
-                                                                         'value' =>_t('Upload')));
+               common_submit('submit', _t('Upload'));
                common_element_end('form');
+               common_show_footer();
        }
 
        function handle_post() {
@@ -102,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)) {
@@ -124,8 +124,12 @@ class AvatarAction extends SettingsAction {
                $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
@@ -135,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.'));
@@ -153,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;
@@ -182,16 +185,16 @@ class AvatarAction extends SettingsAction {
                $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 {
@@ -199,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;
        }
 }