This commit is contained in:
Kevin Adametz 2024-08-05 12:05:24 +02:00
parent 04d677d37a
commit bfa3bb1df4
1191 changed files with 637397 additions and 10619 deletions

View file

@ -0,0 +1,151 @@
<?php
namespace App\Repositories\DC;
use Imagick;
use Request;
use App\Models\DcFile;
use App\Services\Util;
use App\Models\DcFileTag;
use App\Repositories\BaseRepository;
use Intervention\Image\Facades\Image;
class FileRepository extends BaseRepository {
public function __construct()
{
}
public function uploadFile( $form_data )
{
$file = $form_data['file'];
$originalName = $file->getClientOriginalName();
$extension = $file->getClientOriginalExtension();
$mine = $file->getClientMimeType();
$size = $file->getSize();
$originalNameWithoutExt = substr($originalName, 0, strlen($originalName) - strlen($extension) - 1);
$filename = Util::sanitize($originalNameWithoutExt, true, false, true);
$allowed_filename = uniqid() . '_' . $filename.".".$extension;
$file->storeAs('dc/files', $allowed_filename, 'public');
// $store = $file->store('files/');
$dc_file = DcFile::create([
'filename' => $allowed_filename,
'original_name' => $originalName,
'ext' => $extension,
'mine' => $mine,
'size' => $size
]);
$this->makeThumbFromFile($dc_file);
return $dc_file;
}
public function makeThumb($id){
$file = DcFile::findOrFail($id);
$this->makeThumbFromFile($file);
}
public function makeThumbFromFile($file)
{
$path = $file->getFile(true);
$filename = $file->filename;
$mine = \File::mimeType($path);
//make thumb
$allowedMimeTypes = ['image/jpeg','image/gif','image/png'];
if (in_array($mine, $allowedMimeTypes)) {
$img = Image::make($path);
$img->resize(542, 360, function ($c) {
$c->aspectRatio();
$c->upsize();
});
\Storage::disk('public')->put('dc/thumb/'.basename($filename), (string) $img->encode());
$img = Image::make($path);
$img->resize(1600, 900, function ($c) {
$c->aspectRatio();
$c->upsize();
});
\Storage::disk('public')->put('dc/big/'.basename($filename), (string) $img->encode());
}
$allowedMimeTypes = ['application/pdf'];
if (in_array($mine, $allowedMimeTypes)) {
$imagick = new \Imagick ($path.'[0]'); // 0 specifies the first page of the pdf
$imagick->setImageBackgroundColor('#ffffff');
$imagick = $imagick->mergeImageLayers( Imagick::LAYERMETHOD_FLATTEN );
$imagick->setImageFormat('jpg'); // set the format of the output image
$imagick->setImageCompression(\Imagick::COMPRESSION_JPEG);
$imagick->setImageCompressionQuality(60);
$imagick->resizeImage(1600, 900, \Imagick::FILTER_LANCZOS, 1,1);
$filestore = \Storage::disk('public')->path('dc/big/').basename($filename).".jpg";
$imagick->writeImage($filestore);
$imagick->resizeImage(542, 360, \Imagick::FILTER_LANCZOS, 1,1);
$filestore = \Storage::disk('public')->path('dc/thumb/').basename($filename).".jpg";
$imagick->writeImage($filestore);
}
return true;
}
public function tagsUpdate($id, $tags){
$file = DcFile::findOrFail($id);
$file_tags = DcFileTag::where('file_id', $file->id)->get();
//remove Tags
foreach ($file_tags as $file_tag) {
if(is_array($tags) && ($pos = array_search($file_tag->tag_id, $tags)) !== FALSE){
unset($tags[$pos]);
}else{
$file_tag->delete();
}
}
//set taTagsgs
if(is_array($tags)){
foreach ($tags as $key => $tag_id) {
DcFileTag::create([
'file_id' => $file->id,
'tag_id' => $tag_id
]);
}
}
return true;
}
public function deleteThumb($id){
$file = DcFile::findOrFail($id);
$path_thumb = $file->getThumb(true);
if (file_exists($path_thumb)) {
unlink($path_thumb);
}
$path_big = $file->getBig(true);
if (file_exists($path_big)) {
unlink($path_big);
}
return true;
}
public function deleteFile($id){
$file = DcFile::findOrFail($id);
$path_thumb = $file->getThumb(true);
if (file_exists($path_thumb)) {
unlink($path_thumb);
}
$path_big = $file->getBig(true);
if (file_exists($path_big)) {
unlink($path_big);
}
$path = $file->getFile(true);
if (file_exists($path)) {
unlink($path);
}
$file->delete();
return true;
}
}

View file

@ -0,0 +1,141 @@
<?php
namespace App\Repositories\DC;
use Request;
use App\Models\DcTag;
use App\Models\DcCategory;
use App\Repositories\BaseRepository;
class TagRepository extends BaseRepository {
public function __construct()
{
}
public function storeItem($obj, $data)
{
if($obj === 'category' && isset($data['dc_category_name'])){
$category = new DcCategory;
$category->name = $data['dc_category_name'];
$category->pos = 0 ;
$category->save();
\Session()->flash('alert-success', 'Kategorie erstellt');
return redirect(route('admin_downloadcenter_tags'));
}
if($obj === 'tag' && isset($data['dc_tag_name'])){
$data = Request::all();
$tag = new DcTag;
$tag->name = $data['dc_tag_name'];
$tag->pos = 0;
$tag->save();
\Session()->flash('alert-success', 'Tag erstellt');
return redirect(route('admin_downloadcenter_tags'));
}
if($obj === 'structure' && isset($data['nestable'])){
$bool = $this->updateStructure($data);
if(Request::ajax()){
return response()->json([
'success' => $bool,
'redirect' => route('admin_downloadcenter_tags', ['flash' => true])
]);
}
}
if($obj === 'update_ajax' && isset($data['action'])){
$active = $this->updateAjax($data);
if(Request::ajax()){
return response()->json([
'success' => $data['action'],
'active' => $active,
]);
}
}
return true;
}
protected function updateAjax($data){
if($data['action'] == 'update-tag-active' && isset($data['id'])){
$tag = DcTag::findOrFail($data['id']);
$tag->active = $tag->active ? 0 : 1;
$tag->save();
return $tag->active;
}
if($data['action'] == 'update-category-active' && isset($data['id'])){
$category = DcCategory::findOrFail($data['id']);
$category->active = $category->active ? 0 : 1;
$category->save();
return $category->active;
}
return false;
}
protected function updateStructure($data)
{
if(empty($data['nestable']) || !is_array($data['nestable'])){
return false;
}
$tags = DcTag::all();
foreach ($tags as $value) {
$value->category_id = null;
$value->pos = NULL;
$value->save();
}
$this->saveStructureLevel($data['nestable']);
return true;
}
protected function saveStructureLevel($nestable, $deep = 0, $category_id = false){
foreach ($nestable as $key => $value) {
if($value['id'] == 0){
continue;
}
if($deep == 0){
$cat = DcCategory::findOrFail($value['id']);
$cat->pos = $key;
$cat->save();
}
if($deep == 1){
$tag = DcTag::findOrFail($value['id']);
$tag->category_id = $category_id;
$tag->pos = $key;
$tag->save();
}
if(!empty($value['children'])){
$this->saveStructureLevel($value['children'], $deep+1, $value['id']);
}
}
}
public function deleteItem($obj, $id){
if($obj == 'category'){
$this->deleteCategory($id);
}
if($obj == 'tag'){
$this->deleteTag($id);
}
}
public function deleteCategory($id){
$cat = DcCategory::findOrFail($id);
$tags = DcTag::where('category_id', $cat->id)->get();
foreach ($tags as $tag) {
$this->deleteTag($tag->id);
}
$cat->delete();
}
public function deleteTag($id){
$tag = DcTag::findOrFail($id);
$tag->delete();
}
}