예제 #1
0
 public function run()
 {
     $filename = \Yii::$app->request->get('filename', '');
     $filename = trim($filename, '/');
     $objId = \Yii::$app->request->get('objId', '');
     $objModelId = \Yii::$app->request->get('objModelId', '');
     if (empty($filename) === false) {
         $image = new Image();
         $image->loadDefaultValues();
         $image->setAttributes(['filename' => $filename, 'object_id' => $objId, 'object_model_id' => $objModelId]);
         $image->save();
     }
 }
예제 #2
0
 public function afterUpload($data)
 {
     if (isset($data['params']) === false) {
         return ['error' => 'bad request'];
     }
     if (isset($data['params']['objectId'], $data['filename'], $data['params']['modelId']) === false) {
         return ['error' => 'bad request'];
     }
     if ($data['params']['modelId'] === 'null') {
         $data['params']['modelId'] = 0;
     }
     $image = new Image(['object_id' => $data['params']['objectId'], 'object_model_id' => $data['params']['modelId'], 'filename' => $data['filename'], 'image_title' => '', 'sort_order' => 0]);
     if ($image->save()) {
         return ArrayHelper::merge($image->toArray(), ['file' => $image->file]);
     } else {
         return $image->getErrors();
     }
 }
예제 #3
0
파일: Image.php 프로젝트: Razzwan/dotplant2
 /**
  * Replaces images for specified model
  * $images array format:
  * [
  *      0 => [
  *          'filename' => 'something.png',
  *          'image_title' => 'title',
  *          'image_alt' => 'alt',
  *      ],
  *      1 => [
  *          'image_title' => 'title',
  *          'image_alt' => 'alt',
  *      ],
  * ]
  * @param \yii\db\ActiveRecord $model
  * @param array $images array of data
  * @throws \Exception
  */
 public static function replaceForModel(\yii\db\ActiveRecord $model, array $images)
 {
     $object = Object::getForClass($model->className());
     if ($object) {
         $current_images = static::getForModel($object->id, $model->id);
         // first find existing images in input array
         foreach ($current_images as $current) {
             $found = false;
             foreach ($images as $key => $new) {
                 if ($new['filename'] === $current->filename && !empty($new['filename'])) {
                     $found = true;
                     $current->setAttributes($new);
                     $current->sort_order = $key;
                     $current->save();
                     // delete processed image from input array
                     unset($images[$key]);
                 }
             }
             if (!$found) {
                 $current->delete();
             }
         }
         unset($current_images);
         // insert new images
         foreach ($images as $key => $new) {
             if (isset($new['filename'])) {
                 if (!empty($new['filename'])) {
                     $new['filename'] = urldecode(preg_replace("~[\\?#].*\$~Usi", "", $new['filename']));
                     $image_model = new Image();
                     $image_model->object_id = $object->id;
                     $image_model->object_model_id = $model->id;
                     $image_model->filename = basename($new['filename']);
                     if (preg_match("#^https?://#Us", $new['filename'])) {
                         $image_model->filename = basename(preg_replace("#^https?://[^/]#Us", "", $new['filename']));
                         try {
                             $stream = fopen($new['filename'], 'r');
                             Yii::$app->getModule('image')->fsComponent->putStream($image_model->filename, $stream);
                         } catch (\Exception $e) {
                             // whoops :-(
                         }
                     } else {
                         $image_model->filename = $new['filename'];
                     }
                     $image_model->image_title = isset($new['image_title']) ? $new['image_title'] : '';
                     $image_model->image_alt = isset($new['image_alt']) ? $new['image_alt'] : '';
                     $image_model->sort_order = $key;
                     $image_model->save();
                     unset($image_model);
                 }
             }
         }
     }
 }