Example #1
0
 /**
  * Validates that the deleted images all exist.
  * @param string $attribute The attribute being validated.
  * @param array  $params
  */
 public function validateDeletedImages($attribute, $params)
 {
     foreach ($this->{$attribute} as $image) {
         if (!file_exists('uploads/' . $image) || !ProjectImage::findOne($image)) {
             $this->addError($attribute, ucwords($attribute) . ' must exist.');
         }
     }
 }
Example #2
0
 /**
  * Handles the form submission for the create and update actions.
  * @param object $model       The project model object.
  * @param object $uploadModel The image upload form model object.
  * @return boolean
  */
 public function handleForm($model, $uploadModel)
 {
     if ($model->load(Yii::$app->request->post()) && $uploadModel->load(Yii::$app->request->post()) && $model->save()) {
         if (Model::loadMultiple($model->images, Yii::$app->request->post()) && Model::validateMultiple($model->images)) {
             foreach ($model->images as $image) {
                 $image->save();
             }
         }
         $uploadModel->newImage = UploadedFile::getInstances($uploadModel, 'newImage');
         if ($uploadModel->validate()) {
             // Remove any deleted images.
             if ($uploadModel->deletedImages) {
                 foreach ($uploadModel->deletedImages as $image) {
                     unlink('uploads/' . $image);
                     ProjectImage::findOne($image)->delete();
                 }
             }
             // Handle any new images.
             if ($uploadModel->newImage) {
                 foreach ($uploadModel->newImage as $newImage) {
                     $key = htmlspecialchars($newImage->name, ENT_QUOTES) . $newImage->size;
                     if (!isset($uploadModel->newImageDescription[$key])) {
                         $key = 0;
                     }
                     if (file_exists($newImage->tempName)) {
                         // Add the uploaded form to the project images table.
                         $image = new ProjectImage();
                         $image->projectID = $model->projectID;
                         $image->filename = uniqid($newImage->baseName) . '.' . $newImage->extension;
                         $image->description = $uploadModel->newImageDescription[$key];
                         $exif = exif_read_data($newImage->tempName);
                         $image->dateTaken = $this->fixTimestampFormat($exif['DateTimeOriginal']);
                         $newImage->saveAs('uploads/' . $image->filename);
                         $image->insert();
                     }
                 }
                 return true;
             }
             return true;
         }
     }
     return false;
 }