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; } }