Your IP : 216.73.216.48


Current Path : /srv/www/codedit/models/
Upload File :
Current File : //srv/www/codedit/models/SitePages.php

<?php

namespace app\models;

use Yii;
use yii\behaviors\TimestampBehavior;
use yii\db\Expression;

class SitePages extends \yii\db\ActiveRecord {

    public static function tableName() {
        return '{{%site_pages}}';
    }

    public function behaviors() {
        return [
            [
                'class' => TimestampBehavior::className(),
                'createdAtAttribute' => 'date_added',
                'updatedAtAttribute' => 'last_updated',
            ],
        ];
    }

    public function rules() {
        return [
            [['title', 'url_slug', 'content'], 'required'],
            [['content'], 'string'],
            [['top_menu', 'is_published', 'date_added', 'views', 'last_updated'], 'integer'],
            [['title'], 'string', 'max' => 50],
        ];
    }

    public function attributeLabels() {
        return [
            'page_id' => Yii::t('app', 'ID'),
            'title' => Yii::t('app', 'Заглавие'),
            'url_slug' => Yii::t('app', 'URL адрес'),
            'content' => Yii::t('app', 'Съдържание'),
            'top_menu' => Yii::t('app', 'Линк в главното меню?'),
            'is_published' => Yii::t('app', 'Публикувана?'),
            'views' => Yii::t('app', 'Прегледи'),
            'date_added' => Yii::t('app', 'Дата на добавяне'),
            'last_updated' => Yii::t('app', 'Дата на последна редакция'),
        ];
    }

    public function addPage() {
        return $this->save();
    }

    public function editPage($pageInfo) {
        return $pageInfo->save();
    }

    public function setPageOrder($pageID, $order) {
        $pageInfo = SitePages::findOne($pageID);
        $pageInfo->order = $order;
        return $pageInfo->save();
    }

    public function publishPage($pageInfo) {
        $pageInfo->is_published = 1;
        return $pageInfo->save();
    }

    public function deletePage($pageInfo) {
        return $pageInfo->delete();
    }

    public function getPages($where = []) {
        $cacheKey = md5('view-pages-where-' . json_encode($where));
        $pages = Yii::$app->cache->get($cacheKey);
        if ($pages === false) {
            if ($where) {
                $pages = $this->find()->where($where)->orderBy('order');
            } else {
                $pages = $this->find()->orderBy('order');
            }
            Yii::$app->cache->set($cacheKey, $pages, 5 * 60);
        }
        return $pages;
    }

    public function getPage($pageID) {
        $cacheKey = md5('view-page-id-' . $pageID);
        $page = Yii::$app->cache->get($cacheKey);
        if ($page === false) {
            $page = SitePages::findOne($pageID);
            Yii::$app->cache->set($cacheKey, $page, 5 * 60);
        }
        return $page;
    }

    public function getPageByUrl($urlSlug) {
        $cacheKey = md5('view-page-url-' . $urlSlug);
        $page = Yii::$app->cache->get($cacheKey);
        if ($page === false) {
            $page = $this->find()->where(['url_slug' => $urlSlug])->one();
            Yii::$app->cache->set($cacheKey, $page, 5 * 60);
        }
        return $page;
    }

    public function incrementViews($pageInfo) {
        ++$pageInfo->views;
        return $pageInfo->save();
    }

}