'Имя', 'jobtitle' => 'Должность или звание', 'birthdate' => 'День рождения', 'description' => 'Описание', 'id' => 'ID', 'alias' => 'url', 'phone' => 'Телефон', 'email' => 'email', 'show' => 'Показывать' ]; } public function beforeSave($insert) { if (!parent::beforeSave($insert)) { return false; } if( is_int($this->show) || is_numeric($this->show) ){ $this->show = ((int) $this->show == 1)?'Y':'N'; } $this->birthdate = date('Y-m-d', strtotime($this->birthdate)); if( trim($this->alias) == '' ){ $this->alias = Transliterator::toUrl($this->name); } return true; } public function getImg($size = 'hd', $type = 'webp'){ return static::$story_dir."/".$this->id."_size{$size}.{$type}"; } /** * {@inheritdoc} * @return status. */ public function saveImg($id, $file, $type) { $post = Yii::$app->request->post(); $pcut = isset($post['cropping'])?$post['cropping']:false; $t = ['image/jpeg'=>'jpg','image/png'=>'png', 'image/webp'=>'webp']; //расширить допустимый список и вынести в общий класс if( isset( $t[$type] ) ){ $ext = $t[$type]; //загрузка временной фото на обработку $name = basename($id."_origin.".$ext); $file_tmp = Yii::getAlias('@webroot').'/'.static::$story_dir."/$name"; if( move_uploaded_file($file, $file_tmp) ){ // фото исходник для дальнейшей обработки $name = basename($id."_sizehd.jpg"); $hdfile = Yii::getAlias('@webroot').'/'.static::$story_dir."/$name"; if( $pcut ){ $cut = ['x'=>round($pcut['x']), 'y'=>round($pcut['y']), 'w'=>round($pcut['width']), 'h'=>round($pcut['height'])]; $this->generateImageCrop($file_tmp, $hdfile, 1920, 1080, $cut); }else{ // без обрезки $this->generatePreview( $file_tmp, $hdfile, 1920, 1080); } //unlink($file_tmp); удалить оригинал или оставить? // фото на главную сюжета 1300х731 $name = basename($id."_size1.webp"); $ofile = Yii::getAlias('@webroot').'/'.static::$story_dir."/$name"; $this->generatePreview( $hdfile, $ofile, 1300, 731); $name = basename($id."_size1.jpg"); $ofile = Yii::getAlias('@webroot').'/'.static::$story_dir."/$name"; $this->generatePreview( $hdfile, $ofile, 1300, 731); // фото на в ленту(можно отдавать поисковикам) сюжета 680x383 $name = basename($id."_size2.webp"); $ofile = Yii::getAlias('@webroot').'/'.static::$story_dir."/$name"; $this->generatePreview( $hdfile, $ofile, 680, 383); $name = basename($id."_size2.jpg"); $ofile = Yii::getAlias('@webroot').'/'.static::$story_dir."/$name"; $this->generatePreview( $hdfile, $ofile, 680, 383); // size3 пропустим в текущем дизайне не применим // фото на в малая(можно отдавать в админку, инжекты и пр. лабудень) сюжета 320х180 $name = basename($id."_size4.webp"); $ofile = Yii::getAlias('@webroot').'/'.static::$story_dir."/$name"; $this->generatePreview( $hdfile, $ofile, 320, 180 ); $name = basename($id."_size4.jpg"); $ofile = Yii::getAlias('@webroot').'/'.static::$story_dir."/$name"; $this->generatePreview( $hdfile, $ofile, 320, 180 ); return true; } } return false; } }