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