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