/** * 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.'); } } }
/** * 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; }