public function actionThumb($id) { if ($file = SalePhoto::resize($id, Yii::$app->params['salePhotoThumb'])) { header('Content-Type: image/jpeg'); print file_get_contents($file); } else { throw new NotFoundHttpException('Photo not found!'); } die; }
public function afterSave($insert, $changedAttributes) { parent::afterSave($insert, $changedAttributes); // Photo copy - Start if ($insert && Yii::$app->request->post('photos')) { $new_path = Yii::$app->params['uploadSalePath'] . DIRECTORY_SEPARATOR . $this->id; BaseFileHelper::createDirectory($new_path); foreach (Yii::$app->request->post('photos') as $k => $v) { $old_photo = SalePhoto::findOne($k); if ($old_photo) { $old = Yii::$app->params['uploadSalePath'] . DIRECTORY_SEPARATOR . $v . DIRECTORY_SEPARATOR . $old_photo->id . '.jpg'; if (file_exists($old)) { $new_photo = new SalePhoto(); $new_photo->sale_id = $this->id; if ($new_photo->save()) { $new_photo->sort = $new_photo->id; $new_photo->hash = md5_file($old); if ($new_photo->save()) { if (!copy($old, $new_path . DIRECTORY_SEPARATOR . $new_photo->id . '.jpg')) { $new_photo->delete(); } } } } } } } // Photo copy - End $code = sprintf("%02d", $this->region_id) . sprintf("%03d", $this->district_id) . $this->id; Yii::$app->db->createCommand()->update('sale', ['code' => $code], ['id' => $this->id])->execute(); }
/** * @return \yii\db\ActiveQuery */ public function getPhoto() { return $this->hasOne(SalePhoto::className(), ['id' => 'photo_id']); }
public function actionUploadPhoto() { if (Yii::$app->request->isPost) { $id = Yii::$app->request->post('sale_id'); $path = Yii::$app->params['uploadSalePath'] . DIRECTORY_SEPARATOR . $id; BaseFileHelper::createDirectory($path); $file = UploadedFile::getInstanceByName('photos'); if (!$file) { return false; } $model = new SalePhoto(); $model->sale_id = $id; if ($model->save()) { $model->sort = $model->id; $name = $model->id . '.jpg'; if ($model->save()) { if (!$file->saveAs($path . DIRECTORY_SEPARATOR . $name)) { $model->delete(); } else { $model->hash = md5_file($path . DIRECTORY_SEPARATOR . $name); $model->save(); } } } sleep(1); return true; } return false; }
public function actionPhoto() { Yii::beginProfile('action'); $data = Yii::$app->request->post(); if (empty($data['ParseImage']) || empty($data['id'])) { return false; } $parse = Parse::findOne($data['id']); if (empty($parse)) { return false; } //sleep(1); foreach ($data['ParseImage'] as $key => $url) { $url = @$url['url']; if (empty($key)) { $image = new ParseImage(); $image->parse_id = $parse->id; $image->url = $url; Yii::beginProfile('get'); if ($file = file_get_contents($url)) { Yii::endProfile('get'); $path = Yii::$app->params['uploadSalePath'] . DIRECTORY_SEPARATOR . $parse->sale_id; BaseFileHelper::createDirectory($path); $photo = new SalePhoto(); $photo->sale_id = $parse->sale_id; if ($photo->save()) { $photo->sort = $photo->id; $name = $photo->id . '.jpg'; if ($photo->save()) { if (!file_put_contents($path . DIRECTORY_SEPARATOR . $name, $file)) { $photo->delete(); } else { $photo->hash = md5_file($path . DIRECTORY_SEPARATOR . $name); $photo->save(); $image->photo_id = $photo->id; $image->save(); } } } } } elseif (empty($url)) { $image = ParseImage::findOne($key); if (!empty($image)) { if ($image->photo_id) { $photo = SalePhoto::findOne($image->photo_id); $photo->delete(); } $image->delete(); } } } Yii::endProfile('action'); return true; }
$form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?> <?php if (!$model->id && $model->object_id) { ?> <div class="box"> <div class="box-header with-border"> <h3 class="box-title"><?php echo Yii::t('app', 'Photos'); ?> </h3> </div> <div class="box-body"> <?php $photos = SalePhoto::getPhotos($model->object_id); foreach ($photos as $item) { echo '<label><input type="checkbox" name="photos[' . $item['id'] . ']" value="' . $item['sale_id'] . '" style="position: absolute;"><img src="' . (Yii::$app->params['http'] . Yii::$app->params['salePhotoThumb']['path'] . $item['id']) . '.jpg" width="120"></label> '; } ?> </div> </div> <?php } ?> <?php if ($model->id) { ?> <div class="box"> <div class="box-header with-border">