Added display_on_site flag to media uploads
Change-Id: I83930c471de152f2d88e252f8a7d04abd1e4e692 Signed-off-by: smarcet <smarcet@gmail.com>
This commit is contained in:
parent
f0c49c8f83
commit
af76b67c8f
@ -1097,6 +1097,7 @@ final class OAuth2PresentationApiController extends OAuth2ProtectedController
|
||||
|
||||
$rules = [
|
||||
'media_upload_type_id' => 'required|integer',
|
||||
'display_on_site' => 'sometimes|boolean',
|
||||
];
|
||||
|
||||
// Creates a Validator instance and validates the data.
|
||||
@ -1177,13 +1178,28 @@ final class OAuth2PresentationApiController extends OAuth2ProtectedController
|
||||
return $this->error403();
|
||||
}
|
||||
|
||||
$data = $request->all();
|
||||
|
||||
$rules = [
|
||||
'display_on_site' => 'sometimes|boolean',
|
||||
];
|
||||
|
||||
// Creates a Validator instance and validates the data.
|
||||
$validation = Validator::make($data, $rules);
|
||||
|
||||
if ($validation->fails()) {
|
||||
$ex = new ValidationException;
|
||||
$ex->setMessages($validation->messages()->toArray());
|
||||
throw $ex;
|
||||
}
|
||||
|
||||
$mediaUpload = $this->presentation_service->updateMediaUploadFrom
|
||||
(
|
||||
$request,
|
||||
$summit,
|
||||
intval($presentation_id),
|
||||
intval($media_upload_id)
|
||||
intval($media_upload_id),
|
||||
$data
|
||||
);
|
||||
|
||||
$fields = Request::input('fields', '');
|
||||
|
@ -39,11 +39,10 @@ class PresentationMediaUploadSerializer extends PresentationMaterialSerializer
|
||||
$values = parent::serialize($expand, $fields, $relations, $params);
|
||||
$mediaUpload = $this->object;
|
||||
if(!$mediaUpload instanceof PresentationMediaUpload) return [];
|
||||
// these values are calculated
|
||||
unset($values['name']);
|
||||
unset($values['description']);
|
||||
unset($values['display_on_site']);
|
||||
unset($values['featured']);
|
||||
$values['display_on_site'] = false;
|
||||
|
||||
$mediaUploadType = $mediaUpload->getMediaUploadType();
|
||||
if(!is_null($mediaUploadType)){
|
||||
@ -53,7 +52,6 @@ class PresentationMediaUploadSerializer extends PresentationMaterialSerializer
|
||||
$strategy = FileDownloadStrategyFactory::build($mediaUploadType->getPublicStorageType());
|
||||
if (!is_null($strategy)) {
|
||||
$values['public_url'] = $strategy->getUrl($mediaUpload->getRelativePath());
|
||||
$values['display_on_site'] = true;
|
||||
}
|
||||
}
|
||||
catch (\Exception $ex){
|
||||
|
@ -0,0 +1,53 @@
|
||||
<?php namespace App\Models\Foundation\Summit\Factories;
|
||||
/**
|
||||
* Copyright 2020 OpenStack Foundation
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
**/
|
||||
|
||||
use models\summit\Presentation;
|
||||
use models\summit\PresentationMediaUpload;
|
||||
use models\summit\SummitMediaUploadType;
|
||||
/**
|
||||
* Class PresentationMediaUploadFactory
|
||||
* @package App\Models\Foundation\Summit\Factories
|
||||
*/
|
||||
class PresentationMediaUploadFactory
|
||||
{
|
||||
/**
|
||||
* @param array $data
|
||||
* @return PresentationMediaUpload
|
||||
*/
|
||||
public static function build(array $data){
|
||||
return self::populate(new PresentationMediaUpload, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param PresentationMediaUpload $media_upload
|
||||
* @param array $data
|
||||
* @return PresentationMediaUpload
|
||||
*/
|
||||
public static function populate(PresentationMediaUpload $media_upload, array $data){
|
||||
|
||||
if(isset($data['display_on_site']))
|
||||
$media_upload->setDisplayOnSite(isset($data['display_on_site']) ? boolval($data['display_on_site']) : true);
|
||||
|
||||
if(isset($data['file_name']))
|
||||
$media_upload->setFilename(trim($data['file_name']));
|
||||
|
||||
if(isset($data['presentation']) && $data['presentation'] instanceof Presentation)
|
||||
$media_upload->setPresentation($data['presentation']);
|
||||
|
||||
if(isset($data['media_upload_type']) && $data['media_upload_type'] instanceof SummitMediaUploadType)
|
||||
$media_upload->setMediaUploadType($data['media_upload_type']);
|
||||
|
||||
return $media_upload;
|
||||
}
|
||||
}
|
@ -181,6 +181,7 @@ interface IPresentationService
|
||||
* @param Summit $summit
|
||||
* @param int $presentation_id
|
||||
* @param int $media_upload_id
|
||||
* @param array $payload
|
||||
* @return PresentationMediaUpload
|
||||
* @throws \Exception
|
||||
*/
|
||||
@ -189,7 +190,8 @@ interface IPresentationService
|
||||
LaravelRequest $request,
|
||||
Summit $summit,
|
||||
int $presentation_id,
|
||||
int $media_upload_id
|
||||
int $media_upload_id,
|
||||
array $payload
|
||||
): PresentationMediaUpload;
|
||||
|
||||
/**
|
||||
|
@ -17,6 +17,7 @@ use App\Http\Utils\IFileUploader;
|
||||
use App\Jobs\Emails\PresentationSubmissions\PresentationCreatorNotificationEmail;
|
||||
use App\Jobs\Emails\PresentationSubmissions\PresentationSpeakerNotificationEmail;
|
||||
use App\Models\Foundation\Summit\Factories\PresentationLinkFactory;
|
||||
use App\Models\Foundation\Summit\Factories\PresentationMediaUploadFactory;
|
||||
use App\Models\Foundation\Summit\Factories\PresentationSlideFactory;
|
||||
use App\Models\Foundation\Summit\Factories\PresentationVideoFactory;
|
||||
use App\Models\Foundation\Summit\SelectionPlan;
|
||||
@ -1042,9 +1043,13 @@ final class PresentationService
|
||||
);
|
||||
}
|
||||
|
||||
$mediaUpload = new PresentationMediaUpload();
|
||||
$mediaUpload->setMediaUploadType($media_upload_type);
|
||||
$mediaUpload->setPresentation($presentation);
|
||||
$mediaUpload = PresentationMediaUploadFactory::build(array_merge(
|
||||
$payload,
|
||||
[
|
||||
'media_upload_type' => $media_upload_type,
|
||||
'presentation' => $presentation
|
||||
]
|
||||
));
|
||||
|
||||
$strategy = FileUploadStrategyFactory::build($media_upload_type->getPrivateStorageType());
|
||||
if(!is_null($strategy)){
|
||||
@ -1068,6 +1073,7 @@ final class PresentationService
|
||||
* @param Summit $summit
|
||||
* @param int $presentation_id
|
||||
* @param int $media_upload_id
|
||||
* @param array $payload
|
||||
* @return PresentationMediaUpload
|
||||
* @throws \Exception
|
||||
*/
|
||||
@ -1076,14 +1082,16 @@ final class PresentationService
|
||||
LaravelRequest $request,
|
||||
Summit $summit,
|
||||
int $presentation_id,
|
||||
int $media_upload_id
|
||||
int $media_upload_id,
|
||||
array $payload
|
||||
): PresentationMediaUpload
|
||||
{
|
||||
return $this->tx_service->transaction(function () use (
|
||||
$request,
|
||||
$summit,
|
||||
$presentation_id,
|
||||
$media_upload_id
|
||||
$media_upload_id,
|
||||
$payload
|
||||
) {
|
||||
|
||||
$presentation = $this->presentation_repository->getById($presentation_id);
|
||||
@ -1098,46 +1106,43 @@ final class PresentationService
|
||||
|
||||
$hasFile = $request->hasFile('file');
|
||||
|
||||
if(!$hasFile){
|
||||
throw new ValidationException("You must provide a file.");
|
||||
if($hasFile) {
|
||||
$file = $request->file('file');
|
||||
// get in bytes should be converted to KB
|
||||
$size = $file->getSize();
|
||||
if ($size == 0)
|
||||
throw new ValidationException("File size is zero.");
|
||||
$size = $size / 1024;
|
||||
$fileName = $file->getClientOriginalName();
|
||||
$fileExt = pathinfo($fileName, PATHINFO_EXTENSION);
|
||||
// normalize fileName
|
||||
$fileName = FileNameSanitizer::sanitize($fileName);
|
||||
|
||||
$mediaUploadType = $mediaUpload->getMediaUploadType();
|
||||
if (is_null($mediaUploadType))
|
||||
throw new ValidationException("Media Upload Type is not set.");
|
||||
|
||||
if ($mediaUploadType->getMaxSize() < $size) {
|
||||
throw new ValidationException(sprintf("Max Size is %s KB.", $mediaUploadType->getMaxSize()));
|
||||
}
|
||||
|
||||
if (!$mediaUploadType->isValidExtension($fileExt)) {
|
||||
throw new ValidationException(sprintf("File Extension %s is not valid", $fileExt));
|
||||
}
|
||||
|
||||
$strategy = FileUploadStrategyFactory::build($mediaUploadType->getPrivateStorageType());
|
||||
if (!is_null($strategy)) {
|
||||
$strategy->save($file, $mediaUpload->getPath(IStorageTypesConstants::PrivateType), $fileName);
|
||||
}
|
||||
|
||||
$strategy = FileUploadStrategyFactory::build($mediaUploadType->getPublicStorageType());
|
||||
if (!is_null($strategy)) {
|
||||
$strategy->save($file, $mediaUpload->getPath(IStorageTypesConstants::PublicType), $fileName);
|
||||
}
|
||||
$payload['file_name'] = $fileName;
|
||||
}
|
||||
|
||||
$file = $request->file('file');
|
||||
// get in bytes should be converted to KB
|
||||
$size = $file->getSize();
|
||||
if($size == 0)
|
||||
throw new ValidationException("File size is zero.");
|
||||
$size = $size/1024;
|
||||
$fileName = $file->getClientOriginalName();
|
||||
$fileExt = pathinfo($fileName, PATHINFO_EXTENSION);
|
||||
// normalize fileName
|
||||
$fileName = FileNameSanitizer::sanitize($fileName);
|
||||
|
||||
$mediaUploadType = $mediaUpload->getMediaUploadType();
|
||||
if(is_null($mediaUploadType))
|
||||
throw new ValidationException("Media Upload Type is not set.");
|
||||
|
||||
if($mediaUploadType->getMaxSize() < $size){
|
||||
throw new ValidationException(sprintf("Max Size is %s KB.", $mediaUploadType->getMaxSize()));
|
||||
}
|
||||
|
||||
if(!$mediaUploadType->isValidExtension($fileExt)){
|
||||
throw new ValidationException(sprintf("File Extension %s is not valid", $fileExt));
|
||||
}
|
||||
|
||||
$strategy = FileUploadStrategyFactory::build($mediaUploadType->getPrivateStorageType());
|
||||
if(!is_null($strategy)){
|
||||
$strategy->save($file, $mediaUpload->getPath(IStorageTypesConstants::PrivateType), $fileName);
|
||||
}
|
||||
|
||||
$strategy = FileUploadStrategyFactory::build($mediaUploadType->getPublicStorageType());
|
||||
if(!is_null($strategy)){
|
||||
$strategy->save($file, $mediaUpload->getPath(IStorageTypesConstants::PublicType), $fileName);
|
||||
}
|
||||
|
||||
$mediaUpload->setFilename($fileName);
|
||||
|
||||
return $mediaUpload;
|
||||
return PresentationMediaUploadFactory::populate($mediaUpload, $payload);
|
||||
});
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user