diff --git a/.env.example b/.env.example index e6ff2ebb..a42eaaee 100644 --- a/.env.example +++ b/.env.example @@ -28,7 +28,6 @@ LOG_LEVEL=debug LOG_DISCORD_WEBHOOK_URL= # Drivers -DB_CONNECTION=mysql BROADCAST_DRIVER=log CACHE_DRIVER=file FILESYSTEM_DRIVER=local @@ -36,12 +35,16 @@ QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120 -# Database -DB_HOST=127.0.0.1 -DB_PORT=3306 -DB_DATABASE=laravel -DB_USERNAME=root -DB_PASSWORD= +# Database - SQLlite +DB_CONNECTION=sqlite +DB_DATABASE=database/database.sqlite + +# DB_CONNECTION=mysql +# DB_HOST=127.0.0.1 +# DB_PORT=3306 +# DB_DATABASE=laravel +# DB_USERNAME=root +# DB_PASSWORD= # Cache MEMCACHED_HOST=127.0.0.1 diff --git a/.github/workflows/laravel_pull_request.yml b/.github/workflows/laravel_pull_request.yml index 428e6ac5..4f72456b 100644 --- a/.github/workflows/laravel_pull_request.yml +++ b/.github/workflows/laravel_pull_request.yml @@ -10,6 +10,9 @@ on: jobs: laravel-tests: runs-on: ubuntu-latest + env: + DB_CONNECTION: sqlite + DB_DATABASE: database/database.sqlite steps: - uses: shivammathur/setup-php@15c43e89cdef867065b0213be354c2841860869e @@ -20,9 +23,17 @@ jobs: - name: Copy .env run: php -r "file_exists('.env') || copy('.env.example', '.env');" + - name: Remove existing composer.lock + run: rm ./composer.lock + - name: Install Dependencies run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist + - name: Create Database + run: | + mkdir -p database + touch database/database.sqlite + - name: Generate key run: php artisan key:generate diff --git a/.github/workflows/laravel_push.yml b/.github/workflows/laravel_push.yml index d6f4a214..63cb846b 100644 --- a/.github/workflows/laravel_push.yml +++ b/.github/workflows/laravel_push.yml @@ -5,6 +5,9 @@ on: [push] jobs: laravel-tests: runs-on: ubuntu-latest + env: + DB_CONNECTION: sqlite + DB_DATABASE: database/database.sqlite steps: - uses: shivammathur/setup-php@15c43e89cdef867065b0213be354c2841860869e @@ -13,19 +16,24 @@ jobs: - uses: actions/checkout@v2 - name: Copy .env run: php -r "file_exists('.env') || copy('.env.example', '.env');" + + - name: Remove existing composer.lock + run: rm ./composer.lock + - name: Install Dependencies run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist - - name: Generate key - run: php artisan key:generate - - name: Directory Permissions - run: chmod -R 777 storage bootstrap/cache + - name: Create Database run: | mkdir -p database touch database/database.sqlite + + - name: Generate key + run: php artisan key:generate + + - name: Directory Permissions + run: chmod -R 777 storage bootstrap/cache + - name: Execute tests (Unit and Feature tests) via PHPUnit - env: - DB_CONNECTION: sqlite - DB_DATABASE: database/database.sqlite run: | php artisan test -p --colors --debug \ No newline at end of file diff --git a/README.md b/README.md index 9b47e4e7..2475220e 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,15 @@ +[![Laravel CI](https://github.com/cepdnaclk/portal.ce.pdn.ac.lk/actions/workflows/laravel_push.yml/badge.svg)](https://github.com/cepdnaclk/portal.ce.pdn.ac.lk/actions/workflows/laravel_push.yml) ![GitHub Release](https://img.shields.io/github/v/release/cepdnaclk/portal.ce.pdn.ac.lk) + + + + # portal.ce.pdn.ac.lk Internal and Public web service provider of the Department of Computer Engineering ## Team of Developers - -To be updated +- [https://portal.ce.pdn.ac.lk/contributors](https://portal.ce.pdn.ac.lk/contributors) ## Useful Commands and Instructions @@ -133,6 +137,8 @@ sudo sh ./scripts/deploy-prod.sh Thanks to all the contributors who have helped with this project! - + + https://portal.ce.pdn.ac.lk/contributors +

-
+ \ No newline at end of file diff --git a/app/DBAL/Types/VersionEnumType.php b/app/DBAL/Types/VersionEnumType.php new file mode 100644 index 00000000..c68e29fa --- /dev/null +++ b/app/DBAL/Types/VersionEnumType.php @@ -0,0 +1,27 @@ + 'Current Curriculum', - 2 => 'Curriculum - Effective from E22' + $academicPrograms = [ + 'undergraduate' => [ + 1 => 'Current Curriculum', + 2 => 'Curriculum - Effective from E22' + ], + 'postgraduate' => [ + 3 => 'Current Curriculum - PG', + ] ]; + + if ($academicProgram == null) { + $allAcademicPrograms = []; + foreach ($academicPrograms as $programs) { + foreach ($programs as $key => $value) $allAcademicPrograms[$key] = $value; + } + return $allAcademicPrograms; + } else if (array_key_exists($academicProgram, $academicPrograms)) { + return $academicPrograms[$academicProgram]; + } else { + return []; + } } public static function getTypes(): array { return [ - 'Found' => 'Foundation', + 'Foundation' => 'Foundation', 'Core' => 'Core', 'GE' => 'General Elective', 'TE' => 'Technical Elective' diff --git a/app/Domains/AcademicProgram/Course/Models/Course.php b/app/Domains/AcademicProgram/Course/Models/Course.php index d55c46d5..330a2a24 100644 --- a/app/Domains/AcademicProgram/Course/Models/Course.php +++ b/app/Domains/AcademicProgram/Course/Models/Course.php @@ -3,12 +3,13 @@ namespace App\Domains\AcademicProgram\Course\Models; use App\Domains\Auth\Models\User; -use App\Domains\AcademicProgram\AcademicProgram; -use App\Domains\AcademicProgram\Course\Models\Traits\Scope\CourseScope; -use App\Domains\AcademicProgram\Semester\Models\Semester; use Database\Factories\CourseFactory; -use Illuminate\Database\Eloquent\Factories\HasFactory; use Spatie\Activitylog\Traits\LogsActivity; +use App\Domains\AcademicProgram\AcademicProgram; +use Illuminate\Database\Eloquent\Factories\HasFactory; +use App\Domains\AcademicProgram\Semester\Models\Semester; +use Illuminate\Database\Eloquent\Relations\BelongsToMany; +use App\Domains\AcademicProgram\Course\Models\Traits\Scope\CourseScope; /** * Class Course. @@ -35,6 +36,8 @@ class Course extends AcademicProgram 'name', 'credits', 'type', + 'teaching_methods', + 'faq_page', 'content', 'objectives', 'time_allocation', @@ -77,8 +80,9 @@ public static function getMarksAllocation(): array // TODO Get the list from Taxonomies return [ 'practicals' => null, - 'tutorials' => null, 'quizzes' => null, + 'assignments' => null, + 'tutorials' => null, 'projects' => null, 'participation' => null, 'mid_exam' => null, @@ -121,7 +125,12 @@ public function semester() public function version() { - return $this->getVersions()[$this->version]; + $versions = $this->getVersions(); + if ($this->version != null && array_key_exists($this->version, $versions)) { + return $versions[$this->version]; + } else { + return "Unknown"; + } } public function modules() @@ -129,6 +138,22 @@ public function modules() return $this->hasMany(CourseModule::class); } + /** + * Get the prerequisites for the course. + */ + public function prerequisites(): BelongsToMany + { + return $this->belongsToMany(Course::class, 'course_prerequisites', 'course_id', 'prerequisite_id'); + } + + /** + * Get the courses where this course is a prerequisite. + */ + public function prerequisiteFor(): BelongsToMany + { + return $this->belongsToMany(Course::class, 'course_prerequisites', 'prerequisite_id', 'course_id'); + } + protected static function newFactory() { return CourseFactory::new(); diff --git a/app/Domains/Auth/Services/UserService.php b/app/Domains/Auth/Services/UserService.php index f1bdaeac..919de66e 100644 --- a/app/Domains/Auth/Services/UserService.php +++ b/app/Domains/Auth/Services/UserService.php @@ -319,7 +319,7 @@ public function destroy(User $user): bool */ protected function createUser(array $data = []): User { - return $this->model::create([ + return $this->model::updateOrCreate([ 'type' => $data['type'] ?? $this->model::TYPE_USER, 'name' => $data['name'] ?? null, 'email' => $data['email'] ?? null, @@ -330,4 +330,4 @@ protected function createUser(array $data = []): User 'active' => $data['active'] ?? true, ]); } -} +} \ No newline at end of file diff --git a/app/Domains/Event/Models/Event.php b/app/Domains/Event/Models/Event.php index 5077a103..7c13a3f1 100644 --- a/app/Domains/Event/Models/Event.php +++ b/app/Domains/Event/Models/Event.php @@ -28,6 +28,7 @@ class Event extends Model protected $fillable = [ 'title', 'url', + 'event_type', 'published_at', 'description', 'image', @@ -46,8 +47,20 @@ class Event extends Model */ protected $casts = [ 'enabled' => 'boolean', + 'event_type' => 'array', ]; + public static function eventTypeMap(): array + { + // TODO integrate with Taxonomies + return [ + 0 => 'Event', + 1 => 'Seminar', + 2 => 'ACES', + + ]; + } + public function thumbURL() { if ($this->image != null) return '/img/events/' . $this->image; diff --git a/app/Domains/Event/Services/AnnouncementService.php b/app/Domains/Event/Services/AnnouncementService.php deleted file mode 100644 index 63e9b8d7..00000000 --- a/app/Domains/Event/Services/AnnouncementService.php +++ /dev/null @@ -1,58 +0,0 @@ -model = $announcement; - } - - /** - * Get all the enabled announcements - * For the frontend or globally - * Where there's either no time frame or - * if there is a start and end date, make sure the current time is in between that or - * if there is only a start date, make sure the current time is past that or - * if there is only an end date, make sure the current time is before that. - * - * @return mixed - */ - public function getForFrontend() - { - return $this->model::enabled() - ->forArea($this->model::TYPE_FRONTEND) - ->inTimeFrame() - ->get(); - } - - /** - * Get all the enabled announcements - * For the backend or globally - * Where there's either no time frame or - * if there is a start and end date, make sure the current time is in between that or - * if there is only a start date, make sure the current time is past that or - * if there is only an end date, make sure the current time is before that. - * - * @return mixed - */ - public function getForBackend() - { - return $this->model::enabled() - ->forArea($this->model::TYPE_BACKEND) - ->inTimeFrame() - ->get(); - } -} diff --git a/app/Domains/News/Services/AnnouncementService.php b/app/Domains/News/Services/AnnouncementService.php deleted file mode 100644 index 63e9b8d7..00000000 --- a/app/Domains/News/Services/AnnouncementService.php +++ /dev/null @@ -1,58 +0,0 @@ -model = $announcement; - } - - /** - * Get all the enabled announcements - * For the frontend or globally - * Where there's either no time frame or - * if there is a start and end date, make sure the current time is in between that or - * if there is only a start date, make sure the current time is past that or - * if there is only an end date, make sure the current time is before that. - * - * @return mixed - */ - public function getForFrontend() - { - return $this->model::enabled() - ->forArea($this->model::TYPE_FRONTEND) - ->inTimeFrame() - ->get(); - } - - /** - * Get all the enabled announcements - * For the backend or globally - * Where there's either no time frame or - * if there is a start and end date, make sure the current time is in between that or - * if there is only a start date, make sure the current time is past that or - * if there is only an end date, make sure the current time is before that. - * - * @return mixed - */ - public function getForBackend() - { - return $this->model::enabled() - ->forArea($this->model::TYPE_BACKEND) - ->inTimeFrame() - ->get(); - } -} diff --git a/app/Http/Controllers/API/EventApiController.php b/app/Http/Controllers/API/EventApiController.php index 80e9c106..25d9dd6b 100644 --- a/app/Http/Controllers/API/EventApiController.php +++ b/app/Http/Controllers/API/EventApiController.php @@ -5,19 +5,33 @@ use App\Domains\Event\Models\Event; use App\Http\Controllers\Controller; use App\Http\Resources\EventResource; +use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; class EventApiController extends Controller { - public function index() + public function index(Request $request) { try { - $perPage = 20; - $event = Event::where('enabled', 1)->orderBy('start_at', 'desc')->paginate($perPage); + $query = Event::where('enabled', 1)->orderBy('start_at', 'desc'); + + if ($request->has('event_type')) { + + if (in_array($request->event_type, Event::eventTypeMap())) { + $eventTypeId = array_search($request->event_type, Event::eventTypeMap()); + + // Note: This is not the best way, but easiest way to filter JSON content + $query = $query->where('event_type', 'LIKE', "%\"$eventTypeId\"%"); + } else { + return EventResource::collection([]); + } + } + + $events = $query->paginate(20); - return EventResource::collection($event); + return EventResource::collection($events); } catch (\Exception $e) { - Log::error('Error in EventApiController@index', ['error' => $e->getMessage()]); + Log::error('Error in EventApiController@index', $e); return response()->json(['message' => 'An error occurred while fetching events'], 500); } } diff --git a/app/Http/Controllers/Backend/CourseController.php b/app/Http/Controllers/Backend/CourseController.php index c06c69d0..3a081d6d 100644 --- a/app/Http/Controllers/Backend/CourseController.php +++ b/app/Http/Controllers/Backend/CourseController.php @@ -41,39 +41,6 @@ public function create() } } - /** - * Store a newly created course in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store(Request $request) - { - $validatedData = $request->validate([ - 'code' => 'required|string|max:16|unique:courses,code', - 'semester_id' => 'required|integer|exists:semesters,id', - 'academic_program' => ['required', Rule::in(array_values(Course::getAcademicPrograms()))], - 'version' => ['required', 'integer', Rule::in(array_keys(Course::getVersions()))], - 'name' => 'required|string|max:255', - 'credits' => 'required|integer', - 'type' => ['required', Rule::in(array_keys(Course::getTypes()))], - 'content' => 'nullable|string', - 'objectives' => 'nullable|json', - 'time_allocation' => 'nullable|json', - 'marks_allocation' => 'nullable|json', - 'ilos' => 'nullable|json', - 'urls' => 'nullable|json', - 'references' => 'nullable|json', - ]); - - try { - $course = Course::create($validatedData); - return redirect()->route('dashboard.courses.index')->with('success', 'Course created successfully.'); - } catch (\Exception $e) { - Log::error('Error creating course: ' . $e->getMessage()); - return abort(500); - } - } /** * Show the form for editing the specified course. @@ -90,40 +57,6 @@ public function edit(Course $course) return abort(500); } } - /** - * Update the specified course in storage. - * - * @param \Illuminate\Http\Request $request - * @param \App\Models\Course $course - * @return \Illuminate\Http\Response - */ - public function update(Request $request, Course $course) - { - $validatedData = $request->validate([ - 'code' => 'required|string|max:16|unique:courses,code,' . $course->id, - 'semester_id' => 'required|integer|exists:semesters,id', - 'academic_program' => ['required', Rule::in(array_values(Course::getAcademicPrograms()))], - 'version' => ['required', 'integer', Rule::in(array_keys(Course::getVersions()))], - 'name' => 'required|string|max:255', - 'credits' => 'required|integer', - 'type' => ['required', Rule::in(array_values(Course::getTypes()))], - 'type' => ['required', Rule::in(array_values(Course::getTypes()))], - 'content' => 'nullable|string', - 'objectives' => 'nullable|json', - 'time_allocation' => 'nullable|json', - 'marks_allocation' => 'nullable|json', - 'ilos' => 'nullable|json', - 'urls' => 'nullable|json', - 'references' => 'nullable|json', - ]); - try { - $course->update($validatedData); - return redirect()->route('dashboard.courses.index')->with('success', 'Course updated successfully.'); - } catch (\Exception $e) { - Log::error('Error updating course: ' . $e->getMessage()); - return abort(500); - } - } /** * Remove the specified course from storage. @@ -140,10 +73,10 @@ public function destroy(Course $course) { try { $course->delete(); - return redirect()->route('dashboard.courses.index')->with('success', 'Course deleted successfully.'); + return redirect()->route('dashboard.courses.index')->with('Success', 'Course deleted successfully.'); } catch (\Exception $e) { Log::error('Error in deleting course: ' . $e->getMessage()); return abort(500); } } -} +} \ No newline at end of file diff --git a/app/Http/Controllers/Backend/EventController.php b/app/Http/Controllers/Backend/EventController.php index 363f248b..5d218f9b 100644 --- a/app/Http/Controllers/Backend/EventController.php +++ b/app/Http/Controllers/Backend/EventController.php @@ -40,6 +40,7 @@ public function store(Request $request) $data = request()->validate([ 'title' => 'string|required', 'url' => ['required', 'unique:events'], + 'event_type' => 'required|array', 'published_at' => 'required|date_format:Y-m-d', 'description' => 'string|required', 'enabled' => 'nullable', @@ -55,6 +56,7 @@ public function store(Request $request) } try { + $event = new Event($data); $event->enabled = ($request->enabled != null); $event->url = urlencode(str_replace(" ", "-", $request->url)); @@ -75,12 +77,7 @@ public function store(Request $request) */ public function edit(Event $event) { - try { - return view('backend.event.edit', compact('event')); - } catch (\Exception $ex) { - Log::error('Failed to edit event', ['error' => $ex->getMessage()]); - return abort(500); - }; + return view('backend.event.edit', compact('event')); } /** @@ -95,8 +92,8 @@ public function update(Request $request, Event $event) $data = request()->validate([ 'title' => ['required'], - 'url' => - ['required', Rule::unique('events')->ignore($event->id)], + 'url' => ['required', Rule::unique('events')->ignore($event->id)], + 'event_type' => 'required|array', 'published_at' => 'required|date_format:Y-m-d', 'description' => 'string|required', 'enabled' => 'nullable', @@ -116,6 +113,7 @@ public function update(Request $request, Event $event) try { $event->update($data); + $event->enabled = ($request->enabled != null); $event->url = urlencode(str_replace(" ", "-", $request->url)); $event->created_by = Auth::user()->id; diff --git a/app/Http/Controllers/Frontend/HomeController.php b/app/Http/Controllers/Frontend/HomeController.php index 35565ef3..d49454e3 100644 --- a/app/Http/Controllers/Frontend/HomeController.php +++ b/app/Http/Controllers/Frontend/HomeController.php @@ -2,6 +2,8 @@ namespace App\Http\Controllers\Frontend; +use App\Services\DepartmentDataService; + /** * Class HomeController. */ @@ -14,4 +16,32 @@ public function index() { return view('frontend.index'); } -} + + /** + * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View + */ + public function terms() + { + return view('frontend.pages.terms'); + } + + /** + * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View + */ + public function contributors() + { + $projects = [ + '/projects/v1/co225/E20/Computer-Engineering-Portal/', + ]; + + $data = []; + $api = new DepartmentDataService(); + + foreach ($projects as $key => $url) { + $projectData = collect($api->getProjectData($url)); + array_push($data, $projectData); + } + + return view('frontend.pages.contributors', compact('data')); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Frontend/TermsController.php b/app/Http/Controllers/Frontend/TermsController.php deleted file mode 100644 index 11102e62..00000000 --- a/app/Http/Controllers/Frontend/TermsController.php +++ /dev/null @@ -1,17 +0,0 @@ -when($this->getFilter('academic_program'), fn($query, $type) => $query->where('academic_program', $type)) - ->when($this->getFilter('semester_id'), fn($query, $type) => $query->where('semester_id', $type)) - ->when($this->getFilter('version'), fn($query, $version) => $query->where('version', $version));; + ->when($this->getFilter('type'), fn($query, $type) => $query->where('type', $type)) + ->when($this->getFilter('version'), fn($query, $version) => $query->where('version', $version)); } public function filters(): array diff --git a/app/Http/Livewire/Backend/CreateCourses.php b/app/Http/Livewire/Backend/CreateCourses.php index f4317dcc..f0376db5 100644 --- a/app/Http/Livewire/Backend/CreateCourses.php +++ b/app/Http/Livewire/Backend/CreateCourses.php @@ -16,6 +16,8 @@ class CreateCourses extends Component //for selectors public $academicProgramsList = []; public $semestersList = []; + public $curriculumList = []; + //form inputs //1st form step @@ -31,9 +33,11 @@ class CreateCourses extends Component public $time_allocation; public $module_time_allocation; public $marks_allocation; + public $teaching_methods; //2nd form step public $objectives; + public $prerequisites = []; public $ilos = []; //3rd form step @@ -45,11 +49,12 @@ public function rules() return [ 'academicProgram' => 'required|string', 'semester' => 'required|string', - 'version' => ['required', 'string', Rule::in(array_keys(Course::getVersions()))], + 'version' => ['required', Rule::in(array_keys(Course::getVersions()))], 'type' => ['required', 'string', Rule::in(array_keys(Course::getTypes()))], 'code' => 'required|string|unique:courses,code', 'name' => 'required|string|max:255', 'credits' => 'required|integer|min:1|max:18', + 'teaching_methods' => 'nullable|string', 'faq_page' => 'nullable|url', 'content' => 'nullable|string', 'time_allocation.lecture' => 'nullable|integer|min:0', @@ -77,7 +82,7 @@ public function messages() 'semester.required' => 'Please select a semester.', 'version.required' => 'Please provide a curriculum.', 'type.required' => 'Please select a course type.', - 'type.in' => 'The course type must be Core, GE, or TE.', + 'type.in' => 'The course type must be Foundation, Core, GE, or TE.', 'code.required' => 'Please provide a course code.', 'code.unique' => 'This course code is already in use.', 'name.required' => 'Please provide a course name.', @@ -102,6 +107,7 @@ protected function validateCurrentStep() 'code' => 'required|string|unique:courses,code', 'name' => 'required|string|max:255', 'credits' => 'required|integer|min:1|max:18', + 'teaching_methods' => 'nullable|string', 'faq_page' => 'nullable|url', 'content' => 'nullable|string', ]; @@ -158,7 +164,7 @@ public function updated($propertyName) $this->validateOnly($propertyName); } - protected $listeners = ['itemsUpdated' => 'updateItems']; + protected $listeners = ['itemsUpdated' => 'updateItems', 'prerequisitesUpdated' => 'updatePrerequisites']; public function mount() { @@ -169,6 +175,11 @@ public function mount() $this->ilos = Course::getILOTemplate(); } + public function updatePrerequisites($selectedCourses) + { + $this->prerequisites = $selectedCourses; + } + public function updateItems($type, $newItems) { if ($type == 'references') { @@ -207,6 +218,7 @@ public function submit() public function updatedAcademicProgram() { + $this->updateCurriculumList(); $this->updateSemestersList(); } @@ -215,6 +227,21 @@ public function updatedVersion() $this->updateSemestersList(); } + + public function updateCurriculumList() + { + if ($this->academicProgram) { + $this->curriculumList = Course::getVersions($this->academicProgram); + } else { + $this->curriculumList = []; + } + + if (!array_key_exists($this->version, $this->curriculumList)) { + // Unset if it not belongs to + $this->version = null; + } + } + public function updateSemestersList() { if ($this->academicProgram && $this->version) { @@ -225,6 +252,11 @@ public function updateSemestersList() } else { $this->semestersList = []; } + + if (count($this->semestersList) == 0 || !array_key_exists($this->semester, $this->semestersList)) { + // Unset if it not belongs to + $this->semester = null; + } } @@ -240,6 +272,7 @@ protected function storeCourse() 'code' => $this->code, 'name' => $this->name, 'credits' => (int)$this->credits, + 'teaching_methods' => $this->teaching_methods, 'faq_page' => $this->faq_page, 'content' => $this->content, 'time_allocation' => json_encode($this->time_allocation), @@ -251,9 +284,7 @@ protected function storeCourse() 'updated_by' => auth()->id() ]); - if (empty($this->modules)) { - \Log::warning("No modules to create"); - } else { + if (!empty($this->modules)) { foreach ($this->modules as $module) { CourseModule::create([ 'course_id' => $course->id, @@ -265,6 +296,13 @@ protected function storeCourse() ]); } } + // Sync prerequisites + if (!empty($this->prerequisites)) { + $course->prerequisites()->sync(collect($this->prerequisites)->pluck('id')->toArray()); + } else { + // If no prerequisites, detach all + $course->prerequisites()->detach(); + } \DB::commit(); } catch (\Exception $e) { @@ -285,6 +323,7 @@ protected function resetForm() $this->code = ''; $this->name = ''; $this->credits = 0; + $this->teaching_methods = ''; $this->faq_page = ''; $this->content = ''; $this->time_allocation = Course::getTimeAllocation(); @@ -300,4 +339,4 @@ public function render() { return view('livewire.backend.create-courses'); } -} \ No newline at end of file +} diff --git a/app/Http/Livewire/Backend/EditCourses.php b/app/Http/Livewire/Backend/EditCourses.php index 27c58484..4e8a4fa3 100644 --- a/app/Http/Livewire/Backend/EditCourses.php +++ b/app/Http/Livewire/Backend/EditCourses.php @@ -17,6 +17,7 @@ class EditCourses extends Component // Selectors public $academicProgramsList = []; public $semestersList = []; + public $curriculumList = []; // Form inputs // 1st form step @@ -30,9 +31,11 @@ class EditCourses extends Component public $time_allocation; public $module_time_allocation; public $marks_allocation; + public $teaching_methods; // 2nd form step public $objectives; + public $prerequisites = []; public $ilos = [ 'knowledge' => [], 'skills' => [], @@ -45,15 +48,15 @@ class EditCourses extends Component public function rules() { - $validationRules = [ 'academicProgram' => 'required|string', 'semester' => 'required|int', - 'version' => ['required', 'string', Rule::in(array_keys(Course::getVersions()))], + 'version' => ['required', Rule::in(array_keys(Course::getVersions()))], 'type' => ['required', 'string', Rule::in(array_keys(Course::getTypes()))], 'code' => 'required|string', 'name' => 'required|string|max:255', 'credits' => 'required|integer|min:1|max:18', + 'teaching_methods' => 'nullable|string', 'faq_page' => 'nullable|url', 'content' => 'nullable|string', 'modules' => 'nullable|array', @@ -83,7 +86,7 @@ public function messages() 'semester.required' => 'Please select a semester.', 'version.required' => 'Please provide a curriculum.', 'type.required' => 'Please select a course type.', - 'type.in' => 'The course type must be Core, GE, or TE.', + 'type.in' => 'The course type must be Foundation, Core, GE, or TE.', 'code.required' => 'Please provide a course code.', 'name.required' => 'Please provide a course name.', 'credits.required' => 'Please specify the number of credits.', @@ -137,14 +140,19 @@ protected function validateMarksAllocation() public function updated($propertyName) { $this->canUpdate = false; - $this->validateCurrentStep(); + + if (!($this->version == null || $this->semester == null)) { + // This to allow fillings while either version or semester is null + $this->validateCurrentStep(); + } + if ($this->getErrorBag()->has('marks_allocation.total')) { return; } $this->canUpdate = true; } - protected $listeners = ['itemsUpdated' => 'updateItems']; + protected $listeners = ['itemsUpdated' => 'updateItems', 'prerequisitesUpdated' => 'updatePrerequisites']; public function mount(Course $course) { @@ -162,6 +170,7 @@ public function mount(Course $course) $this->code = $course->code; $this->name = $course->name; $this->credits = $course->credits; + $this->teaching_methods = $course->teaching_methods; $this->faq_page = $course->faq_page; $this->content = $course->content; $this->time_allocation = array_merge(Course::getTimeAllocation(), json_decode($course->time_allocation, true)); @@ -179,8 +188,20 @@ public function mount(Course $course) 'time_allocation' => array_merge(Course::getTimeAllocation(), json_decode($module->time_allocation, true)) ]; })->toArray(); + + // Update the prerequisites list + $this->prerequisites = $course->prerequisites; + // Update semesters list based on academic program and version $this->updateSemestersList(); + + // Update curriculum list based on academic program + $this->updateCurriculumList(); + } + + public function updatePrerequisites($selectedCourses) + { + $this->prerequisites = $selectedCourses; } public function updateItems($type, $newItems) @@ -212,7 +233,6 @@ public function previous() public function update() { try { - $this->validateCurrentStep(); $this->updateCourse(); return redirect()->route('dashboard.courses.index')->with('Success', 'Course updated successfully.'); @@ -225,6 +245,7 @@ public function update() public function updatedAcademicProgram() { + $this->updateCurriculumList(); $this->updateSemestersList(); } @@ -233,6 +254,19 @@ public function updatedVersion() $this->updateSemestersList(); } + public function updateCurriculumList() + { + if ($this->academicProgram) { + $this->curriculumList = Course::getVersions($this->academicProgram); + } else { + $this->curriculumList = []; + } + if (!array_key_exists($this->version, $this->curriculumList)) { + // Unset if it not belongs to + $this->version = ''; + } + } + public function updateSemestersList() { if ($this->academicProgram && $this->version) { @@ -243,6 +277,11 @@ public function updateSemestersList() } else { $this->semestersList = []; } + + if (count($this->semestersList) == 0 || !array_key_exists($this->semester, $this->semestersList)) { + // Unset if it not belongs to + $this->semester = ''; + } } protected function updateCourse() @@ -261,6 +300,7 @@ protected function updateCourse() 'code' => $this->code, 'name' => $this->name, 'credits' => (int)$this->credits, + 'teaching_methods' => $this->teaching_methods, 'faq_page' => $this->faq_page, 'content' => $this->content, 'time_allocation' => json_encode($this->time_allocation), @@ -276,7 +316,7 @@ protected function updateCourse() if (!empty($this->modules)) { foreach ($this->modules as $module) { - $createdModule = CourseModule::create([ + CourseModule::create([ 'course_id' => $course->id, 'topic' => $module['name'], 'description' => $module['description'], @@ -287,6 +327,13 @@ protected function updateCourse() } } + // Sync prerequisites + if (!empty($this->prerequisites)) { + $course->prerequisites()->sync(collect($this->prerequisites)->pluck('id')->toArray()); + } else { + // If no prerequisites, detach all + $course->prerequisites()->detach(); + } \DB::commit(); } catch (\Exception $e) { \DB::rollBack(); @@ -305,6 +352,7 @@ protected function resetForm() $this->code = ''; $this->name = ''; $this->credits = null; + $this->teaching_methods = ''; $this->faq_page = ''; $this->content = ''; $this->time_allocation = Course::getTimeAllocation(); @@ -314,6 +362,7 @@ protected function resetForm() $this->ilos = Course::getILOTemplate(); $this->references = []; $this->modules = []; + $this->prerequisites = []; } public function render() diff --git a/app/Http/Livewire/Backend/EventsTable.php b/app/Http/Livewire/Backend/EventsTable.php index de81950f..0c563631 100644 --- a/app/Http/Livewire/Backend/EventsTable.php +++ b/app/Http/Livewire/Backend/EventsTable.php @@ -54,7 +54,15 @@ public function query(): Builder } elseif ($enabled === 0) { $query->where('enabled', false); } - })->orderBy('published_at', 'desc'); + }) + ->when( + $this->getFilter('event_type') !== null, + function ($query) { + $eventType = $this->getFilter('event_type'); + $query->where('event_type', 'LIKE', "%\"$eventType\"%"); + } + ) + ->orderBy('created_at', 'desc'); } public function toggleEnable($eventId) { @@ -78,6 +86,8 @@ public function filters(): array 1 => 'Upcoming', 0 => 'Past', ]), + 'event_type' => Filter::make("Event Type") + ->select(array_merge(['' => 'Any'], Event::eventTypeMap())) ]; } diff --git a/app/Http/Livewire/Backend/ItemAdder.php b/app/Http/Livewire/Backend/ItemAdder.php index bea59d76..549070ba 100644 --- a/app/Http/Livewire/Backend/ItemAdder.php +++ b/app/Http/Livewire/Backend/ItemAdder.php @@ -8,11 +8,13 @@ class ItemAdder extends Component { public $items = []; public $type; + public $title; - public function mount($type, $items) + public function mount($type, $title, $items) { $this->items = $items; $this->type = $type; + $this->title = $title; } public function render() diff --git a/app/Http/Livewire/Backend/PrerequisiteSelector.php b/app/Http/Livewire/Backend/PrerequisiteSelector.php new file mode 100644 index 00000000..aa0c32bf --- /dev/null +++ b/app/Http/Livewire/Backend/PrerequisiteSelector.php @@ -0,0 +1,81 @@ +resetPage(); + } + + public function courseSelected($courseId) + { + $course = Course::find($courseId); + if ($course && !in_array($courseId, collect($this->selectedCourses)->pluck('id')->toArray())) { + $this->selectedCourses[] = $course->toArray(); + $this->emit('prerequisitesUpdated', $this->selectedCourses); + } + } + + public function courseRemoved($courseId) + { + $this->selectedCourses = collect($this->selectedCourses)->reject(function ($course) use ($courseId) { + return $course['id'] == $courseId; + })->values()->toArray(); + + $this->emit('prerequisitesUpdated', $this->selectedCourses); + } + + public function mount($courseId = null, $prerequisites = null) + { + $this->courseId = $courseId; + $this->selectedCourses = $prerequisites; + + + if ($this->courseId != null) { + // Fetch existing prerequisites from the database + $course = Course::with('prerequisites')->find($this->courseId); + + if ($course && $course->prerequisites) { + // Assuming prerequisites is a relation on the Course model + $this->selectedCourses = $course->prerequisites->map(function ($prerequisite) { + return $prerequisite->toArray(); + })->toArray(); + } + } + } + + public function render() + { + $filteredAvailableCourses = Course::where(function ($query) { + $query->where('code', 'like', '%' . $this->searchTerm . '%') + ->orWhere('name', 'like', '%' . $this->searchTerm . '%'); + }) + ->whereNotIn('id', collect($this->selectedCourses)->pluck('id')) + ->where('id', '!=', $this->courseId) + ->where('academic_program', $this->academic_program) + ->where('version', $this->version) + ->paginate(5); + + return view('livewire.backend.prerequisite-selector', [ + 'filteredAvailableCourses' => $filteredAvailableCourses, + ]); + } +} diff --git a/app/Http/Livewire/Backend/SemesterTable.php b/app/Http/Livewire/Backend/SemesterTable.php index 44220993..3454ef4d 100644 --- a/app/Http/Livewire/Backend/SemesterTable.php +++ b/app/Http/Livewire/Backend/SemesterTable.php @@ -28,6 +28,7 @@ public function columns(): array Column::make("Description", "description") ->searchable(), Column::make("URL", "url") + ->sortable() ->searchable(), Column::make("Updated by", "created_by") ->sortable(), diff --git a/app/Http/Resources/EventResource.php b/app/Http/Resources/EventResource.php index 1d2dbd19..61393ba6 100644 --- a/app/Http/Resources/EventResource.php +++ b/app/Http/Resources/EventResource.php @@ -3,6 +3,7 @@ namespace App\Http\Resources; use App\Domains\Auth\Models\User; +use App\Domains\Event\Models\Event; use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Support\Facades\URL; @@ -16,6 +17,16 @@ class EventResource extends JsonResource */ public function toArray($request) { + $eventTypeList = Event::eventTypeMap(); + + if ($this->event_type != null) { + $eventTypes = array_map(function ($id) use ($eventTypeList) { + return isset($eventTypeList[$id]) ? $eventTypeList[$id] : null; + }, $this->event_type); + } else { + $eventTypes = []; + } + return [ 'id' => $this->id, 'title' => $this->title, @@ -24,6 +35,7 @@ public function toArray($request) 'image' => URL::to($this->thumbURL()), 'start_at' => $this->start_at, 'end_at' => $this->end_at, + 'event_type' => $eventTypes, 'location' => $this->location, 'link_url' => $this->link_url, 'link_caption' => $this->link_caption, diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 1c874059..f0697c41 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -31,5 +31,12 @@ public function boot() Paginator::useBootstrap(); Schema::defaultStringLength(191); ini_set('max_execution_time', 120); + + // Support enum column migration for Event::event_type + if (Schema::getConnection()->getDriverName() !== 'sqlite') { + Schema::getConnection()->getDoctrineConnection() + ->getDatabasePlatform() + ->registerDoctrineTypeMapping('enum', 'string'); + } } -} +} \ No newline at end of file diff --git a/app/Services/DepartmentDataService.php b/app/Services/DepartmentDataService.php index 70c91a55..57256ed0 100644 --- a/app/Services/DepartmentDataService.php +++ b/app/Services/DepartmentDataService.php @@ -46,6 +46,20 @@ function () { return in_array($userEmail, $emails); } + + public function getProjectData($url) + { + + $project = Cache::remember( + "project_$url", + config('constants.department_data.cache_duration'), + function () use ($url) { + return $this->getData($url); + } + ); + return $project; + } + private function getData($endpoint) { $url = config('constants.department_data.base_url') . $endpoint; @@ -61,4 +75,4 @@ private function getData($endpoint) return []; } } -} \ No newline at end of file +} diff --git a/composer.json b/composer.json index b564d024..7a082631 100644 --- a/composer.json +++ b/composer.json @@ -12,6 +12,7 @@ "php": "^7.4|^8.0", "arcanedev/log-viewer": "8.x", "darkghosthunter/laraguard": "^3.0", + "doctrine/dbal": "*", "fruitcake/laravel-cors": "^3.0", "guzzlehttp/guzzle": "^7.0.1", "intervention/image": "^2.6", @@ -20,13 +21,13 @@ "langleyfoxall/laravel-nist-password-rules": "^6.0", "laravel/framework": "^8.54", "laravel/sanctum": "^2.11", - "laravel/socialite": "^5.0", + "laravel/socialite": "^5.16", "laravel/tinker": "^2.5", "laravel/ui": "^3.0", "laravelcollective/html": "^6.4", "livewire/livewire": "^2.0", - "rappasoft/laravel-livewire-tables": "^1.0", "marvinlabs/laravel-discord-logger": "^1.4", + "rappasoft/laravel-livewire-tables": "^1.0", "rappasoft/lockout": "^3.0", "spatie/laravel-activitylog": "^3.14", "spatie/laravel-permission": "^5.10", diff --git a/composer.lock b/composer.lock index e0470e3f..2f9ba4b5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5a5b000028d13dc0f7a3522007d8a60d", + "content-hash": "72eb2b58d6cc642aaedae91952eec7a5", "packages": [ { "name": "arcanedev/log-viewer", @@ -809,34 +809,37 @@ "time": "2021-04-20T08:50:57+00:00" }, { - "name": "doctrine/inflector", - "version": "2.0.10", + "name": "doctrine/cache", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + "url": "https://github.com/doctrine/cache.git", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "~7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" }, "require-dev": { - "doctrine/coding-standard": "^11.0", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25 || ^5.4" + "cache/integration-tests": "dev-master", + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "symfony/cache": "^4.4 || ^5.4 || ^6", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" } }, "notification-url": "https://packagist.org/downloads/", @@ -865,23 +868,22 @@ "email": "schmittjoh@gmail.com" } ], - "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", - "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", + "homepage": "https://www.doctrine-project.org/projects/cache.html", "keywords": [ - "inflection", - "inflector", - "lowercase", - "manipulation", + "abstraction", + "apcu", + "cache", + "caching", + "couchdb", + "memcached", "php", - "plural", - "singular", - "strings", - "uppercase", - "words" + "redis", + "xcache" ], "support": { - "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.10" + "issues": "https://github.com/doctrine/cache/issues", + "source": "https://github.com/doctrine/cache/tree/2.2.0" }, "funding": [ { @@ -893,39 +895,59 @@ "type": "patreon" }, { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", "type": "tidelift" } ], - "time": "2024-02-18T20:23:39+00:00" + "time": "2022-05-20T20:07:39+00:00" }, { - "name": "doctrine/lexer", - "version": "1.2.3", + "name": "doctrine/dbal", + "version": "3.9.3", "source": { "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + "url": "https://github.com/doctrine/dbal.git", + "reference": "61446f07fcb522414d6cfd8b1c3e5f9e18c579ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/61446f07fcb522414d6cfd8b1c3e5f9e18c579ba", + "reference": "61446f07fcb522414d6cfd8b1c3e5f9e18c579ba", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "composer-runtime-api": "^2", + "doctrine/cache": "^1.11|^2.0", + "doctrine/deprecations": "^0.5.3|^1", + "doctrine/event-manager": "^1|^2", + "php": "^7.4 || ^8.0", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" + "doctrine/coding-standard": "12.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "1.12.6", + "phpstan/phpstan-strict-rules": "^1.6", + "phpunit/phpunit": "9.6.20", + "psalm/plugin-phpunit": "0.18.4", + "slevomat/coding-standard": "8.13.1", + "squizlabs/php_codesniffer": "3.10.2", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0", + "vimeo/psalm": "4.30.0" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." }, + "bin": [ + "bin/doctrine-dbal" + ], "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\DBAL\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -942,22 +964,39 @@ "email": "roman@code-factory.org" }, { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" } ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" + "abstraction", + "database", + "db2", + "dbal", + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlite", + "sqlserver", + "sqlsrv" ], "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.3" + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/3.9.3" }, "funding": [ { @@ -969,113 +1008,89 @@ "type": "patreon" }, { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", "type": "tidelift" } ], - "time": "2022-02-28T11:07:21+00:00" + "time": "2024-10-10T17:56:43+00:00" }, { - "name": "dragonmantank/cron-expression", - "version": "v3.4.0", + "name": "doctrine/deprecations", + "version": "1.1.3", "source": { "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "8c784d071debd117328803d86b2097615b457500" + "url": "https://github.com/doctrine/deprecations.git", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", - "reference": "8c784d071debd117328803d86b2097615b457500", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { - "php": "^7.2|^8.0", - "webmozart/assert": "^1.0" - }, - "replace": { - "mtdowling/cron-expression": "^1.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0" + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" }, + "type": "library", "autoload": { "psr-4": { - "Cron\\": "src/Cron/" + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Chris Tankersley", - "email": "chris@ctankersley.com", - "homepage": "https://github.com/dragonmantank" - } - ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": [ - "cron", - "schedule" - ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", "support": { - "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "time": "2024-10-09T13:47:03+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { - "name": "egulias/email-validator", - "version": "2.1.25", + "name": "doctrine/event-manager", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" + "url": "https://github.com/doctrine/event-manager.git", + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e", + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", "shasum": "" }, "require": { - "doctrine/lexer": "^1.0.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.10" + "php": "^8.1" }, - "require-dev": { - "dominicsayers/isemail": "^3.0.7", - "phpunit/phpunit": "^4.8.36|^7.5.15", - "satooshi/php-coveralls": "^1.0.1" + "conflict": { + "doctrine/common": "<2.9" }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^5.24" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, "autoload": { "psr-4": { - "Egulias\\EmailValidator\\": "src" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1084,133 +1099,177 @@ ], "authors": [ { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" - ], - "support": { - "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" - }, + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "event dispatcher", + "event manager", + "event system", + "events" + ], + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/2.0.1" + }, "funding": [ { - "url": "https://github.com/egulias", - "type": "github" + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", + "type": "tidelift" } ], - "time": "2020-12-29T14:50:06+00:00" + "time": "2024-05-22T20:47:39+00:00" }, { - "name": "firebase/php-jwt", - "version": "v6.10.1", + "name": "doctrine/inflector", + "version": "2.0.10", "source": { "type": "git", - "url": "https://github.com/firebase/php-jwt.git", - "reference": "500501c2ce893c824c801da135d02661199f60c5" + "url": "https://github.com/doctrine/inflector.git", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/500501c2ce893c824c801da135d02661199f60c5", - "reference": "500501c2ce893c824c801da135d02661199f60c5", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { - "php": "^8.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "guzzlehttp/guzzle": "^7.4", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "psr/cache": "^2.0||^3.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0" - }, - "suggest": { - "ext-sodium": "Support EdDSA (Ed25519) signatures", - "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", "autoload": { "psr-4": { - "Firebase\\JWT\\": "src" + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Neuman Vong", - "email": "neuman+pear@twilio.com", - "role": "Developer" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" }, { - "name": "Anant Narayanan", - "email": "anant@php.net", - "role": "Developer" + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", - "homepage": "https://github.com/firebase/php-jwt", + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", "keywords": [ - "jwt", - "php" + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" ], "support": { - "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v6.10.1" + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, - "time": "2024-05-18T18:05:11+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2024-02-18T20:23:39+00:00" }, { - "name": "fruitcake/laravel-cors", - "version": "v3.0.0", + "name": "doctrine/lexer", + "version": "1.2.3", "source": { "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "7c036ec08972d8d5d9db637e772af6887828faf5" + "url": "https://github.com/doctrine/lexer.git", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/7c036ec08972d8d5d9db637e772af6887828faf5", - "reference": "7c036ec08972d8d5d9db637e772af6887828faf5", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", "shasum": "" }, "require": { - "fruitcake/php-cors": "^1.2", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": "^7.4|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "^3.5" + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, "autoload": { "psr-4": { - "Fruitcake\\Cors\\": "src/" + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" } }, "notification-url": "https://packagist.org/downloads/", @@ -1219,70 +1278,82 @@ ], "authors": [ { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" }, { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" + "annotations", + "docblock", + "lexer", + "parser", + "php" ], "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v3.0.0" + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.2.3" }, "funding": [ { - "url": "https://fruitcake.nl", + "url": "https://www.doctrine-project.org/sponsorship.html", "type": "custom" }, { - "url": "https://github.com/barryvdh", - "type": "github" + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" } ], - "abandoned": true, - "time": "2022-02-23T14:53:22+00:00" + "time": "2022-02-28T11:07:21+00:00" }, { - "name": "fruitcake/php-cors", - "version": "v1.3.0", + "name": "dragonmantank/cron-expression", + "version": "v3.4.0", "source": { "type": "git", - "url": "https://github.com/fruitcake/php-cors.git", - "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "8c784d071debd117328803d86b2097615b457500" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", - "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", + "reference": "8c784d071debd117328803d86b2097615b457500", "shasum": "" }, "require": { - "php": "^7.4|^8.0", - "symfony/http-foundation": "^4.4|^5.4|^6|^7" + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" }, "require-dev": { - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "^3.5" + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Fruitcake\\Cors\\": "src/" + "Cron\\": "src/Cron/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1291,62 +1362,64 @@ ], "authors": [ { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barryvdh", - "email": "barryvdh@gmail.com" + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" } ], - "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", - "homepage": "https://github.com/fruitcake/php-cors", + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", "keywords": [ - "cors", - "laravel", - "symfony" + "cron", + "schedule" ], "support": { - "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" }, "funding": [ { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", + "url": "https://github.com/dragonmantank", "type": "github" } ], - "time": "2023-10-12T05:21:21+00:00" + "time": "2024-10-09T13:47:03+00:00" }, { - "name": "graham-campbell/result-type", - "version": "v1.1.3", + "name": "egulias/email-validator", + "version": "2.1.25", "source": { "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", - "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3" + "doctrine/lexer": "^1.0.1", + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.10" }, "require-dev": { - "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + "dominicsayers/isemail": "^3.0.7", + "phpunit/phpunit": "^4.8.36|^7.5.15", + "satooshi/php-coveralls": "^1.0.1" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, "autoload": { "psr-4": { - "GrahamCampbell\\ResultType\\": "src/" + "Egulias\\EmailValidator\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1355,192 +1428,133 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" + "name": "Eduardo Gulias Davis" } ], - "description": "An Implementation Of The Result Type", + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "Result Type", - "Result-Type", - "result" + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" ], "support": { - "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", + "url": "https://github.com/egulias", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" } ], - "time": "2024-07-20T21:45:45+00:00" + "time": "2020-12-29T14:50:06+00:00" }, { - "name": "guzzlehttp/guzzle", - "version": "7.9.2", + "name": "firebase/php-jwt", + "version": "v6.10.1", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b" + "url": "https://github.com/firebase/php-jwt.git", + "reference": "500501c2ce893c824c801da135d02661199f60c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/500501c2ce893c824c801da135d02661199f60c5", + "reference": "500501c2ce893c824c801da135d02661199f60c5", "shasum": "" }, "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.3", - "guzzlehttp/psr7": "^2.7.0", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" + "php": "^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "ext-curl": "*", - "guzzle/client-integration-tests": "3.0.2", - "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.39 || ^9.6.20", - "psr/log": "^1.1 || ^2.0 || ^3.0" + "guzzlehttp/guzzle": "^7.4", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psr/cache": "^2.0||^3.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" }, "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" + "ext-sodium": "Support EdDSA (Ed25519) signatures", + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" }, "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "GuzzleHttp\\": "src/" + "Firebase\\JWT\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" }, { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" } ], - "description": "Guzzle is a PHP HTTP client library", + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "psr-18", - "psr-7", - "rest", - "web service" + "jwt", + "php" ], "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.9.2" + "issues": "https://github.com/firebase/php-jwt/issues", + "source": "https://github.com/firebase/php-jwt/tree/v6.10.1" }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" - } - ], - "time": "2024-07-24T11:22:20+00:00" + "time": "2024-05-18T18:05:11+00:00" }, { - "name": "guzzlehttp/promises", - "version": "2.0.3", + "name": "fruitcake/laravel-cors", + "version": "v3.0.0", "source": { "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8" + "url": "https://github.com/fruitcake/laravel-cors.git", + "reference": "7c036ec08972d8d5d9db637e772af6887828faf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", - "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/7c036ec08972d8d5d9db637e772af6887828faf5", + "reference": "7c036ec08972d8d5d9db637e772af6887828faf5", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0" + "fruitcake/php-cors": "^1.2", + "illuminate/contracts": "^6|^7|^8|^9", + "illuminate/support": "^6|^7|^8|^9", + "php": "^7.4|^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" + "laravel/framework": "^6|^7.24|^8", + "orchestra/testbench-dusk": "^4|^5|^6|^7", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false + "branch-alias": { + "dev-master": "3.0-dev" + }, + "laravel": { + "providers": [ + "Fruitcake\\Cors\\CorsServiceProvider" + ] } }, "autoload": { "psr-4": { - "GuzzleHttp\\Promise\\": "src/" + "Fruitcake\\Cors\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1549,81 +1563,208 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" }, { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" } ], - "description": "Guzzle promises library", + "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", "keywords": [ - "promise" + "api", + "cors", + "crossdomain", + "laravel" ], "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.3" + "issues": "https://github.com/fruitcake/laravel-cors/issues", + "source": "https://github.com/fruitcake/laravel-cors/tree/v3.0.0" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", "type": "github" + } + ], + "abandoned": true, + "time": "2022-02-23T14:53:22+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6|^7" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" }, { - "url": "https://github.com/Nyholm", + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2023-10-12T05:21:21+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.3", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", + "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.3" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", "type": "tidelift" } ], - "time": "2024-07-18T10:29:17+00:00" + "time": "2024-07-20T21:45:45+00:00" }, { - "name": "guzzlehttp/psr7", - "version": "2.7.0", + "name": "guzzlehttp/guzzle", + "version": "7.9.2", "source": { "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" + "url": "https://github.com/guzzle/guzzle.git", + "reference": "d281ed313b989f213357e3be1a179f02196ac99b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", + "reference": "d281ed313b989f213357e3be1a179f02196ac99b", "shasum": "" }, "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0.3", + "guzzlehttp/psr7": "^2.7.0", "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "ralouphie/getallheaders": "^3.0" + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" + "psr/http-client-implementation": "1.0" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "0.9.0", - "phpunit/phpunit": "^8.5.39 || ^9.6.20" + "ext-curl": "*", + "guzzle/client-integration-tests": "3.0.2", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", + "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { @@ -1633,8 +1774,11 @@ } }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" + "GuzzleHttp\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1652,6 +1796,11 @@ "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, { "name": "George Mponos", "email": "gmponos@gmail.com", @@ -1671,27 +1820,23 @@ "name": "Tobias Schultze", "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" } ], - "description": "PSR-7 message implementation that also provides common utility methods", + "description": "Guzzle is a PHP HTTP client library", "keywords": [ + "client", + "curl", + "framework", "http", - "message", + "http client", + "psr-18", "psr-7", - "request", - "response", - "stream", - "uri", - "url" + "rest", + "web service" ], "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.7.0" + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.9.2" }, "funding": [ { @@ -1703,52 +1848,251 @@ "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", "type": "tidelift" } ], - "time": "2024-07-18T11:15:46+00:00" + "time": "2024-07-24T11:22:20+00:00" }, { - "name": "intervention/image", - "version": "2.7.2", + "name": "guzzlehttp/promises", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/Intervention/image.git", - "reference": "04be355f8d6734c826045d02a1079ad658322dad" + "url": "https://github.com/guzzle/promises.git", + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", - "reference": "04be355f8d6734c826045d02a1079ad658322dad", + "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", "shasum": "" }, "require": { - "ext-fileinfo": "*", - "guzzlehttp/psr7": "~1.1 || ^2.0", - "php": ">=5.4.0" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "mockery/mockery": "~0.9.2", - "phpunit/phpunit": "^4.8 || ^5.7 || ^7.5.15" - }, - "suggest": { - "ext-gd": "to use GD library based image processing.", - "ext-imagick": "to use Imagick based image processing.", - "intervention/imagecache": "Caching extension for the Intervention Image library" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - }, - "laravel": { - "providers": [ - "Intervention\\Image\\ImageServiceProvider" - ], - "aliases": { - "Image": "Intervention\\Image\\Facades\\Image" - } + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2024-10-17T10:06:22+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.7.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2024-07-18T11:15:46+00:00" + }, + { + "name": "intervention/image", + "version": "2.7.2", + "source": { + "type": "git", + "url": "https://github.com/Intervention/image.git", + "reference": "04be355f8d6734c826045d02a1079ad658322dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", + "reference": "04be355f8d6734c826045d02a1079ad658322dad", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "guzzlehttp/psr7": "~1.1 || ^2.0", + "php": ">=5.4.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.2", + "phpunit/phpunit": "^4.8 || ^5.7 || ^7.5.15" + }, + "suggest": { + "ext-gd": "to use GD library based image processing.", + "ext-imagick": "to use Imagick based image processing.", + "intervention/imagecache": "Caching extension for the Intervention Image library" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + }, + "laravel": { + "providers": [ + "Intervention\\Image\\ImageServiceProvider" + ], + "aliases": { + "Image": "Intervention\\Image\\Facades\\Image" + } } }, "autoload": { @@ -7825,372 +8169,72 @@ ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" - }, - "time": "2022-06-03T18:03:27+00:00" - } - ], - "packages-dev": [ - { - "name": "barryvdh/laravel-debugbar", - "version": "v3.7.0", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "3372ed65e6d2039d663ed19aa699956f9d346271" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/3372ed65e6d2039d663ed19aa699956f9d346271", - "reference": "3372ed65e6d2039d663ed19aa699956f9d346271", - "shasum": "" - }, - "require": { - "illuminate/routing": "^7|^8|^9", - "illuminate/session": "^7|^8|^9", - "illuminate/support": "^7|^8|^9", - "maximebf/debugbar": "^1.17.2", - "php": ">=7.2.5", - "symfony/finder": "^5|^6" - }, - "require-dev": { - "mockery/mockery": "^1.3.3", - "orchestra/testbench-dusk": "^5|^6|^7", - "phpunit/phpunit": "^8.5|^9.0", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.6-dev" - }, - "laravel": { - "providers": [ - "Barryvdh\\Debugbar\\ServiceProvider" - ], - "aliases": { - "Debugbar": "Barryvdh\\Debugbar\\Facades\\Debugbar" - } - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Barryvdh\\Debugbar\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "PHP Debugbar integration for Laravel", - "keywords": [ - "debug", - "debugbar", - "laravel", - "profiler", - "webprofiler" - ], - "support": { - "issues": "https://github.com/barryvdh/laravel-debugbar/issues", - "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.7.0" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-07-11T09:26:42+00:00" - }, - { - "name": "barryvdh/laravel-ide-helper", - "version": "v2.14.0", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "485c756f6cff408d6b273274c5e86112c3973d98" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/485c756f6cff408d6b273274c5e86112c3973d98", - "reference": "485c756f6cff408d6b273274c5e86112c3973d98", - "shasum": "" - }, - "require": { - "barryvdh/reflection-docblock": "^2.0.6", - "composer/class-map-generator": "^1.0", - "doctrine/dbal": "^2.6 || ^3", - "ext-json": "*", - "illuminate/console": "^8 || ^9 || ^10", - "illuminate/filesystem": "^8 || ^9 || ^10", - "illuminate/support": "^8 || ^9 || ^10", - "nikic/php-parser": "^4.18 || ^5", - "php": "^7.3 || ^8.0", - "phpdocumentor/type-resolver": "^1.1.0" - }, - "require-dev": { - "ext-pdo_sqlite": "*", - "friendsofphp/php-cs-fixer": "^2", - "illuminate/config": "^8 || ^9 || ^10", - "illuminate/view": "^8 || ^9 || ^10", - "mockery/mockery": "^1.4", - "orchestra/testbench": "^6 || ^7 || ^8", - "phpunit/phpunit": "^8.5 || ^9", - "spatie/phpunit-snapshot-assertions": "^3 || ^4", - "vimeo/psalm": "^5.4" - }, - "suggest": { - "illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.14-dev" - }, - "laravel": { - "providers": [ - "Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Barryvdh\\LaravelIdeHelper\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.", - "keywords": [ - "autocomplete", - "codeintel", - "helper", - "ide", - "laravel", - "netbeans", - "phpdoc", - "phpstorm", - "sublime" - ], - "support": { - "issues": "https://github.com/barryvdh/laravel-ide-helper/issues", - "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v2.14.0" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2024-02-05T08:16:36+00:00" - }, - { - "name": "barryvdh/reflection-docblock", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/ReflectionDocBlock.git", - "reference": "e6811e927f0ecc37cc4deaa6627033150343e597" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/e6811e927f0ecc37cc4deaa6627033150343e597", - "reference": "e6811e927f0ecc37cc4deaa6627033150343e597", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.14|^9" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Barryvdh": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" - } - ], - "support": { - "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.1.1" - }, - "time": "2023-06-14T05:06:27+00:00" - }, - { - "name": "brianium/paratest", - "version": "v6.11.1", - "source": { - "type": "git", - "url": "https://github.com/paratestphp/paratest.git", - "reference": "78e297a969049ca7cc370e80ff5e102921ef39a3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/78e297a969049ca7cc370e80ff5e102921ef39a3", - "reference": "78e297a969049ca7cc370e80ff5e102921ef39a3", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-simplexml": "*", - "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0", - "jean85/pretty-package-versions": "^2.0.5", - "php": "^7.3 || ^8.0", - "phpunit/php-code-coverage": "^9.2.25", - "phpunit/php-file-iterator": "^3.0.6", - "phpunit/php-timer": "^5.0.3", - "phpunit/phpunit": "^9.6.4", - "sebastian/environment": "^5.1.5", - "symfony/console": "^5.4.28 || ^6.3.4 || ^7.0.0", - "symfony/process": "^5.4.28 || ^6.3.4 || ^7.0.0" - }, - "require-dev": { - "doctrine/coding-standard": "^12.0.0", - "ext-pcov": "*", - "ext-posix": "*", - "infection/infection": "^0.27.6", - "squizlabs/php_codesniffer": "^3.7.2", - "symfony/filesystem": "^5.4.25 || ^6.3.1 || ^7.0.0", - "vimeo/psalm": "^5.7.7" - }, - "bin": [ - "bin/paratest", - "bin/paratest.bat", - "bin/paratest_for_phpstorm" - ], - "type": "library", - "autoload": { - "psr-4": { - "ParaTest\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brian Scaturro", - "email": "scaturrob@gmail.com", - "role": "Developer" - }, - { - "name": "Filippo Tessarotto", - "email": "zoeslam@gmail.com", - "role": "Developer" - } - ], - "description": "Parallel testing for PHP", - "homepage": "https://github.com/paratestphp/paratest", - "keywords": [ - "concurrent", - "parallel", - "phpunit", - "testing" - ], - "support": { - "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v6.11.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/Slamdunk", - "type": "github" - }, - { - "url": "https://paypal.me/filippotessarotto", - "type": "paypal" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "time": "2024-03-13T06:54:29+00:00" - }, + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "packages-dev": [ { - "name": "clue/ndjson-react", - "version": "v1.3.0", + "name": "barryvdh/laravel-debugbar", + "version": "v3.7.0", "source": { "type": "git", - "url": "https://github.com/clue/reactphp-ndjson.git", - "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" + "url": "https://github.com/barryvdh/laravel-debugbar.git", + "reference": "3372ed65e6d2039d663ed19aa699956f9d346271" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", - "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/3372ed65e6d2039d663ed19aa699956f9d346271", + "reference": "3372ed65e6d2039d663ed19aa699956f9d346271", "shasum": "" }, "require": { - "php": ">=5.3", - "react/stream": "^1.2" + "illuminate/routing": "^7|^8|^9", + "illuminate/session": "^7|^8|^9", + "illuminate/support": "^7|^8|^9", + "maximebf/debugbar": "^1.17.2", + "php": ">=7.2.5", + "symfony/finder": "^5|^6" }, "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", - "react/event-loop": "^1.2" + "mockery/mockery": "^1.3.3", + "orchestra/testbench-dusk": "^5|^6|^7", + "phpunit/phpunit": "^8.5|^9.0", + "squizlabs/php_codesniffer": "^3.5" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.6-dev" + }, + "laravel": { + "providers": [ + "Barryvdh\\Debugbar\\ServiceProvider" + ], + "aliases": { + "Debugbar": "Barryvdh\\Debugbar\\Facades\\Debugbar" + } + } + }, "autoload": { + "files": [ + "src/helpers.php" + ], "psr-4": { - "Clue\\React\\NDJson\\": "src/" + "Barryvdh\\Debugbar\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -8199,72 +8243,88 @@ ], "authors": [ { - "name": "Christian Lück", - "email": "christian@clue.engineering" + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" } ], - "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", - "homepage": "https://github.com/clue/reactphp-ndjson", + "description": "PHP Debugbar integration for Laravel", "keywords": [ - "NDJSON", - "json", - "jsonlines", - "newline", - "reactphp", - "streaming" + "debug", + "debugbar", + "laravel", + "profiler", + "webprofiler" ], "support": { - "issues": "https://github.com/clue/reactphp-ndjson/issues", - "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" + "issues": "https://github.com/barryvdh/laravel-debugbar/issues", + "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.7.0" }, "funding": [ { - "url": "https://clue.engineering/support", + "url": "https://fruitcake.nl", "type": "custom" }, { - "url": "https://github.com/clue", + "url": "https://github.com/barryvdh", "type": "github" } ], - "time": "2022-12-23T10:58:28+00:00" + "time": "2022-07-11T09:26:42+00:00" }, { - "name": "composer/class-map-generator", - "version": "1.4.0", + "name": "barryvdh/laravel-ide-helper", + "version": "v2.14.0", "source": { "type": "git", - "url": "https://github.com/composer/class-map-generator.git", - "reference": "98bbf6780e56e0fd2404fe4b82eb665a0f93b783" + "url": "https://github.com/barryvdh/laravel-ide-helper.git", + "reference": "485c756f6cff408d6b273274c5e86112c3973d98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/98bbf6780e56e0fd2404fe4b82eb665a0f93b783", - "reference": "98bbf6780e56e0fd2404fe4b82eb665a0f93b783", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/485c756f6cff408d6b273274c5e86112c3973d98", + "reference": "485c756f6cff408d6b273274c5e86112c3973d98", "shasum": "" }, "require": { - "composer/pcre": "^2.1 || ^3.1", - "php": "^7.2 || ^8.0", - "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7" + "barryvdh/reflection-docblock": "^2.0.6", + "composer/class-map-generator": "^1.0", + "doctrine/dbal": "^2.6 || ^3", + "ext-json": "*", + "illuminate/console": "^8 || ^9 || ^10", + "illuminate/filesystem": "^8 || ^9 || ^10", + "illuminate/support": "^8 || ^9 || ^10", + "nikic/php-parser": "^4.18 || ^5", + "php": "^7.3 || ^8.0", + "phpdocumentor/type-resolver": "^1.1.0" }, "require-dev": { - "phpstan/phpstan": "^1.6", - "phpstan/phpstan-deprecation-rules": "^1", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^8", - "symfony/filesystem": "^5.4 || ^6" + "ext-pdo_sqlite": "*", + "friendsofphp/php-cs-fixer": "^2", + "illuminate/config": "^8 || ^9 || ^10", + "illuminate/view": "^8 || ^9 || ^10", + "mockery/mockery": "^1.4", + "orchestra/testbench": "^6 || ^7 || ^8", + "phpunit/phpunit": "^8.5 || ^9", + "spatie/phpunit-snapshot-assertions": "^3 || ^4", + "vimeo/psalm": "^5.4" + }, + "suggest": { + "illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10)." }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.x-dev" + "dev-master": "2.14-dev" + }, + "laravel": { + "providers": [ + "Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider" + ] } }, "autoload": { "psr-4": { - "Composer\\ClassMapGenerator\\": "src" + "Barryvdh\\LaravelIdeHelper\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -8273,74 +8333,73 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" } ], - "description": "Utilities to scan PHP code and generate class maps.", + "description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.", "keywords": [ - "classmap" + "autocomplete", + "codeintel", + "helper", + "ide", + "laravel", + "netbeans", + "phpdoc", + "phpstorm", + "sublime" ], "support": { - "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.4.0" + "issues": "https://github.com/barryvdh/laravel-ide-helper/issues", + "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v2.14.0" }, "funding": [ { - "url": "https://packagist.com", + "url": "https://fruitcake.nl", "type": "custom" }, { - "url": "https://github.com/composer", + "url": "https://github.com/barryvdh", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2024-10-03T18:14:00+00:00" + "time": "2024-02-05T08:16:36+00:00" }, { - "name": "composer/pcre", - "version": "3.3.1", + "name": "barryvdh/reflection-docblock", + "version": "v2.1.2", "source": { "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4" + "url": "https://github.com/barryvdh/ReflectionDocBlock.git", + "reference": "bba116ba9d5794fbf12e03ed40f10804e51acf76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/63aaeac21d7e775ff9bc9d45021e1745c97521c4", - "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4", + "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/bba116ba9d5794fbf12e03ed40f10804e51acf76", + "reference": "bba116ba9d5794fbf12e03ed40f10804e51acf76", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<1.11.10" + "php": ">=5.3.3" }, "require-dev": { - "phpstan/phpstan": "^1.11.10", - "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^8 || ^9" + "phpunit/phpunit": "^8.5.14|^9" + }, + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.x-dev" - }, - "phpstan": { - "includes": [ - "extension.neon" - ] + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-4": { - "Composer\\Pcre\\": "src" + "psr-0": { + "Barryvdh": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -8349,68 +8408,65 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" } ], - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": [ - "PCRE", - "preg", - "regex", - "regular expression" - ], "support": { - "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.3.1" + "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.1.2" }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2024-08-27T18:44:43+00:00" + "time": "2024-10-16T11:06:28+00:00" }, { - "name": "composer/semver", - "version": "3.4.3", + "name": "brianium/paratest", + "version": "v6.11.1", "source": { "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" + "url": "https://github.com/paratestphp/paratest.git", + "reference": "78e297a969049ca7cc370e80ff5e102921ef39a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/78e297a969049ca7cc370e80ff5e102921ef39a3", + "reference": "78e297a969049ca7cc370e80ff5e102921ef39a3", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0", + "jean85/pretty-package-versions": "^2.0.5", + "php": "^7.3 || ^8.0", + "phpunit/php-code-coverage": "^9.2.25", + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-timer": "^5.0.3", + "phpunit/phpunit": "^9.6.4", + "sebastian/environment": "^5.1.5", + "symfony/console": "^5.4.28 || ^6.3.4 || ^7.0.0", + "symfony/process": "^5.4.28 || ^6.3.4 || ^7.0.0" }, "require-dev": { - "phpstan/phpstan": "^1.11", - "symfony/phpunit-bridge": "^3 || ^7" + "doctrine/coding-standard": "^12.0.0", + "ext-pcov": "*", + "ext-posix": "*", + "infection/infection": "^0.27.6", + "squizlabs/php_codesniffer": "^3.7.2", + "symfony/filesystem": "^5.4.25 || ^6.3.1 || ^7.0.0", + "vimeo/psalm": "^5.7.7" }, + "bin": [ + "bin/paratest", + "bin/paratest.bat", + "bin/paratest_for_phpstorm" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, "autoload": { "psr-4": { - "Composer\\Semver\\": "src" + "ParaTest\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -8419,77 +8475,66 @@ ], "authors": [ { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" }, { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" } ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", "keywords": [ - "semantic", - "semver", - "validation", - "versioning" + "concurrent", + "parallel", + "phpunit", + "testing" ], "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.3" + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v6.11.1" }, "funding": [ { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", + "url": "https://github.com/sponsors/Slamdunk", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" } ], - "time": "2024-09-19T14:15:21+00:00" + "time": "2024-03-13T06:54:29+00:00" }, { - "name": "composer/xdebug-handler", - "version": "3.0.5", + "name": "clue/ndjson-react", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" + "url": "https://github.com/clue/reactphp-ndjson.git", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", - "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", + "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", "shasum": "" }, "require": { - "composer/pcre": "^1 || ^2 || ^3", - "php": "^7.2.5 || ^8.0", - "psr/log": "^1 || ^2 || ^3" + "php": ">=5.3", + "react/stream": "^1.2" }, "require-dev": { - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/event-loop": "^1.2" }, "type": "library", "autoload": { "psr-4": { - "Composer\\XdebugHandler\\": "src" + "Clue\\React\\NDJson\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -8498,68 +8543,72 @@ ], "authors": [ { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" + "name": "Christian Lück", + "email": "christian@clue.engineering" } ], - "description": "Restarts a process without Xdebug.", + "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", + "homepage": "https://github.com/clue/reactphp-ndjson", "keywords": [ - "Xdebug", - "performance" + "NDJSON", + "json", + "jsonlines", + "newline", + "reactphp", + "streaming" ], "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" + "issues": "https://github.com/clue/reactphp-ndjson/issues", + "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" }, "funding": [ { - "url": "https://packagist.com", + "url": "https://clue.engineering/support", "type": "custom" }, { - "url": "https://github.com/composer", + "url": "https://github.com/clue", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2024-05-06T16:37:16+00:00" + "time": "2022-12-23T10:58:28+00:00" }, { - "name": "doctrine/cache", - "version": "2.2.0", + "name": "composer/class-map-generator", + "version": "1.4.0", "source": { "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" + "url": "https://github.com/composer/class-map-generator.git", + "reference": "98bbf6780e56e0fd2404fe4b82eb665a0f93b783" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/98bbf6780e56e0fd2404fe4b82eb665a0f93b783", + "reference": "98bbf6780e56e0fd2404fe4b82eb665a0f93b783", "shasum": "" }, "require": { - "php": "~7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" + "composer/pcre": "^2.1 || ^3.1", + "php": "^7.2 || ^8.0", + "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7" }, "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "symfony/var-exporter": "^4.4 || ^5.4 || ^6" + "phpstan/phpstan": "^1.6", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8", + "symfony/filesystem": "^5.4 || ^6" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, "autoload": { "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + "Composer\\ClassMapGenerator\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -8568,106 +8617,74 @@ ], "authors": [ { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" } ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", + "description": "Utilities to scan PHP code and generate class maps.", "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" + "classmap" ], "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.2.0" + "issues": "https://github.com/composer/class-map-generator/issues", + "source": "https://github.com/composer/class-map-generator/tree/1.4.0" }, "funding": [ { - "url": "https://www.doctrine-project.org/sponsorship.html", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" + "url": "https://github.com/composer", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2022-05-20T20:07:39+00:00" + "time": "2024-10-03T18:14:00+00:00" }, { - "name": "doctrine/dbal", - "version": "3.9.1", + "name": "composer/pcre", + "version": "3.3.1", "source": { "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "d7dc08f98cba352b2bab5d32c5e58f7e745c11a7" + "url": "https://github.com/composer/pcre.git", + "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/d7dc08f98cba352b2bab5d32c5e58f7e745c11a7", - "reference": "d7dc08f98cba352b2bab5d32c5e58f7e745c11a7", + "url": "https://api.github.com/repos/composer/pcre/zipball/63aaeac21d7e775ff9bc9d45021e1745c97521c4", + "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4", "shasum": "" }, "require": { - "composer-runtime-api": "^2", - "doctrine/cache": "^1.11|^2.0", - "doctrine/deprecations": "^0.5.3|^1", - "doctrine/event-manager": "^1|^2", - "php": "^7.4 || ^8.0", - "psr/cache": "^1|^2|^3", - "psr/log": "^1|^2|^3" + "php": "^7.4 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<1.11.10" }, "require-dev": { - "doctrine/coding-standard": "12.0.0", - "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.12.0", - "phpstan/phpstan-strict-rules": "^1.6", - "phpunit/phpunit": "9.6.20", - "psalm/plugin-phpunit": "0.18.4", - "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.10.2", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/console": "^4.4|^5.4|^6.0|^7.0", - "vimeo/psalm": "4.30.0" + "phpstan/phpstan": "^1.11.10", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8 || ^9" }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", "autoload": { "psr-4": { - "Doctrine\\DBAL\\": "src" + "Composer\\Pcre\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -8676,141 +8693,147 @@ ], "authors": [ { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlite", - "sqlserver", - "sqlsrv" + "PCRE", + "preg", + "regex", + "regular expression" ], "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.9.1" + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.3.1" }, "funding": [ { - "url": "https://www.doctrine-project.org/sponsorship.html", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" + "url": "https://github.com/composer", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2024-09-01T13:49:23+00:00" + "time": "2024-08-27T18:44:43+00:00" }, { - "name": "doctrine/deprecations", - "version": "1.1.3", + "name": "composer/semver", + "version": "3.4.3", "source": { "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" + "url": "https://github.com/composer/semver.git", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "Composer\\Semver\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.3" }, - "time": "2024-01-30T19:34:25+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-09-19T14:15:21+00:00" }, { - "name": "doctrine/event-manager", - "version": "2.0.1", + "name": "composer/xdebug-handler", + "version": "3.0.5", "source": { "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "shasum": "" }, "require": { - "php": "^8.1" - }, - "conflict": { - "doctrine/common": "<2.9" + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" }, "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "^5.24" + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "src" + "Composer\\XdebugHandler\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -8819,58 +8842,35 @@ ], "authors": [ { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "description": "Restarts a process without Xdebug.", "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" + "Xdebug", + "performance" ], "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/2.0.1" + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" }, "funding": [ { - "url": "https://www.doctrine-project.org/sponsorship.html", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" + "url": "https://github.com/composer", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2024-05-22T20:47:39+00:00" + "time": "2024-05-06T16:37:16+00:00" }, { "name": "doctrine/instantiator", @@ -10187,16 +10187,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.32.0", + "version": "1.33.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4" + "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6ca22b154efdd9e3c68c56f5d94670920a1c19a4", - "reference": "6ca22b154efdd9e3c68c56f5d94670920a1c19a4", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/82a311fd3690fb2bf7b64d5c98f912b3dd746140", + "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140", "shasum": "" }, "require": { @@ -10228,9 +10228,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.32.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.33.0" }, - "time": "2024-09-26T07:23:32+00:00" + "time": "2024-10-13T11:25:22+00:00" }, { "name": "phpunit/php-code-coverage", @@ -11184,6 +11184,837 @@ ], "time": "2024-06-11T12:45:25+00:00" }, + { + "name": "roave/security-advisories", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/Roave/SecurityAdvisories.git", + "reference": "51e3fa290bca57eca7ba6c261b8a1278eb13a98a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/51e3fa290bca57eca7ba6c261b8a1278eb13a98a", + "reference": "51e3fa290bca57eca7ba6c261b8a1278eb13a98a", + "shasum": "" + }, + "conflict": { + "3f/pygmentize": "<1.2", + "admidio/admidio": "<4.3.12", + "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3", + "aheinze/cockpit": "<2.2", + "aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.04.6", + "aimeos/ai-admin-jsonadm": "<2020.10.13|>=2021.04.1,<2021.10.6|>=2022.04.1,<2022.10.3|>=2023.04.1,<2023.10.4|==2024.04.1", + "aimeos/ai-client-html": ">=2020.04.1,<2020.10.27|>=2021.04.1,<2021.10.22|>=2022.04.1,<2022.10.13|>=2023.04.1,<2023.10.15|>=2024.04.1,<2024.04.7", + "aimeos/ai-controller-frontend": "<2020.10.15|>=2021.04.1,<2021.10.8|>=2022.04.1,<2022.10.8|>=2023.04.1,<2023.10.9|==2024.04.1", + "aimeos/aimeos-core": ">=2022.04.1,<2022.10.17|>=2023.04.1,<2023.10.17|>=2024.04.1,<2024.04.7", + "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", + "airesvsg/acf-to-rest-api": "<=3.1", + "akaunting/akaunting": "<2.1.13", + "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", + "alextselegidis/easyappointments": "<1.5", + "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", + "amazing/media2click": ">=1,<1.3.3", + "amphp/artax": "<1.0.6|>=2,<2.0.6", + "amphp/http": "<=1.7.2|>=2,<=2.1", + "amphp/http-client": ">=4,<4.4", + "anchorcms/anchor-cms": "<=0.12.7", + "andreapollastri/cipi": "<=3.1.15", + "andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5", + "apache-solr-for-typo3/solr": "<2.8.3", + "apereo/phpcas": "<1.6", + "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6|>=2.6,<2.7.10|>=3,<3.0.12|>=3.1,<3.1.3", + "appwrite/server-ce": "<=1.2.1", + "arc/web": "<3", + "area17/twill": "<1.2.5|>=2,<2.5.3", + "artesaos/seotools": "<0.17.2", + "asymmetricrypt/asymmetricrypt": "<9.9.99", + "athlon1600/php-proxy": "<=5.1", + "athlon1600/php-proxy-app": "<=3", + "austintoddj/canvas": "<=3.4.2", + "auth0/wordpress": "<=4.6", + "automad/automad": "<2.0.0.0-alpha5", + "automattic/jetpack": "<9.8", + "awesome-support/awesome-support": "<=6.0.7", + "aws/aws-sdk-php": "<3.288.1", + "azuracast/azuracast": "<0.18.3", + "backdrop/backdrop": "<1.27.3|>=1.28,<1.28.2", + "backpack/crud": "<3.4.9", + "bacula-web/bacula-web": "<8.0.0.0-RC2-dev", + "badaso/core": "<2.7", + "bagisto/bagisto": "<2.1", + "barrelstrength/sprout-base-email": "<1.2.7", + "barrelstrength/sprout-forms": "<3.9", + "barryvdh/laravel-translation-manager": "<0.6.2", + "barzahlen/barzahlen-php": "<2.0.1", + "baserproject/basercms": "<5.0.9", + "bassjobsen/bootstrap-3-typeahead": ">4.0.2", + "bbpress/bbpress": "<2.6.5", + "bcosca/fatfree": "<3.7.2", + "bedita/bedita": "<4", + "bigfork/silverstripe-form-capture": ">=3,<3.1.1", + "billz/raspap-webgui": "<=3.1.4", + "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3", + "blueimp/jquery-file-upload": "==6.4.4", + "bmarshall511/wordpress_zero_spam": "<5.2.13", + "bolt/bolt": "<3.7.2", + "bolt/core": "<=4.2", + "born05/craft-twofactorauthentication": "<3.3.4", + "bottelet/flarepoint": "<2.2.1", + "bref/bref": "<2.1.17", + "brightlocal/phpwhois": "<=4.2.5", + "brotkrueml/codehighlight": "<2.7", + "brotkrueml/schema": "<1.13.1|>=2,<2.5.1", + "brotkrueml/typo3-matomo-integration": "<1.3.2", + "buddypress/buddypress": "<7.2.1", + "bugsnag/bugsnag-laravel": ">=2,<2.0.2", + "bytefury/crater": "<6.0.2", + "cachethq/cachet": "<2.5.1", + "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", + "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", + "cardgate/magento2": "<2.0.33", + "cardgate/woocommerce": "<=3.1.15", + "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cart2quote/module-quotation-encoded": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cartalyst/sentry": "<=2.1.6", + "catfan/medoo": "<1.7.5", + "causal/oidc": "<2.1", + "cecil/cecil": "<7.47.1", + "centreon/centreon": "<22.10.15", + "cesnet/simplesamlphp-module-proxystatistics": "<3.1", + "chriskacerguis/codeigniter-restserver": "<=2.7.1", + "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", + "ckeditor/ckeditor": "<4.24", + "cockpit-hq/cockpit": "<2.7|==2.7", + "codeception/codeception": "<3.1.3|>=4,<4.1.22", + "codeigniter/framework": "<3.1.9", + "codeigniter4/framework": "<4.4.7", + "codeigniter4/shield": "<1.0.0.0-beta8", + "codiad/codiad": "<=2.8.4", + "composer/composer": "<1.10.27|>=2,<2.2.24|>=2.3,<2.7.7", + "concrete5/concrete5": "<9.3.4", + "concrete5/core": "<8.5.8|>=9,<9.1", + "contao-components/mediaelement": ">=2.14.2,<2.21.1", + "contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4", + "contao/contao": "<=5.4.1", + "contao/core": "<3.5.39", + "contao/core-bundle": "<4.13.49|>=5,<5.3.15|>=5.4,<5.4.3", + "contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8", + "contao/managed-edition": "<=1.5", + "corveda/phpsandbox": "<1.3.5", + "cosenary/instagram": "<=2.3", + "craftcms/cms": "<4.6.2|>=5,<=5.2.2", + "croogo/croogo": "<4", + "cuyz/valinor": "<0.12", + "czim/file-handling": "<1.5|>=2,<2.3", + "czproject/git-php": "<4.0.3", + "damienharper/auditor-bundle": "<5.2.6", + "dapphp/securimage": "<3.6.6", + "darylldoyle/safe-svg": "<1.9.10", + "datadog/dd-trace": ">=0.30,<0.30.2", + "datatables/datatables": "<1.10.10", + "david-garcia/phpwhois": "<=4.3.1", + "dbrisinajumi/d2files": "<1", + "dcat/laravel-admin": "<=2.1.3", + "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", + "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", + "desperado/xml-bundle": "<=0.1.7", + "dev-lancer/minecraft-motd-parser": "<=1.0.5", + "devgroup/dotplant": "<2020.09.14-dev", + "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", + "doctrine/annotations": "<1.2.7", + "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", + "doctrine/common": "<2.4.3|>=2.5,<2.5.1", + "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4", + "doctrine/doctrine-bundle": "<1.5.2", + "doctrine/doctrine-module": "<0.7.2", + "doctrine/mongodb-odm": "<1.0.2", + "doctrine/mongodb-odm-bundle": "<3.0.1", + "doctrine/orm": ">=1,<1.2.4|>=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", + "dolibarr/dolibarr": "<19.0.2", + "dompdf/dompdf": "<2.0.4", + "doublethreedigital/guest-entries": "<3.1.2", + "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.2.9|>=10.3,<10.3.6|>=11,<11.0.5", + "drupal/core-recommended": ">=8,<10.2.9|>=10.3,<10.3.6|>=11,<11.0.5", + "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<10.2.9|>=10.3,<10.3.6|>=11,<11.0.5", + "duncanmcclean/guest-entries": "<3.1.2", + "dweeves/magmi": "<=0.7.24", + "ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2", + "ecodev/newsletter": "<=4", + "ectouch/ectouch": "<=2.7.2", + "egroupware/egroupware": "<23.1.20240624", + "elefant/cms": "<2.0.7", + "elgg/elgg": "<3.3.24|>=4,<4.0.5", + "elijaa/phpmemcacheadmin": "<=1.3", + "encore/laravel-admin": "<=1.8.19", + "endroid/qr-code-bundle": "<3.4.2", + "enhavo/enhavo-app": "<=0.13.1", + "enshrined/svg-sanitize": "<0.15", + "erusev/parsedown": "<1.7.2", + "ether/logs": "<3.0.4", + "evolutioncms/evolution": "<=3.2.3", + "exceedone/exment": "<4.4.3|>=5,<5.0.3", + "exceedone/laravel-admin": "<2.2.3|==3", + "ezsystems/demobundle": ">=5.4,<5.4.6.1-dev", + "ezsystems/ez-support-tools": ">=2.2,<2.2.3", + "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev", + "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev", + "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24", + "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26|>=3.3,<3.3.39", + "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1", + "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12", + "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.35", + "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8", + "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev|>=3.3,<3.3.40", + "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15", + "ezsystems/ezplatform-user": ">=1,<1.0.1", + "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31", + "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", + "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", + "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", + "ezyang/htmlpurifier": "<4.1.1", + "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", + "facturascripts/facturascripts": "<=2022.08", + "fastly/magento2": "<1.2.26", + "feehi/cms": "<=2.1.1", + "feehi/feehicms": "<=2.1.1", + "fenom/fenom": "<=2.12.1", + "filament/infolists": ">=3,<3.2.115", + "filament/tables": ">=3,<3.2.115", + "filegator/filegator": "<7.8", + "filp/whoops": "<2.1.13", + "fineuploader/php-traditional-server": "<=1.2.2", + "firebase/php-jwt": "<6", + "fisharebest/webtrees": "<=2.1.18", + "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2", + "fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6", + "flarum/core": "<1.8.5", + "flarum/flarum": "<0.1.0.0-beta8", + "flarum/framework": "<1.8.5", + "flarum/mentions": "<1.6.3", + "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15", + "flarum/tags": "<=0.1.0.0-beta13", + "floriangaerber/magnesium": "<0.3.1", + "fluidtypo3/vhs": "<5.1.1", + "fof/byobu": ">=0.3.0.0-beta2,<1.1.7", + "fof/upload": "<1.2.3", + "foodcoopshop/foodcoopshop": ">=3.2,<3.6.1", + "fooman/tcpdf": "<6.2.22", + "forkcms/forkcms": "<5.11.1", + "fossar/tcpdf-parser": "<6.2.22", + "francoisjacquet/rosariosis": "<=11.5.1", + "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2", + "friendsofsymfony/oauth2-php": "<1.3", + "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", + "friendsofsymfony/user-bundle": ">=1,<1.3.5", + "friendsofsymfony1/swiftmailer": ">=4,<5.4.13|>=6,<6.2.5", + "friendsofsymfony1/symfony1": ">=1.1,<1.5.19", + "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", + "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6", + "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.3", + "froxlor/froxlor": "<=2.2.0.0-RC3", + "frozennode/administrator": "<=5.0.12", + "fuel/core": "<1.8.1", + "funadmin/funadmin": "<=5.0.2", + "gaoming13/wechat-php-sdk": "<=1.10.2", + "genix/cms": "<=1.1.11", + "getformwork/formwork": "<1.13.1|==2.0.0.0-beta1", + "getgrav/grav": "<1.7.46", + "getkirby/cms": "<=3.6.6.5|>=3.7,<=3.7.5.4|>=3.8,<=3.8.4.3|>=3.9,<=3.9.8.1|>=3.10,<=3.10.1|>=4,<=4.3", + "getkirby/kirby": "<=2.5.12", + "getkirby/panel": "<2.5.14", + "getkirby/starterkit": "<=3.7.0.2", + "gilacms/gila": "<=1.15.4", + "gleez/cms": "<=1.3|==2", + "globalpayments/php-sdk": "<2", + "gogentooss/samlbase": "<1.2.7", + "google/protobuf": "<3.15", + "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", + "gree/jose": "<2.2.1", + "gregwar/rst": "<1.0.3", + "grumpydictator/firefly-iii": "<6.1.17", + "gugoan/economizzer": "<=0.9.0.0-beta1", + "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", + "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", + "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2", + "harvesthq/chosen": "<1.8.7", + "helloxz/imgurl": "<=2.31", + "hhxsv5/laravel-s": "<3.7.36", + "hillelcoren/invoice-ninja": "<5.3.35", + "himiklab/yii2-jqgrid-widget": "<1.0.8", + "hjue/justwriting": "<=1", + "hov/jobfair": "<1.0.13|>=2,<2.0.2", + "httpsoft/http-message": "<1.0.12", + "hyn/multi-tenant": ">=5.6,<5.7.2", + "ibexa/admin-ui": ">=4.2,<4.2.3|>=4.6.0.0-beta1,<4.6.9", + "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.6|>=4.6,<4.6.2", + "ibexa/fieldtype-richtext": ">=4.6,<4.6.10", + "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3", + "ibexa/post-install": "<=1.0.4", + "ibexa/solr": ">=4.5,<4.5.4", + "ibexa/user": ">=4,<4.4.3", + "icecoder/icecoder": "<=8.1", + "idno/known": "<=1.3.1", + "ilicmiljan/secure-props": ">=1.2,<1.2.2", + "illuminate/auth": "<5.5.10", + "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<6.18.31|>=7,<7.22.4", + "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40", + "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", + "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75", + "imdbphp/imdbphp": "<=5.1.1", + "impresscms/impresscms": "<=1.4.5", + "impresspages/impresspages": "<=1.0.12", + "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3", + "in2code/ipandlanguageredirect": "<5.1.2", + "in2code/lux": "<17.6.1|>=18,<24.0.2", + "in2code/powermail": "<7.5.1|>=8,<8.5.1|>=9,<10.9.1|>=11,<12.4.1", + "innologi/typo3-appointments": "<2.0.6", + "intelliants/subrion": "<4.2.2", + "inter-mediator/inter-mediator": "==5.5", + "ipl/web": "<0.10.1", + "islandora/islandora": ">=2,<2.4.1", + "ivankristianto/phpwhois": "<=4.3", + "jackalope/jackalope-doctrine-dbal": "<1.7.4", + "james-heinrich/getid3": "<1.9.21", + "james-heinrich/phpthumb": "<1.7.12", + "jasig/phpcas": "<1.3.3", + "jcbrand/converse.js": "<3.3.3", + "johnbillion/wp-crontrol": "<1.16.2", + "joomla/application": "<1.0.13", + "joomla/archive": "<1.1.12|>=2,<2.0.1", + "joomla/filesystem": "<1.6.2|>=2,<2.0.1", + "joomla/filter": "<1.4.4|>=2,<2.0.1", + "joomla/framework": "<1.5.7|>=2.5.4,<=3.8.12", + "joomla/input": ">=2,<2.0.2", + "joomla/joomla-cms": ">=2.5,<3.9.12", + "joomla/session": "<1.3.1", + "joyqi/hyper-down": "<=2.4.27", + "jsdecena/laracom": "<2.0.9", + "jsmitty12/phpwhois": "<5.1", + "juzaweb/cms": "<=3.4", + "jweiland/events2": "<8.3.8|>=9,<9.0.6", + "kazist/phpwhois": "<=4.2.6", + "kelvinmo/simplexrd": "<3.1.1", + "kevinpapst/kimai2": "<1.16.7", + "khodakhah/nodcms": "<=3", + "kimai/kimai": "<=2.20.1", + "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", + "klaviyo/magento2-extension": ">=1,<3", + "knplabs/knp-snappy": "<=1.4.2", + "kohana/core": "<3.3.3", + "krayin/laravel-crm": "<=1.3", + "kreait/firebase-php": ">=3.2,<3.8.1", + "kumbiaphp/kumbiapp": "<=1.1.1", + "la-haute-societe/tcpdf": "<6.2.22", + "laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2", + "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1", + "laminas/laminas-http": "<2.14.2", + "lara-zeus/artemis": ">=1,<=1.0.6", + "lara-zeus/dynamic-dashboard": ">=3,<=3.0.1", + "laravel/fortify": "<1.11.1", + "laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75", + "laravel/laravel": ">=5.4,<5.4.22", + "laravel/socialite": ">=1,<2.0.10", + "latte/latte": "<2.10.8", + "lavalite/cms": "<=9|==10.1", + "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5", + "league/commonmark": "<0.18.3", + "league/flysystem": "<1.1.4|>=2,<2.1.1", + "league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3", + "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3", + "libreform/libreform": ">=2,<=2.0.8", + "librenms/librenms": "<2017.08.18", + "liftkit/database": "<2.13.2", + "lightsaml/lightsaml": "<1.3.5", + "limesurvey/limesurvey": "<6.5.12", + "livehelperchat/livehelperchat": "<=3.91", + "livewire/livewire": "<2.12.7|>=3.0.0.0-beta1,<3.5.2", + "lms/routes": "<2.1.1", + "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", + "luyadev/yii-helpers": "<1.2.1", + "magento/community-edition": "<2.4.5|==2.4.5|>=2.4.5.0-patch1,<2.4.5.0-patch10|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch8|>=2.4.7.0-beta1,<2.4.7.0-patch3", + "magento/core": "<=1.9.4.5", + "magento/magento1ce": "<1.9.4.3-dev", + "magento/magento1ee": ">=1,<1.14.4.3-dev", + "magento/product-community-edition": "<2.4.4.0-patch9|>=2.4.5,<2.4.5.0-patch8|>=2.4.6,<2.4.6.0-patch6|>=2.4.7,<2.4.7.0-patch1", + "magneto/core": "<1.9.4.4-dev", + "maikuolan/phpmussel": ">=1,<1.6", + "mainwp/mainwp": "<=4.4.3.3", + "mantisbt/mantisbt": "<=2.26.3", + "marcwillmann/turn": "<0.3.3", + "matyhtf/framework": "<3.0.6", + "mautic/core": "<4.4.13|>=5,<5.1.1", + "mautic/core-lib": ">=1.0.0.0-beta,<4.4.13|>=5.0.0.0-alpha,<5.1.1", + "mdanter/ecc": "<2", + "mediawiki/cargo": "<3.6.1", + "mediawiki/core": "<1.36.2", + "mediawiki/matomo": "<2.4.3", + "mediawiki/semantic-media-wiki": "<4.0.2", + "melisplatform/melis-asset-manager": "<5.0.1", + "melisplatform/melis-cms": "<5.0.1", + "melisplatform/melis-front": "<5.0.1", + "mezzio/mezzio-swoole": "<3.7|>=4,<4.3", + "mgallegos/laravel-jqgrid": "<=1.3", + "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1", + "microsoft/microsoft-graph-beta": "<2.0.1", + "microsoft/microsoft-graph-core": "<2.0.2", + "microweber/microweber": "<=2.0.16", + "mikehaertl/php-shellcommand": "<1.6.1", + "miniorange/miniorange-saml": "<1.4.3", + "mittwald/typo3_forum": "<1.2.1", + "mobiledetect/mobiledetectlib": "<2.8.32", + "modx/revolution": "<=2.8.3.0-patch", + "mojo42/jirafeau": "<4.4", + "mongodb/mongodb": ">=1,<1.9.2", + "monolog/monolog": ">=1.8,<1.12", + "moodle/moodle": "<4.3.5|>=4.4.0.0-beta,<4.4.1", + "mos/cimage": "<0.7.19", + "movim/moxl": ">=0.8,<=0.10", + "movingbytes/social-network": "<=1.2.1", + "mpdf/mpdf": "<=7.1.7", + "munkireport/comment": "<4.1", + "munkireport/managedinstalls": "<2.6", + "munkireport/munki_facts": "<1.5", + "munkireport/munkireport": ">=2.5.3,<5.6.3", + "munkireport/reportdata": "<3.5", + "munkireport/softwareupdate": "<1.6", + "mustache/mustache": ">=2,<2.14.1", + "namshi/jose": "<2.2", + "nategood/httpful": "<1", + "neoan3-apps/template": "<1.1.1", + "neorazorx/facturascripts": "<2022.04", + "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", + "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3", + "neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9", + "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", + "neos/swiftmailer": "<5.4.5", + "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15", + "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", + "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", + "nilsteampassnet/teampass": "<3.0.10", + "nonfiction/nterchange": "<4.1.1", + "notrinos/notrinos-erp": "<=0.7", + "noumo/easyii": "<=0.9", + "novaksolutions/infusionsoft-php-sdk": "<1", + "nukeviet/nukeviet": "<4.5.02", + "nyholm/psr7": "<1.6.1", + "nystudio107/craft-seomatic": "<3.4.12", + "nzedb/nzedb": "<0.8", + "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", + "october/backend": "<1.1.2", + "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1", + "october/october": "<=3.6.4", + "october/rain": "<1.0.472|>=1.1,<1.1.2", + "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.15", + "omeka/omeka-s": "<4.0.3", + "onelogin/php-saml": "<2.10.4", + "oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5", + "open-web-analytics/open-web-analytics": "<1.7.4", + "opencart/opencart": ">=0", + "openid/php-openid": "<2.3", + "openmage/magento-lts": "<20.10.1", + "opensolutions/vimbadmin": "<=3.0.15", + "opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2", + "orchid/platform": ">=9,<9.4.4|>=14.0.0.0-alpha4,<14.5", + "oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1", + "oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1", + "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7", + "oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1", + "oro/customer-portal": ">=4.1,<=4.1.13|>=4.2,<=4.2.10|>=5,<=5.0.11|>=5.1,<=5.1.3", + "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<=5.0.12|>=5.1,<=5.1.3", + "oveleon/contao-cookiebar": "<1.16.3|>=2,<2.1.3", + "oxid-esales/oxideshop-ce": "<4.5", + "oxid-esales/paymorrow-module": ">=1,<1.0.2|>=2,<2.0.1", + "packbackbooks/lti-1-3-php-library": "<5", + "padraic/humbug_get_contents": "<1.1.2", + "pagarme/pagarme-php": "<3", + "pagekit/pagekit": "<=1.0.18", + "paragonie/ecc": "<2.0.1", + "paragonie/random_compat": "<2", + "passbolt/passbolt_api": "<4.6.2", + "paypal/adaptivepayments-sdk-php": "<=3.9.2", + "paypal/invoice-sdk-php": "<=3.9", + "paypal/merchant-sdk-php": "<3.12", + "paypal/permissions-sdk-php": "<=3.9.1", + "pear/archive_tar": "<1.4.14", + "pear/auth": "<1.2.4", + "pear/crypt_gpg": "<1.6.7", + "pear/pear": "<=1.10.1", + "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", + "personnummer/personnummer": "<3.0.2", + "phanan/koel": "<5.1.4", + "phenx/php-svg-lib": "<0.5.2", + "php-censor/php-censor": "<2.0.13|>=2.1,<2.1.5", + "php-mod/curl": "<2.3.2", + "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1", + "phpems/phpems": ">=6,<=6.1.3", + "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", + "phpmailer/phpmailer": "<6.5", + "phpmussel/phpmussel": ">=1,<1.6", + "phpmyadmin/phpmyadmin": "<5.2.1", + "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5", + "phpoffice/common": "<0.2.9", + "phpoffice/phpexcel": "<1.8", + "phpoffice/phpspreadsheet": "<1.29.2|>=2,<2.1.1|>=2.2,<2.3", + "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36", + "phpservermon/phpservermon": "<3.6", + "phpsysinfo/phpsysinfo": "<3.4.3", + "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", + "phpwhois/phpwhois": "<=4.2.5", + "phpxmlrpc/extras": "<0.6.1", + "phpxmlrpc/phpxmlrpc": "<4.9.2", + "pi/pi": "<=2.5", + "pimcore/admin-ui-classic-bundle": "<1.5.4", + "pimcore/customer-management-framework-bundle": "<4.0.6", + "pimcore/data-hub": "<1.2.4", + "pimcore/data-importer": "<1.8.9|>=1.9,<1.9.3", + "pimcore/demo": "<10.3", + "pimcore/ecommerce-framework-bundle": "<1.0.10", + "pimcore/perspective-editor": "<1.5.1", + "pimcore/pimcore": "<11.2.4", + "pixelfed/pixelfed": "<0.11.11", + "plotly/plotly.js": "<2.25.2", + "pocketmine/bedrock-protocol": "<8.0.2", + "pocketmine/pocketmine-mp": "<5.11.2", + "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1", + "pressbooks/pressbooks": "<5.18", + "prestashop/autoupgrade": ">=4,<4.10.1", + "prestashop/blockreassurance": "<=5.1.3", + "prestashop/blockwishlist": ">=2,<2.1.1", + "prestashop/contactform": ">=1.0.1,<4.3", + "prestashop/gamification": "<2.3.2", + "prestashop/prestashop": "<8.1.6", + "prestashop/productcomments": "<5.0.2", + "prestashop/ps_emailsubscription": "<2.6.1", + "prestashop/ps_facetedsearch": "<3.4.1", + "prestashop/ps_linklist": "<3.1", + "privatebin/privatebin": "<1.4|>=1.5,<1.7.4", + "processwire/processwire": "<=3.0.229", + "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", + "propel/propel1": ">=1,<=1.7.1", + "pterodactyl/panel": "<1.11.6", + "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", + "ptrofimov/beanstalk_console": "<1.7.14", + "pubnub/pubnub": "<6.1", + "pusher/pusher-php-server": "<2.2.1", + "pwweb/laravel-core": "<=0.3.6.0-beta", + "pxlrbt/filament-excel": "<1.1.14|>=2.0.0.0-alpha,<2.3.3", + "pyrocms/pyrocms": "<=3.9.1", + "qcubed/qcubed": "<=3.1.1", + "quickapps/cms": "<=2.0.0.0-beta2", + "rainlab/blog-plugin": "<1.4.1", + "rainlab/debugbar-plugin": "<3.1", + "rainlab/user-plugin": "<=1.4.5", + "rankmath/seo-by-rank-math": "<=1.0.95", + "rap2hpoutre/laravel-log-viewer": "<0.13", + "react/http": ">=0.7,<1.9", + "really-simple-plugins/complianz-gdpr": "<6.4.2", + "redaxo/source": "<=5.17.1", + "remdex/livehelperchat": "<4.29", + "reportico-web/reportico": "<=8.1", + "rhukster/dom-sanitizer": "<1.0.7", + "rmccue/requests": ">=1.6,<1.8", + "robrichards/xmlseclibs": ">=1,<3.0.4", + "roots/soil": "<4.1", + "rudloff/alltube": "<3.0.3", + "s-cart/core": "<6.9", + "s-cart/s-cart": "<6.9", + "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", + "sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9", + "scheb/two-factor-bundle": "<3.26|>=4,<4.11", + "sensiolabs/connect": "<4.2.3", + "serluck/phpwhois": "<=4.2.6", + "sfroemken/url_redirect": "<=1.2.1", + "sheng/yiicms": "<=1.2", + "shopware/core": "<=6.5.8.12|>=6.6,<=6.6.5", + "shopware/platform": "<=6.5.8.12|>=6.6,<=6.6.5", + "shopware/production": "<=6.3.5.2", + "shopware/shopware": "<=5.7.17", + "shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev", + "shopxo/shopxo": "<=6.1", + "showdoc/showdoc": "<2.10.4", + "silverstripe-australia/advancedreports": ">=1,<=2", + "silverstripe/admin": "<1.13.19|>=2,<2.1.8", + "silverstripe/assets": ">=1,<1.11.1", + "silverstripe/cms": "<4.11.3", + "silverstripe/comments": ">=1.3,<3.1.1", + "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", + "silverstripe/framework": "<5.2.16", + "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3", + "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", + "silverstripe/recipe-cms": ">=4.5,<4.5.3", + "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", + "silverstripe/reports": "<5.2.3", + "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4|>=2.1,<2.1.2", + "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1", + "silverstripe/subsites": ">=2,<2.6.1", + "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1", + "silverstripe/userforms": "<3|>=5,<5.4.2", + "silverstripe/versioned-admin": ">=1,<1.11.1", + "simple-updates/phpwhois": "<=1", + "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12", + "simplesamlphp/simplesamlphp": "<1.18.6", + "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", + "simplesamlphp/simplesamlphp-module-openid": "<1", + "simplesamlphp/simplesamlphp-module-openidprovider": "<0.9", + "simplesamlphp/xml-security": "==1.6.11", + "simplito/elliptic-php": "<1.0.6", + "sitegeist/fluid-components": "<3.5", + "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3", + "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1", + "slim/slim": "<2.6", + "slub/slub-events": "<3.0.3", + "smarty/smarty": "<4.5.3|>=5,<5.1.1", + "snipe/snipe-it": "<7.0.10", + "socalnick/scn-social-auth": "<1.15.2", + "socialiteproviders/steam": "<1.1", + "spatie/browsershot": "<3.57.4", + "spatie/image-optimizer": "<1.7.3", + "spipu/html2pdf": "<5.2.8", + "spoon/library": "<1.4.1", + "spoonity/tcpdf": "<6.2.22", + "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", + "ssddanbrown/bookstack": "<24.05.1", + "starcitizentools/citizen-skin": ">=2.6.3,<2.31", + "statamic/cms": "<4.46|>=5.3,<5.6.2", + "stormpath/sdk": "<9.9.99", + "studio-42/elfinder": "<=2.1.64", + "studiomitte/friendlycaptcha": "<0.1.4", + "subhh/libconnect": "<7.0.8|>=8,<8.1", + "sukohi/surpass": "<1", + "sulu/form-bundle": ">=2,<2.5.3", + "sulu/sulu": "<1.6.44|>=2,<2.5.21|>=2.6,<2.6.5", + "sumocoders/framework-user-bundle": "<1.4", + "superbig/craft-audit": "<3.0.2", + "swag/paypal": "<5.4.4", + "swiftmailer/swiftmailer": "<6.2.5", + "swiftyedit/swiftyedit": "<1.2", + "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", + "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", + "sylius/grid-bundle": "<1.10.1", + "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1", + "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", + "sylius/sylius": "<1.12.19|>=1.13.0.0-alpha1,<1.13.4", + "symbiote/silverstripe-multivaluefield": ">=3,<3.1", + "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4", + "symbiote/silverstripe-seed": "<6.0.3", + "symbiote/silverstripe-versionedfiles": "<=2.0.3", + "symfont/process": ">=0", + "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8", + "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", + "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<5.3.15|>=5.4.3,<5.4.4|>=6.0.3,<6.0.4", + "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7", + "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", + "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1", + "symfony/mime": ">=4.3,<4.3.8", + "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/polyfill": ">=1,<1.10", + "symfony/polyfill-php55": ">=1,<1.10", + "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/routing": ">=2,<2.0.19", + "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8", + "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", + "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9", + "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2|>=5.4,<5.4.31|>=6,<6.3.8", + "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", + "symfony/symfony": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", + "symfony/translation": ">=2,<2.0.17", + "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", + "symfony/ux-autocomplete": "<2.11.2", + "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", + "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", + "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", + "symfony/webhook": ">=6.3,<6.3.8", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7|>=2.2.0.0-beta1,<2.2.0.0-beta2", + "symphonycms/symphony-2": "<2.6.4", + "t3/dce": "<0.11.5|>=2.2,<2.6.2", + "t3g/svg-sanitizer": "<1.0.3", + "t3s/content-consent": "<1.0.3|>=2,<2.0.2", + "tastyigniter/tastyigniter": "<3.3", + "tcg/voyager": "<=1.4", + "tecnickcom/tcpdf": "<=6.7.4", + "terminal42/contao-tablelookupwizard": "<3.3.5", + "thelia/backoffice-default-template": ">=2.1,<2.1.2", + "thelia/thelia": ">=2.1,<2.1.3", + "theonedemon/phpwhois": "<=4.2.5", + "thinkcmf/thinkcmf": "<6.0.8", + "thorsten/phpmyfaq": "<3.2.2", + "tikiwiki/tiki-manager": "<=17.1", + "timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1", + "tinymce/tinymce": "<7.2", + "tinymighty/wiki-seo": "<1.2.2", + "titon/framework": "<9.9.99", + "tobiasbg/tablepress": "<=2.0.0.0-RC1", + "topthink/framework": "<6.0.17|>=6.1,<=8.0.4", + "topthink/think": "<=6.1.1", + "topthink/thinkphp": "<=3.2.3", + "torrentpier/torrentpier": "<=2.4.3", + "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", + "tribalsystems/zenario": "<=9.7.61188", + "truckersmp/phpwhois": "<=4.3.1", + "ttskch/pagination-service-provider": "<1", + "twbs/bootstrap": "<=3.4.1|>=4,<=4.6.2", + "twig/twig": "<1.44.8|>=2,<2.16.1|>=3,<3.11.1|>=3.12,<3.14", + "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", + "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<10.4.46|>=11,<11.5.40|>=12,<12.4.21|>=13,<13.3.1", + "typo3/cms-core": "<=8.7.56|>=9,<=9.5.47|>=10,<=10.4.44|>=11,<=11.5.36|>=12,<=12.4.14|>=13,<=13.1", + "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", + "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", + "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", + "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", + "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8", + "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", + "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", + "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", + "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", + "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", + "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", + "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10", + "ua-parser/uap-php": "<3.8", + "uasoft-indonesia/badaso": "<=2.9.7", + "unisharp/laravel-filemanager": "<2.6.4", + "userfrosting/userfrosting": ">=0.3.1,<4.6.3", + "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", + "uvdesk/community-skeleton": "<=1.1.1", + "uvdesk/core-framework": "<=1.1.1", + "vanilla/safecurl": "<0.9.2", + "verbb/comments": "<1.5.5", + "verbb/formie": "<2.1.6", + "verbb/image-resizer": "<2.0.9", + "verbb/knock-knock": "<1.2.8", + "verot/class.upload.php": "<=2.1.6", + "villagedefrance/opencart-overclocked": "<=1.11.1", + "vova07/yii2-fileapi-widget": "<0.1.9", + "vrana/adminer": "<4.8.1", + "vufind/vufind": ">=2,<9.1.1", + "waldhacker/hcaptcha": "<2.1.2", + "wallabag/tcpdf": "<6.2.22", + "wallabag/wallabag": "<2.6.7", + "wanglelecc/laracms": "<=1.0.3", + "web-auth/webauthn-framework": ">=3.3,<3.3.4|>=4.5,<4.9", + "web-auth/webauthn-lib": ">=4.5,<4.9", + "web-feet/coastercms": "==5.5", + "webbuilders-group/silverstripe-kapost-bridge": "<0.4", + "webcoast/deferred-image-processing": "<1.0.2", + "webklex/laravel-imap": "<5.3", + "webklex/php-imap": "<5.3", + "webpa/webpa": "<3.1.2", + "wikibase/wikibase": "<=1.39.3", + "wikimedia/parsoid": "<0.12.2", + "willdurand/js-translation-bundle": "<2.1.1", + "winter/wn-backend-module": "<1.2.4", + "winter/wn-dusk-plugin": "<2.1", + "winter/wn-system-module": "<1.2.4", + "wintercms/winter": "<=1.2.3", + "wireui/wireui": "<1.19.3|>=2,<2.1.3", + "woocommerce/woocommerce": "<6.6|>=8.8,<8.8.5|>=8.9,<8.9.3", + "wp-cli/wp-cli": ">=0.12,<2.5", + "wp-graphql/wp-graphql": "<=1.14.5", + "wp-premium/gravityforms": "<2.4.21", + "wpanel/wpanel4-cms": "<=4.3.1", + "wpcloud/wp-stateless": "<3.2", + "wpglobus/wpglobus": "<=1.9.6", + "wwbn/avideo": "<14.3", + "xataface/xataface": "<3", + "xpressengine/xpressengine": "<3.0.15", + "yab/quarx": "<2.4.5", + "yeswiki/yeswiki": "<4.1", + "yetiforce/yetiforce-crm": "<=6.4", + "yidashi/yii2cmf": "<=2", + "yii2mod/yii2-cms": "<1.9.2", + "yiisoft/yii": "<1.1.29", + "yiisoft/yii2": "<2.0.49.4-dev", + "yiisoft/yii2-authclient": "<2.2.15", + "yiisoft/yii2-bootstrap": "<2.0.4", + "yiisoft/yii2-dev": "<2.0.43", + "yiisoft/yii2-elasticsearch": "<2.0.5", + "yiisoft/yii2-gii": "<=2.2.4", + "yiisoft/yii2-jui": "<2.0.4", + "yiisoft/yii2-redis": "<2.0.8", + "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", + "yoast-seo-for-typo3/yoast_seo": "<7.2.3", + "yourls/yourls": "<=1.8.2", + "yuan1994/tpadmin": "<=1.3.12", + "zencart/zencart": "<=1.5.7.0-beta", + "zendesk/zendesk_api_client_php": "<2.2.11", + "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", + "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-db": "<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", + "zendframework/zend-diactoros": "<1.8.4", + "zendframework/zend-feed": "<2.10.3", + "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-http": "<2.8.1", + "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", + "zendframework/zend-mail": "<2.4.11|>=2.5,<2.7.2", + "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-session": ">=2,<2.2.9|>=2.3,<2.3.4", + "zendframework/zend-validator": ">=2.3,<2.3.6", + "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zendframework": "<=3", + "zendframework/zendframework1": "<1.12.20", + "zendframework/zendopenid": "<2.0.2", + "zendframework/zendrest": "<2.0.2", + "zendframework/zendservice-amazon": "<2.0.3", + "zendframework/zendservice-api": "<1", + "zendframework/zendservice-audioscrobbler": "<2.0.2", + "zendframework/zendservice-nirvanix": "<2.0.2", + "zendframework/zendservice-slideshare": "<2.0.2", + "zendframework/zendservice-technorati": "<2.0.2", + "zendframework/zendservice-windowsazure": "<2.0.2", + "zendframework/zendxml": ">=1,<1.0.1", + "zenstruck/collection": "<0.2.1", + "zetacomponents/mail": "<1.8.2", + "zf-commons/zfc-user": "<1.2.2", + "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", + "zfr/zfr-oauth2-server-module": "<0.1.2", + "zoujingli/thinkadmin": "<=6.1.53" + }, + "type": "metapackage", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "role": "maintainer" + }, + { + "name": "Ilya Tribusean", + "email": "slash3b@gmail.com", + "role": "maintainer" + } + ], + "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", + "keywords": [ + "dev" + ], + "support": { + "issues": "https://github.com/Roave/SecurityAdvisories/issues", + "source": "https://github.com/Roave/SecurityAdvisories/tree/latest" + }, + "funding": [ + { + "url": "https://github.com/Ocramius", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories", + "type": "tidelift" + } + ], + "time": "2024-10-21T20:05:20+00:00" + }, { "name": "sebastian/cli-parser", "version": "1.0.2", @@ -12543,7 +13374,9 @@ ], "aliases": [], "minimum-stability": "dev", - "stability-flags": [], + "stability-flags": { + "roave/security-advisories": 20 + }, "prefer-stable": true, "prefer-lowest": false, "platform": { diff --git a/config/database.php b/config/database.php index a94cab64..cb740738 100644 --- a/config/database.php +++ b/config/database.php @@ -123,7 +123,7 @@ 'options' => [ 'cluster' => env('REDIS_CLUSTER', 'redis'), - 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'), ], 'default' => [ @@ -144,4 +144,9 @@ ], -]; + 'dbal' => [ + 'types' => [ + 'enum' => App\DBAL\Types\VersionEnumType::class, + ], + ], +]; \ No newline at end of file diff --git a/database/factories/CourseFactory.php b/database/factories/CourseFactory.php index 1d223f87..732d95a1 100644 --- a/database/factories/CourseFactory.php +++ b/database/factories/CourseFactory.php @@ -25,14 +25,19 @@ class CourseFactory extends Factory */ public function definition() { + $academicProgram = $this->faker->randomElement(array_keys(Course::getAcademicPrograms())); return [ 'code' => $this->faker->unique()->regexify('[A-Z]{4}[0-9]{4}'), 'semester_id' => $this->faker->numberBetween(1, 8), - 'academic_program' => $this->faker->randomElement(array_keys(Course::getAcademicPrograms())), - 'version' => $this->faker->randomElement([1, 2]), + 'academic_program' => $academicProgram, + 'version' => $this->faker->randomElement( + array_keys(Course::getVersions($academicProgram)) + ), 'name' => $this->faker->sentence(3), 'credits' => $this->faker->numberBetween(1, 6), 'type' => $this->faker->randomElement(array_keys(Course::getTypes())), + 'teaching_methods' => $this->faker->sentence(3), + 'faq_page' => $this->faker->url, 'content' => $this->faker->paragraph(), 'objectives' => json_encode([$this->faker->sentence(), $this->faker->sentence()]), 'time_allocation' => json_encode(['lectures' => $this->faker->numberBetween(10, 50), 'practicals' => $this->faker->numberBetween(5, 20)]), @@ -45,4 +50,4 @@ public function definition() 'updated_at' => now(), ]; } -} +} \ No newline at end of file diff --git a/database/factories/EventFactory.php b/database/factories/EventFactory.php index 3dbb3c1c..a900379a 100644 --- a/database/factories/EventFactory.php +++ b/database/factories/EventFactory.php @@ -30,6 +30,7 @@ public function definition() 'title' => $this->faker->sentence, 'description' => $this->faker->paragraph, 'url' => urlencode($this->faker->firstName()), + 'event_type' => [$this->faker->randomElement(array_keys(Event::eventTypeMap()))], 'image' => $this->faker->imageUrl(), 'created_by' => 4, 'enabled' => $this->faker->boolean, diff --git a/database/migrations/2024_06_27_150621_create_events_table.php b/database/migrations/2024_06_27_150621_create_events_table.php index f60e2e02..5cb5add1 100644 --- a/database/migrations/2024_06_27_150621_create_events_table.php +++ b/database/migrations/2024_06_27_150621_create_events_table.php @@ -17,7 +17,7 @@ public function up() $table->id(); $table->string('title'); $table->text('description'); - $table->text('url'); + $table->text('url'); $table->date('published_at'); $table->string('image')->nullable(); $table->string('link_url')->nullable(); diff --git a/database/migrations/2024_10_07_120321_create_course_prerequisites_table.php b/database/migrations/2024_10_07_120321_create_course_prerequisites_table.php new file mode 100644 index 00000000..c956c1b6 --- /dev/null +++ b/database/migrations/2024_10_07_120321_create_course_prerequisites_table.php @@ -0,0 +1,32 @@ +id(); + $table->foreignId('course_id')->constrained('courses')->onDelete('cascade'); + $table->foreignId('prerequisite_id')->constrained('courses')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('course_prerequisites'); + } +} diff --git a/database/migrations/2024_10_08_195256_modify_course_modules_course_id_foreign.php b/database/migrations/2024_10_08_195256_modify_course_modules_course_id_foreign.php new file mode 100644 index 00000000..484e179f --- /dev/null +++ b/database/migrations/2024_10_08_195256_modify_course_modules_course_id_foreign.php @@ -0,0 +1,50 @@ +getDriverName() !== 'sqlite') { + $table->dropForeign(['course_id']); + } + + // Recreate the foreign key with 'onDelete' cascade + $table->foreign('course_id') + ->references('id') + ->on('courses') + ->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('course_modules', function (Blueprint $table) { + // Drop the new foreign key + if (Schema::getConnection()->getDriverName() !== 'sqlite') { + $table->dropForeign(['course_id']); + } + + // Restore the old foreign key without 'onDelete' cascade + $table->foreign('course_id') + ->references('id') + ->on('courses'); + }); + } +} + diff --git a/database/migrations/2024_10_09_114038_add_event_type_to_events_table.php b/database/migrations/2024_10_09_114038_add_event_type_to_events_table.php new file mode 100644 index 00000000..ecd75803 --- /dev/null +++ b/database/migrations/2024_10_09_114038_add_event_type_to_events_table.php @@ -0,0 +1,32 @@ +json('event_type')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('events', function (Blueprint $table) { + $table->dropColumn('event_type'); + }); + } +} \ No newline at end of file diff --git a/database/migrations/2024_10_10_103420_add-field-teaching-methods.php b/database/migrations/2024_10_10_103420_add-field-teaching-methods.php new file mode 100644 index 00000000..b8b7e56e --- /dev/null +++ b/database/migrations/2024_10_10_103420_add-field-teaching-methods.php @@ -0,0 +1,32 @@ +text('teaching_methods')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('courses', function (Blueprint $table) { + $table->dropColumn('teaching_methods'); + }); + } +} diff --git a/database/migrations/2024_10_11_124838_alter_column_version.php b/database/migrations/2024_10_11_124838_alter_column_version.php new file mode 100644 index 00000000..6043e33b --- /dev/null +++ b/database/migrations/2024_10_11_124838_alter_column_version.php @@ -0,0 +1,39 @@ +integer('version')->change(); + }); + Schema::table('courses', function (Blueprint $table) { + $table->integer('version')->change(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('semesters', function (Blueprint $table) { + $table->enum('version', array_keys(Course::getVersions()))->change(); + }); + Schema::table('courses', function (Blueprint $table) { + $table->enum('version', array_keys(Course::getVersions()))->change(); + }); + } +} diff --git a/database/migrations/2024_11_06_000554_alter_course_type_enum_column_update.php b/database/migrations/2024_11_06_000554_alter_course_type_enum_column_update.php new file mode 100644 index 00000000..98cbd45d --- /dev/null +++ b/database/migrations/2024_11_06_000554_alter_course_type_enum_column_update.php @@ -0,0 +1,31 @@ +getDriverName() !== 'sqlite') { + $enumValues = "'" . implode("', '", array_keys(Course::getTypes())) . "'"; + DB::statement("ALTER TABLE courses MODIFY COLUMN type ENUM($enumValues)"); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // Nothing here + } +} \ No newline at end of file diff --git a/database/seeders/EventSeeder.php b/database/seeders/EventSeeder.php index 8f947f10..4d2b185a 100644 --- a/database/seeders/EventSeeder.php +++ b/database/seeders/EventSeeder.php @@ -26,6 +26,7 @@ public function run() "title" => "ESCAPE - 2020", "description" => '

EscaPe is the annual project symposium of the Department of Computer Engineering, University of Peradeniya. It will present the research projects of the undergraduates of the Department of Computer Engineering. ESCaPe 2020 is the 5th symposium that is organized by the department and this time the symposium is open for a broader audience and aims to build a platform for the undergraduates to present their research ideas to the industry and academic community.

Further details of the event are at: http://aces.ce.pdn.ac.lk/escape20/

', "url" => "escape-2020", + 'event_type' => [], "published_at" => "2024-08-27", "image" => "1724778446.jpg", "link_url" => "https://aces.ce.pdn.ac.lk/escape/2020/", @@ -43,6 +44,8 @@ public function run() "title" => "VIVACES 2020", "description" => '

Online social gathering of Department of Computer Engineering, University of Peradeniya was held on Friday 12th of June, 2020 with the participation of the Students and Staff successfully.

', "url" => "VIVACES-2020", + 'event_type' => ['1', '2'], + "published_at" => "2024-08-27", "image" => "1724778453.jpg", "link_url" => null, @@ -60,6 +63,8 @@ public function run() "title" => "Hackers’ Club Developer Series", "description" => '

An Online Webinar series organized by Hackers’ Club to introduce some of the tools that you must have up on your sleeve to be a successful Developer/Engineer in the world of Computing. And also a chance to master some of them with the Developer Resources & Materials shared by Hackers’ Club.

This Developer Series mainly focuses on front-end web development, and back-end development, for implementing a multi-platform solution for the real world problems. The Developer Series will be an invaluable chance for you to start the journey of mastering the Web Development world.

Series Timeline:

For more information, please contact hackersclub@eng.pdn.ac.lk or visit https://hackersuop.github.io

', "url" => "hackers-club-dev-series", + 'event_type' => ['0'], + "published_at" => "2024-08-27", "image" => "1724778465.png", "link_url" => null, @@ -77,6 +82,8 @@ public function run() "title" => "GSOC preparation mentoring program’21", "description" => '

Organized by the Department of Computer Engineering.

', "url" => "gsoc-preparation-mentoring-program21", + 'event_type' => ['0', '2'], + "published_at" => "2024-08-27", "image" => "1724778473.png", "link_url" => null, diff --git a/package.json b/package.json index 2ced99f4..5c9467cf 100644 --- a/package.json +++ b/package.json @@ -11,23 +11,23 @@ }, "devDependencies": { "@coreui/coreui": "^3.0.0", - "@coreui/icons": "^1.0.1", + "@coreui/icons": "^3.0.1", "@fortawesome/fontawesome-free": "^5.12.1", "@popperjs/core": "^2.5.1", "alpinejs": "^3.13.3", - "axios": "^0.21.1", + "axios": "^1.7.7", "bootstrap": "^4.5.0", "cross-env": "^7.0", "font-awesome": "^4.7.0", - "jquery": "^3.5.1", + "jquery": "^3.7.1", "laravel-mix": "^6.0.28", "lodash": "^4.17.19", "perfect-scrollbar": "^1.5.0", "popper.js": "^1.16.1", "postcss": "^8.1", - "resolve-url-loader": "^3.1.0", + "resolve-url-loader": "^5.0.0", "sass": "^1.20.1", - "sass-loader": "^8.0.0", + "sass-loader": "^16.0.2", "sweetalert2": "^9.8.2", "vue": "^2.7.14", "vue-loader": "^15.9.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0a56b573..df0e43ba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,8 +16,8 @@ importers: specifier: ^3.0.0 version: 3.4.0(@popperjs/core@2.11.8)(perfect-scrollbar@1.5.5) '@coreui/icons': - specifier: ^1.0.1 - version: 1.0.1 + specifier: ^3.0.1 + version: 3.0.1 '@fortawesome/fontawesome-free': specifier: ^5.12.1 version: 5.15.4 @@ -28,8 +28,8 @@ importers: specifier: ^3.13.3 version: 3.14.1 axios: - specifier: ^0.21.1 - version: 0.21.4 + specifier: ^1.7.7 + version: 1.7.7 bootstrap: specifier: ^4.5.0 version: 4.6.2(jquery@3.7.1)(popper.js@1.16.1) @@ -40,11 +40,11 @@ importers: specifier: ^4.7.0 version: 4.7.0 jquery: - specifier: ^3.5.1 + specifier: ^3.7.1 version: 3.7.1 laravel-mix: specifier: ^6.0.28 - version: 6.0.49(@babel/core@7.25.2)(@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.2))(@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2))(@babel/plugin-transform-runtime@7.25.4(@babel/core@7.25.2))(@babel/preset-env@7.25.4(@babel/core@7.25.2))(postcss@8.4.47)(webpack-cli@4.10.0(webpack@5.94.0))(webpack@5.94.0(webpack-cli@4.10.0)) + version: 6.0.49(@babel/core@7.25.2)(@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.2))(@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2))(@babel/plugin-transform-runtime@7.25.4(@babel/core@7.25.2))(@babel/preset-env@7.25.4(@babel/core@7.25.2))(postcss@8.4.47)(webpack-cli@4.10.0)(webpack@5.94.0) lodash: specifier: ^4.17.19 version: 4.17.21 @@ -58,14 +58,14 @@ importers: specifier: ^8.1 version: 8.4.47 resolve-url-loader: - specifier: ^3.1.0 - version: 3.1.5 + specifier: ^5.0.0 + version: 5.0.0 sass: specifier: ^1.20.1 version: 1.78.0 sass-loader: - specifier: ^8.0.0 - version: 8.0.2(sass@1.78.0)(webpack@5.94.0(webpack-cli@4.10.0)) + specifier: ^16.0.2 + version: 16.0.2(sass@1.78.0)(webpack@5.94.0) sweetalert2: specifier: ^9.8.2 version: 9.17.4 @@ -74,7 +74,7 @@ importers: version: 2.7.16 vue-loader: specifier: ^15.9.5 - version: 15.11.1(css-loader@5.2.7(webpack@5.94.0(webpack-cli@4.10.0)))(lodash@4.17.21)(vue-template-compiler@2.7.16)(webpack@5.94.0(webpack-cli@4.10.0)) + version: 15.11.1(css-loader@5.2.7(webpack@5.94.0))(lodash@4.17.21)(vue-template-compiler@2.7.16)(webpack@5.94.0) vue-template-compiler: specifier: ^2.6.10 version: 2.7.16 @@ -681,8 +681,8 @@ packages: '@popperjs/core': ^2.5.4 perfect-scrollbar: ^1.5.0 - '@coreui/icons@1.0.1': - resolution: {integrity: sha512-DAlvdHRC+HHecdy52vskbNzNKEpu6wHDvSlsHGrwOqNxQl1YLhGEtqAW4sKpyVE3GgysNCywUWZGFlLp8I3LgA==} + '@coreui/icons@3.0.1': + resolution: {integrity: sha512-u9UKEcRMyY9pa4jUoLij8pAR03g5g6TLWV33/Mx2ix8sffyi0eO4fLV8DSTQljDCw938zt7KYog5cVKEAJUxxg==} '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} @@ -951,8 +951,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - adjust-sourcemap-loader@3.0.0: - resolution: {integrity: sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==} + adjust-sourcemap-loader@4.0.0: + resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} engines: {node: '>=8.9'} ajv-formats@2.1.1: @@ -1003,9 +1003,6 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - arity-n@1.0.4: - resolution: {integrity: sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==} - array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -1019,10 +1016,8 @@ packages: assert@1.5.1: resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} - atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} autoprefixer@10.4.20: resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} @@ -1031,8 +1026,8 @@ packages: peerDependencies: postcss: ^8.1.0 - axios@0.21.4: - resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} babel-loader@8.4.1: resolution: {integrity: sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==} @@ -1162,10 +1157,6 @@ packages: camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} @@ -1236,6 +1227,10 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -1250,9 +1245,6 @@ packages: commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - compose-function@3.0.3: - resolution: {integrity: sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==} - compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} @@ -1456,9 +1448,6 @@ packages: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} - convert-source-map@0.3.5: - resolution: {integrity: sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg==} - convert-source-map@1.7.0: resolution: {integrity: sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==} @@ -1529,9 +1518,6 @@ packages: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} - css@2.2.4: - resolution: {integrity: sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==} - cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -1562,10 +1548,6 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - d@1.0.2: - resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} - engines: {node: '>=0.12'} - de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -1586,10 +1568,6 @@ packages: supports-color: optional: true - decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - default-gateway@6.0.3: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} engines: {node: '>= 10'} @@ -1606,6 +1584,10 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} @@ -1716,17 +1698,6 @@ packages: es-module-lexer@1.5.4: resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - es5-ext@0.10.64: - resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} - engines: {node: '>=0.10'} - - es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} - - es6-symbol@3.1.4: - resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} - engines: {node: '>=0.12'} - escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -1742,10 +1713,6 @@ packages: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} - esniff@2.0.1: - resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} - engines: {node: '>=0.10'} - esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -1766,9 +1733,6 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - event-emitter@0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} - eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -1787,9 +1751,6 @@ packages: resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==} engines: {node: '>= 0.10.0'} - ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1857,6 +1818,10 @@ packages: resolution: {integrity: sha512-U6kGnykA/6bFmg1M/oT9EkFeIYv7JlX3bozwQJWiiLz6L0w3F5vBVPxHlwyX/vtNq1ckcpRKOB9f2Qal/VtFpg==} engines: {node: '>=0.10.3'} + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -2373,9 +2338,6 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -2754,10 +2716,6 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@7.0.36: - resolution: {integrity: sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==} - engines: {node: '>=6.0.0'} - postcss@7.0.39: resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} engines: {node: '>=6.0.0'} @@ -2786,6 +2744,9 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} @@ -2894,13 +2855,9 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve-url-loader@3.1.5: - resolution: {integrity: sha512-mgFMCmrV/tA4738EsFmPFE5/MaqSgUMe8LK971kVEKA/RrNVb7+VqFsg/qmKyythf34eyq476qIobP/gfFBGSQ==} - engines: {node: '>=6.0.0'} - - resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated + resolve-url-loader@5.0.0: + resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} + engines: {node: '>=12'} resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} @@ -2914,12 +2871,6 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rework-visit@1.0.0: - resolution: {integrity: sha512-W6V2fix7nCLUYX1v6eGPrBOZlc03/faqzP4sUxMAJMBMOPYhfV/RyLegTufn5gJKaOITyi+gvf0LXDZ9NzkHnQ==} - - rework@1.0.1: - resolution: {integrity: sha512-eEjL8FdkdsxApd0yWVZgBGzfCQiT8yqSc2H1p4jpZpQdtz7ohETiDMoje5PlM8I9WgkqkreVxFUKYOiJdVWDXw==} - rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -2940,21 +2891,26 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass-loader@8.0.2: - resolution: {integrity: sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==} - engines: {node: '>= 8.9.0'} + sass-loader@16.0.2: + resolution: {integrity: sha512-Ll6iXZ1EYwYT19SqW4mSBb76vSSi8JgzElmzIerhEGgzB5hRjDQIWsPmuk1UrAXkR16KJHqVY0eH+5/uw9Tmfw==} + engines: {node: '>= 18.12.0'} peerDependencies: - fibers: '>= 3.1.0' - node-sass: ^4.0.0 + '@rspack/core': 0.x || 1.x + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 sass: ^1.3.0 - webpack: ^4.36.0 || ^5.0.0 + sass-embedded: '*' + webpack: ^5.0.0 peerDependenciesMeta: - fibers: + '@rspack/core': optional: true node-sass: optional: true sass: optional: true + sass-embedded: + optional: true + webpack: + optional: true sass@1.78.0: resolution: {integrity: sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==} @@ -3060,17 +3016,9 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -3137,10 +3085,6 @@ packages: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} - supports-color@6.1.0: - resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} - engines: {node: '>=6'} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -3223,9 +3167,6 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - type@2.7.3: - resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} - undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} @@ -3262,10 +3203,6 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - url@0.11.4: resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} engines: {node: '>= 0.4'} @@ -4268,7 +4205,7 @@ snapshots: '@popperjs/core': 2.11.8 perfect-scrollbar: 1.5.5 - '@coreui/icons@1.0.1': {} + '@coreui/icons@3.0.1': {} '@discoveryjs/json-ext@0.5.7': {} @@ -4621,17 +4558,17 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0(webpack@5.94.0))(webpack@5.94.0(webpack-cli@4.10.0))': + '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.94.0)': dependencies: webpack: 5.94.0(webpack-cli@4.10.0) webpack-cli: 4.10.0(webpack@5.94.0) - '@webpack-cli/info@1.5.0(webpack-cli@4.10.0(webpack@5.94.0))': + '@webpack-cli/info@1.5.0(webpack-cli@4.10.0)': dependencies: envinfo: 7.14.0 webpack-cli: 4.10.0(webpack@5.94.0) - '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0(webpack@5.94.0))': + '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)': dependencies: webpack-cli: 4.10.0(webpack@5.94.0) @@ -4650,7 +4587,7 @@ snapshots: acorn@8.12.1: {} - adjust-sourcemap-loader@3.0.0: + adjust-sourcemap-loader@4.0.0: dependencies: loader-utils: 2.0.4 regex-parser: 2.3.0 @@ -4703,8 +4640,6 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - arity-n@1.0.4: {} - array-flatten@1.1.1: {} array-union@2.1.0: {} @@ -4720,7 +4655,7 @@ snapshots: object.assign: 4.1.5 util: 0.10.4 - atob@2.1.2: {} + asynckit@0.4.0: {} autoprefixer@10.4.20(postcss@8.4.47): dependencies: @@ -4732,13 +4667,15 @@ snapshots: postcss: 8.4.47 postcss-value-parser: 4.2.0 - axios@0.21.4: + axios@1.7.7: dependencies: follow-redirects: 1.15.9 + form-data: 4.0.1 + proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - babel-loader@8.4.1(@babel/core@7.25.2)(webpack@5.94.0(webpack-cli@4.10.0)): + babel-loader@8.4.1(@babel/core@7.25.2)(webpack@5.94.0): dependencies: '@babel/core': 7.25.2 find-cache-dir: 3.3.2 @@ -4909,8 +4846,6 @@ snapshots: pascal-case: 3.1.2 tslib: 2.7.0 - camelcase@5.3.1: {} - caniuse-api@3.0.0: dependencies: browserslist: 4.23.3 @@ -4996,6 +4931,10 @@ snapshots: colorette@2.0.20: {} + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + commander@2.20.3: {} commander@4.1.1: {} @@ -5004,10 +4943,6 @@ snapshots: commondir@1.0.1: {} - compose-function@3.0.3: - dependencies: - arity-n: 1.0.4 - compressible@2.0.18: dependencies: mime-db: 1.53.0 @@ -5050,8 +4985,6 @@ snapshots: content-type@1.0.5: {} - convert-source-map@0.3.5: {} - convert-source-map@1.7.0: dependencies: safe-buffer: 5.1.2 @@ -5128,7 +5061,7 @@ snapshots: dependencies: postcss: 8.4.47 - css-loader@5.2.7(webpack@5.94.0(webpack-cli@4.10.0)): + css-loader@5.2.7(webpack@5.94.0): dependencies: icss-utils: 5.1.0(postcss@8.4.47) loader-utils: 2.0.4 @@ -5157,13 +5090,6 @@ snapshots: css-what@6.1.0: {} - css@2.2.4: - dependencies: - inherits: 2.0.4 - source-map: 0.6.1 - source-map-resolve: 0.5.3 - urix: 0.1.0 - cssesc@3.0.0: {} cssnano-preset-default@5.2.14(postcss@8.4.47): @@ -5216,11 +5142,6 @@ snapshots: csstype@3.1.3: {} - d@1.0.2: - dependencies: - es5-ext: 0.10.64 - type: 2.7.3 - de-indent@1.0.2: {} debug@2.6.9: @@ -5231,8 +5152,6 @@ snapshots: dependencies: ms: 2.1.3 - decode-uri-component@0.2.2: {} - default-gateway@6.0.3: dependencies: execa: 5.1.1 @@ -5251,6 +5170,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + delayed-stream@1.0.0: {} + depd@1.1.2: {} depd@2.0.0: {} @@ -5354,24 +5275,6 @@ snapshots: es-module-lexer@1.5.4: {} - es5-ext@0.10.64: - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.4 - esniff: 2.0.1 - next-tick: 1.1.0 - - es6-iterator@2.0.3: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - es6-symbol: 3.1.4 - - es6-symbol@3.1.4: - dependencies: - d: 1.0.2 - ext: 1.7.0 - escalade@3.2.0: {} escape-html@1.0.3: {} @@ -5383,13 +5286,6 @@ snapshots: esrecurse: 4.3.0 estraverse: 4.3.0 - esniff@2.0.1: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - event-emitter: 0.3.5 - type: 2.7.3 - esrecurse@4.3.0: dependencies: estraverse: 5.3.0 @@ -5402,11 +5298,6 @@ snapshots: etag@1.8.1: {} - event-emitter@0.3.5: - dependencies: - d: 1.0.2 - es5-ext: 0.10.64 - eventemitter3@4.0.7: {} events@3.3.0: {} @@ -5464,10 +5355,6 @@ snapshots: transitivePeerDependencies: - supports-color - ext@1.7.0: - dependencies: - type: 2.7.3 - fast-deep-equal@3.1.3: {} fast-glob@3.3.2: @@ -5492,7 +5379,7 @@ snapshots: dependencies: websocket-driver: 0.7.4 - file-loader@6.2.0(webpack@5.94.0(webpack-cli@4.10.0)): + file-loader@6.2.0(webpack@5.94.0): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 @@ -5533,6 +5420,12 @@ snapshots: font-awesome@4.7.0: {} + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + forwarded@0.2.0: {} fraction.js@4.3.7: {} @@ -5657,7 +5550,7 @@ snapshots: html-entities@2.5.2: {} - html-loader@1.3.2(webpack@5.94.0(webpack-cli@4.10.0)): + html-loader@1.3.2(webpack@5.94.0): dependencies: html-minifier-terser: 5.1.1 htmlparser2: 4.1.0 @@ -5859,7 +5752,7 @@ snapshots: klona@2.0.6: {} - laravel-mix@6.0.49(@babel/core@7.25.2)(@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.2))(@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2))(@babel/plugin-transform-runtime@7.25.4(@babel/core@7.25.2))(@babel/preset-env@7.25.4(@babel/core@7.25.2))(postcss@8.4.47)(webpack-cli@4.10.0(webpack@5.94.0))(webpack@5.94.0(webpack-cli@4.10.0)): + laravel-mix@6.0.49(@babel/core@7.25.2)(@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.2))(@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2))(@babel/plugin-transform-runtime@7.25.4(@babel/core@7.25.2))(@babel/preset-env@7.25.4(@babel/core@7.25.2))(postcss@8.4.47)(webpack-cli@4.10.0)(webpack@5.94.0): dependencies: '@babel/core': 7.25.2 '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.25.2) @@ -5874,7 +5767,7 @@ snapshots: '@types/imagemin-optipng': 5.2.4 '@types/imagemin-svgo': 8.0.1 autoprefixer: 10.4.20(postcss@8.4.47) - babel-loader: 8.4.1(@babel/core@7.25.2)(webpack@5.94.0(webpack-cli@4.10.0)) + babel-loader: 8.4.1(@babel/core@7.25.2)(webpack@5.94.0) chalk: 4.1.2 chokidar: 3.6.0 clean-css: 5.3.3 @@ -5882,35 +5775,35 @@ snapshots: collect.js: 4.36.1 commander: 7.2.0 concat: 1.0.3 - css-loader: 5.2.7(webpack@5.94.0(webpack-cli@4.10.0)) + css-loader: 5.2.7(webpack@5.94.0) cssnano: 5.1.15(postcss@8.4.47) dotenv: 10.0.0 dotenv-expand: 5.1.0 - file-loader: 6.2.0(webpack@5.94.0(webpack-cli@4.10.0)) + file-loader: 6.2.0(webpack@5.94.0) fs-extra: 10.1.0 glob: 7.2.3 - html-loader: 1.3.2(webpack@5.94.0(webpack-cli@4.10.0)) + html-loader: 1.3.2(webpack@5.94.0) imagemin: 7.0.1 img-loader: 4.0.0(imagemin@7.0.1) lodash: 4.17.21 md5: 2.3.0 - mini-css-extract-plugin: 1.6.2(webpack@5.94.0(webpack-cli@4.10.0)) + mini-css-extract-plugin: 1.6.2(webpack@5.94.0) node-libs-browser: 2.2.1 postcss: 8.4.47 postcss-load-config: 3.1.4(postcss@8.4.47) - postcss-loader: 6.2.1(postcss@8.4.47)(webpack@5.94.0(webpack-cli@4.10.0)) + postcss-loader: 6.2.1(postcss@8.4.47)(webpack@5.94.0) semver: 7.6.3 strip-ansi: 6.0.1 - style-loader: 2.0.0(webpack@5.94.0(webpack-cli@4.10.0)) + style-loader: 2.0.0(webpack@5.94.0) terser: 5.32.0 - terser-webpack-plugin: 5.3.10(webpack@5.94.0(webpack-cli@4.10.0)) + terser-webpack-plugin: 5.3.10(webpack@5.94.0) vue-style-loader: 4.1.3 webpack: 5.94.0(webpack-cli@4.10.0) webpack-cli: 4.10.0(webpack@5.94.0) - webpack-dev-server: 4.15.2(webpack-cli@4.10.0(webpack@5.94.0))(webpack@5.94.0(webpack-cli@4.10.0)) + webpack-dev-server: 4.15.2(webpack-cli@4.10.0)(webpack@5.94.0) webpack-merge: 5.10.0 webpack-notifier: 1.15.0 - webpackbar: 5.0.2(webpack@5.94.0(webpack-cli@4.10.0)) + webpackbar: 5.0.2(webpack@5.94.0) yargs: 17.7.2 transitivePeerDependencies: - '@swc/core' @@ -6029,7 +5922,7 @@ snapshots: mimic-fn@2.1.0: {} - mini-css-extract-plugin@1.6.2(webpack@5.94.0(webpack-cli@4.10.0)): + mini-css-extract-plugin@1.6.2(webpack@5.94.0): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 @@ -6061,8 +5954,6 @@ snapshots: neo-async@2.6.2: {} - next-tick@1.1.0: {} - no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -6286,7 +6177,7 @@ snapshots: optionalDependencies: postcss: 8.4.47 - postcss-loader@6.2.1(postcss@8.4.47)(webpack@5.94.0(webpack-cli@4.10.0)): + postcss-loader@6.2.1(postcss@8.4.47)(webpack@5.94.0): dependencies: cosmiconfig: 7.1.0 klona: 2.0.6 @@ -6434,12 +6325,6 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@7.0.36: - dependencies: - chalk: 2.4.2 - source-map: 0.6.1 - supports-color: 6.1.0 - postcss@7.0.39: dependencies: picocolors: 0.2.1 @@ -6465,6 +6350,8 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + proxy-from-env@1.1.0: {} + pseudomap@1.0.2: {} public-encrypt@4.0.3: @@ -6575,21 +6462,14 @@ snapshots: resolve-from@5.0.0: {} - resolve-url-loader@3.1.5: + resolve-url-loader@5.0.0: dependencies: - adjust-sourcemap-loader: 3.0.0 - camelcase: 5.3.1 - compose-function: 3.0.3 + adjust-sourcemap-loader: 4.0.0 convert-source-map: 1.7.0 - es6-iterator: 2.0.3 - loader-utils: 1.4.2 - postcss: 7.0.36 - rework: 1.0.1 - rework-visit: 1.0.0 + loader-utils: 2.0.4 + postcss: 8.4.47 source-map: 0.6.1 - resolve-url@0.2.1: {} - resolve@1.22.8: dependencies: is-core-module: 2.15.1 @@ -6600,13 +6480,6 @@ snapshots: reusify@1.0.4: {} - rework-visit@1.0.0: {} - - rework@1.0.1: - dependencies: - convert-source-map: 0.3.5 - css: 2.2.4 - rimraf@3.0.2: dependencies: glob: 7.2.3 @@ -6626,16 +6499,12 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@8.0.2(sass@1.78.0)(webpack@5.94.0(webpack-cli@4.10.0)): + sass-loader@16.0.2(sass@1.78.0)(webpack@5.94.0): dependencies: - clone-deep: 4.0.1 - loader-utils: 1.4.2 neo-async: 2.6.2 - schema-utils: 2.7.1 - semver: 6.3.1 - webpack: 5.94.0(webpack-cli@4.10.0) optionalDependencies: sass: 1.78.0 + webpack: 5.94.0(webpack-cli@4.10.0) sass@1.78.0: dependencies: @@ -6771,21 +6640,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-resolve@0.5.3: - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - source-map-url@0.4.1: {} - source-map@0.6.1: {} spdy-transport@3.0.0: @@ -6850,7 +6709,7 @@ snapshots: strip-final-newline@2.0.0: {} - style-loader@2.0.0(webpack@5.94.0(webpack-cli@4.10.0)): + style-loader@2.0.0(webpack@5.94.0): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 @@ -6866,10 +6725,6 @@ snapshots: dependencies: has-flag: 3.0.0 - supports-color@6.1.0: - dependencies: - has-flag: 3.0.0 - supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -6894,7 +6749,7 @@ snapshots: tapable@2.2.1: {} - terser-webpack-plugin@5.3.10(webpack@5.94.0(webpack-cli@4.10.0)): + terser-webpack-plugin@5.3.10(webpack@5.94.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 @@ -6942,8 +6797,6 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - type@2.7.3: {} - undici-types@6.19.8: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -6971,8 +6824,6 @@ snapshots: dependencies: punycode: 2.3.1 - urix@0.1.0: {} - url@0.11.4: dependencies: punycode: 1.4.1 @@ -6998,10 +6849,10 @@ snapshots: vue-hot-reload-api@2.3.4: {} - vue-loader@15.11.1(css-loader@5.2.7(webpack@5.94.0(webpack-cli@4.10.0)))(lodash@4.17.21)(vue-template-compiler@2.7.16)(webpack@5.94.0(webpack-cli@4.10.0)): + vue-loader@15.11.1(css-loader@5.2.7(webpack@5.94.0))(lodash@4.17.21)(vue-template-compiler@2.7.16)(webpack@5.94.0): dependencies: '@vue/component-compiler-utils': 3.3.0(lodash@4.17.21) - css-loader: 5.2.7(webpack@5.94.0(webpack-cli@4.10.0)) + css-loader: 5.2.7(webpack@5.94.0) hash-sum: 1.0.2 loader-utils: 1.4.2 vue-hot-reload-api: 2.3.4 @@ -7093,9 +6944,9 @@ snapshots: webpack-cli@4.10.0(webpack@5.94.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0(webpack@5.94.0))(webpack@5.94.0(webpack-cli@4.10.0)) - '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0(webpack@5.94.0)) - '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0(webpack@5.94.0)) + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.94.0) + '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) + '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0) colorette: 2.0.20 commander: 7.2.0 cross-spawn: 7.0.3 @@ -7106,7 +6957,7 @@ snapshots: webpack: 5.94.0(webpack-cli@4.10.0) webpack-merge: 5.10.0 - webpack-dev-middleware@5.3.4(webpack@5.94.0(webpack-cli@4.10.0)): + webpack-dev-middleware@5.3.4(webpack@5.94.0): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -7115,7 +6966,7 @@ snapshots: schema-utils: 4.2.0 webpack: 5.94.0(webpack-cli@4.10.0) - webpack-dev-server@4.15.2(webpack-cli@4.10.0(webpack@5.94.0))(webpack@5.94.0(webpack-cli@4.10.0)): + webpack-dev-server@4.15.2(webpack-cli@4.10.0)(webpack@5.94.0): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -7145,7 +6996,7 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.94.0(webpack-cli@4.10.0)) + webpack-dev-middleware: 5.3.4(webpack@5.94.0) ws: 8.18.0 optionalDependencies: webpack: 5.94.0(webpack-cli@4.10.0) @@ -7196,7 +7047,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.94.0(webpack-cli@4.10.0)) + terser-webpack-plugin: 5.3.10(webpack@5.94.0) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: @@ -7206,7 +7057,7 @@ snapshots: - esbuild - uglify-js - webpackbar@5.0.2(webpack@5.94.0(webpack-cli@4.10.0)): + webpackbar@5.0.2(webpack@5.94.0): dependencies: chalk: 4.1.2 consola: 2.15.3 diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index 0d6179a5..00000000 Binary files a/public/favicon.ico and /dev/null differ diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 00000000..eb3dddef Binary files /dev/null and b/public/favicon.png differ diff --git a/resources/sass/frontend/_global.scss b/resources/sass/frontend/_global.scss index ab7c812b..b0c7a738 100644 --- a/resources/sass/frontend/_global.scss +++ b/resources/sass/frontend/_global.scss @@ -10,3 +10,15 @@ @import '~@fortawesome/fontawesome-free/scss/regular'; @import '~@fortawesome/fontawesome-free/scss/solid'; @import '~@fortawesome/fontawesome-free/scss/brands'; + +.profile-title { + font-size: 1em !important; +} + +.profile-text { + font-size: 1em !important; +} + +.project-card-title { + font-size: 10pt; +} diff --git a/resources/views/backend/courses/delete.blade.php b/resources/views/backend/courses/delete.blade.php index 842680fb..b289835a 100644 --- a/resources/views/backend/courses/delete.blade.php +++ b/resources/views/backend/courses/delete.blade.php @@ -13,6 +13,20 @@

Are you sure you want to delete "{{ $course->name }}" ?

+ + @if ($course->prerequisiteFor()->exists()) +
+ Warning: + This course is a prerequisite for the following + course{{ $course->prerequisiteFor->count() == 1 ? '' : 's' }}: + +
+ @endif +
{!! Form::open([ 'url' => route('dashboard.courses.destroy', compact('course')), diff --git a/resources/views/backend/event/create.blade.php b/resources/views/backend/event/create.blade.php index 1d9fc518..a0616563 100644 --- a/resources/views/backend/event/create.blade.php +++ b/resources/views/backend/event/create.blade.php @@ -65,6 +65,9 @@
+ + +
{!! Form::label('description', 'Description*', ['class' => 'col-md-2 col-form-label']) !!} diff --git a/resources/views/backend/event/edit.blade.php b/resources/views/backend/event/edit.blade.php index 02202fd9..d3e84d03 100644 --- a/resources/views/backend/event/edit.blade.php +++ b/resources/views/backend/event/edit.blade.php @@ -69,6 +69,11 @@
+ + +
{!! Form::label('description', 'Description*', ['class' => 'col-md-2 col-form-label']) !!} diff --git a/resources/views/backend/layouts/app.blade.php b/resources/views/backend/layouts/app.blade.php index 20851939..c5658fd0 100644 --- a/resources/views/backend/layouts/app.blade.php +++ b/resources/views/backend/layouts/app.blade.php @@ -8,7 +8,7 @@ {{ appName() }} | @yield('title') - + @yield('meta') @stack('before-styles') @@ -58,66 +58,6 @@ @stack('after-scripts') - - diff --git a/resources/views/backend/semesters/create.blade.php b/resources/views/backend/semesters/create.blade.php index 08b14f42..e439d556 100644 --- a/resources/views/backend/semesters/create.blade.php +++ b/resources/views/backend/semesters/create.blade.php @@ -55,8 +55,9 @@
- {!! Form::label('version', 'Version*', ['class' => 'col-md-2 col-form-label']) !!} + {!! Form::label('version', 'Curriculum*', ['class' => 'col-md-2 col-form-label']) !!}
+ {{-- TODO make this depends from the Academic Program --}} {!! Form::select('version', \App\Domains\AcademicProgram\Semester\Models\Semester::getVersions(), null, [ 'class' => 'form-select', 'placeholder' => 'Select Version', diff --git a/resources/views/backend/semesters/delete.blade.php b/resources/views/backend/semesters/delete.blade.php index cd28ca02..b8802c8a 100644 --- a/resources/views/backend/semesters/delete.blade.php +++ b/resources/views/backend/semesters/delete.blade.php @@ -15,18 +15,22 @@

@if ($courses->count() > 0) -

The following courses are linked to this semester. Deletion is not permitted until these courses are - reassigned or deleted.

- - Back - @else +
+ Warning: + The following courses are linked to this semester. Deletion is not permitted until these courses are + reassigned or deleted. + +
+ @endif + + @if ($courses->count() == 0)
{!! Form::open([ 'url' => route('dashboard.semesters.destroy', $semester), diff --git a/resources/views/backend/semesters/edit.blade.php b/resources/views/backend/semesters/edit.blade.php index 2fb08e96..e84ffd49 100644 --- a/resources/views/backend/semesters/edit.blade.php +++ b/resources/views/backend/semesters/edit.blade.php @@ -53,8 +53,9 @@
- {!! Form::label('version', 'Version*', ['class' => 'col-md-2 col-form-label']) !!} + {!! Form::label('version', 'Curriculum*', ['class' => 'col-md-2 col-form-label']) !!}
+ {{-- TODO make this depends from the Academic Program --}} {!! Form::select('version', \App\Domains\AcademicProgram\Semester\Models\Semester::getVersions(), null, [ 'class' => 'form-control', 'required' => true, diff --git a/resources/views/components/backend/course_module.blade.php b/resources/views/components/backend/course_module.blade.php index d53f0a57..b0ec4774 100644 --- a/resources/views/components/backend/course_module.blade.php +++ b/resources/views/components/backend/course_module.blade.php @@ -95,7 +95,7 @@ display: none !important; } -
Modules
+
Modules / Course Content
- + +
+ @error('event_type') + {{ $message }} + @enderror +
+ + +
+
+ +
+
+
diff --git a/resources/views/frontend/index.blade.php b/resources/views/frontend/index.blade.php index ed87ae55..572efb1d 100644 --- a/resources/views/frontend/index.blade.php +++ b/resources/views/frontend/index.blade.php @@ -6,7 +6,8 @@ {{ appName() }} - + + @yield('meta') @stack('before-styles') @@ -140,6 +141,10 @@
diff --git a/resources/views/frontend/layouts/app.blade.php b/resources/views/frontend/layouts/app.blade.php index fa419505..1fc528d8 100644 --- a/resources/views/frontend/layouts/app.blade.php +++ b/resources/views/frontend/layouts/app.blade.php @@ -8,7 +8,7 @@ {{ appName() }} | @yield('title') - + @yield('meta') @stack('before-styles') diff --git a/resources/views/frontend/pages/contributors.blade.php b/resources/views/frontend/pages/contributors.blade.php new file mode 100644 index 00000000..6ea70f55 --- /dev/null +++ b/resources/views/frontend/pages/contributors.blade.php @@ -0,0 +1,87 @@ +@extends('frontend.layouts.app') + +@section('title', __('Contributors')) + +@section('content') +
+
+
+ @foreach ($data as $key => $project) + + + +

Project {{ $key + 1 }} {{ $project['title'] }}

+

{{ $project['description'] }}

+ + + +
+
+

Project Team

+
+ @foreach ($project['team'] as $teamMember) +
+
+
+ {{ $teamMember['name'] }} +
+
+

+ {{ $teamMember['name'] }} +

+ + @if ($teamMember['profile_url']) +
+ Profile +
+ @endif +
+
+
+ @endforeach +
+
+ +
+

Project Supervisors/Mentors

+
+ @foreach ($project['supervisors'] as $supervisor) +
+
+
+ {{ $supervisor['name'] }} +
+
+

+ {{ $supervisor['name'] }} +

+ + @if ($supervisor['profile_url']) +
+ Profile +
+ @endif +
+
+
+ @endforeach +
+
+
+
+
+
+ @endforeach +
+
+
+@endsection diff --git a/resources/views/frontend/pages/terms.blade.php b/resources/views/frontend/pages/terms.blade.php index 5b96970d..d2ee49e2 100644 --- a/resources/views/frontend/pages/terms.blade.php +++ b/resources/views/frontend/pages/terms.blade.php @@ -12,15 +12,177 @@ -

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Molestie ac feugiat sed lectus. Egestas diam in arcu cursus. Vitae nunc sed velit dignissim sodales ut eu sem. Nibh praesent tristique magna sit amet purus gravida quis. Tincidunt lobortis feugiat vivamus at augue. Mi quis hendrerit dolor magna eget est lorem. Dapibus ultrices in iaculis nunc sed augue lacus viverra vitae. Ullamcorper malesuada proin libero nunc consequat interdum varius. Tellus elementum sagittis vitae et leo duis ut diam quam. Nisl pretium fusce id velit. Sed enim ut sem viverra aliquet.

-

Laoreet suspendisse interdum consectetur libero id. Duis ut diam quam nulla porttitor massa id neque. Nullam eget felis eget nunc lobortis mattis aliquam faucibus. Tristique sollicitudin nibh sit amet commodo. A erat nam at lectus urna duis convallis convallis. Commodo sed egestas egestas fringilla phasellus faucibus scelerisque eleifend donec. Bibendum ut tristique et egestas. Risus sed vulputate odio ut enim blandit volutpat maecenas. Lorem dolor sed viverra ipsum nunc aliquet bibendum enim. Tristique sollicitudin nibh sit amet commodo. Ac felis donec et odio pellentesque diam volutpat commodo sed. Quam quisque id diam vel. Massa tempor nec feugiat nisl pretium fusce id. Consectetur purus ut faucibus pulvinar elementum integer enim neque volutpat.

+

Terms and Conditions

+

Last updated: October 21, 2024

+

Please read these terms and conditions carefully before using Our Service.

+

Interpretation and Definitions

+

Interpretation

+

The words of which the initial letter is capitalized have meanings defined under the following + conditions. The following definitions shall have the same meaning regardless of whether they + appear in singular or in plural.

+

Definitions

+

For the purposes of these Terms and Conditions:

+
    +
  • +

    Affiliate means an entity that controls, is controlled by or is under + common control with a party, where "control" means ownership of 50% or more of + the shares, equity interest or other securities entitled to vote for election of + directors or other managing authority.

    +
  • +
  • +

    Country refers to: Sri Lanka

    +
  • +
  • +

    Company (referred to as either "the Company", "We", + "Us" or "Our" in this Agreement) refers to CE Department Portal.

    +
  • +
  • +

    Device means any device that can access the Service such as a computer, + a cellphone or a digital tablet.

    +
  • +
  • +

    Service refers to the Website.

    +
  • +
  • +

    Terms and Conditions (also referred as "Terms") mean these + Terms and Conditions that form the entire agreement between You and the Company + regarding the use of the Service. This Terms and Conditions agreement has been created + with the help of the Terms and Conditions Generator.

    +
  • +
  • +

    Third-party Social Media Service means any services or content + (including data, information, products or services) provided by a third-party that may + be displayed, included or made available by the Service.

    +
  • +
  • +

    Website refers to CE Department Portal, accessible from https://portal.ce.pdn.ac.lk/

    +
  • +
  • +

    You means the individual accessing or using the Service, or the company, + or other legal entity on behalf of which such individual is accessing or using the + Service, as applicable.

    +
  • +
+

Acknowledgment

+

These are the Terms and Conditions governing the use of this Service and the agreement that + operates between You and the Company. These Terms and Conditions set out the rights and + obligations of all users regarding the use of the Service.

+

Your access to and use of the Service is conditioned on Your acceptance of and compliance with + these Terms and Conditions. These Terms and Conditions apply to all visitors, users and others + who access or use the Service.

+

By accessing or using the Service You agree to be bound by these Terms and Conditions. If You + disagree with any part of these Terms and Conditions then You may not access the Service.

+

You represent that you are over the age of 18. The Company does not permit those under 18 to use + the Service.

+

Your access to and use of the Service is also conditioned on Your acceptance of and compliance + with the Privacy Policy of the Company. Our Privacy Policy describes Our policies and procedures + on the collection, use and disclosure of Your personal information when You use the Application + or the Website and tells You about Your privacy rights and how the law protects You. Please read + Our Privacy Policy carefully before using Our Service.

+

Links to Other Websites

+

Our Service may contain links to third-party web sites or services that are not owned or + controlled by the Company.

+

The Company has no control over, and assumes no responsibility for, the content, privacy + policies, or practices of any third party web sites or services. You further acknowledge and + agree that the Company shall not be responsible or liable, directly or indirectly, for any + damage or loss caused or alleged to be caused by or in connection with the use of or reliance on + any such content, goods or services available on or through any such web sites or services.

+

We strongly advise You to read the terms and conditions and privacy policies of any third-party + web sites or services that You visit.

+

Termination

+

We may terminate or suspend Your access immediately, without prior notice or liability, for any + reason whatsoever, including without limitation if You breach these Terms and Conditions.

+

Upon termination, Your right to use the Service will cease immediately.

+

Limitation of Liability

+

Notwithstanding any damages that You might incur, the entire liability of the Company and any of + its suppliers under any provision of this Terms and Your exclusive remedy for all of the + foregoing shall be limited to the amount actually paid by You through the Service or 100 USD if + You haven't purchased anything through the Service.

+

To the maximum extent permitted by applicable law, in no event shall the Company or its suppliers + be liable for any special, incidental, indirect, or consequential damages whatsoever (including, + but not limited to, damages for loss of profits, loss of data or other information, for business + interruption, for personal injury, loss of privacy arising out of or in any way related to the + use of or inability to use the Service, third-party software and/or third-party hardware used + with the Service, or otherwise in connection with any provision of this Terms), even if the + Company or any supplier has been advised of the possibility of such damages and even if the + remedy fails of its essential purpose.

+

Some states do not allow the exclusion of implied warranties or limitation of liability for + incidental or consequential damages, which means that some of the above limitations may not + apply. In these states, each party's liability will be limited to the greatest extent permitted + by law.

+

"AS IS" and "AS AVAILABLE" Disclaimer

+

The Service is provided to You "AS IS" and "AS AVAILABLE" and with all faults + and defects without warranty of any kind. To the maximum extent permitted under applicable law, + the Company, on its own behalf and on behalf of its Affiliates and its and their respective + licensors and service providers, expressly disclaims all warranties, whether express, implied, + statutory or otherwise, with respect to the Service, including all implied warranties of + merchantability, fitness for a particular purpose, title and non-infringement, and warranties + that may arise out of course of dealing, course of performance, usage or trade practice. Without + limitation to the foregoing, the Company provides no warranty or undertaking, and makes no + representation of any kind that the Service will meet Your requirements, achieve any intended + results, be compatible or work with any other software, applications, systems or services, + operate without interruption, meet any performance or reliability standards or be error free or + that any errors or defects can or will be corrected.

+

Without limiting the foregoing, neither the Company nor any of the company's provider makes any + representation or warranty of any kind, express or implied: (i) as to the operation or + availability of the Service, or the information, content, and materials or products included + thereon; (ii) that the Service will be uninterrupted or error-free; (iii) as to the accuracy, + reliability, or currency of any information or content provided through the Service; or (iv) + that the Service, its servers, the content, or e-mails sent from or on behalf of the Company are + free of viruses, scripts, trojan horses, worms, malware, timebombs or other harmful components. +

+

Some jurisdictions do not allow the exclusion of certain types of warranties or limitations on + applicable statutory rights of a consumer, so some or all of the above exclusions and + limitations may not apply to You. But in such a case the exclusions and limitations set forth in + this section shall be applied to the greatest extent enforceable under applicable law.

+

Governing Law

+

The laws of the Country, excluding its conflicts of law rules, shall govern this Terms and Your + use of the Service. Your use of the Application may also be subject to other local, state, + national, or international laws.

+

Disputes Resolution

+

If You have any concern or dispute about the Service, You agree to first try to resolve the + dispute informally by contacting the Company.

+

For European Union (EU) Users

+

If You are a European Union consumer, you will benefit from any mandatory provisions of the law + of the country in which You are resident.

+

United States Legal Compliance

+

You represent and warrant that (i) You are not located in a country that is subject to the United + States government embargo, or that has been designated by the United States government as a + "terrorist supporting" country, and (ii) You are not listed on any United States + government list of prohibited or restricted parties.

+

Severability and Waiver

+

Severability

+

If any provision of these Terms is held to be unenforceable or invalid, such provision will be + changed and interpreted to accomplish the objectives of such provision to the greatest extent + possible under applicable law and the remaining provisions will continue in full force and + effect.

+

Waiver

+

Except as provided herein, the failure to exercise a right or to require performance of an + obligation under these Terms shall not affect a party's ability to exercise such right or + require such performance at any time thereafter nor shall the waiver of a breach constitute a + waiver of any subsequent breach.

+

Translation Interpretation

+

These Terms and Conditions may have been translated if We have made them available to You on our + Service. + You agree that the original English text shall prevail in the case of a dispute.

+

Changes to These Terms and Conditions

+

We reserve the right, at Our sole discretion, to modify or replace these Terms at any time. If a + revision is material We will make reasonable efforts to provide at least 30 days' notice prior + to any new terms taking effect. What constitutes a material change will be determined at Our + sole discretion.

+

By continuing to access or use Our Service after those revisions become effective, You agree to + be bound by the revised terms. If You do not agree to the new terms, in whole or in part, please + stop using the website and the Service.

+

Contact Us

+

If you have any questions about these Terms and Conditions, You can contact us:

+
    +
  • By email: webmaster.github.ce@eng.pdn.ac.lk
  • +
-

Gravida rutrum quisque non tellus orci. Eget mauris pharetra et ultrices neque. Habitasse platea dictumst quisque sagittis purus sit amet volutpat. Nunc consequat interdum varius sit amet mattis vulputate enim. Venenatis a condimentum vitae sapien pellentesque habitant morbi tristique senectus. Tempor nec feugiat nisl pretium. Fames ac turpis egestas integer eget aliquet nibh. Mus mauris vitae ultricies leo integer. Vitae proin sagittis nisl rhoncus mattis rhoncus. Commodo odio aenean sed adipiscing diam donec. Purus semper eget duis at tellus at urna condimentum mattis.

- -

Porttitor rhoncus dolor purus non enim praesent elementum facilisis. Massa massa ultricies mi quis hendrerit. Nunc id cursus metus aliquam eleifend mi in nulla posuere. In nisl nisi scelerisque eu ultrices vitae auctor eu augue. Libero nunc consequat interdum varius sit amet mattis vulputate enim. Accumsan tortor posuere ac ut consequat semper viverra nam. Massa tincidunt dui ut ornare. Elit sed vulputate mi sit amet mauris commodo. Faucibus nisl tincidunt eget nullam non nisi. Tortor condimentum lacinia quis vel eros donec ac odio. Posuere ac ut consequat semper. Vestibulum mattis ullamcorper velit sed ullamcorper. Blandit libero volutpat sed cras. Ultricies integer quis auctor elit sed vulputate mi. In hendrerit gravida rutrum quisque non tellus orci ac. Orci phasellus egestas tellus rutrum tellus pellentesque eu. Etiam non quam lacus suspendisse faucibus interdum. Ornare lectus sit amet est. Bibendum est ultricies integer quis auctor elit sed vulputate. Eget duis at tellus at urna.

- -

Sit amet massa vitae tortor condimentum lacinia quis. Id venenatis a condimentum vitae sapien pellentesque habitant. Ac tortor dignissim convallis aenean. Consectetur purus ut faucibus pulvinar elementum integer enim neque volutpat. Consectetur adipiscing elit ut aliquam purus sit amet luctus venenatis. Id porta nibh venenatis cras sed felis. Fermentum odio eu feugiat pretium. Id velit ut tortor pretium viverra. Quis auctor elit sed vulputate mi sit amet mauris. Vel elit scelerisque mauris pellentesque pulvinar pellentesque. Facilisis volutpat est velit egestas dui id ornare. Pretium viverra suspendisse potenti nullam ac. Nulla malesuada pellentesque elit eget gravida cum sociis natoque penatibus. Amet purus gravida quis blandit turpis.

diff --git a/resources/views/livewire/backend/create-courses.blade.php b/resources/views/livewire/backend/create-courses.blade.php index 068ec2d7..b09dee35 100644 --- a/resources/views/livewire/backend/create-courses.blade.php +++ b/resources/views/livewire/backend/create-courses.blade.php @@ -23,13 +23,16 @@
Basics
+ + {{-- Academic Program --}}
-
- @foreach ($academicProgramsList as $academicProgramId => $academicProgramTitle)
+ + {{-- Curriculum --}}
- +
- - @foreach (App\Domains\AcademicProgram\Course\Models\Course::getVersions() as $key => $value) + @foreach ($curriculumList as $key => $value) @endforeach @@ -54,11 +60,14 @@
{{ $message }}
@enderror
+ + {{-- Semester --}}
- +
- @foreach ($semestersList as $semesterId => $semesterTitle) @@ -68,9 +77,11 @@
{{ $message }}
@enderror
+ + {{-- Course Code --}}
- +
@@ -79,9 +90,11 @@ {{ $message }} @enderror
+ + {{-- Course Name --}}
- +
@@ -92,11 +105,12 @@
+ {{-- Course Type --}}
- +
- @foreach (App\Domains\AcademicProgram\Course\Models\Course::getTypes() as $key => $value) @@ -106,17 +120,35 @@
{{ $message }}
@enderror
+ + {{-- Credits --}}
- +
- +
@error('credits') {{ $message }} @enderror
+ + {{-- Teaching Methods --}} +
+
+ +
+
+ +
+ @error('teaching_methods') +
{{ $message }}
+ @enderror +
+ + {{-- FAQ Page --}}
@@ -129,6 +161,8 @@
{{ $message }}
@enderror
+ + {{-- Content --}}
@@ -159,7 +193,6 @@
- {{-- objectives --}}
{!! Form::textarea('objectives', '', [ @@ -170,22 +203,28 @@ 'style' => 'height: 200px;', 'wire:model.lazy' => 'objectives', ]) !!} - + @error('objectives')
{{ $message }}
@enderror
+ {{-- Prerequisites --}} +
+ Prerequisites: +
+
+ @livewire('backend.prerequisite-selector', ['academic_program' => $academicProgram, 'version' => $version, 'semester' => $semester, 'prerequisites' => $prerequisites])
ILOs:
- {{-- ILO --}} + {{-- ILOs --}} @foreach ($ilos as $key => $value) -
- @livewire('backend.item-adder', ['type' => $key, 'items' => $ilos[$key]], key("ilos-$key-adder")) +
+ @livewire('backend.item-adder', ['type' => $key, 'title' => $key, 'items' => $ilos[$key]], key("ilos-$key-adder"))
@endforeach @@ -198,14 +237,15 @@
Modules & References
+ {{-- Modules --}}
+ {{-- References --}}
- @livewire('backend.item-adder', ['type' => 'references', 'items' => $references], key('references-adder')) + @livewire('backend.item-adder', ['type' => 'references', 'title' => 'References / Recommended Reading', 'items' => $references], key('references-adder'))
-
diff --git a/resources/views/livewire/backend/edit-courses.blade.php b/resources/views/livewire/backend/edit-courses.blade.php index e0368eea..18dd5360 100644 --- a/resources/views/livewire/backend/edit-courses.blade.php +++ b/resources/views/livewire/backend/edit-courses.blade.php @@ -23,13 +23,16 @@
Basics
+ + {{-- Academic Program --}}
- @foreach ($academicProgramsList as $academicProgramId => $academicProgramTitle)
+ + {{-- Curriculum --}}
- +
- - @foreach (App\Domains\AcademicProgram\Course\Models\Course::getVersions() as $key => $value) + @foreach ($curriculumList as $key => $value) @endforeach @@ -54,11 +60,14 @@
{{ $message }}
@enderror
+ + {{-- Semester --}}
- +
- @foreach ($semestersList as $semesterId => $semesterTitle) @@ -68,9 +77,11 @@
{{ $message }}
@enderror
+ + {{-- Course Code --}}
- +
@@ -79,9 +90,11 @@ {{ $message }} @enderror
+ + {{-- Course Name --}}
- +
@@ -93,9 +106,10 @@
+ {{-- Course Type --}}
- +
+
@error('credits') {{ $message }} @enderror
+ + {{-- Teaching Methods --}} +
+
+ +
+
+ +
+ @error('teaching_methods') +
{{ $message }}
+ @enderror +
+ + {{-- FAQ Page --}}
@@ -130,6 +162,8 @@
{{ $message }}
@enderror
+ + {{-- Content --}}
@@ -159,7 +193,6 @@
- {{-- objectives --}}
{!! Form::textarea('objectives', '', [ @@ -170,22 +203,29 @@ 'style' => 'height: 200px;', 'wire:model.lazy' => 'objectives', ]) !!} - + @error('objectives')
{{ $message }}
@enderror
+ {{-- Prerequisites --}} +
+ Prerequisites: +
+
+ @livewire('backend.prerequisite-selector', ['courseId' => $course->id, 'academic_program' => $academicProgram, 'version' => $version, 'semester' => $semester]) +
ILOs:
- {{-- ILO --}} + {{-- ILOs --}} @foreach ($ilos as $key => $value) -
- @livewire('backend.item-adder', ['type' => $key, 'items' => $ilos[$key]], key("ilos-$key-adder")) +
+ @livewire('backend.item-adder', ['type' => $key, 'title' => $key, 'items' => $ilos[$key]], key("ilos-$key-adder"))
@endforeach @@ -198,9 +238,15 @@
Modules & References
- -
- @livewire('backend.item-adder', ['type' => 'references', 'items' => $references], key('references-adder')) + {{-- Modules --}} +
+ +
+ + {{-- References --}} +
+ @livewire('backend.item-adder', ['type' => 'references', 'title' => 'References / Recommended Reading', 'items' => $references], key('references-adder')) +
diff --git a/resources/views/livewire/backend/item-adder.blade.php b/resources/views/livewire/backend/item-adder.blade.php index 8e656b5d..c7d97617 100644 --- a/resources/views/livewire/backend/item-adder.blade.php +++ b/resources/views/livewire/backend/item-adder.blade.php @@ -63,7 +63,7 @@ display: none !important; } -
{{ ucfirst($type) }}
+
{{ ucfirst($title) }}
-
diff --git a/routes/frontend/home.php b/routes/frontend/home.php index 30760361..e7d012de 100644 --- a/routes/frontend/home.php +++ b/routes/frontend/home.php @@ -1,22 +1,30 @@ name('index') ->breadcrumbs(function (Trail $trail) { $trail->push(__('Home'), route('frontend.index')); }); -Route::get('terms', [TermsController::class, 'index']) +Route::get('terms', [HomeController::class, 'terms']) ->name('pages.terms') ->breadcrumbs(function (Trail $trail) { $trail->parent('frontend.index') ->push(__('Terms & Conditions'), route('frontend.pages.terms')); }); + + +Route::get('contributors', [HomeController::class, 'contributors']) + ->name('pages.contributors') + ->breadcrumbs(function (Trail $trail) { + $trail->parent('frontend.index') + ->push(__('Contributors'), route('frontend.pages.contributors')); + }); diff --git a/scripts/deploy-dev.sh b/scripts/deploy-dev.sh index 9bee738d..fb926c6c 100644 --- a/scripts/deploy-dev.sh +++ b/scripts/deploy-dev.sh @@ -9,10 +9,10 @@ git fetch origin sudo git pull echo "Running: composer update in dev-mode" -composer update +composer update --no-interaction echo "Running: composer install in dev-mode" -composer install +composer install --no-interaction echo "Running: pnpm install" pnpm install @@ -33,8 +33,8 @@ php artisan view:cache # Not run in dev mode. Must manually done # echo "Running: Setting permissions" # sudo chown -R www-data:www-data ./ -# sudo find ./ -type f -exec chmod 644 {} \; -# sudo find ./ -type d -exec chmod 755 {} \; +# sudo find ./ -type f -exec chmod 751 {} \; +# sudo find ./ -type f -exec chmod 740 {} \; echo "Running: Restarting the queue" php artisan queue:restart diff --git a/scripts/deploy-prod.sh b/scripts/deploy-prod.sh index befa507d..b54955a8 100644 --- a/scripts/deploy-prod.sh +++ b/scripts/deploy-prod.sh @@ -9,8 +9,8 @@ git fetch origin sudo git pull echo "Running: composer install in prod-mode" -composer install --optimize-autoloader --no-dev -composer dump-autoload +composer install --optimize-autoloader --no-dev --no-interaction +composer dump-autoload --no-interaction echo "Running: pnpm install" pnpm install @@ -34,11 +34,11 @@ php artisan view:cache echo "Running: Setting permissions" sudo chown -R www-data:www-data ./ -# Set directory permissions to 755 (rwxr-xr-x) -sudo find ./ -type d -exec chmod 755 {} \; +# Set directory permissions to 755 (rwxr-x--x) +sudo find ./ -type d -exec chmod 751 {} \; -# Set file permissions to 644 (rw-r--r--) -sudo find ./ -type f -exec chmod 644 {} \; +# Set file permissions to 644 (rwxr-----) +sudo find ./ -type f -exec chmod 740 {} \; # Ensure storage and cache directories are writable sudo chmod -R 775 ./storage/* diff --git a/tests/Feature/Backend/Courses/CourseTest.php b/tests/Feature/Backend/Courses/CourseTest.php index e5d1c53f..bef773e3 100644 --- a/tests/Feature/Backend/Courses/CourseTest.php +++ b/tests/Feature/Backend/Courses/CourseTest.php @@ -32,59 +32,114 @@ public function a_course_manager_can_access_the_create_course_page() /** @test */ public function a_course_can_be_created_via_livewire() { - $this->loginAsCourseManager(); - - $semester = Semester::factory()->create(); - - Livewire::test(\App\Http\Livewire\Backend\CreateCourses::class) - ->set('academicProgram', 'undergraduate') - ->set('semester', (string) $semester->id) - ->set('version', '1') - ->set('type', 'Core') - ->set('code', 'CS101') - ->set('name', 'Introduction to Computer Science') - ->set('credits', 3) - ->set('content', 'Basic concepts of computer science.') - ->set('objectives', 'Learn the basics of computer science') - ->set('time_allocation', ['lecture' => 3, 'tutorial' => 1, 'practical' => 1]) - ->set('marks_allocation', ['practicals' => 20, 'mid_exam' => 30, 'end_exam' => 50]) - ->set('ilos', ['knowledge' => ['Understand basic algorithms'], 'skills' => ['Implement basic programs']]) - ->set('references', ['Introduction to Algorithms']) - ->call('submit') - ->assertHasNoErrors(); + $this->loginAsCourseManager(); + + $semester = Semester::factory()->create([ + 'academic_program' => 'undergraduate', + 'version' => '1', + ]); + + Livewire::test(\App\Http\Livewire\Backend\CreateCourses::class) + + ->set('academicProgram', 'undergraduate') + ->set('version', '1') + ->set('semester', (string) $semester->id) + ->set('type', 'Core') + ->set('code', 'CL101') + ->set('name', 'Introduction to Computer Science') + ->set('credits', 3) + ->set('content', 'Basic concepts of computer science.') + ->set('teaching_methods', 'Lecture and practical') + ->set('time_allocation', ['lecture' => 3, 'tutorial' => 1, 'practical' => 1]) + ->set('marks_allocation', ['practicals' => 20, 'mid_exam' => 30, 'end_exam' => 50]) + ->call('next') + ->assertHasNoErrors() + + ->set('objectives', 'Learn the basics of computer science') + ->set('ilos', [ + 'knowledge' => ['Understand basic algorithms'], + 'skills' => ['Implement basic programs'] + ]) + ->call('next') + ->assertHasNoErrors() + + ->set('references', ['Introduction to Algorithms']) + ->set('modules', [ + [ + 'name' => 'Module 1', + 'description' => 'Introduction to programming', + 'time_allocation' => ['lectures' => 2, 'tutorials' => 1, 'practicals' => 1] + ] + ]) + ->call('submit') + ->assertHasNoErrors(); $this->assertDatabaseHas('courses', [ - 'code' => 'CS101', + 'code' => 'CL101', 'name' => 'Introduction to Computer Science', + 'credits' => 3, + 'type' => 'Core', ]); } + /** @test */ public function a_course_can_be_updated_via_livewire() { $this->loginAsCourseManager(); - $course = Course::factory()->create(); - Livewire::test(\App\Http\Livewire\Backend\CreateCourses::class) + $course = Course::factory()->create([ + 'academic_program' => 'undergraduate', + 'version' => '1', + 'type' => 'Core', + ]); + + $semester = Semester::factory()->create([ + 'academic_program' => 'undergraduate', + 'version' => '1', + ]); + + Livewire::test(\App\Http\Livewire\Backend\EditCourses::class, ['course' => $course]) ->set('academicProgram', $course->academic_program) - ->set('semester', (string) $course->semester_id) ->set('version', (string) $course->version) + ->set('semester', (string) $semester->id) ->set('type', $course->type) ->set('code', 'CS102') ->set('name', 'Advanced Computer Science') ->set('credits', 3) ->set('content', 'Advanced topics in computer science.') - ->set('objectives', 'Learn advanced topics') + ->set('teaching_methods', 'Lecture and practical') ->set('time_allocation', ['lecture' => 3, 'tutorial' => 1, 'practical' => 2]) ->set('marks_allocation', ['practicals' => 30, 'mid_exam' => 20, 'end_exam' => 50]) - ->set('ilos', ['knowledge' => ['Understand advanced algorithms']]) + ->call('next') + ->assertHasNoErrors() + + ->set('objectives', 'Learn advanced topics') + ->set('ilos', [ + 'knowledge' => ['Understand advanced algorithms'], + 'skills' => ['Implement advanced programs'] + ]) + ->call('next') + ->assertHasNoErrors() + ->set('references', ['Advanced Algorithms']) - ->call('submit') + ->set('modules', [ + [ + 'name' => 'Module 1', + 'description' => 'Advanced programming concepts', + 'time_allocation' => ['lectures' => 2, 'tutorials' => 1, 'practicals' => 2] + ] + ]) + ->call('update') ->assertHasNoErrors(); $this->assertDatabaseHas('courses', [ + 'id' => $course->id, 'code' => 'CS102', 'name' => 'Advanced Computer Science', + 'credits' => 3, + 'type' => 'Core', + 'content' => 'Advanced topics in computer science.', ]); } @@ -146,4 +201,4 @@ public function update_course_requires_valid_data() ->call('submit') ->assertHasErrors(['academicProgram', 'semester', 'version', 'type', 'code', 'name', 'credits']); } -} \ No newline at end of file +} diff --git a/tests/Feature/Backend/Event/EventTest.php b/tests/Feature/Backend/Event/EventTest.php index a6da3253..5fa5dd38 100644 --- a/tests/Feature/Backend/Event/EventTest.php +++ b/tests/Feature/Backend/Event/EventTest.php @@ -44,7 +44,7 @@ public function event_can_be_created() $response = $this->post('/dashboard/events/', [ 'title' => 'test event', 'description' => 'Nostrum qui qui ut deserunt dolores quaerat. Est quos sed ea quo placeat maxime. Sequi temporibus alias atque assumenda facere modi deleniti. Recusandae autem quia officia iste laudantium veritatis aut.', - + 'event_type' => ['0', '1'], 'image' => 'sample-image.jpg', 'created_by' => $user->id, 'link_url' => 'http://runolfsdottir.biz/quia-provident-ut-ipsa-atque-et', @@ -72,7 +72,8 @@ public function event_can_be_updated() $updateData = [ 'title' => 'Updated Event', 'description' => 'This is an updated event description.', - + 'event_type' => ['0', '2'], + 'image' => 'sample-image.jpg', 'created_by' => $user->id, 'link_url' => 'http://example.com',