diff --git a/CHANGELOG.md b/CHANGELOG.md index 02dbedb16..60531d438 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ * Fixed file field in `Flex Objects` (use `Grav\Common\Flex\Types\GenericObject` instead of `FlexObject`) [flex-objects#37](https://github.com/trilbymedia/grav-plugin-flex-objects/issues/37) * Fixed saving nested file fields in `Flex Objects` [flex-objects#34](https://github.com/trilbymedia/grav-plugin-flex-objects/issues/34) * JSON Route of homepage with no ‘route’ set is valid [form#425](https://github.com/getgrav/grav-plugin-form/issues/425) + * Fixed `MediaUploadTrait::copyUploadedFile()` not adding uploaded media to the collection # v1.7.0-rc.11 ## 05/14/2020 diff --git a/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php b/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php index bda8cb39d..931962b63 100644 --- a/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php +++ b/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php @@ -13,6 +13,7 @@ use Grav\Common\Config\Config; use Grav\Common\Filesystem\Folder; use Grav\Common\Grav; use Grav\Common\Language\Language; +use Grav\Common\Page\Medium\MediumFactory; use Grav\Common\Security; use Grav\Common\Utils; use Grav\Framework\Filesystem\Filesystem; @@ -256,6 +257,10 @@ trait MediaUploadTrait throw new RuntimeException($this->translate('PLUGIN_ADMIN.FAILED_TO_MOVE_UPLOADED_FILE'), 400); } + // Add the new file into the media. + $medium = MediumFactory::fromFile($filepath); + $this->add($filename, $medium); + // Finally clear media cache. $locator->clearCache(); $this->clearCache(); diff --git a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php index 351a312c4..5200df568 100644 --- a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php +++ b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php @@ -10,20 +10,16 @@ namespace Grav\Framework\Flex\Traits; */ use Grav\Common\Config\Config; -use Grav\Common\Filesystem\Folder; use Grav\Common\Grav; use Grav\Common\Media\Interfaces\MediaCollectionInterface; use Grav\Common\Media\Interfaces\MediaUploadInterface; use Grav\Common\Media\Traits\MediaTrait; use Grav\Common\Page\Medium\Medium; use Grav\Common\Page\Medium\MediumFactory; -use Grav\Common\Utils; use Grav\Framework\Cache\CacheInterface; -use Grav\Framework\Filesystem\Filesystem; use Grav\Framework\Flex\FlexDirectory; use Grav\Framework\Form\FormFlashFile; use Psr\Http\Message\UploadedFileInterface; -use RocketTheme\Toolbox\File\YamlFile; use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator; use RuntimeException; @@ -71,16 +67,10 @@ trait FlexMediaTrait return $media; } - public function __debugInfo() - { - return parent::__debugInfo() + [ - 'uploads:private' => $this->getUpdatedMedia() - ]; - } - /** * @param string $field * @return array + * @internal */ protected function getMediaFieldSettings(string $field): array { @@ -99,6 +89,57 @@ trait FlexMediaTrait return $settings; } + /** + * @param UploadedFileInterface $uploadedFile + * @param string|null $filename + * @param string|null $field + * @return void + * @internal + */ + public function checkUploadedMediaFile(UploadedFileInterface $uploadedFile, string $filename = null, string $field = null) + { + $media = $this->getMedia(); + $media->checkUploadedFile($uploadedFile, $filename, $this->getMediaFieldSettings($field ?? '')); + } + + /** + * @param UploadedFileInterface $uploadedFile + * @param string|null $filename + * @param string|null $field + * @return void + * @internal + */ + public function uploadMediaFile(UploadedFileInterface $uploadedFile, string $filename = null, string $field = null): void + { + $media = $this->getMedia(); + $settings = $this->getMediaFieldSettings($field ?? ''); + $media->checkUploadedFile($uploadedFile, $filename, $settings); + $media->copyUploadedFile($uploadedFile, $filename, $settings); + $this->clearMediaCache(); + } + + /** + * @param string $filename + * @return void + * @internal + */ + public function deleteMediaFile(string $filename): void + { + $media = $this->getMedia(); + $media->deleteFile($filename); + $this->clearMediaCache(); + } + + /** + * @return array + */ + public function __debugInfo() + { + return parent::__debugInfo() + [ + 'uploads:private' => $this->getUpdatedMedia() + ]; + } + /** * @param array $files * @return void @@ -289,46 +330,4 @@ trait FlexMediaTrait throw new RuntimeException($language->translate('PLUGIN_ADMIN.UNSUPPORTED_FILE_TYPE') . ': ' . $extension, 400); } } - - /** - * @param UploadedFileInterface $uploadedFile - * @return void - * @deprecated 1.7 Use Media class that implements MediaUploadInterface instead. - */ - public function checkUploadedMediaFile(UploadedFileInterface $uploadedFile) - { - user_error(__METHOD__ . '() is deprecated since Grav 1.7, use Media class that implements MediaUploadInterface instead', E_USER_DEPRECATED); - - $media = $this->getMedia(); - $media->checkUploadedFile($uploadedFile); - } - - /** - * @param UploadedFileInterface $uploadedFile - * @param string|null $filename - * @return void - * @deprecated 1.7 Use Media class that implements MediaUploadInterface instead. - */ - public function uploadMediaFile(UploadedFileInterface $uploadedFile, string $filename = null): void - { - user_error(__METHOD__ . '() is deprecated since Grav 1.7, use Media class that implements MediaUploadInterface instead', E_USER_DEPRECATED); - - $media = $this->getMedia(); - $media->copyUploadedFile($uploadedFile, $filename); - $this->clearMediaCache(); - } - - /** - * @param string $filename - * @return void - * @deprecated 1.7 Use Media class that implements MediaUploadInterface instead. - */ - public function deleteMediaFile(string $filename): void - { - user_error(__METHOD__ . '() is deprecated since Grav 1.7, use Media class that implements MediaUploadInterface instead', E_USER_DEPRECATED); - - $media = $this->getMedia(); - $media->deleteFile($filename); - $this->clearMediaCache(); - } }