SiteController.php 5.32 KB
<?php
namespace backend\controllers;

use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use common\models\LoginForm;
use yii\filters\VerbFilter;
use backend\models\UploadForm;
use yii\web\UploadedFile;
use yii\imagine\Image;
/**
 * Site controller
 */
class SiteController extends Controller
{
    /**
     * @inheritdoc
     */
    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'actions' => ['login', 'error'],
                        'allow' => true,
                    ],
                    [
                        'actions' => ['logout', 'index','create','update','view','delete','download-img', 'download-gallery', 'download-photo' ],
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'],
                ],
            ],
        ];
    }
    /**
     * @inheritdoc
     */
    public function actions()
    {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
        ];
    }

    public function actionIndex()
    {
        return $this->render('index');
    }

    public function actionLogin()
    {
        $this->layout = '/column2';
        if (!\Yii::$app->user->isGuest) {
            return $this->goHome();
        }

        $model = new LoginForm();
        if ($model->load(Yii::$app->request->post()) && $model->login()) {
            return $this->goBack();
        } else {
            return $this->render('login', [
                'model' => $model,
            ]);
        }
    }

    public function actionLogout()
    {
        Yii::$app->user->logout();

        return $this->goHome();
    }

    public function actionDownloadImg()
    {
        $model = new UploadForm();

        if ($model->load(Yii::$app->request->post())) {

            $model->file = UploadedFile::getInstance($model, 'file');
            $md5_file = md5_file($model->file->tempName);
            $imgDir = Yii::getAlias('@storage/'.$md5_file.'/');
            $imageAlias = Yii::getAlias($imgDir.'120x120'.'.'.$model->file->extension);
            $imageLink = '/storage/'.$md5_file.'/120x120'.'.'.$model->file->extension;
            if(!is_dir($imgDir)) {
                mkdir($imgDir, 0777, true);
            }
            $model->file->saveAs($imageAlias);
            Image::thumbnail($imageAlias, 120, 120)
                ->save(Yii::getAlias($imageAlias), ['quality' =>
                    50]);

            $message = 'Файл успешно загружен';

            $callback = $_REQUEST['CKEditorFuncNum'];

            die( '<script type="text/javascript">window.parent.CKEDITOR.tools.callFunction("'.$callback.'", "'.$imageLink.'", "'.$message.'" );</script>');

        }

    }

    public function actionDownloadPhoto()
    {
        $model = new UploadForm();

        if ($model->load(Yii::$app->request->post())) {

            $model->file = UploadedFile::getInstance($model, 'file');

            $md5_file = md5_file($model->file->tempName);
            $imgDir = Yii::getAlias('@storage/'.$md5_file.'/');
            $imageAlias = Yii::getAlias($imgDir.'480x365'.'.'.$model->file->extension);
            $imageLink = '/storage/'.$md5_file.'/480x365'.'.'.$model->file->extension;
            if(!is_dir($imgDir)) {
                mkdir($imgDir, 0777, true);
            }
            $model->file->saveAs($imageAlias);
            Image::thumbnail($imageAlias, 480, 365, $mode = \Imagine\Image\ManipulatorInterface::THUMBNAIL_INSET)
                ->save(Yii::getAlias($imageAlias), ['quality' =>
                    50]);

            return json_encode(['link'=>$imageLink]);

        }
    }


    public function actionDownloadGallery()
    {

        $model = new UploadForm();

        if ($model->load(Yii::$app->request->post())) {

            $model->file_three = UploadedFile::getInstance($model, 'file_three');
            $md5_file = md5_file($model->file_three->tempName);
            $imgDir = Yii::getAlias('@storage/images/'.$md5_file.'/');

            $imageAlias = Yii::getAlias($imgDir.'original'.'.'.$model->file_three->extension);

            $imageAlias_224X189 = Yii::getAlias($imgDir.'205X145'.'.'.$model->file_three->extension);
            $imageAlias_44X44 = Yii::getAlias($imgDir.'44X44'.'.'.$model->file_three->extension);

            $imageLink = '/storage/'.$md5_file.'/205X145'.'.'.$model->file_three->extension;
            if(!is_dir($imgDir)) {
                mkdir($imgDir, 0777, true);
            }



            $model->file_three->saveAs($imageAlias);

            Image::thumbnail($imageAlias, 205, 145 )
                ->save(Yii::getAlias($imageAlias_224X189), ['quality' =>
                    50]);

            Image::thumbnail($imageAlias, 44, 44 )
                ->save(Yii::getAlias($imageAlias_44X44), ['quality' =>
                    50]);

            $view = $this->renderPartial('@app/views/site/_gallery_item', [
                'item' => ['image'=>$imageLink],
            ]);

            return json_encode(['link'=>$imageLink, 'view' =>$view]);

        }
    }


}