From 4ca716ec47863f3eef6c851de7a4f37650f8ea6e Mon Sep 17 00:00:00 2001
From: Frederic Guillot <fred@kanboard.net>
Date: Sat, 26 Mar 2016 17:25:54 -0400
Subject: Move avatar actions to controller AvatarFile

---
 app/Controller/AvatarFile.php          | 39 +++++++++++++++++++++++++++++++++-
 app/Controller/User.php                | 37 --------------------------------
 app/Model/File.php                     |  1 -
 app/Template/avatar_file/show.php      | 20 +++++++++++++++++
 app/Template/user/avatar.php           | 20 -----------------
 app/Template/user/sidebar.php          |  4 ++--
 app/User/Avatar/AvatarFileProvider.php |  2 +-
 7 files changed, 61 insertions(+), 62 deletions(-)
 create mode 100644 app/Template/avatar_file/show.php
 delete mode 100644 app/Template/user/avatar.php

diff --git a/app/Controller/AvatarFile.php b/app/Controller/AvatarFile.php
index f8298e16..a47cca66 100644
--- a/app/Controller/AvatarFile.php
+++ b/app/Controller/AvatarFile.php
@@ -14,9 +14,46 @@ use Kanboard\Core\Thumbnail;
 class AvatarFile extends Base
 {
     /**
-     * Show Avatar image and send aggressive caching headers
+     * Display avatar page
      */
     public function show()
+    {
+        $user = $this->getUser();
+
+        $this->response->html($this->helper->layout->user('avatar_file/show', array(
+            'user' => $user,
+        )));
+    }
+
+    /**
+     * Upload Avatar
+     */
+    public function upload()
+    {
+        $user = $this->getUser();
+
+        if (! $this->avatarFile->uploadFile($user['id'], $this->request->getFileInfo('avatar'))) {
+            $this->flash->failure(t('Unable to upload the file.'));
+        }
+
+        $this->response->redirect($this->helper->url->to('AvatarFile', 'show', array('user_id' => $user['id'])));
+    }
+
+    /**
+     * Remove Avatar image
+     */
+    public function remove()
+    {
+        $this->checkCSRFParam();
+        $user = $this->getUser();
+        $this->avatarFile->remove($user['id']);
+        $this->response->redirect($this->helper->url->to('AvatarFile', 'show', array('user_id' => $user['id'])));
+    }
+
+    /**
+     * Show Avatar image (public)
+     */
+    public function image()
     {
         $user_id = $this->request->getIntegerParam('user_id');
         $size = $this->request->getStringParam('size', 48);
diff --git a/app/Controller/User.php b/app/Controller/User.php
index 8c02ef7f..f7d7d2e0 100644
--- a/app/Controller/User.php
+++ b/app/Controller/User.php
@@ -405,41 +405,4 @@ class User extends Base
             'user' => $user,
         )));
     }
-
-    /**
-     * Display avatar page
-     */
-    public function avatar()
-    {
-        $user = $this->getUser();
-
-        $this->response->html($this->helper->layout->user('user/avatar', array(
-            'user' => $user,
-        )));
-    }
-
-    /**
-     * Upload Avatar
-     */
-    public function uploadAvatar()
-    {
-        $user = $this->getUser();
-
-        if (! $this->avatarFile->uploadFile($user['id'], $this->request->getFileInfo('avatar'))) {
-            $this->flash->failure(t('Unable to upload the file.'));
-        }
-
-        $this->response->redirect($this->helper->url->to('user', 'avatar', array('user_id' => $user['id'])));
-    }
-
-    /**
-     * Remove Avatar image
-     */
-    public function removeAvatar()
-    {
-        $this->checkCSRFParam();
-        $user = $this->getUser();
-        $this->avatarFile->remove($user['id']);
-        $this->response->redirect($this->helper->url->to('user', 'avatar', array('user_id' => $user['id'])));
-    }
 }
diff --git a/app/Model/File.php b/app/Model/File.php
index 5e77060c..e383235c 100644
--- a/app/Model/File.php
+++ b/app/Model/File.php
@@ -5,7 +5,6 @@ namespace Kanboard\Model;
 use Exception;
 use Kanboard\Core\Thumbnail;
 use Kanboard\Event\FileEvent;
-use Kanboard\Core\Tool;
 use Kanboard\Core\ObjectStorage\ObjectStorageException;
 
 /**
diff --git a/app/Template/avatar_file/show.php b/app/Template/avatar_file/show.php
new file mode 100644
index 00000000..266a2ccb
--- /dev/null
+++ b/app/Template/avatar_file/show.php
@@ -0,0 +1,20 @@
+<div class="page-header">
+    <h2><?= t('Avatar') ?></h2>
+</div>
+
+<?= $this->avatar->render($user['id'], $user['username'], $user['name'], $user['email'], $user['avatar_path'], '') ?>
+
+<form method="post" enctype="multipart/form-data" action="<?= $this->url->href('AvatarFile', 'upload', array('user_id' => $user['id'])) ?>">
+    <?= $this->form->csrf() ?>
+    <?= $this->form->label(t('Upload my avatar image'), 'avatar') ?>
+    <?= $this->form->file('avatar') ?>
+
+    <div class="form-actions">
+        <?php if (! empty($user['avatar_path'])): ?>
+            <?= $this->url->link(t('Remove my image'), 'AvatarFile', 'remove', array('user_id' => $user['id']), true, 'btn btn-red') ?>
+        <?php endif ?>
+        <button type="submit" class="btn btn-blue"><?= t('Save') ?></button>
+        <?= t('or') ?>
+        <?= $this->url->link(t('cancel'), 'user', 'show', array('user_id' => $user['id'])) ?>
+    </div>
+</form>
diff --git a/app/Template/user/avatar.php b/app/Template/user/avatar.php
deleted file mode 100644
index c285f44d..00000000
--- a/app/Template/user/avatar.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<div class="page-header">
-    <h2><?= t('Avatar') ?></h2>
-</div>
-
-<?= $this->avatar->render($user['id'], $user['username'], $user['name'], $user['email'], $user['avatar_path'], '') ?>
-
-<form method="post" enctype="multipart/form-data" action="<?= $this->url->href('user', 'uploadAvatar', array('user_id' => $user['id'])) ?>">
-    <?= $this->form->csrf() ?>
-    <?= $this->form->label(t('Upload my avatar image'), 'avatar') ?>
-    <?= $this->form->file('avatar') ?>
-
-    <div class="form-actions">
-        <?php if (! empty($user['avatar_path'])): ?>
-            <?= $this->url->link(t('Remove my image'), 'User', 'removeAvatar', array('user_id' => $user['id']), true, 'btn btn-red') ?>
-        <?php endif ?>
-        <button type="submit" class="btn btn-blue"><?= t('Save') ?></button>
-        <?= t('or') ?>
-        <?= $this->url->link(t('cancel'), 'user', 'show', array('user_id' => $user['id'])) ?>
-    </div>
-</form>
diff --git a/app/Template/user/sidebar.php b/app/Template/user/sidebar.php
index ecadc60d..5ea2e355 100644
--- a/app/Template/user/sidebar.php
+++ b/app/Template/user/sidebar.php
@@ -37,8 +37,8 @@
                 <li <?= $this->app->checkMenuSelection('user', 'edit') ?>>
                     <?= $this->url->link(t('Edit profile'), 'user', 'edit', array('user_id' => $user['id'])) ?>
                 </li>
-                <li <?= $this->app->checkMenuSelection('user', 'avatar') ?>>
-                    <?= $this->url->link(t('Avatar'), 'user', 'avatar', array('user_id' => $user['id'])) ?>
+                <li <?= $this->app->checkMenuSelection('AvatarFile') ?>>
+                    <?= $this->url->link(t('Avatar'), 'AvatarFile', 'show', array('user_id' => $user['id'])) ?>
                 </li>
             <?php endif ?>
 
diff --git a/app/User/Avatar/AvatarFileProvider.php b/app/User/Avatar/AvatarFileProvider.php
index 87a42c07..eea565f0 100644
--- a/app/User/Avatar/AvatarFileProvider.php
+++ b/app/User/Avatar/AvatarFileProvider.php
@@ -23,7 +23,7 @@ class AvatarFileProvider extends Base implements AvatarProviderInterface
      */
     public function render(array $user, $size)
     {
-        $url = $this->helper->url->href('AvatarFile', 'show', array('user_id' => $user['id'], 'size' => $size));
+        $url = $this->helper->url->href('AvatarFile', 'image', array('user_id' => $user['id'], 'size' => $size));
         $title = $this->helper->text->e($user['name'] ?: $user['username']);
         return '<img src="' . $url . '" alt="' . $title . '" title="' . $title . '">';
     }
-- 
cgit v1.2.3