]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - actions/avatarsettings.php
Do not name anything getOriginal (because DB_DataObject calls that)
[quix0rs-gnu-social.git] / actions / avatarsettings.php
index 234986e5f7b50e32c035e5364cc7306e00ec7009..bc671c621be1480b37a247f8f5320009e628b0b1 100644 (file)
@@ -32,7 +32,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
     exit(1);
 }
 
-require_once INSTALLDIR.'/lib/accountsettingsaction.php';
+
 
 define('MAX_ORIGINAL', 480);
 
@@ -49,7 +49,7 @@ define('MAX_ORIGINAL', 480);
  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
  * @link     http://status.net/
  */
-class AvatarsettingsAction extends AccountSettingsAction
+class AvatarsettingsAction extends SettingsAction
 {
     var $mode = null;
     var $imagefile = null;
@@ -104,13 +104,11 @@ class AvatarsettingsAction extends AccountSettingsAction
 
         if (!$profile) {
             common_log_db_error($user, 'SELECT', __FILE__);
-            // TRANS: Server error displayed in avatar upload page when no matching profile can be found for a user.
-            $this->serverError(_('User without matching profile.'));
+            // TRANS: Error message displayed when referring to a user without a profile.
+            $this->serverError(_('User has no profile.'));
             return;
         }
 
-        $original = $profile->getOriginalAvatar();
-
         $this->elementStart('form', array('enctype' => 'multipart/form-data',
                                           'method' => 'post',
                                           'id' => 'form_settings_avatar',
@@ -124,36 +122,43 @@ class AvatarsettingsAction extends AccountSettingsAction
 
         if (Event::handle('StartAvatarFormData', array($this))) {
             $this->elementStart('ul', 'form_data');
-            if ($original) {
+            try {
+                $original = Avatar::getUploaded($profile);
+
                 $this->elementStart('li', array('id' => 'avatar_original',
                                                 'class' => 'avatar_view'));
                 // TRANS: Header on avatar upload page for thumbnail of originally uploaded avatar (h2).
                 $this->element('h2', null, _("Original"));
                 $this->elementStart('div', array('id'=>'avatar_original_view'));
-                $this->element('img', array('src' => $original->url,
+                $this->element('img', array('src' => $original->displayUrl(),
                                             'width' => $original->width,
                                             'height' => $original->height,
                                             'alt' => $user->nickname));
                 $this->elementEnd('div');
                 $this->elementEnd('li');
+            } catch (NoResultException $e) {
+                // No original avatar found!
             }
 
-            $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-
-            if ($avatar) {
+            try {
+                $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
                 $this->elementStart('li', array('id' => 'avatar_preview',
                                                 'class' => 'avatar_view'));
                 // TRANS: Header on avatar upload page for thumbnail of to be used rendition of uploaded avatar (h2).
                 $this->element('h2', null, _("Preview"));
                 $this->elementStart('div', array('id'=>'avatar_preview_view'));
-                $this->element('img', array('src' => $original->url,
+                $this->element('img', array('src' => $avatar->displayUrl(),
                                             'width' => AVATAR_PROFILE_SIZE,
                                             'height' => AVATAR_PROFILE_SIZE,
                                             'alt' => $user->nickname));
                 $this->elementEnd('div');
-                // TRANS: Button on avatar upload page to delete current avatar.
-                $this->submit('delete', _m('BUTTON','Delete'));
+                if (!empty($avatar->filename)) {
+                    // TRANS: Button on avatar upload page to delete current avatar.
+                    $this->submit('delete', _m('BUTTON','Delete'));
+                }
                 $this->elementEnd('li');
+            } catch (Exception $e) {
+                // No previously uploaded avatar to preview.
             }
 
             $this->elementStart('li', array ('id' => 'settings_attach'));
@@ -188,13 +193,11 @@ class AvatarsettingsAction extends AccountSettingsAction
 
         if (!$profile) {
             common_log_db_error($user, 'SELECT', __FILE__);
-            // TRANS: Server error displayed in avatar upload page when no matching profile can be found for a user.
-            $this->serverError(_('User without matching profile.'));
+            // TRANS: Error message displayed when referring to a user without a profile.
+            $this->serverError(_('User has no profile.'));
             return;
         }
 
-        $original = $profile->getOriginalAvatar();
-
         $this->elementStart('form', array('method' => 'post',
                                           'id' => 'form_settings_avatar',
                                           'class' => 'form_settings',
@@ -277,6 +280,7 @@ class AvatarsettingsAction extends AccountSettingsAction
 
         $token = $this->trimmed('token');
         if (!$token || $token != common_session_token()) {
+            // TRANS: Client error displayed when the session token does not match or is not given.
             $this->showForm(_('There was a problem with your session token. '.
                                'Try again, please.'));
             return;
@@ -351,7 +355,7 @@ class AvatarsettingsAction extends AccountSettingsAction
      *
      * @return void
      */
-    function cropAvatar()
+    public function cropAvatar()
     {
         $filedata = $_SESSION['FILEDATA'];
 
@@ -368,7 +372,7 @@ class AvatarsettingsAction extends AccountSettingsAction
         $dest_y = $this->arg('avatar_crop_y') ? $this->arg('avatar_crop_y'):0;
         $dest_w = $this->arg('avatar_crop_w') ? $this->arg('avatar_crop_w'):$file_d;
         $dest_h = $this->arg('avatar_crop_h') ? $this->arg('avatar_crop_h'):$file_d;
-        $size = min($dest_w, $dest_h, MAX_ORIGINAL);
+        $size = floor(min($dest_w, $dest_h, MAX_ORIGINAL));
 
         $user = common_current_user();
         $profile = $user->getProfile();
@@ -399,14 +403,7 @@ class AvatarsettingsAction extends AccountSettingsAction
         $user = common_current_user();
         $profile = $user->getProfile();
 
-        $avatar = $profile->getOriginalAvatar();
-        if($avatar) $avatar->delete();
-        $avatar = $profile->getAvatar(AVATAR_PROFILE_SIZE);
-        if($avatar) $avatar->delete();
-        $avatar = $profile->getAvatar(AVATAR_STREAM_SIZE);
-        if($avatar) $avatar->delete();
-        $avatar = $profile->getAvatar(AVATAR_MINI_SIZE);
-        if($avatar) $avatar->delete();
+        Avatar::deleteFromProfile($profile);
 
         // TRANS: Success message for deleting a user avatar.
         $this->showForm(_('Avatar deleted.'), true);
@@ -421,7 +418,7 @@ class AvatarsettingsAction extends AccountSettingsAction
     function showStylesheets()
     {
         parent::showStylesheets();
-        $this->cssLink('css/jquery.Jcrop.css','base','screen, projection, tv');
+        $this->cssLink('js/extlib/jquery-jcrop/css/jcrop.css','base','screen, projection, tv');
     }
 
     /**
@@ -434,8 +431,8 @@ class AvatarsettingsAction extends AccountSettingsAction
         parent::showScripts();
 
         if ($this->mode == 'crop') {
-            $this->script('jcrop/jquery.Jcrop.min.js');
-            $this->script('jcrop/jquery.Jcrop.go.js');
+            $this->script('extlib/jquery-jcrop/jcrop.js');
+            $this->script('jcrop.go.js');
         }
 
         $this->autofocus('avatarfile');