Your IP : 216.73.216.79


Current Path : /var/www/html/dosm/backend/controllers/
Upload File :
Current File : /var/www/html/dosm/backend/controllers/ContentPublicationController.php

<?php

namespace backend\controllers;

use Yii;
use backend\models\PublicationDocument;
use backend\models\PublicationDocumentTranslation;
use backend\models\PublicationDocumentSearch;
use backend\models\PublicationVersion;
use backend\models\PublicationVersionSearch;
use backend\models\PublicationChapter;
use backend\models\PublicationChapterSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\web\UploadedFile;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\filters\AccessControl;

class ContentPublicationController extends Controller {

    /**
     * {@inheritdoc}
     */
    public function behaviors() {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['post'],
                ],
            ],
        ];
    }

    /**
     * Lists all PublicationDocument models.
     * @return mixed
     */
    public function actionIndex() {
        $searchModel = new PublicationDocumentSearch();
        // $searchModel->document_category = 'annual_report';
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

        return $this->render('index', [
                    'searchModel' => $searchModel,
                    'dataProvider' => $dataProvider,
        ]);
    }

    public function actionView($id) {
        return $this->render('view', [
                    'model' => $this->findModel($id),
        ]);
    }

    public function actionCreate() {
        $model = new PublicationDocument();
        $model->created_at = date("Y-m-d H:i:s");
        $model->created_by = Yii::$app->user->identity->id;
        $model->updated_at = date("Y-m-d H:i:s");
        $model->updated_by = Yii::$app->user->identity->id;
        $model->document_language = 'English';
        $model->document_code = (new \yii\db\Query)->select(new \yii\db\Expression('UUID()'))->scalar();
        if ($model->load(Yii::$app->request->post())) {

            $model->document_image = UploadedFile::getInstance($model, 'document_image');
            if (!empty($model->document_image)) {
                $document_image = 'uploads/publications/img_' . date("YmdHis") . '.' . $model->document_image->extension;
                if ($model->document_image->saveAs('../' . $document_image))
                    $model->document_image = $document_image;
            }

            if (!empty($model->document_portal))
                $model->document_portal = json_encode($model->document_portal);

            if ($model->save()) {

                $modeltranslation = new PublicationDocumentTranslation();
                $modeltranslation->document_translation_parent_id = $model->document_id;
                $modeltranslation->document_translation_title = $model->document_title;
                $modeltranslation->document_translation_language = $model->document_language;
                $modeltranslation->document_translation_main = 1;
                $modeltranslation->created_at = date("Y-m-d H:i:s");
                $modeltranslation->created_by = Yii::$app->user->identity->id;
                $modeltranslation->updated_at = date("Y-m-d H:i:s");
                $modeltranslation->updated_by = Yii::$app->user->identity->id;
                $modeltranslation->save();

                return $this->redirect(['index']);
            }
        }
        return $this->render('create', [
                    'model' => $model,
        ]);
    }

    public function actionUpdate($id) {
        $model = $this->findModel($id);
        $original_meta_img = $model->meta_img;
        $model->updated_at = date("Y-m-d H:i:s");
        $model->updated_by = Yii::$app->user->identity->id;
        $original_thumbnail = $model->document_image;
        if (!empty($model->document_portal))
            $model->document_portal = json_decode($model->document_portal);

        $translation_id = '';

        if (($modeltranslation = PublicationDocumentTranslation::findOne(['document_translation_parent_id' => $model->document_id, 'document_translation_main' => 1])) !== null) {
            $translation_id = $modeltranslation->document_translation_id;
            $model->document_title = $modeltranslation->document_translation_title;
            $model->document_language = $modeltranslation->document_translation_language;
        }

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

            $model->document_image = UploadedFile::getInstance($model, 'document_image');
            if (!empty($model->document_image)) {
                $document_image = 'uploads/publications/img_' . date("YmdHis") . '.' . $model->document_image->extension;
                if ($model->document_image->saveAs('../' . $document_image))
                    $model->document_image = $document_image;
            } else
                $model->document_image = $original_thumbnail;

            if (!empty($model->document_portal))
                $model->document_portal = json_encode($model->document_portal);

            if ($model->save()) {
                if (($modeltranslation = PublicationDocumentTranslation::findOne($translation_id)) !== null) {
                    $modeltranslation->document_translation_title = $model->document_title;
                    $modeltranslation->document_translation_language = $model->document_language;
                    $modeltranslation->updated_at = date("Y-m-d H:i:s");
                    $modeltranslation->updated_by = Yii::$app->user->identity->id;
                    $modeltranslation->save();
                }

                //insert new translation
                if (isset($_POST['newtranslation']) && !empty($_POST['newtranslation'])) {
                    foreach ($_POST['newtranslation'] as $newno) {
                        $modeltranslationnew = new PublicationDocumentTranslation();
                        $modeltranslationnew->document_translation_parent_id = $model->document_id;
                        $modeltranslationnew->document_translation_title = $_POST['new_title_' . $newno];
                        $modeltranslationnew->document_translation_language = $_POST['new_language_' . $newno];
                        $modeltranslationnew->document_translation_main = 0;
                        $modeltranslationnew->created_at = date("Y-m-d H:i:s");
                        $modeltranslationnew->created_by = Yii::$app->user->identity->id;
                        $modeltranslationnew->updated_at = date("Y-m-d H:i:s");
                        $modeltranslationnew->updated_by = Yii::$app->user->identity->id;
                        $modeltranslationnew->save();
                    }
                }

                //update translation
                if (isset($_POST['oldtranslation']) && !empty($_POST['oldtranslation'])) {
                    foreach ($_POST['oldtranslation'] as $oldtranslation) {
                        if (($modeltranslationupdate = PublicationDocumentTranslation::findOne($oldtranslation)) !== null) {
                            $modeltranslationupdate->document_translation_title = $_POST['old_title_' . $oldtranslation];
                            $modeltranslationupdate->document_translation_language = $_POST['old_language_' . $oldtranslation];
                            $modeltranslationupdate->updated_at = date("Y-m-d H:i:s");
                            $modeltranslationupdate->updated_by = Yii::$app->user->identity->id;
                            $modeltranslationupdate->save();
                        }
                    }
                }

                return $this->redirect(['index']);
            }
        }
        return $this->render('update', ['model' => $model,]);
    }

    public function actionAddtranslation($id) {
        $modeltranslation = new PublicationDocumentTranslation();
        $modeltranslation->document_translation_parent_id = $id;
        $modeltranslation->document_translation_main = 0;
        $modeltranslation->created_at = date("Y-m-d H:i:s");
        $modeltranslation->created_by = Yii::$app->user->identity->id;
        $modeltranslation->updated_at = date("Y-m-d H:i:s");
        $modeltranslation->updated_by = Yii::$app->user->identity->id;
        if ($modeltranslation->save(false))
            return $this->redirect(['update', 'id' => $id]);
    }

    public function actionDeletetranslation($id) {
        if (($model = PublicationDocumentTranslation::findOne($id)) !== null) {
            $model->delete();
        }
    }

    public function actionSetmain($id) {
        //set all document_main = 0
        PublicationDocument::updateAll(['document_main' => 0]);

        //set selected id document_main = 1
        if (($model = PublicationDocument::findOne($id)) !== null) {
            $model->document_main = 1;
            $model->save(false);
        }
        return $this->redirect(['index']);
    }

    public function actionSorting($data = '') {
        $count = 0;
        $data_arr = explode(',', $data);
        if (!empty($data_arr)) {
            foreach ($data_arr as $slider_id) {
                $model = PublicationDocument::findOne($slider_id);
                if (!empty($model)) {
                    $count++;
                    $model->document_sorting = $count;
                    $model->save(false);
                }
            }
        }

        return $data;
    }

    protected function findModel($id) {
        if (($model = PublicationDocument::findOne($id)) !== null) {
            return $model;
        }

        throw new NotFoundHttpException(M::t('app', 'PageNotExist'));
    }

    public function actionVersion_index($document_id = '') {
        $searchModel = new PublicationVersionSearch();
        $searchModel->document_id = $document_id;
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

        return $this->render('version_index', [
                    'searchModel' => $searchModel,
                    'dataProvider' => $dataProvider,
                    'document_id' => $document_id,
        ]);
    }

    public function actionCreate_version($document_id = '') {
        $model = new PublicationVersion();
        $model->created_at = date("Y-m-d H:i:s");
        $model->created_by = Yii::$app->user->identity->id;
        $model->updated_at = date("Y-m-d H:i:s");
        $model->updated_by = Yii::$app->user->identity->id;
        $model->approval_status = 'appStatus02';
        $model->document_id = $document_id;

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

            $model->version_img = UploadedFile::getInstance($model, 'version_img');
            if (!empty($model->version_img)) {
                $version_img = 'uploads/publications/version_' . date("YmdHis") . '.' . $model->version_img->extension;
                if ($model->version_img->saveAs('../' . $version_img))
                    $model->version_img = $version_img;
            }

            if ($model->save()) {

                return $this->redirect(['version_index', 'document_id' => $document_id]);
            }
        }

        return $this->render('create_version', [
                    'model' => $model,
                    'document_id' => $document_id,
        ]);
    }

    public function actionUpdate_version($id, $document_id = '') {
        $model = PublicationVersion::findOne($id);
        $model->updated_at = date("Y-m-d H:i:s");
        $model->updated_by = Yii::$app->user->identity->id;
        $model->document_id = $document_id;

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

            if ($model->save()) {
                return $this->redirect(['version_index', 'document_id' => $document_id]);
            }
        }

        return $this->render('update_version', [
                    'model' => $model,
        ]);
    }

    public function actionDelete($id) {
        $model = PublicationVersion::findOne($id);
        $document_id = $model->document_id;
        $model->delete();
        return $this->redirect(['version_index', 'document_id' => $document_id]);
    }

    public function actionChapter_index($version_id = '') {
        $searchModel = new PublicationChapterSearch();
        $searchModel->version_id = $version_id;
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

        return $this->render('chapter_index', [
                    'document_id' => $version_id,
                    'searchModel' => $searchModel,
                    'dataProvider' => $dataProvider,
        ]);
    }

    public function actionCreate_chapter($version_id) {
        $model = new PublicationChapter();
        $model->version_id = $version_id;
        $model->created_at = date("Y-m-d H:i:s");
        $model->created_by = Yii::$app->user->identity->id;
        $model->updated_at = date("Y-m-d H:i:s");
        $model->updated_by = Yii::$app->user->identity->id;
        if ($model->load(Yii::$app->request->post())) {
            $model->chapter_ebook1 = UploadedFile::getInstance($model, 'chapter_ebook1');
            if (!empty($model->chapter_ebook1)) {
                $chapter_ebook1 = 'uploads/publications/' . date("YmdHis") . '.' . $model->chapter_ebook1->extension;
                if ($model->chapter_ebook1->saveAs('../' . $chapter_ebook1))
                    $model->chapter_ebook1 = $chapter_ebook1;
            }

            $model->chapter_ebook2 = UploadedFile::getInstance($model, 'chapter_ebook2');
            if (!empty($model->chapter_ebook2)) {
                $chapter_ebook2 = 'uploads/publications/' . date("YmdHis") . '.' . $model->chapter_ebook2->extension;
                if ($model->chapter_ebook2->saveAs('../' . $chapter_ebook2))
                    $model->chapter_ebook2 = $chapter_ebook2;
            }

            if ($model->save())
                return $this->redirect(['chapter_index', 'version_id' => $version_id]);
        }
        return $this->render('create_chapter', ['model' => $model]);
    }

    public function actionUpdate_chapter($chapter_id) {
        $model = PublicationChapter::findOne($chapter_id);
        ;
        $original_chapter_ebook1 = $model->chapter_ebook1;
        $original_chapter_ebook2 = $model->chapter_ebook2;
        $model->updated_at = date("Y-m-d H:i:s");
        $model->updated_by = Yii::$app->user->identity->id;
        if ($model->load(Yii::$app->request->post())) {
            $model->chapter_ebook1 = UploadedFile::getInstance($model, 'chapter_ebook1');
            if (!empty($model->chapter_ebook1)) {
                $chapter_ebook1 = 'uploads/publications/' . date("YmdHis") . '.' . $model->chapter_ebook1->extension;
                if ($model->chapter_ebook1->saveAs('../' . $chapter_ebook1))
                    $model->chapter_ebook1 = $chapter_ebook1;
            } else {
                $model->chapter_ebook1 = $original_chapter_ebook1;
            }

            $model->chapter_ebook2 = UploadedFile::getInstance($model, 'chapter_ebook2');
            if (!empty($model->chapter_ebook2)) {
                $chapter_ebook2 = 'uploads/publications/' . date("YmdHis") . '.' . $model->chapter_ebook2->extension;
                if ($model->chapter_ebook2->saveAs('../' . $chapter_ebook2))
                    $model->chapter_ebook2 = $chapter_ebook2;
            } else {
                $model->chapter_ebook2 = $original_chapter_ebook2;
            }

            if ($model->save())
                return $this->redirect(['chapter_index', 'version_id' => $model->version_id]);
        }
        return $this->render('update_chapter', ['model' => $model,]);
    }

    public function actionDelete_chapter($chapter_id) {
        $model = PublicationChapter::find()->where(['chapter_id' => $chapter_id])->one();
        $model->delete();
        return $this->redirect(['chapter_index', 'version_id' => $model->version_id]);
    }

    public function actionDelete_index($id) {
        if (($model = PublicationDocument::findOne($id)) !== null) {
            $model->delete();
            return $this->redirect(['index']);
        }
    }

}