init
This commit is contained in:
193
Config.php
Normal file
193
Config.php
Normal file
@@ -0,0 +1,193 @@
|
||||
<?php
|
||||
|
||||
namespace dominion\file;
|
||||
|
||||
/**
|
||||
* This is the model class for table "file_config".
|
||||
*
|
||||
* @property int $id
|
||||
* @property string $module
|
||||
* @property string $type
|
||||
* @property int $height
|
||||
* @property int $width
|
||||
* @property string $name
|
||||
* @property int $crop
|
||||
* @property int $cut
|
||||
* @property int $addBorder
|
||||
* @property int $fileId Шаблон изображения
|
||||
* @property int $border_top отступы для окна внутри шаблона (сверху)
|
||||
* @property int $border_right отступы для окна внутри шаблона (справа)
|
||||
* @property int $border_left отступы для окна внутри шаблона (слева)
|
||||
* @property int $border_bottom отступы для окна внутри шаблона (снизу)
|
||||
* @property int $quality качество (степень сжатия)
|
||||
*/
|
||||
class Config extends \yii\db\ActiveRecord
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function tableName()
|
||||
{
|
||||
return 'file_config';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
[['module', 'type'], 'required'],
|
||||
[['height', 'width', 'cut', 'crop', 'addBorder', 'fileId', 'border_top', 'border_right', 'border_left', 'border_bottom', 'quality'], 'integer'],
|
||||
[['module', 'type'], 'string', 'max' => 50],
|
||||
[['name'], 'string', 'max' => 500],
|
||||
[['fileId'], 'formatImg'],
|
||||
];
|
||||
}
|
||||
public function formatImg($attribute, $params)
|
||||
{
|
||||
File::validateFormat($this, $attribute, ['extensions' => 'png, jpg']);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
/*public function attributeLabels()
|
||||
{
|
||||
return [
|
||||
'id' => Module::t('app', 'ID'),
|
||||
'module' => Module::t('app', 'Module'),
|
||||
'type' => Module::t('app', 'Type'),
|
||||
'height' => Module::t('app', 'Height'),
|
||||
'width' => Module::t('app', 'Width'),
|
||||
'name' => Module::t('app', 'Name'),
|
||||
'crop' => Module::t('app', 'Crop'),
|
||||
'cut' => Module::t('app', 'Cut'),
|
||||
'addBorder' => Module::t('app', 'Add Border'),
|
||||
'fileId' => Module::t('app', 'File'),
|
||||
'border_right' => Module::t('app', 'Border Right'),
|
||||
'border_top' => Module::t('app', 'Border Top'),
|
||||
'border_left' => Module::t('app', 'Border Left'),
|
||||
'border_bottom' => Module::t('app', 'Border Bottom'),
|
||||
'quality' => Module::t('app', 'Quality'),
|
||||
];
|
||||
}*/
|
||||
|
||||
/*public function beforeSave($insert)
|
||||
{
|
||||
$this->fileId = File::formSave('config', $this->fileId);
|
||||
return parent::beforeSave($insert);
|
||||
}*/
|
||||
|
||||
public function getFile()
|
||||
{
|
||||
return $this->hasOne(File::className(), ['id' => 'fileId']);
|
||||
}
|
||||
|
||||
public static function getData($params, $root)
|
||||
{
|
||||
$query = self::find();
|
||||
$root->andWhere($query, $params, ['id', 'module', 'type']);
|
||||
$root->andWhereLike($query, $params, ['name']);
|
||||
|
||||
$root->setMetaByQuery($query);
|
||||
$root->orderBy($query, $params, ['id', 'module', 'type', 'height', 'width', 'name', 'crop', 'cut', 'addBorder']);
|
||||
return $root->getItemsByPage($query);
|
||||
}
|
||||
|
||||
public function beforeDelete()
|
||||
{
|
||||
if($this->file)
|
||||
{
|
||||
$this->file->delete();
|
||||
}
|
||||
return parent::beforeDelete();
|
||||
}
|
||||
|
||||
public function customSave($args)
|
||||
{
|
||||
if((isset($args['fileDelete']) && $args['fileDelete']) || (isset($args['file'], $args['fileName']) && !empty($args['file'])))
|
||||
{
|
||||
if($this->file)
|
||||
{
|
||||
$this->file->delete();
|
||||
}
|
||||
}
|
||||
foreach(['name', 'module', 'type', 'height', 'width', 'cut', 'crop', 'addBorder', 'border_top', 'border_right', 'border_left', 'border_bottom', 'quality'] as $item)
|
||||
{
|
||||
if(isset($args[$item]))
|
||||
{
|
||||
$this->$item = is_bool($args[$item]) ? (int) $args[$item] : $args[$item];
|
||||
}
|
||||
}
|
||||
|
||||
if((isset($args['file'], $args['fileName']) && !empty($args['file'])))
|
||||
{
|
||||
$this->fileId = File::saveBase64File('file', $args['file'], $args['fileName'], '', false);
|
||||
}
|
||||
$this->fileId = (int)$this->fileId;
|
||||
$this->save();
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
public function resize($args)
|
||||
{
|
||||
$time = time() + 5;
|
||||
$all = isset($args['all']) && $args['all'];
|
||||
$fileId = isset($args['fileId']) ? $args['fileId'] : 0;
|
||||
$files = File::find()->andWhere(['module'=> $this->module])->andWhere(['>', 'id', $fileId])->limit(200)->all();
|
||||
$output = ['count' => 0];
|
||||
$fileTemplate = $this->file ? [
|
||||
'filePatch' => $this->file->getFilePath(false, true),
|
||||
'border_top' => $this->border_top,
|
||||
'border_right' => $this->border_right,
|
||||
'border_left' => $this->border_left,
|
||||
'border_bottom' => $this->border_bottom,
|
||||
] : [];
|
||||
if($this->file)
|
||||
{
|
||||
$this->file->downloadOriginal();
|
||||
}
|
||||
|
||||
|
||||
if(!empty($files))
|
||||
{
|
||||
$output['step'] = 'procccess';
|
||||
foreach ($files as $file)
|
||||
{
|
||||
try{
|
||||
$file->downloadOriginal();
|
||||
$file->resize($this->type, $this->height, $this->width, $this->crop, $this->cut, $this->addBorder, $all, $fileTemplate, $this->quality);
|
||||
if($file->cropFile)
|
||||
{
|
||||
@unlink($file->cropFile);
|
||||
}
|
||||
if(\Yii::$app->has('s3'))
|
||||
{
|
||||
$s3 = \Yii::$app->get('s3');
|
||||
if(file_exists($file->getFilePath($this->type, true)))
|
||||
{
|
||||
$s3->upload($file->getFilePath($this->type), $file->getFilePath($this->type, true));
|
||||
@unlink($file->getFilePath($this->type, true));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (\Exception $ex)
|
||||
{
|
||||
}
|
||||
$output['fileId'] = $file->id;
|
||||
$output['count'] ++;
|
||||
if($time < time())
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$output['step'] = 'finish';
|
||||
}
|
||||
return $output;
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user