145 lines
No EOL
4.6 KiB
PHP
145 lines
No EOL
4.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\User;
|
|
|
|
use Request;
|
|
use App\Models\DcTag;
|
|
use App\Models\DcFile;
|
|
use App\Models\DcFileTag;
|
|
use App\Models\DcCategory;
|
|
use App\Http\Controllers\Controller;
|
|
|
|
|
|
class DownloadController extends Controller
|
|
{
|
|
|
|
public function __construct()
|
|
{
|
|
$this->middleware('active.account');
|
|
}
|
|
|
|
public function index()
|
|
{
|
|
|
|
$this->setFilterVars();
|
|
$files = DcFile::where('active', true)->orderBy('id', 'desc')->get(); //File::all();
|
|
|
|
$filter_list = $this->makeFilterList();
|
|
$data = [
|
|
'files' => $files,
|
|
'filter_list' => $filter_list,
|
|
'tag_ids' => array(),
|
|
'resTagIds' => array(),
|
|
'search' => false,
|
|
|
|
];
|
|
|
|
return view('user.downloadcenter.index', $data);
|
|
}
|
|
|
|
public function search(){
|
|
|
|
$request = Request::all();
|
|
|
|
|
|
if(Request::ajax()){
|
|
|
|
$request['tagIds'] = isset($request['tagIds']) ? $request['tagIds'] : array();
|
|
$request['searchinput'] = isset($request['searchinput']) ? $request['searchinput'] : "";
|
|
$tag_ids = $request['tagIds'];
|
|
$searchTags = [];
|
|
foreach ($tag_ids as $tags) {
|
|
if($tags != "" && $tags != "0"){
|
|
if(is_array($tags)){
|
|
foreach ($tags as $tag) {
|
|
array_push($searchTags, $tag);
|
|
}
|
|
}else{
|
|
array_push($searchTags, $tags);
|
|
}
|
|
}
|
|
}
|
|
$q = DcFile::with('fileTag')->where('active', 1);
|
|
if($request['searchinput'] != ""){
|
|
$q->where('original_name', 'LIKE', '%'.$request['searchinput'].'%');
|
|
}
|
|
if(count($searchTags) > 0){
|
|
$q->whereHas('fileTag', function ($query) use ($searchTags){
|
|
$query->whereIn('tag_id', $searchTags);
|
|
});
|
|
}
|
|
|
|
$files = $q->orderBy('id', 'desc')->get();
|
|
$returnContentFiles = view('user.downloadcenter.content-files')->with('files', $files)->render();
|
|
/* if(strlen($files) < 1){
|
|
$returnContentFiles = "Keine Einträge vorhanden";
|
|
}*/
|
|
/*
|
|
$resTagIds = array();
|
|
foreach ($files as $file) {
|
|
foreach ($file->fileTag as $tagId) {
|
|
if(empty($resTagIds[$tagId->tag_id])){
|
|
$resTagIds[$tagId->tag_id] = 1;
|
|
}else{
|
|
$resTagIds[$tagId->tag_id]++;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
$categories = DcCategory::orderBy('pos')->get();
|
|
$data = [
|
|
'categories' => $categories,
|
|
'tag_ids' => $tag_ids,
|
|
'resTagIds' => $resTagIds,
|
|
'search' => true,
|
|
];
|
|
$returnFilters = view('content-collapse')->with('data', $data)->render();
|
|
*/
|
|
$returnFilters = "";
|
|
return response()->json( array('success' => true, 'request' => $request, 'searchTags' => $searchTags, 'content_files'=>$returnContentFiles, 'content_filter'=>$returnFilters) );
|
|
}
|
|
return false;
|
|
|
|
}
|
|
|
|
private function setFilterVars(){
|
|
|
|
|
|
/* if(!session('user_shop_api_orders_filter')){
|
|
session(['user_shop_api_orders_filter' => 1]);
|
|
}
|
|
if(Request::get('user_shop_api_orders_filter')){
|
|
session(['user_shop_api_orders_filter' => Request::get('user_shop_api_orders_filter')]);
|
|
}
|
|
*/
|
|
}
|
|
private function makeFilterList($archive = false, $request = true)
|
|
{
|
|
$ret = [];
|
|
$categories = DcCategory::where('active', true)->orderBy('pos')->get();
|
|
foreach($categories as $category){
|
|
$tags = DcTag::where('category_id', $category->id)->where('active', true)->orderBy('pos')->get();
|
|
$items = [];
|
|
foreach ($tags as $tag){
|
|
//has file tags
|
|
$count = DcFileTag::with('dc_file')->where('tag_id', $tag->id)->whereHas('dc_file', function ($query){
|
|
$query->where('active', true);
|
|
})->count();
|
|
if($count > 0){
|
|
$tag->count = $count;
|
|
$items[] = $tag;
|
|
}
|
|
}
|
|
if(isset($items) && count($items) > 0){
|
|
$ret[$category->id]['items'] = $items;
|
|
$ret[$category->id]['name'] = $category->name;
|
|
}
|
|
}
|
|
|
|
|
|
return $ret;
|
|
}
|
|
|
|
|
|
} |