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
						
					
					
				<?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(), | 
						|
        ]; | 
						|
    } | 
						|
} |