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.

85 lines
2.1 KiB

7 years ago
<?php
namespace core\entities;
use yiidreamteam\upload\ImageUploadBehavior;
use yii\db\ActiveRecord;
use yii\web\UploadedFile;
use Yii;
/**
* @property integer $id
* @property string $title
* @property string $tagline
* @property string $image
* @property string $url
* @property integer $sort
*
* @mixin ImageUploadBehavior
*/
class Slider extends ActiveRecord
{
const SCENARIO_UPDATE = 'update';
const SCENARIO_CREATE = 'create';
public static function create($title, $tagline, $url, $sort): self
{
$slider = new static();
$slider->title = $title;
$slider->tagline = $tagline;
$slider->url = $url;
$slider->sort = $sort;
return $slider;
}
public function setImage(UploadedFile $image): void
{
$this->image = $image;
}
public function edit($title, $tagline, $url, $sort): void
{
$this->title = $title;
$this->tagline = $tagline;
$this->url = $url;
$this->sort = $sort;
}
public static function tableName(): string
{
return '{{%slider}}';
}
public function attributeLabels() {
return [
'title' => Yii::t('slider', 'Title'),
'tagline' => Yii::t('slider', 'Tagline'),
'image' => Yii::t('slider', 'Image'),
'url' => Yii::t('slider', 'URL'),
'sort' => Yii::t('slider', 'Sort'),
];
}
public function behaviors(): array
{
return [
[
'class' => ImageUploadBehavior::class,
7 years ago
'attribute' => 'image',
'createThumbsOnRequest' => true,
'filePath' => '@staticRoot/origin/slider/[[id]].[[extension]]',
'fileUrl' => '@static/origin/slider/[[id]].[[extension]]',
'thumbPath' => '@staticRoot/cache/slider/[[profile]]_[[id]].[[extension]]',
'thumbUrl' => '@static/cache/slider/[[profile]]_[[id]].[[extension]]',
'thumbs' => [
'admin' => ['width' => 150, 'height' => 60],
'thumb' => ['width' => 400, 'height' => 150],
'1920_671' => ['width' => 1920, 'height' => 671],
//'origin' => ['processor' => [new WaterMarker(1024, 768, '@frontend/web/image/logo.png'), 'process']],
'origin' => ['width' => 1920, 'height' => 1080],
],
],
];
}
}