Your IP : 216.73.216.48
<?php
namespace app\models;
use Yii;
use yii\behaviors\TimestampBehavior;
use yii\db\Expression;
class SitePages extends \yii\db\ActiveRecord {
public static function tableName() {
return '{{%site_pages}}';
}
public function behaviors() {
return [
[
'class' => TimestampBehavior::className(),
'createdAtAttribute' => 'date_added',
'updatedAtAttribute' => 'last_updated',
],
];
}
public function rules() {
return [
[['title', 'url_slug', 'content'], 'required'],
[['content'], 'string'],
[['top_menu', 'is_published', 'date_added', 'views', 'last_updated'], 'integer'],
[['title'], 'string', 'max' => 50],
];
}
public function attributeLabels() {
return [
'page_id' => Yii::t('app', 'ID'),
'title' => Yii::t('app', 'Заглавие'),
'url_slug' => Yii::t('app', 'URL адрес'),
'content' => Yii::t('app', 'Съдържание'),
'top_menu' => Yii::t('app', 'Линк в главното меню?'),
'is_published' => Yii::t('app', 'Публикувана?'),
'views' => Yii::t('app', 'Прегледи'),
'date_added' => Yii::t('app', 'Дата на добавяне'),
'last_updated' => Yii::t('app', 'Дата на последна редакция'),
];
}
public function addPage() {
return $this->save();
}
public function editPage($pageInfo) {
return $pageInfo->save();
}
public function setPageOrder($pageID, $order) {
$pageInfo = SitePages::findOne($pageID);
$pageInfo->order = $order;
return $pageInfo->save();
}
public function publishPage($pageInfo) {
$pageInfo->is_published = 1;
return $pageInfo->save();
}
public function deletePage($pageInfo) {
return $pageInfo->delete();
}
public function getPages($where = []) {
$cacheKey = md5('view-pages-where-' . json_encode($where));
$pages = Yii::$app->cache->get($cacheKey);
if ($pages === false) {
if ($where) {
$pages = $this->find()->where($where)->orderBy('order');
} else {
$pages = $this->find()->orderBy('order');
}
Yii::$app->cache->set($cacheKey, $pages, 5 * 60);
}
return $pages;
}
public function getPage($pageID) {
$cacheKey = md5('view-page-id-' . $pageID);
$page = Yii::$app->cache->get($cacheKey);
if ($page === false) {
$page = SitePages::findOne($pageID);
Yii::$app->cache->set($cacheKey, $page, 5 * 60);
}
return $page;
}
public function getPageByUrl($urlSlug) {
$cacheKey = md5('view-page-url-' . $urlSlug);
$page = Yii::$app->cache->get($cacheKey);
if ($page === false) {
$page = $this->find()->where(['url_slug' => $urlSlug])->one();
Yii::$app->cache->set($cacheKey, $page, 5 * 60);
}
return $page;
}
public function incrementViews($pageInfo) {
++$pageInfo->views;
return $pageInfo->save();
}
}