Your IP : 216.73.216.48


Current Path : /var/www/codedit/models/
Upload File :
Current File : //var/www/codedit/models/BlogArticles.php

<?php

namespace app\models;

use Yii;
use yii\behaviors\TimestampBehavior;

class BlogArticles extends \yii\db\ActiveRecord {

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

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

    public function rules() {
        return [
            [['author_id', 'title', 'content', 'date'], 'required'],
            [['author_id', 'is_draft'], 'integer'],
            [['content', 'tags'], 'string'],
            [['date'], 'safe'],
            [['title'], 'string', 'max' => 255],
            [['image'], 'image', 'maxSize' => 2 * 1024 * 1024, 'skipOnEmpty' => true]
        ];
    }

    public function attributeLabels() {
        return [
            'article_id' => Yii::t('app', 'ID на публикацията'),
            'author_id' => Yii::t('app', 'ID на автора'),
            'title' => Yii::t('app', 'Заглавие'),
            'content' => Yii::t('app', 'Съдържание'),
            'tags' => Yii::t('app', 'Тагове'),
            'date' => Yii::t('app', 'Дата'),
            'is_draft' => Yii::t('app', 'Чернова?'),
            'image' => Yii::t('app', 'Изображение'),
        ];
    }

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

    public function editBlogArticle($articleInfo) {
        return $articleInfo->save();
    }

    public function publishBlogArticle($articleInfo) {
        $articleInfo->is_draft = 0;
        return $articleInfo->save();
    }

    public function deleteBlogArticle($articleInfo) {
        return $articleInfo->delete();
    }

    public function getBlogArticle($articleID) {
        $cacheKey = md5('view-article-id-' . $articleID);
        $article = Yii::$app->cache->get($cacheKey);
        if ($article === false) {
            $article = BlogArticles::findOne($articleID);
            Yii::$app->cache->set($cacheKey, $article, 5 * 60);
        }
        return $article;
    }

    public function getBlogArticles($where = [], $limit = null) {
        $cacheKey = md5('view-articles-where-' . json_encode($where) . '-limit-' . json_encode($limit));
        $articles = Yii::$app->cache->get($cacheKey);
        if ($articles === false) {
            $articles = $this->find()->where($where)->orderBy('date DESC')->limit($limit);
            Yii::$app->cache->set($cacheKey, $articles, 5 * 60);
        }
        return $articles;
    }

    public function getAuthor() {
        return $this->hasOne(Members::className(), ['member_id' => 'author_id']);
    }

    public function getComments() {
        return $this->hasMany(BlogComments::className(), ['article_id' => 'article_id'])->count();
    }

}