]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/avatar.php
UNDO: use DB_DataObject join
[quix0rs-gnu-social.git] / actions / avatar.php
index 2244e7c78257387b5468f19a959aad7a8eb3bd37..ac28d81704640f245165f261d17dc2a48a3fc4db 100644 (file)
 
 if (!defined('LACONICA')) { exit(1); }
 
+require_once(INSTALLDIR.'/lib/settingsaction.php');
+
 class AvatarAction extends SettingsAction {
 
+    function get_instructions() {
+               return _t('Upload a new "avatar" (user image) here. ' .
+                                 'You can\'t edit the picture after you upload it, so ' .
+                                 'make sure it\'s more or less square. ' .
+                                 'It must be under the site license, also. ' .
+                                 'Use a picture that belongs to you and that you ' .
+                                 'want to share.');
+       }
+
        function show_form($msg=NULL, $success=false) {
-               common_show_header(_t('Avatar'));
-               $this->settings_menu();
-               $this->message($msg, $success);
+
+               $this->form_header(_t('Avatar'), $msg, $success);
 
                $user = common_current_user();
                $profile = $user->getProfile();
-               $original = $profile->getOriginal();
+               $original = $profile->getOriginalAvatar();
 
                if ($original) {
                        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,10 +54,11 @@ 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_start_element('form', array('enctype' => 'multipart/form-data',
+               common_element_start('form', array('enctype' => 'multipart/form-data',
                                                                                   'method' => 'POST',
                                                                                   'id' => 'avatar',
                                                                                   'action' =>
@@ -58,10 +70,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() {
@@ -99,110 +110,17 @@ 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]));
-               $filepath = common_avatar_path($filename);
-
-               if (!move_uploaded_file($_FILES['avatarfile']['tmp_name'], $filepath)) {
-                       @unlink($_FILES['avatarfile']['tmp_name']);
-                       $this->show_form(_t('System error uploading file.'));
-                       return;
-               }
-
-               $avatar = DB_DataObject::factory('avatar');
-
-               $avatar->profile_id = $user->id;
-               $avatar->width = $info[0];
-               $avatar->height = $info[1];
-               $avatar->mediatype = image_type_to_mime_type($info[2]);
-               $avatar->filename = $filename;
-               $avatar->original = true;
-               $avatar->url = common_avatar_url($filename);
-
-               foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) {
-                       $scaled[] = $this->scale_avatar($user, $avatar, $size);
-               }
-
-               # XXX: start a transaction here
-
-               if (!$this->delete_old_avatars($user)) {
-                       @unlink($filepath);
-                       common_server_error(_t('Error deleting old avatars.'));
-                       return;
-               }
-
-               if (!$avatar->insert()) {
-                       @unlink($filepath);
-                       common_server_error(_t('Error inserting avatar.'));
-                       return;
-               }
-
-               foreach ($scaled as $s) {
-                       if (!$s->insert()) {
-                               common_server_error(_t('Error inserting scaled avatar.'));
-                               return;
-                       }
-               }
-
-               # XXX: end transaction here
+               $user = common_current_user();
+               $profile = $user->getProfile();
 
-               $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);
-               
-               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->height = $size;
-               $scaled->original = false;
-               $scaled->mediatype = ($avatar->mediattype == 'image/jpeg') ? 'image/jpeg' : 'image/png';
-               $scaled->filename = $filename;
-               $scaled->url = common_avatar_url($filename);
-               
-               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);                  
-               } else if ($avatar->mediatype == 'image/png') {
-                       return imagecreatefrompng($filepath);
+               if ($profile->setOriginal($_FILES['avatarfile']['tmp_name'])) {
+                       $this->show_form(_t('Avatar updated.'), true);
                } else {
-                       common_server_error(_t('Unsupported image type:') . $avatar->mediatype);
-                       return NULL;
-               }
-       }
-       
-       function delete_old_avatars($user) {
-               $avatar = DB_DataObject::factory('avatar');
-               $avatar->profile_id = $user->id;
-               $avatar->find();
-               while ($avatar->fetch()) {
-                       $avatar->delete();
+                       $this->show_form(_t('Failed updating avatar.'));
                }
+
+               @unlink($_FILES['avatarfile']['tmp_name']);
        }
 }