Internal optimisations and additional flags for Photo/Video

This commit is contained in:
Deon George
2020-01-05 00:28:00 +11:00
parent 93364ab53a
commit 1ffc2d994e
19 changed files with 402 additions and 279 deletions

75
app/Traits/Multimedia.php Normal file
View File

@@ -0,0 +1,75 @@
<?php
namespace App\Traits;
use App\Jobs\PhotoDelete;
use App\Models\Photo;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
/**
* Multimedia Controller Functions
*
* @package App\Traits
*/
trait Multimedia
{
use Type;
private function controller(string $type): string
{
switch (strtolower($type)) {
case 'photo': return 'PhotoController';
case 'video': return 'Videoontroller';
default: abort(500,'Type not handled?');
}
}
public function deletesUpdate(Request $request)
{
$class = $this->getModelType($request->input('type'));
$this->updatePostItems($request,$class,TRUE);
return redirect()->action(
sprintf('%s@deletes',$this->controller($request->input('type'))),
sprintf('?page=%s',$request->input('page'))
);
}
public function duplicatesUpdate(Request $request)
{
$class = $this->getModelType($request->input('type'));
$this->updatePostItems($request,$class);
return redirect()->action(
sprintf('%s@duplicates',$this->controller($request->input('type'))),
sprintf('?page=%s',$request->input('page'))
);
}
private function updatePostItems(Request $request,string $class,bool $delete=FALSE)
{
foreach ($request->input('items') as $id) {
$o = $class::findOrFail($id);
// Set if duplicate
$o->duplicate = $request->input('duplicate.'.$id) ? 1 : NULL;
// Set if ignore duplicate
$o->ignore_duplicate = $request->input('ignore_duplicate.'.$id) ? 1 : NULL;
// Set if flag
$o->flag = $request->input('flag.'.$id) ? 1 : NULL;
// Set if delete
if ($delete AND $o->remove AND ($request->input('remove.'.$id) ? 1 : NULL)) {
Log::info(sprintf('Dispatching delete for [%s]',$o->id));
} else {
$o->remove = $request->input('remove.'.$id) ? 1 : NULL;
}
$o->save();
}
}
}