/home/techb158/immovalet.com/platform/core/media/src/Repositories/Eloquent
NameSizeModeActions
MediaFileRepository.php137930644editdlrm
MediaFolderRepository.php56540644editdlrm
MediaSettingRepository.php2770644editdlrm
Edit: /home/techb158/immovalet.com/platform/core/media/src/Repositories/Eloquent/MediaFileRepository.php (13793B)
checkIfExistsName($name, $folder)) { $name = $baseName . '-' . $index++; } return $name; } /** * {@inheritDoc} */ protected function checkIfExistsName($name, $folder) { $count = $this->model ->where('name', $name) ->where('folder_id', $folder) ->withTrashed() ->count(); return $count > 0; } /** * {@inheritDoc} */ public function createSlug($name, $extension, $folderPath) { $slug = Str::slug($name); $index = 1; $baseSlug = $slug; while (File::exists(RvMedia::getRealPath(rtrim($folderPath, '/') . '/' . $slug . '.' . $extension))) { $slug = $baseSlug . '-' . $index++; } if (empty($slug)) { $slug = $slug . '-' . time(); } return $slug . '.' . $extension; } /** * {@inheritDoc} */ public function getFilesByFolderId($folderId, array $params = [], $withFolders = true, $folderParams = []) { $params = array_merge([ 'order_by' => [ 'name' => 'ASC', ], 'select' => [ 'media_files.id as id', 'media_files.name as name', 'media_files.url as url', 'media_files.mime_type as mime_type', 'media_files.size as size', 'media_files.created_at as created_at', 'media_files.updated_at as updated_at', 'media_files.options as options', 'media_files.folder_id as folder_id', DB::raw('0 as is_folder'), DB::raw('NULL as slug'), DB::raw('NULL as parent_id'), ], 'condition' => [], 'recent_items' => null, 'paginate' => [ 'per_page' => null, 'current_paged' => 1, ], 'selected_file_id' => null, 'is_popup' => false, 'filter' => 'everything', 'take' => null, 'with' => [], ], $params); if ($withFolders) { $folderParams = array_merge([ 'condition' => [], 'select' => [ 'media_folders.id as id', 'media_folders.name as name', DB::raw('NULL as url'), DB::raw('NULL as mime_type'), DB::raw('NULL as size'), 'media_folders.created_at as created_at', 'media_folders.updated_at as updated_at', DB::raw('NULL as options'), DB::raw('NULL as folder_id'), DB::raw('1 as is_folder'), 'media_folders.slug as slug', 'media_folders.parent_id as parent_id', ], ], $folderParams); $folder = app(MediaFolderInterface::class)->getModel(); $folder = $folder ->where('parent_id', $folderId) ->select($folderParams['select']); $this->applyConditions($folderParams['condition'], $folder); $this->model = $this->model ->union($folder); } if (empty($folderId)) { $this->model = $this->model ->leftJoin('media_folders', 'media_folders.id', '=', 'media_files.folder_id') ->where(function ($query) use ($folderId) { /** * @var Builder $query */ $query ->where(function ($sub) use ($folderId) { /** * @var Builder $sub */ $sub ->where('media_files.folder_id', $folderId) ->whereNull('media_files.deleted_at'); }) ->orWhere(function ($sub) { /** * @var Builder $sub */ $sub ->whereNull('media_files.deleted_at') ->whereNotNull('media_folders.deleted_at'); }) ->orWhere(function ($sub) { /** * @var Builder $sub */ $sub ->whereNull('media_files.deleted_at') ->whereNull('media_folders.id'); }); }) ->withTrashed(); } else { $this->model = $this->model->where('media_files.folder_id', $folderId); } if (isset($params['recent_items']) && is_array($params['recent_items']) && $params['recent_items']) { $this->model = $this->model->whereIn('media_files.id', Arr::get($params, 'recent_items', [])); } if ($params['selected_file_id'] && $params['is_popup']) { $this->model = $this->model->where('media_files.id', '<>', $params['selected_file_id']); } $result = $this->getFile($params); if ($params['selected_file_id']) { if (!$params['paginate']['current_paged'] || $params['paginate']['current_paged'] == 1) { $currentFile = $this->originalModel; $currentFile = $currentFile ->where('media_files.folder_id', $folderId) ->where('id', $params['selected_file_id']) ->select($params['select']) ->first(); } } if (isset($currentFile) && $params['is_popup']) { try { $result->prepend($currentFile); } catch (Exception $exception) { info($exception->getMessage()); } } return $result; } /** * @param array $params * @return Eloquent[]|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|Model|Model[]|Builder|Builder[]|Collection|object */ protected function getFile($params) { $this->applyConditions($params['condition']); if ($params['filter'] != 'everything') { $this->model = $this->model->where(function ($query) use ($params) { /** * @var Eloquent $query */ $allMimes = []; foreach (config('core.media.media.mime_types') as $key => $value) { if ($key == $params['filter']) { return $query->whereIn('media_files.mime_type', $value); } $allMimes = array_unique(array_merge($allMimes, $value)); } return $query->whereNotIn('media_files.mime_type', $allMimes); }); } if ($params['select']) { $this->model = $this->model->select($params['select']); } foreach ($params['order_by'] as $column => $direction) { $this->model = $this->model->orderBy($column, $direction); } foreach ($params['with'] as $with) { $this->model = $this->model->with($with); } if ($params['take'] == 1) { $result = $this->model->first(); } elseif ($params['take']) { $result = $this->model->take($params['take'])->get(); } elseif ($params['paginate']['per_page']) { $paged = $params['paginate']['current_paged'] ?: 1; $result = $this->model ->skip(($paged - 1) * $params['paginate']['per_page']) ->limit($params['paginate']['per_page']) ->get(); } else { $result = $this->model->get(); } if (!empty($params['selected_file_id']) && !$params['paginate']['current_paged'] || $params['paginate']['current_paged'] == 1) { $currentFile = $this->originalModel ->where('id', $params['selected_file_id']) ->select($params['select']) ->first(); } if (isset($currentFile) && $params['is_popup']) { try { $result->prepend($currentFile); } catch (Exception $exception) { info($exception->getMessage()); } } $this->resetModel(); return $result; } /** * {@inheritDoc} */ public function getTrashed($folderId, array $params = [], $withFolders = true, $folderParams = []) { $params = array_merge([ 'order_by' => [ 'name' => 'ASC', ], 'select' => [ 'media_files.id as id', 'media_files.name as name', 'media_files.url as url', 'media_files.mime_type as mime_type', 'media_files.size as size', 'media_files.created_at as created_at', 'media_files.updated_at as updated_at', 'media_files.options as options', 'media_files.folder_id as folder_id', DB::raw('0 as is_folder'), DB::raw('NULL as slug'), DB::raw('NULL as parent_id'), ], 'condition' => [], 'paginate' => [ 'per_page' => null, 'current_paged' => 1, ], 'filter' => 'everything', 'take' => null, 'with' => [], ], $params); $this->model = $this->model->onlyTrashed(); if ($withFolders) { $folderParams = array_merge([ 'condition' => [], 'select' => [ 'media_folders.id as id', 'media_folders.name as name', DB::raw('NULL as url'), DB::raw('NULL as mime_type'), DB::raw('NULL as size'), 'media_folders.created_at as created_at', 'media_folders.updated_at as updated_at', DB::raw('NULL as options'), DB::raw('NULL as folder_id'), DB::raw('1 as is_folder'), 'media_folders.slug as slug', 'media_folders.parent_id as parent_id', ], ], $folderParams); $folder = app(MediaFolderInterface::class)->getModel(); $folder = $folder ->withTrashed() ->whereNotNull('media_folders.deleted_at') ->select($folderParams['select']); if (empty($folderId)) { /** * @var Eloquent $folder */ $folder = $folder->leftJoin('media_folders as mf_parent', 'mf_parent.id', '=', 'media_folders.parent_id') ->where(function ($query) { /** * @var Eloquent $query */ $query ->orWhere('media_folders.parent_id', 0) ->orWhere('mf_parent.deleted_at', null); }) ->withTrashed(); } else { $folder = $folder->where('media_folders.parent_id', $folderId); } $this->applyConditions($folderParams['condition'], $folder); $this->model = $this->model ->union($folder); } if (empty($folderId)) { $this->model = $this->model ->leftJoin('media_folders', 'media_folders.id', '=', 'media_files.folder_id') ->where(function ($query) { /** * @var Eloquent $query */ $query ->where('media_files.folder_id', 0) ->orWhereNull('media_folders.deleted_at'); }); } else { $this->model = $this->model->where('media_files.folder_id', $folderId); } $result = $this->getFile($params); return $result; } /** * {@inheritDoc} */ public function emptyTrash() { $files = $this->model->onlyTrashed(); /** * @var Eloquent $files */ $files = $files->get(); foreach ($files as $file) { /** * @var Eloquent $file */ $file->forceDelete(); } return true; } }