<?php

namespace app\models;
use yii\helpers\Url;

use Yii;

/**
 * This is the model class for table "page".
 *
 * @property int $id
 * @property int $status Скрыть
 * @property int $menu Показывать в меню
 * @property int $created Время создания
 * @property int $updated Время обновления
 * @property int|null $create_user_id Создал
 * @property int|null $update_user_id Обновил
 * @property int $parent_id Родительский раздел
 * @property string|null $title Заголовок страницы
 * @property string $title_menu Заголовок меню
 * @property string $title_seo Title страницы
 * @property string|null $description_seo Meta Description
 * @property string|null $keywords_seo Meta keywords
 * @property string $key Ключевое слово для URL
 * @property int $norder Порядок
 * @property string|null $path Полный путь
 * @property string|null $content Тело страницы
 * @property string|null $index_controller Index Controller
 * @property string|null $index_action Index Action
 * @property string|null $view_controller View Controller
 * @property string|null $view_action View Action
 * @property string|null $index_params
 * @property string $lang Язык страницы
 * @property string|null $layout layout
 *
 * @property User $createUser
 * @property User $updateUser
 */
class Page extends \yii\db\ActiveRecord
{
    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return 'page';
    }

    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['status', 'menu', 'create_user_id', 'update_user_id', 'parent_id', 'norder'], 'integer'],
            [['title_menu', 'title_seo'], 'required'],
            [['content'], 'string'],
            [['title', 'title_menu', 'title_seo', 'path', 'index_controller', 'index_action', 'view_controller', 'view_action', 'index_params', 'layout'], 'string', 'max' => 255],
            [['description_seo', 'keywords_seo', 'key'], 'string', 'max' => 400],
            [['lang'], 'string', 'max' => 3],
            [['create_user_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::class, 'targetAttribute' => ['create_user_id' => 'id']],
            [['update_user_id'], 'exist', 'skipOnError' => true, 'targetClass' => User::class, 'targetAttribute' => ['update_user_id' => 'id']],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'status' => 'Скрыть',
            'menu' => 'Показывать в меню',
            'created' => 'Время создания',
            'updated' => 'Время обновления',
            'create_user_id' => 'Создал',
            'update_user_id' => 'Обновил',
            'parent_id' => 'Родительский раздел',
            'title' => 'Заголовок страницы',
            'title_menu' => 'Заголовок меню',
            'title_seo' => 'Title страницы',
            'description_seo' => 'Meta Description',
            'keywords_seo' => 'Meta keywords',
            'key' => 'Ключевое слово для URL',
            'norder' => 'Порядок',
            'path' => 'Полный путь',
            'content' => 'Тело страницы',
            'index_controller' => 'Index Controller',
            'index_action' => 'Index Action',
            'view_controller' => 'View Controller',
            'view_action' => 'View Action',
            'index_params' => 'Index Params',
            'lang' => 'Язык страницы',
            'layout' => 'layout',
        ];
    }

    /**
     * Gets query for [[CreateUser]].
     *
     * @return \yii\db\ActiveQuery
     */
    public function getCreateUser()
    {
        return $this->hasOne(User::class, ['id' => 'create_user_id']);
    }

    /**
     * Gets query for [[UpdateUser]].
     *
     * @return \yii\db\ActiveQuery
     */
    public function getUpdateUser()
    {
        return $this->hasOne(User::class, ['id' => 'update_user_id']);
    }
    
    public static function getPage($url)
    {
        return self::findOne(['path' => $url]);
    }

    public function getUrl($full = false):string
    {
        $base = Url::base('https');

		$alias = trim( $this->path );
		return ($full ? $base : "")."/".$alias;
    }
}
