Your IP : 216.73.216.48
<?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();
}
}