You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.2 KiB
88 lines
2.2 KiB
6 years ago
|
<?php
|
||
|
|
||
|
namespace common\modules\blog\entities;
|
||
|
|
||
|
use core\behaviors\MetaBehavior;
|
||
|
use core\entities\Meta;
|
||
|
use yii\db\ActiveRecord;
|
||
|
use Yii;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @property integer $id
|
||
|
* @property string $name
|
||
|
* @property string $slug
|
||
|
* @property string $title
|
||
|
* @property string $description
|
||
|
* @property integer $sort
|
||
|
* @property string $meta_json
|
||
|
* @property Meta $meta
|
||
|
*/
|
||
|
class BlogCategory extends ActiveRecord
|
||
|
{
|
||
|
public $meta;
|
||
|
|
||
|
public static function create($name, $slug, $title, $description, $sort, Meta $meta): self
|
||
|
{
|
||
|
$category = new static();
|
||
|
$category->name = $name;
|
||
|
$category->slug = $slug;
|
||
|
$category->title = $title;
|
||
|
$category->description = $description;
|
||
|
$category->sort = $sort;
|
||
|
$category->meta = $meta;
|
||
|
return $category;
|
||
|
}
|
||
|
|
||
|
public function edit($name, $slug, $title, $description, $sort, Meta $meta): void
|
||
|
{
|
||
|
$this->name = $name;
|
||
|
$this->slug = $slug;
|
||
|
$this->title = $title;
|
||
|
$this->description = $description;
|
||
|
$this->sort = $sort;
|
||
|
$this->meta = $meta;
|
||
|
}
|
||
|
|
||
|
public function attributeLabels()
|
||
|
{
|
||
|
return [
|
||
|
'id' => Yii::t('blog', 'ID'),
|
||
|
'name' => Yii::t('blog', 'Name'),
|
||
|
'slug' => Yii::t('blog', 'SEO link'),
|
||
|
'sort' => Yii::t('blog', 'Sort'),
|
||
|
'title' => Yii::t('blog', 'Title'),
|
||
|
'description' => Yii::t('blog', 'Description'),
|
||
|
'meta.title' => Yii::t('blog', 'Meta Title'),
|
||
|
'meta.description' => Yii::t('blog', 'Meta Description'),
|
||
|
'meta.keywords' => Yii::t('blog', 'Meta Keywords'),
|
||
|
];
|
||
|
}
|
||
|
|
||
|
public function getSeoTitle(): string
|
||
|
{
|
||
|
return $this->meta->title ?: $this->getHeadingTile();
|
||
|
}
|
||
|
|
||
|
public function getHeadingTile(): string
|
||
|
{
|
||
|
return $this->title ?: $this->name;
|
||
|
}
|
||
|
|
||
|
public function getPostsCount(): int
|
||
|
{
|
||
|
return BlogPost::find()->where(['category_id' => $this->id])->count('*');
|
||
|
}
|
||
|
|
||
|
public static function tableName(): string
|
||
|
{
|
||
|
return '{{%blog_categories}}';
|
||
|
}
|
||
|
|
||
|
public function behaviors(): array
|
||
|
{
|
||
|
return [
|
||
|
MetaBehavior::className(),
|
||
|
];
|
||
|
}
|
||
|
}
|