diff --git a/.editorconfig b/.editorconfig
old mode 100755
new mode 100644
index 2140c0ba9..1671c9b9d
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,19 +1,18 @@
+root = true
+
[*]
+charset = utf-8
end_of_line = lf
insert_final_newline = true
-
-[*.php]
indent_style = space
indent_size = 4
+trim_trailing_whitespace = true
-[Makefile]
-indent_style = tab
-indent_size = 4
+[*.md]
+trim_trailing_whitespace = false
-[.html]
-indent_style = space
+[*.{yml,yaml}]
indent_size = 2
-[{composer.json}]
-indent_style = space
-indent_size = 4
\ No newline at end of file
+[docker-compose.yml]
+indent_size = 4
diff --git a/.env.dusk.example b/.env.dusk.example
deleted file mode 100755
index 0ba785b53..000000000
--- a/.env.dusk.example
+++ /dev/null
@@ -1,8 +0,0 @@
-APP_NAME=UnifiedTransformTest
-APP_ENV=local
-APP_KEY=
-APP_DEBUG=true
-APP_LOG_LEVEL=debug
-APP_URL=http://127.0.0.1:8000
-
-DB_CONNECTION=dusk_testing
diff --git a/.env.example b/.env.example
old mode 100755
new mode 100644
index 85072698b..017d89f80
--- a/.env.example
+++ b/.env.example
@@ -1,41 +1,51 @@
-APP_NAME=UnifiedTransform
+APP_NAME=Unifiedtransform
APP_ENV=local
APP_KEY=
APP_DEBUG=true
-APP_LOG_LEVEL=debug
APP_URL=http://localhost
+LOG_CHANNEL=stack
+LOG_LEVEL=debug
+
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
-DB_DATABASE=schoolapp
-DB_USERNAME=schoolapp
-DB_PASSWORD=schoolapp
-
-DOCKER_WEBSERVER_HOST=4049
-DOCKER_PHPMYADMIN_HOST=5051
+DB_DATABASE=unifiedtransform
+DB_USERNAME=unifiedtransform
+DB_PASSWORD=secret
BROADCAST_DRIVER=log
CACHE_DRIVER=file
+FILESYSTEM_DRIVER=local
+QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
-QUEUE_DRIVER=sync
+
+MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
-MAIL_DRIVER=smtp
-MAIL_HOST=smtp.mailtrap.io
-MAIL_PORT=2525
+MAIL_MAILER=smtp
+MAIL_HOST=mailhog
+MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
+MAIL_FROM_ADDRESS=null
+MAIL_FROM_NAME="${APP_NAME}"
+
+AWS_ACCESS_KEY_ID=
+AWS_SECRET_ACCESS_KEY=
+AWS_DEFAULT_REGION=us-east-1
+AWS_BUCKET=
+AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
-STRIPE_KEY=
-STRIPE_SECRET=
+MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
+MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
diff --git a/.gitattributes b/.gitattributes
old mode 100755
new mode 100644
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100755
index dd84ea782..000000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: ''
-labels: ''
-assignees: ''
-
----
-
-**Describe the bug**
-A clear and concise description of what the bug is.
-
-**To Reproduce**
-Steps to reproduce the behavior:
-1. Go to '...'
-2. Click on '....'
-3. Scroll down to '....'
-4. See error
-
-**Expected behavior**
-A clear and concise description of what you expected to happen.
-
-**Screenshots**
-If applicable, add screenshots to help explain your problem.
-
-**Desktop (please complete the following information):**
- - OS: [e.g. iOS]
- - Browser [e.g. chrome, safari]
- - Version [e.g. 22]
-
-**Smartphone (please complete the following information):**
- - Device: [e.g. iPhone6]
- - OS: [e.g. iOS8.1]
- - Browser [e.g. stock browser, safari]
- - Version [e.g. 22]
-
-**Additional context**
-Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md
deleted file mode 100755
index 48d5f81fa..000000000
--- a/.github/ISSUE_TEMPLATE/custom.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-name: Custom issue template
-about: Describe this issue template's purpose here.
-title: ''
-labels: ''
-assignees: ''
-
----
-
-
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100755
index bbcbbe7d6..000000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: ''
-assignees: ''
-
----
-
-**Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
-
-**Describe the solution you'd like**
-A clear and concise description of what you want to happen.
-
-**Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features you've considered.
-
-**Additional context**
-Add any other context or screenshots about the feature request here.
diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml
deleted file mode 100755
index 7adbc361f..000000000
--- a/.github/workflows/greetings.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-name: Greetings
-
-on: [pull_request]
-
-jobs:
- greeting:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/first-interaction@v1
- with:
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- pr-message: 'Thanks for your first pr! Happy contribuiting'
diff --git a/.gitignore b/.gitignore
old mode 100755
new mode 100644
index 8eb4a3fb4..eb003b01a
--- a/.gitignore
+++ b/.gitignore
@@ -3,15 +3,13 @@
/public/storage
/storage/*.key
/vendor
-/.idea
-/.vagrant
+.env
+.env.backup
+.phpunit.result.cache
+docker-compose.override.yml
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
-.env
-.php_cs.cache
-.rnd
-/database/database.*
-.env.dusk.local
-_ide_helper.php
+/.idea
+/.vscode
diff --git a/.php_cs b/.php_cs
deleted file mode 100755
index 82f0c9d86..000000000
--- a/.php_cs
+++ /dev/null
@@ -1,40 +0,0 @@
- true,
- '@Symfony' => true,
- // addtional rules
- 'array_syntax' => ['syntax' => 'short'],
- 'no_multiline_whitespace_before_semicolons' => true,
- 'no_short_echo_tag' => true,
- 'no_unused_imports' => true,
- 'not_operator_with_successor_space' => true,
- 'phpdoc_no_empty_return' => false,
- 'linebreak_after_opening_tag' => true,
- 'ordered_imports' => ['sortAlgorithm' => 'length'],
- 'blank_line_after_opening_tag' => true,
- 'trim_array_spaces' => true
-];
-$excludes = [
- 'vendor',
- 'node_modules',
- 'scratch',
-];
-
-$finder = PhpCsFixer\Finder::create()
- ->notPath('bootstrap/cache')
- ->notPath('storage')
- ->notPath('vendor')
- ->in(__DIR__)
- ->name('*.php')
- ->notName('*.blade.php')
- ->ignoreDotFiles(true)
- ->ignoreVCS(true);
-
-return PhpCsFixer\Config::create()
- ->setRules($rules)
- ->setUsingCache(false)
- ->setFinder($finder);
diff --git a/.phpunit.result.cache b/.phpunit.result.cache
deleted file mode 100755
index f71205040..000000000
--- a/.phpunit.result.cache
+++ /dev/null
@@ -1 +0,0 @@
-C:37:"PHPUnit\Runner\DefaultTestResultCache":19599:{a:2:{s:7:"defects";a:96:{s:74:"Tests\Feature\AttendanceModuleTest::can_view_student_attendance_by_section";i:4;s:92:"Tests\Feature\AttendanceModuleTest::students_are_added_to_a_section_before_taking_attendance";i:4;s:82:"Tests\Feature\AttendanceModuleTest::admin_or_teacher_can_adjust_student_attendance";i:4;s:62:"Tests\Feature\Auth\RegisterLoginTest::test_user_can_be_created";i:3;s:58:"Tests\Feature\Auth\RegisterLoginTest::test_user_can_log_in";i:3;s:112:"Tests\Feature\GradeModuleTest::teacher_can_get_total_calculated_marks_of_each_student_of_a_section_of_his_course";i:4;s:81:"Tests\Feature\GradeModuleTest::teacher_can_save_grade_for_a_section_of_his_course";i:4;s:70:"Tests\Feature\LibrarianTest::can_see_some_personal_student_information";i:4;s:72:"Tests\Feature\LibrarianTest::can_see_some_personal_librarian_information";i:4;s:47:"Tests\Feature\LibrarianTest::can_add_a_new_book";i:4;s:64:"Tests\Feature\Library\BookModuleTest::it_loads_the_new_book_page";i:3;s:85:"Tests\Feature\UserModuleTest::admin_redirected_to_register_with_register_role_student";i:4;s:70:"Tests\Feature\LibrarianTest::can_see_some_personal_teacher_information";i:4;s:53:"Tests\Feature\LibrarianTest::can_see_list_of_students";i:4;s:72:"Tests\Feature\AccountingModuleTest::accountant_can_view_edit_sector_form";i:4;s:62:"Tests\Feature\AccountingModuleTest::accountant_can_edit_sector";i:4;s:43:"Tests\Feature\AccountingModuleTest::view_is";i:4;s:64:"Tests\Feature\AccountingModuleTest::accountant_can_create_sector";i:4;s:67:"Tests\Feature\AccountingModuleTest::accountant_can_view_income_list";i:4;s:61:"Tests\Feature\AccountingModuleTest::accountant_can_add_income";i:4;s:68:"Tests\Feature\AccountingModuleTest::accountant_can_view_expense_list";i:4;s:62:"Tests\Feature\AccountingModuleTest::accountant_can_add_expense";i:4;s:64:"Tests\Feature\AttendanceModuleTest::can_view_students_by_section";i:4;s:73:"Tests\Feature\AttendanceModuleTest::view_student_attendance_by_student_id";i:4;s:92:"Tests\Feature\AttendanceModuleTest::admin_or_teacher_can_view_adjust_student_attendance_form";i:4;s:81:"Tests\Feature\AttendanceModuleTest::admin_or_teacher_can_take_students_attendance";i:4;s:83:"Tests\Feature\AttendanceModuleTest::admin_or_teacher_can_update_students_attendance";i:4;s:91:"Tests\Feature\Auth\RegisterLoginTest::test_unauthenticated_user_cannot_view_a_register_form";i:3;s:69:"Tests\Feature\Auth\RegisterLoginTest::test_user_can_view_a_login_form";i:3;s:79:"Tests\Feature\CourseModuleTest::admin_or_teacher_can_view_courses_by_teacher_id";i:4;s:79:"Tests\Feature\CourseModuleTest::admin_or_teacher_can_view_courses_by_section_id";i:4;s:85:"Tests\Feature\CourseModuleTest::can_view_students_from_grade_table_by_course_and_exam";i:4;s:52:"Tests\Feature\CourseModuleTest::admin_can_add_course";i:4;s:67:"Tests\Feature\CourseModuleTest::admin_can_save_course_configuration";i:4;s:40:"Tests\Feature\ExampleTest::testBasicTest";i:3;s:75:"Tests\Feature\GradeModuleTest::can_view_classes_sections_for_students_grade";i:4;s:74:"Tests\Feature\GradeModuleTest::can_view_all_students_marks_under_a_section";i:4;s:58:"Tests\Feature\GradeModuleTest::can_view_grade_of_a_student";i:4;s:90:"Tests\Feature\GradeModuleTest::teacher_can_view_students_grades_of_a_section_of_his_course";i:4;s:92:"Tests\Feature\GradeModuleTest::teacher_can_submit_students_grades_of_a_section_of_his_course";i:4;s:44:"Tests\Feature\GradeSystemModuleTest::view_is";i:4;s:76:"Tests\Feature\GradeSystemModuleTest::admin_can_view_grade_system_create_form";i:4;s:66:"Tests\Feature\GradeSystemModuleTest::admin_can_create_grade_system";i:4;s:66:"Tests\Feature\GradeSystemModuleTest::admin_can_delete_grade_system";i:4;s:73:"Tests\Feature\LibrarianTest::can_see_dashboard_as_a_home_page_after_login";i:4;s:53:"Tests\Feature\LibrarianTest::can_see_list_of_teachers";i:4;s:55:"Tests\Feature\LibrarianTest::can_see_list_of_librarians";i:4;s:46:"Tests\Feature\LibrarianTest::can_see_all_books";i:4;s:49:"Tests\Feature\LibrarianTest::can_see_book_details";i:4;s:50:"Tests\Feature\LibrarianTest::can_edit_book_details";i:4;s:49:"Tests\Feature\LibrarianTest::can_see_issued_books";i:4;s:61:"Tests\Feature\Library\BookModuleTest::it_shows_the_books_list";i:3;s:67:"Tests\Feature\Library\BookModuleTest::it_displays_the_books_details";i:3;s:59:"Tests\Feature\Library\BookModuleTest::it_creates_a_new_book";i:4;s:74:"Tests\Feature\Library\BookModuleTest::the_book_attributes_must_be_required";i:3;s:66:"Tests\Feature\Library\BookModuleTest::the_book_code_must_be_unique";i:3;s:65:"Tests\Feature\Library\BookModuleTest::it_loads_the_edit_book_page";i:3;s:58:"Tests\Feature\Library\BookModuleTest::a_book_can_be_edited";i:3;s:69:"Tests\Feature\Library\IssuedBookModuleTest::librarian_can_issue_books";i:4;s:45:"Tests\Feature\Manage\ClassModuleTest::view_is";i:4;s:61:"Tests\Feature\Manage\ClassModuleTest::it_shows_the_class_list";i:4;s:60:"Tests\Feature\Manage\ClassModuleTest::admin_can_create_class";i:4;s:46:"Tests\Feature\Manage\CourseModuleTest::view_is";i:4;s:63:"Tests\Feature\Manage\CourseModuleTest::it_shows_the_course_list";i:4;s:62:"Tests\Feature\Manage\CourseModuleTest::admin_can_create_course";i:4;s:59:"Tests\Feature\Manage\ExamModuleTest::it_shows_the_exam_list";i:4;s:70:"Tests\Feature\Manage\ExamModuleTest::can_view_active_exams_of_a_school";i:4;s:70:"Tests\Feature\Manage\ExamModuleTest::admin_can_view_exam_creation_form";i:4;s:58:"Tests\Feature\Manage\ExamModuleTest::admin_can_create_exam";i:4;s:60:"Tests\Feature\Manage\ExamModuleTest::admin_can_activate_exam";i:4;s:62:"Tests\Feature\Manage\ExamModuleTest::admin_can_deactivate_exam";i:4;s:60:"Tests\Feature\Manage\SchoolModuleTest::it_shows_schools_list";i:4;s:62:"Tests\Feature\Manage\SchoolModuleTest::it_creates_a_new_school";i:4;s:59:"Tests\Feature\Manage\SchoolModuleTest::it_shows_edit_school";i:4;s:64:"Tests\Feature\Manage\SchoolModuleTest::a_school_can_being_edited";i:4;s:47:"Tests\Feature\Manage\SectionModuleTest::view_is";i:4;s:65:"Tests\Feature\Manage\SectionModuleTest::it_shows_the_section_list";i:4;s:64:"Tests\Feature\Manage\SectionModuleTest::admin_can_create_section";i:4;s:66:"Tests\Feature\Manage\SettingModuleTest::it_shows_the_teachers_list";i:4;s:69:"Tests\Feature\Manage\SettingModuleTest::it_shows_the_departments_list";i:4;s:65:"Tests\Feature\Manage\SettingModuleTest::it_shows_the_classes_list";i:4;s:66:"Tests\Feature\Manage\SettingModuleTest::it_shows_the_sections_list";i:4;s:71:"Tests\Feature\Manage\SettingModuleTest::admin_can_create_new_department";i:4;s:62:"Tests\Feature\PaymentModuleTest::student_can_view_payment_page";i:4;s:63:"Tests\Feature\PaymentModuleTest::student_can_view_receipts_page";i:4;s:59:"Tests\Feature\UserModuleTest::can_view_students_of_a_school";i:4;s:59:"Tests\Feature\UserModuleTest::can_view_teachers_of_a_school";i:4;s:62:"Tests\Feature\UserModuleTest::can_view_accountants_of_a_school";i:4;s:61:"Tests\Feature\UserModuleTest::can_view_librarians_of_a_school";i:4;s:60:"Tests\Feature\UserModuleTest::can_view_students_of_a_section";i:4;s:68:"Tests\Feature\UserModuleTest::can_view_promote_section_students_form";i:4;s:58:"Tests\Feature\UserModuleTest::can_promote_section_students";i:4;s:68:"Tests\Feature\UsersExcelExportTest::admin_can_download_students_list";i:4;s:68:"Tests\Feature\UsersExcelExportTest::admin_can_download_teachers_list";i:4;s:82:"Tests\Feature\UsersExcelExportTest::non_admin_users_can_not_see_export_users_forms";i:4;s:69:"Tests\Feature\CertificateTest::admin_can_view_upload_certificate_page";i:4;}s:5:"times";a:153:{s:43:"Tests\Feature\AccountingModuleTest::view_is";d:0.365;s:64:"Tests\Feature\AccountingModuleTest::accountant_can_create_sector";d:0.12;s:72:"Tests\Feature\AccountingModuleTest::accountant_can_view_edit_sector_form";d:0.121;s:62:"Tests\Feature\AccountingModuleTest::accountant_can_edit_sector";d:0.121;s:67:"Tests\Feature\AccountingModuleTest::accountant_can_view_income_list";d:0.12;s:61:"Tests\Feature\AccountingModuleTest::accountant_can_add_income";d:0.113;s:68:"Tests\Feature\AccountingModuleTest::accountant_can_view_expense_list";d:0.123;s:62:"Tests\Feature\AccountingModuleTest::accountant_can_add_expense";d:0.115;s:74:"Tests\Feature\AttendanceModuleTest::can_view_student_attendance_by_section";d:0.124;s:64:"Tests\Feature\AttendanceModuleTest::can_view_students_by_section";d:0.116;s:92:"Tests\Feature\AttendanceModuleTest::students_are_added_to_a_section_before_taking_attendance";d:0.121;s:73:"Tests\Feature\AttendanceModuleTest::view_student_attendance_by_student_id";d:0.116;s:92:"Tests\Feature\AttendanceModuleTest::admin_or_teacher_can_view_adjust_student_attendance_form";d:0.117;s:82:"Tests\Feature\AttendanceModuleTest::admin_or_teacher_can_adjust_student_attendance";d:0.117;s:81:"Tests\Feature\AttendanceModuleTest::admin_or_teacher_can_take_students_attendance";d:0.132;s:83:"Tests\Feature\AttendanceModuleTest::admin_or_teacher_can_update_students_attendance";d:0.118;s:91:"Tests\Feature\Auth\RegisterLoginTest::test_unauthenticated_user_cannot_view_a_register_form";d:0.044;s:62:"Tests\Feature\Auth\RegisterLoginTest::test_user_can_be_created";d:0.119;s:69:"Tests\Feature\Auth\RegisterLoginTest::test_user_can_view_a_login_form";d:0.044;s:58:"Tests\Feature\Auth\RegisterLoginTest::test_user_can_log_in";d:0.227;s:79:"Tests\Feature\CourseModuleTest::admin_or_teacher_can_view_courses_by_teacher_id";d:0.116;s:79:"Tests\Feature\CourseModuleTest::admin_or_teacher_can_view_courses_by_section_id";d:0.113;s:85:"Tests\Feature\CourseModuleTest::can_view_students_from_grade_table_by_course_and_exam";d:0.119;s:52:"Tests\Feature\CourseModuleTest::admin_can_add_course";d:0.122;s:67:"Tests\Feature\CourseModuleTest::admin_can_save_course_configuration";d:0.115;s:40:"Tests\Feature\ExampleTest::testBasicTest";d:0.015;s:75:"Tests\Feature\GradeModuleTest::can_view_classes_sections_for_students_grade";d:0.115;s:74:"Tests\Feature\GradeModuleTest::can_view_all_students_marks_under_a_section";d:0.112;s:58:"Tests\Feature\GradeModuleTest::can_view_grade_of_a_student";d:0.112;s:90:"Tests\Feature\GradeModuleTest::teacher_can_view_students_grades_of_a_section_of_his_course";d:0.125;s:92:"Tests\Feature\GradeModuleTest::teacher_can_submit_students_grades_of_a_section_of_his_course";d:0.119;s:112:"Tests\Feature\GradeModuleTest::teacher_can_get_total_calculated_marks_of_each_student_of_a_section_of_his_course";d:0.165;s:81:"Tests\Feature\GradeModuleTest::teacher_can_save_grade_for_a_section_of_his_course";d:0.12;s:44:"Tests\Feature\GradeSystemModuleTest::view_is";d:0.111;s:76:"Tests\Feature\GradeSystemModuleTest::admin_can_view_grade_system_create_form";d:0.12;s:66:"Tests\Feature\GradeSystemModuleTest::admin_can_create_grade_system";d:0.113;s:66:"Tests\Feature\GradeSystemModuleTest::admin_can_delete_grade_system";d:0.116;s:73:"Tests\Feature\LibrarianTest::can_see_dashboard_as_a_home_page_after_login";d:0.114;s:53:"Tests\Feature\LibrarianTest::can_see_list_of_students";d:0.119;s:70:"Tests\Feature\LibrarianTest::can_see_some_personal_student_information";d:0.115;s:53:"Tests\Feature\LibrarianTest::can_see_list_of_teachers";d:0.124;s:70:"Tests\Feature\LibrarianTest::can_see_some_personal_teacher_information";d:0.114;s:55:"Tests\Feature\LibrarianTest::can_see_list_of_librarians";d:0.117;s:72:"Tests\Feature\LibrarianTest::can_see_some_personal_librarian_information";d:0.115;s:46:"Tests\Feature\LibrarianTest::can_see_all_books";d:0.121;s:49:"Tests\Feature\LibrarianTest::can_see_book_details";d:0.125;s:50:"Tests\Feature\LibrarianTest::can_edit_book_details";d:0.117;s:49:"Tests\Feature\LibrarianTest::can_see_issued_books";d:0.118;s:47:"Tests\Feature\LibrarianTest::can_add_a_new_book";d:0.121;s:61:"Tests\Feature\Library\BookModuleTest::it_shows_the_books_list";d:0.12;s:67:"Tests\Feature\Library\BookModuleTest::it_displays_the_books_details";d:0.127;s:64:"Tests\Feature\Library\BookModuleTest::it_loads_the_new_book_page";d:0.116;s:59:"Tests\Feature\Library\BookModuleTest::it_creates_a_new_book";d:0.114;s:74:"Tests\Feature\Library\BookModuleTest::the_book_attributes_must_be_required";d:0.115;s:66:"Tests\Feature\Library\BookModuleTest::the_book_code_must_be_unique";d:0.111;s:65:"Tests\Feature\Library\BookModuleTest::it_loads_the_edit_book_page";d:0.126;s:58:"Tests\Feature\Library\BookModuleTest::a_book_can_be_edited";d:0.115;s:69:"Tests\Feature\Library\IssuedBookModuleTest::librarian_can_issue_books";d:0.113;s:45:"Tests\Feature\Manage\ClassModuleTest::view_is";d:0.113;s:61:"Tests\Feature\Manage\ClassModuleTest::it_shows_the_class_list";d:0.122;s:60:"Tests\Feature\Manage\ClassModuleTest::admin_can_create_class";d:0.131;s:46:"Tests\Feature\Manage\CourseModuleTest::view_is";d:0.131;s:63:"Tests\Feature\Manage\CourseModuleTest::it_shows_the_course_list";d:0.117;s:62:"Tests\Feature\Manage\CourseModuleTest::admin_can_create_course";d:0.122;s:59:"Tests\Feature\Manage\ExamModuleTest::it_shows_the_exam_list";d:0.115;s:70:"Tests\Feature\Manage\ExamModuleTest::can_view_active_exams_of_a_school";d:0.115;s:70:"Tests\Feature\Manage\ExamModuleTest::admin_can_view_exam_creation_form";d:0.124;s:58:"Tests\Feature\Manage\ExamModuleTest::admin_can_create_exam";d:0.121;s:60:"Tests\Feature\Manage\ExamModuleTest::admin_can_activate_exam";d:0.112;s:62:"Tests\Feature\Manage\ExamModuleTest::admin_can_deactivate_exam";d:0.112;s:60:"Tests\Feature\Manage\SchoolModuleTest::it_shows_schools_list";d:0.112;s:62:"Tests\Feature\Manage\SchoolModuleTest::it_creates_a_new_school";d:0.121;s:59:"Tests\Feature\Manage\SchoolModuleTest::it_shows_edit_school";d:0.112;s:64:"Tests\Feature\Manage\SchoolModuleTest::a_school_can_being_edited";d:0.113;s:47:"Tests\Feature\Manage\SectionModuleTest::view_is";d:0.117;s:65:"Tests\Feature\Manage\SectionModuleTest::it_shows_the_section_list";d:0.116;s:64:"Tests\Feature\Manage\SectionModuleTest::admin_can_create_section";d:0.132;s:66:"Tests\Feature\Manage\SettingModuleTest::it_shows_the_teachers_list";d:0.119;s:69:"Tests\Feature\Manage\SettingModuleTest::it_shows_the_departments_list";d:0.123;s:65:"Tests\Feature\Manage\SettingModuleTest::it_shows_the_classes_list";d:0.117;s:66:"Tests\Feature\Manage\SettingModuleTest::it_shows_the_sections_list";d:0.119;s:71:"Tests\Feature\Manage\SettingModuleTest::admin_can_create_new_department";d:0.124;s:62:"Tests\Feature\PaymentModuleTest::student_can_view_payment_page";d:0.123;s:63:"Tests\Feature\PaymentModuleTest::student_can_view_receipts_page";d:0.141;s:59:"Tests\Feature\UserModuleTest::can_view_students_of_a_school";d:0.332;s:59:"Tests\Feature\UserModuleTest::can_view_teachers_of_a_school";d:0.424;s:62:"Tests\Feature\UserModuleTest::can_view_accountants_of_a_school";d:0.188;s:61:"Tests\Feature\UserModuleTest::can_view_librarians_of_a_school";d:0.214;s:60:"Tests\Feature\UserModuleTest::can_view_students_of_a_section";d:0.114;s:68:"Tests\Feature\UserModuleTest::can_view_promote_section_students_form";d:0.117;s:58:"Tests\Feature\UserModuleTest::can_promote_section_students";d:0.127;s:85:"Tests\Feature\UserModuleTest::admin_redirected_to_register_with_register_role_student";d:0.12;s:68:"Tests\Feature\UsersExcelExportTest::admin_can_download_students_list";d:0.12;s:68:"Tests\Feature\UsersExcelExportTest::admin_can_download_teachers_list";d:0.109;s:82:"Tests\Feature\UsersExcelExportTest::non_admin_users_can_not_see_export_users_forms";d:0.112;s:60:"Test\Unit\App\AccountTest::the_accounts_are_filter_by_school";d:0.111;s:73:"Tests\Unit\App\AttendanceTest::an_attendance_is_an_instance_of_Attendance";d:0.11;s:63:"Tests\Unit\App\AttendanceTest::an_attendance_belongs_to_student";d:0.116;s:63:"Tests\Unit\App\AttendanceTest::an_attendance_belongs_to_section";d:0.113;s:60:"Tests\Unit\App\AttendanceTest::an_attendance_belongs_to_exam";d:0.109;s:55:"Tests\Unit\App\BookTest::a_class_is_an_instance_of_Book";d:0.106;s:49:"Tests\Unit\App\BookTest::a_book_belongs_to_school";d:0.109;s:48:"Tests\Unit\App\BookTest::a_book_belongs_to_class";d:0.107;s:47:"Tests\Unit\App\BookTest::a_book_belongs_to_user";d:0.106;s:55:"Tests\Unit\App\BookTest::the_books_are_filter_by_school";d:0.123;s:66:"Test\Unit\App\DepartmentTest::the_departments_are_filter_by_school";d:0.047;s:56:"Test\Unit\App\EventTest::the_events_are_filter_by_school";d:0.11;s:54:"Test\Unit\App\ExamTest::the_exams_are_filter_by_school";d:0.113;s:52:"Test\Unit\App\FeeTest::the_fees_are_filter_by_school";d:0.108;s:54:"Test\Unit\App\FormTest::the_forms_are_filter_by_school";d:0.111;s:57:"Tests\Unit\App\GradeTest::a_grade_is_an_instance_of_Grade";d:0.122;s:51:"Tests\Unit\App\GradeTest::a_grade_belongs_to_course";d:0.115;s:52:"Tests\Unit\App\GradeTest::a_grade_belongs_to_student";d:0.112;s:52:"Tests\Unit\App\GradeTest::a_grade_belongs_to_teacher";d:0.113;s:49:"Tests\Unit\App\GradeTest::a_grade_belongs_to_exam";d:0.114;s:75:"Tests\Unit\App\GradesystemTest::a_gradesystem_is_an_instance_of_Gradesystem";d:0.105;s:63:"Tests\Unit\App\GradesystemTest::a_gradesystem_belongs_to_school";d:0.119;s:69:"Tests\Unit\App\GradesystemTest::the_gradesystems_are_filter_by_school";d:0.111;s:73:"Tests\Unit\App\IssuedBookTest::an_Issuedbook_is_an_instance_of_Issuedbook";d:0.111;s:60:"Tests\Unit\App\IssuedBookTest::an_issuedbook_belongs_to_book";d:0.109;s:68:"Tests\Unit\App\IssuedBookTest::the_issued_books_are_filter_by_school";d:0.116;s:60:"Test\Unit\App\MessageTest::the_messages_are_filter_by_school";d:0.112;s:61:"Tests\Unit\App\MyclassTest::a_class_is_an_instance_of_Myclass";d:0.046;s:53:"Tests\Unit\App\MyclassTest::a_class_belongs_to_school";d:0.057;s:48:"Tests\Unit\App\MyclassTest::a_class_has_sections";d:0.06;s:45:"Tests\Unit\App\MyclassTest::a_class_has_books";d:0.05;s:57:"Tests\Unit\App\MyclassTest::my_class_are_filter_by_school";d:0.051;s:58:"Test\Unit\App\NoticeTest::the_notices_are_filter_by_school";d:0.113;s:60:"Test\Unit\App\RoutineTest::the_routines_are_filter_by_school";d:0.112;s:60:"Tests\Unit\App\SchoolTest::a_school_is_an_instance_of_School";d:0.058;s:45:"Tests\Unit\App\SchoolTest::a_school_has_users";d:0.045;s:51:"Tests\Unit\App\SchoolTest::a_school_has_departments";d:0.045;s:63:"Tests\Unit\App\SectionTest::a_section_is_an_instance_of_Section";d:0.048;s:54:"Tests\Unit\App\SectionTest::a_section_belongs_to_class";d:0.049;s:63:"Test\Unit\App\SyllabusTest::the_syllabuses_are_filter_by_school";d:0.113;s:56:"Tests\Unit\App\UsersTest::an_user_is_an_instance_of_User";d:0.109;s:52:"Tests\Unit\App\UsersTest::an_user_belongs_to_section";d:0.121;s:51:"Tests\Unit\App\UsersTest::an_user_belongs_to_school";d:0.112;s:55:"Tests\Unit\App\UsersTest::an_user_belongs_to_department";d:0.107;s:42:"Tests\Unit\App\UsersTest::an_user_has_role";d:0.116;s:56:"Tests\Unit\App\UsersTest::the_users_are_filter_by_school";d:0.119;s:37:"Tests\Unit\ExampleTest::testBasicTest";d:0.014;s:84:"Tests\Unit\IssuedBookTest::test_insert_each_issued_book_in_an_array with data set #0";d:0.043;s:59:"Tests\Unit\MarkCalculationTest::getMarkSum with data set #0";d:0.051;s:59:"Tests\Unit\MarkCalculationTest::getMarkSum with data set #1";d:0.04;s:59:"Tests\Unit\MarkCalculationTest::getMarkSum with data set #2";d:0.049;s:66:"Tests\Unit\MarkCalculationTest::getFieldFinalMark with data set #0";d:0.046;s:66:"Tests\Unit\MarkCalculationTest::getFieldFinalMark with data set #1";d:0.042;s:66:"Tests\Unit\MarkCalculationTest::getFieldFinalMark with data set #2";d:0.039;s:72:"Tests\Unit\MarkCalculationTest::getTotalCalculatedMarks with data set #0";d:0.041;s:72:"Tests\Unit\MarkCalculationTest::getTotalCalculatedMarks with data set #1";d:0.053;s:69:"Tests\Feature\CertificateTest::admin_can_view_upload_certificate_page";d:0.164;s:60:"Tests\Feature\CertificateTest::student_can_view_certificates";d:0.153;}}}
\ No newline at end of file
diff --git a/.styleci.yml b/.styleci.yml
new file mode 100644
index 000000000..9231873a1
--- /dev/null
+++ b/.styleci.yml
@@ -0,0 +1,13 @@
+php:
+ preset: laravel
+ disabled:
+ - no_unused_imports
+ finder:
+ not-name:
+ - index.php
+ - server.php
+js:
+ finder:
+ not-name:
+ - webpack.mix.js
+css: true
diff --git a/.travis.yml b/.travis.yml
old mode 100755
new mode 100644
index d79a65b7d..88f4d3fe9
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,9 +1,8 @@
language: php
php:
- 7.4
-- 7.3
before_script:
- cp .env.example .env
- composer install
- php artisan key:generate
-script: vendor/bin/phpunit -c phpunit.xml
+script: php artisan test
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
deleted file mode 100755
index 612eaac46..000000000
--- a/.vscode/launch.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- // Use IntelliSense to learn about possible attributes.
- // Hover to view descriptions of existing attributes.
- // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Listen for XDebug",
- "type": "php",
- "request": "launch",
- "port": 9000
- },
- {
- "name": "Launch currently open script",
- "type": "php",
- "request": "launch",
- "program": "${file}",
- "cwd": "${fileDirname}",
- "port": 9000
- }
- ]
-}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100755
index 7a73a41bf..000000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,2 +0,0 @@
-{
-}
\ No newline at end of file
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
old mode 100755
new mode 100644
index 4833a3d25..38a103bda
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -55,7 +55,7 @@ further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported by contacting the project team at kishorpasha870@yahoo.com. All
+reported by contacting the project team at robinmilford870@gmail.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100755
index 239cfef71..000000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,10 +0,0 @@
-In order to contribute please maintain following rules:
-- For any new changes use `dev_for_new_features` this branch.
-- Make a Pull Request to `dev_for_new_features` this branch not to `master` so that master branch can only have stable changes.
-- Before making any pull request discuss about the change in a New Issue.
-- Describe the current behavior and explain which behavior you expected to see and why
-- Explain why this changes will be useful to most Unifiedtransform users
-- If you have changes on different features seperate them in different commits and pull requests
-- Make one feature change at a time
-- Share screenshots of your changes. It will make review process faster
-- Share the reason behind your changes
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000000000..efd9a3b40
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,60 @@
+FROM php:7.4-fpm
+
+# Copy composer.lock and composer.json
+COPY composer.lock composer.json /var/www/
+
+# Set working directory
+WORKDIR /var/www
+
+# Install dependencies
+# RUN apt-get update && apt-get install -y \
+# build-essential \
+# libpng-dev \
+# libjpeg62-turbo-dev \
+# libfreetype6-dev \
+# locales \
+# zip \
+# jpegoptim optipng pngquant gifsicle \
+# unzip \
+# git \
+# curl \
+# libzip-dev
+
+RUN apt-get update && apt-get install -y \
+ build-essential \
+ libzip-dev \
+ libpng-dev \
+ libjpeg62-turbo-dev \
+ libxml2 \
+ wget
+
+# RUN pecl install xdebug-2.9.2 \
+# && docker-php-ext-enable xdebug \
+# && echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
+
+# Clear cache
+RUN apt-get clean && rm -rf /var/lib/apt/lists/*
+
+# Install extensions
+RUN docker-php-ext-install pdo_mysql zip exif pcntl
+RUN docker-php-ext-install gd && docker-php-ext-enable gd
+
+# Install composer
+RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
+
+# Add user for laravel application
+RUN groupadd -g 1000 www
+RUN useradd -u 1000 -ms /bin/bash -g www www
+
+# Copy existing application directory contents
+COPY . /var/www
+
+# Copy existing application directory permissions
+COPY --chown=www:www . /var/www
+
+# Change current user to www
+USER www
+
+# Expose port 9000 and start php-fpm server
+EXPOSE 9000
+CMD ["php-fpm"]
\ No newline at end of file
diff --git a/FUNDING.yml b/FUNDING.yml
deleted file mode 100755
index 70aebf5da..000000000
--- a/FUNDING.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-# These are supported funding model platforms
-
-# github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
-patreon: hasib007
-# open_collective: # Replace with a single Open Collective username
-# ko_fi: # Replace with a single Ko-fi username
-# tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
-# community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
-# liberapay: # Replace with a single Liberapay username
-# issuehunt: # Replace with a single IssueHunt username
-# otechie: # Replace with a single Otechie username
-# custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/LICENSE b/LICENSE
old mode 100755
new mode 100644
index f288702d2..e72bfddab
--- a/LICENSE
+++ b/LICENSE
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
-
+School Management and Accounting Software +
+ +[![Build Status](https://travis-ci.org/changeweb/Unifiedtransform.svg?branch=master)](https://travis-ci.org/changeweb/Unifiedtransform) +[![Linux](https://img.shields.io/travis/changeweb/Unifiedtransform/master.svg?label=linux)](https://travis-ci.org/changeweb/Unifiedtransform) +[![Code Climate](https://codeclimate.com/github/changeweb/Unifiedtransform/badges/gpa.svg)](https://codeclimate.com/github/changeweb/Unifiedtransform) +[![Latest release](https://img.shields.io/github/release/changeweb/Unifiedtransform/all.svg)](https://github.com/changeweb/Unifiedtransform/releases) +[![MadeWithLaravel.com shield](https://madewithlaravel.com/storage/repo-shields/1362-shield.svg)](https://madewithlaravel.com/p/unifiedtransform/shield-link) +[![Join the chat at https://gitter.im/Unifiedtransform](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Unifiedtransform?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +We like to challenge the quality of what we build to make it better. To do so, we try to make the product intuitive, beautiful, and user friendly. Innovation and hard work help to fulfill these requirements. I believe in order to innovate we need to think differently. A few months ago I discovered there was no open source free school management software that met my quality standards. I happen to know a bit of programming so I decided to make one. I also believe that working with more people can push the standard higher than working alone. So I decided to make it open source and free. + +## Featured on Laravel News !! +![Screenshot_2019-04-07 Laravel News](https://user-images.githubusercontent.com/9896315/55683832-1b3c8c80-5966-11e9-8dfb-ab30a79a98ed.png) +See the news [here](https://laravel-news.com/unified-transform-open-source-school-management-platform) + +## Framework used + +- Laravel 8.X +- Bootstrap 5.X + + + +## Server Requirements + +- PHP >= 7.4 +- OpenSSL PHP Extension +- PDO PHP Extension +- Mbstring PHP Extension +- Tokenizer PHP Extension +- XML PHP Extension + +## Testing + +- We want testable softwares. Most parts of the software in the previous version 1.x were covered by tests. Lets cover version 2.x as well. You also can contribute by writing test case! +- To run Feature and Unit Tests run following commands: + + ```sh + $ docker exec -it app sh + // Inside container shell + :/# php artisan test + ``` + +## License + +GNU General Public License v3.0 + +## Contribute + +Unifiedtransform is 100% open source and free forever!! + +Community contribution can make this product better!! + +When you contribute to a Github project you agree with this terms of [Github Terms of Service(Contributions Under Repository License)](https://help.github.com/en/articles/github-terms-of-service#6-contributions-under-repository-license). + +Since this project is under **GNU General Public License v3.0**, according to Github's Terms of Service all your contributions are also under the same license terms. +Thus you permit the user of this software to use your contribution under the terms of **GNU General Public License v3.0**. + +## Whats New +v2.X is built from scratch. Both UI and internal workflow of the application are changed to a better design. + +## Features yet to be migrated from v1.X to v2.X +Following features that exist in v1.X will be added in v2.X as well in future. + +- Stripe payment +- Messaging +- Managing library +- Managing Income and Expenses +- Mass student and teachers export and import. +- Printing reports +- Managing certificates. +- Supported other languages (Spanish, ...). + +## How to Start +### Using Docker Container: + +**[Docker](https://www.docker.com/)** is now supported and improved. + +[How To Set Up Laravel, Nginx, and MySQL With Docker Compose on Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-set-up-laravel-nginx-and-mysql-with-docker-compose-on-ubuntu-20-04) + +With the improved Docker setup, you will get: +- Nginx +- PHP 7.4 +- MySQL 5.7 + +### Steps to install: +1. Clone or donwload the repository. +2. Create **purify** folder in `storage/app/` directory. +3. Run `cp .env.example .env`. +4. Run `composer up -d`. +5. Run `docker exec -it db sh`. Inside the shell, run: + + ```sh + :/# mysql -u root -p + ``` + + Mysql **Root password**: `your_mysql_root_password` in the `docker-compose.yml` file. Then run following commands: + + ```sql + mysql> SHOW DATABASES; + mysql> GRANT ALL ON unifiedtransform.* TO 'unifiedtransform'@'%' IDENTIFIED BY 'secret'; + mysql> FLUSH PRIVILEGES; + mysql> EXIT; + ``` +6. Finally, exit the container by running `exit` in the container shell. +7. Run `docker exec -it app sh`. Inside the shell, run following commands: + + ```sh + :/# composer install + :/# php artisan key:generate + :/# php artisan config:cache + :/# php artisan migrate:fresh --seed + ``` + + Then exit from the container. +8. Visit **http://localhost:8080**. Admin login credentials: + + - Email: admin@ut.com + - Password: password + +## Steps to follow: +Please carefully follow the steps to setup the school. + +**Role: Admin** + +**School Dashboard** + + +### 1. Create a School Session: +After logging in for the first time, you will see following message at the top nav bar. + + + +To create a new session, go to **Academic Settings** page. + +#### Academic Settings page: + + +Successful creation of session using following form will display success message: + + + +### 2. Create a Semester +Now create a semester. A semester duration usually is 3 - 6 months. + + + + + +### 3. Create classes +Now create classes. Give common names such as: **Class 1** or **Class 11 (Science)**. + + + + + +### 4. Create sections +Now create sections for each classes. Give section's name (e.g.: Section A, Section B), room number and assign them to respective class. + + + +### 5. Create Courses +Now create courses and assign them to respective semester and class. + + + +### 6. Set attendance type +Attendance can be maintained in two ways: 1. By section, 2. By course. Stick to one type for a semester. Default: **By section**. + + + +### 7. Add teachers +Now add teachers. + + + +### 8. Assign teacher +Now assign teachers to semester, class, section, and course. + + + +### 9. Add students +Now add students and assign them to class, and section. + + + +### 10. View added teachers and students +Now browse to **View Teachers** and **View Students** pages. + + + +### 11. View student and teacher profile +Now browse to **Profile** from student and teacher list. + + + +### 12. View and Edit Classes and Sections +Now go to **Classes**. Here you can view all classes and their respective sections, syllabi, and courses. Classes, sections, and courses can be edited from here. + + + + + + + +### 13. Create Grading Systems +Now create grading system for each class and a semester. + + + +### 14. View Grading Systems +Now browse to created Grading Systems. + + + +### 15. Add and view Grading System Rules +Now add rules to the grading system and browse them. + + + + + +### 16. Add Notices +Admin can add notice. Right now, notices can be written using a rich text editor. + + + +### 17. Create Events +Events can be created inside a calendar. Click and drag on a date or time period to prompt the input box. An already created event can be **deleted** by clicking on the event. + + + + + +### 18. Create and view Routines +Routines can be created for each class and section. + + + + + +### 19. Add Syllabi +Syllabus for each class and course can be added. Admin can view them from **Classes** page. Syllabus can be downloaded. + + + + + +### 20. Browse by Sessions +You can browse previous sessions like a snapshot. This mode is **Read only**. Nobody should be able to change the previous sessions' data. + + + + + +### 21. Allow Teachers to submit Final Marks +Submitting final marks of a semester should be controlled. By enabling this feature, it is possible to open a Mark Submission Window for a short time period. **Default: Disallowed**. + + + +### 22. Promote students +Students can only be promoted to a new class and section when a new Session along with its classes and sections are created. + + + + +**Role: Teacher** + +**Teacher's dashboard** + + + +### 1. View assigned courses +Teachers can manage their assigned courses from this page. From this page, teacher can do following: + +- Take and view attendance +- View Syllabus +- Create and view Assignment +- Give Marks +- Message Students (Available in v1.X. Will be added in v2.X as well). + + + +### 2. Take attendance +Teacher can take attendance for a section or a course (attendance type set by Admin). + + + +### 3. View attendance +Teacher can view attendance. + + + +### 4. View syllabus +Teacher can view and download syllabus. + + + +### 5. Create assignment +Teacher can create assignment for an assigned course by uploading files. + + + +### 6. View assignments +Teacher can view and download created assignments. + + + +### 7. Create Exams +Before giving marks, teacher needs to create exams and set their rules. Don't have to create all the exams at a time. (Admin can also create exams on behalf of teachers). + + + +### 8. View created exams +Teacher can view their created exams. + + + +### 9. Add, edit and view exam rules +Teacher can add, edit, and view exam rules. + + + + + +### 10. Give marks +Teacher can give marks after creating exams. Clicking on the exam names will lead to associated exam rules. + + + +### 11. Submit Final Marks +When the Grade submission window is open, teacher can submit final marks. Calculated marks will be generated based on all exams' marks. Final marks should be in **between** the marks set in the grade rules. + + + +If final marks is submitted, a message will be shown in place of submit button in **Give Marks** page. + + + +### 12. View Final Results +Teachers can view final results and calculated grades for a semester, class, section, and course based on their created grade rules. + + + +**Role: Student** + +**Student dashboard** + + + +### 1. View attendance +A student can view his/her attendance. + + + +### 2. View courses +A student can view his/her courses that are assigned in his/her class. From here, a student can do following: + +- View Marks +- View Syllabus +- View Assignments + + + +### 3. View Marks +A student can view marks, final results and grade for a course. + + + +### 4. View and download Syllabus +Students can view and download syllabi of their courses just like their teachers. + +### 5. View and download assignments +Students can view and download assignments of their courses just like their teachers. + +### 6. View routine +Students can view their class and section routine just like their admin/teachers. + + diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 37fc0e996..000000000 --- a/SECURITY.md +++ /dev/null @@ -1,14 +0,0 @@ -# Security Policy - -## Supported Versions - -It is recommended to create issue for any support needed. It is also recommended to keep up to date with the latest version. - -## Reporting a Vulnerability - -You can report any vulnerability to following email address: `robinmilford870@gmail.com`. I will try to notify or fix the vulnerabilty but immediate support is not guaranteed. - - - If it is critical and break any functionality of the application, I will create an issue. - You are welcome to provide any fix for the issue through Pull Request. - - If vulnerability is low and updating the package will fix it but break any functionality of the application, - the report may be declined to maintain stability. diff --git a/_config.yml b/_config.yml old mode 100755 new mode 100644 diff --git a/app/Account.php b/app/Account.php deleted file mode 100755 index f4bb9d7f9..000000000 --- a/app/Account.php +++ /dev/null @@ -1,18 +0,0 @@ -belongsTo('App\School', 'school_id'); - } - - public function user() - { - return $this->belongsTo('App\User', 'user_id'); - } -} diff --git a/app/AccountSector.php b/app/AccountSector.php deleted file mode 100755 index ba7697a25..000000000 --- a/app/AccountSector.php +++ /dev/null @@ -1,19 +0,0 @@ - belongsTo( 'App\School', 'school_id' ); - } - - public function user() - { - return $this -> belongsTo( 'App\User', 'user_id' ); - } -} diff --git a/app/Attendance.php b/app/Attendance.php deleted file mode 100755 index ebace2a3d..000000000 --- a/app/Attendance.php +++ /dev/null @@ -1,32 +0,0 @@ -belongsTo('App\User'); - } - - /** - * Get the section record associated with the attendance. - */ - public function section() - { - return $this->belongsTo('App\Section'); - } - - /** - * Get the exam record associated with the attendance. - */ - public function exam() - { - return $this->belongsTo('App\Exam'); - } -} diff --git a/app/Book.php b/app/Book.php deleted file mode 100755 index f5ca2fb58..000000000 --- a/app/Book.php +++ /dev/null @@ -1,29 +0,0 @@ -belongsTo('App\School'); - } - - public function class() { - return $this->belongsTo('App\Myclass'); - } - - public function user() { - return $this->belongsTo('App\User'); - } - - public function issuedbook() { - return $this->hasMany('App\Issuedbook', 'book_id'); - } -} diff --git a/app/Certificate.php b/app/Certificate.php deleted file mode 100755 index 744905bd5..000000000 --- a/app/Certificate.php +++ /dev/null @@ -1,23 +0,0 @@ -belongsTo('App\School'); - } - /** - * Get the student record associated with the user. - */ - public function student() - { - return $this->belongsTo('App\User','given_to', 'student_code'); - } -} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php old mode 100755 new mode 100644 index e82a1b389..69914e993 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -13,7 +13,7 @@ class Kernel extends ConsoleKernel * @var array */ protected $commands = [ - // \jdavidbakr\LaravelCacheGarbageCollector\LaravelCacheGarbageCollector::class, + // ]; /** @@ -24,8 +24,7 @@ class Kernel extends ConsoleKernel */ protected function schedule(Schedule $schedule) { - //$schedule->command('cache:gc') - // ->everyMinute(); + // $schedule->command('inspire')->hourly(); } /** diff --git a/app/Course.php b/app/Course.php deleted file mode 100755 index ae7654377..000000000 --- a/app/Course.php +++ /dev/null @@ -1,37 +0,0 @@ -belongsTo('App\Myclass'); - } - /** - * Get the section record associated with the user. - */ - public function section() - { - return $this->belongsTo('App\Section'); - } - /** - * Get the teacher record associated with the user. - */ - public function teacher() - { - return $this->belongsTo('App\User'); - } - /** - * Get the exam record associated with the course. - */ - public function exam() - { - return $this->belongsTo('App\Exam'); - } -} diff --git a/app/Department.php b/app/Department.php deleted file mode 100755 index c43f7c1a6..000000000 --- a/app/Department.php +++ /dev/null @@ -1,12 +0,0 @@ -hasMany('App\User','department_id'); - } -} diff --git a/app/Event.php b/app/Event.php deleted file mode 100755 index bc6babfd8..000000000 --- a/app/Event.php +++ /dev/null @@ -1,16 +0,0 @@ -belongsTo('App\School'); - } -} diff --git a/app/Events/StudentInfoUpdateRequested.php b/app/Events/StudentInfoUpdateRequested.php deleted file mode 100755 index c5e436bcb..000000000 --- a/app/Events/StudentInfoUpdateRequested.php +++ /dev/null @@ -1,30 +0,0 @@ -request = $request; - $this->student_id = $student_id; - } -} diff --git a/app/Events/UserRegistered.php b/app/Events/UserRegistered.php deleted file mode 100755 index 224ef0991..000000000 --- a/app/Events/UserRegistered.php +++ /dev/null @@ -1,31 +0,0 @@ -user = $user; - $this->password = $password; - } -} diff --git a/app/Exam.php b/app/Exam.php deleted file mode 100755 index b69d819d9..000000000 --- a/app/Exam.php +++ /dev/null @@ -1,10 +0,0 @@ -hasMany('App\Myclass'); - } - - public function exam(){ - return $this->belongsTo('App\Exam'); - } -} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php old mode 100755 new mode 100644 index 93e41737e..c18c43cc1 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -2,8 +2,8 @@ namespace App\Exceptions; -use Throwable; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; +use Throwable; class Handler extends ExceptionHandler { @@ -22,32 +22,20 @@ class Handler extends ExceptionHandler * @var array */ protected $dontFlash = [ + 'current_password', 'password', 'password_confirmation', ]; /** - * Report or log an exception. - * - * This is a great spot to send exceptions to Sentry, Bugsnag, etc. + * Register the exception handling callbacks for the application. * - * @param \Throwable $exception * @return void */ - public function report(Throwable $exception) - { - parent::report($exception); - } - - /** - * Render an exception into an HTTP response. - * - * @param \Illuminate\Http\Request $request - * @param \Throwable $exception - * @return \Illuminate\Http\Response - */ - public function render($request, Throwable $exception) + public function register() { - return parent::render($request, $exception); + $this->reportable(function (Throwable $e) { + // + }); } } diff --git a/app/Exports/StudentsExport.php b/app/Exports/StudentsExport.php deleted file mode 100755 index a945bace6..000000000 --- a/app/Exports/StudentsExport.php +++ /dev/null @@ -1,61 +0,0 @@ -year = $year; - } - - public function query() - { - return User::query()->select('users.name','users.email','users.phone_number','users.gender','users.student_code','users.blood_group','sections.section_number','classes.class_number','users.address') - ->where('users.school_id', auth()->user()->school_id) - ->where('users.role','student') - ->whereYear('users.created_at', $this->year) - ->join('sections','sections.id', '=', 'users.section_id') - ->join('classes','sections.class_id', '=', 'classes.id') - ->orderBy('users.name'); - } - - public function headings() : array - { - $myLocale = App::getLocale(); - if ($myLocale == "es-MX") { - return $this->headingsES; //spanish - } else { - return $this->headings; //english - } - } -} diff --git a/app/Exports/TeachersExport.php b/app/Exports/TeachersExport.php deleted file mode 100755 index 91b1072c8..000000000 --- a/app/Exports/TeachersExport.php +++ /dev/null @@ -1,54 +0,0 @@ -year = $year; - } - - public function headings() : array - { - $myLocale = App::getLocale(); - if ($myLocale == "es-MX") { - return $this->headingsES; //spanish - } else { - return $this->headings; //english - } - } - - public function query(){ - return User::query() - ->select('name','email','gender','student_code','blood_group','phone_number','address') - ->bySchool(auth()->user()->school_id) - ->where('role','teacher') - ->orderBy('name'); - } -} diff --git a/app/Faq.php b/app/Faq.php deleted file mode 100755 index 230af2545..000000000 --- a/app/Faq.php +++ /dev/null @@ -1,10 +0,0 @@ -belongsTo('App\User'); - } - - /** - * Get the teacher record associated with the user. - */ - public function teacher() - { - return $this->belongsTo('App\User'); - } -} diff --git a/app/Form.php b/app/Form.php deleted file mode 100755 index 634688f05..000000000 --- a/app/Form.php +++ /dev/null @@ -1,16 +0,0 @@ -belongsTo('App\School'); - } -} diff --git a/app/Grade.php b/app/Grade.php deleted file mode 100755 index 0dd9c9d06..000000000 --- a/app/Grade.php +++ /dev/null @@ -1,38 +0,0 @@ -belongsTo('App\Course'); - } - /** - * Get the student record associated with the user. - */ - public function student() - { - return $this->belongsTo('App\User'); - } - /** - * Get the teacher record associated with the user. - */ - public function teacher() - { - return $this->belongsTo('App\User'); - } - - /** - * Get the exam name record associated with the exam. - */ - public function exam() - { - return $this->belongsTo('App\Exam'); - } -} diff --git a/app/Gradesystem.php b/app/Gradesystem.php deleted file mode 100755 index 1da62187c..000000000 --- a/app/Gradesystem.php +++ /dev/null @@ -1,15 +0,0 @@ -belongsTo('App\School'); - } -} diff --git a/app/Homework.php b/app/Homework.php deleted file mode 100755 index a0202d033..000000000 --- a/app/Homework.php +++ /dev/null @@ -1,17 +0,0 @@ -belongsTo('App\User'); - } -} diff --git a/app/Http/Controllers/AcademicSettingController.php b/app/Http/Controllers/AcademicSettingController.php new file mode 100644 index 000000000..f4ad88dfc --- /dev/null +++ b/app/Http/Controllers/AcademicSettingController.php @@ -0,0 +1,114 @@ +middleware(['can:view academic settings']); + + $this->academicSettingRepository = $academicSettingRepository; + $this->schoolSessionRepository = $schoolSessionRepository; + $this->schoolClassRepository = $schoolClassRepository; + $this->schoolSectionRepository = $schoolSectionRepository; + $this->userRepository = $userRepository; + $this->courseRepository = $courseRepository; + $this->semesterRepository = $semesterRepository; + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + $current_school_session_id = $this->getSchoolCurrentSession(); + + $latest_school_session = $this->schoolSessionRepository->getLatestSession(); + + $academic_setting = $this->academicSettingRepository->getAcademicSetting(); + + $school_sessions = $this->schoolSessionRepository->getAll(); + + $school_classes = $this->schoolClassRepository->getAllBySession($current_school_session_id); + + $school_sections = $this->schoolSectionRepository->getAllBySession($current_school_session_id); + + $teachers = $this->userRepository->getAllTeachers(); + + $courses = $this->courseRepository->getAll($current_school_session_id); + + $semesters = $this->semesterRepository->getAll($current_school_session_id); + + $data = [ + 'current_school_session_id' => $current_school_session_id, + 'latest_school_session_id' => $latest_school_session->id, + 'academic_setting' => $academic_setting, + 'school_sessions' => $school_sessions, + 'school_classes' => $school_classes, + 'school_sections' => $school_sections, + 'teachers' => $teachers, + 'courses' => $courses, + 'semesters' => $semesters, + ]; + + return view('academics.settings', $data); + } + + /** + * Update the specified resource in storage. + * + * @param AttendanceTypeUpdateRequest $request + * @return \Illuminate\Http\Response + */ + public function updateAttendanceType(AttendanceTypeUpdateRequest $request) + { + try { + $this->academicSettingRepository->updateAttendanceType($request->validated()); + + return back()->with('status', 'Attendance type update was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } + + public function updateFinalMarksSubmissionStatus(Request $request) { + try { + $this->academicSettingRepository->updateFinalMarksSubmissionStatus($request); + + return back()->with('status', 'Final marks submission status update was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } +} diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php deleted file mode 100755 index 342604ee8..000000000 --- a/app/Http/Controllers/AccountController.php +++ /dev/null @@ -1,200 +0,0 @@ -accountService = $accountService; - } - - public function sectors() - { - $sectors = $this->accountService->getSectorsBySchoolId(); - $this->accountService->account_type = 'income'; - $incomes = $this->accountService->getAccountsBySchoolId(); - $this->accountService->account_type = 'expense'; - $expenses = $this->accountService->getAccountsBySchoolId(); - $sector = []; - - return view('accounts.sector', compact('sectors', 'sector', 'incomes', 'expenses')); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function storeSector(StoreSectorRequest $request) - { - $this->accountService->storeSector($request->validated()); - - return back()->with('status', 'Account Sector Created Successfully.'); - } - - /** - * Store a newly created resource in storage. - * - * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View - */ - public function editSector(AccountSector $sector) - { - return view('accounts.edit_sector', compact('sector')); - } - - /** - * Display the specified resource. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function updateSector(AccountSector $sector, StoreSectorRequest $request) - { - $this->accountService->updateSector($sector, $request->validated()); - - return back()->with('status', 'Account Sector Updated Successfully.'); - } - - /** - * Delete the specified resource. - * - * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector - * - * @throws \Exception - */ - public function deleteSector(AccountSector $sector) - { - $sector->delete(); - - return redirect('/accounts/sectors')->with('status', 'Account Sector Deleted Successfully.'); - } - - public function income() - { - $sectors = AccountSector ::bySchool(\Auth ::user()->school_id) - ->where('type', 'income') - ->get(); - //$sections = $this->$accountService->getSectionsIds(); - //$students = $this->$accountService->getStudentsBySectionIds(); - return view('accounts.income', [ - 'sectors' => $sectors, - //'sections'=>$sections, - //'students'=>$students, - ]); - } - - public function storeIncome(StoreAccountRequest $request) - { - $this->accountService->request = $request; - $this->accountService->account_type = 'income'; - $this->accountService->storeAccount(); - - return back()->with('status', 'Income saved Successfully.'); - } - - public function listIncome() - { - $incomes = []; - - return view('accounts.income-list', ['incomes' => $incomes]); - } - - public function postIncome(Request $request) - { - $this->accountService->request = $request; - $this->accountService->account_type = 'income'; - $incomes = $this->accountService->getAccountsByYear(); - - return view('accounts.income-list', compact('incomes')); - } - - public function editIncome($id) - { - $income = Account ::find($id); - - return view('accounts.income-edit', compact('income')); - } - - public function updateIncome(UpdateAccountRequest $request) - { - $this->accountService->request = $request; - $this->accountService->updateAccount(); - - return back()->with('status', 'Income Updated Successfully.'); - } - - public function deleteIncome($id) - { - $income = Account ::find($id); - $income->delete(); - - return back()->with('status', 'Income Deleted Successfully.'); - } - - public function expense() - { - $sectors = AccountSector ::bySchool(\Auth ::user()->school_id) - ->where('type', 'expense') - ->get(); - - return view('accounts.expense', ['sectors' => $sectors]); - } - - public function storeExpense(StoreAccountRequest $request) - { - $this->accountService->request = $request; - $this->accountService->account_type = 'expense'; - $this->accountService->storeAccount(); - - return back()->with('status', 'expense saved Successfully.'); - } - - public function listExpense() - { - $expenses = []; - - return view('accounts.expense-list', ['expenses' => $expenses]); - } - - public function postExpense(Request $request) - { - $this->accountService->request = $request; - $this->accountService->account_type = 'expense'; - $expenses = $this->accountService->getAccountsByYear(); - - return view('accounts.expense-list', compact('expenses')); - } - - public function editExpense($id) - { - $expense = Account ::find($id); - - return view('accounts.expense-edit', ['expense' => $expense]); - } - - public function updateExpense(UpdateAccountRequest $request) - { - $this->accountService->request = $request; - $this->accountService->updateAccount(); - - return back()->with('status', 'expense Updated Successfully.'); - } - - public function deleteExpense($id) - { - $expense = Account ::find($id); - $expense->delete(); - - return back()->with('status', 'expense Deleted Successfully.'); - } -} diff --git a/app/Http/Controllers/AssignedTeacherController.php b/app/Http/Controllers/AssignedTeacherController.php new file mode 100644 index 000000000..5faf8289c --- /dev/null +++ b/app/Http/Controllers/AssignedTeacherController.php @@ -0,0 +1,103 @@ +schoolSessionRepository = $schoolSessionRepository; + $this->semesterRepository = $semesterRepository; + } + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + // + } + + /** + * Display a listing of the resource. + * + * @param CourseStoreRequest $request + * @return \Illuminate\Http\Response + */ + public function getTeacherCourses(Request $request) + { + $teacher_id = $request->query('teacher_id'); + $semester_id = $request->query('semester_id'); + + if($teacher_id == null) { + abort(404); + } + + $current_school_session_id = $this->getSchoolCurrentSession(); + + $semesters = $this->semesterRepository->getAll($current_school_session_id); + + $assignedTeacherRepository = new AssignedTeacherRepository(); + + if($semester_id == null) { + $courses = []; + } else { + $courses = $assignedTeacherRepository->getTeacherCourses($current_school_session_id, $teacher_id, $semester_id); + } + + $data = [ + 'courses' => $courses, + 'semesters' => $semesters, + 'selected_semester_id' => $semester_id, + ]; + + return view('courses.teacher', $data); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + // + } + + /** + * Store a newly created resource in storage. + * + * @param TeacherAssignRequest $request + * @return \Illuminate\Http\Response + */ + public function store(TeacherAssignRequest $request) + { + try { + $assignedTeacherRepository = new AssignedTeacherRepository(); + $assignedTeacherRepository->assign($request->validated()); + + return back()->with('status', 'Assigning teacher was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } +} diff --git a/app/Http/Controllers/AssignmentController.php b/app/Http/Controllers/AssignmentController.php new file mode 100644 index 000000000..22121658e --- /dev/null +++ b/app/Http/Controllers/AssignmentController.php @@ -0,0 +1,131 @@ +schoolSessionRepository = $schoolSessionRepository; + } + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function getCourseAssignments(Request $request) + { + $course_id = $request->query('course_id', 0); + $current_school_session_id = $this->getSchoolCurrentSession(); + $assignmentRepository = new AssignmentRepository(); + $assignments = $assignmentRepository->getAssignments($current_school_session_id, $course_id); + $data = [ + 'assignments' => $assignments, + ]; + return view('assignments.index', $data); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create(Request $request) + { + $current_school_session_id = $this->getSchoolCurrentSession(); + $data = [ + 'current_school_session_id' => $current_school_session_id, + 'class_id' => $request->query('class_id', 0), + 'section_id' => $request->query('section_id', 0), + 'course_id' => $request->query('course_id', 0), + ]; + return view('assignments.create', $data); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(StoreFileRequest $request) + { + $validatedRequest = $request->validated(); + $validatedRequest['class_id'] = $request->class_id; + $validatedRequest['section_id'] = $request->section_id; + $validatedRequest['course_id'] = $request->course_id; + $validatedRequest['semester_id'] = $request->semester_id; + $validatedRequest['assignment_name'] = $request->assignment_name; + $validatedRequest['session_id'] = $this->getSchoolCurrentSession(); + + try { + $assignmentRepository = new AssignmentRepository(); + $assignmentRepository->store($validatedRequest); + + return back()->with('status', 'Creating assignment was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } + + /** + * Display the specified resource. + * + * @param \App\Models\Assignment $assignment + * @return \Illuminate\Http\Response + */ + public function show(Assignment $assignment) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\Assignment $assignment + * @return \Illuminate\Http\Response + */ + public function edit(Assignment $assignment) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\Assignment $assignment + * @return \Illuminate\Http\Response + */ + public function update(Request $request, Assignment $assignment) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\Assignment $assignment + * @return \Illuminate\Http\Response + */ + public function destroy(Assignment $assignment) + { + // + } +} diff --git a/app/Http/Controllers/AttendanceController.php b/app/Http/Controllers/AttendanceController.php old mode 100755 new mode 100644 index 78a7af28c..4d48dc369 --- a/app/Http/Controllers/AttendanceController.php +++ b/app/Http/Controllers/AttendanceController.php @@ -2,146 +2,183 @@ namespace App\Http\Controllers; -use App\Attendance; -use App\User; -use App\Http\Resources\AttendanceResource; +use App\Http\Controllers\Controller; +use App\Models\Attendance; use Illuminate\Http\Request; -use App\Http\Requests\Attendance\StoreAttendanceRequest; -use App\Http\Traits\GradeTrait; -use App\Services\Attendance\AttendanceService; +use App\Interfaces\UserInterface; +use App\Interfaces\SchoolClassInterface; +use App\Interfaces\SchoolSessionInterface; +use App\Interfaces\AcademicSettingInterface; +use App\Http\Requests\AttendanceStoreRequest; +use App\Interfaces\SectionInterface; +use App\Repositories\AttendanceRepository; +use App\Repositories\CourseRepository; +use App\Traits\SchoolSession; class AttendanceController extends Controller { - use GradeTrait; - - protected $attendanceService; + use SchoolSession; + protected $academicSettingRepository; + protected $schoolSessionRepository; + protected $schoolClassRepository; + protected $sectionRepository; + protected $userRepository; - public function __construct(AttendanceService $attendanceService){ - $this->attendanceService = $attendanceService; + public function __construct( + UserInterface $userRepository, + AcademicSettingInterface $academicSettingRepository, + SchoolSessionInterface $schoolSessionRepository, + SchoolClassInterface $schoolClassRepository, + SectionInterface $sectionRepository + ) { + $this->middleware(['can:view attendances']); + + $this->userRepository = $userRepository; + $this->academicSettingRepository = $academicSettingRepository; + $this->schoolSessionRepository = $schoolSessionRepository; + $this->schoolClassRepository = $schoolClassRepository; + $this->sectionRepository = $sectionRepository; } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ - public function index($section_id, $student_id, $exam_id) + public function index() { - if($section_id > 0 && \Auth::user()->role != 'student'){ - // View attendances of students of a section - $students = $this->attendanceService->getStudentsBySection($section_id); - $attendances = $this->attendanceService->getTodaysAttendanceBySectionId($section_id); - $attCount = $this->attendanceService->getAllAttendanceBySecAndExam($section_id,$exam_id); - - return view('attendance.attendance', [ - 'students' => $students, - 'attendances' => $attendances, - 'attCount' => $attCount, - 'section_id'=>$section_id, - 'exam_id'=>$exam_id - ]); - } else { - // View attendance of a single student by student id - if(\Auth::user()->role == 'student'){ - // From student view - $exam = \App\ExamForClass::where('class_id',\Auth::user()->section->class->id) - ->where('active', 1) - ->first(); - } else { - // From other users view - $student = $this->attendanceService->getStudent($student_id); - $exam = \App\ExamForClass::where('class_id',$student->section->class->id) - ->where('active', 1) - ->first(); - } - if($exam) - $exId = $exam->exam_id; - else - $exId = 0; - $attendances = $this->attendanceService->getAttendanceByStudentAndExam($student_id, $exId); - return view('attendance.student-attendances',['attendances' => $attendances]); - } - } - /** - * View for Adjust missing Attendances - * - * @return \Illuminate\Http\Response - */ - public function adjust($student_id){ - $student = $this->attendanceService->getStudent($student_id); - $exam = \App\ExamForClass::where('class_id',$student->section->class->id) - ->where('active', 1) - ->first(); - if(count((array) $exam) == 1) - $exId = $exam->exam_id; - else - $exId = 0; - $attendances = $this->attendanceService->getAbsentAttendanceByStudentAndExam($student_id, $exId); - return view('attendance.adjust',['attendances'=>$attendances,'student_id'=>$student_id]); + return back(); + // $academic_setting = $this->academicSettingRepository->getAcademicSetting(); + + // $current_school_session_id = $this->getSchoolCurrentSession(); + + // $classes_and_sections = $this->schoolClassRepository->getClassesAndSections($current_school_session_id); + // $courseRepository = new CourseRepository(); + // $courses = $courseRepository->getAll($current_school_session_id); + + // $data = [ + // 'academic_setting' => $academic_setting, + // 'classes_and_sections' => $classes_and_sections, + // 'courses' => $courses, + // ]; + + // return view('attendances.index', $data); } + /** + * Show the form for creating a new resource. + * * @param \Illuminate\Http\Request $request - * Adjust missing Attendances POST request - * @return \Illuminate\Http\RedirectResponse + * @return \Illuminate\Http\Response */ - public function adjustPost(Request $request){ - $request->validate([ - 'att_id' => 'required|array', - ]); - return $this->attendanceService->adjustPost($request); - } - /** - * Add students to a Course before taking attendances - * @return \Illuminate\Http\Response - */ - public function addStudentsToCourseBeforeAtt($teacher_id,$course_id,$exam_id,$section_id){ - $this->addStudentsToCourse($teacher_id,$course_id,$exam_id,$section_id); - - $students = $this->attendanceService->getStudentsBySection($section_id); - $attendances = $this->attendanceService->getTodaysAttendanceBySectionId($section_id); - $attCount = $this->attendanceService->getAllAttendanceBySecAndExam($section_id,$exam_id); - - return view('attendance.attendance', [ - 'students' => $students, - 'attendances' => $attendances, - 'attCount' => $attCount, - 'section_id'=>$section_id, - 'exam_id'=>$exam_id - ]); + public function create(Request $request) + { + if($request->query('class_id') == null){ + return abort(404); + } + try{ + $academic_setting = $this->academicSettingRepository->getAcademicSetting(); + $current_school_session_id = $this->getSchoolCurrentSession(); + + $class_id = $request->query('class_id'); + $section_id = $request->query('section_id', 0); + $course_id = $request->query('course_id'); + + $student_list = $this->userRepository->getAllStudents($current_school_session_id, $class_id, $section_id); + + $school_class = $this->schoolClassRepository->findById($class_id); + $school_section = $this->sectionRepository->findById($section_id); + + $attendanceRepository = new AttendanceRepository(); + + if($academic_setting->attendance_type == 'section') { + $attendance_count = $attendanceRepository->getSectionAttendance($class_id, $section_id, $current_school_session_id)->count(); + } else { + $attendance_count = $attendanceRepository->getCourseAttendance($class_id, $course_id, $current_school_session_id)->count(); + } + + $data = [ + 'current_school_session_id' => $current_school_session_id, + 'academic_setting' => $academic_setting, + 'student_list' => $student_list, + 'school_class' => $school_class, + 'school_section' => $school_section, + 'attendance_count' => $attendance_count, + ]; + + return view('attendances.take', $data); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } } + /** - * @param \Illuminate\Http\Request $request - * View students of a section to view attendances + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\AttendanceStoreRequest $request * @return \Illuminate\Http\Response - */ - public function sectionIndex(Request $request, $section_id){ - $users = $this->attendanceService->getStudentsWithInfoBySection($section_id); - - $request->session()->put('section-attendance', true); + */ + public function store(AttendanceStoreRequest $request) + { + try { + $attendanceRepository = new AttendanceRepository(); + $attendanceRepository->saveAttendance($request->validated()); - return view('list.student-list',[ - 'users' =>$users, - 'current_page'=>$users->currentPage(), - 'per_page'=>$users->perPage() - ]); + return back()->with('status', 'Attendance save was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } } - + /** - * Store a newly created resource in storage. + * Display the specified resource. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ - public function store(StoreAttendanceRequest $request) + public function show(Request $request) { - $this->attendanceService->request = $request; - if($request->update == 1){ - $at = $this->attendanceService->updateAttendance(); - if(isset($at)) - if(count($at) > 0) - Attendance::insert($at); - } else { - $this->attendanceService->storeAttendance(); - } - return back()->with('status',__('Saved')); + if($request->query('class_id') == null){ + return abort(404); + } + + $current_school_session_id = $this->getSchoolCurrentSession(); + + $class_id = $request->query('class_id'); + $section_id = $request->query('section_id'); + $course_id = $request->query('course_id'); + + $attendanceRepository = new AttendanceRepository(); + + try { + $academic_setting = $this->academicSettingRepository->getAcademicSetting(); + if($academic_setting->attendance_type == 'section') { + $attendances = $attendanceRepository->getSectionAttendance($class_id, $section_id, $current_school_session_id); + } else { + $attendances = $attendanceRepository->getCourseAttendance($class_id, $course_id, $current_school_session_id); + } + $data = ['attendances' => $attendances]; + + return view('attendances.view', $data); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } + + public function showStudentAttendance($id) { + if(auth()->user()->role == "student" && auth()->user()->id != $id) { + return abort(404); + } + $current_school_session_id = $this->getSchoolCurrentSession(); + + $attendanceRepository = new AttendanceRepository(); + $attendances = $attendanceRepository->getStudentAttendance($current_school_session_id, $id); + $student = $this->userRepository->findStudent($id); + + $data = [ + 'attendances' => $attendances, + 'student' => $student, + ]; + + return view('attendances.attendance', $data); } } diff --git a/app/Http/Controllers/Auth/ConfirmPasswordController.php b/app/Http/Controllers/Auth/ConfirmPasswordController.php new file mode 100644 index 000000000..138c1f08a --- /dev/null +++ b/app/Http/Controllers/Auth/ConfirmPasswordController.php @@ -0,0 +1,40 @@ +middleware('auth'); + } +} diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php old mode 100755 new mode 100644 index 6a247fefd..465c39ccf --- a/app/Http/Controllers/Auth/ForgotPasswordController.php +++ b/app/Http/Controllers/Auth/ForgotPasswordController.php @@ -19,14 +19,4 @@ class ForgotPasswordController extends Controller */ use SendsPasswordResetEmails; - - /** - * Create a new controller instance. - * - * @return void - */ - public function __construct() - { - $this->middleware('guest'); - } } diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php old mode 100755 new mode 100644 index 557770c25..18a0d088a --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -2,11 +2,9 @@ namespace App\Http\Controllers\Auth; -use Illuminate\Support\Arr; -use Illuminate\Support\Facades\Auth; use App\Http\Controllers\Controller; +use App\Providers\RouteServiceProvider; use Illuminate\Foundation\Auth\AuthenticatesUsers; -use Illuminate\Http\Request; class LoginController extends Controller { @@ -23,6 +21,13 @@ class LoginController extends Controller use AuthenticatesUsers; + /** + * Where to redirect users after login. + * + * @var string + */ + protected $redirectTo = RouteServiceProvider::HOME; + /** * Create a new controller instance. * @@ -32,26 +37,4 @@ public function __construct() { $this->middleware('guest')->except('logout'); } - - public function redirectTo() - { - $role = Auth::user()->role; - - return ($role == 'master')?'/masters':'/home'; - } - - public function username() - { - $login = request()->input('email'); - $field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'phone_number'; - request()->merge([$field => $login]); - return $field; - } - - public function credentials(Request $request) - { - $credentials = $request->only($this->username(), 'password'); - $credentials = Arr::add($credentials, 'active', '1'); - return $credentials; - } } diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php old mode 100755 new mode 100644 index fe7cd41f7..ed1a5e073 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -2,10 +2,12 @@ namespace App\Http\Controllers\Auth; -use App\User; use App\Http\Controllers\Controller; -use Illuminate\Support\Facades\Validator; +use App\Providers\RouteServiceProvider; +use App\Models\User; use Illuminate\Foundation\Auth\RegistersUsers; +use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Validator; class RegisterController extends Controller { @@ -27,7 +29,7 @@ class RegisterController extends Controller * * @var string */ - protected $redirectTo = '/home'; + protected $redirectTo = RouteServiceProvider::HOME; /** * Create a new controller instance. @@ -36,7 +38,7 @@ class RegisterController extends Controller */ public function __construct() { - $this->middleware('auth'); + $this->middleware('guest'); } /** @@ -48,9 +50,9 @@ public function __construct() protected function validator(array $data) { return Validator::make($data, [ - 'name' => 'required|string|max:255', - 'email' => 'required|string|email|max:255|unique:users', - 'password' => 'required|string|min:6|confirmed', + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); } @@ -58,14 +60,14 @@ protected function validator(array $data) * Create a new user instance after a valid registration. * * @param array $data - * @return \App\User + * @return \App\Models\User */ protected function create(array $data) { return User::create([ 'name' => $data['name'], 'email' => $data['email'], - 'password' => bcrypt($data['password']), + 'password' => Hash::make($data['password']), ]); } } diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php old mode 100755 new mode 100644 index cf726eecd..b1726a364 --- a/app/Http/Controllers/Auth/ResetPasswordController.php +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; +use App\Providers\RouteServiceProvider; use Illuminate\Foundation\Auth\ResetsPasswords; class ResetPasswordController extends Controller @@ -25,15 +26,5 @@ class ResetPasswordController extends Controller * * @var string */ - protected $redirectTo = '/home'; - - /** - * Create a new controller instance. - * - * @return void - */ - public function __construct() - { - $this->middleware('guest'); - } + protected $redirectTo = RouteServiceProvider::HOME; } diff --git a/app/Http/Controllers/Auth/UpdatePasswordController.php b/app/Http/Controllers/Auth/UpdatePasswordController.php new file mode 100644 index 000000000..21e2b8d7b --- /dev/null +++ b/app/Http/Controllers/Auth/UpdatePasswordController.php @@ -0,0 +1,38 @@ +userRepository = $userRepository; + } + + public function edit() { + return view('auth.passwords.edit'); + } + + public function update(PasswordChangeRequest $request) { + $request = $request->validated(); + if (Hash::check($request['old_password'], auth()->user()->password)) { + // The passwords match... + try{ + $this->userRepository->changePassword($request['new_password']); + + return back()->with('status', 'Changing password was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } else { + return back()->withError('Password mismatched!'); + } + } +} diff --git a/app/Http/Controllers/Auth/VerificationController.php b/app/Http/Controllers/Auth/VerificationController.php new file mode 100644 index 000000000..5e749af86 --- /dev/null +++ b/app/Http/Controllers/Auth/VerificationController.php @@ -0,0 +1,42 @@ +middleware('auth'); + $this->middleware('signed')->only('verify'); + $this->middleware('throttle:6,1')->only('verify', 'resend'); + } +} diff --git a/app/Http/Controllers/CashierController.php b/app/Http/Controllers/CashierController.php deleted file mode 100755 index 8b98d08fa..000000000 --- a/app/Http/Controllers/CashierController.php +++ /dev/null @@ -1,40 +0,0 @@ -user()->school_id)->get(); - return view('stripe.payment', compact('fees_fields')); - } - - public function store(Request $request){ - $stripeToken = $request->stripeToken; - $amount = intval($request->amount * 100); - $chargeField = $request->charge_field; - $user = auth()->user(); - if($user->stripe_id == NULL){ - //manually create a new Customer instance with Stripe - $user->createAsStripeCustomer($stripeToken); - } - try { - $transaction = $user->charge($amount); - $payment = new Payment; - $payment->payment_id = $transaction->id; - $payment->payment_status = 1; - $payment->amount = $request->amount; - $payment->custormer_id = auth()->user()->id; - $payment->charge_for = $chargeField; - $payment->save(); - } catch (\Exception $e) { - return back()->with(['error'=>true,'status'=>__('Payment Unsuccessful')]); - } - // Return back - return back()->with('status',__('Payment Successful')); - } -} diff --git a/app/Http/Controllers/CertificateController.php b/app/Http/Controllers/CertificateController.php deleted file mode 100755 index aec21c013..000000000 --- a/app/Http/Controllers/CertificateController.php +++ /dev/null @@ -1,93 +0,0 @@ -student_code) - ->bySchool(\Auth::user()->school_id) - ->get(); - return view('certificates.index',['certificates'=>$certificates]); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - $certificates = Certificate::with('student') - ->bySchool(\Auth::user()->school_id) - ->where('active',1)->get(); - return view('certificates.create',['certificates'=>$certificates]); - } - - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store(Request $request) - { - // - } - - /** - * Display the specified resource. - * - * @param \App\Certificate $certificate - * @return \Illuminate\Http\Response - */ - public function show(Certificate $certificate) - { - // - } - - /** - * Show the form for editing the specified resource. - * - * @param \App\Certificate $certificate - * @return \Illuminate\Http\Response - */ - public function edit(Certificate $certificate) - { - // - } - - /** - * Update the specified resource in storage. - * - * @param Request $request - * @return \Illuminate\Http\Response - */ - public function update(Request $request) - { - $tb = Certificate::find($request->id); - $tb->active = 0; - $tb->save(); - return back()->with('status',__('File removed')); - } - - /** - * Remove the specified resource from storage. - * - * @param \App\Certificate $certificate - * @return \Illuminate\Http\Response - */ - public function destroy(Certificate $certificate) - { - // - } -} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php old mode 100755 new mode 100644 index 03e02a23e..a0a2a8a34 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -2,10 +2,10 @@ namespace App\Http\Controllers; +use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Bus\DispatchesJobs; -use Illuminate\Routing\Controller as BaseController; use Illuminate\Foundation\Validation\ValidatesRequests; -use Illuminate\Foundation\Auth\Access\AuthorizesRequests; +use Illuminate\Routing\Controller as BaseController; class Controller extends BaseController { diff --git a/app/Http/Controllers/CourseController.php b/app/Http/Controllers/CourseController.php old mode 100755 new mode 100644 index 295c2fca2..f919bb944 --- a/app/Http/Controllers/CourseController.php +++ b/app/Http/Controllers/CourseController.php @@ -2,53 +2,38 @@ namespace App\Http\Controllers; -use App\Course; -use App\Http\Resources\CourseResource; +use App\Http\Controllers\Controller; +use App\Models\Course; use Illuminate\Http\Request; -use App\Http\Requests\Course\SaveConfigurationRequest; -use App\Http\Traits\GradeTrait; -use App\Services\Course\CourseService; +use App\Traits\SchoolSession; +use App\Interfaces\CourseInterface; +use App\Http\Requests\CourseStoreRequest; +use App\Interfaces\SchoolSessionInterface; +use App\Repositories\PromotionRepository; class CourseController extends Controller { - use GradeTrait; - protected $courseService; + use SchoolSession; + protected $schoolCourseRepository; + protected $schoolSessionRepository; - public function __construct(CourseService $courseService){ - $this->courseService = $courseService; - } /** - * Display a listing of the resource. - * - * @return \Illuminate\Http\Response - */ - public function index($teacher_id, $section_id){ - if($this->courseService->isCourseOfTeacher($teacher_id)) { - $courses = $this->courseService->getCoursesByTeacher($teacher_id); - $exams = $this->courseService->getExamsBySchoolId(); - $view = 'course.teacher-course'; - - } else if($this->courseService->isCourseOfStudentOfASection($section_id)) { - $courses = $this->courseService->getCoursesBySection($section_id); - $view = 'course.class-course'; - $exams = []; - - } else if($this->courseService->isCourseOfASection($section_id)) { - $courses = $this->courseService->getCoursesBySection($section_id); - $exams = $this->courseService->getExamsBySchoolId(); - $view = 'course.class-course'; - } else { - return redirect('home'); - } - return view($view,compact('courses','exams')); + * Create a new Controller instance + * + * @param CourseInterface $schoolCourseRepository + * @return void + */ + public function __construct(SchoolSessionInterface $schoolSessionRepository, CourseInterface $schoolCourseRepository) { + $this->schoolSessionRepository = $schoolSessionRepository; + $this->schoolCourseRepository = $schoolCourseRepository; } /** - * Show the form for creating a new resource. + * Display a listing of the resource. * * @return \Illuminate\Http\Response */ - public function create() + public function index() { // } @@ -58,95 +43,92 @@ public function create() * * @return \Illuminate\Http\Response */ - public function course($teacher_id,$course_id,$exam_id,$section_id) + public function create() { - $this->addStudentsToCourse($teacher_id,$course_id,$exam_id,$section_id); - $students = $this->courseService->getStudentsFromGradeByCourseAndExam($course_id, $exam_id); - - return view('course.students', compact('students','teacher_id','section_id')); + // } /** * Store a newly created resource in storage. * - * @param \Illuminate\Http\Request $request + * @param CourseStoreRequest $request * @return \Illuminate\Http\Response */ - public function store(Request $request) + public function store(CourseStoreRequest $request) { - try{ - $this->courseService->addCourse($request); - } catch (\Exception $ex){ - return __('Could not add course.'); - } - return back()->with('status', __('Created')); - } + try { + $this->schoolCourseRepository->create($request->validated()); - /** - * @param SaveConfigurationRequest $request - * @return \Illuminate\Http\RedirectResponse - */ - public function saveConfiguration(SaveConfigurationRequest $request){ - try{ - $this->courseService->saveConfiguration($request); - } catch (\Exception $ex){ - return __('Could not save configuration.'); - } - return back()->with('status', __('Saved')); + return back()->with('status', 'Course creation was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } } /** * Display the specified resource. * - * @param int $id * @return \Illuminate\Http\Response */ - public function show($id) - { - return new CourseResource(Course::find($id)); + public function getStudentCourses($student_id) { + $current_school_session_id = $this->getSchoolCurrentSession(); + $promotionRepository = new PromotionRepository(); + $class_info = $promotionRepository->getPromotionInfoById($current_school_session_id, $student_id); + $courses = $this->schoolCourseRepository->getByClassId($class_info->class_id); + + $data = [ + 'class_info' => $class_info, + 'courses' => $courses, + ]; + return view('courses.student', $data); } /** * Show the form for editing the specified resource. * - * @param int $id + * @param $course_id * @return \Illuminate\Http\Response */ - public function edit($id) + public function edit($course_id) { - $course = Course::find($id); - return view('course.edit', ['course'=>$course]); + $current_school_session_id = $this->getSchoolCurrentSession(); + + $course = $this->schoolCourseRepository->findById($course_id); + + $data = [ + 'current_school_session_id' => $current_school_session_id, + 'course' => $course, + 'course_id' => $course_id, + ]; + + return view('courses.edit', $data); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request - * @param int $id * @return \Illuminate\Http\Response */ - public function updateNameAndTime(Request $request, $id) + public function update(Request $request) { - $request->validate([ - 'course_name' => 'required|string', - 'course_time' => 'required|string', - ]); - $this->courseService->updateCourseInfo($id, $request); - return back()->with('status', __('Saved')); + try { + $this->schoolCourseRepository->update($request); + + return back()->with('status', 'Course update was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } } /** * Remove the specified resource from storage. * - * @param int $id + * @param \App\Models\Course $course * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy(Course $course) { - return (Course::destroy($id))?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); + // } } diff --git a/app/Http/Controllers/EventController.php b/app/Http/Controllers/EventController.php old mode 100755 new mode 100644 index b57eff684..86180cdb4 --- a/app/Http/Controllers/EventController.php +++ b/app/Http/Controllers/EventController.php @@ -2,100 +2,69 @@ namespace App\Http\Controllers; -use App\Event as Event; -use App\Http\Resources\EventResource; +use App\Http\Controllers\Controller; +use App\Models\Event; use Illuminate\Http\Request; +use App\Traits\SchoolSession; +use App\Interfaces\SchoolSessionInterface; class EventController extends Controller { - /** - * Display a listing of the resource. - * - * @return \Illuminate\Http\Response - */ - public function index($class_id) - { - return ($class_id > 0)? EventResource::collection(Event::where('class_id', $class_id)->get()):response()->json(['Invalid Class id: '. $class_id, 404]); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - $files = Event::bySchool(\Auth::user()->school_id)->where('active',1)->get(); - return view('events.create',['files'=>$files]); - } - - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store(Request $request) - { - $tb = new Event; - $tb->file_path = $request->file_path; - $tb->title = $request->title; - $tb->active = 1; - $tb->school_id = \Auth::user()->school_id; - $tb->user_id = \Auth::user()->id; - $tb->save(); - return back()->with('status', __('Uploaded')); - } + use SchoolSession; + protected $schoolSessionRepository; - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function show($id) - { - return new EventResource(Event::find($id)); + public function __construct(SchoolSessionInterface $schoolSessionRepository) { + $this->schoolSessionRepository = $schoolSessionRepository; } - /** - * Show the form for editing the specified resource. + * Display a listing of the resource. * - * @param int $id * @return \Illuminate\Http\Response */ - public function edit($id) + public function index(Request $request) { - // - } + if($request->ajax()) { + $current_school_session_id = $this->getSchoolCurrentSession(); - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param Request $request - * @return \Illuminate\Http\Response - */ - public function update(Request $request) - { - $tb = Event::find($request->id); - $tb->active = 0; - $tb->save(); - return back()->with('status','File removed'); + $data = Event::whereDate('start', '>=', $request->start) + ->whereDate('end', '<=', $request->end) + ->where('session_id', $current_school_session_id) + ->get(['id', 'title', 'start', 'end']); + return response()->json($data); + } + return view('events.index'); } - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function destroy($id) + public function calendarEvents(Request $request) { - return (Event::destroy($id))?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); + $current_school_session_id = $this->getSchoolCurrentSession(); + $event = null; + switch ($request->type) { + case 'create': + $event = Event::create([ + 'title' => $request->title, + 'start' => $request->start, + 'end' => $request->end, + 'session_id' => $current_school_session_id + ]); + break; + + case 'edit': + $event = Event::find($request->id)->update([ + 'title' => $request->title, + 'start' => $request->start, + 'end' => $request->end, + ]); + break; + + case 'delete': + $event = Event::find($request->id)->delete(); + break; + + default: + break; + } + dd($event); + return response()->json($event); } } diff --git a/app/Http/Controllers/ExamController.php b/app/Http/Controllers/ExamController.php old mode 100755 new mode 100644 index ce732ec4e..d263102b3 --- a/app/Http/Controllers/ExamController.php +++ b/app/Http/Controllers/ExamController.php @@ -2,34 +2,67 @@ namespace App\Http\Controllers; +use App\Http\Controllers\Controller; +use App\Http\Requests\ExamStoreRequest; +use App\Models\Exam; use Illuminate\Http\Request; -use App\Services\Exam\ExamService; -use App\Http\Requests\Exam\CreateExamRequest; +use App\Traits\SchoolSession; +use App\Interfaces\SemesterInterface; +use App\Interfaces\SchoolClassInterface; +use App\Interfaces\SchoolSessionInterface; +use App\Repositories\AssignedTeacherRepository; +use App\Repositories\ExamRepository; class ExamController extends Controller { - protected $examService; + use SchoolSession; - public function __construct(ExamService $examService){ - $this->examService = $examService; + protected $schoolClassRepository; + protected $semesterRepository; + protected $schoolSessionRepository; + + public function __construct(SchoolSessionInterface $schoolSessionRepository, SchoolClassInterface $schoolClassRepository, SemesterInterface $semesterRepository) + { + $this->schoolSessionRepository = $schoolSessionRepository; + $this->schoolClassRepository = $schoolClassRepository; + $this->semesterRepository = $semesterRepository; } /** * Display a listing of the resource. * + * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ - public function index() + public function index(Request $request) { - $exams = $this->examService->getLatestExamsBySchoolIdWithPagination(); - return view('exams.all',compact('exams')); - } + $class_id = $request->query('class_id', 0); + $semester_id = $request->query('semester_id', 0); + + $current_school_session_id = $this->getSchoolCurrentSession(); + + $semesters = $this->semesterRepository->getAll($current_school_session_id); + + $school_classes = $this->schoolClassRepository->getAllBySession($current_school_session_id); + + $examRepository = new ExamRepository(); + + $exams = $examRepository->getAll($current_school_session_id, $semester_id, $class_id); - public function indexActive(){ - $exams = $this->examService->getActiveExamsBySchoolId(); - $this->examService->examIds = $exams->pluck('id')->toArray(); - $courses = $this->examService->getCoursesByExamIds(); + $assignedTeacherRepository = new AssignedTeacherRepository(); - return view('exams.active',compact('exams','courses')); + $teacher_id = (auth()->user()->role == "teacher")?auth()->user()->id : 0; + + $teacherCourses = $assignedTeacherRepository->getTeacherCourses($current_school_session_id, $teacher_id, $semester_id); + + $data = [ + 'current_school_session_id' => $current_school_session_id, + 'semesters' => $semesters, + 'classes' => $school_classes, + 'exams' => $exams, + 'teacher_courses' => $teacherCourses, + ]; + + return view('exams.index', $data); } /** @@ -39,38 +72,59 @@ public function indexActive(){ */ public function create() { - $classes = $this->examService->getClassesBySchoolId(); - $already_assigned_classes = $this->examService->getAlreadyAssignedClasses(); - return view('exams.add',compact('classes','already_assigned_classes')); + $current_school_session_id = $this->getSchoolCurrentSession(); + + $semesters = $this->semesterRepository->getAll($current_school_session_id); + + if(auth()->user()->role == "teacher") { + $teacher_id = auth()->user()->id; + $assigned_classes = $this->schoolClassRepository->getAllBySessionAndTeacher($current_school_session_id, $teacher_id); + + $school_classes = []; + $i = 0; + + foreach($assigned_classes as $assigned_class) { + $school_classes[$i] = $assigned_class->schoolClass; + $i++; + } + } else { + $school_classes = $this->schoolClassRepository->getAllBySession($current_school_session_id); + } + + $data = [ + 'current_school_session_id' => $current_school_session_id, + 'semesters' => $semesters, + 'classes' => $school_classes, + ]; + + return view('exams.create', $data); } /** * Store a newly created resource in storage. * - * @param \Illuminate\Http\Request $request + * @param ExamStoreRequest $request * @return \Illuminate\Http\Response */ - public function store(CreateExamRequest $request) + public function store(ExamStoreRequest $request) { - - $this->examService->request = $request; - try{ - $this->examService->storeExam(); - } catch (\Exception $e){ - return 'Error: '. $e->getMessage(); + try { + $examRepository = new ExamRepository(); + $examRepository->create($request->validated()); + + return back()->with('status', 'Exam creation was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); } - - //return $this->cindex($course_id, $exam_id, $teacher_id); - return back()->with('status', __('Created')); } /** * Display the specified resource. * - * @param int $id + * @param \App\Models\Exam $exam * @return \Illuminate\Http\Response */ - public function show($id) + public function show(Exam $exam) { // } @@ -78,10 +132,10 @@ public function show($id) /** * Show the form for editing the specified resource. * - * @param int $id + * @param \App\Models\Exam $exam * @return \Illuminate\Http\Response */ - public function edit($id) + public function edit(Exam $exam) { // } @@ -90,51 +144,29 @@ public function edit($id) * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request - * @param int $id + * @param \App\Models\Exam $exam * @return \Illuminate\Http\Response */ - public function update(Request $request) + public function update(Request $request, Exam $exam) { - $request->validate([ - 'exam_id' => 'required|numeric', - ]); - try{ - $this->examService->request = $request; - $this->examService->updateExam(); - } catch (\Exception $e){ - return 'Error: '. $e->getMessage(); - } - return back()->with('status', __('Saved')); - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\Response - */ - private function assignCoursesToExam() - { - // $request->validate([ - // 'course_id' => 'required|numeric', - // 'exam_id' => 'required|numeric', - // ]); - - // $tb = Course::find($request->course_id); - // $tb->exam_id = $request->exam_id; - // $tb->save(); - // return back()->with('status', 'Saved'); + // } /** * Remove the specified resource from storage. * - * @param int $id + * @param \App\Models\Exam $exam * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy(Request $request) { - // + try { + $examRepository = new ExamRepository(); + $examRepository->delete($request->exam_id); + + return back()->with('status', 'Exam deletion was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } } } diff --git a/app/Http/Controllers/ExamRuleController.php b/app/Http/Controllers/ExamRuleController.php new file mode 100644 index 000000000..0bbad12c8 --- /dev/null +++ b/app/Http/Controllers/ExamRuleController.php @@ -0,0 +1,135 @@ +schoolSessionRepository = $schoolSessionRepository; + } + /** + * Display a listing of the resource. + * + * \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function index(Request $request) + { + $current_school_session_id = $this->getSchoolCurrentSession(); + $exam_id = $request->query('exam_id', 0); + $examRuleRepository = new ExamRuleRepository(); + $exam_rules = $examRuleRepository->getAll($current_school_session_id, $exam_id); + + $data = [ + 'exam_rules' => $exam_rules + ]; + return view('exams.view-rule', $data); + } + + /** + * Show the form for creating a new resource. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function create(Request $request) + { + $current_school_session_id = $this->getSchoolCurrentSession(); + $exam_id = $request->query('exam_id'); + + $data = [ + 'exam_id' => $exam_id, + 'current_school_session_id' => $current_school_session_id, + ]; + + return view('exams.add-rule', $data); + } + + /** + * Store a newly created resource in storage. + * + * @param ExamRuleStoreRequest $request + * @return \Illuminate\Http\Response + */ + public function store(ExamRuleStoreRequest $request) + { + try { + $examRuleRepository = new ExamRuleRepository(); + $examRuleRepository->create($request->validated()); + + return back()->with('status', 'Exam rule creation was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } + + /** + * Display the specified resource. + * + * @param \App\Models\ExamRule $examRule + * @return \Illuminate\Http\Response + */ + public function show(ExamRule $examRule) + { + return view('exams.view-rule'); + } + + /** + * Show the form for editing the specified resource. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function edit(Request $request) + { + $examRuleRepository = new ExamRuleRepository(); + $exam_rule = $examRuleRepository->getById($request->exam_rule_id); + $data = [ + 'exam_rule_id' => $request->exam_rule_id, + 'exam_rule' => $exam_rule, + ]; + return view('exams.edit-rule', $data); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function update(Request $request) + { + try { + $examRuleRepository = new ExamRuleRepository(); + $examRuleRepository->update($request); + + return back()->with('status', 'Exam rule update was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\ExamRule $examRule + * @return \Illuminate\Http\Response + */ + public function destroy(ExamRule $examRule) + { + // + } +} diff --git a/app/Http/Controllers/FaqController.php b/app/Http/Controllers/FaqController.php deleted file mode 100755 index c27ec4008..000000000 --- a/app/Http/Controllers/FaqController.php +++ /dev/null @@ -1,105 +0,0 @@ -question = $request->question; - $tb->answer = $request->answer; - - return($tb->save())?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } - - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function show($id) - { - return new FaqResource(Faq::find($id)); - } - - /** - * Show the form for editing the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function edit($id) - { - // - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\Response - */ - public function update(Request $request, $id) - { - $tb = Faq::find($id); - $tb->question = $request->question; - $tb->answer = $request->answer; - return ($tb->save())?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } - - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function destroy($id) - { - return (Faq::destroy($id))?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } -} diff --git a/app/Http/Controllers/FeedbackController.php b/app/Http/Controllers/FeedbackController.php deleted file mode 100755 index 04e53e6ee..000000000 --- a/app/Http/Controllers/FeedbackController.php +++ /dev/null @@ -1,107 +0,0 @@ - 0)? FeedbackResource::collection(Feedback::where('student_id', $student_id)->get()):response()->json(['Invalid Student id: '. $student_id, 404]); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - // - } - - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store(Request $request) - { - $tb = new Feedback; - $tb->description = $request->description; - $tb->teacher_id = $request->teacher_id; - $tb->student_id = $request->student_id; - - return($tb->save())?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } - - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function show($id) - { - return new FeedbackResource(Feedback::find($id)); - } - - /** - * Show the form for editing the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function edit($id) - { - // - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\Response - */ - public function update(Request $request, $id) - { - $tb = Feedback::find($id); - $tb->description = $request->description; - $tb->student_id = $request->student_id; - $tb->teacher_id = $request->teacher_id; - return ($tb->save())?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } - - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function destroy($id) - { - return (Feedback::destroy($id))?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } -} diff --git a/app/Http/Controllers/FormController.php b/app/Http/Controllers/FormController.php deleted file mode 100755 index cd720465a..000000000 --- a/app/Http/Controllers/FormController.php +++ /dev/null @@ -1,105 +0,0 @@ - 0)? FormResource::collection(Form::bySchool($school_id)->get()):response()->json(['Invalid School id: '. $school_id, 404]); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - // - } - - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store(Request $request) - { - $tb = new Form; - $tb->file_path = $request->file_path; - $tb->school_id = $request->school_id; - - return($tb->save())?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } - - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function show($id) - { - return new FormResource(Form::find($id)); - } - - /** - * Show the form for editing the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function edit($id) - { - // - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\Response - */ - public function update(Request $request, $id) - { - $tb = Form::find($id); - $tb->file_path = $request->file_path; - $tb->school_id = $request->school_id; - return ($tb->save())?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } - - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function destroy($id) - { - return (Form::destroy($id))?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } -} diff --git a/app/Http/Controllers/GradeController.php b/app/Http/Controllers/GradeController.php deleted file mode 100755 index 63d5b82d5..000000000 --- a/app/Http/Controllers/GradeController.php +++ /dev/null @@ -1,193 +0,0 @@ -gradeService = $gradeService; - } - /** - * Display a listing of the resource. - * - * @return \Illuminate\Http\Response - */ - public function index($student_id) - { - if($this->gradeService->isLoggedInUserStudent()){ - $grades = $this->gradeService->getStudentGradesWithInfoCourseTeacherExam(auth()->user()->id); - } else { - $grades = $this->gradeService->getStudentGradesWithInfoCourseTeacherExam($student_id); - } - if(count($grades) > 0){ - $exams = $this->gradeService->getExamByIdsFromGrades($grades); - $gradesystems = $this->gradeService->getGradeSystemBySchoolId($grades); - } else { - $grades = []; - $gradesystems = []; - $exams = []; - } - - $this->gradeService->grades = $grades; - $this->gradeService->gradesystems = $gradesystems; - $this->gradeService->exams = $exams; - - return $this->gradeService->gradeIndexView('grade.student-grade'); - } - - public function tindex($teacher_id,$course_id,$exam_id,$section_id) - { - $this->addStudentsToCourse($teacher_id,$course_id,$exam_id,$section_id); - - $grades = $this->gradeService->getGradesByCourseExam($course_id, $exam_id); - $gradesystems = $this->gradeService->getGradeSystemBySchoolIdGroupByName($grades); - - $this->gradeService->grades = $grades; - $this->gradeService->gradesystems = $gradesystems; - - return $this->gradeService->gradeTeacherIndexView('grade.teacher-grade'); - } - - public function cindex($teacher_id,$course_id,$exam_id,$section_id) - { - $this->addStudentsToCourse($teacher_id,$course_id,$exam_id,$section_id); - $grades = $this->gradeService->getGradesByCourseExam($course_id, $exam_id); - $gradesystems = $this->gradeService->getGradeSystemBySchoolId($grades); - - $this->gradeService->grades = $grades; - $this->gradeService->gradesystems = $gradesystems; - $this->gradeService->course_id = $course_id; - $this->gradeService->exam_id = $exam_id; - $this->gradeService->teacher_id = $teacher_id; - $this->gradeService->section_id = $section_id; - - return $this->gradeService->gradeCourseIndexView('grade.course-grade'); - } - - public function allExamsGrade(){ - $classes = $this->gradeService->getClassesBySchoolId(); - $classIds = $classes->pluck('id')->toArray(); - $sections = $this->gradeService->getSectionsByClassIds($classIds); - return view('grade.all-exams-grade',compact('classes', - 'sections')); - } - - public function gradesOfSection($section_id){ - $examIds = $this->gradeService->getActiveExamIds()->toArray(); - $courses = $this->gradeService->getCourseBySectionIdExamIds($section_id, $examIds); - $grades = $this->gradeService->getGradesByCourseId($courses); - - return view('grade.class-result',compact('grades')); - } - - public function calculateMarks(CalculateMarksRequest $request){ - $gradeSystem = $this->gradeService->getGradeSystemByname($request->grade_system_name); - - $this->gradeService->course_id = $request->course_id; - $course = $this->gradeService->getCourseByCourseId(); - - $grades = $this->gradeService->getGradesByCourseExam($request->course_id, $request->exam_id)->toArray(); - - $tbc = $this->gradeService->calculateGpaFromTotalMarks($grades, $course, $gradeSystem); - - $this->gradeService->saveCalculatedGPAFromTotalMarks($tbc); - - $this->gradeService->course_id = $request->course_id; - $this->gradeService->exam_id = $request->exam_id; - $this->gradeService->teacher_id = $request->teacher_id; - $this->gradeService->section_id = $request->section_id; - - return $this->gradeService->returnRouteWithParameters('teacher-grade'); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - // - } - - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store(Request $request) - { - // - } - - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function show($id) - { - return new GradeResource(Grade::find($id)); - } - - /** - * Show the form for editing the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function edit($id) - { - // - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\Response - */ - public function update(Request $request) - { - $tbc = $this->gradeService->updateGrade($request); - try{ - if(count($tbc) > 0){ - $gradeTb = new Grade; - \Batch::update($gradeTb, (array) $tbc,'id'); - } - }catch(\Exception $e){ - return __("Ops, an error occured"); - } - - return back()->with('status', __('Saved')); - } - - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function destroy($id) - { - return (Grade::destroy($id))?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } -} diff --git a/app/Http/Controllers/GradeRuleController.php b/app/Http/Controllers/GradeRuleController.php new file mode 100644 index 000000000..ef9a4d216 --- /dev/null +++ b/app/Http/Controllers/GradeRuleController.php @@ -0,0 +1,122 @@ +schoolSessionRepository = $schoolSessionRepository; + } + /** + * Display a listing of the resource. + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\Response + */ + public function index(Request $request) + { + $grading_system_id = $request->query('grading_system_id'); + $current_school_session_id = $this->getSchoolCurrentSession(); + + $gradeRuleRepository = new GradeRuleRepository(); + $gradeRules = $gradeRuleRepository->getAll($current_school_session_id, $grading_system_id); + + return view('exams.grade.view-rules', compact('gradeRules')); + } + + /** + * Show the form for creating a new resource. + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\Response + */ + public function create(Request $request) + { + $grading_system_id = $request->query('grading_system_id'); + $current_school_session_id = $this->getSchoolCurrentSession(); + return view('exams.grade.add-rule', compact('grading_system_id', 'current_school_session_id')); + } + + /** + * Store a newly created resource in storage. + * + * @param GradeRuleStoreRequest $request + * @return \Illuminate\Http\Response + */ + public function store(GradeRuleStoreRequest $request) + { + try { + $gradeRuleRepository = new GradeRuleRepository(); + $gradeRuleRepository->store($request->validated()); + + return back()->with('status', 'Creating grading system rule was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } + + /** + * Display the specified resource. + * + * @param \App\Models\GradeRule $gradeRule + * @return \Illuminate\Http\Response + */ + public function show(GradeRule $gradeRule) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\GradeRule $gradeRule + * @return \Illuminate\Http\Response + */ + public function edit(GradeRule $gradeRule) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\GradeRule $gradeRule + * @return \Illuminate\Http\Response + */ + public function update(Request $request, GradeRule $gradeRule) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function destroy(Request $request) + { + try { + $gradeRuleRepository = new GradeRuleRepository(); + $gradeRuleRepository->delete($request->id); + + return back()->with('status', 'Deleting grading system rule was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } +} diff --git a/app/Http/Controllers/GradesystemController.php b/app/Http/Controllers/GradesystemController.php deleted file mode 100755 index 80eb60d48..000000000 --- a/app/Http/Controllers/GradesystemController.php +++ /dev/null @@ -1,85 +0,0 @@ -school_id)->get(); - return view('gpa.all',['gpas'=>$gpas]); - } - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create(){ - return view('gpa.create'); - } - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store(Request $request){ - $request->validate([ - 'grade_system_name' => 'required|string|max:255', - 'point' => 'required', - 'grade' => 'required', - 'from_mark' => 'required', - 'to_mark' => 'required', - ]); - $gpa = new Gradesystem; - $gpa->grade_system_name = $request->grade_system_name; - $gpa->point = $request->point; - $gpa->grade = $request->grade; - $gpa->from_mark = $request->from_mark; - $gpa->to_mark = $request->to_mark; - $gpa->school_id = \Auth::user()->school_id; - $gpa->user_id = \Auth::user()->id; - $gpa->save(); - return back()->with('status', __('Saved')); - } - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function show($id){} - /** - * Show the form for editing the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function edit($id){} - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\Response - */ - public function update(Request $request, $id){} - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function destroy(Request $request){ - $gpa = Gradesystem::find($request->gpa_id); - $gpa->delete(); - return back()->with('status', __('Deleted!')); - } -} diff --git a/app/Http/Controllers/GradingSystemController.php b/app/Http/Controllers/GradingSystemController.php new file mode 100644 index 000000000..15dd811c2 --- /dev/null +++ b/app/Http/Controllers/GradingSystemController.php @@ -0,0 +1,133 @@ +schoolSessionRepository = $schoolSessionRepository; + $this->schoolClassRepository = $schoolClassRepository; + $this->semesterRepository = $semesterRepository; + } + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + $gradingSystemRepository = new GradingSystemRepository(); + $current_school_session_id = $this->getSchoolCurrentSession(); + $gradingSystems = $gradingSystemRepository->getAll($current_school_session_id); + + $data = [ + 'gradingSystems' => $gradingSystems, + 'current_school_session_id' => $current_school_session_id, + ]; + + return view('exams.grade.view', $data); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + $current_school_session_id = $this->getSchoolCurrentSession(); + $school_classes = $this->schoolClassRepository->getAllBySession($current_school_session_id); + $semesters = $this->semesterRepository->getAll($current_school_session_id); + + $data = [ + 'current_school_session_id' => $current_school_session_id, + 'school_classes' => $school_classes, + 'semesters' => $semesters, + ]; + + return view('exams.grade.create', $data); + } + + /** + * Store a newly created resource in storage. + * + * @param GradingSystemStoreRequest $request + * @return \Illuminate\Http\Response + */ + public function store(GradingSystemStoreRequest $request) + { + try { + $gradingSystemRepository = new GradingSystemRepository(); + $gradingSystemRepository->store($request->validated()); + + return back()->with('status', 'Creating grading system was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } + + /** + * Display the specified resource. + * + * @param \App\Models\GradingSystem $gradingSystem + * @return \Illuminate\Http\Response + */ + public function show(GradingSystem $gradingSystem) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\GradingSystem $gradingSystem + * @return \Illuminate\Http\Response + */ + public function edit(GradingSystem $gradingSystem) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\GradingSystem $gradingSystem + * @return \Illuminate\Http\Response + */ + public function update(Request $request, GradingSystem $gradingSystem) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\GradingSystem $gradingSystem + * @return \Illuminate\Http\Response + */ + public function destroy(GradingSystem $gradingSystem) + { + // + } +} diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php old mode 100755 new mode 100644 index cd7ad7f40..6400d569a --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -2,101 +2,64 @@ namespace App\Http\Controllers; -use Illuminate\Http\Request; +use App\Http\Controllers\Controller; +use App\Traits\SchoolSession; +use App\Interfaces\UserInterface; +use App\Repositories\NoticeRepository; +use App\Interfaces\SchoolClassInterface; +use App\Interfaces\SchoolSessionInterface; +use App\Repositories\PromotionRepository; class HomeController extends Controller { + use SchoolSession; + protected $schoolSessionRepository; + protected $schoolClassRepository; + protected $userRepository; /** * Create a new controller instance. * * @return void */ - public function __construct() + public function __construct( + UserInterface $userRepository, SchoolSessionInterface $schoolSessionRepository, SchoolClassInterface $schoolClassRepository) { - $this->middleware('auth'); + // $this->middleware('auth'); + $this->userRepository = $userRepository; + $this->schoolSessionRepository = $schoolSessionRepository; + $this->schoolClassRepository = $schoolClassRepository; } /** * Show the application dashboard. * - * @return \Illuminate\Http\Response + * @return \Illuminate\Contracts\Support\Renderable */ public function index() { - - if (\Auth::user()->role != 'master') { - $minutes = 1440;// 24 hours = 1440 minutes - $school_id = \Auth::user()->school->id; - $classes = \Cache::remember('classes-'.$school_id, $minutes, function () use($school_id) { - return \App\Myclass::bySchool($school_id) - ->pluck('id') - ->toArray(); - }); - $totalStudents = \Cache::remember('totalStudents-'.$school_id, $minutes, function () use($school_id) { - return \App\User::bySchool($school_id) - ->where('role','student') - ->where('active', 1) - ->count(); - }); - $totalTeachers = \Cache::remember('totalTeachers-'.$school_id, $minutes, function () use($school_id) { - return \App\User::bySchool($school_id) - ->where('role','teacher') - ->where('active', 1) - ->count(); - }); - $totalBooks = \Cache::remember('totalBooks-'.$school_id, $minutes, function () use($school_id) { - return \App\Book::bySchool($school_id)->count(); - }); - $totalClasses = \Cache::remember('totalClasses-'.$school_id, $minutes, function () use($school_id) { - return \App\Myclass::bySchool($school_id)->count(); - }); - $totalSections = \Cache::remember('totalSections-'.$school_id, $minutes, function () use ($classes) { - return \App\Section::whereIn('class_id', $classes)->count(); - }); - $notices = \Cache::remember('notices-'.$school_id, $minutes, function () use($school_id) { - return \App\Notice::bySchool($school_id) - ->where('active',1) - ->get(); - }); - $events = \Cache::remember('events-'.$school_id, $minutes, function () use($school_id) { - return \App\Event::bySchool($school_id) - ->where('active',1) - ->get(); - }); - $routines = \Cache::remember('routines-'.$school_id, $minutes, function () use($school_id) { - return \App\Routine::bySchool($school_id) - ->where('active',1) - ->get(); - }); - $syllabuses = \Cache::remember('syllabuses-'.$school_id, $minutes, function () use($school_id) { - return \App\Syllabus::bySchool($school_id) - ->where('active',1) - ->get(); - }); - $exams = \Cache::remember('exams-'.$school_id, $minutes, function () use($school_id) { - return \App\Exam::bySchool($school_id) - ->where('active',1) - ->get(); - }); - // if(\Auth::user()->role == 'student') - // $messageCount = \App\Notification::where('student_id',\Auth::user()->id)->count(); - // else - // $messageCount = 0; - return view('home',[ - 'totalStudents'=>$totalStudents, - 'totalTeachers'=>$totalTeachers, - 'totalBooks'=>$totalBooks, - 'totalClasses'=>$totalClasses, - 'totalSections'=>$totalSections, - 'notices'=>$notices, - 'events'=>$events, - 'routines'=>$routines, - 'syllabuses'=>$syllabuses, - 'exams'=>$exams, - //'messageCount'=>$messageCount, - ]); - } else { - return redirect('/masters'); - } + $current_school_session_id = $this->getSchoolCurrentSession(); + + $classCount = $this->schoolClassRepository->getAllBySession($current_school_session_id)->count(); + + $studentCount = $this->userRepository->getAllStudentsBySessionCount($current_school_session_id); + + $promotionRepository = new PromotionRepository(); + + $maleStudentsBySession = $promotionRepository->getMaleStudentsBySessionCount($current_school_session_id); + + $teacherCount = $this->userRepository->getAllTeachers()->count(); + + $noticeRepository = new NoticeRepository(); + $notices = $noticeRepository->getAll($current_school_session_id); + + $data = [ + 'classCount' => $classCount, + 'studentCount' => $studentCount, + 'teacherCount' => $teacherCount, + 'notices' => $notices, + 'maleStudentsBySession' => $maleStudentsBySession, + ]; + + return view('home', $data); } } diff --git a/app/Http/Controllers/HomeworkController.php b/app/Http/Controllers/HomeworkController.php deleted file mode 100755 index 1d9e62fe7..000000000 --- a/app/Http/Controllers/HomeworkController.php +++ /dev/null @@ -1,117 +0,0 @@ - 0){ - return HomeworkResource::collection(Homework::where('section_id', $section_id)->get()); - } else if($teacher_id > 0){ - return HomeworkResource::collection(Homework::where('teacher_id', $teacher_id)->get()); - } else { - return response()->json([ - 'Invalid section_id: '.$section_id, - 'Invalid Teacher_id: '.$teacher_id, - 404]); - } - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - // - } - - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store(Request $request) - { - $tb = new Homework; - $tb->file_path = $request->file_path; - $tb->description = $request->description; - $tb->teacher_id = $request->teacher_id; - $tb->section_id = $request->section_id; - - return($tb->save())?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } - - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function show($id) - { - return HomeworkResource(Homework::find($id)); - } - - /** - * Show the form for editing the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function edit($id) - { - // - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\Response - */ - public function update(Request $request, $id) - { - $tb = Homework::find($id); - $tb->description = $request->description; - $tb->teacher_id = $request->teacher_id; - $tb->section_id = $request->section_id; - return ($tb->save())?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } - - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function destroy($id) - { - return (Homework::destroy($id))?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } -} diff --git a/app/Http/Controllers/IssuedbookController.php b/app/Http/Controllers/IssuedbookController.php deleted file mode 100755 index 7e3eba641..000000000 --- a/app/Http/Controllers/IssuedbookController.php +++ /dev/null @@ -1,74 +0,0 @@ -issuedBookService = $issuedBookService; - } - /** - * Show the issued books. - * - * @return \Illuminate\Http\Response - */ - public function index(){ - $issuedBooks = $this->issuedBookService->getIssuedBooks(); - return view('library.issued-books',['issued_books'=>$issuedBooks]); - } - /** - * Show all available books list so that librarian can issue books to students. - * - * @return \Illuminate\Http\Response - */ - public function create(){ - $books = \App\Book::bySchool(auth()->user()->school_id) - ->where('quantity','>',0) - ->get(); - return view('library.issuebooks',['books'=>$books]); - } - - /** - * Issue books to a student. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store(Request $request){ - $studentExists = \App\User::where('student_code',$request->student_code)->first(); - if($studentExists){ - $this->issuedBookService->request = $request; - $this->issuedBookService->storeIssuedBooks(); - return back()->with('status', __('Saved')); - } else { - return back()->with('status', __('Student Does Not Exist!')); - } - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\Response - */ - public function update(Request $request) - { - \DB::transaction(function () use ($request) { - $tb = \App\Issuedbook::find($request->issue_id); - $tb->borrowed = 0; - $tb->quantity = 0; - $tb->save(); - $book = \App\Book::where('id',$request->book_id)->first(); - $book->quantity = $book->quantity + 1; - $book->save(); - }, 5); - - return back()->with('status', __('Saved')); - } -} diff --git a/app/Http/Controllers/Library/BookController.php b/app/Http/Controllers/Library/BookController.php deleted file mode 100755 index 1b188b18c..000000000 --- a/app/Http/Controllers/Library/BookController.php +++ /dev/null @@ -1,71 +0,0 @@ -share('types', [ - __('Academic'), - __('Magazine'), - __('Story'), - __('Other') - ]); - } - - public function index() { - $books = Book::bySchool(auth()->user()->school_id)->paginate(); - - return view('library.books.index', compact('books')); - } - - public function show(Book $book) { - return view('library.books.show', compact('book')); - } - - public function edit(Book $book) { - $classes = Myclass::bySchool(auth()->user()->school_id)->get(); - - return view('library.books.edit', compact('book', 'classes')); - } - - public function create() { - $classes = Myclass::bySchool(auth()->user()->school_id)->get(); - - return view('library.books.create', compact('classes')); - } - - public function store(BookRequest $request) { - $book = Book::create([ - 'title' => $request->title, - 'book_code' => $request->book_code, - 'author' => $request->author, - 'quantity' => $request->quantity, - 'rackNo' => $request->rackNo, - 'rowNo' => $request->rowNo, - 'type' => $request->type, - 'about' => $request->about, - 'price' => $request->price, - 'img_path' => $request->img_path, - 'class_id' => $request->class_id, - 'school_id' => auth()->user()->school_id, - 'user_id' => auth()->user()->id - ]); - - return redirect()->route('library.books.show', $book->id); - } - - public function update(BookRequest $request, $book) - { - Book::where('id', $book)->update($request->except('_method', '_token')); - - return redirect()->route('library.books.index')->with('status', __('Book has been updated correctly')); - } -} diff --git a/app/Http/Controllers/MarkController.php b/app/Http/Controllers/MarkController.php new file mode 100644 index 000000000..ceb6abe94 --- /dev/null +++ b/app/Http/Controllers/MarkController.php @@ -0,0 +1,359 @@ +academicSettingRepository = $academicSettingRepository; + $this->userRepository = $userRepository; + $this->schoolSessionRepository = $schoolSessionRepository; + $this->schoolClassRepository = $schoolClassRepository; + $this->schoolSectionRepository = $schoolSectionRepository; + $this->courseRepository = $courseRepository; + $this->semesterRepository = $semesterRepository; + } + /** + * Display a listing of the resource. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function index(Request $request) + { + $class_id = $request->query('class_id', 0); + $section_id = $request->query('section_id', 0); + $course_id = $request->query('course_id', 0); + $semester_id = $request->query('semester_id', 0); + + $current_school_session_id = $this->getSchoolCurrentSession(); + + $semesters = $this->semesterRepository->getAll($current_school_session_id); + + $school_classes = $this->schoolClassRepository->getAllBySession($current_school_session_id); + + $markRepository = new MarkRepository(); + $marks = $markRepository->getAllFinalMarks($current_school_session_id, $semester_id, $class_id, $section_id, $course_id); + + if(!$marks) { + return abort(404); + } + + $gradingSystemRepository = new GradingSystemRepository(); + $gradingSystem = $gradingSystemRepository->getGradingSystem($current_school_session_id, $semester_id, $class_id); + + if(!$gradingSystem) { + return abort(404); + } + + $gradeRulesRepository = new GradeRuleRepository(); + $gradingSystemRules = $gradeRulesRepository->getAll($current_school_session_id, $gradingSystem->id); + + if(!$gradingSystemRules) { + return abort(404); + } + + foreach($marks as $mark_key => $mark) { + foreach ($gradingSystemRules as $key => $gradingSystemRule) { + if($mark->final_marks >= $gradingSystemRule->start_at && $mark->final_marks <= $gradingSystemRule->end_at) { + $marks[$mark_key]['point'] = $gradingSystemRule->point; + $marks[$mark_key]['grade'] = $gradingSystemRule->grade; + } + } + } + + $data = [ + 'current_school_session_id' => $current_school_session_id, + 'semesters' => $semesters, + 'classes' => $school_classes, + 'marks' => $marks, + 'grading_system_rules' => $gradingSystemRules, + ]; + + return view('marks.results', $data); + } + + /** + * Show the form for creating a new resource. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function create(Request $request) + { + $class_id = $request->query('class_id'); + $section_id = $request->query('section_id'); + $course_id = $request->query('course_id'); + $semester_id = $request->query('semester_id', 0); + + try{ + + $current_school_session_id = $this->getSchoolCurrentSession(); + $this->checkIfLoggedInUserIsAssignedTeacher($request, $current_school_session_id); + + $academic_setting = $this->academicSettingRepository->getAcademicSetting(); + + $examRepository = new ExamRepository(); + + $exams = $examRepository->getAll($current_school_session_id, $semester_id, $class_id); + + $markRepository = new MarkRepository(); + $studentsWithMarks = $markRepository->getAll($current_school_session_id, $semester_id, $class_id, $section_id, $course_id); + $studentsWithMarks = $studentsWithMarks->groupBy('student_id'); + + $sectionStudents = $this->userRepository->getAllStudents($current_school_session_id, $class_id, $section_id); + + $final_marks_submitted = false; + + $final_marks_submit_count = $markRepository->getFinalMarksCount($current_school_session_id, $semester_id, $class_id, $section_id, $course_id); + + if($final_marks_submit_count > 0) { + $final_marks_submitted = true; + } + + $data = [ + 'academic_setting' => $academic_setting, + 'exams' => $exams, + 'students_with_marks' => $studentsWithMarks, + 'class_id' => $class_id, + 'section_id' => $section_id, + 'course_id' => $course_id, + 'semester_id' => $semester_id, + 'final_marks_submitted' => $final_marks_submitted, + 'sectionStudents' => $sectionStudents, + 'current_school_session_id' => $current_school_session_id, + ]; + + return view('marks.create', $data); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } + + /** + * Show the form for creating a new resource. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function showFinalMark(Request $request) + { + $class_id = $request->query('class_id'); + $section_id = $request->query('section_id'); + $course_id = $request->query('course_id'); + $semester_id = $request->query('semester_id', 0); + + $current_school_session_id = $this->getSchoolCurrentSession(); + + $markRepository = new MarkRepository(); + $studentsWithMarks = $markRepository->getAll($current_school_session_id, $semester_id, $class_id, $section_id, $course_id); + $studentsWithMarks = $studentsWithMarks->groupBy('student_id'); + + $data = [ + 'students_with_marks' => $studentsWithMarks, + 'class_id' => $class_id, + 'class_name' => $request->query('class_name'), + 'section_id' => $section_id, + 'section_name' => $request->query('section_name'), + 'course_id' => $course_id, + 'course_name' => $request->query('course_name'), + 'semester_id' => $semester_id, + 'current_school_session_id' => $current_school_session_id, + ]; + + return view('marks.submit-final-marks', $data); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $current_school_session_id = $this->getSchoolCurrentSession(); + $this->checkIfLoggedInUserIsAssignedTeacher($request, $current_school_session_id); + $rows = []; + foreach($request->student_mark as $id => $stm) { + foreach($stm as $exam => $mark){ + $row = []; + $row['class_id'] = $request->class_id; + $row['student_id'] = $id; + $row['marks'] = $mark; + $row['section_id'] = $request->section_id; + $row['course_id'] = $request->course_id; + $row['session_id'] = $request->session_id; + $row['exam_id'] = $exam; + + $rows[] = $row; + } + } + try { + $markRepository = new MarkRepository(); + $markRepository->create($rows); + + return back()->with('status', 'Saving marks was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function storeFinalMark(Request $request) { + $current_school_session_id = $this->getSchoolCurrentSession(); + + $this->checkIfLoggedInUserIsAssignedTeacher($request, $current_school_session_id); + $rows = []; + foreach($request->calculated_mark as $id => $cmark) { + $row = []; + $row['class_id'] = $request->class_id; + $row['student_id'] = $id; + $row['calculated_marks'] = $cmark; + $row['final_marks'] = $request->final_mark[$id]; + $row['note'] = $request->note[$id]; + $row['section_id'] = $request->section_id; + $row['course_id'] = $request->course_id; + $row['session_id'] = $request->session_id; + $row['semester_id'] = $request->semester_id; + + $rows[] = $row; + } + try { + $markRepository = new MarkRepository(); + $markRepository->storeFinalMarks($rows); + + return back()->with('status', 'Submitting final marks was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } + + /** + * Display the specified resource. + * + * @return \Illuminate\Http\Response + */ + public function showCourseMark(Request $request) + { + $session_id = $request->query('session_id'); + $semester_id = $request->query('semester_id'); + $class_id = $request->query('class_id'); + $section_id = $request->query('section_id'); + $course_id = $request->query('course_id'); + $course_name = $request->query('course_name'); + $student_id = $request->query('student_id'); + $markRepository = new MarkRepository(); + $marks = $markRepository->getAllByStudentId($session_id, $semester_id, $class_id, $section_id, $course_id, $student_id); + $finalMarks = $markRepository->getAllFinalMarksByStudentId($session_id, $student_id, $semester_id, $class_id, $section_id, $course_id); + + if(!$finalMarks) { + return abort(404); + } + + $gradingSystemRepository = new GradingSystemRepository(); + $gradingSystem = $gradingSystemRepository->getGradingSystem($session_id, $semester_id, $class_id); + + if(!$gradingSystem) { + return abort(404); + } + + $gradeRulesRepository = new GradeRuleRepository(); + $gradingSystemRules = $gradeRulesRepository->getAll($session_id, $gradingSystem->id); + + if(!$gradingSystemRules) { + return abort(404); + } + + foreach($finalMarks as $mark_key => $mark) { + foreach ($gradingSystemRules as $key => $gradingSystemRule) { + if($mark->final_marks >= $gradingSystemRule->start_at && $mark->final_marks <= $gradingSystemRule->end_at) { + $finalMarks[$mark_key]['point'] = $gradingSystemRule->point; + $finalMarks[$mark_key]['grade'] = $gradingSystemRule->grade; + } + } + } + + $data = [ + 'marks' => $marks, + 'final_marks' => $finalMarks, + 'course_name' => $course_name, + ]; + + return view('marks.student', $data); + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\Mark $mark + * @return \Illuminate\Http\Response + */ + public function edit(Mark $mark) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\Mark $mark + * @return \Illuminate\Http\Response + */ + public function update(Request $request, Mark $mark) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\Mark $mark + * @return \Illuminate\Http\Response + */ + public function destroy(Mark $mark) + { + // + } +} diff --git a/app/Http/Controllers/MasterController.php b/app/Http/Controllers/MasterController.php deleted file mode 100755 index a9cdd2b2e..000000000 --- a/app/Http/Controllers/MasterController.php +++ /dev/null @@ -1,13 +0,0 @@ - 0)? MessageResource::collection(Message::bySchool($school_id)->get()):response()->json([ - 'Invalid School id: '. $school_id, - 404 - ]); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - // - } - - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store(Request $request) - { - $tb = new Message; - $tb->phone_number = $request->phone_number; - $tb->email = $request->email; - $tb->message = $request->message; - $tb->school_id = $request->school_id; - - return($tb->save())?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } - - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function show($id) - { - return new MessageResource(Message::find($id)); - } - - /** - * Show the form for editing the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function edit($id) - { - // - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\Response - */ - public function update(Request $request, $id) - { - $tb = Message::find($id); - $tb->phone_number = $request->phone_number; - $tb->email = $request->email; - $tb->message = $request->message; - $tb->school_id = $request->school_id; - return ($tb->save())?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } - - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function destroy($id) - { - return (Message::destroy($id))?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } -} diff --git a/app/Http/Controllers/MyclassController.php b/app/Http/Controllers/MyclassController.php deleted file mode 100755 index 64837253a..000000000 --- a/app/Http/Controllers/MyclassController.php +++ /dev/null @@ -1,108 +0,0 @@ - 0)? ClassResource::collection(Myclass::bySchool($school_id)->get()):response()->json([ - 'Invalid School id: '. $school_id, - 404 - ]); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - // - } - - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store(Request $request) - { - $request->validate([ - 'class_number' => 'required' - ]); - $tb = new Myclass; - $tb->class_number = $request->class_number; - $tb->school_id = \Auth::user()->school_id; - $tb->group = (!empty($request->group))?$request->group:''; - $tb->save(); - return back()->with('status', __('Created')); - } - - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function show($id) - { - return new ClassResource(Myclass::find($id)); - } - - /** - * Show the form for editing the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function edit($id) - { - // - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\Response - */ - public function update(Request $request, $id) - { - $tb = Myclass::find($id); - $tb->class_number = $request->class_number; - $tb->school_id = $request->school_id; - return ($tb->save())?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } - - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function destroy($id) - { - return (Myclass::destroy($id))?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } -} diff --git a/app/Http/Controllers/NoticeController.php b/app/Http/Controllers/NoticeController.php old mode 100755 new mode 100644 index 3753ee4c4..7e4286505 --- a/app/Http/Controllers/NoticeController.php +++ b/app/Http/Controllers/NoticeController.php @@ -2,21 +2,32 @@ namespace App\Http\Controllers; -use App\Notice as Notice; -use App\Http\Resources\NoticeResource; +use App\Http\Controllers\Controller; +use App\Models\Notice; use Illuminate\Http\Request; +use App\Traits\SchoolSession; +use App\Repositories\NoticeRepository; +use App\Http\Requests\NoticeStoreRequest; +use App\Interfaces\SchoolSessionInterface; class NoticeController extends Controller { + use SchoolSession; + + protected $schoolSessionRepository; + + public function __construct(SchoolSessionInterface $schoolSessionRepository) { + $this->schoolSessionRepository = $schoolSessionRepository; + } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ - public function index() - { - //Notice::bySchool(\Auth::user()->school_id)->get(); - } + public function index() + { + // + } /** * Show the form for creating a new resource. @@ -25,46 +36,46 @@ public function index() */ public function create() { - $files = Notice::bySchool(\Auth::user()->school_id)->where('active',1)->get(); - return view('notices.create',['files'=>$files]); + $current_school_session_id = $this->getSchoolCurrentSession(); + return view('notices.create', compact('current_school_session_id')); } /** * Store a newly created resource in storage. * - * @param \Illuminate\Http\Request $request + * @param NoticeStoreRequest $request * @return \Illuminate\Http\Response */ - public function store(Request $request) + public function store(NoticeStoreRequest $request) { - $tb = new Notice; - $tb->file_path = $request->file_path; - $tb->title = $request->title; - $tb->active = 1; - $tb->school_id = \Auth::user()->school_id; - $tb->user_id = \Auth::user()->id; - $tb->save(); - return back()->with('status', __('Uploaded')); + try { + $noticeRepository = new NoticeRepository(); + $noticeRepository->store($request->validated()); + + return back()->with('status', 'Creating Notice was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } } /** * Display the specified resource. * - * @param int $id + * @param \App\Models\Notice $notice * @return \Illuminate\Http\Response */ - public function show($id) + public function show(Notice $notice) { - return new NoticeResource(Notice::find($id)); + // } /** * Show the form for editing the specified resource. * - * @param int $id + * @param \App\Models\Notice $notice * @return \Illuminate\Http\Response */ - public function edit($id) + public function edit(Notice $notice) { // } @@ -72,29 +83,23 @@ public function edit($id) /** * Update the specified resource in storage. * - * @param Request $request + * @param \Illuminate\Http\Request $request + * @param \App\Models\Notice $notice * @return \Illuminate\Http\Response */ - public function update(Request $request) + public function update(Request $request, Notice $notice) { - $tb = Notice::find($request->id); - $tb->active = 0; - $tb->save(); - return back()->with('status',__('File removed')); + // } /** * Remove the specified resource from storage. * - * @param int $id + * @param \App\Models\Notice $notice * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy(Notice $notice) { - return (Notice::destroy($id))?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); + // } } diff --git a/app/Http/Controllers/NotificationController.php b/app/Http/Controllers/NotificationController.php deleted file mode 100755 index 6ce6cf13a..000000000 --- a/app/Http/Controllers/NotificationController.php +++ /dev/null @@ -1,128 +0,0 @@ -where('student_id',$id)->orderBy('id','desc')->paginate(10); - $msgs = []; - foreach($msg as $m){ - $msgs[] = [ - 'id' => $m->id, - 'active' => 0, - 'updated_at' => date('Y-m-d H:i:s'), - ]; - } - $notifTb = new Notification; - \Batch::update($notifTb,(array) $msgs,'id'); - return view('message.all',['messages'=>$msg]); - } - - /** - * Show the form for creating a new resource. - * - * @return \Illuminate\Http\Response - */ - public function create() - { - // - } - - /** - * Store a newly created resource in storage. - * - * @param \Illuminate\Http\Request $request - * @return \Illuminate\Http\Response - */ - public function store(Request $request) - { - $request->validate([ - 'section_id' => 'required|numeric', - 'teacher_id' => 'required|numeric', - 'recipients' => 'required|array', - 'msg' => 'required|string', - ]); - //DB::transaction(function () { - for($i=0; $i < count($request->recipients); $i++){ - $tb = new Notification; - $tb->sent_status = 1; - $tb->active = 1; - $tb->message = $request->msg; - $tb->student_id = $request->recipients[$i]; - $tb->user_id = $request->teacher_id; - $tb->created_at = date('Y-m-d H:i:s'); - $tb->updated_at = date('Y-m-d H:i:s'); - $n[] = $tb->attributesToArray(); - } - Notification::insert($n); - //}); - return back()->with('status',__('Message Sent')); - } - - /** - * Display the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function show($id) - { - return new NotificationResource(Notification::find($id)); - } - - /** - * Show the form for editing the specified resource. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function edit($id) - { - // - } - - /** - * Update the specified resource in storage. - * - * @param \Illuminate\Http\Request $request - * @param int $id - * @return \Illuminate\Http\Response - */ - public function update(Request $request, $id) - { - $tb = Notification::find($id); - $tb->student_id = $request->student_id; - $tb->message = $request->message; - return ($tb->save())?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } - - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return \Illuminate\Http\Response - */ - public function destroy($id) - { - return (Notification::destroy($id))?response()->json([ - 'status' => 'success' - ]):response()->json([ - 'status' => 'error' - ]); - } -} diff --git a/app/Http/Controllers/PromotionController.php b/app/Http/Controllers/PromotionController.php new file mode 100644 index 000000000..8e237fa72 --- /dev/null +++ b/app/Http/Controllers/PromotionController.php @@ -0,0 +1,197 @@ +schoolSessionRepository = $schoolSessionRepository; + $this->userRepository = $userRepository; + $this->schoolClassRepository = $schoolClassRepository; + $this->schoolSectionRepository = $schoolSectionRepository; + } + /** + * Display a listing of the resource. + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\Response + */ + public function index(Request $request) + { + $class_id = $request->query('class_id', 0); + + $promotionRepository = new PromotionRepository(); + $previousSession = $this->schoolSessionRepository->getPreviousSession(); + + if(count($previousSession) < 1) { + return back()->withError('No previous session'); + } + + $previousSessionClasses = $promotionRepository->getClasses($previousSession['id']); + + $previousSessionSections = $promotionRepository->getSections($previousSession['id'], $class_id); + + $current_school_session_id = $this->getSchoolCurrentSession(); + $currentSessionSections = $promotionRepository->getSectionsBySession($current_school_session_id); + + $currentSessionSectionsCounts = $currentSessionSections->count(); + + $data = [ + 'previousSessionClasses' => $previousSessionClasses, + 'class_id' => $class_id, + 'previousSessionSections' => $previousSessionSections, + 'currentSessionSectionsCounts' => $currentSessionSectionsCounts, + 'previousSessionId' => $previousSession['id'], + ]; + + return view('promotions.index', $data); + } + + /** + * Show the form for creating a new resource. + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\Response + */ + public function create(Request $request) + { + $class_id = $request->query('previous_class_id'); + $section_id = $request->query('previous_section_id'); + $session_id = $request->query('previousSessionId'); + + try{ + + if($class_id == null || $section_id == null ||$session_id == null) { + return abort(404); + } + + $students = $this->userRepository->getAllStudents($session_id, $class_id, $section_id); + + $schoolClass = $this->schoolClassRepository->findById($class_id); + $section = $this->schoolSectionRepository->findById($section_id); + + $latest_school_session = $this->schoolSessionRepository->getLatestSession(); + + $school_classes = $this->schoolClassRepository->getAllBySession($latest_school_session->id); + + $data = [ + 'students' => $students, + 'schoolClass' => $schoolClass, + 'section' => $section, + 'school_classes'=> $school_classes, + ]; + + return view('promotions.promote', $data); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $id_card_numbers = $request->id_card_number; + $latest_school_session = $this->schoolSessionRepository->getLatestSession(); + + $rows = []; + $i = 0; + foreach($id_card_numbers as $student_id => $id_card_number) { + $row = [ + 'student_id' => $student_id, + 'id_card_number'=> $id_card_number, + 'class_id' => $request->class_id[$i], + 'section_id' => $request->section_id[$i], + 'session_id' => $latest_school_session->id, + ]; + array_push($rows, $row); + $i++; + } + + try { + $promotionRepository = new PromotionRepository(); + $promotionRepository->massPromotion($rows); + + return back()->with('status', 'Promoting students was successful!'); + } catch (\Exception $e) { + return back()->withError($e->getMessage()); + } + } + + /** + * Display the specified resource. + * + * @param \App\Models\Promotion $promotion + * @return \Illuminate\Http\Response + */ + public function show(Promotion $promotion) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\Promotion $promotion + * @return \Illuminate\Http\Response + */ + public function edit(Promotion $promotion) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\Promotion $promotion + * @return \Illuminate\Http\Response + */ + public function update(Request $request, Promotion $promotion) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\Promotion $promotion + * @return \Illuminate\Http\Response + */ + public function destroy(Promotion $promotion) + { + // + } +} diff --git a/app/Http/Controllers/RoutineController.php b/app/Http/Controllers/RoutineController.php old mode 100755 new mode 100644 index 77fe08c50..d7494bf11 --- a/app/Http/Controllers/RoutineController.php +++ b/app/Http/Controllers/RoutineController.php @@ -2,116 +2,102 @@ namespace App\Http\Controllers; -use App\Routine as Routine; -use App\Http\Resources\RoutineResource; +use App\Http\Controllers\Controller; +use App\Http\Requests\RoutineStoreRequest; +use App\Models\Routine; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Schema; +use App\Traits\SchoolSession; +use App\Repositories\RoutineRepository; +use App\Interfaces\SchoolClassInterface; +use App\Interfaces\SchoolSessionInterface; class RoutineController extends Controller { + use SchoolSession; + protected $schoolSessionRepository; + protected $schoolClassRepository; + + public function __construct(SchoolSessionInterface $schoolSessionRepository, SchoolClassInterface $schoolClassRepository) + { + $this->schoolSessionRepository = $schoolSessionRepository; + $this->schoolClassRepository = $schoolClassRepository; + } + /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ - public function index() - { - $files = Routine::with('section') - ->bySchool(\Auth::user()->school_id) - ->where('active',1) - ->get(); - $classes = \App\Myclass::bySchool(\Auth::user()->school->id) - ->get(); - $classeIds = \App\Myclass::bySchool(\Auth::user()->school->id) - ->pluck('id') - ->toArray(); - $sections = \App\Section::whereIn('class_id',$classeIds) - ->orderBy('section_number') - ->get(); - return view('routines.create',[ - 'files'=>$files, - 'classes'=>$classes, - 'sections'=>$sections, - 'section_id' => 0 - ]); - } + public function index() + { + // + } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ - public function create(int $section_id) + public function create() { - try{ - if(Schema::hasColumn('routines','section_id')){ - $files = Routine::with('section') - ->bySchool(\Auth::user()->school_id) - ->where('section_id', $section_id) - ->where('active',1) - ->get(); - $classes = \App\Myclass::bySchool(\Auth::user()->school->id) - ->get(); - $classeIds = \App\Myclass::bySchool(\Auth::user()->school->id) - ->pluck('id') - ->toArray(); - $sections = \App\Section::whereIn('class_id',$classeIds) - ->orderBy('section_number') - ->get(); - } else { - return 'section_id
column missing. Run php artisan migrate
';
- }
- } catch(Exception $ex){
- return __('Something went wrong!!');
- }
- return view('routines.create',[
- 'files'=>$files,
- 'classes'=>$classes,
- 'sections'=>$sections,
- 'section_id'=>$section_id
- ]);
+ $current_school_session_id = $this->getSchoolCurrentSession();
+ $school_classes = $this->schoolClassRepository->getAllBySession($current_school_session_id);
+
+ $data = [
+ 'current_school_session_id' => $current_school_session_id,
+ 'classes' => $school_classes,
+ ];
+
+ return view('routines.create', $data);
}
/**
* Store a newly created resource in storage.
*
- * @param \Illuminate\Http\Request $request
+ * @param RoutineStoreRequest $request
* @return \Illuminate\Http\Response
*/
- public function store(Request $request)
+ public function store(RoutineStoreRequest $request)
{
- $request->validate([
- 'file_path' => 'required|string|max:255',
- 'title' => 'required|string|max:255',
- ]);
- $tb = new Routine;
- $tb->file_path = $request->file_path;
- $tb->title = $request->title;
- $tb->active = 1;
- $tb->school_id = \Auth::user()->school_id;
- $tb->user_id = \Auth::user()->id;
- $tb->save();
- return back()->with('status', __('Uploaded'));
+ try {
+ $routineRepository = new RoutineRepository();
+ $routineRepository->saveRoutine($request->validated());
+
+ return back()->with('status', 'Routine save was successful!');
+ } catch (\Exception $e) {
+ return back()->withError($e->getMessage());
+ }
}
/**
* Display the specified resource.
*
- * @param int $id
+ * @param \Illuminate\Http\Request $routine
* @return \Illuminate\Http\Response
*/
- public function show($id)
+ public function show(Request $request)
{
- return new RoutineResource(Routine::find($id));
+ $class_id = $request->query('class_id', 0);
+ $section_id = $request->query('section_id', 0);
+ $current_school_session_id = $this->getSchoolCurrentSession();
+ $routineRepository = new RoutineRepository();
+ $routines = $routineRepository->getAll($class_id, $section_id, $current_school_session_id);
+ $routines = $routines->sortBy('weekday')->groupBy('weekday');
+
+ $data = [
+ 'routines' => $routines
+ ];
+
+ return view('routines.show', $data);
}
/**
* Show the form for editing the specified resource.
*
- * @param int $id
+ * @param \App\Models\Routine $routine
* @return \Illuminate\Http\Response
*/
- public function edit($id)
+ public function edit(Routine $routine)
{
//
}
@@ -120,29 +106,22 @@ public function edit($id)
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
- * @param Request $request
+ * @param \App\Models\Routine $routine
* @return \Illuminate\Http\Response
*/
- public function update(Request $request)
+ public function update(Request $request, Routine $routine)
{
- $tb = Routine::find($request->id);
- $tb->active = 0;
- $tb->save();
- return back()->with('status',__('File removed'));
+ //
}
/**
* Remove the specified resource from storage.
*
- * @param int $id
+ * @param \App\Models\Routine $routine
* @return \Illuminate\Http\Response
*/
- public function destroy($id)
+ public function destroy(Routine $routine)
{
- return (Routine::destroy($id))?response()->json([
- 'status' => 'success'
- ]):response()->json([
- 'status' => 'error'
- ]);
+ //
}
}
diff --git a/app/Http/Controllers/SchoolClassController.php b/app/Http/Controllers/SchoolClassController.php
new file mode 100644
index 000000000..fd7a94af4
--- /dev/null
+++ b/app/Http/Controllers/SchoolClassController.php
@@ -0,0 +1,131 @@
+middleware(['can:view classes']);
+
+ $this->schoolSessionRepository = $schoolSessionRepository;
+ $this->schoolClassRepository = $schoolClassRepository;
+ }
+
+ /**
+ * Display a listing of the resource.
+ *
+ * @return \Illuminate\Http\Response
+ */
+ public function index()
+ {
+ $current_school_session_id = $this->getSchoolCurrentSession();
+
+ $data = $this->schoolClassRepository->getClassesAndSections($current_school_session_id);
+
+ return view('classes.index', $data);
+ }
+
+ /**
+ * Show the form for creating a new resource.
+ *
+ * @return \Illuminate\Http\Response
+ */
+ public function create()
+ {
+ //
+ }
+
+ /**
+ * Store a newly created resource in storage.
+ *
+ * @param SchoolClassStoreRequest $request
+ * @return \Illuminate\Http\Response
+ */
+ public function store(SchoolClassStoreRequest $request)
+ {
+ try {
+ $this->schoolClassRepository->create($request->validated());
+
+ return back()->with('status', 'Class creation was successful!');
+ } catch (\Exception $e) {
+ return back()->withError($e->getMessage());
+ }
+ }
+
+ /**
+ * Display the specified resource.
+ *
+ * @param \App\Models\SchoolClass $schoolClass
+ * @return \Illuminate\Http\Response
+ */
+ public function show(SchoolClass $schoolClass)
+ {
+ //
+ }
+
+ /**
+ * Show the form for editing the specified resource.
+ *
+ * @param $class_id
+ * @return \Illuminate\Http\Response
+ */
+ public function edit($class_id)
+ {
+ $current_school_session_id = $this->getSchoolCurrentSession();
+
+ $schoolClass = $this->schoolClassRepository->findById($class_id);
+
+ $data = [
+ 'current_school_session_id' => $current_school_session_id,
+ 'class_id' => $class_id,
+ 'schoolClass' => $schoolClass,
+ ];
+ return view('classes.edit', $data);
+ }
+
+ /**
+ * Update the specified resource in storage.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @return \Illuminate\Http\Response
+ */
+ public function update(Request $request)
+ {
+ try {
+ $this->schoolClassRepository->update($request);
+
+ return back()->with('status', 'Class edit was successful!');
+ } catch (\Exception $e) {
+ return back()->withError($e->getMessage());
+ }
+ }
+
+ /**
+ * Remove the specified resource from storage.
+ *
+ * @param \App\Models\SchoolClass $schoolClass
+ * @return \Illuminate\Http\Response
+ */
+ public function destroy(SchoolClass $schoolClass)
+ {
+ //
+ }
+}
diff --git a/app/Http/Controllers/SchoolController.php b/app/Http/Controllers/SchoolController.php
deleted file mode 100755
index 0e63fde25..000000000
--- a/app/Http/Controllers/SchoolController.php
+++ /dev/null
@@ -1,111 +0,0 @@
-paginate();
-
- return view('schools.index', compact('schools'));
- }
-
- /**
- * Store a newly created resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @return \Illuminate\Http\Response
- */
- public function store(SchoolRequest $request)
- {
- School::create([
- 'name' => $request->name,
- 'established' => $request->established,
- 'about' => $request->about,
- 'medium' => $request->medium,
- 'code' => date("y").substr(number_format(time() * mt_rand(), 0, '', ''), 0, 6),
- 'theme' => 'flatly'
- ]);
-
- return redirect()->route('schools.index')->with('status', __('Created'));
- }
-
- /**
- * Display the specified resource.
- *
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function show($school_id)
- {
- $admins = User::bySchool($school_id)->where('role','admin')->get();
- return view('school.admin-list',compact('admins'));
- }
-
- public function edit(School $school) {
- return view('schools.edit', compact('school'));
- }
-
- public function update(Request $request, School $school) {
- $school->name = $request->name;
- $school->about = $request->about;
- $school->save();
-
- return redirect()->route('schools.index');
- }
-
- public function addDepartment(Request $request){
- $request->validate([
- 'department_name' => 'required|string|max:50',
- ]);
- $s = new Department;
- $s->school_id = \Auth::user()->school_id;
- $s->department_name = $request->department_name;
- $s->save();
- return back()->with('status', __('Created'));
- }
-
- public function changeTheme(Request $request){
- $tb = School::find($request->s);
- $tb->theme = $request->school_theme;
- $tb->save();
- return back();
- }
-
- public function setIgnoreSessions(Request $request){
- $request->session()->put('ignoreSessions', $request->ignoreSessions);
- return response()->json([
- 'data' => [
- 'success' => "Setting saved"
- ]
- ]);
- }
-
- /**
- * Remove the specified resource from storage.
- *
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function destroy($id)
- {
- // return (School::destroy($id))?response()->json([
- // 'status' => 'success'
- // ]):response()->json([
- // 'status' => 'error'
- // ]);
- }
-}
diff --git a/app/Http/Controllers/SchoolSessionController.php b/app/Http/Controllers/SchoolSessionController.php
new file mode 100644
index 000000000..8863f307d
--- /dev/null
+++ b/app/Http/Controllers/SchoolSessionController.php
@@ -0,0 +1,60 @@
+schoolSessionRepository = $schoolSessionRepository;
+ }
+
+ /**
+ * Store a newly created resource in storage.
+ *
+ * @param SchoolSessionStoreRequest $request
+ * @return \Illuminate\Http\Response
+ */
+ public function store(SchoolSessionStoreRequest $request)
+ {
+ try {
+ $this->schoolSessionRepository->create($request->validated());
+
+ return back()->with('status', 'Session creation was successful!');
+ } catch (\Exception $e) {
+ return back()->withError($e->getMessage());
+ }
+
+ }
+
+ /**
+ * Save the selected school session as current session for
+ * browsing.
+ *
+ * @param SchoolSessionBrowseRequest $request
+ * @return \Illuminate\Http\Response
+ */
+ public function browse(SchoolSessionBrowseRequest $request)
+ {
+ try {
+ $this->schoolSessionRepository->browse($request->validated());
+
+ return back()->with('status', 'Browsing session set was successful!');
+ } catch (\Exception $e) {
+ return back()->withError($e->getMessage());
+ }
+
+ }
+}
diff --git a/app/Http/Controllers/SectionController.php b/app/Http/Controllers/SectionController.php
old mode 100755
new mode 100644
index f5cecf7e1..d4307664e
--- a/app/Http/Controllers/SectionController.php
+++ b/app/Http/Controllers/SectionController.php
@@ -2,37 +2,44 @@
namespace App\Http\Controllers;
-use App\Section as Section;
-use App\Http\Resources\SectionResource;
+use App\Http\Controllers\Controller;
+use App\Models\Section;
use Illuminate\Http\Request;
+use App\Traits\SchoolSession;
+use App\Interfaces\CourseInterface;
+use App\Interfaces\SectionInterface;
+use App\Http\Requests\SectionStoreRequest;
+use App\Interfaces\SchoolSessionInterface;
class SectionController extends Controller
{
+ use SchoolSession;
+
+ protected $schoolSectionRepository;
+ protected $schoolSessionRepository;
+ protected $courseRepository;
+
+ /**
+ * Create a new Controller instance
+ *
+ * @param SectionInterface $schoolSectionRepository
+ * @return void
+ */
+ public function __construct(SchoolSessionInterface $schoolSessionRepository, SectionInterface $schoolSectionRepository, CourseInterface $courseRepository) {
+ $this->schoolSectionRepository = $schoolSectionRepository;
+ $this->schoolSessionRepository = $schoolSessionRepository;
+ $this->courseRepository = $courseRepository;
+ }
+
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
- public function index()
- {
- $classes = \App\Myclass::bySchool(\Auth::user()->school->id)
- ->get();
- $classeIds = \App\Myclass::bySchool(\Auth::user()->school->id)
- ->pluck('id')
- ->toArray();
- $sections = \App\Section::whereIn('class_id',$classeIds)
- ->orderBy('section_number')
- ->get();
- $exams = \App\ExamForClass::whereIn('class_id',$classeIds)
- ->where('active', 1)
- ->groupBy('class_id')
- ->get();
- return view('school.sections',[
- 'classes'=>$classes,
- 'sections'=>$sections,
- 'exams'=>$exams
- ]);
- }
+ public function index()
+ {
+ //
+ }
/**
* Show the form for creating a new resource.
@@ -47,78 +54,83 @@ public function create()
/**
* Store a newly created resource in storage.
*
- * @param \Illuminate\Http\Request $request
+ * @param SectionStoreRequest $request
* @return \Illuminate\Http\Response
*/
- public function store(Request $request)
+ public function store(SectionStoreRequest $request)
{
- $request->validate([
- 'section_number' => 'required',
- 'room_number' => 'required|numeric',
- 'class_id' => 'required|numeric',
- ]);
- $tb = new Section;
- $tb->section_number = $request->section_number;
- $tb->room_number = $request->room_number;
- $tb->class_id = $request->class_id;
- $tb->save();
- return back()->with('status', __('Created'));
+ try {
+ $this->schoolSectionRepository->create($request->validated());
+
+ return back()->with('status', 'Section creation was successful!');
+ } catch (\Exception $e) {
+ return back()->withError($e->getMessage());
+ }
+ }
+
+ public function getByClassId(Request $request) {
+ $sections = $this->schoolSectionRepository->getAllByClassId($request->query('class_id', 0));
+ $courses = $this->courseRepository->getByClassId($request->query('class_id', 0));
+
+ return response()->json(['sections' => $sections, 'courses' => $courses]);
}
/**
* Display the specified resource.
*
- * @param int $id
+ * @param \App\Models\Section $section
* @return \Illuminate\Http\Response
*/
- public function show($id)
+ public function show(Section $section)
{
- return new SectionResource(Section::find($id));
+ //
}
/**
* Show the form for editing the specified resource.
*
- * @param int $id
+ * @param $section_id
* @return \Illuminate\Http\Response
*/
- public function edit($id)
+ public function edit($section_id)
{
- //
+ $current_school_session_id = $this->getSchoolCurrentSession();
+
+ $section = $this->schoolSectionRepository->findById($section_id);
+
+ $data = [
+ 'current_school_session_id' => $current_school_session_id,
+ 'section_id' => $section_id,
+ 'section' => $section,
+ ];
+ return view('sections.edit', $data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
- * @param int $id
* @return \Illuminate\Http\Response
*/
- public function update(Request $request, $id)
+ public function update(Request $request)
{
- $tb = Section::find($id);
- $tb->section_number = $request->section_number;
- $tb->room_number = $request->room_number;
- $tb->class_id = $request->class_id;
- return ($tb->save())?response()->json([
- 'status' => 'success'
- ]):response()->json([
- 'status' => 'error'
- ]);
+ try {
+ $this->schoolSectionRepository->update($request);
+
+ return back()->with('status', 'Section edit was successful!');
+ } catch (\Exception $e) {
+ return back()->withError($e->getMessage());
+ }
}
/**
* Remove the specified resource from storage.
*
- * @param int $id
+ * @param \App\Models\Section $section
* @return \Illuminate\Http\Response
*/
- public function destroy($id)
+ public function destroy(Section $section)
{
- return (Section::destroy($id))?response()->json([
- 'status' => 'success'
- ]):response()->json([
- 'status' => 'error'
- ]);
+ //
}
}
diff --git a/app/Http/Controllers/SemesterController.php b/app/Http/Controllers/SemesterController.php
new file mode 100644
index 000000000..9a7880c36
--- /dev/null
+++ b/app/Http/Controllers/SemesterController.php
@@ -0,0 +1,34 @@
+semesterRepository = $semesterRepository;
+ }
+
+ /**
+ * Store a newly created resource in storage.
+ *
+ * @param SemesterStoreRequest $request
+ * @return \Illuminate\Http\Response
+ */
+ public function store(SemesterStoreRequest $request)
+ {
+ try {
+ $this->semesterRepository->create($request->validated());
+
+ return back()->with('status', 'Semester creation was successful!');
+ } catch (\Exception $e) {
+ return back()->withError($e->getMessage());
+ }
+ }
+}
diff --git a/app/Http/Controllers/SettingController.php b/app/Http/Controllers/SettingController.php
deleted file mode 100755
index 84d662cbd..000000000
--- a/app/Http/Controllers/SettingController.php
+++ /dev/null
@@ -1,28 +0,0 @@
-school;
- $classes = Myclass::all();
- $sections = Section::all();
- $departments = Department::bySchool(\Auth::user()->school_id)->get();
- $teachers = User::select('departments.*', 'users.*')
- ->join('departments', 'departments.id', '=', 'users.department_id')
- ->where('role', 'teacher')
- ->orderBy('name', 'ASC')
- ->where('active', 1)
- ->get();
-
- return view('settings.index', compact('school', 'classes', 'sections', 'departments', 'teachers'));
- }
-}
diff --git a/app/Http/Controllers/FeeController.php b/app/Http/Controllers/StudentAcademicInfoController.php
old mode 100755
new mode 100644
similarity index 60%
rename from app/Http/Controllers/FeeController.php
rename to app/Http/Controllers/StudentAcademicInfoController.php
index 9dd939204..6030be4fa
--- a/app/Http/Controllers/FeeController.php
+++ b/app/Http/Controllers/StudentAcademicInfoController.php
@@ -2,9 +2,11 @@
namespace App\Http\Controllers;
+use App\Http\Controllers\Controller;
+use App\Models\StudentAcademicInfo;
use Illuminate\Http\Request;
-class FeeController extends Controller
+class StudentAcademicInfoController extends Controller
{
/**
* Display a listing of the resource.
@@ -13,8 +15,7 @@ class FeeController extends Controller
*/
public function index()
{
- $fees = \App\Fee::bySchool(\Auth::user()->school_id)->get();
- return view('fees.all',['fees'=>$fees]);
+ //
}
/**
@@ -24,7 +25,7 @@ public function index()
*/
public function create()
{
- return view('fees.create');
+ //
}
/**
@@ -35,24 +36,16 @@ public function create()
*/
public function store(Request $request)
{
- $request->validate([
- 'fee_name' => 'required|string|max:255',
- ]);
- $fee = new \App\Fee;
- $fee->fee_name = $request->fee_name;
- $fee->school_id = \Auth::user()->school_id;
- $fee->user_id = \Auth::user()->id;
- $fee->save();
- return back()->with('status', __('Saved'));
+ //
}
/**
* Display the specified resource.
*
- * @param int $id
+ * @param \App\Models\StudentAcademicInfo $studentAcademicInfo
* @return \Illuminate\Http\Response
*/
- public function show($id)
+ public function show(StudentAcademicInfo $studentAcademicInfo)
{
//
}
@@ -60,10 +53,10 @@ public function show($id)
/**
* Show the form for editing the specified resource.
*
- * @param int $id
+ * @param \App\Models\StudentAcademicInfo $studentAcademicInfo
* @return \Illuminate\Http\Response
*/
- public function edit($id)
+ public function edit(StudentAcademicInfo $studentAcademicInfo)
{
//
}
@@ -72,10 +65,10 @@ public function edit($id)
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
- * @param int $id
+ * @param \App\Models\StudentAcademicInfo $studentAcademicInfo
* @return \Illuminate\Http\Response
*/
- public function update(Request $request, $id)
+ public function update(Request $request, StudentAcademicInfo $studentAcademicInfo)
{
//
}
@@ -83,10 +76,10 @@ public function update(Request $request, $id)
/**
* Remove the specified resource from storage.
*
- * @param int $id
+ * @param \App\Models\StudentAcademicInfo $studentAcademicInfo
* @return \Illuminate\Http\Response
*/
- public function destroy($id)
+ public function destroy(StudentAcademicInfo $studentAcademicInfo)
{
//
}
diff --git a/app/Http/Controllers/PaymentController.php b/app/Http/Controllers/StudentParentInfoController.php
old mode 100755
new mode 100644
similarity index 64%
rename from app/Http/Controllers/PaymentController.php
rename to app/Http/Controllers/StudentParentInfoController.php
index e6bd2229c..ee06c4bc0
--- a/app/Http/Controllers/PaymentController.php
+++ b/app/Http/Controllers/StudentParentInfoController.php
@@ -2,10 +2,11 @@
namespace App\Http\Controllers;
-use App\Payment;
+use App\Http\Controllers\Controller;
+use App\Models\StudentParentInfo;
use Illuminate\Http\Request;
-class PaymentController extends Controller
+class StudentParentInfoController extends Controller
{
/**
* Display a listing of the resource.
@@ -14,10 +15,9 @@ class PaymentController extends Controller
*/
public function index()
{
- $receipts = Payment::where('custormer_id', auth()->user()->id)->get();
- return view('stripe.receipts',compact('receipts'));
+ //
}
-
+
/**
* Show the form for creating a new resource.
*
@@ -42,10 +42,10 @@ public function store(Request $request)
/**
* Display the specified resource.
*
- * @param \App\Payment $payment
+ * @param \App\Models\StudentParentInfo $studentParentInfo
* @return \Illuminate\Http\Response
*/
- public function show(Payment $payment)
+ public function show(StudentParentInfo $studentParentInfo)
{
//
}
@@ -53,10 +53,10 @@ public function show(Payment $payment)
/**
* Show the form for editing the specified resource.
*
- * @param \App\Payment $payment
+ * @param \App\Models\StudentParentInfo $studentParentInfo
* @return \Illuminate\Http\Response
*/
- public function edit(Payment $payment)
+ public function edit(StudentParentInfo $studentParentInfo)
{
//
}
@@ -65,10 +65,10 @@ public function edit(Payment $payment)
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
- * @param \App\Payment $payment
+ * @param \App\Models\StudentParentInfo $studentParentInfo
* @return \Illuminate\Http\Response
*/
- public function update(Request $request, Payment $payment)
+ public function update(Request $request, StudentParentInfo $studentParentInfo)
{
//
}
@@ -76,10 +76,10 @@ public function update(Request $request, Payment $payment)
/**
* Remove the specified resource from storage.
*
- * @param \App\Payment $payment
+ * @param \App\Models\StudentParentInfo $studentParentInfo
* @return \Illuminate\Http\Response
*/
- public function destroy(Payment $payment)
+ public function destroy(StudentParentInfo $studentParentInfo)
{
//
}
diff --git a/app/Http/Controllers/SyllabusController.php b/app/Http/Controllers/SyllabusController.php
old mode 100755
new mode 100644
index 836ff63a0..83f3ad1fc
--- a/app/Http/Controllers/SyllabusController.php
+++ b/app/Http/Controllers/SyllabusController.php
@@ -2,91 +2,107 @@
namespace App\Http\Controllers;
-use App\Syllabus as Syllabus;
-use App\Http\Resources\SyllabusResource;
+use App\Http\Controllers\Controller;
+use App\Models\Syllabus;
use Illuminate\Http\Request;
-use Illuminate\Support\Facades\Schema;
+use App\Traits\SchoolSession;
+use App\Http\Requests\StoreFileRequest;
+use App\Interfaces\SchoolClassInterface;
+use App\Repositories\SyllabusRepository;
+use App\Interfaces\SchoolSessionInterface;
class SyllabusController extends Controller
{
+ use SchoolSession;
+ protected $schoolSessionRepository;
+ protected $schoolClassRepository;
+
+ public function __construct(
+ SchoolSessionInterface $schoolSessionRepository,
+ SchoolClassInterface $schoolClassRepository
+ ) {
+ $this->schoolSessionRepository = $schoolSessionRepository;
+ $this->schoolClassRepository = $schoolClassRepository;
+ }
+
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
- public function index()
- {
- $files = Syllabus::with('myclass')
- ->bySchool(\Auth::user()->school_id)
- ->where('active',1)
- ->get();
- $classes = \App\Myclass::bySchool(\Auth::user()->school->id)
- ->get();
- return view('syllabus.course-syllabus',['files'=>$files,'classes'=>$classes,'class_id' => 0]);
- }
+ public function index(Request $request)
+ {
+ $course_id = $request->query('course_id', 0);
+ $syllabusRepository = new SyllabusRepository();
+ $syllabi = $syllabusRepository->getByCourse($course_id);
+
+ $data = [
+ 'syllabi' => $syllabi
+ ];
+
+ return view('syllabi.show', $data);
+ }
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
- public function create(int $class_id)
+ public function create()
{
- try{
- if(Schema::hasColumn('syllabuses','class_id')){
- $files = Syllabus::with('myclass')
- ->bySchool(\Auth::user()->school_id)
- ->where('class_id', $class_id)
- ->where('active',1)
- ->get();
- $classes = \App\Myclass::bySchool(\Auth::user()->school->id)
- ->get();
- } else {
- return 'class_id
column missing. Run php artisan migrate
';
- }
- } catch(Exception $ex){
- return 'Something went wrong!!';
- }
+ $current_school_session_id = $this->getSchoolCurrentSession();
- return view('syllabus.course-syllabus',['files'=>$files,'classes'=>$classes,'class_id'=>$class_id]);
+ $school_classes = $this->schoolClassRepository->getAllBySession($current_school_session_id);
+
+ $data = [
+ 'current_school_session_id' => $current_school_session_id,
+ 'school_classes' => $school_classes,
+ ];
+ return view('syllabi.create', $data);
}
/**
* Store a newly created resource in storage.
*
- * @param \Illuminate\Http\Request $request
+ * @param StoreFileRequest $request
* @return \Illuminate\Http\Response
*/
- public function store(Request $request)
+ public function store(StoreFileRequest $request)
{
- $tb = new Syllabus;
- $tb->file_path = $request->file_path;
- $tb->title = $request->title;
- $tb->active = 1;
- $tb->school_id = \Auth::user()->school_id;
- $tb->user_id = \Auth::user()->id;
- $tb->save();
- return back()->with('status', __('Uploaded'));
+ $validatedRequest = $request->validated();
+ $validatedRequest['class_id'] = $request->class_id;
+ $validatedRequest['course_id'] = $request->course_id;
+ $validatedRequest['syllabus_name'] = $request->syllabus_name;
+ $validatedRequest['session_id'] = $this->getSchoolCurrentSession();
+
+ try {
+ $syllabusRepository = new SyllabusRepository();
+ $syllabusRepository->store($validatedRequest);
+
+ return back()->with('status', 'Creating syllabus was successful!');
+ } catch (\Exception $e) {
+ return back()->withError($e->getMessage());
+ }
}
/**
* Display the specified resource.
*
- * @param int $id
+ * @param \App\Models\Syllabus $syllabus
* @return \Illuminate\Http\Response
*/
- public function show($id)
+ public function show(Syllabus $syllabus)
{
- return new SyllabusResource(Syllabus::find($id));
+ //
}
/**
* Show the form for editing the specified resource.
*
- * @param int $id
+ * @param \App\Models\Syllabus $syllabus
* @return \Illuminate\Http\Response
*/
- public function edit($id)
+ public function edit(Syllabus $syllabus)
{
//
}
@@ -95,29 +111,22 @@ public function edit($id)
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
- * @param Request $request
+ * @param \App\Models\Syllabus $syllabus
* @return \Illuminate\Http\Response
*/
- public function update(Request $request)
+ public function update(Request $request, Syllabus $syllabus)
{
- $tb = Syllabus::find($request->id);
- $tb->active = 0;
- $tb->save();
- return back()->with('status',__('File removed'));
+ //
}
/**
* Remove the specified resource from storage.
*
- * @param int $id
+ * @param \App\Models\Syllabus $syllabus
* @return \Illuminate\Http\Response
*/
- public function destroy($id)
+ public function destroy(Syllabus $syllabus)
{
- return (Syllabus::destroy($id))?response()->json([
- 'status' => 'success'
- ]):response()->json([
- 'status' => 'error'
- ]);
+ //
}
}
diff --git a/app/Http/Controllers/UploadController.php b/app/Http/Controllers/UploadController.php
deleted file mode 100755
index a70ffe7e6..000000000
--- a/app/Http/Controllers/UploadController.php
+++ /dev/null
@@ -1,151 +0,0 @@
-validate([
- 'upload_type' => 'required',
- 'file' => 'required|max:10000|mimes:doc,docx,png,jpeg,pdf,xlsx,xls,ppt,pptx,txt'
- ]);
-
- $upload_dir = 'school-'.auth()->user()->school_id.'/'.date("Y").'/'.$request->upload_type;
-
- $path = \Storage::disk('public')->putFile($upload_dir, $request->file('file'));//$request->file('file')->store($upload_dir);
-
- if($request->upload_type == 'notice'){
- $request->validate([
- 'title' => 'required|string',
- ]);
-
- $tb = new \App\Notice;
- $tb->file_path = 'storage/'.$path;
- $tb->title = $request->title;
- $tb->active = 1;
- $tb->school_id = auth()->user()->school_id;
- $tb->user_id = auth()->user()->id;
- $tb->save();
- }else if($request->upload_type == 'event'){
- $request->validate([
- 'title' => 'required|string',
- ]);
- $tb = new \App\Event;
- $tb->file_path = 'storage/'.$path;
- $tb->title = $request->title;
- $tb->active = 1;
- $tb->school_id = auth()->user()->school_id;
- $tb->user_id = auth()->user()->id;
- $tb->save();
- } else if($request->upload_type == 'routine'){
- $request->validate([
- 'title' => 'required|string',
- ]);
- $tb = new \App\Routine;
- $tb->file_path = 'storage/'.$path;
- $tb->title = $request->title;
- $tb->active = 1;
- $tb->school_id = auth()->user()->school_id;
- $tb->section_id = $request->section_id;
- $tb->user_id = auth()->user()->id;
- $tb->save();
- } else if($request->upload_type == 'syllabus'){
- $request->validate([
- 'title' => 'required|string',
- ]);
- $tb = new \App\Syllabus;
- $tb->file_path = 'storage/'.$path;
- $tb->title = $request->title;
- $tb->active = 1;
- $tb->school_id = auth()->user()->school_id;
- $tb->class_id = $request->class_id;
- $tb->user_id = auth()->user()->id;
- $tb->save();
- } else if($request->upload_type == 'certificate'){
- $request->validate([
- 'title' => 'required|string',
- 'given_to' => 'required|int',
- ]);
-
- $tb = new \App\Certificate;
- $tb->file_path = 'storage/'.$path;
- $tb->title = $request->title;
- $tb->given_to = $request->given_to;
- $tb->active = 1;
- $tb->school_id = auth()->user()->school_id;
- $tb->user_id = auth()->user()->id;
- $tb->save();
- } else if($request->upload_type == 'profile' && $request->user_id > 0){
- $tb = \App\User::find($request->user_id);
- $tb->pic_path = 'storage/'.$path;
- $tb->save();
- }
-
- return ($path)?response()->json([
- 'imgUrlpath' => url('storage/'.$path),
- 'path' => 'storage/'.$path,
- 'error' => false
- ]):response()->json([
- 'imgUrlpath' => null,
- 'path' => null,
- 'error' => true
- ]);
- // $options = ['upload_dir'=>'','upload_url'=>''];
- // new UploadHandler($options);
- }
-
- public function import(Request $request){
- $request->validate([
- 'file' => 'required|max:10000|mimes:xlsx,xls',
- ]);
-
- $path = $request->file('file')->getRealPath();
-
- try{
-
- if($request->type == 'student')
- Excel::import(new StudentsImport, $path);
- else if($request->type == 'teacher')
- Excel::import(new TeachersImport, $path);
-
- } catch (\Maatwebsite\Excel\Validators\ValidationException $e) {
- $failures = $e->failures();
-
- foreach ($failures as $failure) {
- $failure->row(); // row that went wrong
- $failure->attribute(); // either heading key (if using heading row concern) or column index
- $failure->errors(); // Actual error messages from Laravel validator
- $failure->values(); // The values of the row that has failed.
- }
- }
-
- return back()->with('status', __('Students are added successfully!'));
- }
-
- public function export(Request $request){
- if($request->type == 'student')
- return Excel::download(new StudentsExport($request->year), date('Y').'-students.xlsx');
- else if($request->type == 'teacher')
- return Excel::download(new TeachersExport($request->year), date('Y').'-teachers.xlsx');
- }
-}
diff --git a/app/Http/Controllers/UploadHandler.php b/app/Http/Controllers/UploadHandler.php
deleted file mode 100755
index 147baaf21..000000000
--- a/app/Http/Controllers/UploadHandler.php
+++ /dev/null
@@ -1,1413 +0,0 @@
- 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
- 2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
- 3 => 'The uploaded file was only partially uploaded',
- 4 => 'No file was uploaded',
- 6 => 'Missing a temporary folder',
- 7 => 'Failed to write file to disk',
- 8 => 'A PHP extension stopped the file upload',
- 'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini',
- 'max_file_size' => 'File is too big',
- 'min_file_size' => 'File is too small',
- 'accept_file_types' => 'Filetype not allowed',
- 'max_number_of_files' => 'Maximum number of files exceeded',
- 'max_width' => 'Image exceeds maximum width',
- 'min_width' => 'Image requires a minimum width',
- 'max_height' => 'Image exceeds maximum height',
- 'min_height' => 'Image requires a minimum height',
- 'abort' => 'File upload aborted',
- 'image_resize' => 'Failed to resize image'
- );
-
- protected $image_objects = array();
-
- public function __construct($options = null, $initialize = true, $error_messages = null) {
- $this->response = array();
- $this->options = array(
- 'script_url' => $this->get_full_url().'/'.$this->basename($this->get_server_var('SCRIPT_NAME')),
- 'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/files/',
- 'upload_url' => $this->get_full_url().'/files/',
- 'input_stream' => 'php://input',
- 'user_dirs' => false,
- 'mkdir_mode' => 0755,
- 'param_name' => 'files',
- // Set the following option to 'POST', if your server does not support
- // DELETE requests. This is a parameter sent to the client:
- 'delete_type' => 'DELETE',
- 'access_control_allow_origin' => '*',
- 'access_control_allow_credentials' => false,
- 'access_control_allow_methods' => array(
- 'OPTIONS',
- 'HEAD',
- 'GET',
- 'POST',
- 'PUT',
- 'PATCH',
- 'DELETE'
- ),
- 'access_control_allow_headers' => array(
- 'Content-Type',
- 'Content-Range',
- 'Content-Disposition'
- ),
- // By default, allow redirects to the referer protocol+host:
- 'redirect_allow_target' => '/^'.preg_quote(
- parse_url($this->get_server_var('HTTP_REFERER'), PHP_URL_SCHEME)
- .'://'
- .parse_url($this->get_server_var('HTTP_REFERER'), PHP_URL_HOST)
- .'/', // Trailing slash to not match subdomains by mistake
- '/' // preg_quote delimiter param
- ).'/',
- // Enable to provide file downloads via GET requests to the PHP script:
- // 1. Set to 1 to download files via readfile method through PHP
- // 2. Set to 2 to send a X-Sendfile header for lighttpd/Apache
- // 3. Set to 3 to send a X-Accel-Redirect header for nginx
- // If set to 2 or 3, adjust the upload_url option to the base path of
- // the redirect parameter, e.g. '/files/'.
- 'download_via_php' => false,
- // Read files in chunks to avoid memory limits when download_via_php
- // is enabled, set to 0 to disable chunked reading of files:
- 'readfile_chunk_size' => 10 * 1024 * 1024, // 10 MiB
- // Defines which files can be displayed inline when downloaded:
- 'inline_file_types' => '/\.(gif|jpe?g|png)$/i',
- // Defines which files (based on their names) are accepted for upload:
- 'accept_file_types' => '/.+$/i',
- // The php.ini settings upload_max_filesize and post_max_size
- // take precedence over the following max_file_size setting:
- 'max_file_size' => null,
- 'min_file_size' => 1,
- // The maximum number of files for the upload directory:
- 'max_number_of_files' => null,
- // Defines which files are handled as image files:
- 'image_file_types' => '/\.(gif|jpe?g|png)$/i',
- // Use exif_imagetype on all files to correct file extensions:
- 'correct_image_extensions' => false,
- // Image resolution restrictions:
- 'max_width' => null,
- 'max_height' => null,
- 'min_width' => 1,
- 'min_height' => 1,
- // Set the following option to false to enable resumable uploads:
- 'discard_aborted_uploads' => true,
- // Set to 0 to use the GD library to scale and orient images,
- // set to 1 to use imagick (if installed, falls back to GD),
- // set to 2 to use the ImageMagick convert binary directly:
- 'image_library' => 1,
- // Uncomment the following to define an array of resource limits
- // for imagick:
- /*
- 'imagick_resource_limits' => array(
- imagick::RESOURCETYPE_MAP => 32,
- imagick::RESOURCETYPE_MEMORY => 32
- ),
- */
- // Command or path for to the ImageMagick convert binary:
- 'convert_bin' => 'convert',
- // Uncomment the following to add parameters in front of each
- // ImageMagick convert call (the limit constraints seem only
- // to have an effect if put in front):
- /*
- 'convert_params' => '-limit memory 32MiB -limit map 32MiB',
- */
- // Command or path for to the ImageMagick identify binary:
- 'identify_bin' => 'identify',
- 'image_versions' => array(
- // The empty image version key defines options for the original image.
- // Keep in mind: these image manipulations are inherited by all other image versions from this point onwards.
- // Also note that the property 'no_cache' is not inherited, since it's not a manipulation.
- '' => array(
- // Automatically rotate images based on EXIF meta data:
- 'auto_orient' => true
- ),
- // You can add arrays to generate different versions.
- // The name of the key is the name of the version (example: 'medium').
- // the array contains the options to apply.
- /*
- 'medium' => array(
- 'max_width' => 800,
- 'max_height' => 600
- ),
- */
- 'thumbnail' => array(
- // Uncomment the following to use a defined directory for the thumbnails
- // instead of a subdirectory based on the version identifier.
- // Make sure that this directory doesn't allow execution of files if you
- // don't pose any restrictions on the type of uploaded files, e.g. by
- // copying the .htaccess file from the files directory for Apache:
- //'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/thumb/',
- //'upload_url' => $this->get_full_url().'/thumb/',
- // Uncomment the following to force the max
- // dimensions and e.g. create square thumbnails:
- // 'auto_orient' => true,
- // 'crop' => true,
- // 'jpeg_quality' => 70,
- // 'no_cache' => true, (there's a caching option, but this remembers thumbnail sizes from a previous action!)
- // 'strip' => true, (this strips EXIF tags, such as geolocation)
- 'max_width' => 80, // either specify width, or set to 0. Then width is automatically adjusted - keeping aspect ratio to a specified max_height.
- 'max_height' => 80 // either specify height, or set to 0. Then height is automatically adjusted - keeping aspect ratio to a specified max_width.
- )
- ),
- 'print_response' => true
- );
- if ($options) {
- $this->options = $options + $this->options;
- }
- if ($error_messages) {
- $this->error_messages = $error_messages + $this->error_messages;
- }
- if ($initialize) {
- $this->initialize();
- }
- }
-
- protected function initialize() {
- switch ($this->get_server_var('REQUEST_METHOD')) {
- case 'OPTIONS':
- case 'HEAD':
- $this->head();
- break;
- case 'GET':
- $this->get($this->options['print_response']);
- break;
- case 'PATCH':
- case 'PUT':
- case 'POST':
- $this->post($this->options['print_response']);
- break;
- case 'DELETE':
- $this->delete($this->options['print_response']);
- break;
- default:
- $this->header('HTTP/1.1 405 Method Not Allowed');
- }
- }
-
- protected function get_full_url() {
- $https = !empty($_SERVER['HTTPS']) && strcasecmp($_SERVER['HTTPS'], 'on') === 0 ||
- !empty($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
- strcasecmp($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') === 0;
- return
- ($https ? 'https://' : 'http://').
- (!empty($_SERVER['REMOTE_USER']) ? $_SERVER['REMOTE_USER'].'@' : '').
- (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ($_SERVER['SERVER_NAME'].
- ($https && $_SERVER['SERVER_PORT'] === 443 ||
- $_SERVER['SERVER_PORT'] === 80 ? '' : ':'.$_SERVER['SERVER_PORT']))).
- substr($_SERVER['SCRIPT_NAME'],0, strrpos($_SERVER['SCRIPT_NAME'], '/'));
- }
-
- protected function get_user_id() {
- @session_start();
- return session_id();
- }
-
- protected function get_user_path() {
- if ($this->options['user_dirs']) {
- return $this->get_user_id().'/';
- }
- return '';
- }
-
- protected function get_upload_path($file_name = null, $version = null) {
- $file_name = $file_name ? $file_name : '';
- if (empty($version)) {
- $version_path = '';
- } else {
- $version_dir = @$this->options['image_versions'][$version]['upload_dir'];
- if ($version_dir) {
- return $version_dir.$this->get_user_path().$file_name;
- }
- $version_path = $version.'/';
- }
- return $this->options['upload_dir'].$this->get_user_path()
- .$version_path.$file_name;
- }
-
- protected function get_query_separator($url) {
- return strpos($url, '?') === false ? '?' : '&';
- }
-
- protected function get_download_url($file_name, $version = null, $direct = false) {
- if (!$direct && $this->options['download_via_php']) {
- $url = $this->options['script_url']
- .$this->get_query_separator($this->options['script_url'])
- .$this->get_singular_param_name()
- .'='.rawurlencode($file_name);
- if ($version) {
- $url .= '&version='.rawurlencode($version);
- }
- return $url.'&download=1';
- }
- if (empty($version)) {
- $version_path = '';
- } else {
- $version_url = @$this->options['image_versions'][$version]['upload_url'];
- if ($version_url) {
- return $version_url.$this->get_user_path().rawurlencode($file_name);
- }
- $version_path = rawurlencode($version).'/';
- }
- return $this->options['upload_url'].$this->get_user_path()
- .$version_path.rawurlencode($file_name);
- }
-
- protected function set_additional_file_properties($file) {
- $file->deleteUrl = $this->options['script_url']
- .$this->get_query_separator($this->options['script_url'])
- .$this->get_singular_param_name()
- .'='.rawurlencode($file->name);
- $file->deleteType = $this->options['delete_type'];
- if ($file->deleteType !== 'DELETE') {
- $file->deleteUrl .= '&_method=DELETE';
- }
- if ($this->options['access_control_allow_credentials']) {
- $file->deleteWithCredentials = true;
- }
- }
-
- // Fix for overflowing signed 32 bit integers,
- // works for sizes up to 2^32-1 bytes (4 GiB - 1):
- protected function fix_integer_overflow($size) {
- if ($size < 0) {
- $size += 2.0 * (PHP_INT_MAX + 1);
- }
- return $size;
- }
-
- protected function get_file_size($file_path, $clear_stat_cache = false) {
- if ($clear_stat_cache) {
- if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
- clearstatcache(true, $file_path);
- } else {
- clearstatcache();
- }
- }
- return $this->fix_integer_overflow(filesize($file_path));
- }
-
- protected function is_valid_file_object($file_name) {
- $file_path = $this->get_upload_path($file_name);
- if (is_file($file_path) && $file_name[0] !== '.') {
- return true;
- }
- return false;
- }
-
- protected function get_file_object($file_name) {
- if ($this->is_valid_file_object($file_name)) {
- $file = new \stdClass();
- $file->name = $file_name;
- $file->size = $this->get_file_size(
- $this->get_upload_path($file_name)
- );
- $file->url = $this->get_download_url($file->name);
- foreach ($this->options['image_versions'] as $version => $options) {
- if (!empty($version)) {
- if (is_file($this->get_upload_path($file_name, $version))) {
- $file->{$version.'Url'} = $this->get_download_url(
- $file->name,
- $version
- );
- }
- }
- }
- $this->set_additional_file_properties($file);
- return $file;
- }
- return null;
- }
-
- protected function get_file_objects($iteration_method = 'get_file_object') {
- $upload_dir = $this->get_upload_path();
- if (!is_dir($upload_dir)) {
- return array();
- }
- return array_values(array_filter(array_map(
- array($this, $iteration_method),
- scandir($upload_dir)
- )));
- }
-
- protected function count_file_objects() {
- return count($this->get_file_objects('is_valid_file_object'));
- }
-
- protected function get_error_message($error) {
- return isset($this->error_messages[$error]) ?
- $this->error_messages[$error] : $error;
- }
-
- public function get_config_bytes($val) {
- $val = trim($val);
- $last = strtolower($val[strlen($val)-1]);
- $val = (int)$val;
- switch ($last) {
- case 'g':
- $val *= 1024;
- case 'm':
- $val *= 1024;
- case 'k':
- $val *= 1024;
- }
- return $this->fix_integer_overflow($val);
- }
-
- protected function validate($uploaded_file, $file, $error, $index) {
- if ($error) {
- $file->error = $this->get_error_message($error);
- return false;
- }
- $content_length = $this->fix_integer_overflow(
- (int)$this->get_server_var('CONTENT_LENGTH')
- );
- $post_max_size = $this->get_config_bytes(ini_get('post_max_size'));
- if ($post_max_size && ($content_length > $post_max_size)) {
- $file->error = $this->get_error_message('post_max_size');
- return false;
- }
- if (!preg_match($this->options['accept_file_types'], $file->name)) {
- $file->error = $this->get_error_message('accept_file_types');
- return false;
- }
- if ($uploaded_file && is_uploaded_file($uploaded_file)) {
- $file_size = $this->get_file_size($uploaded_file);
- } else {
- $file_size = $content_length;
- }
- if ($this->options['max_file_size'] && (
- $file_size > $this->options['max_file_size'] ||
- $file->size > $this->options['max_file_size'])
- ) {
- $file->error = $this->get_error_message('max_file_size');
- return false;
- }
- if ($this->options['min_file_size'] &&
- $file_size < $this->options['min_file_size']) {
- $file->error = $this->get_error_message('min_file_size');
- return false;
- }
- if (is_int($this->options['max_number_of_files']) &&
- ($this->count_file_objects() >= $this->options['max_number_of_files']) &&
- // Ignore additional chunks of existing files:
- !is_file($this->get_upload_path($file->name))) {
- $file->error = $this->get_error_message('max_number_of_files');
- return false;
- }
- $max_width = @$this->options['max_width'];
- $max_height = @$this->options['max_height'];
- $min_width = @$this->options['min_width'];
- $min_height = @$this->options['min_height'];
- if (($max_width || $max_height || $min_width || $min_height)
- && preg_match($this->options['image_file_types'], $file->name)) {
- list($img_width, $img_height) = $this->get_image_size($uploaded_file);
-
- // If we are auto rotating the image by default, do the checks on
- // the correct orientation
- if (
- @$this->options['image_versions']['']['auto_orient'] &&
- function_exists('exif_read_data') &&
- ($exif = @exif_read_data($uploaded_file)) &&
- (((int) @$exif['Orientation']) >= 5)
- ) {
- $tmp = $img_width;
- $img_width = $img_height;
- $img_height = $tmp;
- unset($tmp);
- }
-
- }
- if (!empty($img_width)) {
- if ($max_width && $img_width > $max_width) {
- $file->error = $this->get_error_message('max_width');
- return false;
- }
- if ($max_height && $img_height > $max_height) {
- $file->error = $this->get_error_message('max_height');
- return false;
- }
- if ($min_width && $img_width < $min_width) {
- $file->error = $this->get_error_message('min_width');
- return false;
- }
- if ($min_height && $img_height < $min_height) {
- $file->error = $this->get_error_message('min_height');
- return false;
- }
- }
- return true;
- }
-
- protected function upcount_name_callback($matches) {
- $index = isset($matches[1]) ? ((int)$matches[1]) + 1 : 1;
- $ext = isset($matches[2]) ? $matches[2] : '';
- return ' ('.$index.')'.$ext;
- }
-
- protected function upcount_name($name) {
- return preg_replace_callback(
- '/(?:(?: \(([\d]+)\))?(\.[^.]+))?$/',
- array($this, 'upcount_name_callback'),
- $name,
- 1
- );
- }
-
- protected function get_unique_filename($file_path, $name, $size, $type, $error,
- $index, $content_range) {
- while(is_dir($this->get_upload_path($name))) {
- $name = $this->upcount_name($name);
- }
- // Keep an existing filename if this is part of a chunked upload:
- $uploaded_bytes = $this->fix_integer_overflow((int)$content_range[1]);
- while (is_file($this->get_upload_path($name))) {
- if ($uploaded_bytes === $this->get_file_size(
- $this->get_upload_path($name))) {
- break;
- }
- $name = $this->upcount_name($name);
- }
- return $name;
- }
-
- protected function fix_file_extension($file_path, $name, $size, $type, $error,
- $index, $content_range) {
- // Add missing file extension for known image types:
- if (strpos($name, '.') === false &&
- preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) {
- $name .= '.'.$matches[1];
- }
- if ($this->options['correct_image_extensions'] &&
- function_exists('exif_imagetype')) {
- switch (@exif_imagetype($file_path)){
- case IMAGETYPE_JPEG:
- $extensions = array('jpg', 'jpeg');
- break;
- case IMAGETYPE_PNG:
- $extensions = array('png');
- break;
- case IMAGETYPE_GIF:
- $extensions = array('gif');
- break;
- }
- // Adjust incorrect image file extensions:
- if (!empty($extensions)) {
- $parts = explode('.', $name);
- $extIndex = count($parts) - 1;
- $ext = strtolower(@$parts[$extIndex]);
- if (!in_array($ext, $extensions)) {
- $parts[$extIndex] = $extensions[0];
- $name = implode('.', $parts);
- }
- }
- }
- return $name;
- }
-
- protected function trim_file_name($file_path, $name, $size, $type, $error,
- $index, $content_range) {
- // Remove path information and dots around the filename, to prevent uploading
- // into different directories or replacing hidden system files.
- // Also remove control characters and spaces (\x00..\x20) around the filename:
- $name = trim($this->basename(stripslashes($name)), ".\x00..\x20");
- // Use a timestamp for empty filenames:
- if (!$name) {
- $name = str_replace('.', '-', microtime(true));
- }
- return $name;
- }
-
- protected function get_file_name($file_path, $name, $size, $type, $error,
- $index, $content_range) {
- $name = $this->trim_file_name($file_path, $name, $size, $type, $error,
- $index, $content_range);
- return $this->get_unique_filename(
- $file_path,
- $this->fix_file_extension($file_path, $name, $size, $type, $error,
- $index, $content_range),
- $size,
- $type,
- $error,
- $index,
- $content_range
- );
- }
-
- protected function get_scaled_image_file_paths($file_name, $version) {
- $file_path = $this->get_upload_path($file_name);
- if (!empty($version)) {
- $version_dir = $this->get_upload_path(null, $version);
- if (!is_dir($version_dir)) {
- mkdir($version_dir, $this->options['mkdir_mode'], true);
- }
- $new_file_path = $version_dir.'/'.$file_name;
- } else {
- $new_file_path = $file_path;
- }
- return array($file_path, $new_file_path);
- }
-
- protected function gd_get_image_object($file_path, $func, $no_cache = false) {
- if (empty($this->image_objects[$file_path]) || $no_cache) {
- $this->gd_destroy_image_object($file_path);
- $this->image_objects[$file_path] = $func($file_path);
- }
- return $this->image_objects[$file_path];
- }
-
- protected function gd_set_image_object($file_path, $image) {
- $this->gd_destroy_image_object($file_path);
- $this->image_objects[$file_path] = $image;
- }
-
- protected function gd_destroy_image_object($file_path) {
- $image = (isset($this->image_objects[$file_path])) ? $this->image_objects[$file_path] : null ;
- return $image && imagedestroy($image);
- }
-
- protected function gd_imageflip($image, $mode) {
- if (function_exists('imageflip')) {
- return imageflip($image, $mode);
- }
- $new_width = $src_width = imagesx($image);
- $new_height = $src_height = imagesy($image);
- $new_img = imagecreatetruecolor($new_width, $new_height);
- $src_x = 0;
- $src_y = 0;
- switch ($mode) {
- case '1': // flip on the horizontal axis
- $src_y = $new_height - 1;
- $src_height = -$new_height;
- break;
- case '2': // flip on the vertical axis
- $src_x = $new_width - 1;
- $src_width = -$new_width;
- break;
- case '3': // flip on both axes
- $src_y = $new_height - 1;
- $src_height = -$new_height;
- $src_x = $new_width - 1;
- $src_width = -$new_width;
- break;
- default:
- return $image;
- }
- imagecopyresampled(
- $new_img,
- $image,
- 0,
- 0,
- $src_x,
- $src_y,
- $new_width,
- $new_height,
- $src_width,
- $src_height
- );
- return $new_img;
- }
-
- protected function gd_orient_image($file_path, $src_img) {
- if (!function_exists('exif_read_data')) {
- return false;
- }
- $exif = @exif_read_data($file_path);
- if ($exif === false) {
- return false;
- }
- $orientation = (int)@$exif['Orientation'];
- if ($orientation < 2 || $orientation > 8) {
- return false;
- }
- switch ($orientation) {
- case 2:
- $new_img = $this->gd_imageflip(
- $src_img,
- defined('IMG_FLIP_VERTICAL') ? IMG_FLIP_VERTICAL : 2
- );
- break;
- case 3:
- $new_img = imagerotate($src_img, 180, 0);
- break;
- case 4:
- $new_img = $this->gd_imageflip(
- $src_img,
- defined('IMG_FLIP_HORIZONTAL') ? IMG_FLIP_HORIZONTAL : 1
- );
- break;
- case 5:
- $tmp_img = $this->gd_imageflip(
- $src_img,
- defined('IMG_FLIP_HORIZONTAL') ? IMG_FLIP_HORIZONTAL : 1
- );
- $new_img = imagerotate($tmp_img, 270, 0);
- imagedestroy($tmp_img);
- break;
- case 6:
- $new_img = imagerotate($src_img, 270, 0);
- break;
- case 7:
- $tmp_img = $this->gd_imageflip(
- $src_img,
- defined('IMG_FLIP_VERTICAL') ? IMG_FLIP_VERTICAL : 2
- );
- $new_img = imagerotate($tmp_img, 270, 0);
- imagedestroy($tmp_img);
- break;
- case 8:
- $new_img = imagerotate($src_img, 90, 0);
- break;
- default:
- return false;
- }
- $this->gd_set_image_object($file_path, $new_img);
- return true;
- }
-
- protected function gd_create_scaled_image($file_name, $version, $options) {
- if (!function_exists('imagecreatetruecolor')) {
- error_log('Function not found: imagecreatetruecolor');
- return false;
- }
- list($file_path, $new_file_path) =
- $this->get_scaled_image_file_paths($file_name, $version);
- $type = strtolower(substr(strrchr($file_name, '.'), 1));
- switch ($type) {
- case 'jpg':
- case 'jpeg':
- $src_func = 'imagecreatefromjpeg';
- $write_func = 'imagejpeg';
- $image_quality = isset($options['jpeg_quality']) ?
- $options['jpeg_quality'] : 75;
- break;
- case 'gif':
- $src_func = 'imagecreatefromgif';
- $write_func = 'imagegif';
- $image_quality = null;
- break;
- case 'png':
- $src_func = 'imagecreatefrompng';
- $write_func = 'imagepng';
- $image_quality = isset($options['png_quality']) ?
- $options['png_quality'] : 9;
- break;
- default:
- return false;
- }
- $src_img = $this->gd_get_image_object(
- $file_path,
- $src_func,
- !empty($options['no_cache'])
- );
- $image_oriented = false;
- if (!empty($options['auto_orient']) && $this->gd_orient_image(
- $file_path,
- $src_img
- )) {
- $image_oriented = true;
- $src_img = $this->gd_get_image_object(
- $file_path,
- $src_func
- );
- }
- $max_width = $img_width = imagesx($src_img);
- $max_height = $img_height = imagesy($src_img);
- if (!empty($options['max_width'])) {
- $max_width = $options['max_width'];
- }
- if (!empty($options['max_height'])) {
- $max_height = $options['max_height'];
- }
- $scale = min(
- $max_width / $img_width,
- $max_height / $img_height
- );
- if ($scale >= 1) {
- if ($image_oriented) {
- return $write_func($src_img, $new_file_path, $image_quality);
- }
- if ($file_path !== $new_file_path) {
- return copy($file_path, $new_file_path);
- }
- return true;
- }
- if (empty($options['crop'])) {
- $new_width = $img_width * $scale;
- $new_height = $img_height * $scale;
- $dst_x = 0;
- $dst_y = 0;
- $new_img = imagecreatetruecolor($new_width, $new_height);
- } else {
- if (($img_width / $img_height) >= ($max_width / $max_height)) {
- $new_width = $img_width / ($img_height / $max_height);
- $new_height = $max_height;
- } else {
- $new_width = $max_width;
- $new_height = $img_height / ($img_width / $max_width);
- }
- $dst_x = 0 - ($new_width - $max_width) / 2;
- $dst_y = 0 - ($new_height - $max_height) / 2;
- $new_img = imagecreatetruecolor($max_width, $max_height);
- }
- // Handle transparency in GIF and PNG images:
- switch ($type) {
- case 'gif':
- case 'png':
- imagecolortransparent($new_img, imagecolorallocate($new_img, 0, 0, 0));
- case 'png':
- imagealphablending($new_img, false);
- imagesavealpha($new_img, true);
- break;
- }
- $success = imagecopyresampled(
- $new_img,
- $src_img,
- $dst_x,
- $dst_y,
- 0,
- 0,
- $new_width,
- $new_height,
- $img_width,
- $img_height
- ) && $write_func($new_img, $new_file_path, $image_quality);
- $this->gd_set_image_object($file_path, $new_img);
- return $success;
- }
-
- protected function imagick_get_image_object($file_path, $no_cache = false) {
- if (empty($this->image_objects[$file_path]) || $no_cache) {
- $this->imagick_destroy_image_object($file_path);
- $image = new \Imagick();
- if (!empty($this->options['imagick_resource_limits'])) {
- foreach ($this->options['imagick_resource_limits'] as $type => $limit) {
- $image->setResourceLimit($type, $limit);
- }
- }
- $image->readImage($file_path);
- $this->image_objects[$file_path] = $image;
- }
- return $this->image_objects[$file_path];
- }
-
- protected function imagick_set_image_object($file_path, $image) {
- $this->imagick_destroy_image_object($file_path);
- $this->image_objects[$file_path] = $image;
- }
-
- protected function imagick_destroy_image_object($file_path) {
- $image = (isset($this->image_objects[$file_path])) ? $this->image_objects[$file_path] : null ;
- return $image && $image->destroy();
- }
-
- protected function imagick_orient_image($image) {
- $orientation = $image->getImageOrientation();
- $background = new \ImagickPixel('none');
- switch ($orientation) {
- case \imagick::ORIENTATION_TOPRIGHT: // 2
- $image->flopImage(); // horizontal flop around y-axis
- break;
- case \imagick::ORIENTATION_BOTTOMRIGHT: // 3
- $image->rotateImage($background, 180);
- break;
- case \imagick::ORIENTATION_BOTTOMLEFT: // 4
- $image->flipImage(); // vertical flip around x-axis
- break;
- case \imagick::ORIENTATION_LEFTTOP: // 5
- $image->flopImage(); // horizontal flop around y-axis
- $image->rotateImage($background, 270);
- break;
- case \imagick::ORIENTATION_RIGHTTOP: // 6
- $image->rotateImage($background, 90);
- break;
- case \imagick::ORIENTATION_RIGHTBOTTOM: // 7
- $image->flipImage(); // vertical flip around x-axis
- $image->rotateImage($background, 270);
- break;
- case \imagick::ORIENTATION_LEFTBOTTOM: // 8
- $image->rotateImage($background, 270);
- break;
- default:
- return false;
- }
- $image->setImageOrientation(\imagick::ORIENTATION_TOPLEFT); // 1
- return true;
- }
-
- protected function imagick_create_scaled_image($file_name, $version, $options) {
- list($file_path, $new_file_path) =
- $this->get_scaled_image_file_paths($file_name, $version);
- $image = $this->imagick_get_image_object(
- $file_path,
- !empty($options['crop']) || !empty($options['no_cache'])
- );
- if ($image->getImageFormat() === 'GIF') {
- // Handle animated GIFs:
- $images = $image->coalesceImages();
- foreach ($images as $frame) {
- $image = $frame;
- $this->imagick_set_image_object($file_name, $image);
- break;
- }
- }
- $image_oriented = false;
- if (!empty($options['auto_orient'])) {
- $image_oriented = $this->imagick_orient_image($image);
- }
-
- $image_resize = false;
- $new_width = $max_width = $img_width = $image->getImageWidth();
- $new_height = $max_height = $img_height = $image->getImageHeight();
-
- // use isset(). User might be setting max_width = 0 (auto in regular resizing). Value 0 would be considered empty when you use empty()
- if (isset($options['max_width'])) {
- $image_resize = true;
- $new_width = $max_width = $options['max_width'];
- }
- if (isset($options['max_height'])) {
- $image_resize = true;
- $new_height = $max_height = $options['max_height'];
- }
-
- $image_strip = (isset($options['strip']) ? $options['strip'] : false);
-
- if ( !$image_oriented && ($max_width >= $img_width) && ($max_height >= $img_height) && !$image_strip && empty($options["jpeg_quality"]) ) {
- if ($file_path !== $new_file_path) {
- return copy($file_path, $new_file_path);
- }
- return true;
- }
- $crop = (isset($options['crop']) ? $options['crop'] : false);
-
- if ($crop) {
- $x = 0;
- $y = 0;
- if (($img_width / $img_height) >= ($max_width / $max_height)) {
- $new_width = 0; // Enables proportional scaling based on max_height
- $x = ($img_width / ($img_height / $max_height) - $max_width) / 2;
- } else {
- $new_height = 0; // Enables proportional scaling based on max_width
- $y = ($img_height / ($img_width / $max_width) - $max_height) / 2;
- }
- }
- $success = $image->resizeImage(
- $new_width,
- $new_height,
- isset($options['filter']) ? $options['filter'] : \imagick::FILTER_LANCZOS,
- isset($options['blur']) ? $options['blur'] : 1,
- $new_width && $new_height // fit image into constraints if not to be cropped
- );
- if ($success && $crop) {
- $success = $image->cropImage(
- $max_width,
- $max_height,
- $x,
- $y
- );
- if ($success) {
- $success = $image->setImagePage($max_width, $max_height, 0, 0);
- }
- }
- $type = strtolower(substr(strrchr($file_name, '.'), 1));
- switch ($type) {
- case 'jpg':
- case 'jpeg':
- if (!empty($options['jpeg_quality'])) {
- $image->setImageCompression(\imagick::COMPRESSION_JPEG);
- $image->setImageCompressionQuality($options['jpeg_quality']);
- }
- break;
- }
- if ( $image_strip ) {
- $image->stripImage();
- }
- return $success && $image->writeImage($new_file_path);
- }
-
- protected function imagemagick_create_scaled_image($file_name, $version, $options) {
- list($file_path, $new_file_path) =
- $this->get_scaled_image_file_paths($file_name, $version);
- $resize = @$options['max_width']
- .(empty($options['max_height']) ? '' : 'X'.$options['max_height']);
- if (!$resize && empty($options['auto_orient'])) {
- if ($file_path !== $new_file_path) {
- return copy($file_path, $new_file_path);
- }
- return true;
- }
- $cmd = $this->options['convert_bin'];
- if (!empty($this->options['convert_params'])) {
- $cmd .= ' '.$this->options['convert_params'];
- }
- $cmd .= ' '.escapeshellarg($file_path);
- if (!empty($options['auto_orient'])) {
- $cmd .= ' -auto-orient';
- }
- if ($resize) {
- // Handle animated GIFs:
- $cmd .= ' -coalesce';
- if (empty($options['crop'])) {
- $cmd .= ' -resize '.escapeshellarg($resize.'>');
- } else {
- $cmd .= ' -resize '.escapeshellarg($resize.'^');
- $cmd .= ' -gravity center';
- $cmd .= ' -crop '.escapeshellarg($resize.'+0+0');
- }
- // Make sure the page dimensions are correct (fixes offsets of animated GIFs):
- $cmd .= ' +repage';
- }
- if (!empty($options['convert_params'])) {
- $cmd .= ' '.$options['convert_params'];
- }
- $cmd .= ' '.escapeshellarg($new_file_path);
- exec($cmd, $output, $error);
- if ($error) {
- error_log(implode('\n', $output));
- return false;
- }
- return true;
- }
-
- protected function get_image_size($file_path) {
- if ($this->options['image_library']) {
- if (extension_loaded('imagick')) {
- $image = new \Imagick();
- try {
- if (@$image->pingImage($file_path)) {
- $dimensions = array($image->getImageWidth(), $image->getImageHeight());
- $image->destroy();
- return $dimensions;
- }
- return false;
- } catch (\Exception $e) {
- error_log($e->getMessage());
- }
- }
- if ($this->options['image_library'] === 2) {
- $cmd = $this->options['identify_bin'];
- $cmd .= ' -ping '.escapeshellarg($file_path);
- exec($cmd, $output, $error);
- if (!$error && !empty($output)) {
- // image.jpg JPEG 1920x1080 1920x1080+0+0 8-bit sRGB 465KB 0.000u 0:00.000
- $infos = preg_split('/\s+/', substr($output[0], strlen($file_path)));
- $dimensions = preg_split('/x/', $infos[2]);
- return $dimensions;
- }
- return false;
- }
- }
- if (!function_exists('getimagesize')) {
- error_log('Function not found: getimagesize');
- return false;
- }
- return @getimagesize($file_path);
- }
-
- protected function create_scaled_image($file_name, $version, $options) {
- if ($this->options['image_library'] === 2) {
- return $this->imagemagick_create_scaled_image($file_name, $version, $options);
- }
- if ($this->options['image_library'] && extension_loaded('imagick')) {
- return $this->imagick_create_scaled_image($file_name, $version, $options);
- }
- return $this->gd_create_scaled_image($file_name, $version, $options);
- }
-
- protected function destroy_image_object($file_path) {
- if ($this->options['image_library'] && extension_loaded('imagick')) {
- return $this->imagick_destroy_image_object($file_path);
- }
- }
-
- protected function is_valid_image_file($file_path) {
- if (!preg_match($this->options['image_file_types'], $file_path)) {
- return false;
- }
- if (function_exists('exif_imagetype')) {
- return @exif_imagetype($file_path);
- }
- $image_info = $this->get_image_size($file_path);
- return $image_info && $image_info[0] && $image_info[1];
- }
-
- protected function handle_image_file($file_path, $file) {
- $failed_versions = array();
- foreach ($this->options['image_versions'] as $version => $options) {
- if ($this->create_scaled_image($file->name, $version, $options)) {
- if (!empty($version)) {
- $file->{$version.'Url'} = $this->get_download_url(
- $file->name,
- $version
- );
- } else {
- $file->size = $this->get_file_size($file_path, true);
- }
- } else {
- $failed_versions[] = $version ? $version : 'original';
- }
- }
- if (count($failed_versions)) {
- $file->error = $this->get_error_message('image_resize')
- .' ('.implode($failed_versions, ', ').')';
- }
- // Free memory:
- $this->destroy_image_object($file_path);
- }
-
- protected function handle_file_upload($uploaded_file, $name, $size, $type, $error,
- $index = null, $content_range = null) {
- $file = new \stdClass();
- $file->name = $this->get_file_name($uploaded_file, $name, $size, $type, $error,
- $index, $content_range);
- $file->size = $this->fix_integer_overflow((int)$size);
- $file->type = $type;
- if ($this->validate($uploaded_file, $file, $error, $index)) {
- $this->handle_form_data($file, $index);
- $upload_dir = $this->get_upload_path();
- if (!is_dir($upload_dir)) {
- mkdir($upload_dir, $this->options['mkdir_mode'], true);
- }
- $file_path = $this->get_upload_path($file->name);
- $append_file = $content_range && is_file($file_path) &&
- $file->size > $this->get_file_size($file_path);
- if ($uploaded_file && is_uploaded_file($uploaded_file)) {
- // multipart/formdata uploads (POST method uploads)
- if ($append_file) {
- file_put_contents(
- $file_path,
- fopen($uploaded_file, 'r'),
- FILE_APPEND
- );
- } else {
- move_uploaded_file($uploaded_file, $file_path);
- }
- } else {
- // Non-multipart uploads (PUT method support)
- file_put_contents(
- $file_path,
- fopen($this->options['input_stream'], 'r'),
- $append_file ? FILE_APPEND : 0
- );
- }
- $file_size = $this->get_file_size($file_path, $append_file);
- if ($file_size === $file->size) {
- $file->url = $this->get_download_url($file->name);
- if ($this->is_valid_image_file($file_path)) {
- $this->handle_image_file($file_path, $file);
- }
- } else {
- $file->size = $file_size;
- if (!$content_range && $this->options['discard_aborted_uploads']) {
- unlink($file_path);
- $file->error = $this->get_error_message('abort');
- }
- }
- $this->set_additional_file_properties($file);
- }
- return $file;
- }
-
- protected function readfile($file_path) {
- $file_size = $this->get_file_size($file_path);
- $chunk_size = $this->options['readfile_chunk_size'];
- if ($chunk_size && $file_size > $chunk_size) {
- $handle = fopen($file_path, 'rb');
- while (!feof($handle)) {
- echo fread($handle, $chunk_size);
- @ob_flush();
- @flush();
- }
- fclose($handle);
- return $file_size;
- }
- return readfile($file_path);
- }
-
- protected function body($str) {
- echo $str;
- }
-
- protected function header($str) {
- header($str);
- }
-
- protected function get_upload_data($id) {
- return @$_FILES[$id];
- }
-
- protected function get_post_param($id) {
- return @$_POST[$id];
- }
-
- protected function get_query_param($id) {
- return @$_GET[$id];
- }
-
- protected function get_server_var($id) {
- return @$_SERVER[$id];
- }
-
- protected function handle_form_data($file, $index) {
- // Handle form data, e.g. $_POST['description'][$index]
- }
-
- protected function get_version_param() {
- return $this->basename(stripslashes($this->get_query_param('version')));
- }
-
- protected function get_singular_param_name() {
- return substr($this->options['param_name'], 0, -1);
- }
-
- protected function get_file_name_param() {
- $name = $this->get_singular_param_name();
- return $this->basename(stripslashes($this->get_query_param($name)));
- }
-
- protected function get_file_names_params() {
- $params = $this->get_query_param($this->options['param_name']);
- if (!$params) {
- return null;
- }
- foreach ($params as $key => $value) {
- $params[$key] = $this->basename(stripslashes($value));
- }
- return $params;
- }
-
- protected function get_file_type($file_path) {
- switch (strtolower(pathinfo($file_path, PATHINFO_EXTENSION))) {
- case 'jpeg':
- case 'jpg':
- return 'image/jpeg';
- case 'png':
- return 'image/png';
- case 'gif':
- return 'image/gif';
- default:
- return '';
- }
- }
-
- protected function download() {
- switch ($this->options['download_via_php']) {
- case 1:
- $redirect_header = null;
- break;
- case 2:
- $redirect_header = 'X-Sendfile';
- break;
- case 3:
- $redirect_header = 'X-Accel-Redirect';
- break;
- default:
- return $this->header('HTTP/1.1 403 Forbidden');
- }
- $file_name = $this->get_file_name_param();
- if (!$this->is_valid_file_object($file_name)) {
- return $this->header('HTTP/1.1 404 Not Found');
- }
- if ($redirect_header) {
- return $this->header(
- $redirect_header.': '.$this->get_download_url(
- $file_name,
- $this->get_version_param(),
- true
- )
- );
- }
- $file_path = $this->get_upload_path($file_name, $this->get_version_param());
- // Prevent browsers from MIME-sniffing the content-type:
- $this->header('X-Content-Type-Options: nosniff');
- if (!preg_match($this->options['inline_file_types'], $file_name)) {
- $this->header('Content-Type: application/octet-stream');
- $this->header('Content-Disposition: attachment; filename="'.$file_name.'"');
- } else {
- $this->header('Content-Type: '.$this->get_file_type($file_path));
- $this->header('Content-Disposition: inline; filename="'.$file_name.'"');
- }
- $this->header('Content-Length: '.$this->get_file_size($file_path));
- $this->header('Last-Modified: '.gmdate('D, d M Y H:i:s T', filemtime($file_path)));
- $this->readfile($file_path);
- }
-
- protected function send_content_type_header() {
- $this->header('Vary: Accept');
- if (strpos($this->get_server_var('HTTP_ACCEPT'), 'application/json') !== false) {
- $this->header('Content-type: application/json');
- } else {
- $this->header('Content-type: text/plain');
- }
- }
-
- protected function send_access_control_headers() {
- $this->header('Access-Control-Allow-Origin: '.$this->options['access_control_allow_origin']);
- $this->header('Access-Control-Allow-Credentials: '
- .($this->options['access_control_allow_credentials'] ? 'true' : 'false'));
- $this->header('Access-Control-Allow-Methods: '
- .implode(', ', $this->options['access_control_allow_methods']));
- $this->header('Access-Control-Allow-Headers: '
- .implode(', ', $this->options['access_control_allow_headers']));
- }
-
- public function generate_response($content, $print_response = true) {
- $this->response = $content;
- if ($print_response) {
- $json = json_encode($content);
- $redirect = stripslashes($this->get_post_param('redirect'));
- if ($redirect && preg_match($this->options['redirect_allow_target'], $redirect)) {
- $this->header('Location: '.sprintf($redirect, rawurlencode($json)));
- return;
- }
- $this->head();
- if ($this->get_server_var('HTTP_CONTENT_RANGE')) {
- $files = isset($content[$this->options['param_name']]) ?
- $content[$this->options['param_name']] : null;
- if ($files && is_array($files) && is_object($files[0]) && $files[0]->size) {
- $this->header('Range: 0-'.(
- $this->fix_integer_overflow((int)$files[0]->size) - 1
- ));
- }
- }
- $this->body($json);
- }
- return $content;
- }
-
- public function get_response () {
- return $this->response;
- }
-
- public function head() {
- $this->header('Pragma: no-cache');
- $this->header('Cache-Control: no-store, no-cache, must-revalidate');
- $this->header('Content-Disposition: inline; filename="files.json"');
- // Prevent Internet Explorer from MIME-sniffing the content-type:
- $this->header('X-Content-Type-Options: nosniff');
- if ($this->options['access_control_allow_origin']) {
- $this->send_access_control_headers();
- }
- $this->send_content_type_header();
- }
-
- public function get($print_response = true) {
- if ($print_response && $this->get_query_param('download')) {
- return $this->download();
- }
- $file_name = $this->get_file_name_param();
- if ($file_name) {
- $response = array(
- $this->get_singular_param_name() => $this->get_file_object($file_name)
- );
- } else {
- $response = array(
- $this->options['param_name'] => $this->get_file_objects()
- );
- }
- return $this->generate_response($response, $print_response);
- }
-
- public function post($print_response = true) {
- if ($this->get_query_param('_method') === 'DELETE') {
- return $this->delete($print_response);
- }
- $upload = $this->get_upload_data($this->options['param_name']);
- // Parse the Content-Disposition header, if available:
- $content_disposition_header = $this->get_server_var('HTTP_CONTENT_DISPOSITION');
- $file_name = $content_disposition_header ?
- rawurldecode(preg_replace(
- '/(^[^"]+")|("$)/',
- '',
- $content_disposition_header
- )) : null;
- // Parse the Content-Range header, which has the following form:
- // Content-Range: bytes 0-524287/2000000
- $content_range_header = $this->get_server_var('HTTP_CONTENT_RANGE');
- $content_range = $content_range_header ?
- preg_split('/[^0-9]+/', $content_range_header) : null;
- $size = $content_range ? $content_range[3] : null;
- $files = array();
- if ($upload) {
- if (is_array($upload['tmp_name'])) {
- // param_name is an array identifier like "files[]",
- // $upload is a multi-dimensional array:
- foreach ($upload['tmp_name'] as $index => $value) {
- $files[] = $this->handle_file_upload(
- $upload['tmp_name'][$index],
- $file_name ? $file_name : $upload['name'][$index],
- $size ? $size : $upload['size'][$index],
- $upload['type'][$index],
- $upload['error'][$index],
- $index,
- $content_range
- );
- }
- } else {
- // param_name is a single object identifier like "file",
- // $upload is a one-dimensional array:
- $files[] = $this->handle_file_upload(
- isset($upload['tmp_name']) ? $upload['tmp_name'] : null,
- $file_name ? $file_name : (isset($upload['name']) ?
- $upload['name'] : null),
- $size ? $size : (isset($upload['size']) ?
- $upload['size'] : $this->get_server_var('CONTENT_LENGTH')),
- isset($upload['type']) ?
- $upload['type'] : $this->get_server_var('CONTENT_TYPE'),
- isset($upload['error']) ? $upload['error'] : null,
- null,
- $content_range
- );
- }
- }
- $response = array($this->options['param_name'] => $files);
- return $this->generate_response($response, $print_response);
- }
-
- public function delete($print_response = true) {
- $file_names = $this->get_file_names_params();
- if (empty($file_names)) {
- $file_names = array($this->get_file_name_param());
- }
- $response = array();
- foreach ($file_names as $file_name) {
- $file_path = $this->get_upload_path($file_name);
- $success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path);
- if ($success) {
- foreach ($this->options['image_versions'] as $version => $options) {
- if (!empty($version)) {
- $file = $this->get_upload_path($file_name, $version);
- if (is_file($file)) {
- unlink($file);
- }
- }
- }
- }
- $response[$file_name] = $success;
- }
- return $this->generate_response($response, $print_response);
- }
-
- protected function basename($filepath, $suffix = null) {
- $splited = preg_split('/\//', rtrim ($filepath, '/ '));
- return substr(basename('X'.$splited[count($splited)-1], $suffix), 1);
- }
-}
diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php
old mode 100755
new mode 100644
index ea67757fc..dd171d0c6
--- a/app/Http/Controllers/UserController.php
+++ b/app/Http/Controllers/UserController.php
@@ -2,428 +2,185 @@
namespace App\Http\Controllers;
-use App\Department;
-use App\Myclass;
-use App\Section;
-use App\StudentInfo;
-use App\User;
+use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
-use Illuminate\Support\Facades\Auth;
-use Illuminate\Support\Facades\DB;
-use App\Http\Resources\UserResource;
-use Illuminate\Support\Facades\Hash;
-use App\Http\Requests\User\CreateUserRequest;
-use App\Http\Requests\User\UpdateUserRequest;
-use App\Http\Requests\User\CreateAdminRequest;
-use App\Http\Requests\User\CreateTeacherRequest;
-use App\Http\Requests\User\ChangePasswordRequest;
-use App\Http\Requests\User\ImpersonateUserRequest;
-use App\Http\Requests\User\CreateLibrarianRequest;
-use App\Http\Requests\User\CreateAccountantRequest;
-use App\Events\UserRegistered;
-use App\Events\StudentInfoUpdateRequested;
-use Illuminate\Support\Facades\Log;
-use App\Services\User\UserService;
-/**
- * Class UserController
- * @package App\Http\Controllers
- */
+use App\Traits\SchoolSession;
+use App\Interfaces\UserInterface;
+use App\Interfaces\SectionInterface;
+use App\Interfaces\SchoolClassInterface;
+use App\Repositories\PromotionRepository;
+use App\Http\Requests\StudentStoreRequest;
+use App\Http\Requests\TeacherStoreRequest;
+use App\Interfaces\SchoolSessionInterface;
+use App\Repositories\StudentParentInfoRepository;
+
class UserController extends Controller
{
- protected $userService;
- protected $user;
+ use SchoolSession;
+ protected $userRepository;
+ protected $schoolSessionRepository;
+ protected $schoolClassRepository;
+ protected $schoolSectionRepository;
+
+ public function __construct(UserInterface $userRepository, SchoolSessionInterface $schoolSessionRepository,
+ SchoolClassInterface $schoolClassRepository,
+ SectionInterface $schoolSectionRepository)
+ {
+ $this->middleware(['can:view users']);
- public function __construct(UserService $userService, User $user){
- $this->userService = $userService;
- $this->user = $user;
+ $this->userRepository = $userRepository;
+ $this->schoolSessionRepository = $schoolSessionRepository;
+ $this->schoolClassRepository = $schoolClassRepository;
+ $this->schoolSectionRepository = $schoolSectionRepository;
}
+
/**
- * Display a listing of the resource.
+ * Store a newly created resource in storage.
*
- * @param $school_code
- * @param $student_code
- * @param $teacher_code
+ * @param TeacherStoreRequest $request
* @return \Illuminate\Http\Response
*/
- public function index($school_code, $student_code, $teacher_code){
- session()->forget('section-attendance');
-
- if($this->userService->isListOfStudents($school_code, $student_code))
- return $this->userService->indexView('list.student-list', $this->userService->getStudents());
- else if($this->userService->isListOfTeachers($school_code, $teacher_code))
- return $this->userService->indexView('list.teacher-list',$this->userService->getTeachers());
- else
- return view('home');
- }
+ public function storeTeacher(TeacherStoreRequest $request)
+ {
+ try {
+ $this->userRepository->createTeacher($request->validated());
- /**
- * @param $school_code
- * @param $role
- * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
- */
- public function indexOther($school_code, $role){
- if($this->userService->isAccountant($role))
- return $this->userService->indexOtherView('accounts.accountant-list', $this->userService->getAccountants());
- else if($this->userService->isLibrarian($role))
- return $this->userService->indexOtherView('library.librarian-list', $this->userService->getLibrarians());
- else
- return view('home');
+ return back()->with('status', 'Teacher creation was successful!');
+ } catch (\Exception $e) {
+ return back()->withError($e->getMessage());
+ }
}
- /**
- * @return \Illuminate\Http\RedirectResponse
- */
- public function redirectToRegisterStudent()
- {
- $classes = Myclass::query()
- ->bySchool(\Auth::user()->school->id)
- ->pluck('id');
+ public function getStudentList(Request $request) {
+ $current_school_session_id = $this->getSchoolCurrentSession();
- $sections = Section::with('class')
- ->whereIn('class_id', $classes)
- ->get();
+ $class_id = $request->query('class_id', 0);
+ $section_id = $request->query('section_id', 0);
- session([
- 'register_role' => 'student',
- 'register_sections' => $sections,
- ]);
+ try{
- return redirect()->route('register');
- }
+ $school_classes = $this->schoolClassRepository->getAllBySession($current_school_session_id);
- /**
- * @param $section_id
- * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
- */
- public function sectionStudents($section_id)
- {
- $students = $this->userService->getSectionStudentsWithSchool($section_id);
+ $studentList = $this->userRepository->getAllStudents($current_school_session_id, $class_id, $section_id);
- return view('profile.section-students', compact('students'));
- }
+ $data = [
+ 'studentList' => $studentList,
+ 'school_classes' => $school_classes,
+ ];
- /**
- * @param $section_id
- * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
- */
- public function promoteSectionStudents(Request $request, $section_id)
- {
- if($this->userService->hasSectionId($section_id))
- return $this->userService->promoteSectionStudentsView(
- $this->userService->getSectionStudentsWithStudentInfo($request, $section_id),
- Myclass::with('sections')->bySchool(\Auth::user()->school_id)->get(),
- $section_id
- );
- else
- return $this->userService->promoteSectionStudentsView([], [], $section_id);
+ return view('students.list', $data);
+ } catch (\Exception $e) {
+ return back()->withError($e->getMessage());
+ }
}
- /**
- * @param Request $request
- * @return \Illuminate\Http\RedirectResponse
- */
- public function promoteSectionStudentsPost(Request $request)
- {
- return $this->userService->promoteSectionStudentsPost($request);
- }
- /**
- * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
- */
- public function changePasswordGet()
- {
- return view('profile.change-password');
- }
+ public function showStudentProfile($id) {
+ $student = $this->userRepository->findStudent($id);
- /**
- * @param ChangePasswordRequest $request
- * @return \Illuminate\Http\RedirectResponse
- */
- public function changePasswordPost(ChangePasswordRequest $request)
- {
- if (Hash::check($request->old_password, Auth::user()->password)) {
- $request->user()->fill([
- 'password' => Hash::make($request->new_password),
- ])->save();
+ $current_school_session_id = $this->getSchoolCurrentSession();
+ $promotionRepository = new PromotionRepository();
+ $promotion_info = $promotionRepository->getPromotionInfoById($current_school_session_id, $id);
- return back()->with('status', __('Saved'));
- }
+ $data = [
+ 'student' => $student,
+ 'promotion_info' => $promotion_info,
+ ];
- return back()->with('error-status', __('Passwords do not match.'));
+ return view('students.profile', $data);
}
- /**
- * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
- */
- public function impersonateGet()
- {
- if (app('impersonate')->isImpersonating()) {
- Auth::user()->leaveImpersonation();
- return (Auth::user()->role == 'master')?redirect('/masters') : redirect('/home');
- }
- else {
- return view('profile.impersonate', [
- 'other_users' => $this->user->where('id', '!=', auth()->id())->get([ 'id', 'name', 'role' ])
- ]);
- }
+ public function showTeacherProfile($id) {
+ $teacher = $this->userRepository->findTeacher($id);
+ $data = [
+ 'teacher' => $teacher,
+ ];
+ return view('teachers.profile', $data);
}
- /**
- * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
- */
- public function impersonate(ImpersonateUserRequest $request)
- {
- $user = $this->user->find($request->id);
- Auth::user()->impersonate($user);
- return redirect('/home');
+
+ public function createStudent() {
+ $current_school_session_id = $this->getSchoolCurrentSession();
+
+ $school_classes = $this->schoolClassRepository->getAllBySession($current_school_session_id);
+
+ $data = [
+ 'current_school_session_id' => $current_school_session_id,
+ 'school_classes' => $school_classes,
+ ];
+
+ return view('students.add', $data);
}
/**
* Store a newly created resource in storage.
*
- * @param CreateUserRequest $request
- *
+ * @param StudentStoreRequest $request
* @return \Illuminate\Http\Response
*/
- public function store(CreateUserRequest $request)
+ public function storeStudent(StudentStoreRequest $request)
{
- DB::transaction(function () use ($request) {
- $password = $request->password;
- $tb = $this->userService->storeStudent($request);
- try {
- // Fire event to store Student information
- if(event(new StudentInfoUpdateRequested($request,$tb->id))){
- // Fire event to send welcome email
- event(new UserRegistered($tb, $password));
- } else {
- throw new \Exeception('Event returned false');
- }
- } catch(\Exception $ex) {
- Log::info('Email failed to send to this address: '.$tb->email.'\n'.$ex->getMessage());
- }
- });
-
- return back()->with('status', __('Saved'));
- }
-
- /**
- * @param CreateAdminRequest $request
- * @return \Illuminate\Http\RedirectResponse
- */
- public function storeAdmin(CreateAdminRequest $request)
- {
- $password = $request->password;
- $tb = $this->userService->storeAdmin($request);
try {
- // Fire event to send welcome email
- // event(new userRegistered($userObject, $plain_password)); // $plain_password(optional)
- event(new UserRegistered($tb, $password));
- } catch(\Exception $ex) {
- Log::info('Email failed to send to this address: '.$tb->email);
- }
-
- return back()->with('status', __('Saved'));
- }
+ $this->userRepository->createStudent($request->validated());
- /**
- * @param CreateTeacherRequest $request
- * @return \Illuminate\Http\RedirectResponse
- */
- public function storeTeacher(CreateTeacherRequest $request)
- {
- $password = $request->password;
- $tb = $this->userService->storeStaff($request, 'teacher');
- try {
- // Fire event to send welcome email
- event(new UserRegistered($tb, $password));
- } catch(\Exception $ex) {
- Log::info('Email failed to send to this address: '.$tb->email);
+ return back()->with('status', 'Student creation was successful!');
+ } catch (\Exception $e) {
+ return back()->withError($e->getMessage());
}
-
- return back()->with('status', __('Saved'));
}
- /**
- * @param CreateAccountantRequest $request
- * @return \Illuminate\Http\RedirectResponse
- */
- public function storeAccountant(CreateAccountantRequest $request)
- {
- $password = $request->password;
- $tb = $this->userService->storeStaff($request, 'accountant');
- try {
- // Fire event to send welcome email
- event(new UserRegistered($tb, $password));
- } catch(\Exception $ex) {
- Log::info('Email failed to send to this address: '.$tb->email);
- }
+ public function editStudent($student_id) {
+ $student = $this->userRepository->findStudent($student_id);
+ $studentParentInfoRepository = new StudentParentInfoRepository();
+ $parent_info = $studentParentInfoRepository->getParentInfo($student_id);
+ $promotionRepository = new PromotionRepository();
+ $current_school_session_id = $this->getSchoolCurrentSession();
+ $promotion_info = $promotionRepository->getPromotionInfoById($current_school_session_id, $student_id);
- return back()->with('status', __('Saved'));
+ $data = [
+ 'student' => $student,
+ 'parent_info' => $parent_info,
+ 'promotion_info'=> $promotion_info,
+ ];
+ return view('students.edit', $data);
}
- /**
- * @param CreateLibrarianRequest $request
- * @return \Illuminate\Http\RedirectResponse
- */
- public function storeLibrarian(CreateLibrarianRequest $request)
- {
- $password = $request->password;
- $tb = $this->userService->storeStaff($request, 'librarian');
+ public function updateStudent(Request $request) {
try {
- // Fire event to send welcome email
- event(new UserRegistered($tb, $password));
- } catch(\Exception $ex) {
- Log::info('Email failed to send to this address: '.$tb->email);
- }
+ $this->userRepository->updateStudent($request->toArray());
- return back()->with('status', __('Saved'));
+ return back()->with('status', 'Student update was successful!');
+ } catch (\Exception $e) {
+ return back()->withError($e->getMessage());
+ }
}
- /**
- * Display the specified resource.
- *
- * @param int $id
- *
- * @return UserResource
- */
- public function show($user_code)
- {
- $user = $this->userService->getUserByUserCode($user_code);
+ public function editTeacher($teacher_id) {
+ $teacher = $this->userRepository->findTeacher($teacher_id);
- return view('profile.user', compact('user'));
- }
+ $data = [
+ 'teacher' => $teacher,
+ ];
- /**
- * Show the form for editing the specified resource.
- *
- * @param int $id
- *
- * @return \Illuminate\Http\Response
- */
- public function edit($id)
- {
- $user = $this->user->find($id);
-
- $classes = Myclass::query()
- ->bySchool($user->school_id)
- ->pluck('id')
- ->toArray();
-
- $sections = Section::query()
- ->whereIn('class_id', $classes)
- ->get();
-
- $departments = Department::query()
- ->bySchool($user->school_id)
- ->get();
-
- return view('profile.edit', [
- 'user' => $user,
- 'sections' => $sections,
- 'departments' => $departments,
- ]);
+ return view('teachers.edit', $data);
}
+ public function updateTeacher(Request $request) {
+ try {
+ $this->userRepository->updateTeacher($request->toArray());
- /**
- * Update the specified resource in storage.
- *
- * @param UpdateUserRequest $request
- * @return \Illuminate\Http\Response
- */
- public function update(UpdateUserRequest $request)
- {
-
- DB::transaction(function () use ($request) {
- $tb = $this->user->find($request->user_id);
- $tb->name = $request->name;
- $tb->email = (!empty($request->email)) ? $request->email : '';
- $tb->nationality = (!empty($request->nationality)) ? $request->nationality : '';
- $tb->phone_number = $request->phone_number;
- $tb->address = (!empty($request->address)) ? $request->address : '';
- $tb->about = (!empty($request->about)) ? $request->about : '';
- if (!empty($request->pic_path)) {
- $tb->pic_path = $request->pic_path;
- }
- if ($request->user_role == 'teacher') {
- $tb->department_id = $request->department_id;
- $tb->section_id = $request->class_teacher_section_id;
- }
- if ($tb->save()) {
- if ($request->user_role == 'student') {
- // $request->validate([
- // 'session' => 'required',
- // 'version' => 'required',
- // 'birthday' => 'required',
- // 'religion' => 'required',
- // 'father_name' => 'required',
- // 'mother_name' => 'required',
- // ]);
- try{
- // Fire event to store Student information
- event(new StudentInfoUpdateRequested($request,$tb->id));
- } catch(\Exception $ex) {
- Log::info('Failed to update Student information, Id: '.$tb->id. 'err:'.$ex->getMessage());
- }
- }
- }
- });
-
- return back()->with('status', __('Saved'));
- }
-
- /**
- * Activate admin
- * @param Request $request
- * @return \Illuminate\Http\RedirectResponse
- */
- public function activateAdmin(Request $request)
- {
- $admin = $this->user->find($request->id);
-
- if ($admin->active !== 0) {
- $admin->active = 0;
- } else {
- $admin->active = 1;
+ return back()->with('status', 'Teacher update was successful!');
+ } catch (\Exception $e) {
+ return back()->withError($e->getMessage());
}
-
- $admin->save();
-
- return back()->with('status', __('Saved'));
}
- /**
- * Deactivate admin
- * @param Request $request
- * @return \Illuminate\Http\RedirectResponse
- */
- public function deactivateAdmin(Request $request)
- {
- $admin = $this->user->find($request->id);
+ public function getTeacherList(){
+ $teachers = $this->userRepository->getAllTeachers();
- if ($admin->active !== 1) {
- $admin->active = 1;
- } else {
- $admin->active = 0;
- }
-
- $admin->save();
+ $data = [
+ 'teachers' => $teachers,
+ ];
- return back()->with('status', __('Saved'));
- }
-
- /**
- * Remove the specified resource from storage.
- *
- * @param int $id
- *
- * @return void
- */
- public function destroy($id)
- {
- // return ($this->user->destroy($id))?response()->json([
- // 'status' => 'success'
- // ]):response()->json([
- // 'status' => 'error'
- // ]);
+ return view('teachers.list', $data);
}
}
diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
old mode 100755
new mode 100644
index 243fc1ecc..30020a508
--- a/app/Http/Kernel.php
+++ b/app/Http/Kernel.php
@@ -14,18 +14,13 @@ class Kernel extends HttpKernel
* @var array
*/
protected $middleware = [
- \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
+ // \App\Http\Middleware\TrustHosts::class,
+ \App\Http\Middleware\TrustProxies::class,
+ \Fruitcake\Cors\HandleCors::class,
+ \App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
- \App\Http\Middleware\TrustProxies::class,
-// \RenatoMarinho\LaravelPageSpeed\Middleware\InlineCss::class,
-// \RenatoMarinho\LaravelPageSpeed\Middleware\ElideAttributes::class,
-// \RenatoMarinho\LaravelPageSpeed\Middleware\InsertDNSPrefetch::class,
-// \RenatoMarinho\LaravelPageSpeed\Middleware\RemoveComments::class,
-// \RenatoMarinho\LaravelPageSpeed\Middleware\TrimUrls::class,
-// \RenatoMarinho\LaravelPageSpeed\Middleware\RemoveQuotes::class,
-// \RenatoMarinho\LaravelPageSpeed\Middleware\CollapseWhitespace::class,
];
/**
@@ -45,8 +40,8 @@ class Kernel extends HttpKernel
],
'api' => [
- 'throttle:60,1',
- 'bindings',
+ 'throttle:api',
+ \Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
@@ -58,19 +53,14 @@ class Kernel extends HttpKernel
* @var array
*/
protected $routeMiddleware = [
- 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
- 'master' => \App\Http\Middleware\CheckMaster::class,
- 'master.admin' => \App\Http\Middleware\CheckMasterOrAdmin::class,
- 'teacher.student' => \App\Http\Middleware\CheckTeacherOrStudent::class,
- 'admin' => \App\Http\Middleware\CheckAdmin::class,
- 'accountant' => \App\Http\Middleware\CheckAccountant::class,
- 'librarian' => \App\Http\Middleware\CheckLibrarian::class,
- 'student' => \App\Http\Middleware\CheckStudent::class,
- 'teacher' => \App\Http\Middleware\CheckTeacher::class,
+ 'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
- 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
+ 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
+ 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
+ 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
+ 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
}
diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php
new file mode 100644
index 000000000..704089a7f
--- /dev/null
+++ b/app/Http/Middleware/Authenticate.php
@@ -0,0 +1,21 @@
+expectsJson()) {
+ return route('login');
+ }
+ }
+}
diff --git a/app/Http/Middleware/CheckAccountant.php b/app/Http/Middleware/CheckAccountant.php
deleted file mode 100755
index dc4b23c87..000000000
--- a/app/Http/Middleware/CheckAccountant.php
+++ /dev/null
@@ -1,24 +0,0 @@
-hasRole('accountant') || $user->hasRole('admin')) {
- return $next($request);
- }
- return redirect('home');
- }
-}
diff --git a/app/Http/Middleware/CheckAdmin.php b/app/Http/Middleware/CheckAdmin.php
deleted file mode 100755
index f41e2ca89..000000000
--- a/app/Http/Middleware/CheckAdmin.php
+++ /dev/null
@@ -1,23 +0,0 @@
-hasRole('admin')) {
- return $next($request);
- }
- return redirect('home');
- }
-}
diff --git a/app/Http/Middleware/CheckLibrarian.php b/app/Http/Middleware/CheckLibrarian.php
deleted file mode 100755
index ed3199535..000000000
--- a/app/Http/Middleware/CheckLibrarian.php
+++ /dev/null
@@ -1,24 +0,0 @@
-hasRole('librarian') || $user->hasRole('admin')) {
- return $next($request);
- }
- return redirect('home');
- }
-}
diff --git a/app/Http/Middleware/CheckMaster.php b/app/Http/Middleware/CheckMaster.php
deleted file mode 100755
index 89fce999a..000000000
--- a/app/Http/Middleware/CheckMaster.php
+++ /dev/null
@@ -1,23 +0,0 @@
-hasRole('master')) {
- return $next($request);
- }
- return redirect('home');
- }
-}
diff --git a/app/Http/Middleware/CheckMasterOrAdmin.php b/app/Http/Middleware/CheckMasterOrAdmin.php
deleted file mode 100755
index c0e7c87aa..000000000
--- a/app/Http/Middleware/CheckMasterOrAdmin.php
+++ /dev/null
@@ -1,24 +0,0 @@
-hasRole('master') || $user->hasRole('admin')) {
- return $next($request);
- }
- return redirect('home');
- }
-}
diff --git a/app/Http/Middleware/CheckStudent.php b/app/Http/Middleware/CheckStudent.php
deleted file mode 100755
index d948ac281..000000000
--- a/app/Http/Middleware/CheckStudent.php
+++ /dev/null
@@ -1,24 +0,0 @@
-hasRole('student') || $user->hasRole('admin')) {
- return $next($request);
- }
- return redirect('home');
- }
-}
diff --git a/app/Http/Middleware/CheckTeacher.php b/app/Http/Middleware/CheckTeacher.php
deleted file mode 100755
index c9c14967c..000000000
--- a/app/Http/Middleware/CheckTeacher.php
+++ /dev/null
@@ -1,24 +0,0 @@
-hasRole('teacher') || $user->hasRole('admin')) {
- return $next($request);
- }
- return redirect('home');
- }
-}
diff --git a/app/Http/Middleware/CheckTeacherOrStudent.php b/app/Http/Middleware/CheckTeacherOrStudent.php
deleted file mode 100755
index 5a552cb3f..000000000
--- a/app/Http/Middleware/CheckTeacherOrStudent.php
+++ /dev/null
@@ -1,24 +0,0 @@
-hasRole('teacher') || $user->hasRole('student') || $user->hasRole('admin')) {
- return $next($request);
- }
- return redirect('home');
- }
-}
diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php
old mode 100755
new mode 100644
diff --git a/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/app/Http/Middleware/PreventRequestsDuringMaintenance.php
new file mode 100644
index 000000000..e4956d0bb
--- /dev/null
+++ b/app/Http/Middleware/PreventRequestsDuringMaintenance.php
@@ -0,0 +1,17 @@
+check()) {
- return redirect('/home');
+ $guards = empty($guards) ? [null] : $guards;
+
+ foreach ($guards as $guard) {
+ if (Auth::guard($guard)->check()) {
+ return redirect(RouteServiceProvider::HOME);
+ }
}
return $next($request);
diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php
old mode 100755
new mode 100644
index 5a50e7b5c..a8a252df4
--- a/app/Http/Middleware/TrimStrings.php
+++ b/app/Http/Middleware/TrimStrings.php
@@ -12,6 +12,7 @@ class TrimStrings extends Middleware
* @var array
*/
protected $except = [
+ 'current_password',
'password',
'password_confirmation',
];
diff --git a/app/Http/Middleware/TrustHosts.php b/app/Http/Middleware/TrustHosts.php
new file mode 100644
index 000000000..b0550cfc7
--- /dev/null
+++ b/app/Http/Middleware/TrustHosts.php
@@ -0,0 +1,20 @@
+allSubdomainsOfApplicationUrl(),
+ ];
+ }
+}
diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php
old mode 100755
new mode 100644
index 6a0a1a44d..d11dd5f0c
--- a/app/Http/Middleware/TrustProxies.php
+++ b/app/Http/Middleware/TrustProxies.php
@@ -2,22 +2,22 @@
namespace App\Http\Middleware;
+use Illuminate\Http\Middleware\TrustProxies as Middleware;
use Illuminate\Http\Request;
-use Fideloper\Proxy\TrustProxies as Middleware;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
- * @var array
+ * @var array|string|null
*/
protected $proxies;
/**
- * The current proxy header mappings.
+ * The headers that should be used to detect proxies.
*
- * @var array
+ * @var int
*/
- protected $headers = Request::HEADER_X_FORWARDED_ALL;
+ protected $headers = Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_AWS_ELB;
}
diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php
old mode 100755
new mode 100644
diff --git a/app/Http/Requests/AttendanceStoreRequest.php b/app/Http/Requests/AttendanceStoreRequest.php
new file mode 100644
index 000000000..2fb330859
--- /dev/null
+++ b/app/Http/Requests/AttendanceStoreRequest.php
@@ -0,0 +1,36 @@
+user()->can('take attendances');
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'course_id' => 'integer',
+ 'class_id' => 'integer',
+ 'section_id' => 'integer',
+ 'student_ids' => 'required|array|min:1',
+ 'student_ids.*' => 'integer',
+ 'status' => 'required|array|min:1',
+ 'session_id' => 'required',
+ ];
+ }
+}
diff --git a/app/Http/Requests/Account/UpdateAccountRequest.php b/app/Http/Requests/AttendanceTypeUpdateRequest.php
old mode 100755
new mode 100644
similarity index 66%
rename from app/Http/Requests/Account/UpdateAccountRequest.php
rename to app/Http/Requests/AttendanceTypeUpdateRequest.php
index 444bd2c32..c9669cb65
--- a/app/Http/Requests/Account/UpdateAccountRequest.php
+++ b/app/Http/Requests/AttendanceTypeUpdateRequest.php
@@ -1,10 +1,10 @@
user()->can('update attendances type');
}
/**
@@ -24,8 +24,7 @@ public function authorize()
public function rules()
{
return [
- 'name' => 'required|string',
- 'amount' => 'required|numeric',
+ 'attendance_type' => 'required'
];
}
}
diff --git a/app/Http/Requests/Course/SaveConfigurationRequest.php b/app/Http/Requests/Course/SaveConfigurationRequest.php
deleted file mode 100755
index 03138589f..000000000
--- a/app/Http/Requests/Course/SaveConfigurationRequest.php
+++ /dev/null
@@ -1,45 +0,0 @@
- 'required|string',
- 'quiz_count' => 'required|numeric|min:0|max:5',
- 'assignment_count' => 'required|numeric|min:0|max:3',
- 'ct_count' => 'required|numeric|min:0|max:5',
- 'quiz_percent' => 'required|numeric|min:0|max:100',
- 'attendance_percent' => 'required|numeric|min:0|max:100',
- 'assignment_percent' => 'required|numeric|min:0|max:100',
- 'ct_percent' => 'required|numeric|min:0|max:100',
- 'final_exam_percent' => 'required|numeric|min:0|max:100',
- 'practical_percent' => 'required|numeric|min:0|max:100',
- 'att_fullmark' => 'required|numeric|min:0|max:100',
- 'quiz_fullmark' => 'required|numeric|min:0|max:100',
- 'a_fullmark' => 'required|numeric|min:0|max:100',
- 'ct_fullmark' => 'required|numeric|min:0|max:100',
- 'final_fullmark' => 'required|numeric|min:0|max:100',
- 'practical_fullmark' => 'required|numeric|min:0|max:100',
- ];
- }
-}
diff --git a/app/Http/Requests/Attendance/StoreAttendanceRequest.php b/app/Http/Requests/CourseStoreRequest.php
old mode 100755
new mode 100644
similarity index 50%
rename from app/Http/Requests/Attendance/StoreAttendanceRequest.php
rename to app/Http/Requests/CourseStoreRequest.php
index 5132055e4..18884addc
--- a/app/Http/Requests/Attendance/StoreAttendanceRequest.php
+++ b/app/Http/Requests/CourseStoreRequest.php
@@ -1,10 +1,10 @@
user()->can('create courses');
}
/**
@@ -24,12 +24,11 @@ public function authorize()
public function rules()
{
return [
- 'students' => 'required|array',
- 'attendances' => 'required|array',
- 'section_id' => 'required',
- 'exam_id' => 'required',
- 'update' => 'required',
- 'isPresent*' => 'required',
+ 'course_name' => 'required',
+ 'course_type' => 'required',
+ 'class_id' => 'required|integer|gt:0',
+ 'semester_id' => 'required|integer|gt:0',
+ 'session_id' => 'required|integer|gt:0',
];
}
}
diff --git a/app/Http/Requests/ExamRuleStoreRequest.php b/app/Http/Requests/ExamRuleStoreRequest.php
new file mode 100644
index 000000000..f1e981c44
--- /dev/null
+++ b/app/Http/Requests/ExamRuleStoreRequest.php
@@ -0,0 +1,34 @@
+user()->can('create exams rule');
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'total_marks' => 'required|numeric',
+ 'pass_marks' => 'required|numeric',
+ 'marks_distribution_note' => 'required',
+ 'exam_id' => 'required|integer',
+ 'session_id' => 'required|integer'
+ ];
+ }
+}
diff --git a/app/Http/Requests/ExamStoreRequest.php b/app/Http/Requests/ExamStoreRequest.php
new file mode 100644
index 000000000..0b27556d9
--- /dev/null
+++ b/app/Http/Requests/ExamStoreRequest.php
@@ -0,0 +1,36 @@
+user()->can('create exams');
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'exam_name' => 'required|string',
+ 'start_date' => 'required|date',
+ 'end_date' => 'required|date',
+ 'semester_id' => 'required|integer|gt:0',
+ 'class_id' => 'required|integer|gt:0',
+ 'course_id' => 'required|integer|gt:0',
+ 'session_id' => 'required|integer|gt:0',
+ ];
+ }
+}
diff --git a/app/Http/Requests/Grade/CalculateMarksRequest.php b/app/Http/Requests/Grade/CalculateMarksRequest.php
deleted file mode 100755
index 2672efb37..000000000
--- a/app/Http/Requests/Grade/CalculateMarksRequest.php
+++ /dev/null
@@ -1,34 +0,0 @@
- 'required|numeric',
- 'grade_system_name' => 'required|string',
- 'exam_id' => 'required|numeric',
- 'course_id' => 'required|numeric',
- 'section_id' => 'required|numeric',
- ];
- }
-}
diff --git a/app/Http/Requests/GradeRuleStoreRequest.php b/app/Http/Requests/GradeRuleStoreRequest.php
new file mode 100644
index 000000000..b640c8467
--- /dev/null
+++ b/app/Http/Requests/GradeRuleStoreRequest.php
@@ -0,0 +1,35 @@
+user()->can('create grading systems rule');
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'point' => 'required',
+ 'grade' => 'required',
+ 'start_at' => 'required',
+ 'end_at' => 'required',
+ 'grading_system_id' => 'required',
+ 'session_id' => 'required',
+ ];
+ }
+}
diff --git a/app/Http/Requests/GradingSystemStoreRequest.php b/app/Http/Requests/GradingSystemStoreRequest.php
new file mode 100644
index 000000000..e844bee90
--- /dev/null
+++ b/app/Http/Requests/GradingSystemStoreRequest.php
@@ -0,0 +1,33 @@
+user()->can('create grading systems');
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'system_name' => 'required|string',
+ 'class_id' => 'required|integer',
+ 'semester_id' => 'required|integer',
+ 'session_id' => 'required|integer'
+ ];
+ }
+}
diff --git a/app/Http/Requests/Library/BookRequest.php b/app/Http/Requests/Library/BookRequest.php
deleted file mode 100755
index cf2d590ee..000000000
--- a/app/Http/Requests/Library/BookRequest.php
+++ /dev/null
@@ -1,47 +0,0 @@
- 'required',
- 'book_code' => 'required',
- 'author' => 'required',
- 'quantity' => 'required',
- 'rackNo' => 'required',
- 'rowNo' => 'required',
- 'type' => 'required',
- 'about' => 'required',
- 'price' => 'required',
- 'img_path' => 'required',
- 'class_id' => 'required',
- ];
-
- /**
- * Validate 'book_code' only when a new Book is created.
- */
- if ($this->getMethod() == 'POST') $rules['book_code'] .= '|unique:books,book_code';
-
- return $rules;
- }
-}
diff --git a/app/Http/Requests/Account/StoreSectorRequest.php b/app/Http/Requests/NoticeStoreRequest.php
old mode 100755
new mode 100644
similarity index 63%
rename from app/Http/Requests/Account/StoreSectorRequest.php
rename to app/Http/Requests/NoticeStoreRequest.php
index 55b2b667b..1210891f1
--- a/app/Http/Requests/Account/StoreSectorRequest.php
+++ b/app/Http/Requests/NoticeStoreRequest.php
@@ -1,11 +1,11 @@
user()->can('create notices');
}
-
+
/**
* Get the validation rules that apply to the request.
*
@@ -24,8 +24,8 @@ public function authorize()
public function rules()
{
return [
- 'name' => 'sometimes|required|string',
- 'type' => 'sometimes|required|string',
+ 'notice' => 'required',
+ 'session_id'=> 'required',
];
}
}
diff --git a/app/Http/Requests/PasswordChangeRequest.php b/app/Http/Requests/PasswordChangeRequest.php
new file mode 100644
index 000000000..f11cb1095
--- /dev/null
+++ b/app/Http/Requests/PasswordChangeRequest.php
@@ -0,0 +1,41 @@
+ ['required', Password::min(8)],
+ 'new_password' => [
+ 'required',
+ 'confirmed',
+ Password::min(8)
+ ->letters()
+ ->mixedCase()
+ ->numbers()
+ ->symbols()
+ ->uncompromised()
+ ],
+ ];
+ }
+}
diff --git a/app/Http/Requests/RoutineStoreRequest.php b/app/Http/Requests/RoutineStoreRequest.php
new file mode 100644
index 000000000..28030c6d3
--- /dev/null
+++ b/app/Http/Requests/RoutineStoreRequest.php
@@ -0,0 +1,36 @@
+user()->can('create routines');
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'start' => 'required',
+ 'end' => 'required',
+ 'weekday' => 'required|integer',
+ 'class_id' => 'required|integer',
+ 'section_id' => 'required|integer',
+ 'course_id' => 'required|integer',
+ 'session_id' => 'required|integer',
+ ];
+ }
+}
diff --git a/app/Http/Requests/SchoolRequest.php b/app/Http/Requests/SchoolClassStoreRequest.php
old mode 100755
new mode 100644
similarity index 63%
rename from app/Http/Requests/SchoolRequest.php
rename to app/Http/Requests/SchoolClassStoreRequest.php
index d0484231d..5012353d0
--- a/app/Http/Requests/SchoolRequest.php
+++ b/app/Http/Requests/SchoolClassStoreRequest.php
@@ -4,7 +4,7 @@
use Illuminate\Foundation\Http\FormRequest;
-class SchoolRequest extends FormRequest
+class SchoolClassStoreRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
@@ -13,7 +13,7 @@ class SchoolRequest extends FormRequest
*/
public function authorize()
{
- return true;
+ return auth()->user()->can('create classes');
}
/**
@@ -24,10 +24,8 @@ public function authorize()
public function rules()
{
return [
- 'name' => 'required|string|max:255',
- 'medium' => 'required',
- 'about' => 'required',
- 'established' => 'required',
+ 'class_name' => 'required',
+ 'session_id' => 'required|integer|gt:0',
];
}
}
diff --git a/app/Http/Requests/Account/StoreAccountRequest.php b/app/Http/Requests/SchoolSessionBrowseRequest.php
old mode 100755
new mode 100644
similarity index 62%
rename from app/Http/Requests/Account/StoreAccountRequest.php
rename to app/Http/Requests/SchoolSessionBrowseRequest.php
index 200157bdb..de6b1f13b
--- a/app/Http/Requests/Account/StoreAccountRequest.php
+++ b/app/Http/Requests/SchoolSessionBrowseRequest.php
@@ -1,10 +1,10 @@
user()->can('update browse by session');
}
/**
@@ -24,9 +24,7 @@ public function authorize()
public function rules()
{
return [
- 'name' => 'required|string',
- 'amount' => 'required|numeric',
- 'description' => 'required',
+ 'session_id' => 'required|integer|gt:0',
];
}
}
diff --git a/app/Http/Requests/SchoolSessionStoreRequest.php b/app/Http/Requests/SchoolSessionStoreRequest.php
new file mode 100644
index 000000000..42d15603d
--- /dev/null
+++ b/app/Http/Requests/SchoolSessionStoreRequest.php
@@ -0,0 +1,30 @@
+user()->can('create school sessions');
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'session_name' => 'required',
+ ];
+ }
+}
diff --git a/app/Http/Requests/SectionStoreRequest.php b/app/Http/Requests/SectionStoreRequest.php
new file mode 100644
index 000000000..b346c4298
--- /dev/null
+++ b/app/Http/Requests/SectionStoreRequest.php
@@ -0,0 +1,33 @@
+user()->can('create sections');
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'section_name' => 'required',
+ 'room_no' => 'required',
+ 'class_id' => 'required|integer|gt:0',
+ 'session_id' => 'required|integer|gt:0',
+ ];
+ }
+}
diff --git a/app/Http/Requests/SemesterStoreRequest.php b/app/Http/Requests/SemesterStoreRequest.php
new file mode 100644
index 000000000..f08a2cccc
--- /dev/null
+++ b/app/Http/Requests/SemesterStoreRequest.php
@@ -0,0 +1,33 @@
+user()->can('create semesters');
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'semester_name' => 'required',
+ 'start_date' => 'required|date',
+ 'end_date' => 'required|date',
+ 'session_id' => 'required|integer|gt:0',
+ ];
+ }
+}
diff --git a/app/Http/Requests/Exam/CreateExamRequest.php b/app/Http/Requests/StoreFileRequest.php
old mode 100755
new mode 100644
similarity index 57%
rename from app/Http/Requests/Exam/CreateExamRequest.php
rename to app/Http/Requests/StoreFileRequest.php
index ff18556e8..05c8d0823
--- a/app/Http/Requests/Exam/CreateExamRequest.php
+++ b/app/Http/Requests/StoreFileRequest.php
@@ -1,10 +1,10 @@
user()->can('create assignments') || auth()->user()->can('create syllabi'));
}
/**
@@ -24,10 +24,7 @@ public function authorize()
public function rules()
{
return [
- 'exam_name' => 'required|string',
- 'term' => 'required|string',
- 'start_date' => 'required|string',
- 'end_date' => 'required|string',
+ 'file' => 'required|file|mimes:jpg,jpeg,bmp,png,doc,docx,csv,rtf,xlsx,xls,txt,pdf,zip'
];
}
}
diff --git a/app/Http/Requests/StudentStoreRequest.php b/app/Http/Requests/StudentStoreRequest.php
new file mode 100644
index 000000000..eff5f4ff0
--- /dev/null
+++ b/app/Http/Requests/StudentStoreRequest.php
@@ -0,0 +1,58 @@
+user()->can('create users');
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'first_name' => 'required|string',
+ 'last_name' => 'required|string',
+ 'email' => 'required|string|email|max:255|unique:users',
+ 'gender' => 'required|string',
+ 'nationality' => 'required|string',
+ 'phone' => 'required|string',
+ 'address' => 'required|string',
+ 'address2' => 'nullable|string',
+ 'city' => 'required|string',
+ 'zip' => 'required|string',
+ 'photo' => 'nullable|string',
+ 'birthday' => 'required|date',
+ 'religion' => 'required|string',
+ 'blood_type' => 'required|string',
+ 'password' => 'required|string|min:8',
+
+ // Parents' information
+ 'father_name' => 'required|string',
+ 'father_phone' => 'required|string',
+ 'mother_name' => 'required|string',
+ 'mother_phone' => 'required|string',
+ 'parent_address' => 'required|string',
+
+ // Academic information
+ 'class_id' => 'required',
+ 'section_id' => 'required',
+ 'board_reg_no' => 'string',
+ 'session_id' => 'required',
+ 'id_card_number' => 'required',
+ ];
+ }
+}
diff --git a/app/Http/Requests/TeacherAssignRequest.php b/app/Http/Requests/TeacherAssignRequest.php
new file mode 100644
index 000000000..424706143
--- /dev/null
+++ b/app/Http/Requests/TeacherAssignRequest.php
@@ -0,0 +1,35 @@
+user()->can('assign teachers');
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'course_id' => 'required|integer',
+ 'semester_id' => 'required|integer',
+ 'class_id' => 'required|integer',
+ 'section_id' => 'required|integer',
+ 'teacher_id' => 'required|integer',
+ 'session_id' => 'required|integer',
+ ];
+ }
+}
diff --git a/app/Http/Requests/TeacherStoreRequest.php b/app/Http/Requests/TeacherStoreRequest.php
new file mode 100644
index 000000000..6b88f67ec
--- /dev/null
+++ b/app/Http/Requests/TeacherStoreRequest.php
@@ -0,0 +1,41 @@
+user()->can('create users');
+ }
+
+ /**
+ * Get the validation rules that apply to the request.
+ *
+ * @return array
+ */
+ public function rules()
+ {
+ return [
+ 'first_name' => 'required|string',
+ 'last_name' => 'required|string',
+ 'email' => 'required|string|email|max:255|unique:users',
+ 'gender' => 'required|string',
+ 'nationality' => 'required|string',
+ 'phone' => 'required|string',
+ 'address' => 'required|string',
+ 'address2' => 'string',
+ 'city' => 'required|string',
+ 'zip' => 'required|string',
+ 'photo' => 'nullable|string',
+ 'password' => 'required|string|min:8',
+ ];
+ }
+}
diff --git a/app/Http/Requests/User/ChangePasswordRequest.php b/app/Http/Requests/User/ChangePasswordRequest.php
deleted file mode 100755
index 9a6c37c59..000000000
--- a/app/Http/Requests/User/ChangePasswordRequest.php
+++ /dev/null
@@ -1,35 +0,0 @@
- 'required|min:6',
- 'new_password' => 'required|min:6',
- ];
- }
-}
diff --git a/app/Http/Requests/User/CreateAccountantRequest.php b/app/Http/Requests/User/CreateAccountantRequest.php
deleted file mode 100755
index 111fef910..000000000
--- a/app/Http/Requests/User/CreateAccountantRequest.php
+++ /dev/null
@@ -1,39 +0,0 @@
- 'required|string|max:255',
- 'password' => 'required|string|min:6|confirmed',
- 'gender' => 'required',
- 'blood_group' => 'required',
- 'phone_number' => 'required|unique:users',
- 'email' => 'sometimes|email|max:255|unique:users',
- ];
- }
-}
diff --git a/app/Http/Requests/User/CreateAdminRequest.php b/app/Http/Requests/User/CreateAdminRequest.php
deleted file mode 100755
index eb379de6a..000000000
--- a/app/Http/Requests/User/CreateAdminRequest.php
+++ /dev/null
@@ -1,39 +0,0 @@
- 'required|string|max:255',
- 'password' => 'required|string|min:6|confirmed',
- 'gender' => 'required',
- 'blood_group' => 'required',
- 'phone_number' => 'required|unique:users',
- 'email' => 'email|max:255|unique:users',
- ];
- }
-}
diff --git a/app/Http/Requests/User/CreateLibrarianRequest.php b/app/Http/Requests/User/CreateLibrarianRequest.php
deleted file mode 100755
index a33785d55..000000000
--- a/app/Http/Requests/User/CreateLibrarianRequest.php
+++ /dev/null
@@ -1,39 +0,0 @@
- 'required|string|max:255',
- 'email' => 'sometimes|email|max:255|unique:users',
- 'password' => 'required|string|min:6|confirmed',
- 'gender' => 'required',
- 'blood_group' => 'required',
- 'phone_number' => 'required|unique:users',
- ];
- }
-}
diff --git a/app/Http/Requests/User/CreateTeacherRequest.php b/app/Http/Requests/User/CreateTeacherRequest.php
deleted file mode 100755
index 9497202b1..000000000
--- a/app/Http/Requests/User/CreateTeacherRequest.php
+++ /dev/null
@@ -1,40 +0,0 @@
- 'required|string|max:255',
- 'email' => 'sometimes|email|max:255|unique:users',
- 'password' => 'required|string|min:6|confirmed',
- 'gender' => 'required',
- 'blood_group' => 'required',
- 'department_id' => 'required|numeric',
- 'phone_number' => 'required|unique:users',
- ];
- }
-}
diff --git a/app/Http/Requests/User/CreateUserRequest.php b/app/Http/Requests/User/CreateUserRequest.php
deleted file mode 100755
index 7cee5fc6f..000000000
--- a/app/Http/Requests/User/CreateUserRequest.php
+++ /dev/null
@@ -1,48 +0,0 @@
- 'required|string|max:255',
- 'email' => 'sometimes|email|max:255|unique:users',
- 'password' => 'required|string|min:6|confirmed',
- 'section' => 'required|numeric',
- 'gender' => 'required|string',
- 'blood_group' => 'required|string',
- 'nationality' => 'required|string',
- 'father_name' => 'required|string',
- 'mother_name' => 'required|string',
- 'phone_number' => 'required|string|unique:users',
- 'address' => 'required|string',
- 'session' => 'required',
- 'version' => 'required',
- 'birthday' => 'required',
- 'religion' => 'required|string',
- ];
- }
-}
diff --git a/app/Http/Requests/User/ImpersonateUserRequest.php b/app/Http/Requests/User/ImpersonateUserRequest.php
deleted file mode 100755
index 064f4949a..000000000
--- a/app/Http/Requests/User/ImpersonateUserRequest.php
+++ /dev/null
@@ -1,34 +0,0 @@
- 'required|numeric|exists:users,id'
- ];
- }
-}
diff --git a/app/Http/Requests/User/UpdateUserRequest.php b/app/Http/Requests/User/UpdateUserRequest.php
deleted file mode 100755
index fc32a7b07..000000000
--- a/app/Http/Requests/User/UpdateUserRequest.php
+++ /dev/null
@@ -1,44 +0,0 @@
- 'required|numeric',
- 'email' => 'required|email|max:255|' . Rule::unique('users')->ignore($this->get('user_id')),
- 'name' => 'required|string|max:255',
- 'phone_number' => 'required|string|' . Rule::unique('users')->ignore($this->get('user_id')),
- ];
-
- if ($this->get('user_role') == 'teacher') {
- $rules['department_id'] = 'required|numeric';
- }
-
- return $rules;
- }
-}
diff --git a/app/Http/Resources/AttendanceResource.php b/app/Http/Resources/AttendanceResource.php
deleted file mode 100755
index 2158bbd42..000000000
--- a/app/Http/Resources/AttendanceResource.php
+++ /dev/null
@@ -1,25 +0,0 @@
- $this->id,
- 'present' => $this->present,
- 'created_at' => (string) $this->created_at,
- 'student' => new UserResource($this->student),
- //'section' => new SectionResource($this->section)
- ];
- }
-}
diff --git a/app/Http/Resources/BookResource.php b/app/Http/Resources/BookResource.php
deleted file mode 100755
index 2e200aa0c..000000000
--- a/app/Http/Resources/BookResource.php
+++ /dev/null
@@ -1,26 +0,0 @@
- $this->id,
- 'course_name' => $this->course_name,
- 'img_path' => $this->img_path,
- 'about' => $this->about,
- 'price' => $this->price,
- 'class' => new ClassResource($this->class),
- ];
- }
-}
diff --git a/app/Http/Resources/ClassResource.php b/app/Http/Resources/ClassResource.php
deleted file mode 100755
index cd1db214b..000000000
--- a/app/Http/Resources/ClassResource.php
+++ /dev/null
@@ -1,23 +0,0 @@
- $this->id,
- 'class_number' => $this->class_number,
- 'school' => new SchoolResource($this->school),
- ];
- }
-}
diff --git a/app/Http/Resources/CourseResource.php b/app/Http/Resources/CourseResource.php
deleted file mode 100755
index 45a0d21c4..000000000
--- a/app/Http/Resources/CourseResource.php
+++ /dev/null
@@ -1,25 +0,0 @@
- $this->id,
- 'course_name' => $this->course_name,
- 'course_time' => $this->course_time,
- 'teacher' => new UserResource($this->teacher),
- 'section' => new SectionResource($this->section),
- ];
- }
-}
diff --git a/app/Http/Resources/EventResource.php b/app/Http/Resources/EventResource.php
deleted file mode 100755
index ff40805cf..000000000
--- a/app/Http/Resources/EventResource.php
+++ /dev/null
@@ -1,23 +0,0 @@
- $this->id,
- 'description' => $this->description,
- 'class' => new ClassResource($this->class),
- ];
- }
-}
diff --git a/app/Http/Resources/FaqResource.php b/app/Http/Resources/FaqResource.php
deleted file mode 100755
index a3884bc69..000000000
--- a/app/Http/Resources/FaqResource.php
+++ /dev/null
@@ -1,23 +0,0 @@
- $this->id,
- 'question' => $this->question,
- 'answer' => $this->answer,
- ];
- }
-}
diff --git a/app/Http/Resources/FeedbackResource.php b/app/Http/Resources/FeedbackResource.php
deleted file mode 100755
index faa89e3a7..000000000
--- a/app/Http/Resources/FeedbackResource.php
+++ /dev/null
@@ -1,24 +0,0 @@
- $this->id,
- 'description' => $this->description,
- 'teacher' => new UserResource($this->teacher),
- 'student' => new UserResource($this->student),
- ];
- }
-}
diff --git a/app/Http/Resources/FormResource.php b/app/Http/Resources/FormResource.php
deleted file mode 100755
index d2c6a4898..000000000
--- a/app/Http/Resources/FormResource.php
+++ /dev/null
@@ -1,23 +0,0 @@
- $this->id,
- 'file_path' => $this->file_path,
- 'school' => new SchoolResource($this->school),
- ];
- }
-}
diff --git a/app/Http/Resources/GradeResource.php b/app/Http/Resources/GradeResource.php
deleted file mode 100755
index 719229977..000000000
--- a/app/Http/Resources/GradeResource.php
+++ /dev/null
@@ -1,26 +0,0 @@
- $this->id,
- 'marks' => $this->marks,
- //'exam_name' => $this->exam_name,
- 'course' => new CourseResource($this->course),
- 'teacher' => new UserResource($this->teacher),
- 'student' => new UserResource($this->student),
- ];
- }
-}
diff --git a/app/Http/Resources/HomeworkResource.php b/app/Http/Resources/HomeworkResource.php
deleted file mode 100755
index 6890ba5f7..000000000
--- a/app/Http/Resources/HomeworkResource.php
+++ /dev/null
@@ -1,25 +0,0 @@
- $this->id,
- 'description' => $this->description,
- 'file_path' => $this->file_path,
- 'section' => new SectionResource($this->section),
- 'teacher' => new UserResource($this->teacher),
- ];
- }
-}
diff --git a/app/Http/Resources/MessageResource.php b/app/Http/Resources/MessageResource.php
deleted file mode 100755
index d9bad8854..000000000
--- a/app/Http/Resources/MessageResource.php
+++ /dev/null
@@ -1,25 +0,0 @@
- $this->id,
- 'phone_number' => $this->phone_number,
- 'email' => $this->email,
- 'message' => $this->message,
- 'school' => new SchoolResource($this->school),
- ];
- }
-}
diff --git a/app/Http/Resources/NoticeResource.php b/app/Http/Resources/NoticeResource.php
deleted file mode 100755
index 2fa2206c7..000000000
--- a/app/Http/Resources/NoticeResource.php
+++ /dev/null
@@ -1,24 +0,0 @@
- $this->id,
- 'file_path' => $this->file_path,
- 'description' => $this->description,
- 'school' => new SchoolResource($this->school),
- ];
- }
-}
diff --git a/app/Http/Resources/NotificationResource.php b/app/Http/Resources/NotificationResource.php
deleted file mode 100755
index 9c789f6a9..000000000
--- a/app/Http/Resources/NotificationResource.php
+++ /dev/null
@@ -1,23 +0,0 @@
- $this->id,
- 'message' => $this->message,
- 'student' => new UserResource($this->student),
- ];
- }
-}
diff --git a/app/Http/Resources/RoutineResource.php b/app/Http/Resources/RoutineResource.php
deleted file mode 100755
index c6e89c26b..000000000
--- a/app/Http/Resources/RoutineResource.php
+++ /dev/null
@@ -1,23 +0,0 @@
- $this->id,
- 'file_path' => $this->file_path,
- 'class' => new ClassResource($this->class),
- ];
- }
-}
diff --git a/app/Http/Resources/SchoolResource.php b/app/Http/Resources/SchoolResource.php
deleted file mode 100755
index 713827adb..000000000
--- a/app/Http/Resources/SchoolResource.php
+++ /dev/null
@@ -1,24 +0,0 @@
- $this->id,
- 'name' => $this->name,
- 'about' => $this->about,
- 'code' => $this->code,
- ];
- }
-}
diff --git a/app/Http/Resources/SectionResource.php b/app/Http/Resources/SectionResource.php
deleted file mode 100755
index d6c758d7a..000000000
--- a/app/Http/Resources/SectionResource.php
+++ /dev/null
@@ -1,24 +0,0 @@
- $this->id,
- 'section_number' => $this->section_number,
- 'room_number' => $this->room_number,
- 'class' => new ClassResource($this->class),
- ];
- }
-}
diff --git a/app/Http/Resources/SyllabusResource.php b/app/Http/Resources/SyllabusResource.php
deleted file mode 100755
index 201f1b296..000000000
--- a/app/Http/Resources/SyllabusResource.php
+++ /dev/null
@@ -1,23 +0,0 @@
- $this->id,
- 'file_path' => $this->file_path,
- 'class' => new SchoolResource($this->class),
- ];
- }
-}
diff --git a/app/Http/Resources/UserResource.php b/app/Http/Resources/UserResource.php
deleted file mode 100755
index bf2a952fa..000000000
--- a/app/Http/Resources/UserResource.php
+++ /dev/null
@@ -1,34 +0,0 @@
- $this->id,
- 'name' => $this->name,
- 'role' => $this->role,
- 'email' => $this->email,
- 'address' => $this->address,
- 'about' => $this->about,
- 'pic_path' => (!empty($this->pic_path))?$this->pic_path:null,
- 'phone_number' => $this->phone_number,
- 'school_code' => $this->code,
- 'school' => new SchoolResource(\App\School::where('code',$this->code)->first()),
- 'student_code' => $this->student_code,
- 'section' => new SectionResource($this->section),
- 'father_name' => $this->father_name,
- 'mother_name' => $this->mother_name,
- ];
- }
-}
diff --git a/app/Http/Traits/GradeTrait.php b/app/Http/Traits/GradeTrait.php
deleted file mode 100755
index d387a24ce..000000000
--- a/app/Http/Traits/GradeTrait.php
+++ /dev/null
@@ -1,76 +0,0 @@
-where('exam_id', $exam_id)
- ->count();
- if($countGradeIds < 1){// Not added
- // Get student ids of that section
- $students = \App\User::where('section_id',$section_id)
- ->where('role','student')
- ->where('active',1)
- ->pluck('id')
- ->toArray();
- $grades = Grade::whereIn('student_id',$students)
- ->where('course_id',$course_id)
- ->where('exam_id',$exam_id)
- ->pluck('student_id')
- ->toArray();
-
- $grade_student_ids = array();
-
- foreach($grades as $grade){
- array_push($grade_student_ids, $grade->student_id);
- }
-
- foreach($students as $student_id){
- if(!in_array($student_id,$grade_student_ids)){
- // Put default values
- $tb = new Grade;
- $tb->gpa = 0;
- $tb->marks = 0;
- $tb->attendance = 0;
- $tb->quiz1 = 0;
- $tb->quiz2 = 0;
- $tb->quiz3 = 0;
- $tb->quiz4 = 0;
- $tb->quiz5 = 0;
- $tb->ct1 = 0;
- $tb->ct2 = 0;
- $tb->ct3 = 0;
- $tb->ct4 = 0;
- $tb->ct5 = 0;
- $tb->assignment1 = 0;
- $tb->assignment2 = 0;
- $tb->assignment3 = 0;
- $tb->written = 0;
- $tb->mcq = 0;
- $tb->practical = 0;
- $tb->exam_id = $exam_id;
- $tb->student_id = $student_id;
- $tb->teacher_id = $teacher_id;
- $tb->course_id = $course_id;
- $tb->created_at = date('Y-m-d H:i:s');
- $tb->updated_at = date('Y-m-d H:i:s');
- //$tb->user_id = \Auth::user()->id; // User id who is logged in while this command executes
- $tbc[] = $tb->attributesToArray();
- }
- }
- try{
- if(count($tbc) > 0)
- // Insert students of that section to give marks later for this course and Examination
- Grade::insert($tbc);
- return;
- }catch(\Exception $e){
- return false;
- }
- } else {// Added desired course for desired exam
- return true;
- }
- }
-}
\ No newline at end of file
diff --git a/app/Imports/FirstStudentSheetImport.php b/app/Imports/FirstStudentSheetImport.php
deleted file mode 100755
index 6b993df99..000000000
--- a/app/Imports/FirstStudentSheetImport.php
+++ /dev/null
@@ -1,92 +0,0 @@
-getIndex();
-
- if($rowIndex >= 200)
- return; // Not more than 200 rows at a time
-
- $row = $row->toArray();
-
- $this->class = (string) $row[__('class')];
- $this->section = (string) $row[__('section')];
-
- $user = [
- 'name' => $row[__('name')],
- 'email' => $row[__('email')],
- 'password' => Hash::make($row[__('password')]),
- 'active' => 1,
- 'role' => 'student',
- 'school_id' => auth()->user()->school_id,
- 'code' => auth()->user()->code,
- 'student_code' => auth()->user()->school_id.date('y').substr(number_format(time() * mt_rand(), 0, '', ''), 0, 5),
- 'address' => $row[__('address')],
- 'about' => $row[__('about')],
- 'pic_path' => '',
- 'phone_number' => $row[__('phone_number')],
- 'verified' => 1,
- 'section_id' => $this->getSectionId(),
- 'blood_group' => $row[__('blood_group')],
- 'nationality' => $row[__('nationality')],
- 'gender' => $row[__('gender')],
- ];
-
- $tb = create(User::class, $user);
-
- $student_info = [
- 'student_id' => $tb->id,
- 'session' => $row[__('session')] ?? now()->year,
- 'version' => $row[__('version')] ?? '',
- 'group' => $row[__('group')] ?? '',
- 'birthday' => $row[__('birthday')]?? date('Y-m-d'),
- 'religion' => $row[__('religion')] ?? '',
- 'father_name' => $row[__('father_name')],
- 'father_phone_number' => $row[__('father_phone_number')] ?? '',
- 'father_national_id' => $row[__('father_national_id')] ?? '',
- 'father_occupation' => $row[__('father_occupation')] ?? '',
- 'father_designation' => $row[__('father_designation')] ?? '',
- 'father_annual_income' => $row[__('father_annual_income')] ?? '',
- 'mother_name' => $row[__('mother_name')],
- 'mother_phone_number' => $row[__('mother_phone_number')] ?? '',
- 'mother_national_id' => $row[__('mother_national_id')] ?? '',
- 'mother_occupation' => $row[__('mother_occupation')] ?? '',
- 'mother_designation' => $row[__('mother_designation')] ?? '',
- 'mother_annual_income' => $row[__('mother_annual_income')] ?? '',
- 'user_id' => auth()->user()->id,
- ];
-
- create(StudentInfo::class, $student_info);
- }
-
- public function getSectionId(){
- if(!empty($this->class) && !empty($this->section)){
- $class_id = Myclass::bySchool(auth()->user()->school_id)->where('class_number', $this->class)->pluck('id')->first();
-
- $section = Section::where('class_id', $class_id)->where('section_number', $this->section)->pluck('id')->first();
-
- return $section;
- } else {
- return 0;
- }
- }
-}
diff --git a/app/Imports/FirstTeacherSheetImport.php b/app/Imports/FirstTeacherSheetImport.php
deleted file mode 100755
index 249665b42..000000000
--- a/app/Imports/FirstTeacherSheetImport.php
+++ /dev/null
@@ -1,69 +0,0 @@
-class = (string) $row[__('class')];
- $this->section = (string) $row[__('section')];
- $this->department = $row[__('department')];
-
- return new User([
- 'name' => $row[__('name')],
- 'email' => $row[__('email')],
- 'password' => Hash::make($row[__('password')]),
- 'active' => 1,
- 'role' => 'teacher',
- 'school_id' => auth()->user()->school_id,
- 'code' => auth()->user()->code,
- 'student_code' => auth()->user()->school_id.date('y').substr(number_format(time() * mt_rand(), 0, '', ''), 0, 5),
- 'address' => $row[__('address')],
- 'about' => $row[__('about')],
- 'pic_path' => '',
- 'phone_number' => $row[__('phone_number')],
- 'verified' => 1,
- 'section_id' => $this->getSectionId(),// For assigning as class teacher
- 'blood_group' => $row[__('blood_group')] ?? '',
- 'nationality' => $row[__('nationality')] ?? '',
- 'gender' => $row[__('gender')],
- 'department_id' => $this->getDepartmentId(),
- ]);
- }
-
- public function getSectionId(){
- if(!empty($this->class) && !empty($this->section)){
- $class_id = Myclass::bySchool(auth()->user()->school_id)->where('class_number', $this->class)->pluck('id')->first();
-
- return Section::where('class_id', $class_id)->where('section_number', $this->section)->pluck('id')->first();
- } else {
- return 0;
- }
- }
-
- public function getDepartmentId(){
- return Department::bySchool(auth()->user()->school_id)->where('department_name',$this->department)->pluck('id')->first();
- }
-
- public function batchSize(): int
- {
- return 200;
- }
-}
diff --git a/app/Imports/StudentsImport.php b/app/Imports/StudentsImport.php
deleted file mode 100755
index 2d0c1b7ef..000000000
--- a/app/Imports/StudentsImport.php
+++ /dev/null
@@ -1,15 +0,0 @@
-belongsTo('App\Book');
- }
-}
diff --git a/app/Listeners/SendWelcomeEmail.php b/app/Listeners/SendWelcomeEmail.php
deleted file mode 100755
index d76e0a482..000000000
--- a/app/Listeners/SendWelcomeEmail.php
+++ /dev/null
@@ -1,33 +0,0 @@
-user)->send(new SendWelcomeEmailToUser($event->user, $event->password));
- }
-}
diff --git a/app/Listeners/UpdateStudentInfo.php b/app/Listeners/UpdateStudentInfo.php
deleted file mode 100755
index d1f06916d..000000000
--- a/app/Listeners/UpdateStudentInfo.php
+++ /dev/null
@@ -1,39 +0,0 @@
-userService = $userService;
- }
-
- /**
- * Handle the event.
- *
- * @param StudentInfoUpdateRequested $event
- * @return void
- */
- public function handle(StudentInfoUpdateRequested $event)
- {
- try{
- $this->userService->updateStudentInfo($event->request,$event->student_id);
- return true;
- } catch(\Exception $ex) {
- Log::info('Failed to update Student information, Id: '.$event->user_id);
- return false;
- }
- }
-}
diff --git a/app/Mail/SendWelcomeEmailToUser.php b/app/Mail/SendWelcomeEmailToUser.php
deleted file mode 100755
index 74bb55ec3..000000000
--- a/app/Mail/SendWelcomeEmailToUser.php
+++ /dev/null
@@ -1,43 +0,0 @@
-user = $user;
- $this->password = $password;
- }
-
- /**
- * Build the message.
- *
- * @return $this
- */
- public function build()
- {
- return $this->subject('Welcome to ' . config('app.name'))->markdown('email.user.welcome')
- ->with([
- 'name' => $this->user->name,
- 'email' => $this->user->email,
- 'password' => $this->password,
- ]);
- }
-}
diff --git a/app/Message.php b/app/Message.php
deleted file mode 100755
index 086e9192a..000000000
--- a/app/Message.php
+++ /dev/null
@@ -1,16 +0,0 @@
-belongsTo('App\School');
- }
-}
diff --git a/app/Model.php b/app/Model.php
deleted file mode 100755
index 0aea51afd..000000000
--- a/app/Model.php
+++ /dev/null
@@ -1,16 +0,0 @@
- where( 'school_id', $school_id );
- }
-}
diff --git a/app/Models/AcademicSetting.php b/app/Models/AcademicSetting.php
new file mode 100644
index 000000000..f6582e15e
--- /dev/null
+++ b/app/Models/AcademicSetting.php
@@ -0,0 +1,11 @@
+belongsTo(User::class, 'teacher_id');
+ }
+
+ /**
+ * Get the schoolClass.
+ */
+ public function schoolClass() {
+ return $this->belongsTo(SchoolClass::class, 'class_id');
+ }
+
+ /**
+ * Get the section.
+ */
+ public function section() {
+ return $this->belongsTo(Section::class, 'section_id');
+ }
+
+ /**
+ * Get the course.
+ */
+ public function course() {
+ return $this->belongsTo(Course::class, 'course_id');
+ }
+}
diff --git a/app/Models/Assignment.php b/app/Models/Assignment.php
new file mode 100644
index 000000000..a3b86b594
--- /dev/null
+++ b/app/Models/Assignment.php
@@ -0,0 +1,56 @@
+belongsTo(User::class, 'teacher_id');
+ }
+
+ /**
+ * Get the schoolClass.
+ */
+ public function schoolClass() {
+ return $this->belongsTo(SchoolClass::class, 'class_id');
+ }
+
+ /**
+ * Get the section.
+ */
+ public function section() {
+ return $this->belongsTo(Section::class, 'section_id');
+ }
+
+ /**
+ * Get the course.
+ */
+ public function course() {
+ return $this->belongsTo(Course::class, 'course_id');
+ }
+}
diff --git a/app/Models/Attendance.php b/app/Models/Attendance.php
new file mode 100644
index 000000000..ac8429c25
--- /dev/null
+++ b/app/Models/Attendance.php
@@ -0,0 +1,58 @@
+belongsTo(User::class, 'student_id');
+ }
+
+ /**
+ * Get the schoolClass for attendance.
+ */
+ public function schoolClass() {
+ return $this->belongsTo(SchoolClass::class, 'class_id');
+ }
+
+ /**
+ * Get the section for attendance.
+ */
+ public function section() {
+ return $this->belongsTo(Section::class, 'section_id');
+ }
+
+ /**
+ * Get the course for attendance.
+ */
+ public function course() {
+ return $this->belongsTo(Course::class, 'course_id');
+ }
+}
diff --git a/app/Models/Course.php b/app/Models/Course.php
new file mode 100644
index 000000000..c94549774
--- /dev/null
+++ b/app/Models/Course.php
@@ -0,0 +1,13 @@
+belongsTo(Course::class, 'course_id');
+ }
+
+ /**
+ * Get the semester.
+ */
+ public function semester() {
+ return $this->belongsTo(Semester::class, 'semester_id');
+ }
+}
diff --git a/app/Models/ExamRule.php b/app/Models/ExamRule.php
new file mode 100644
index 000000000..7d86152a6
--- /dev/null
+++ b/app/Models/ExamRule.php
@@ -0,0 +1,19 @@
+belongsTo(User::class, 'student_id');
+ }
+}
diff --git a/app/Models/GradeRule.php b/app/Models/GradeRule.php
new file mode 100644
index 000000000..1b1f731be
--- /dev/null
+++ b/app/Models/GradeRule.php
@@ -0,0 +1,25 @@
+belongsTo(GradingSystem::class, 'grading_system_id');
+ }
+}
diff --git a/app/Models/GradingSystem.php b/app/Models/GradingSystem.php
new file mode 100644
index 000000000..2591af85f
--- /dev/null
+++ b/app/Models/GradingSystem.php
@@ -0,0 +1,28 @@
+belongsTo(Semester::class, 'semester_id');
+ }
+
+ public function schoolClass() {
+ return $this->belongsTo(SchoolClass::class, 'class_id');
+ }
+}
diff --git a/app/Models/Mark.php b/app/Models/Mark.php
new file mode 100644
index 000000000..357f7d3b6
--- /dev/null
+++ b/app/Models/Mark.php
@@ -0,0 +1,59 @@
+belongsTo(User::class, 'student_id');
+ }
+
+ /**
+ * Get the schoolClass.
+ */
+ public function schoolClass() {
+ return $this->belongsTo(SchoolClass::class, 'class_id');
+ }
+
+ /**
+ * Get the section.
+ */
+ public function section() {
+ return $this->belongsTo(Section::class, 'section_id');
+ }
+
+ /**
+ * Get the course.
+ */
+ public function course() {
+ return $this->belongsTo(Course::class, 'course_id');
+ }
+
+ /**
+ * Get the exam.
+ */
+ public function exam() {
+ return $this->belongsTo(Exam::class, 'exam_id');
+ }
+}
diff --git a/app/Models/Notice.php b/app/Models/Notice.php
new file mode 100644
index 000000000..35d08e31f
--- /dev/null
+++ b/app/Models/Notice.php
@@ -0,0 +1,16 @@
+belongsTo(User::class, 'student_id');
+ }
+
+ /**
+ * Get the schoolClass.
+ */
+ public function schoolClass() {
+ return $this->belongsTo(SchoolClass::class, 'class_id');
+ }
+
+ /**
+ * Get the section.
+ */
+ public function section() {
+ return $this->belongsTo(Section::class, 'section_id');
+ }
+}
diff --git a/app/Models/Routine.php b/app/Models/Routine.php
new file mode 100644
index 000000000..9f3490a0f
--- /dev/null
+++ b/app/Models/Routine.php
@@ -0,0 +1,47 @@
+belongsTo(SchoolClass::class, 'class_id');
+ }
+
+ /**
+ * Get the section.
+ */
+ public function section() {
+ return $this->belongsTo(Section::class, 'section_id');
+ }
+
+ /**
+ * Get the course.
+ */
+ public function course() {
+ return $this->belongsTo(Course::class, 'course_id');
+ }
+}
diff --git a/app/Models/SchoolClass.php b/app/Models/SchoolClass.php
new file mode 100644
index 000000000..61a528d58
--- /dev/null
+++ b/app/Models/SchoolClass.php
@@ -0,0 +1,40 @@
+hasMany(Section::class, 'class_id', 'id');
+ }
+
+ /**
+ * Get the courses for the class.
+ */
+ public function courses()
+ {
+ return $this->hasMany(Course::class, 'class_id', 'id');
+ }
+
+ /**
+ * Get the syllabi for the class.
+ */
+ public function syllabi()
+ {
+ return $this->hasMany(Syllabus::class, 'class_id', 'id');
+ }
+}
diff --git a/app/Models/SchoolSession.php b/app/Models/SchoolSession.php
new file mode 100644
index 000000000..86f8e648b
--- /dev/null
+++ b/app/Models/SchoolSession.php
@@ -0,0 +1,13 @@
+belongsTo(SchoolClass::class, 'class_id');
+ }
+}
diff --git a/app/Models/Semester.php b/app/Models/Semester.php
new file mode 100644
index 000000000..4200991cd
--- /dev/null
+++ b/app/Models/Semester.php
@@ -0,0 +1,13 @@
+belongsTo(User::class, 'student_id');
+ }
+}
diff --git a/app/Models/StudentParentInfo.php b/app/Models/StudentParentInfo.php
new file mode 100644
index 000000000..bb68d709d
--- /dev/null
+++ b/app/Models/StudentParentInfo.php
@@ -0,0 +1,34 @@
+belongsTo(User::class, 'student_id');
+ }
+}
diff --git a/app/Models/Syllabus.php b/app/Models/Syllabus.php
new file mode 100644
index 000000000..889a7d136
--- /dev/null
+++ b/app/Models/Syllabus.php
@@ -0,0 +1,19 @@
+ 'datetime',
+ ];
+
+ /**
+ * Get the parent_info.
+ */
+ public function parent_info()
+ {
+ return $this->hasOne(StudentParentInfo::class, 'student_id', 'id');
+ }
+
+ /**
+ * Get the academic_info.
+ */
+ public function academic_info()
+ {
+ return $this->hasOne(StudentAcademicInfo::class, 'student_id', 'id');
+ }
+
+ /**
+ * Get the marks.
+ */
+ public function marks()
+ {
+ return $this->hasMany(Mark::class, 'student_id', 'id');
+ }
+}
diff --git a/app/Myclass.php b/app/Myclass.php
deleted file mode 100755
index 584da5f9e..000000000
--- a/app/Myclass.php
+++ /dev/null
@@ -1,40 +0,0 @@
-belongsTo('App\School');
- }
-
- public function sections()
- {
- return $this->hasMany('App\Section','class_id');
- }
-
- // public function exam()
- // {
- // return $this->belongsTo('App\ExamForClass');
- // }
-
- public function books()
- {
- return $this->hasMany('App\Book','class_id');
- }
-}
diff --git a/app/Notice.php b/app/Notice.php
deleted file mode 100755
index d5913af97..000000000
--- a/app/Notice.php
+++ /dev/null
@@ -1,16 +0,0 @@
-belongsTo('App\School');
- }
-}
diff --git a/app/Notification.php b/app/Notification.php
deleted file mode 100755
index 6932a8d85..000000000
--- a/app/Notification.php
+++ /dev/null
@@ -1,23 +0,0 @@
-belongsTo('App\User','student_id');
- }
- /**
- * Get the student record associated with the user.
- */
- public function teacher()
- {
- return $this->belongsTo('App\User','user_id');
- }
-}
diff --git a/app/Payment.php b/app/Payment.php
deleted file mode 100755
index 4f8ff0b27..000000000
--- a/app/Payment.php
+++ /dev/null
@@ -1,10 +0,0 @@
-app->bind(AcademicSettingInterface::class, AcademicSettingRepository::class);
+ }
+
+ /**
+ * Bootstrap services.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ //
+ }
+}
diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php
old mode 100755
new mode 100644
index f1f6350d5..ee8ca5bcd
--- a/app/Providers/AppServiceProvider.php
+++ b/app/Providers/AppServiceProvider.php
@@ -3,33 +3,26 @@
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
-use Illuminate\Support\Facades\Schema;
-use Illuminate\Http\Resources\Json\JsonResource;
class AppServiceProvider extends ServiceProvider
{
/**
- * Bootstrap any application services.
+ * Register any application services.
*
* @return void
*/
- public function boot()
+ public function register()
{
- Schema::defaultStringLength(191);
- JsonResource::withoutWrapping();
+ //
}
/**
- * Register any application services.
+ * Bootstrap any application services.
*
* @return void
*/
- public function register()
+ public function boot()
{
- if ($this->app->environment('local', 'testing')) {
- $this->app->register(\Laravel\Dusk\DuskServiceProvider::class);
- $this->app->register(\Barryvdh\Debugbar\ServiceProvider::class);
- $this->app->register(\Rap2hpoutre\LaravelLogViewer\LaravelLogViewerServiceProvider::class);
- }
+ //
}
}
diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php
old mode 100755
new mode 100644
index 5ea086523..ce7449164
--- a/app/Providers/AuthServiceProvider.php
+++ b/app/Providers/AuthServiceProvider.php
@@ -2,9 +2,8 @@
namespace App\Providers;
-use Laravel\Passport\Passport;
-use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
+use Illuminate\Support\Facades\Gate;
class AuthServiceProvider extends ServiceProvider
{
@@ -14,7 +13,7 @@ class AuthServiceProvider extends ServiceProvider
* @var array
*/
protected $policies = [
- 'App\Model' => 'App\Policies\ModelPolicy',
+ // 'App\Models\Model' => 'App\Policies\ModelPolicy',
];
/**
@@ -26,6 +25,6 @@ public function boot()
{
$this->registerPolicies();
- Passport::routes();
+ //
}
}
diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php
old mode 100755
new mode 100644
index 352cce44a..395c518bc
--- a/app/Providers/BroadcastServiceProvider.php
+++ b/app/Providers/BroadcastServiceProvider.php
@@ -2,8 +2,8 @@
namespace App\Providers;
-use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Broadcast;
+use Illuminate\Support\ServiceProvider;
class BroadcastServiceProvider extends ServiceProvider
{
diff --git a/app/Providers/CourseServiceProvider.php b/app/Providers/CourseServiceProvider.php
new file mode 100644
index 000000000..d1756c3d7
--- /dev/null
+++ b/app/Providers/CourseServiceProvider.php
@@ -0,0 +1,30 @@
+app->bind(CourseInterface::class, CourseRepository::class);
+ }
+
+ /**
+ * Bootstrap services.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ //
+ }
+}
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
old mode 100755
new mode 100644
index 918cbc3a7..a9f10a631
--- a/app/Providers/EventServiceProvider.php
+++ b/app/Providers/EventServiceProvider.php
@@ -2,8 +2,10 @@
namespace App\Providers;
-use Illuminate\Support\Facades\Event;
+use Illuminate\Auth\Events\Registered;
+use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
+use Illuminate\Support\Facades\Event;
class EventServiceProvider extends ServiceProvider
{
@@ -13,11 +15,8 @@ class EventServiceProvider extends ServiceProvider
* @var array
*/
protected $listen = [
- 'App\Events\UserRegistered' => [
- 'App\Listeners\SendWelcomeEmail',
- ],
- 'App\Events\StudentInfoUpdateRequested' => [
- 'App\Listeners\UpdateStudentInfo',
+ Registered::class => [
+ SendEmailVerificationNotification::class,
],
];
@@ -28,8 +27,6 @@ class EventServiceProvider extends ServiceProvider
*/
public function boot()
{
- parent::boot();
-
//
}
}
diff --git a/app/Providers/PurifySetupProvider.php b/app/Providers/PurifySetupProvider.php
new file mode 100644
index 000000000..67726f83f
--- /dev/null
+++ b/app/Providers/PurifySetupProvider.php
@@ -0,0 +1,58 @@
+config;
+
+ $config->set('HTML.DefinitionID', static::DEFINITION_ID);
+ $config->set('HTML.DefinitionRev', static::DEFINITION_REV);
+
+ if ($def = $config->maybeGetRawHTMLDefinition()) {
+ $this->setupDefinitions($def);
+ }
+
+ $purifier->config = $config;
+ }
+
+ /**
+ * Register the application services.
+ *
+ * @return void
+ */
+ public function register()
+ {
+ //
+ }
+
+ /**
+ * Adds elements and attributes to the HTML purifier
+ * definition required by the ckeditor editor.
+ *
+ * @param HTMLPurifier_HTMLDefinition $def
+ */
+ protected function setupDefinitions(HTMLPurifier_HTMLDefinition $def)
+ {
+ $def->addElement('figure', 'Block', 'Optional: (figcaption, Flow) | (Flow, figcaption) | Flow', 'Common');
+ $def->addAttribute('figure', 'class', 'Text');
+ }
+}
\ No newline at end of file
diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php
old mode 100755
new mode 100644
index bd6ade422..3bd3c81eb
--- a/app/Providers/RouteServiceProvider.php
+++ b/app/Providers/RouteServiceProvider.php
@@ -2,83 +2,62 @@
namespace App\Providers;
-use Illuminate\Support\Facades\Route;
+use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\RateLimiter;
+use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider
{
/**
- * This namespace is applied to your controller routes.
+ * The path to the "home" route for your application.
*
- * In addition, it is set as the URL generator's root namespace.
+ * This is used by Laravel authentication to redirect users after login.
*
* @var string
*/
- protected $namespace = 'App\Http\Controllers';
+ public const HOME = '/home';
/**
- * Define your route model bindings, pattern filters, etc.
+ * The controller namespace for the application.
*
- * @return void
- */
- public function boot()
- {
- Route::patterns([
- 'teacher_id' => '[0-9]+',
- 'course_id' => '[0-9]+',
- 'exam_id' => '[0-9]+',
- 'section_id' => '[0-9]+',
- 'student_id' => '[0-9]+',
- 'school_code' => '[0-9]+',
- 'user_code' => '[0-9]+',
- 'id' => '[0-9]+',
- 'code' => '[0-9]+',
- 'role' => '[a-z]+',
- ]);
-
- parent::boot();
- }
-
- /**
- * Define the routes for the application.
+ * When present, controller route declarations will automatically be prefixed with this namespace.
*
- * @return void
+ * @var string|null
*/
- public function map()
- {
- $this->mapApiRoutes();
-
- $this->mapWebRoutes();
-
- //
- }
+ // protected $namespace = 'App\\Http\\Controllers';
/**
- * Define the "web" routes for the application.
- *
- * These routes all receive session state, CSRF protection, etc.
+ * Define your route model bindings, pattern filters, etc.
*
* @return void
*/
- protected function mapWebRoutes()
+ public function boot()
{
- Route::middleware('web')
- ->namespace($this->namespace)
- ->group(base_path('routes/web.php'));
+ $this->configureRateLimiting();
+
+ $this->routes(function () {
+ Route::prefix('api')
+ ->middleware('api')
+ ->namespace($this->namespace)
+ ->group(base_path('routes/api.php'));
+
+ Route::middleware('web')
+ ->namespace($this->namespace)
+ ->group(base_path('routes/web.php'));
+ });
}
/**
- * Define the "api" routes for the application.
- *
- * These routes are typically stateless.
+ * Configure the rate limiters for the application.
*
* @return void
*/
- protected function mapApiRoutes()
+ protected function configureRateLimiting()
{
- Route::prefix('api')
- ->middleware('api')
- ->namespace($this->namespace)
- ->group(base_path('routes/api.php'));
+ RateLimiter::for('api', function (Request $request) {
+ return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
+ });
}
}
diff --git a/app/Providers/SchoolClassServiceProvider.php b/app/Providers/SchoolClassServiceProvider.php
new file mode 100644
index 000000000..08304ee66
--- /dev/null
+++ b/app/Providers/SchoolClassServiceProvider.php
@@ -0,0 +1,30 @@
+app->bind(SchoolClassInterface::class, SchoolClassRepository::class);
+ }
+
+ /**
+ * Bootstrap services.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ //
+ }
+}
diff --git a/app/Providers/SchoolSessionServiceProvider.php b/app/Providers/SchoolSessionServiceProvider.php
new file mode 100644
index 000000000..447ef1eff
--- /dev/null
+++ b/app/Providers/SchoolSessionServiceProvider.php
@@ -0,0 +1,30 @@
+app->bind(SchoolSessionInterface::class, SchoolSessionRepository::class);
+ }
+
+ /**
+ * Bootstrap services.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ //
+ }
+}
diff --git a/app/Providers/SectionServiceProvider.php b/app/Providers/SectionServiceProvider.php
new file mode 100644
index 000000000..43c20c913
--- /dev/null
+++ b/app/Providers/SectionServiceProvider.php
@@ -0,0 +1,30 @@
+app->bind(SectionInterface::class, SectionRepository::class);
+ }
+
+ /**
+ * Bootstrap services.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ //
+ }
+}
diff --git a/app/Providers/SemesterServiceProvider.php b/app/Providers/SemesterServiceProvider.php
new file mode 100644
index 000000000..69e679a7b
--- /dev/null
+++ b/app/Providers/SemesterServiceProvider.php
@@ -0,0 +1,30 @@
+app->bind(SemesterInterface::class, SemesterRepository::class);
+ }
+
+ /**
+ * Bootstrap services.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ //
+ }
+}
diff --git a/app/Providers/UserServiceProvider.php b/app/Providers/UserServiceProvider.php
new file mode 100644
index 000000000..bba55b1d2
--- /dev/null
+++ b/app/Providers/UserServiceProvider.php
@@ -0,0 +1,30 @@
+app->bind(UserInterface::class, UserRepository::class);
+ }
+
+ /**
+ * Bootstrap services.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ //
+ }
+}
diff --git a/app/Repositories/AcademicSettingRepository.php b/app/Repositories/AcademicSettingRepository.php
new file mode 100644
index 000000000..b0b3856e1
--- /dev/null
+++ b/app/Repositories/AcademicSettingRepository.php
@@ -0,0 +1,32 @@
+update($request);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to update attendance type. '.$e->getMessage());
+ }
+ }
+
+ public function updateFinalMarksSubmissionStatus($request) {
+ $status = "off";
+ if(isset($request['marks_submission_status'])) {
+ $status = "on";
+ }
+ try {
+ AcademicSetting::where('id', 1)->update(['marks_submission_status' => $status]);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to update final marks submission status. '.$e->getMessage());
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/AssignedTeacherRepository.php b/app/Repositories/AssignedTeacherRepository.php
new file mode 100644
index 000000000..0f41dc2fd
--- /dev/null
+++ b/app/Repositories/AssignedTeacherRepository.php
@@ -0,0 +1,42 @@
+getMessage());
+ }
+ }
+
+ public function getTeacherCourses($session_id, $teacher_id, $semester_id) {
+ if($semester_id == 0) {
+ $semester_id = Semester::where('session_id', $session_id)
+ ->first()->id;
+ }
+ return AssignedTeacher::with(['course', 'schoolClass', 'section'])->where('session_id', $session_id)
+ ->where('teacher_id', $teacher_id)
+ ->where('semester_id', $semester_id)
+ ->get();
+ }
+
+ public function getAssignedTeacher($session_id, $semester_id, $class_id, $section_id, $course_id) {
+ if($semester_id == 0) {
+ $semester_id = Semester::where('session_id', $session_id)
+ ->first()->id;
+ }
+ return AssignedTeacher::where('session_id', $session_id)
+ ->where('semester_id', $semester_id)
+ ->where('class_id', $class_id)
+ ->where('section_id', $section_id)
+ ->where('course_id', $course_id)
+ ->first();
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/AssignmentRepository.php b/app/Repositories/AssignmentRepository.php
new file mode 100644
index 000000000..be055ae89
--- /dev/null
+++ b/app/Repositories/AssignmentRepository.php
@@ -0,0 +1,34 @@
+put('assignments', $request['file']);
+ try {
+ Assignment::create([
+ 'assignment_name' => $request['assignment_name'],
+ 'assignment_file_path' => $path,
+ 'teacher_id' => auth()->user()->id,
+ 'class_id' => $request['class_id'],
+ 'section_id' => $request['section_id'],
+ 'course_id' => $request['course_id'],
+ 'semester_id' => $request['semester_id'],
+ 'session_id' => $request['session_id']
+ ]);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to create assignment. '.$e->getMessage());
+ }
+ }
+
+ public function getAssignments($session_id, $course_id) {
+ return Assignment::where('course_id', $course_id)
+ ->where('session_id', $session_id)
+ ->get();
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/AttendanceRepository.php b/app/Repositories/AttendanceRepository.php
new file mode 100644
index 000000000..541419445
--- /dev/null
+++ b/app/Repositories/AttendanceRepository.php
@@ -0,0 +1,74 @@
+prepareInput($request);
+ Attendance::insert($input);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to save attendance. '.$e->getMessage());
+ }
+ }
+
+ public function prepareInput($request) {
+ $input = [];
+ $now = Carbon::now()->toDateTimeString();
+ for($i=0; $i < sizeof($request['student_ids']); $i++) {
+ $student_id = $request['student_ids'][$i];
+ $input[] = array(
+ 'status' => (isset($request['status'][$student_id]))?$request['status'][$student_id]:'off',
+ 'class_id' => $request['class_id'],
+ 'student_id' => $student_id,
+ 'section_id' => $request['section_id'],
+ 'course_id' => $request['course_id'],
+ 'session_id' => $request['session_id'],
+ 'created_at' => $now,
+ 'updated_at' => $now,
+ );
+ }
+ return $input;
+ }
+
+ public function getSectionAttendance($class_id, $section_id, $session_id) {
+ try {
+ return Attendance::with('student')
+ ->where('class_id', $class_id)
+ ->where('section_id', $section_id)
+ ->where('session_id', $session_id)
+ ->whereDate('created_at', '=', Carbon::today())
+ ->get();
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to get attendances. '.$e->getMessage());
+ }
+ }
+
+ public function getCourseAttendance($class_id, $course_id, $session_id) {
+ try {
+ return Attendance::with('student')
+ ->where('class_id', $class_id)
+ ->where('course_id', $course_id)
+ ->where('session_id', $session_id)
+ ->whereDate('created_at', '=', Carbon::today())
+ ->get();
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to get attendances. '.$e->getMessage());
+ }
+ }
+
+ public function getStudentAttendance($session_id, $student_id) {
+ try {
+ return Attendance::with(['section','course'])
+ ->where('student_id', $student_id)
+ ->where('session_id', $session_id)
+ ->get();
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to get attendances. '.$e->getMessage());
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/CourseRepository.php b/app/Repositories/CourseRepository.php
new file mode 100644
index 000000000..08107418f
--- /dev/null
+++ b/app/Repositories/CourseRepository.php
@@ -0,0 +1,40 @@
+getMessage());
+ }
+ }
+
+ public function getAll($session_id) {
+ return Course::where('session_id', $session_id)->get();
+ }
+
+ public function getByClassId($class_id) {
+ return Course::where('class_id', $class_id)->get();
+ }
+
+ public function findById($course_id) {
+ return Course::find($course_id);
+ }
+
+ public function update($request) {
+ try {
+ Course::find($request->course_id)->update([
+ 'course_name' => $request->course_name,
+ 'course_type' => $request->course_type,
+ ]);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to update Course. '.$e->getMessage());
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/EventRepository.php b/app/Repositories/EventRepository.php
new file mode 100644
index 000000000..45947900c
--- /dev/null
+++ b/app/Repositories/EventRepository.php
@@ -0,0 +1,5 @@
+getMessage());
+ }
+ }
+
+ public function delete($id) {
+ try {
+ Exam::destroy($id);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to delete exam. '.$e->getMessage());
+ }
+ }
+
+ public function getAll($session_id, $semester_id, $class_id)
+ {
+ if($semester_id == 0 || $class_id == 0) {
+ $semester_id = Semester::where('session_id', $session_id)
+ ->first()->id;
+ $class_id = SchoolClass::where('session_id', $session_id)
+ ->first()->id;
+ }
+ return Exam::with('course')->where('session_id', $session_id)
+ ->where('semester_id', $semester_id)
+ ->where('class_id', $class_id)
+ ->get();
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/ExamRuleRepository.php b/app/Repositories/ExamRuleRepository.php
new file mode 100644
index 000000000..357c69341
--- /dev/null
+++ b/app/Repositories/ExamRuleRepository.php
@@ -0,0 +1,39 @@
+getMessage());
+ }
+ }
+
+ public function update($request) {
+ try {
+ ExamRule::where('id', $request->exam_rule_id)->update([
+ 'total_marks' => $request->total_marks,
+ 'pass_marks' => $request->pass_marks,
+ 'marks_distribution_note' => $request->marks_distribution_note
+ ]);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to update exam rule. '.$e->getMessage());
+ }
+ }
+
+ public function getAll($session_id, $exam_id) {
+ return ExamRule::where('session_id', $session_id)
+ ->where('exam_id', $exam_id)
+ ->get();
+ }
+
+ public function getById($exam_rule_id) {
+ return ExamRule::where('id', $exam_rule_id)
+ ->first();
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/GradeRuleRepository.php b/app/Repositories/GradeRuleRepository.php
new file mode 100644
index 000000000..026532a2e
--- /dev/null
+++ b/app/Repositories/GradeRuleRepository.php
@@ -0,0 +1,29 @@
+getMessage());
+ }
+ }
+
+ public function delete($id) {
+ try {
+ GradeRule::destroy($id);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to delete grading system rule. '.$e->getMessage());
+ }
+ }
+
+ public function getAll($session_id, $grading_system_id) {
+ return GradeRule::with('gradingSystem')->where('grading_system_id', $grading_system_id)
+ ->where('session_id', $session_id)
+ ->get();
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/GradingSystemRepository.php b/app/Repositories/GradingSystemRepository.php
new file mode 100644
index 000000000..8a6d66662
--- /dev/null
+++ b/app/Repositories/GradingSystemRepository.php
@@ -0,0 +1,29 @@
+getMessage());
+ }
+ }
+
+ public function getAll($session_id) {
+ return GradingSystem::with(['semester', 'schoolClass'])
+ ->where('session_id', $session_id)
+ ->get();
+ }
+
+ public function getGradingSystem($session_id, $semester_id, $class_id) {
+ return GradingSystem::with(['semester', 'schoolClass'])
+ ->where('session_id', $session_id)
+ ->where('semester_id', $semester_id)
+ ->where('class_id', $class_id)
+ ->first();
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/MarkRepository.php b/app/Repositories/MarkRepository.php
new file mode 100644
index 000000000..591bd269d
--- /dev/null
+++ b/app/Repositories/MarkRepository.php
@@ -0,0 +1,97 @@
+ $row['exam_id'],
+ 'student_id' => $row['student_id'],
+ 'session_id' => $row['session_id'],
+ 'class_id' => $row['class_id'],
+ 'section_id' => $row['section_id'],
+ 'course_id' => $row['course_id']
+ ],['marks' => $row['marks']]);
+ }
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to update students marks. '.$e->getMessage());
+ }
+ }
+
+ public function getAll($session_id, $semester_id, $class_id, $section_id, $course_id) {
+ $exam_ids = Exam::where('semester_id', $semester_id)->pluck('id')->toArray();
+ return Mark::with('student','exam')->where('session_id', $session_id)
+ ->whereIn('exam_id', $exam_ids)
+ ->where('class_id', $class_id)
+ ->where('section_id', $section_id)
+ ->where('course_id', $course_id)
+ ->get();
+ }
+
+ public function getAllByStudentId($session_id, $semester_id, $class_id, $section_id, $course_id, $student_id) {
+ $exam_ids = Exam::where('semester_id', $semester_id)->pluck('id')->toArray();
+ return Mark::with('student','exam')->where('session_id', $session_id)
+ ->whereIn('exam_id', $exam_ids)
+ ->where('student_id', $student_id)
+ ->where('class_id', $class_id)
+ ->where('section_id', $section_id)
+ ->where('course_id', $course_id)
+ ->get();
+ }
+
+ public function getFinalMarksCount($session_id, $semester_id, $class_id, $section_id, $course_id) {
+ return FinalMark::where('session_id', $session_id)
+ ->where('semester_id', $semester_id)
+ ->where('class_id', $class_id)
+ ->where('section_id', $section_id)
+ ->where('course_id', $course_id)
+ ->count();
+ }
+
+ public function getAllFinalMarks($session_id, $semester_id, $class_id, $section_id, $course_id) {
+ return FinalMark::with('student')->where('session_id', $session_id)
+ ->where('semester_id', $semester_id)
+ ->where('class_id', $class_id)
+ ->where('section_id', $section_id)
+ ->where('course_id', $course_id)
+ ->get();
+ }
+
+ public function getAllFinalMarksByStudentId($session_id, $student_id, $semester_id, $class_id, $section_id, $course_id) {
+ return FinalMark::with('student')->where('session_id', $session_id)
+ ->where('student_id', $student_id)
+ ->where('semester_id', $semester_id)
+ ->where('class_id', $class_id)
+ ->where('section_id', $section_id)
+ ->where('course_id', $course_id)
+ ->get();
+ }
+
+ public function storeFinalMarks($rows) {
+ try {
+ foreach($rows as $row){
+ FinalMark::updateOrCreate([
+ 'semester_id' => $row['semester_id'],
+ 'student_id' => $row['student_id'],
+ 'session_id' => $row['session_id'],
+ 'class_id' => $row['class_id'],
+ 'section_id' => $row['section_id'],
+ 'course_id' => $row['course_id']
+ ],[
+ 'calculated_marks' => $row['calculated_marks'],
+ 'final_marks' => $row['final_marks'],
+ 'note' => $row['note'],
+ ]);
+ }
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to update students final marks. '.$e->getMessage());
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/NoticeRepository.php b/app/Repositories/NoticeRepository.php
new file mode 100644
index 000000000..5bf5b2f82
--- /dev/null
+++ b/app/Repositories/NoticeRepository.php
@@ -0,0 +1,24 @@
+ $request['notice'],
+ 'session_id' => $request['session_id'],
+ ]);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to save Notice. '.$e->getMessage());
+ }
+ }
+
+ public function getAll($session_id) {
+ return Notice::where('session_id', $session_id)
+ ->orderBy('id', 'desc')
+ ->simplePaginate(3);
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/PromotionRepository.php b/app/Repositories/PromotionRepository.php
new file mode 100644
index 000000000..337b6e789
--- /dev/null
+++ b/app/Repositories/PromotionRepository.php
@@ -0,0 +1,107 @@
+ $student_id,
+ 'session_id' => $request['session_id'],
+ 'class_id' => $request['class_id'],
+ 'section_id' => $request['section_id'],
+ 'id_card_number'=> $request['id_card_number'],
+ ]);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to add Student. '.$e->getMessage());
+ }
+ }
+
+ public function update($request, $student_id) {
+ try{
+ Promotion::where('student_id', $student_id)->update([
+ 'id_card_number'=> $request['id_card_number'],
+ ]);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to update Student. '.$e->getMessage());
+ }
+ }
+
+ public function massPromotion($rows) {
+ try {
+ foreach($rows as $row){
+ Promotion::updateOrCreate([
+ 'student_id' => $row['student_id'],
+ 'session_id' => $row['session_id'],
+ 'class_id' => $row['class_id'],
+ 'section_id' => $row['section_id'],
+ ],[
+ 'id_card_number' => $row['id_card_number'],
+ ]);
+ }
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to promote students. '.$e->getMessage());
+ }
+ }
+
+ public function getAll($session_id, $class_id, $section_id) {
+ return Promotion::with(['student', 'section'])
+ ->where('session_id', $session_id)
+ ->where('class_id', $class_id)
+ ->where('section_id', $section_id)
+ ->get();
+ }
+
+ public function getAllStudentsBySessionCount($session_id) {
+ return Promotion::where('session_id', $session_id)
+ ->count();
+ }
+
+ public function getMaleStudentsBySessionCount($session_id) {
+ $allStudents = Promotion::where('session_id', $session_id)->pluck('student_id')->toArray();
+
+ return User::where('gender', 'Male')
+ ->where('role', 'student')
+ ->whereIn('id', $allStudents)
+ ->count();
+ }
+
+ public function getAllStudentsBySession($session_id) {
+ return Promotion::with(['student', 'section'])
+ ->where('session_id', $session_id)
+ ->get();
+ }
+
+ public function getPromotionInfoById($session_id, $student_id) {
+ return Promotion::with(['student', 'section'])
+ ->where('session_id', $session_id)
+ ->where('student_id', $student_id)
+ ->first();
+ }
+
+
+ public function getClasses($session_id) {
+ return Promotion::with('schoolClass')->select('class_id')
+ ->where('session_id', $session_id)
+ ->distinct('class_id')
+ ->get();
+ }
+
+ public function getSections($session_id, $class_id) {
+ return Promotion::with('section')->select('section_id')
+ ->where('session_id', $session_id)
+ ->where('class_id', $class_id)
+ ->distinct('section_id')
+ ->get();
+ }
+
+ public function getSectionsBySession($session_id) {
+ return Promotion::with('section')->select('section_id')
+ ->where('session_id', $session_id)
+ ->distinct('section_id')
+ ->get();
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/RoutineRepository.php b/app/Repositories/RoutineRepository.php
new file mode 100644
index 000000000..a373fb116
--- /dev/null
+++ b/app/Repositories/RoutineRepository.php
@@ -0,0 +1,33 @@
+ $request['start'],
+ 'end' => $request['end'],
+ 'weekday' => $request['weekday'],
+ 'session_id' => $request['session_id'],
+ 'class_id' => $request['class_id'],
+ 'section_id' => $request['section_id'],
+ 'course_id' => $request['course_id'],
+ ]);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to save routine. '.$e->getMessage());
+ }
+ }
+
+ public function getAll($class_id, $section_id, $session_id) {
+ return Routine::with('course')
+ ->where('session_id', $session_id)
+ ->where('class_id', $class_id)
+ ->where('section_id', $section_id)
+ ->get();
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/SchoolClassRepository.php b/app/Repositories/SchoolClassRepository.php
new file mode 100644
index 000000000..35ddd8dbb
--- /dev/null
+++ b/app/Repositories/SchoolClassRepository.php
@@ -0,0 +1,60 @@
+getMessage());
+ }
+ }
+
+ public function getAllBySession($session_id) {
+ return SchoolClass::where('session_id', $session_id)->get();
+ }
+
+ public function getAllBySessionAndTeacher($session_id, $teacher_id) {
+ return AssignedTeacher::with('schoolClass')->where('teacher_id', $teacher_id)
+ ->where('session_id', $session_id)
+ ->get();
+ }
+
+ public function getAllWithCoursesBySession($session_id) {
+ return SchoolClass::with(['courses','syllabi'])->where('session_id', $session_id)->get();
+ }
+
+ public function getClassesAndSections($session_id) {
+ $school_classes = $this->getAllWithCoursesBySession($session_id);
+
+ $sectionRepository = new SectionRepository();
+
+ $school_sections = $sectionRepository->getAllBySession($session_id);
+
+ $data = [
+ 'school_classes' => $school_classes,
+ 'school_sections'=> $school_sections,
+ ];
+
+ return $data;
+ }
+
+ public function findById($class_id) {
+ return SchoolClass::find($class_id);
+ }
+
+ public function update($request) {
+ try {
+ SchoolClass::find($request->class_id)->update([
+ 'class_name' => $request->class_name,
+ ]);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to update School Class. '.$e->getMessage());
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/SchoolSessionRepository.php b/app/Repositories/SchoolSessionRepository.php
new file mode 100644
index 000000000..bb0f689ca
--- /dev/null
+++ b/app/Repositories/SchoolSessionRepository.php
@@ -0,0 +1,56 @@
+first();
+ if($school_session){
+ return $school_session;
+ } else {
+ return (object) ['id' => 0];
+ }
+ }
+
+ public function getAll() {
+ return SchoolSession::get();
+ }
+
+ public function getPreviousSession() {
+ $lastTwoSessions = SchoolSession::orderBy('id', 'desc')
+ ->take(2)
+ ->get()
+ ->toArray();
+ return (count($lastTwoSessions) < 2)? [] : $lastTwoSessions[1];
+ }
+
+ public function create($request) {
+ try {
+ SchoolSession::create($request);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to create School Session. '.$e->getMessage());
+ }
+ }
+
+ public function browse($request) {
+ try {
+ if(session()->has('browse_session_id')
+ && ($request['session_id'] == $this->getLatestSession()->id)
+ ) {
+ session()->forget(['browse_session_id', 'browse_session_name']);
+ } else {
+ session(['browse_session_id' => $request['session_id']]);
+ session(['browse_session_name' => $this->getSessionById($request['session_id'])->session_name]);
+ }
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to set School Session for browsing. '.$e->getMessage());
+ }
+ }
+
+ public function getSessionById($id) {
+ return SchoolSession::find($id);
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/SectionRepository.php b/app/Repositories/SectionRepository.php
new file mode 100644
index 000000000..3f5181dcb
--- /dev/null
+++ b/app/Repositories/SectionRepository.php
@@ -0,0 +1,39 @@
+getMessage());
+ }
+ }
+
+ public function getAllBySession($session_id) {
+ return Section::where('session_id', $session_id)->get();
+ }
+
+ public function getAllByClassId($class_id) {
+ return Section::where('class_id', $class_id)->get();
+ }
+
+ public function findById($section_id) {
+ return Section::find($section_id);
+ }
+
+ public function update($request) {
+ try {
+ Section::find($request->section_id)->update([
+ 'section_name' => $request->section_name,
+ 'room_no' => $request->room_no,
+ ]);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to update School Section. '.$e->getMessage());
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/SemesterRepository.php b/app/Repositories/SemesterRepository.php
new file mode 100644
index 000000000..6720a9c3e
--- /dev/null
+++ b/app/Repositories/SemesterRepository.php
@@ -0,0 +1,22 @@
+getMessage());
+ }
+ }
+
+ public function getAll($session_id)
+ {
+ return Semester::where('session_id', $session_id)->orderBy('id', 'desc')->get();
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/StudentAcademicInfoRepository.php b/app/Repositories/StudentAcademicInfoRepository.php
new file mode 100644
index 000000000..7b86fa47f
--- /dev/null
+++ b/app/Repositories/StudentAcademicInfoRepository.php
@@ -0,0 +1,18 @@
+ $student_id,
+ 'board_reg_no' => $request['board_reg_no'],
+ ]);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to create Student academic information. '.$e->getMessage());
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/StudentParentInfoRepository.php b/app/Repositories/StudentParentInfoRepository.php
new file mode 100644
index 000000000..93fab327e
--- /dev/null
+++ b/app/Repositories/StudentParentInfoRepository.php
@@ -0,0 +1,41 @@
+ $student_id,
+ 'father_name' => $request['father_name'],
+ 'father_phone' => $request['father_phone'],
+ 'mother_name' => $request['mother_name'],
+ 'mother_phone' => $request['mother_phone'],
+ 'parent_address'=> $request['parent_address'],
+ ]);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to create Student Parent information. '.$e->getMessage());
+ }
+ }
+
+ public function getParentInfo($student_id) {
+ return StudentParentInfo::where('student_id', $student_id)
+ ->first();
+ }
+
+ public function update($request, $student_id) {
+ try {
+ StudentParentInfo::where('student_id', $student_id)->update([
+ 'father_name' => $request['father_name'],
+ 'father_phone' => $request['father_phone'],
+ 'mother_name' => $request['mother_name'],
+ 'mother_phone' => $request['mother_phone'],
+ 'parent_address'=> $request['parent_address'],
+ ]);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to update Student Parent information. '.$e->getMessage());
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/SyllabusRepository.php b/app/Repositories/SyllabusRepository.php
new file mode 100644
index 000000000..313b8ec1b
--- /dev/null
+++ b/app/Repositories/SyllabusRepository.php
@@ -0,0 +1,32 @@
+put('syllabi', $request['file']);
+ try {
+ Syllabus::create([
+ 'syllabus_name' => $request['syllabus_name'],
+ 'syllabus_file_path' => $path,
+ 'class_id' => $request['class_id'],
+ 'course_id' => $request['course_id'],
+ 'session_id' => $request['session_id']
+ ]);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to create syllabus. '.$e->getMessage());
+ }
+ }
+
+ public function getByClass($class_id) {
+ return Syllabus::where('class_id', $class_id)->get();
+ }
+
+ public function getByCourse($course_id) {
+ return Syllabus::where('course_id', $course_id)->get();
+ }
+}
\ No newline at end of file
diff --git a/app/Repositories/UserRepository.php b/app/Repositories/UserRepository.php
new file mode 100644
index 000000000..655a51a0e
--- /dev/null
+++ b/app/Repositories/UserRepository.php
@@ -0,0 +1,239 @@
+ $request['first_name'],
+ 'last_name' => $request['last_name'],
+ 'email' => $request['email'],
+ 'gender' => $request['gender'],
+ 'nationality' => $request['nationality'],
+ 'phone' => $request['phone'],
+ 'address' => $request['address'],
+ 'address2' => $request['address2'],
+ 'city' => $request['city'],
+ 'zip' => $request['zip'],
+ 'photo' => (!empty($request['photo']))?$this->convert($request['photo']):null,
+ 'role' => 'teacher',
+ 'password' => Hash::make($request['password']),
+ ]);
+ $user->givePermissionTo(
+ 'create exams',
+ 'view exams',
+ 'create exams rule',
+ 'view exams rule',
+ 'edit exams rule',
+ 'delete exams rule',
+ 'take attendances',
+ 'view attendances',
+ 'create assignments',
+ 'view assignments',
+ 'save marks',
+ 'view users',
+ 'view routines',
+ 'view syllabi',
+ 'view events',
+ 'view notices',
+ );
+ });
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to create Teacher. '.$e->getMessage());
+ }
+ }
+
+ /**
+ * @param mixed $request
+ * @return string
+ */
+ public function createStudent($request) {
+ try {
+ DB::transaction(function () use ($request) {
+ $student = User::create([
+ 'first_name' => $request['first_name'],
+ 'last_name' => $request['last_name'],
+ 'email' => $request['email'],
+ 'gender' => $request['gender'],
+ 'nationality' => $request['nationality'],
+ 'phone' => $request['phone'],
+ 'address' => $request['address'],
+ 'address2' => $request['address2'],
+ 'city' => $request['city'],
+ 'zip' => $request['zip'],
+ 'photo' => (!empty($request['photo']))?$this->convert($request['photo']):null,
+ 'birthday' => $request['birthday'],
+ 'religion' => $request['religion'],
+ 'blood_type' => $request['blood_type'],
+ 'role' => 'student',
+ 'password' => Hash::make($request['password']),
+ ]);
+
+ // Store Parents' information
+ $studentParentInfoRepository = new StudentParentInfoRepository();
+ $studentParentInfoRepository->store($request, $student->id);
+
+ // Store Academic information
+ $studentAcademicInfoRepository = new StudentAcademicInfoRepository();
+ $studentAcademicInfoRepository->store($request, $student->id);
+
+ // Assign student to a Class and a Section
+ $promotionRepository = new PromotionRepository();
+ $promotionRepository->assignClassSection($request, $student->id);
+
+ $student->givePermissionTo(
+ 'view attendances',
+ 'view assignments',
+ 'submit assignments',
+ 'view exams',
+ 'view marks',
+ 'view users',
+ 'view routines',
+ 'view syllabi',
+ 'view events',
+ 'view notices',
+ );
+ });
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to create Student. '.$e->getMessage());
+ }
+ }
+
+ public function updateStudent($request) {
+ try {
+ DB::transaction(function () use ($request) {
+ User::where('id', $request['student_id'])->update([
+ 'first_name' => $request['first_name'],
+ 'last_name' => $request['last_name'],
+ 'email' => $request['email'],
+ 'gender' => $request['gender'],
+ 'nationality' => $request['nationality'],
+ 'phone' => $request['phone'],
+ 'address' => $request['address'],
+ 'address2' => $request['address2'],
+ 'city' => $request['city'],
+ 'zip' => $request['zip'],
+ 'birthday' => $request['birthday'],
+ 'religion' => $request['religion'],
+ 'blood_type' => $request['blood_type'],
+ ]);
+
+ // Update Parents' information
+ $studentParentInfoRepository = new StudentParentInfoRepository();
+ $studentParentInfoRepository->update($request, $request['student_id']);
+
+ // Update Student's ID card number
+ $promotionRepository = new PromotionRepository();
+ $promotionRepository->update($request, $request['student_id']);
+ });
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to update Student. '.$e->getMessage());
+ }
+ }
+
+ public function updateTeacher($request) {
+ try {
+ DB::transaction(function () use ($request) {
+ User::where('id', $request['teacher_id'])->update([
+ 'first_name' => $request['first_name'],
+ 'last_name' => $request['last_name'],
+ 'email' => $request['email'],
+ 'gender' => $request['gender'],
+ 'nationality' => $request['nationality'],
+ 'phone' => $request['phone'],
+ 'address' => $request['address'],
+ 'address2' => $request['address2'],
+ 'city' => $request['city'],
+ 'zip' => $request['zip'],
+ ]);
+ });
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to update Teacher. '.$e->getMessage());
+ }
+ }
+
+ public function getAllStudents($session_id, $class_id, $section_id) {
+ if($class_id == 0 || $section_id == 0) {
+ $schoolClass = SchoolClass::where('session_id', $session_id)
+ ->first();
+ $section = Section::where('session_id', $session_id)
+ ->first();
+ if($schoolClass == null || $section == null){
+ throw new \Exception('There is no class and section');
+ } else {
+ $class_id = $schoolClass->id;
+ $section_id = $section->id;
+ }
+
+ }
+ try {
+ $promotionRepository = new PromotionRepository();
+ return $promotionRepository->getAll($session_id, $class_id, $section_id);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to get all Students. '.$e->getMessage());
+ }
+ }
+
+ public function getAllStudentsBySession($session_id) {
+ $promotionRepository = new PromotionRepository();
+ return $promotionRepository->getAllStudentsBySession($session_id);
+ }
+
+ public function getAllStudentsBySessionCount($session_id) {
+ $promotionRepository = new PromotionRepository();
+ return $promotionRepository->getAllStudentsBySessionCount($session_id);
+ }
+
+ public function findStudent($id) {
+ try {
+ return User::with('parent_info', 'academic_info')->where('id', $id)->first();
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to get Student. '.$e->getMessage());
+ }
+ }
+
+ public function findTeacher($id) {
+ try {
+ return User::where('id', $id)->where('role', 'teacher')->first();
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to get Teacher. '.$e->getMessage());
+ }
+ }
+
+ public function getAllTeachers() {
+ try {
+ return User::where('role', 'teacher')->get();
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to get all Teachers. '.$e->getMessage());
+ }
+ }
+
+ public function changePassword($new_password) {
+ try {
+ return User::where('id', auth()->user()->id)->update([
+ 'password' => Hash::make($new_password)
+ ]);
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to change password. '.$e->getMessage());
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/Routine.php b/app/Routine.php
deleted file mode 100755
index 9459d5c0b..000000000
--- a/app/Routine.php
+++ /dev/null
@@ -1,23 +0,0 @@
-belongsTo('App\School');
- }
- /**
- * Get the Section record associated with the Routine.
- */
- public function section()
- {
- return $this->belongsTo('App\Section');
- }
-}
diff --git a/app/School.php b/app/School.php
deleted file mode 100755
index ed3c76ec3..000000000
--- a/app/School.php
+++ /dev/null
@@ -1,32 +0,0 @@
-hasMany('App\User');
- }
-
- public function departments()
- {
- return $this->hasMany('App\Department');
- }
-
- public function gradesystems()
- {
- return $this->hasMany('App\Gradesystem');
- }
-}
diff --git a/app/Section.php b/app/Section.php
deleted file mode 100755
index 3fe5a4d1c..000000000
--- a/app/Section.php
+++ /dev/null
@@ -1,24 +0,0 @@
-belongsTo('App\Myclass');
- }
-}
diff --git a/app/Services/Account/AccountService.php b/app/Services/Account/AccountService.php
deleted file mode 100755
index c61c0a094..000000000
--- a/app/Services/Account/AccountService.php
+++ /dev/null
@@ -1,88 +0,0 @@
- user() -> school_id ) -> get();
- }
-
- public function getAccountsBySchoolId()
- {
- return Account ::where( 'school_id', auth() -> user() -> school_id )
- -> where( 'type', $this -> account_type )
- -> orderBy( 'id', 'desc' )
- -> take( 50 )
- -> get();
- }
-
- public function storeSector( $storeData )
- {
- AccountSector ::create( [
- 'name' => $storeData['name'],
- 'type' => $storeData['type'],
- 'school_id' => auth() -> user() -> school_id,
- 'user_id' => auth() -> id(),
- ] );
- }
-
- public function updateSector( AccountSector $accountSector, $updateData )
- {
- $accountSector -> update( $updateData );
- }
-
- // public function getClassIds(){
- // return Myclass::where('school_id', \Auth::user()->school_id)
- // ->pluck('id');
- // }
- // public function getSectionsIds(){
- // $classes = $this->getClassIds()->toArray();
- // return Section::with('class')
- // ->whereIn('class_id', $classes)
- // ->get();
- // }
- // public function getStudentsBySectionIds(){
- // $sections = $this->getSectionsIds();
- // return User::whereIn('section_id',$sections->pluck('id')->toArray())
- // ->get();
- // }
- public function storeAccount()
- {
- $income = new Account();
- $income -> name = $this -> request -> name;
- $income -> type = $this -> account_type;
- $income -> amount = $this -> request -> amount;
- $income -> description = $this -> request -> description;
- $income -> school_id = auth() -> user() -> school_id;
- $income -> user_id = auth() -> user() -> id;
- $income -> save();
- }
-
- public function getAccountsByYear()
- {
- return Account ::where( 'school_id', auth() -> user() -> school_id )
- -> where( 'type', $this -> account_type )
- -> whereYear( 'created_at', $this -> request -> year )
- -> get();
- }
-
- public function updateAccount()
- {
- $account = Account ::find( $this -> request -> id );
- $account -> amount = $this -> request -> amount;
- $account -> description = $this -> request -> description;
- $account -> save();
- }
-}
diff --git a/app/Services/Attendance/AttendanceService.php b/app/Services/Attendance/AttendanceService.php
deleted file mode 100755
index 94ed1edc1..000000000
--- a/app/Services/Attendance/AttendanceService.php
+++ /dev/null
@@ -1,131 +0,0 @@
-select('id','name','student_code','section_id')
- ->where('section_id', $section_id)
- ->student()
- ->where('active', 1)
- ->get();
- }
-
- public function getStudentsWithInfoBySection($section_id){
- return User::with(['section','school','studentInfo'])
- ->where('section_id', $section_id)
- ->student()
- ->where('active', 1)
- ->orderBy('name', 'asc')
- ->paginate(50);
- }
-
- public function adjustPost($request){
- try{
- for($i=0; $i < count($request->isPresent); $i++){
- $atts[] = [
- 'id' => $request->att_id[$i],
- 'present' => isset($request->isPresent[$i])?1:0,
- 'updated_at' => date('Y-m-d H:i:s'),
- ];
- }
- $attTb = new Attendance;
- \Batch::update($attTb,(array) $atts,'id');
- return back()->with('status', 'Updated');
- }catch(\Exception $ex){
- return false;
- }
- }
-
- public function getTodaysAttendanceBySectionId($section_id){
- return Attendance::where('section_id', $section_id)
- ->whereDate('created_at', '=', date('Y-m-d'))
- ->orderBy('created_at', 'desc')
- ->get()
- ->unique('student_id');
- }
-
- public function getAllAttendanceBySecAndExam($section_id,$exam_id){
- return \DB::table('attendances')
- ->select('student_id', \DB::raw('
- COUNT(CASE WHEN present=1 THEN present END) AS totalPresent,
- COUNT(CASE WHEN present=0 THEN present END) AS totalAbsent,
- COUNT(CASE WHEN present=2 THEN present END) AS totalEscaped'
- ))
- ->where('section_id', $section_id)
- ->where('exam_id', $exam_id)
- ->groupBy('student_id')
- ->get();
- }
-
- public function getStudent($student_id){
- return User::with('section')
- ->where('id', $student_id)
- ->student()
- ->where('active', 1)
- ->first();
- }
-
- public function getAbsentAttendanceByStudentAndExam($student_id, $exId){
- return Attendance::with(['student', 'section'])
- ->where('student_id', $student_id)
- ->where('present',0)
- ->where('exam_id', $exId)
- ->get();
- }
-
- public function getAttendanceByStudentAndExam($student_id, $exId){
- return Attendance::with(['student', 'section'])
- ->where('student_id', $student_id)
- ->where('exam_id', $exId)
- ->get();
- }
-
- public function updateAttendance(){
- $i = 0;
- $at = [];
- foreach ($this->request->attendances as $key => $attendance) {
- $tb = Attendance::find($attendance);
- if(count((array) $tb) === 1 && !isset($this->request["isPresent$i"]) && $tb->present == 1){
- // Attended today's class but escaped
- $tb->updated_at = date('Y-m-d H:i:s');
- $tb->save();
- // Escape record
- $tb2 = new Attendance;
- $tb2->student_id = $this->request->students[$i];
- $tb2->section_id = $this->request->section_id;
- $tb2->exam_id = $this->request->exam_id;
- $tb2->present = 2;
- $tb2->user_id = auth()->user()->id;
- $tb2->created_at = date('Y-m-d H:i:s');
- $tb2->updated_at = date('Y-m-d H:i:s');
- $at[] = $tb2->attributesToArray();
- }
- ++$i;
- }
- return $at;
- }
-
- public function storeAttendance(){
- $i = 0;
- foreach ($this->request->students as $key => $student) {
- $tb = new Attendance;
- $tb->student_id = $student;
- $tb->section_id = $this->request->section_id;
- $tb->exam_id = $this->request->exam_id;
- $tb->present = isset($this->request["isPresent$i"])?1:0;
- $tb->user_id = auth()->user()->id;
- $tb->created_at = date('Y-m-d H:i:s');
- $tb->updated_at = date('Y-m-d H:i:s');
- $at[] = $tb->attributesToArray();
- ++$i;
- }
- Attendance::insert($at);
- }
-}
\ No newline at end of file
diff --git a/app/Services/Course/CourseService.php b/app/Services/Course/CourseService.php
deleted file mode 100755
index 8218a1665..000000000
--- a/app/Services/Course/CourseService.php
+++ /dev/null
@@ -1,112 +0,0 @@
-user()->role != 'student' && $teacher_id > 0;
- }
-
- public function isCourseOfStudentOfASection($section_id){
- return auth()->user()->role == 'student'
- && $section_id == auth()->user()->section_id
- && $section_id > 0;
- }
-
- public function isCourseOfASection($section_id){
- return auth()->user()->role != 'student' && $section_id > 0;
- }
-
- public function getCoursesByTeacher($teacher_id){
- return Course::with(['section', 'teacher','exam'])
- ->where('teacher_id', $teacher_id)
- ->get();
- }
-
- public function getExamsBySchoolId(){
- return Exam::where('school_id', auth()->user()->school_id)
- ->where('active',1)
- ->get();
- }
-
- public function updateCourseInfo($id, $request){
- $tb = Course::find($id);
- $tb->course_name = $request->course_name;
- $tb->course_time = $request->course_time;
- $tb->save();
- }
-
- public function getCoursesBySection($section_id){
- return Course::with(['section', 'teacher'])
- ->where('section_id', $section_id)
- ->get();
- }
-
- public function getStudentsFromGradeByCourseAndExam($course_id, $exam_id){
- return Grade::with('student')
- ->where('course_id', $course_id)
- ->where('exam_id',$exam_id)
- ->get();
- }
-
- public function addCourse($request){
- $tb = new Course;
- $tb->course_name = $request->course_name;
- $tb->class_id = $request->class_id;
- $tb->course_type = $request->course_type;
- $tb->course_time = $request->course_time;
- $tb->section_id = $request->section_id;
- $tb->teacher_id = $request->teacher_id;
- $tb->grade_system_name = '';
- $tb->quiz_count = 0;
- $tb->assignment_count = 0;
- $tb->ct_count = 0;
- $tb->quiz_percent = 0;
- $tb->attendance_percent = 0;
- $tb->assignment_percent = 0;
- $tb->ct_percent = 0;
- $tb->final_exam_percent = 0;
- $tb->practical_percent = 0;
- $tb->att_fullmark = 0;
- $tb->quiz_fullmark = 0;
- $tb->a_fullmark = 0;
- $tb->ct_fullmark = 0;
- $tb->final_fullmark = 0;
- $tb->practical_fullmark = 0;
- $tb->exam_id = 0;
- $tb->school_id = auth()->user()->school_id;
- $tb->user_id = auth()->user()->id; // who is creating
- // $tb->quiz_percent = $request->quiz_percent;
- // $tb->test_percent = $request->test_percent;
- // $tb->assignment_percent = $request->assignment_percent;
- // $tb->class_work_percent = $request->class_work_percent;
- // $tb->final_exam_percent = $request->final_exam_percent;
- $tb->save();
- }
-
- public function saveConfiguration($request){
- $tb = Course::find($request->id);
- $tb->grade_system_name = $request->grade_system_name;
- $tb->quiz_count = $request->quiz_count;
- $tb->assignment_count = $request->assignment_count;
- $tb->ct_count = $request->ct_count;
- $tb->quiz_percent = $request->quiz_percent;
- $tb->attendance_percent = $request->attendance_percent;
- $tb->assignment_percent = $request->assignment_percent;
- $tb->ct_percent = $request->ct_percent;
- $tb->final_exam_percent = $request->final_exam_percent;
- $tb->practical_percent = $request->practical_percent;
- $tb->att_fullmark = $request->att_fullmark;
- $tb->quiz_fullmark = $request->quiz_fullmark;
- $tb->a_fullmark = $request->a_fullmark;
- $tb->ct_fullmark = $request->ct_fullmark;
- $tb->final_fullmark = $request->final_fullmark;
- $tb->practical_fullmark = $request->practical_fullmark;
- $tb->save();
- }
-}
\ No newline at end of file
diff --git a/app/Services/Exam/ExamService.php b/app/Services/Exam/ExamService.php
deleted file mode 100755
index 345fb80d1..000000000
--- a/app/Services/Exam/ExamService.php
+++ /dev/null
@@ -1,115 +0,0 @@
-user()->school_id)
- ->latest()
- ->paginate(100);
- }
-
- public function getActiveExamsBySchoolId(){
- return Exam::where('school_id', auth()->user()->school_id)
- ->where('active',1)
- ->get();
- }
-
- public function getCoursesByExamIds(){
- return Course::with('class','teacher')
- ->whereIn('exam_id', $this->examIds)
- ->orderBy('class_id')
- ->get();
- }
-
- public function getClassesBySchoolId(){
- return Myclass::where('school_id',auth()->user()->school->id)->get();
- }
-
- public function getAlreadyAssignedClasses(){
- $classes = $this->getClassesBySchoolId()
- ->pluck('id')
- ->toArray();
- return ExamForClass::with('exam')
- ->where('active', 1)
- ->whereIn('class_id', $classes)
- ->get();
- }
-
- public function createExam(){
- $exam = new Exam;
- $exam->exam_name = $this->request->exam_name;
- $exam->active = 1;
- $exam->term = $this->request->term;
- $exam->start_date = $this->request->start_date;
- $exam->end_date = $this->request->end_date;
- $exam->notice_published = 0;
- $exam->result_published = 0;
- $exam->school_id = auth()->user()->school_id;
- $exam->user_id = auth()->user()->id;
- $exam->save();
- return $exam;
- }
-
- public function updateCoursesWithExamId(){
- Course::whereIn('class_id',$this->request->classes)->update([
- 'exam_id' => $this->exam->id
- ]);
- }
-
- public function assignClassesToExam(){
- $tc = count($this->request->classes);
- $i = 0;
- while($i < $tc){
- $examForClass = new ExamForClass;
- $examForClass->exam_id = $this->exam->id;
- $examForClass->class_id = $this->request->classes[$i];
- $efc[] = $examForClass->attributesToArray();
- ++$i;
- }
- return $efc;
- }
-
- public function storeExam(){
- \DB::transaction(function () {
- $this->exam = $this->createExam();
-
- // Assign Exam ID to Classes in Course Table
- $this->updateCoursesWithExamId();
-
- $efc = $this->assignClassesToExam();
-
- if(count($efc) > 0)
- ExamForClass::insert($efc);
- }, 5);
- }
-
- public function updateExamFields(){
- $tb = Exam::find($this->request->exam_id);
- $tb->notice_published = isset($this->request->notice_published)?1:0;
- $tb->result_published = isset($this->request->result_published)?1:0;
- $tb->active = (isset($this->request->active))?1:0;
- $tb->save();
- }
-
- public function updateExamForClass(){
- if(!isset($this->request->active)){
- ExamForClass::where('exam_id', $this->request->exam_id)->update(['active'=>0]);
- }
- }
-
- public function updateExam(){
- \DB::transaction(function () {
- $this->updateExamFields();
- $this->updateExamForClass();
- });
- }
-}
\ No newline at end of file
diff --git a/app/Services/Grade/GradeService.php b/app/Services/Grade/GradeService.php
deleted file mode 100755
index 6424283f6..000000000
--- a/app/Services/Grade/GradeService.php
+++ /dev/null
@@ -1,340 +0,0 @@
-user()->role == 'student';
- }
-
- public function getExamByIdsFromGrades($grades){
- $examIds = $grades->map(function($grade){
- return $grade->exam_id;
- });
- $exams = Exam::whereIn('id', $examIds)
- ->orderBy('id','desc')
- ->get();
- return $exams;
- }
-
- public function getStudentGradesWithInfoCourseTeacherExam($student_id){
- return Grade::with(['student','course','teacher','exam'])
- ->where('student_id', $student_id)
- ->orderBy('exam_id')
- ->latest()
- ->get();
- }
-
- public function getGradeSystemBySchoolId($grades){
- $grade_system_name = isset($grades[0]->course->grade_system_name) ? $grades[0]->course->grade_system_name : false;
- return ($grade_system_name)?Gradesystem::where('school_id', auth()->user()->school_id)
- ->where('grade_system_name', $grade_system_name)
- //->groupBy('grade_system_name')
- ->get() : Gradesystem::select('grade_system_name')
- ->where('school_id', auth()->user()->school_id)
- ->distinct()
- ->get();
- }
-
- public function getGradeSystemByname($grade_system_name){
- return Gradesystem::where('school_id', auth()->user()->school_id)
- ->where('grade_system_name', $grade_system_name)
- ->get();
- }
-
- public function gradeIndexView($view){
- return view($view,[
- 'grades' => $this->grades,
- 'gradesystems' => $this->gradesystems,
- 'exams' => $this->exams,
- ]);
- }
-
- public function getGradeSystemBySchoolIdGroupByName($grades){
- $grade_system_name = isset($grades[0]->course->grade_system_name) ? $grades[0]->course->grade_system_name : false;
-
- return ($grade_system_name)?Gradesystem::where('school_id', auth()->user()->school_id)
- ->where('grade_system_name', $grade_system_name)
- //->groupBy('grade_system_name')
- ->get() : Gradesystem::select('grade_system_name')
- ->where('school_id', auth()->user()->school_id)
- ->distinct()
- ->get();
- }
-
- public function gradeTeacherIndexView($view){
- return view($view,[
- 'grades' => $this->grades,
- 'gradesystems' => $this->gradesystems
- ]);
- }
-
- public function gradeCourseIndexView($view){
- return view($view,[
- 'grades' => $this->grades,
- 'gradesystems' => $this->gradesystems,
- 'course_id' => $this->course_id,
- 'exam_id' => $this->exam_id,
- 'teacher_id' => $this->teacher_id,
- 'section_id' => $this->section_id,
- ]);
- }
-
- public function getGradesByCourseExam($course_id, $exam_id){
- return Grade::with('course','student')
- ->where('course_id', $course_id)
- ->where('exam_id',$exam_id)
- ->get();
- }
-
- public function calculateGpaFromTotalMarks($grades, $course, $gradeSystem){
- foreach($grades as $key => $grade){
- $totalMarks = $this->calculateMarks($course, $grade);
- // Calculate GPA from Total marks
- $gpa = $this->calculateGpa($gradeSystem, $totalMarks);
- $tb = Grade::find($grade['id']);
- $tb->marks = $totalMarks;
- $tb->gpa = $gpa;
- $tbc[] = $tb->attributesToArray();
- }
- return $tbc;
- }
-
- public function getActiveExamIds(){
- return Exam::where('school_id', auth()->user()->school_id)
- ->where('active',1)
- ->pluck('id');
- }
-
- public function getCourseBySectionIdExamIds($section_id, $examIds){
- return Course::where('section_id',$section_id)
- ->whereIn('exam_id', $examIds)
- ->pluck('id')
- ->toArray();
- }
-
- public function getGradesByCourseId($courses){
- return Grade::with(['student','course','exam'])
- ->whereIn('course_id', $courses)
- ->get();
- }
-
- public function getClassesBySchoolId(){
- return Myclass::where('school_id',auth()->user()->school->id)->get();
- }
-
- public function getSectionsByClassIds($classIds){
- return Section::whereIn('class_id',$classIds)
- ->orderBy('section_number')
- ->get();
- }
-
- public function getCourseByCourseId(){
- return Course::find($this->course_id);
- }
-
- public function saveCalculatedGPAFromTotalMarks($tbc){
- try{
- if(count($tbc) > 0){
- $gradeTb = new Grade;
- return \Batch::update($gradeTb,(array) $tbc,'id');
- } else {
- return false;
- }
- }catch(\Exception $e){
- return "OOps, an error occured";
- }
- }
-
- public function calculateMarks($course, $grade){
- $this->grade = $grade;
-
- $this->quizCount = $course->quiz_count;
- $this->assignmentCount = $course->assignment_count;
- $this->ctCount = $course->ct_count;
-
- // Quiz
- $this->field = 'quiz';
- $this->fieldCount = $this->quizCount;
- $this->maxFieldNum = 5;
- $this->quizSum = $this->getMarkSum();
- // Assignment
- $this->field = 'assignment';
- $this->fieldCount = $this->assignmentCount;
- $this->maxFieldNum = 3;
- $this->assignmentSum = $this->getMarkSum();
- // Class Test
- $this->field = 'ct';
- $this->fieldCount = $this->ctCount;
- $this->maxFieldNum = 5;
- $this->ctSum = $this->getMarkSum();
-
- // Percentage related calculation
- // Attendance
- $this->full_field_mark = $course->att_fullmark;
- $this->field_percentage = $course->attendance_percent;
- $this->avg_field_sum = $this->grade['attendance'];
- $this->final_default_value = $this->grade['attendance'];
- $this->final_att_mark = $this->getFieldFinalMark();
- // Quiz
- $this->full_field_mark = $course->quiz_fullmark;
- $this->field_percentage = $course->quiz_percent;
- $this->avg_field_sum = $this->quizCount > 0 ? $this->quizSum/$this->quizCount : 0;
- $this->final_default_value = $this->quizSum;
- $this->final_quiz_mark = $this->getFieldFinalMark();
- // Assignment
- $this->full_field_mark = $course->a_fullmark;
- $this->field_percentage = $course->assignment_percent;
- $this->avg_field_sum = $this->assignmentCount > 0 ? $this->assignmentSum/$this->assignmentCount : 0;
- $this->final_default_value = $this->assignmentSum;
- $this->final_assignment_mark = $this->getFieldFinalMark();
- // Class Test
- $this->full_field_mark = $course->ct_fullmark;
- $this->field_percentage = $course->ct_percent;
- $this->avg_field_sum = $this->ctCount > 0 ? $this->ctSum/$this->ctCount : 0;
- $this->final_default_value = $this->ctSum;
- $this->final_ct_mark = $this->getFieldFinalMark();
- // Final Exam
- $this->full_field_mark = $course->final_fullmark;
- $this->field_percentage = $course->final_exam_percent;
- $this->avg_field_sum = ($this->grade['written']+$this->grade['mcq']);
- $this->final_default_value = $this->grade['written']+$this->grade['mcq'];
- $this->final_finalExam_mark = $this->getFieldFinalMark();
- // Practical
- $this->full_field_mark = $course->practical_fullmark;
- $this->field_percentage = $course->practical_percent;
- $this->avg_field_sum = $this->grade['practical'];
- $this->final_default_value = $this->grade['practical'];
- $this->final_practical_mark = $this->getFieldFinalMark();
-
- // Calculate total marks
- $totalMarks = $this->getTotalCalculatedMarks();
-
- return $totalMarks;
- }
-
- public function getMarkSum(){
- $fieldSum = 0;
- if($this->fieldCount > 0){
- $fieldGradeArray = array();
- for($i=1; $i<=$this->maxFieldNum; ++$i){
- array_push($fieldGradeArray,$this->grade["{$this->field}{$i}"]);
- }
- rsort($fieldGradeArray);
- $largest = array_slice($fieldGradeArray, 0, $this->fieldCount);
-
- foreach($largest as $l){
- $fieldSum += $l;
- }
- } else {
- for($i=1; $i<=5; ++$i){
- if (isset($this->grade["{$this->field}{$i}"]))
- $fieldSum += $this->grade["{$this->field}{$i}"];
- }
- }
- return $fieldSum;
- }
-
- public function getFieldFinalMark(){
- return ($this->full_field_mark > 0)? (($this->field_percentage*$this->avg_field_sum)/$this->full_field_mark) : $this->final_default_value;
- }
-
- public function getTotalCalculatedMarks(){
- return round(
- (round($this->final_att_mark, 8, 2)+
- round($this->final_quiz_mark, 8, 2)+
- round($this->final_assignment_mark, 8, 2)+
- round($this->final_ct_mark, 8, 2)+
- round($this->final_finalExam_mark, 8, 2)+
- round($this->final_practical_mark, 8, 2)
- ), 8, 2);
- }
-
- public function calculateGpa($gradeSystem, $totalMarks){
- $totalMarks = round($totalMarks);
- foreach($gradeSystem as $gs){
- if($totalMarks > $gs->from_mark && $totalMarks <= $gs->to_mark){
- return $gs->point;
- }
- }
- return 'Something went wrong.';
- }
-
- public function updateGrade($request){
- $i = 0;
- foreach($request->grade_ids as $id){
- $tb = Grade::find($id);
- $tb->attendance = $request->attendance[$i];
- $tb->quiz1 = $request->quiz1[$i];
- $tb->quiz2 = $request->quiz2[$i];
- $tb->quiz3 = $request->quiz3[$i];
- $tb->quiz4 = $request->quiz4[$i];
- $tb->quiz5 = $request->quiz5[$i];
- $tb->assignment1 = $request->assign1[$i];
- $tb->assignment2 = $request->assign2[$i];
- $tb->assignment3 = $request->assign3[$i];
- $tb->ct1 = $request->ct1[$i];
- $tb->ct2 = $request->ct2[$i];
- $tb->ct3 = $request->ct3[$i];
- $tb->ct4 = $request->ct4[$i];
- $tb->ct5 = $request->ct5[$i];
- $tb->written = $request->written[$i];
- $tb->mcq = $request->mcq[$i];
- $tb->practical = $request->practical[$i];
- $tb->user_id = Auth::user()->id;
- $tb->created_at = date('Y-m-d H:i:s');
- $tb->updated_at = date('Y-m-d H:i:s');
- $tbc[] = $tb->attributesToArray();
- $i++;
- }
- return $tbc;
- }
-
- public function returnRouteWithParameters($route_name){
- return redirect()->route($route_name, [
- 'teacher_id' => $this->teacher_id,
- 'course_id' => $this->course_id,
- 'exam_id' => $this->exam_id,
- 'section_id' => $this->section_id,
- ]);
- }
-}
\ No newline at end of file
diff --git a/app/Services/IssueBook/IssuedBookService.php b/app/Services/IssueBook/IssuedBookService.php
deleted file mode 100755
index 20055757c..000000000
--- a/app/Services/IssueBook/IssuedBookService.php
+++ /dev/null
@@ -1,52 +0,0 @@
-select('issued_books.*','books.title','books.type','users.name')
- ->join('users', 'issued_books.student_code', '=', 'users.student_code')
- ->where('issued_books.borrowed', '=', 1)
- ->where('issued_books.school_id', '=', auth()->user()->school->id)
- ->paginate(50);
- }
-
- /**
- * Insert each issued book to an array.
- *
- * @param \Illuminate\Http\Request $request
- * @return \Illuminate\Http\Response
- */
- public function insertEachIssuedBookInAnArray(){
- foreach ($this->request->book_id as $bk){
- $issueBooks = new Issuedbook;
- $issueBooks->student_code = $this->request->student_code;
- $issueBooks->book_id = $bk;
- $issueBooks->quantity = 1;
- $issueBooks->school_id = auth()->user()->school->id;
- $issueBooks->issue_date = $this->request->issue_date;
- $issueBooks->return_date = $this->request->return_date;
- $issueBooks->fine = 0;//$this->request->fine;
- $issueBooks->borrowed = 1;
- $issueBooks->user_id = auth()->user()->id;
- $this->ib[] = $issueBooks->attributesToArray();
- }
- }
-
- public function storeIssuedBooks(){
- $this->insertEachIssuedBookInAnArray();
-
- \DB::transaction(function () {
- Issuedbook::insert($this->ib);
- Book::whereIn('id',$this->request->book_id)->update([
- 'quantity' => \DB::raw('MAX((quantity - 1), 0)')
- ]);
- });
- }
-}
\ No newline at end of file
diff --git a/app/Services/User/UserService.php b/app/Services/User/UserService.php
deleted file mode 100755
index 5983d86c3..000000000
--- a/app/Services/User/UserService.php
+++ /dev/null
@@ -1,268 +0,0 @@
-user = $user;
- $this->student_info = $student_info;
- $this->db = $db;
- $this->batch = $batch;
- }
-
- public function isListOfStudents($school_code, $student_code){
- return !empty($school_code) && $student_code == 1;
- }
-
- public function isListOfTeachers($school_code, $teacher_code){
- return !empty($school_code) && $teacher_code == 1;
- }
-
- public function indexView($view, $users){
- return view($view, [
- 'users' => $users,
- 'current_page' => $users->currentPage(),
- 'per_page' => $users->perPage(),
- ]);
- }
-
- public function hasSectionId($section_id){
- return $section_id > 0;
- }
-
- public function updateStudentInfo($request, $id){
- $info = StudentInfo::firstOrCreate(['student_id' => $id]);
- $info->student_id = $id;
- $info->session = (!empty($request->session)) ? $request->session : '';
- $info->version = (!empty($request->version)) ? $request->version : '';
- $info->group = (!empty($request->group)) ? $request->group : '';
- $info->birthday = (!empty($request->birthday)) ? $request->birthday : '';
- $info->religion = (!empty($request->religion)) ? $request->religion : '';
- $info->father_name = (!empty($request->father_name)) ? $request->father_name : '';
- $info->father_phone_number = (!empty($request->father_phone_number)) ? $request->father_phone_number : '';
- $info->father_national_id = (!empty($request->father_national_id)) ? $request->father_national_id : '';
- $info->father_occupation = (!empty($request->father_occupation)) ? $request->father_occupation : '';
- $info->father_designation = (!empty($request->father_designation)) ? $request->father_designation : '';
- $info->father_annual_income = (!empty($request->father_annual_income)) ? $request->father_annual_income : '';
- $info->mother_name = (!empty($request->mother_name)) ? $request->mother_name : '';
- $info->mother_phone_number = (!empty($request->mother_phone_number)) ? $request->mother_phone_number : '';
- $info->mother_national_id = (!empty($request->mother_national_id)) ? $request->mother_national_id : '';
- $info->mother_occupation = (!empty($request->mother_occupation)) ? $request->mother_occupation : '';
- $info->mother_designation = (!empty($request->mother_designation)) ? $request->mother_designation : '';
- $info->mother_annual_income = (!empty($request->mother_annual_income)) ? $request->mother_annual_income : '';
- $info->user_id = auth()->user()->id;
- $info->save();
- }
-
- public function promoteSectionStudentsView($students, $classes, $section_id){
- return view('school.promote-students', compact('students','classes','section_id'));
- }
-
- public function promoteSectionStudentsPost($request)
- {
- if ($request->section_id > 0) {
- $students = $this->getSectionStudentsWithStudentInfo($request, $request->section_id);
- $i = 0;
- foreach ($students as $student) {
- $this->st[] = [
- 'id' => $student->student_id,
- 'section_id' => $request->to_section[$i],
- 'active' => isset($request["left_school$i"])?0:1,
- ];
-
- $this->st2[] = [
- 'student_id' => $student->student_id,
- 'session' => $request->to_session[$i],
- ];
- ++$i;
- }
- $this->promoteSectionStudentsPostDBTransaction();
-
- return back()->with('status', 'Saved');
- }
- }
-
- public function promoteSectionStudentsPostDBTransaction(){
- return $this->db::transaction(function () {
- // $table1 = 'users';
- $this->batch->update($this->user, (array) $this->st, 'id');
- // $table2 = 'student_infos';
- $this->batch->update($this->student_info, (array) $this->st2, 'student_id');
- });
- }
-
- public function isAccountant($role){
- return $role == 'accountant';
- }
-
- public function isLibrarian($role){
- return $role == 'librarian';
- }
-
- public function indexOtherView($view, $users){
- return view($view, [
- 'users' => $users,
- 'current_page' => $users->currentPage(),
- 'per_page' => $users->perPage(),
- ]);
- }
-
- public function getStudents(){
- return $this->user->with(['section.class', 'school', 'studentInfo'])
- ->where('code', auth()->user()->school->code)
- ->student()
- ->where('active', 1)
- ->orderBy('name', 'asc')
- ->paginate(50);
- }
-
- public function getTeachers(){
- return $this->user->with(['section', 'school'])
- ->where('code', auth()->user()->school->code)
- ->where('role', 'teacher')
- ->where('active', 1)
- ->orderBy('name', 'asc')
- ->paginate(50);
- }
-
- public function getAccountants(){
- return $this->user->with('school')
- ->where('code', auth()->user()->school->code)
- ->where('role', 'accountant')
- ->where('active', 1)
- ->orderBy('name', 'asc')
- ->paginate(50);
- }
-
- public function getLibrarians(){
- return $this->user->with('school')
- ->where('code', auth()->user()->school->code)
- ->where('role', 'librarian')
- ->where('active', 1)
- ->orderBy('name', 'asc')
- ->paginate(50);
- }
-
- public function getSectionStudentsWithSchool($section_id){
- return $this->user->with('school')
- ->student()
- ->where('section_id', $section_id)
- ->where('active', 1)
- ->orderBy('name', 'asc')
- ->get();
- }
-
- public function getSectionStudentsWithStudentInfo($request, $section_id){
- $ignoreSessions = $request->session()->get('ignoreSessions');
-
- if (isset($ignoreSessions) && $ignoreSessions == "true") {
- return $this->user->with(['section'])
- ->join('student_infos', 'users.id', '=', 'student_infos.student_id')
- //->where('student_infos.session', '<=', now()->year)
- ->where('users.section_id', $section_id)
- ->where('users.active', 1)
- ->get();
- } else {
- return $this->user->with(['section'])
- ->join('student_infos', 'users.id', '=', 'student_infos.student_id')
- ->where('student_infos.session', '<=', now()->year)
- ->where('users.section_id', $section_id)
- ->where('users.active', 1)
- ->get();
- }
- }
-
- public function getSectionStudents($section_id){
- return $this->user->where('section_id', $section_id)
- ->where('active', 1)
- ->get();
- }
-
- public function getUserByUserCode($user_code){
- return $this->user->with('section', 'studentInfo')
- ->where('student_code', $user_code)
- ->where('active', 1)
- ->first();
- }
-
- public function storeAdmin($request){
- $tb = new $this->user;
- $tb->name = $request->name;
- $tb->email = $request->email;
- $tb->password = bcrypt($request->password);
- $tb->role = 'admin';
- $tb->active = 1;
- $tb->school_id = session('register_school_id');
- $tb->code = session('register_school_code');
- $tb->student_code = session('register_school_id').date('y').substr(number_format(time() * mt_rand(), 0, '', ''), 0, 5);
- $tb->gender = $request->gender;
- $tb->blood_group = $request->blood_group;
- $tb->nationality = (!empty($request->nationality)) ? $request->nationality : '';
- $tb->phone_number = $request->phone_number;
- $tb->pic_path = (!empty($request->pic_path)) ? $request->pic_path : '';
- $tb->verified = 1;
- $tb->save();
- return $tb;
- }
-
- public function storeStudent($request){
- $tb = new $this->user;
- $tb->name = $request->name;
- $tb->email = (!empty($request->email)) ? $request->email : '';
- $tb->password = bcrypt($request->password);
- $tb->role = 'student';
- $tb->active = 1;
- $tb->school_id = auth()->user()->school_id;
- $tb->code = auth()->user()->code;// School Code
- $tb->student_code = auth()->user()->school_id.date('y').substr(number_format(time() * mt_rand(), 0, '', ''), 0, 5);
- $tb->gender = $request->gender;
- $tb->blood_group = $request->blood_group;
- $tb->nationality = (!empty($request->nationality)) ? $request->nationality : '';
- $tb->phone_number = $request->phone_number;
- $tb->address = (!empty($request->address)) ? $request->address : '';
- $tb->about = (!empty($request->about)) ? $request->about : '';
- $tb->pic_path = (!empty($request->pic_path)) ? $request->pic_path : '';
- $tb->verified = 1;
- $tb->section_id = $request->section;
- $tb->save();
- return $tb;
- }
-
- public function storeStaff($request, $role){
- $tb = new $this->user;
- $tb->name = $request->name;
- $tb->email = (!empty($request->email)) ? $request->email : '';
- $tb->password = bcrypt($request->password);
- $tb->role = $role;
- $tb->active = 1;
- $tb->school_id = auth()->user()->school_id;
- $tb->code = auth()->user()->code;
- $tb->student_code = auth()->user()->school_id.date('y').substr(number_format(time() * mt_rand(), 0, '', ''), 0, 5);
- $tb->gender = $request->gender;
- $tb->blood_group = $request->blood_group;
- $tb->nationality = (!empty($request->nationality)) ? $request->nationality : '';
- $tb->phone_number = $request->phone_number;
- $tb->pic_path = (!empty($request->pic_path)) ? $request->pic_path : '';
- $tb->verified = 1;
- $tb->department_id = (!empty($request->department_id))?$request->department_id:0;
-
- if($role == 'teacher'){
- $tb->section_id = ($request->class_teacher_section_id != 0) ? $request->class_teacher_section_id : 0;
- }
-
- $tb->save();
- return $tb;
- }
-}
\ No newline at end of file
diff --git a/app/StudentBoardExam.php b/app/StudentBoardExam.php
deleted file mode 100755
index d8921063a..000000000
--- a/app/StudentBoardExam.php
+++ /dev/null
@@ -1,17 +0,0 @@
-belongsTo('App\User');
- }
-}
diff --git a/app/StudentInfo.php b/app/StudentInfo.php
deleted file mode 100755
index c88fee4f1..000000000
--- a/app/StudentInfo.php
+++ /dev/null
@@ -1,18 +0,0 @@
-belongsTo('App\User');
- }
-}
diff --git a/app/Syllabus.php b/app/Syllabus.php
deleted file mode 100755
index 2b469582b..000000000
--- a/app/Syllabus.php
+++ /dev/null
@@ -1,24 +0,0 @@
-belongsTo('App\School');
- }
- /**
- * Get the class record associated with the syllabus.
- */
- public function myclass()
- {
- return $this->belongsTo('App\Myclass','class_id');
- }
-}
diff --git a/app/Traits/AssignedTeacherCheck.php b/app/Traits/AssignedTeacherCheck.php
new file mode 100644
index 000000000..884295623
--- /dev/null
+++ b/app/Traits/AssignedTeacherCheck.php
@@ -0,0 +1,24 @@
+getAssignedTeacher($current_school_session_id, $request->semester_id, $request->class_id, $request->section_id, $request->course_id);
+
+ if($assignedTeacher === null || $assignedTeacher->teacher_id !== Auth::user()->id) {
+ abort(404);
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/Traits/Base64ToFile.php b/app/Traits/Base64ToFile.php
new file mode 100644
index 000000000..f436e6e55
--- /dev/null
+++ b/app/Traits/Base64ToFile.php
@@ -0,0 +1,30 @@
+put($photoPath, base64_decode($photo));
+
+ return $photoPath;
+ } catch (\Exception $e) {
+ throw new \Exception('Failed to save Photo. '.$e->getMessage());
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/app/Traits/SchoolSession.php b/app/Traits/SchoolSession.php
new file mode 100644
index 000000000..2ddfc3fb4
--- /dev/null
+++ b/app/Traits/SchoolSession.php
@@ -0,0 +1,26 @@
+has('browse_session_id')){
+ $current_school_session_id = session('browse_session_id');
+ } else {
+ $latest_school_session = $this->schoolSessionRepository->getLatestSession();
+
+ if($latest_school_session){
+ $current_school_session_id = $latest_school_session->id;
+ }
+ }
+
+ return $current_school_session_id;
+ }
+}
\ No newline at end of file
diff --git a/app/User.php b/app/User.php
deleted file mode 100755
index 823386dda..000000000
--- a/app/User.php
+++ /dev/null
@@ -1,78 +0,0 @@
-where('role', 'student');
- }
-
- public function section()
- {
- return $this->belongsTo('App\Section');
- }
-
- public function school()
- {
- return $this->belongsTo('App\School');
- }
-
- public function department()
- {
- return $this->belongsTo('App\Department','department_id', 'id');
- }
-
- public function studentInfo(){
- return $this->hasOne('App\StudentInfo','student_id');
- }
-
- public function studentBoardExam(){
- return $this->hasMany('App\StudentBoardExam','student_id');
- }
-
- public function notifications(){
- return $this->hasMany('App\Notification','student_id');
- }
-
- public function hasRole(string $role): bool
- {
- return $this->role == $role ? true : false;
- }
-}
diff --git a/artisan b/artisan
old mode 100755
new mode 100644
index 5c23e2e24..67a3329b1
--- a/artisan
+++ b/artisan
@@ -11,7 +11,7 @@ define('LARAVEL_START', microtime(true));
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
-| loading of any our classes "manually". Feels great to relax.
+| loading of any of our classes manually. It's great to relax.
|
*/
diff --git a/bootstrap/app.php b/bootstrap/app.php
old mode 100755
new mode 100644
index f2801adf6..037e17df0
--- a/bootstrap/app.php
+++ b/bootstrap/app.php
@@ -12,7 +12,7 @@
*/
$app = new Illuminate\Foundation\Application(
- realpath(__DIR__.'/../')
+ $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
/*
diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore
old mode 100755
new mode 100644
diff --git a/composer.json b/composer.json
old mode 100755
new mode 100644
index 8bf17a5f5..df2b72f24
--- a/composer.json
+++ b/composer.json
@@ -1,82 +1,65 @@
{
"name": "changeweb/unifiedtransform",
- "description": "A school management software.",
- "keywords": ["school", "management"],
- "license": "GPL 3",
"type": "project",
+ "description": "The School Management App.",
+ "keywords": ["framework", "laravel"],
+ "license": "MIT",
"require": {
- "php": ">=7.2.5",
- "doctrine/dbal": "^2.9",
- "fideloper/proxy": "^4.2",
- "guzzlehttp/guzzle": "^6.3",
- "lab404/laravel-impersonate": "1.6.0",
- "laravel/cashier": "^11.0",
- "laravel/framework": "^7.0",
- "laravel/passport": "^9.1.0",
- "laravel/tinker": "^2.0",
- "laravel/ui": "2.0.3",
- "maatwebsite/excel": "^3.1",
- "mavinoo/laravel-batch": "2.1.9",
- "renatomarinho/laravel-page-speed": "^1.8",
+ "php": "^7.3|^8.0",
+ "fruitcake/laravel-cors": "^2.0",
+ "guzzlehttp/guzzle": "^7.0.1",
+ "laravel/framework": "^8.54",
+ "laravel/tinker": "^2.5",
+ "spatie/laravel-permission": "^4.2",
"stevebauman/purify": "^4.0"
},
"require-dev": {
- "facade/ignition": "^2.0",
- "barryvdh/laravel-debugbar": "^3.2",
- "filp/whoops": "~2.0",
- "friendsofphp/php-cs-fixer": "^2.14",
- "fzaninotto/faker": "^1.9.1",
- "laravel/dusk": "^6.1.0",
- "mockery/mockery": "^1.3.1",
- "nunomaduro/collision": "^4.1",
- "phpunit/phpunit": "^8.5",
- "rap2hpoutre/laravel-log-viewer": "^1.6.0"
+ "barryvdh/laravel-debugbar": "^3.6",
+ "facade/ignition": "^2.5",
+ "fakerphp/faker": "^1.9.1",
+ "laravel/sail": "^1.0.1",
+ "laravel/ui": "^3.3",
+ "mockery/mockery": "^1.4.2",
+ "nunomaduro/collision": "^5.0",
+ "phpunit/phpunit": "^9.3.3"
},
"autoload": {
- "classmap": [
- "database/seeds",
- "database/factories"
- ],
"psr-4": {
- "App\\": "app/"
+ "App\\": "app/",
+ "Database\\Factories\\": "database/factories/",
+ "Database\\Seeders\\": "database/seeders/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
- },
- "files": [
- "tests/utilities/functions.php"
- ]
- },
- "extra": {
- "laravel": {
- "dont-discover": [
- "laravel/dusk",
- "barryvdh/laravel-debugbar",
- "rap2hpoutre/laravel-log-viewer"
- ]
}
},
"scripts": {
+ "post-autoload-dump": [
+ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
+ "@php artisan package:discover --ansi"
+ ],
+ "post-update-cmd": [
+ "@php artisan vendor:publish --tag=laravel-assets --ansi"
+ ],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
- "@php artisan key:generate"
- ],
- "post-install-cmd": [
- "@php artisan key:generate",
- "@php artisan passport:keys"
- ],
- "post-autoload-dump": [
- "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
- "@php artisan package:discover"
+ "@php artisan key:generate --ansi"
]
},
+ "extra": {
+ "laravel": {
+ "dont-discover": []
+ }
+ },
"config": {
+ "optimize-autoloader": true,
"preferred-install": "dist",
- "sort-packages": true,
- "optimize-autoloader": true
- }
+ "sort-packages": true
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true
}
diff --git a/composer.lock b/composer.lock
index ceebdfe65..76e66327d 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,195 +4,40 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "61903a45b1cf4a92bde4ba68df7a848d",
+ "content-hash": "df37bf3186bd34e132baf87734044ca5",
"packages": [
{
- "name": "brick/math",
- "version": "0.9.2",
- "source": {
- "type": "git",
- "url": "https://github.com/brick/math.git",
- "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/brick/math/zipball/dff976c2f3487d42c1db75a3b180e2b9f0e72ce0",
- "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "php": "^7.1 || ^8.0"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.2",
- "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0",
- "vimeo/psalm": "4.3.2"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Brick\\Math\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Arbitrary-precision arithmetic library",
- "keywords": [
- "Arbitrary-precision",
- "BigInteger",
- "BigRational",
- "arithmetic",
- "bigdecimal",
- "bignum",
- "brick",
- "math"
- ],
- "funding": [
- {
- "url": "https://tidelift.com/funding/github/packagist/brick/math",
- "type": "tidelift"
- }
- ],
- "time": "2021-01-20T22:51:39+00:00"
- },
- {
- "name": "defuse/php-encryption",
- "version": "v2.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/defuse/php-encryption.git",
- "reference": "0f407c43b953d571421e0020ba92082ed5fb7620"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/defuse/php-encryption/zipball/0f407c43b953d571421e0020ba92082ed5fb7620",
- "reference": "0f407c43b953d571421e0020ba92082ed5fb7620",
- "shasum": ""
- },
- "require": {
- "ext-openssl": "*",
- "paragonie/random_compat": ">= 2",
- "php": ">=5.4.0"
- },
- "require-dev": {
- "nikic/php-parser": "^2.0|^3.0|^4.0",
- "phpunit/phpunit": "^4|^5"
- },
- "bin": [
- "bin/generate-defuse-key"
- ],
- "type": "library",
- "autoload": {
- "psr-4": {
- "Defuse\\Crypto\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Hornby",
- "email": "taylor@defuse.ca",
- "homepage": "https://defuse.ca/"
- },
- {
- "name": "Scott Arciszewski",
- "email": "info@paragonie.com",
- "homepage": "https://paragonie.com"
- }
- ],
- "description": "Secure PHP Encryption Library",
- "keywords": [
- "aes",
- "authenticated encryption",
- "cipher",
- "crypto",
- "cryptography",
- "encrypt",
- "encryption",
- "openssl",
- "security",
- "symmetric key cryptography"
- ],
- "time": "2018-07-24T23:27:56+00:00"
- },
- {
- "name": "dnoegel/php-xdg-base-dir",
- "version": "v0.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
- "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
- "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2"
- },
- "require-dev": {
- "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "XdgBaseDir\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "implementation of xdg base directory specification for php",
- "time": "2019-12-04T15:06:13+00:00"
- },
- {
- "name": "doctrine/cache",
- "version": "1.10.2",
+ "name": "asm89/stack-cors",
+ "version": "v2.0.3",
"source": {
"type": "git",
- "url": "https://github.com/doctrine/cache.git",
- "reference": "13e3381b25847283a91948d04640543941309727"
+ "url": "https://github.com/asm89/stack-cors.git",
+ "reference": "9cb795bf30988e8c96dd3c40623c48a877bc6714"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/13e3381b25847283a91948d04640543941309727",
- "reference": "13e3381b25847283a91948d04640543941309727",
+ "url": "https://api.github.com/repos/asm89/stack-cors/zipball/9cb795bf30988e8c96dd3c40623c48a877bc6714",
+ "reference": "9cb795bf30988e8c96dd3c40623c48a877bc6714",
"shasum": ""
},
"require": {
- "php": "~7.1 || ^8.0"
- },
- "conflict": {
- "doctrine/common": ">2.2,<2.4"
+ "php": "^7.0|^8.0",
+ "symfony/http-foundation": "~2.7|~3.0|~4.0|~5.0",
+ "symfony/http-kernel": "~2.7|~3.0|~4.0|~5.0"
},
"require-dev": {
- "alcaeus/mongo-php-adapter": "^1.1",
- "doctrine/coding-standard": "^6.0",
- "mongodb/mongodb": "^1.1",
- "phpunit/phpunit": "^7.0",
- "predis/predis": "~1.0"
- },
- "suggest": {
- "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
+ "phpunit/phpunit": "^6|^7|^8|^9",
+ "squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.9.x-dev"
+ "dev-master": "2.0-dev"
}
},
"autoload": {
"psr-4": {
- "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
+ "Asm89\\Stack\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -201,196 +46,111 @@
],
"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": "Alexander",
+ "email": "iam.asm89@gmail.com"
}
],
- "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": "Cross-origin resource sharing library and stack middleware",
+ "homepage": "https://github.com/asm89/stack-cors",
"keywords": [
- "abstraction",
- "apcu",
- "cache",
- "caching",
- "couchdb",
- "memcached",
- "php",
- "redis",
- "xcache"
- ],
- "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%2Fcache",
- "type": "tidelift"
- }
+ "cors",
+ "stack"
],
- "time": "2020-07-07T18:54:01+00:00"
+ "support": {
+ "issues": "https://github.com/asm89/stack-cors/issues",
+ "source": "https://github.com/asm89/stack-cors/tree/v2.0.3"
+ },
+ "time": "2021-03-11T06:42:03+00:00"
},
{
- "name": "doctrine/dbal",
- "version": "2.10.2",
+ "name": "brick/math",
+ "version": "0.9.2",
"source": {
"type": "git",
- "url": "https://github.com/doctrine/dbal.git",
- "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8"
+ "url": "https://github.com/brick/math.git",
+ "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/aab745e7b6b2de3b47019da81e7225e14dcfdac8",
- "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8",
+ "url": "https://api.github.com/repos/brick/math/zipball/dff976c2f3487d42c1db75a3b180e2b9f0e72ce0",
+ "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0",
"shasum": ""
},
"require": {
- "doctrine/cache": "^1.0",
- "doctrine/event-manager": "^1.0",
- "ext-pdo": "*",
- "php": "^7.2"
+ "ext-json": "*",
+ "php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
- "jetbrains/phpstorm-stubs": "^2019.1",
- "nikic/php-parser": "^4.4",
- "phpstan/phpstan": "^0.12",
- "phpunit/phpunit": "^8.4.1",
- "symfony/console": "^2.0.5|^3.0|^4.0|^5.0",
- "vimeo/psalm": "^3.11"
- },
- "suggest": {
- "symfony/console": "For helpful console commands such as SQL execution and import of files."
+ "php-coveralls/php-coveralls": "^2.2",
+ "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0",
+ "vimeo/psalm": "4.3.2"
},
- "bin": [
- "bin/doctrine-dbal"
- ],
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.10.x-dev",
- "dev-develop": "3.0.x-dev"
- }
- },
"autoload": {
"psr-4": {
- "Doctrine\\DBAL\\": "lib/Doctrine/DBAL"
+ "Brick\\Math\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
- "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"
- }
- ],
- "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": "Arbitrary-precision arithmetic library",
"keywords": [
- "abstraction",
- "database",
- "db2",
- "dbal",
- "mariadb",
- "mssql",
- "mysql",
- "oci8",
- "oracle",
- "pdo",
- "pgsql",
- "postgresql",
- "queryobject",
- "sasql",
- "sql",
- "sqlanywhere",
- "sqlite",
- "sqlserver",
- "sqlsrv"
+ "Arbitrary-precision",
+ "BigInteger",
+ "BigRational",
+ "arithmetic",
+ "bigdecimal",
+ "bignum",
+ "brick",
+ "math"
],
+ "support": {
+ "issues": "https://github.com/brick/math/issues",
+ "source": "https://github.com/brick/math/tree/0.9.2"
+ },
"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%2Fdbal",
+ "url": "https://tidelift.com/funding/github/packagist/brick/math",
"type": "tidelift"
}
],
- "time": "2020-04-20T17:19:26+00:00"
+ "time": "2021-01-20T22:51:39+00:00"
},
{
- "name": "doctrine/event-manager",
- "version": "1.1.0",
+ "name": "dflydev/dot-access-data",
+ "version": "v3.0.1",
"source": {
"type": "git",
- "url": "https://github.com/doctrine/event-manager.git",
- "reference": "629572819973f13486371cb611386eb17851e85c"
+ "url": "https://github.com/dflydev/dflydev-dot-access-data.git",
+ "reference": "0992cc19268b259a39e86f296da5f0677841f42c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c",
- "reference": "629572819973f13486371cb611386eb17851e85c",
+ "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c",
+ "reference": "0992cc19268b259a39e86f296da5f0677841f42c",
"shasum": ""
},
"require": {
- "php": "^7.1"
- },
- "conflict": {
- "doctrine/common": "<2.9@dev"
+ "php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpunit/phpunit": "^7.0"
+ "phpstan/phpstan": "^0.12.42",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3",
+ "scrutinizer/ocular": "1.6.0",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^3.14"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-main": "3.x-dev"
}
},
"autoload": {
"psr-4": {
- "Doctrine\\Common\\": "lib/Doctrine/Common"
+ "Dflydev\\DotAccessData\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -399,40 +159,39 @@
],
"authors": [
{
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
+ "name": "Dragonfly Development Inc.",
+ "email": "info@dflydev.com",
+ "homepage": "http://dflydev.com"
},
{
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
+ "name": "Beau Simensen",
+ "email": "beau@dflydev.com",
+ "homepage": "http://beausimensen.com"
},
{
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
+ "name": "Carlos Frutos",
+ "email": "carlos@kiwing.it",
+ "homepage": "https://github.com/cfrutos"
},
{
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com"
+ "name": "Colin O'Dell",
+ "email": "colinodell@gmail.com",
+ "homepage": "https://www.colinodell.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",
+ "description": "Given a deep data structure, access data by dot notation.",
+ "homepage": "https://github.com/dflydev/dflydev-dot-access-data",
"keywords": [
- "event",
- "event dispatcher",
- "event manager",
- "event system",
- "events"
+ "access",
+ "data",
+ "dot",
+ "notation"
],
- "time": "2019-11-10T09:48:07+00:00"
+ "support": {
+ "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues",
+ "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.1"
+ },
+ "time": "2021-08-13T13:06:58+00:00"
},
{
"name": "doctrine/inflector",
@@ -509,6 +268,10 @@
"uppercase",
"words"
],
+ "support": {
+ "issues": "https://github.com/doctrine/inflector/issues",
+ "source": "https://github.com/doctrine/inflector/tree/2.0.x"
+ },
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
@@ -585,6 +348,10 @@
"parser",
"php"
],
+ "support": {
+ "issues": "https://github.com/doctrine/lexer/issues",
+ "source": "https://github.com/doctrine/lexer/tree/1.2.1"
+ },
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
@@ -602,97 +369,33 @@
"time": "2020-05-25T17:44:05+00:00"
},
{
- "name": "dompdf/dompdf",
- "version": "v0.8.5",
+ "name": "dragonmantank/cron-expression",
+ "version": "v3.1.0",
"source": {
"type": "git",
- "url": "https://github.com/dompdf/dompdf.git",
- "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56"
+ "url": "https://github.com/dragonmantank/cron-expression.git",
+ "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/dompdf/dompdf/zipball/6782abfc090b132134cd6cea0ec6d76f0fce2c56",
- "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56",
+ "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c",
+ "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c",
"shasum": ""
},
"require": {
- "ext-dom": "*",
- "ext-mbstring": "*",
- "phenx/php-font-lib": "^0.5.1",
- "phenx/php-svg-lib": "^0.3.3",
- "php": "^7.1"
+ "php": "^7.2|^8.0",
+ "webmozart/assert": "^1.7.0"
+ },
+ "replace": {
+ "mtdowling/cron-expression": "^1.0"
},
"require-dev": {
- "phpunit/phpunit": "^7.5",
- "squizlabs/php_codesniffer": "^3.5"
- },
- "suggest": {
- "ext-gd": "Needed to process images",
- "ext-gmagick": "Improves image processing performance",
- "ext-imagick": "Improves image processing performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-develop": "0.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Dompdf\\": "src/"
- },
- "classmap": [
- "lib/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "LGPL-2.1"
- ],
- "authors": [
- {
- "name": "Fabien Ménager",
- "email": "fabien.menager@gmail.com"
- },
- {
- "name": "Brian Sweeney",
- "email": "eclecticgeek@gmail.com"
- },
- {
- "name": "Gabriel Bull",
- "email": "me@gabrielbull.com"
- }
- ],
- "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
- "homepage": "https://github.com/dompdf/dompdf",
- "time": "2020-02-20T03:52:51+00:00"
- },
- {
- "name": "dragonmantank/cron-expression",
- "version": "v2.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/dragonmantank/cron-expression.git",
- "reference": "65b2d8ee1f10915efb3b55597da3404f096acba2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/65b2d8ee1f10915efb3b55597da3404f096acba2",
- "reference": "65b2d8ee1f10915efb3b55597da3404f096acba2",
- "shasum": ""
- },
- "require": {
- "php": "^7.0|^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.4|^7.0|^8.0|^9.0"
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-webmozart-assert": "^0.12.7",
+ "phpunit/phpunit": "^7.0|^8.0|^9.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- }
- },
"autoload": {
"psr-4": {
"Cron\\": "src/Cron/"
@@ -703,11 +406,6 @@
"MIT"
],
"authors": [
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
{
"name": "Chris Tankersley",
"email": "chris@ctankersley.com",
@@ -719,13 +417,17 @@
"cron",
"schedule"
],
+ "support": {
+ "issues": "https://github.com/dragonmantank/cron-expression/issues",
+ "source": "https://github.com/dragonmantank/cron-expression/tree/v3.1.0"
+ },
"funding": [
{
"url": "https://github.com/dragonmantank",
"type": "github"
}
],
- "time": "2020-10-13T00:52:37+00:00"
+ "time": "2020-11-24T19:55:57+00:00"
},
{
"name": "egulias/email-validator",
@@ -783,6 +485,10 @@
"validation",
"validator"
],
+ "support": {
+ "issues": "https://github.com/egulias/EmailValidator/issues",
+ "source": "https://github.com/egulias/EmailValidator/tree/2.1.25"
+ },
"funding": [
{
"url": "https://github.com/egulias",
@@ -846,39 +552,47 @@
"time": "2020-06-29T00:56:53+00:00"
},
{
- "name": "fideloper/proxy",
- "version": "4.4.0",
+ "name": "fruitcake/laravel-cors",
+ "version": "v2.0.4",
"source": {
"type": "git",
- "url": "https://github.com/fideloper/TrustedProxy.git",
- "reference": "9beebf48a1c344ed67c1d36bb1b8709db7c3c1a8"
+ "url": "https://github.com/fruitcake/laravel-cors.git",
+ "reference": "a8ccedc7ca95189ead0e407c43b530dc17791d6a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/9beebf48a1c344ed67c1d36bb1b8709db7c3c1a8",
- "reference": "9beebf48a1c344ed67c1d36bb1b8709db7c3c1a8",
+ "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/a8ccedc7ca95189ead0e407c43b530dc17791d6a",
+ "reference": "a8ccedc7ca95189ead0e407c43b530dc17791d6a",
"shasum": ""
},
"require": {
- "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0",
- "php": ">=5.4.0"
+ "asm89/stack-cors": "^2.0.1",
+ "illuminate/contracts": "^6|^7|^8|^9",
+ "illuminate/support": "^6|^7|^8|^9",
+ "php": ">=7.2",
+ "symfony/http-foundation": "^4|^5",
+ "symfony/http-kernel": "^4.3.4|^5"
},
"require-dev": {
- "illuminate/http": "^5.0|^6.0|^7.0|^8.0",
- "mockery/mockery": "^1.0",
- "phpunit/phpunit": "^6.0"
+ "laravel/framework": "^6|^7|^8",
+ "orchestra/testbench-dusk": "^4|^5|^6|^7",
+ "phpunit/phpunit": "^6|^7|^8|^9",
+ "squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ },
"laravel": {
"providers": [
- "Fideloper\\Proxy\\TrustedProxyServiceProvider"
+ "Fruitcake\\Cors\\CorsServiceProvider"
]
}
},
"autoload": {
"psr-4": {
- "Fideloper\\Proxy\\": "src/"
+ "Fruitcake\\Cors\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -887,101 +601,139 @@
],
"authors": [
{
- "name": "Chris Fidao",
- "email": "fideloper@gmail.com"
+ "name": "Fruitcake",
+ "homepage": "https://fruitcake.nl"
+ },
+ {
+ "name": "Barry vd. Heuvel",
+ "email": "barryvdh@gmail.com"
}
],
- "description": "Set trusted proxies for Laravel",
+ "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application",
"keywords": [
- "load balancing",
- "proxy",
- "trusted proxy"
+ "api",
+ "cors",
+ "crossdomain",
+ "laravel"
+ ],
+ "support": {
+ "issues": "https://github.com/fruitcake/laravel-cors/issues",
+ "source": "https://github.com/fruitcake/laravel-cors/tree/v2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/barryvdh",
+ "type": "github"
+ }
],
- "time": "2020-06-23T01:36:47+00:00"
+ "time": "2021-04-26T11:24:25+00:00"
},
{
- "name": "firebase/php-jwt",
- "version": "v5.2.0",
+ "name": "graham-campbell/result-type",
+ "version": "v1.0.1",
"source": {
"type": "git",
- "url": "https://github.com/firebase/php-jwt.git",
- "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb"
+ "url": "https://github.com/GrahamCampbell/Result-Type.git",
+ "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/firebase/php-jwt/zipball/feb0e820b8436873675fd3aca04f3728eb2185cb",
- "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb",
+ "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/7e279d2cd5d7fbb156ce46daada972355cea27bb",
+ "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": "^7.0|^8.0",
+ "phpoption/phpoption": "^1.7.3"
},
"require-dev": {
- "phpunit/phpunit": ">=4.8 <=9"
+ "phpunit/phpunit": "^6.5|^7.5|^8.5|^9.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
"autoload": {
"psr-4": {
- "Firebase\\JWT\\": "src"
+ "GrahamCampbell\\ResultType\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Neuman Vong",
- "email": "neuman+pear@twilio.com",
- "role": "Developer"
- },
- {
- "name": "Anant Narayanan",
- "email": "anant@php.net",
- "role": "Developer"
+ "name": "Graham Campbell",
+ "email": "graham@alt-three.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": "An Implementation Of The Result Type",
"keywords": [
- "jwt",
- "php"
+ "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.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type",
+ "type": "tidelift"
+ }
],
- "time": "2020-03-25T18:49:23+00:00"
+ "time": "2020-04-13T13:17:36+00:00"
},
{
"name": "guzzlehttp/guzzle",
- "version": "6.5.5",
+ "version": "7.3.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
+ "reference": "7008573787b430c1c1f650e3722d9bba59967628"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
- "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7008573787b430c1c1f650e3722d9bba59967628",
+ "reference": "7008573787b430c1c1f650e3722d9bba59967628",
"shasum": ""
},
"require": {
"ext-json": "*",
- "guzzlehttp/promises": "^1.0",
- "guzzlehttp/psr7": "^1.6.1",
- "php": ">=5.5",
- "symfony/polyfill-intl-idn": "^1.17.0"
+ "guzzlehttp/promises": "^1.4",
+ "guzzlehttp/psr7": "^1.7 || ^2.0",
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-client": "^1.0"
+ },
+ "provide": {
+ "psr/http-client-implementation": "1.0"
},
"require-dev": {
+ "bamarni/composer-bin-plugin": "^1.4.1",
"ext-curl": "*",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
+ "php-http/client-integration-tests": "^3.0",
+ "phpunit/phpunit": "^8.5.5 || ^9.3.5",
"psr/log": "^1.1"
},
"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"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "6.5-dev"
+ "dev-master": "7.3-dev"
}
},
"autoload": {
@@ -1001,6 +753,11 @@
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://sagikazarmark.hu"
}
],
"description": "Guzzle is a PHP HTTP client library",
@@ -1011,30 +768,54 @@
"framework",
"http",
"http client",
+ "psr-18",
+ "psr-7",
"rest",
"web service"
],
- "time": "2020-06-16T21:01:06+00:00"
+ "support": {
+ "issues": "https://github.com/guzzle/guzzle/issues",
+ "source": "https://github.com/guzzle/guzzle/tree/7.3.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/alexeyshockov",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/gmponos",
+ "type": "github"
+ }
+ ],
+ "time": "2021-03-23T11:33:13+00:00"
},
{
"name": "guzzlehttp/promises",
- "version": "v1.3.1",
+ "version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
+ "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
- "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d",
+ "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d",
"shasum": ""
},
"require": {
- "php": ">=5.5.0"
+ "php": ">=5.5"
},
"require-dev": {
- "phpunit/phpunit": "^4.0"
+ "symfony/phpunit-bridge": "^4.4 || ^5.1"
},
"type": "library",
"extra": {
@@ -1065,50 +846,54 @@
"keywords": [
"promise"
],
- "time": "2016-12-20T10:07:11+00:00"
+ "support": {
+ "issues": "https://github.com/guzzle/promises/issues",
+ "source": "https://github.com/guzzle/promises/tree/1.4.1"
+ },
+ "time": "2021-03-07T09:25:29+00:00"
},
{
"name": "guzzlehttp/psr7",
- "version": "1.6.1",
+ "version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "239400de7a173fe9901b9ac7c06497751f00727a"
+ "reference": "1dc8d9cba3897165e16d12bb13d813afb1eb3fe7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a",
- "reference": "239400de7a173fe9901b9ac7c06497751f00727a",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/1dc8d9cba3897165e16d12bb13d813afb1eb3fe7",
+ "reference": "1dc8d9cba3897165e16d12bb13d813afb1eb3fe7",
"shasum": ""
},
"require": {
- "php": ">=5.4.0",
- "psr/http-message": "~1.0",
- "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.0",
+ "ralouphie/getallheaders": "^3.0"
},
"provide": {
+ "psr/http-factory-implementation": "1.0",
"psr/http-message-implementation": "1.0"
},
"require-dev": {
- "ext-zlib": "*",
- "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
+ "bamarni/composer-bin-plugin": "^1.4.1",
+ "http-interop/http-factory-tests": "^0.9",
+ "phpunit/phpunit": "^8.5.8 || ^9.3.10"
},
"suggest": {
- "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses"
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.6-dev"
+ "dev-master": "2.0-dev"
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\Psr7\\": "src/"
- },
- "files": [
- "src/functions_include.php"
- ]
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1123,6 +908,11 @@
{
"name": "Tobias Schultze",
"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",
@@ -1136,48 +926,157 @@
"uri",
"url"
],
- "time": "2019-07-01T23:21:34+00:00"
+ "support": {
+ "issues": "https://github.com/guzzle/psr7/issues",
+ "source": "https://github.com/guzzle/psr7/tree/2.0.0"
+ },
+ "time": "2021-06-30T20:03:07+00:00"
},
{
- "name": "lab404/laravel-impersonate",
- "version": "1.6.0",
+ "name": "laravel/framework",
+ "version": "v8.54.0",
"source": {
"type": "git",
- "url": "https://github.com/404labfr/laravel-impersonate.git",
- "reference": "ac3a2bfe056f35b4201b1a06db04af2b3a2905d6"
+ "url": "https://github.com/laravel/framework.git",
+ "reference": "7b88554cd1aeb52b7f82689bf244182e7a81894b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/404labfr/laravel-impersonate/zipball/ac3a2bfe056f35b4201b1a06db04af2b3a2905d6",
- "reference": "ac3a2bfe056f35b4201b1a06db04af2b3a2905d6",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/7b88554cd1aeb52b7f82689bf244182e7a81894b",
+ "reference": "7b88554cd1aeb52b7f82689bf244182e7a81894b",
"shasum": ""
},
"require": {
- "laravel/framework": "^6.0 | ^7.0",
- "php": ">=7.2"
+ "doctrine/inflector": "^1.4|^2.0",
+ "dragonmantank/cron-expression": "^3.0.2",
+ "egulias/email-validator": "^2.1.10",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "ext-openssl": "*",
+ "league/commonmark": "^1.3|^2.0",
+ "league/flysystem": "^1.1",
+ "monolog/monolog": "^2.0",
+ "nesbot/carbon": "^2.31",
+ "opis/closure": "^3.6",
+ "php": "^7.3|^8.0",
+ "psr/container": "^1.0",
+ "psr/simple-cache": "^1.0",
+ "ramsey/uuid": "^4.0",
+ "swiftmailer/swiftmailer": "^6.0",
+ "symfony/console": "^5.1.4",
+ "symfony/error-handler": "^5.1.4",
+ "symfony/finder": "^5.1.4",
+ "symfony/http-foundation": "^5.1.4",
+ "symfony/http-kernel": "^5.1.4",
+ "symfony/mime": "^5.1.4",
+ "symfony/process": "^5.1.4",
+ "symfony/routing": "^5.1.4",
+ "symfony/var-dumper": "^5.1.4",
+ "tijsverkoyen/css-to-inline-styles": "^2.2.2",
+ "vlucas/phpdotenv": "^5.2",
+ "voku/portable-ascii": "^1.4.8"
+ },
+ "conflict": {
+ "tightenco/collect": "<5.5.33"
+ },
+ "provide": {
+ "psr/container-implementation": "1.0"
+ },
+ "replace": {
+ "illuminate/auth": "self.version",
+ "illuminate/broadcasting": "self.version",
+ "illuminate/bus": "self.version",
+ "illuminate/cache": "self.version",
+ "illuminate/collections": "self.version",
+ "illuminate/config": "self.version",
+ "illuminate/console": "self.version",
+ "illuminate/container": "self.version",
+ "illuminate/contracts": "self.version",
+ "illuminate/cookie": "self.version",
+ "illuminate/database": "self.version",
+ "illuminate/encryption": "self.version",
+ "illuminate/events": "self.version",
+ "illuminate/filesystem": "self.version",
+ "illuminate/hashing": "self.version",
+ "illuminate/http": "self.version",
+ "illuminate/log": "self.version",
+ "illuminate/macroable": "self.version",
+ "illuminate/mail": "self.version",
+ "illuminate/notifications": "self.version",
+ "illuminate/pagination": "self.version",
+ "illuminate/pipeline": "self.version",
+ "illuminate/queue": "self.version",
+ "illuminate/redis": "self.version",
+ "illuminate/routing": "self.version",
+ "illuminate/session": "self.version",
+ "illuminate/support": "self.version",
+ "illuminate/testing": "self.version",
+ "illuminate/translation": "self.version",
+ "illuminate/validation": "self.version",
+ "illuminate/view": "self.version"
},
"require-dev": {
- "orchestra/database": "^4.0 | ^5.0",
- "orchestra/testbench": "^4.0 | ^5.0",
- "phpunit/phpunit": "^7.5 | ^8.0",
- "symfony/http-foundation": ">=4.3.8",
- "symfony/mime": ">=4.3.8"
+ "aws/aws-sdk-php": "^3.186.4",
+ "doctrine/dbal": "^2.6|^3.0",
+ "filp/whoops": "^2.8",
+ "guzzlehttp/guzzle": "^6.5.5|^7.0.1",
+ "league/flysystem-cached-adapter": "^1.0",
+ "mockery/mockery": "^1.4.2",
+ "orchestra/testbench-core": "^6.23",
+ "pda/pheanstalk": "^4.0",
+ "phpunit/phpunit": "^8.5.8|^9.3.3",
+ "predis/predis": "^1.1.2",
+ "symfony/cache": "^5.1.4"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.186.4).",
+ "brianium/paratest": "Required to run tests in parallel (^6.0).",
+ "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6|^3.0).",
+ "ext-ftp": "Required to use the Flysystem FTP driver.",
+ "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().",
+ "ext-memcached": "Required to use the memcache cache driver.",
+ "ext-pcntl": "Required to use all features of the queue worker.",
+ "ext-posix": "Required to use all features of the queue worker.",
+ "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).",
+ "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).",
+ "filp/whoops": "Required for friendly error pages in development (^2.8).",
+ "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.5.5|^7.0.1).",
+ "laravel/tinker": "Required to use the tinker console command (^2.0).",
+ "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).",
+ "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).",
+ "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).",
+ "mockery/mockery": "Required to use mocking (^1.4.2).",
+ "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).",
+ "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).",
+ "phpunit/phpunit": "Required to use assertions and run tests (^8.5.8|^9.3.3).",
+ "predis/predis": "Required to use the predis connector (^1.1.2).",
+ "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).",
+ "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0|^5.0|^6.0).",
+ "symfony/cache": "Required to PSR-6 cache bridge (^5.1.4).",
+ "symfony/filesystem": "Required to enable support for relative symbolic links (^5.1.4).",
+ "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).",
+ "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)."
},
"type": "library",
"extra": {
- "laravel": {
- "providers": [
- "Lab404\\Impersonate\\ImpersonateServiceProvider"
- ]
+ "branch-alias": {
+ "dev-master": "8.x-dev"
}
},
"autoload": {
- "psr-4": {
- "Lab404\\Impersonate\\": "src/"
- },
"files": [
- "src/helpers.php"
- ]
+ "src/Illuminate/Collections/helpers.php",
+ "src/Illuminate/Events/functions.php",
+ "src/Illuminate/Foundation/helpers.php",
+ "src/Illuminate/Support/helpers.php"
+ ],
+ "psr-4": {
+ "Illuminate\\": "src/Illuminate/",
+ "Illuminate\\Support\\": [
+ "src/Illuminate/Macroable/",
+ "src/Illuminate/Collections/"
+ ]
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1185,388 +1084,333 @@
],
"authors": [
{
- "name": "404lab",
- "email": "web@404lab.fr"
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
}
],
- "description": "Laravel Impersonate is a plugin that allows to you to authenticate as your users.",
+ "description": "The Laravel Framework.",
+ "homepage": "https://laravel.com",
"keywords": [
- "auth",
- "impersonate",
- "impersonation",
- "laravel",
- "laravel-package",
- "laravel-plugin",
- "package",
- "plugin",
- "user"
+ "framework",
+ "laravel"
],
- "time": "2020-03-03T15:57:38+00:00"
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2021-08-10T14:25:51+00:00"
},
{
- "name": "laminas/laminas-diactoros",
- "version": "2.3.1",
+ "name": "laravel/tinker",
+ "version": "v2.6.1",
"source": {
"type": "git",
- "url": "https://github.com/laminas/laminas-diactoros.git",
- "reference": "2ffc7cc816f6207b27923ee15edf6fac668390aa"
+ "url": "https://github.com/laravel/tinker.git",
+ "reference": "04ad32c1a3328081097a181875733fa51f402083"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/2ffc7cc816f6207b27923ee15edf6fac668390aa",
- "reference": "2ffc7cc816f6207b27923ee15edf6fac668390aa",
+ "url": "https://api.github.com/repos/laravel/tinker/zipball/04ad32c1a3328081097a181875733fa51f402083",
+ "reference": "04ad32c1a3328081097a181875733fa51f402083",
"shasum": ""
},
"require": {
- "laminas/laminas-zendframework-bridge": "^1.0",
- "php": "^7.1",
- "psr/http-factory": "^1.0",
- "psr/http-message": "^1.0"
+ "illuminate/console": "^6.0|^7.0|^8.0",
+ "illuminate/contracts": "^6.0|^7.0|^8.0",
+ "illuminate/support": "^6.0|^7.0|^8.0",
+ "php": "^7.2.5|^8.0",
+ "psy/psysh": "^0.10.4",
+ "symfony/var-dumper": "^4.3.4|^5.0"
},
- "conflict": {
- "phpspec/prophecy": "<1.9.0"
+ "require-dev": {
+ "mockery/mockery": "~1.3.3|^1.4.2",
+ "phpunit/phpunit": "^8.5.8|^9.3.3"
},
- "provide": {
- "psr/http-factory-implementation": "1.0",
- "psr/http-message-implementation": "1.0"
- },
- "replace": {
- "zendframework/zend-diactoros": "^2.2.1"
- },
- "require-dev": {
- "ext-curl": "*",
- "ext-dom": "*",
- "ext-libxml": "*",
- "http-interop/http-factory-tests": "^0.5.0",
- "laminas/laminas-coding-standard": "~1.0.0",
- "php-http/psr7-integration-tests": "^1.0",
- "phpunit/phpunit": "^7.5.18"
+ "suggest": {
+ "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0)."
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.3.x-dev",
- "dev-develop": "2.4.x-dev"
+ "dev-master": "2.x-dev"
},
- "laminas": {
- "config-provider": "Laminas\\Diactoros\\ConfigProvider",
- "module": "Laminas\\Diactoros"
+ "laravel": {
+ "providers": [
+ "Laravel\\Tinker\\TinkerServiceProvider"
+ ]
}
},
"autoload": {
- "files": [
- "src/functions/create_uploaded_file.php",
- "src/functions/marshal_headers_from_sapi.php",
- "src/functions/marshal_method_from_sapi.php",
- "src/functions/marshal_protocol_version_from_sapi.php",
- "src/functions/marshal_uri_from_sapi.php",
- "src/functions/normalize_server.php",
- "src/functions/normalize_uploaded_files.php",
- "src/functions/parse_cookie_header.php",
- "src/functions/create_uploaded_file.legacy.php",
- "src/functions/marshal_headers_from_sapi.legacy.php",
- "src/functions/marshal_method_from_sapi.legacy.php",
- "src/functions/marshal_protocol_version_from_sapi.legacy.php",
- "src/functions/marshal_uri_from_sapi.legacy.php",
- "src/functions/normalize_server.legacy.php",
- "src/functions/normalize_uploaded_files.legacy.php",
- "src/functions/parse_cookie_header.legacy.php"
- ],
"psr-4": {
- "Laminas\\Diactoros\\": "src/"
+ "Laravel\\Tinker\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
- ],
- "description": "PSR HTTP Message implementations",
- "homepage": "https://laminas.dev",
- "keywords": [
- "http",
- "laminas",
- "psr",
- "psr-17",
- "psr-7"
+ "MIT"
],
- "funding": [
+ "authors": [
{
- "url": "https://funding.communitybridge.org/projects/laminas-project",
- "type": "community_bridge"
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
}
],
- "time": "2020-07-07T15:34:31+00:00"
+ "description": "Powerful REPL for the Laravel framework.",
+ "keywords": [
+ "REPL",
+ "Tinker",
+ "laravel",
+ "psysh"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/tinker/issues",
+ "source": "https://github.com/laravel/tinker/tree/v2.6.1"
+ },
+ "time": "2021-03-02T16:53:12+00:00"
},
{
- "name": "laminas/laminas-zendframework-bridge",
- "version": "1.0.4",
+ "name": "league/commonmark",
+ "version": "2.0.1",
"source": {
"type": "git",
- "url": "https://github.com/laminas/laminas-zendframework-bridge.git",
- "reference": "fcd87520e4943d968557803919523772475e8ea3"
+ "url": "https://github.com/thephpleague/commonmark.git",
+ "reference": "0d57f20aa03129ee7ef5f690e634884315d4238c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/fcd87520e4943d968557803919523772475e8ea3",
- "reference": "fcd87520e4943d968557803919523772475e8ea3",
+ "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/0d57f20aa03129ee7ef5f690e634884315d4238c",
+ "reference": "0d57f20aa03129ee7ef5f690e634884315d4238c",
"shasum": ""
},
"require": {
- "php": "^5.6 || ^7.0"
+ "ext-mbstring": "*",
+ "league/config": "^1.1",
+ "php": "^7.4 || ^8.0",
+ "psr/event-dispatcher": "^1.0",
+ "symfony/polyfill-php80": "^1.15"
},
"require-dev": {
- "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1",
- "squizlabs/php_codesniffer": "^3.5"
+ "cebe/markdown": "^1.0",
+ "commonmark/cmark": "0.30.0",
+ "commonmark/commonmark.js": "0.30.0",
+ "composer/package-versions-deprecated": "^1.8",
+ "erusev/parsedown": "^1.0",
+ "ext-json": "*",
+ "github/gfm": "0.29.0",
+ "michelf/php-markdown": "^1.4",
+ "phpstan/phpstan": "^0.12.88",
+ "phpunit/phpunit": "^9.5.5",
+ "scrutinizer/ocular": "^1.8.1",
+ "symfony/finder": "^5.3",
+ "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0",
+ "unleashedtech/php-coding-standard": "^3.1",
+ "vimeo/psalm": "^4.7.3"
+ },
+ "suggest": {
+ "symfony/yaml": "v2.3+ required if using the Front Matter extension"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev",
- "dev-develop": "1.1.x-dev"
- },
- "laminas": {
- "module": "Laminas\\ZendFrameworkBridge"
+ "dev-main": "2.1-dev"
}
},
"autoload": {
- "files": [
- "src/autoload.php"
- ],
"psr-4": {
- "Laminas\\ZendFrameworkBridge\\": "src//"
+ "League\\CommonMark\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
- "description": "Alias legacy ZF class names to Laminas Project equivalents.",
+ "authors": [
+ {
+ "name": "Colin O'Dell",
+ "email": "colinodell@gmail.com",
+ "homepage": "https://www.colinodell.com",
+ "role": "Lead Developer"
+ }
+ ],
+ "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)",
+ "homepage": "https://commonmark.thephpleague.com",
"keywords": [
- "ZendFramework",
- "autoloading",
- "laminas",
- "zf"
+ "commonmark",
+ "flavored",
+ "gfm",
+ "github",
+ "github-flavored",
+ "markdown",
+ "md",
+ "parser"
],
+ "support": {
+ "docs": "https://commonmark.thephpleague.com/",
+ "forum": "https://github.com/thephpleague/commonmark/discussions",
+ "issues": "https://github.com/thephpleague/commonmark/issues",
+ "rss": "https://github.com/thephpleague/commonmark/releases.atom",
+ "source": "https://github.com/thephpleague/commonmark"
+ },
"funding": [
{
- "url": "https://funding.communitybridge.org/projects/laminas-project",
- "type": "community_bridge"
+ "url": "https://enjoy.gitstore.app/repositories/thephpleague/commonmark",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.colinodell.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.paypal.me/colinpodell/10.00",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/colinodell",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/colinodell",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/league/commonmark",
+ "type": "tidelift"
}
],
- "time": "2020-05-20T16:45:56+00:00"
+ "time": "2021-07-31T19:15:22+00:00"
},
{
- "name": "laravel/cashier",
- "version": "v11.3.0",
+ "name": "league/config",
+ "version": "v1.1.0",
"source": {
"type": "git",
- "url": "https://github.com/laravel/cashier.git",
- "reference": "e327ae1e411f1990e2c16d3c3477f074501ecee0"
+ "url": "https://github.com/thephpleague/config.git",
+ "reference": "20d42d88f12a76ff862e17af4f14a5a4bbfd0925"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/cashier/zipball/e327ae1e411f1990e2c16d3c3477f074501ecee0",
- "reference": "e327ae1e411f1990e2c16d3c3477f074501ecee0",
+ "url": "https://api.github.com/repos/thephpleague/config/zipball/20d42d88f12a76ff862e17af4f14a5a4bbfd0925",
+ "reference": "20d42d88f12a76ff862e17af4f14a5a4bbfd0925",
"shasum": ""
},
"require": {
- "dompdf/dompdf": "^0.8.0",
- "ext-json": "*",
- "illuminate/contracts": "^6.0|^7.0",
- "illuminate/database": "^6.0|^7.0",
- "illuminate/http": "^6.0|^7.0",
- "illuminate/log": "^6.0|^7.0",
- "illuminate/notifications": "^6.0|^7.0",
- "illuminate/routing": "^6.0|^7.0",
- "illuminate/support": "^6.0|^7.0",
- "illuminate/view": "^6.0|^7.0",
- "moneyphp/money": "^3.2",
- "nesbot/carbon": "^2.0",
- "php": "^7.2",
- "stripe/stripe-php": "^7.0",
- "symfony/http-kernel": "^4.3|^5.0",
- "symfony/intl": "^4.3|^5.0"
+ "dflydev/dot-access-data": "^3.0",
+ "nette/schema": "^1.2",
+ "php": "^7.4 || ^8.0"
},
"require-dev": {
- "mockery/mockery": "^1.0",
- "orchestra/testbench": "^4.0|^5.0",
- "phpunit/phpunit": "^8.0|^9.0"
- },
- "suggest": {
- "ext-intl": "Allows for more locales besides the default \"en\" when formatting money values."
+ "phpstan/phpstan": "^0.12.90",
+ "phpunit/phpunit": "^9.5.5",
+ "scrutinizer/ocular": "^1.8.1",
+ "unleashedtech/php-coding-standard": "^3.1",
+ "vimeo/psalm": "^4.7.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "11.x-dev"
- },
- "laravel": {
- "providers": [
- "Laravel\\Cashier\\CashierServiceProvider"
- ]
+ "dev-main": "1.2-dev"
}
},
"autoload": {
"psr-4": {
- "Laravel\\Cashier\\": "src/"
+ "League\\Config\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Taylor Otwell",
- "email": "taylorotwell@gmail.com"
+ "name": "Colin O'Dell",
+ "email": "colinodell@gmail.com",
+ "homepage": "https://www.colinodell.com",
+ "role": "Lead Developer"
}
],
- "description": "Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.",
+ "description": "Define configuration arrays with strict schemas and access values with dot notation",
+ "homepage": "https://config.thephpleague.com",
"keywords": [
- "billing",
- "laravel",
- "stripe"
+ "array",
+ "config",
+ "configuration",
+ "dot",
+ "dot-access",
+ "nested",
+ "schema"
+ ],
+ "support": {
+ "docs": "https://config.thephpleague.com/",
+ "issues": "https://github.com/thephpleague/config/issues",
+ "rss": "https://github.com/thephpleague/config/releases.atom",
+ "source": "https://github.com/thephpleague/config"
+ },
+ "funding": [
+ {
+ "url": "https://www.colinodell.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.paypal.me/colinpodell/10.00",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/colinodell",
+ "type": "github"
+ }
],
- "time": "2020-05-26T17:54:11+00:00"
+ "time": "2021-06-19T15:52:37+00:00"
},
{
- "name": "laravel/framework",
- "version": "v7.30.4",
+ "name": "league/flysystem",
+ "version": "1.1.4",
"source": {
"type": "git",
- "url": "https://github.com/laravel/framework.git",
- "reference": "9dd38140dc2924daa1a020a3d7a45f9ceff03df3"
+ "url": "https://github.com/thephpleague/flysystem.git",
+ "reference": "f3ad69181b8afed2c9edf7be5a2918144ff4ea32"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/9dd38140dc2924daa1a020a3d7a45f9ceff03df3",
- "reference": "9dd38140dc2924daa1a020a3d7a45f9ceff03df3",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f3ad69181b8afed2c9edf7be5a2918144ff4ea32",
+ "reference": "f3ad69181b8afed2c9edf7be5a2918144ff4ea32",
"shasum": ""
},
"require": {
- "doctrine/inflector": "^1.4|^2.0",
- "dragonmantank/cron-expression": "^2.3.1",
- "egulias/email-validator": "^2.1.10",
- "ext-json": "*",
- "ext-mbstring": "*",
- "ext-openssl": "*",
- "league/commonmark": "^1.3",
- "league/flysystem": "^1.1",
- "monolog/monolog": "^2.0",
- "nesbot/carbon": "^2.31",
- "opis/closure": "^3.6",
- "php": "^7.2.5|^8.0",
- "psr/container": "^1.0",
- "psr/simple-cache": "^1.0",
- "ramsey/uuid": "^3.7|^4.0",
- "swiftmailer/swiftmailer": "^6.0",
- "symfony/console": "^5.0",
- "symfony/error-handler": "^5.0",
- "symfony/finder": "^5.0",
- "symfony/http-foundation": "^5.0",
- "symfony/http-kernel": "^5.0",
- "symfony/mime": "^5.0",
- "symfony/polyfill-php73": "^1.17",
- "symfony/process": "^5.0",
- "symfony/routing": "^5.0",
- "symfony/var-dumper": "^5.0",
- "tijsverkoyen/css-to-inline-styles": "^2.2.2",
- "vlucas/phpdotenv": "^4.0",
- "voku/portable-ascii": "^1.4.8"
+ "ext-fileinfo": "*",
+ "league/mime-type-detection": "^1.3",
+ "php": "^7.2.5 || ^8.0"
},
"conflict": {
- "tightenco/collect": "<5.5.33"
- },
- "provide": {
- "psr/container-implementation": "1.0"
- },
- "replace": {
- "illuminate/auth": "self.version",
- "illuminate/broadcasting": "self.version",
- "illuminate/bus": "self.version",
- "illuminate/cache": "self.version",
- "illuminate/config": "self.version",
- "illuminate/console": "self.version",
- "illuminate/container": "self.version",
- "illuminate/contracts": "self.version",
- "illuminate/cookie": "self.version",
- "illuminate/database": "self.version",
- "illuminate/encryption": "self.version",
- "illuminate/events": "self.version",
- "illuminate/filesystem": "self.version",
- "illuminate/hashing": "self.version",
- "illuminate/http": "self.version",
- "illuminate/log": "self.version",
- "illuminate/mail": "self.version",
- "illuminate/notifications": "self.version",
- "illuminate/pagination": "self.version",
- "illuminate/pipeline": "self.version",
- "illuminate/queue": "self.version",
- "illuminate/redis": "self.version",
- "illuminate/routing": "self.version",
- "illuminate/session": "self.version",
- "illuminate/support": "self.version",
- "illuminate/testing": "self.version",
- "illuminate/translation": "self.version",
- "illuminate/validation": "self.version",
- "illuminate/view": "self.version"
+ "league/flysystem-sftp": "<1.0.6"
},
"require-dev": {
- "aws/aws-sdk-php": "^3.155",
- "doctrine/dbal": "^2.6",
- "filp/whoops": "^2.8",
- "guzzlehttp/guzzle": "^6.3.1|^7.0.1",
- "league/flysystem-cached-adapter": "^1.0",
- "mockery/mockery": "~1.3.3|^1.4.2",
- "moontoast/math": "^1.1",
- "orchestra/testbench-core": "^5.8",
- "pda/pheanstalk": "^4.0",
- "phpunit/phpunit": "^8.4|^9.3.3",
- "predis/predis": "^1.1.1",
- "symfony/cache": "^5.0"
+ "phpspec/prophecy": "^1.11.1",
+ "phpunit/phpunit": "^8.5.8"
},
"suggest": {
- "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.155).",
- "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).",
- "ext-ftp": "Required to use the Flysystem FTP driver.",
- "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().",
- "ext-memcached": "Required to use the memcache cache driver.",
- "ext-pcntl": "Required to use all features of the queue worker.",
- "ext-posix": "Required to use all features of the queue worker.",
- "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).",
- "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).",
- "filp/whoops": "Required for friendly error pages in development (^2.8).",
- "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.3.1|^7.0.1).",
- "laravel/tinker": "Required to use the tinker console command (^2.0).",
- "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).",
- "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).",
- "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).",
- "mockery/mockery": "Required to use mocking (~1.3.3|^1.4.2).",
- "moontoast/math": "Required to use ordered UUIDs (^1.1).",
- "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).",
- "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).",
- "phpunit/phpunit": "Required to use assertions and run tests (^8.4|^9.3.3).",
- "predis/predis": "Required to use the predis connector (^1.1.2).",
- "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).",
- "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).",
- "symfony/cache": "Required to PSR-6 cache bridge (^5.0).",
- "symfony/filesystem": "Required to create relative storage directory symbolic links (^5.0).",
- "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).",
- "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)."
+ "ext-ftp": "Allows you to use FTP server storage",
+ "ext-openssl": "Allows you to use FTPS server storage",
+ "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
+ "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
+ "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
+ "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
+ "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
+ "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
+ "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
+ "league/flysystem-webdav": "Allows you to use WebDAV storage",
+ "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter",
+ "spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
+ "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "7.x-dev"
+ "dev-master": "1.1-dev"
}
},
"autoload": {
- "files": [
- "src/Illuminate/Foundation/helpers.php",
- "src/Illuminate/Support/helpers.php"
- ],
"psr-4": {
- "Illuminate\\": "src/Illuminate/"
+ "League\\Flysystem\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1575,1051 +1419,69 @@
],
"authors": [
{
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
+ "name": "Frank de Jonge",
+ "email": "info@frenky.net"
}
],
- "description": "The Laravel Framework.",
- "homepage": "https://laravel.com",
+ "description": "Filesystem abstraction: Many filesystems, one API.",
"keywords": [
- "framework",
- "laravel"
- ],
- "time": "2021-01-21T14:10:48+00:00"
- },
- {
- "name": "laravel/passport",
- "version": "v9.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/laravel/passport.git",
- "reference": "724acaea99204728a1baf7b9b730bf97debbf94c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/laravel/passport/zipball/724acaea99204728a1baf7b9b730bf97debbf94c",
- "reference": "724acaea99204728a1baf7b9b730bf97debbf94c",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "firebase/php-jwt": "^5.0",
- "guzzlehttp/guzzle": "^6.0|^7.0",
- "illuminate/auth": "^6.0|^7.0",
- "illuminate/console": "^6.0|^7.0",
- "illuminate/container": "^6.0|^7.0",
- "illuminate/contracts": "^6.0|^7.0",
- "illuminate/cookie": "^6.0|^7.0",
- "illuminate/database": "^6.0|^7.0",
- "illuminate/encryption": "^6.0|^7.0",
- "illuminate/http": "^6.0|^7.0",
- "illuminate/support": "^6.0|^7.0",
- "laminas/laminas-diactoros": "^2.2",
- "league/oauth2-server": "^8.1",
- "nyholm/psr7": "^1.0",
- "php": "^7.2",
- "phpseclib/phpseclib": "^2.0",
- "symfony/psr-http-message-bridge": "^2.0"
- },
- "require-dev": {
- "mockery/mockery": "^1.0",
- "orchestra/testbench": "^4.4|^5.0",
- "phpunit/phpunit": "^8.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "9.x-dev"
- },
- "laravel": {
- "providers": [
- "Laravel\\Passport\\PassportServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Laravel\\Passport\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "Laravel Passport provides OAuth2 server support to Laravel.",
- "keywords": [
- "laravel",
- "oauth",
- "passport"
- ],
- "time": "2020-06-30T20:21:17+00:00"
- },
- {
- "name": "laravel/tinker",
- "version": "v2.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/laravel/tinker.git",
- "reference": "3c9ef136ca59366bc1b50b7f2500a946d5149c62"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/laravel/tinker/zipball/3c9ef136ca59366bc1b50b7f2500a946d5149c62",
- "reference": "3c9ef136ca59366bc1b50b7f2500a946d5149c62",
- "shasum": ""
- },
- "require": {
- "illuminate/console": "^6.0|^7.0|^8.0",
- "illuminate/contracts": "^6.0|^7.0|^8.0",
- "illuminate/support": "^6.0|^7.0|^8.0",
- "php": "^7.2",
- "psy/psysh": "^0.10.3",
- "symfony/var-dumper": "^4.3|^5.0"
- },
- "require-dev": {
- "mockery/mockery": "^1.3.1",
- "phpunit/phpunit": "^8.4|^9.0"
- },
- "suggest": {
- "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0)."
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- },
- "laravel": {
- "providers": [
- "Laravel\\Tinker\\TinkerServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Laravel\\Tinker\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "Powerful REPL for the Laravel framework.",
- "keywords": [
- "REPL",
- "Tinker",
- "laravel",
- "psysh"
- ],
- "time": "2020-07-07T15:10:00+00:00"
- },
- {
- "name": "laravel/ui",
- "version": "v2.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/laravel/ui.git",
- "reference": "15368c5328efb7ce94f35ca750acde9b496ab1b1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/laravel/ui/zipball/15368c5328efb7ce94f35ca750acde9b496ab1b1",
- "reference": "15368c5328efb7ce94f35ca750acde9b496ab1b1",
- "shasum": ""
- },
- "require": {
- "illuminate/console": "^7.0",
- "illuminate/filesystem": "^7.0",
- "illuminate/support": "^7.0",
- "php": "^7.2.5"
- },
- "require-dev": {
- "mockery/mockery": "^1.0",
- "phpunit/phpunit": "^8.0"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Laravel\\Ui\\UiServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Laravel\\Ui\\": "src/",
- "Illuminate\\Foundation\\Auth\\": "auth-backend/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "Laravel UI utilities and presets.",
- "keywords": [
- "laravel",
- "ui"
- ],
- "time": "2020-04-29T15:06:45+00:00"
- },
- {
- "name": "lcobucci/jwt",
- "version": "3.3.2",
- "source": {
- "type": "git",
- "url": "https://github.com/lcobucci/jwt.git",
- "reference": "56f10808089e38623345e28af2f2d5e4eb579455"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/lcobucci/jwt/zipball/56f10808089e38623345e28af2f2d5e4eb579455",
- "reference": "56f10808089e38623345e28af2f2d5e4eb579455",
- "shasum": ""
- },
- "require": {
- "ext-mbstring": "*",
- "ext-openssl": "*",
- "php": "^5.6 || ^7.0"
- },
- "require-dev": {
- "mikey179/vfsstream": "~1.5",
- "phpmd/phpmd": "~2.2",
- "phpunit/php-invoker": "~1.1",
- "phpunit/phpunit": "^5.7 || ^7.3",
- "squizlabs/php_codesniffer": "~2.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Lcobucci\\JWT\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Luís Otávio Cobucci Oblonczyk",
- "email": "lcobucci@gmail.com",
- "role": "Developer"
- }
- ],
- "description": "A simple library to work with JSON Web Token and JSON Web Signature",
- "keywords": [
- "JWS",
- "jwt"
- ],
- "funding": [
- {
- "url": "https://github.com/lcobucci",
- "type": "github"
- },
- {
- "url": "https://www.patreon.com/lcobucci",
- "type": "patreon"
- }
- ],
- "time": "2020-05-22T08:21:12+00:00"
- },
- {
- "name": "league/commonmark",
- "version": "1.5.7",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/commonmark.git",
- "reference": "11df9b36fd4f1d2b727a73bf14931d81373b9a54"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/11df9b36fd4f1d2b727a73bf14931d81373b9a54",
- "reference": "11df9b36fd4f1d2b727a73bf14931d81373b9a54",
- "shasum": ""
- },
- "require": {
- "ext-mbstring": "*",
- "php": "^7.1 || ^8.0"
- },
- "conflict": {
- "scrutinizer/ocular": "1.7.*"
- },
- "require-dev": {
- "cebe/markdown": "~1.0",
- "commonmark/commonmark.js": "0.29.2",
- "erusev/parsedown": "~1.0",
- "ext-json": "*",
- "github/gfm": "0.29.0",
- "michelf/php-markdown": "~1.4",
- "mikehaertl/php-shellcommand": "^1.4",
- "phpstan/phpstan": "^0.12",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.2",
- "scrutinizer/ocular": "^1.5",
- "symfony/finder": "^4.2"
- },
- "bin": [
- "bin/commonmark"
- ],
- "type": "library",
- "autoload": {
- "psr-4": {
- "League\\CommonMark\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Colin O'Dell",
- "email": "colinodell@gmail.com",
- "homepage": "https://www.colinodell.com",
- "role": "Lead Developer"
- }
- ],
- "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and Github-Flavored Markdown (GFM)",
- "homepage": "https://commonmark.thephpleague.com",
- "keywords": [
- "commonmark",
- "flavored",
- "gfm",
- "github",
- "github-flavored",
- "markdown",
- "md",
- "parser"
- ],
- "funding": [
- {
- "url": "https://enjoy.gitstore.app/repositories/thephpleague/commonmark",
- "type": "custom"
- },
- {
- "url": "https://www.colinodell.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://www.paypal.me/colinpodell/10.00",
- "type": "custom"
- },
- {
- "url": "https://github.com/colinodell",
- "type": "github"
- },
- {
- "url": "https://www.patreon.com/colinodell",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/league/commonmark",
- "type": "tidelift"
- }
- ],
- "time": "2020-10-31T13:49:32+00:00"
- },
- {
- "name": "league/event",
- "version": "2.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/event.git",
- "reference": "d2cc124cf9a3fab2bb4ff963307f60361ce4d119"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/event/zipball/d2cc124cf9a3fab2bb4ff963307f60361ce4d119",
- "reference": "d2cc124cf9a3fab2bb4ff963307f60361ce4d119",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0"
- },
- "require-dev": {
- "henrikbjorn/phpspec-code-coverage": "~1.0.1",
- "phpspec/phpspec": "^2.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.2-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "League\\Event\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Frank de Jonge",
- "email": "info@frenky.net"
- }
- ],
- "description": "Event package",
- "keywords": [
- "emitter",
- "event",
- "listener"
- ],
- "time": "2018-11-26T11:52:41+00:00"
- },
- {
- "name": "league/flysystem",
- "version": "1.1.4",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/flysystem.git",
- "reference": "f3ad69181b8afed2c9edf7be5a2918144ff4ea32"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f3ad69181b8afed2c9edf7be5a2918144ff4ea32",
- "reference": "f3ad69181b8afed2c9edf7be5a2918144ff4ea32",
- "shasum": ""
- },
- "require": {
- "ext-fileinfo": "*",
- "league/mime-type-detection": "^1.3",
- "php": "^7.2.5 || ^8.0"
- },
- "conflict": {
- "league/flysystem-sftp": "<1.0.6"
- },
- "require-dev": {
- "phpspec/prophecy": "^1.11.1",
- "phpunit/phpunit": "^8.5.8"
- },
- "suggest": {
- "ext-ftp": "Allows you to use FTP server storage",
- "ext-openssl": "Allows you to use FTPS server storage",
- "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
- "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
- "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
- "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
- "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
- "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
- "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
- "league/flysystem-webdav": "Allows you to use WebDAV storage",
- "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter",
- "spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
- "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "League\\Flysystem\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Frank de Jonge",
- "email": "info@frenky.net"
- }
- ],
- "description": "Filesystem abstraction: Many filesystems, one API.",
- "keywords": [
- "Cloud Files",
- "WebDAV",
- "abstraction",
- "aws",
- "cloud",
- "copy.com",
- "dropbox",
- "file systems",
- "files",
- "filesystem",
- "filesystems",
- "ftp",
- "rackspace",
- "remote",
- "s3",
- "sftp",
- "storage"
- ],
- "funding": [
- {
- "url": "https://offset.earth/frankdejonge",
- "type": "other"
- }
- ],
- "time": "2021-06-23T21:56:05+00:00"
- },
- {
- "name": "league/mime-type-detection",
- "version": "1.7.0",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/mime-type-detection.git",
- "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3",
- "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3",
- "shasum": ""
- },
- "require": {
- "ext-fileinfo": "*",
- "php": "^7.2 || ^8.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^2.18",
- "phpstan/phpstan": "^0.12.68",
- "phpunit/phpunit": "^8.5.8 || ^9.3"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "League\\MimeTypeDetection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Frank de Jonge",
- "email": "info@frankdejonge.nl"
- }
- ],
- "description": "Mime-type detection for Flysystem",
- "funding": [
- {
- "url": "https://github.com/frankdejonge",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
- "type": "tidelift"
- }
- ],
- "time": "2021-01-18T20:58:21+00:00"
- },
- {
- "name": "league/oauth2-server",
- "version": "8.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/oauth2-server.git",
- "reference": "09f22e8121fa1832962dba18213b80d4267ef8a3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/09f22e8121fa1832962dba18213b80d4267ef8a3",
- "reference": "09f22e8121fa1832962dba18213b80d4267ef8a3",
- "shasum": ""
- },
- "require": {
- "defuse/php-encryption": "^2.2.1",
- "ext-json": "*",
- "ext-openssl": "*",
- "lcobucci/jwt": "^3.3.1",
- "league/event": "^2.2",
- "php": ">=7.2.0",
- "psr/http-message": "^1.0.1"
- },
- "replace": {
- "league/oauth2server": "*",
- "lncd/oauth2": "*"
- },
- "require-dev": {
- "laminas/laminas-diactoros": "^2.3.0",
- "phpstan/phpstan": "^0.11.19",
- "phpstan/phpstan-phpunit": "^0.11.2",
- "phpunit/phpunit": "^8.5.4 || ^9.1.3",
- "roave/security-advisories": "dev-master"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "League\\OAuth2\\Server\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Alex Bilbie",
- "email": "hello@alexbilbie.com",
- "homepage": "http://www.alexbilbie.com",
- "role": "Developer"
- },
- {
- "name": "Andy Millington",
- "email": "andrew@noexceptions.io",
- "homepage": "https://www.noexceptions.io",
- "role": "Developer"
- }
- ],
- "description": "A lightweight and powerful OAuth 2.0 authorization and resource server library with support for all the core specification grants. This library will allow you to secure your API with OAuth and allow your applications users to approve apps that want to access their data from your API.",
- "homepage": "https://oauth2.thephpleague.com/",
- "keywords": [
- "Authentication",
- "api",
- "auth",
- "authorisation",
- "authorization",
- "oauth",
- "oauth 2",
- "oauth 2.0",
- "oauth2",
- "protect",
- "resource",
- "secure",
- "server"
- ],
- "funding": [
- {
- "url": "https://github.com/sephster",
- "type": "github"
- }
- ],
- "time": "2020-07-01T11:33:50+00:00"
- },
- {
- "name": "maatwebsite/excel",
- "version": "3.1.19",
- "source": {
- "type": "git",
- "url": "https://github.com/Maatwebsite/Laravel-Excel.git",
- "reference": "96527a9ebc2e79e9a5fa7eaef7e23c9e9bcc587c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Maatwebsite/Laravel-Excel/zipball/96527a9ebc2e79e9a5fa7eaef7e23c9e9bcc587c",
- "reference": "96527a9ebc2e79e9a5fa7eaef7e23c9e9bcc587c",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "illuminate/support": "5.5.*|5.6.*|5.7.*|5.8.*|^6.0|^7.0",
- "php": "^7.0",
- "phpoffice/phpspreadsheet": "^1.10"
- },
- "require-dev": {
- "mockery/mockery": "^1.1",
- "orchestra/database": "^4.0",
- "orchestra/testbench": "^4.0",
- "phpunit/phpunit": "^8.0",
- "predis/predis": "^1.1"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Maatwebsite\\Excel\\ExcelServiceProvider"
- ],
- "aliases": {
- "Excel": "Maatwebsite\\Excel\\Facades\\Excel"
- }
- }
- },
- "autoload": {
- "psr-4": {
- "Maatwebsite\\Excel\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Patrick Brouwers",
- "email": "patrick@maatwebsite.nl"
- }
- ],
- "description": "Supercharged Excel exports and imports in Laravel",
- "keywords": [
- "PHPExcel",
- "batch",
- "csv",
- "excel",
- "export",
- "import",
- "laravel",
- "php",
- "phpspreadsheet"
- ],
- "funding": [
- {
- "url": "https://laravel-excel.com/commercial-support",
- "type": "custom"
- },
- {
- "url": "https://github.com/patrickbrouwers",
- "type": "github"
- }
- ],
- "time": "2020-02-28T15:47:45+00:00"
- },
- {
- "name": "maennchen/zipstream-php",
- "version": "2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/maennchen/ZipStream-PHP.git",
- "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/c4c5803cc1f93df3d2448478ef79394a5981cc58",
- "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58",
- "shasum": ""
- },
- "require": {
- "myclabs/php-enum": "^1.5",
- "php": ">= 7.1",
- "psr/http-message": "^1.0",
- "symfony/polyfill-mbstring": "^1.0"
- },
- "require-dev": {
- "ext-zip": "*",
- "guzzlehttp/guzzle": ">= 6.3",
- "mikey179/vfsstream": "^1.6",
- "phpunit/phpunit": ">= 7.5"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "ZipStream\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Paul Duncan",
- "email": "pabs@pablotron.org"
- },
- {
- "name": "Jonatan Männchen",
- "email": "jonatan@maennchen.ch"
- },
- {
- "name": "Jesse Donat",
- "email": "donatj@gmail.com"
- },
- {
- "name": "András Kolesár",
- "email": "kolesar@kolesar.hu"
- }
- ],
- "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.",
- "keywords": [
- "stream",
- "zip"
- ],
- "funding": [
- {
- "url": "https://opencollective.com/zipstream",
- "type": "open_collective"
- }
- ],
- "time": "2020-05-30T13:11:16+00:00"
- },
- {
- "name": "markbaker/complex",
- "version": "1.4.8",
- "source": {
- "type": "git",
- "url": "https://github.com/MarkBaker/PHPComplex.git",
- "reference": "8eaa40cceec7bf0518187530b2e63871be661b72"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/8eaa40cceec7bf0518187530b2e63871be661b72",
- "reference": "8eaa40cceec7bf0518187530b2e63871be661b72",
- "shasum": ""
- },
- "require": {
- "php": "^5.6.0|^7.0.0"
- },
- "require-dev": {
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0",
- "phpcompatibility/php-compatibility": "^9.0",
- "phpdocumentor/phpdocumentor": "2.*",
- "phploc/phploc": "2.*",
- "phpmd/phpmd": "2.*",
- "phpunit/phpunit": "^4.8.35|^5.4.0",
- "sebastian/phpcpd": "2.*",
- "squizlabs/php_codesniffer": "^3.4.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Complex\\": "classes/src/"
- },
- "files": [
- "classes/src/functions/abs.php",
- "classes/src/functions/acos.php",
- "classes/src/functions/acosh.php",
- "classes/src/functions/acot.php",
- "classes/src/functions/acoth.php",
- "classes/src/functions/acsc.php",
- "classes/src/functions/acsch.php",
- "classes/src/functions/argument.php",
- "classes/src/functions/asec.php",
- "classes/src/functions/asech.php",
- "classes/src/functions/asin.php",
- "classes/src/functions/asinh.php",
- "classes/src/functions/atan.php",
- "classes/src/functions/atanh.php",
- "classes/src/functions/conjugate.php",
- "classes/src/functions/cos.php",
- "classes/src/functions/cosh.php",
- "classes/src/functions/cot.php",
- "classes/src/functions/coth.php",
- "classes/src/functions/csc.php",
- "classes/src/functions/csch.php",
- "classes/src/functions/exp.php",
- "classes/src/functions/inverse.php",
- "classes/src/functions/ln.php",
- "classes/src/functions/log2.php",
- "classes/src/functions/log10.php",
- "classes/src/functions/negative.php",
- "classes/src/functions/pow.php",
- "classes/src/functions/rho.php",
- "classes/src/functions/sec.php",
- "classes/src/functions/sech.php",
- "classes/src/functions/sin.php",
- "classes/src/functions/sinh.php",
- "classes/src/functions/sqrt.php",
- "classes/src/functions/tan.php",
- "classes/src/functions/tanh.php",
- "classes/src/functions/theta.php",
- "classes/src/operations/add.php",
- "classes/src/operations/subtract.php",
- "classes/src/operations/multiply.php",
- "classes/src/operations/divideby.php",
- "classes/src/operations/divideinto.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mark Baker",
- "email": "mark@lange.demon.co.uk"
- }
- ],
- "description": "PHP Class for working with complex numbers",
- "homepage": "https://github.com/MarkBaker/PHPComplex",
- "keywords": [
- "complex",
- "mathematics"
- ],
- "time": "2020-03-11T20:15:49+00:00"
- },
- {
- "name": "markbaker/matrix",
- "version": "1.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/MarkBaker/PHPMatrix.git",
- "reference": "5348c5a67e3b75cd209d70103f916a93b1f1ed21"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/5348c5a67e3b75cd209d70103f916a93b1f1ed21",
- "reference": "5348c5a67e3b75cd209d70103f916a93b1f1ed21",
- "shasum": ""
- },
- "require": {
- "php": "^5.6.0|^7.0.0"
- },
- "require-dev": {
- "dealerdirect/phpcodesniffer-composer-installer": "dev-master",
- "phpcompatibility/php-compatibility": "dev-master",
- "phploc/phploc": "^4",
- "phpmd/phpmd": "dev-master",
- "phpunit/phpunit": "^5.7",
- "sebastian/phpcpd": "^3.0",
- "squizlabs/php_codesniffer": "^3.0@dev"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Matrix\\": "classes/src/"
- },
- "files": [
- "classes/src/functions/adjoint.php",
- "classes/src/functions/antidiagonal.php",
- "classes/src/functions/cofactors.php",
- "classes/src/functions/determinant.php",
- "classes/src/functions/diagonal.php",
- "classes/src/functions/identity.php",
- "classes/src/functions/inverse.php",
- "classes/src/functions/minors.php",
- "classes/src/functions/trace.php",
- "classes/src/functions/transpose.php",
- "classes/src/operations/add.php",
- "classes/src/operations/directsum.php",
- "classes/src/operations/subtract.php",
- "classes/src/operations/multiply.php",
- "classes/src/operations/divideby.php",
- "classes/src/operations/divideinto.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mark Baker",
- "email": "mark@lange.demon.co.uk"
- }
- ],
- "description": "PHP Class for working with matrices",
- "homepage": "https://github.com/MarkBaker/PHPMatrix",
- "keywords": [
- "mathematics",
- "matrix",
- "vector"
- ],
- "time": "2019-10-06T11:29:25+00:00"
- },
- {
- "name": "mavinoo/laravel-batch",
- "version": "v2.1.9",
- "source": {
- "type": "git",
- "url": "https://github.com/mavinoo/laravelBatch.git",
- "reference": "05f9ac177cc696245506127e0cdcc858daa9fe65"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/mavinoo/laravelBatch/zipball/05f9ac177cc696245506127e0cdcc858daa9fe65",
- "reference": "05f9ac177cc696245506127e0cdcc858daa9fe65",
- "shasum": ""
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Mavinoo\\Batch\\BatchServiceProvider"
- ],
- "aliases": {
- "Batch": "Mavinoo\\Batch\\BatchFacade"
- }
- }
- },
- "autoload": {
- "psr-4": {
- "Mavinoo\\Batch\\": "src/"
- },
- "files": [
- "src/Common/Helpers.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
+ "Cloud Files",
+ "WebDAV",
+ "abstraction",
+ "aws",
+ "cloud",
+ "copy.com",
+ "dropbox",
+ "file systems",
+ "files",
+ "filesystem",
+ "filesystems",
+ "ftp",
+ "rackspace",
+ "remote",
+ "s3",
+ "sftp",
+ "storage"
],
- "authors": [
+ "support": {
+ "issues": "https://github.com/thephpleague/flysystem/issues",
+ "source": "https://github.com/thephpleague/flysystem/tree/1.1.4"
+ },
+ "funding": [
{
- "name": "Mohammad Ghanbari",
- "email": "mavin.developer@gmail.com"
+ "url": "https://offset.earth/frankdejonge",
+ "type": "other"
}
],
- "description": "Insert and update batch (bulk) in laravel",
- "time": "2020-05-20T09:50:27+00:00"
+ "time": "2021-06-23T21:56:05+00:00"
},
{
- "name": "moneyphp/money",
- "version": "v3.3.1",
+ "name": "league/mime-type-detection",
+ "version": "1.7.0",
"source": {
"type": "git",
- "url": "https://github.com/moneyphp/money.git",
- "reference": "122664c2621a95180a13c1ac81fea1d2ef20781e"
+ "url": "https://github.com/thephpleague/mime-type-detection.git",
+ "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/moneyphp/money/zipball/122664c2621a95180a13c1ac81fea1d2ef20781e",
- "reference": "122664c2621a95180a13c1ac81fea1d2ef20781e",
+ "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3",
+ "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3",
"shasum": ""
},
"require": {
- "ext-json": "*",
- "php": ">=5.6"
+ "ext-fileinfo": "*",
+ "php": "^7.2 || ^8.0"
},
"require-dev": {
- "cache/taggable-cache": "^0.4.0",
- "doctrine/instantiator": "^1.0.5",
- "ext-bcmath": "*",
- "ext-gmp": "*",
- "ext-intl": "*",
- "florianv/exchanger": "^1.0",
- "florianv/swap": "^3.0",
- "friends-of-phpspec/phpspec-code-coverage": "^3.1.1 || ^4.3",
- "moneyphp/iso-currencies": "^3.2.1",
- "php-http/message": "^1.4",
- "php-http/mock-client": "^1.0.0",
- "phpspec/phpspec": "^3.4.3",
- "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.18 || ^8.5",
- "psr/cache": "^1.0",
- "symfony/phpunit-bridge": "^4"
- },
- "suggest": {
- "ext-bcmath": "Calculate without integer limits",
- "ext-gmp": "Calculate without integer limits",
- "ext-intl": "Format Money objects with intl",
- "florianv/exchanger": "Exchange rates library for PHP",
- "florianv/swap": "Exchange rates library for PHP",
- "psr/cache-implementation": "Used for Currency caching"
+ "friendsofphp/php-cs-fixer": "^2.18",
+ "phpstan/phpstan": "^0.12.68",
+ "phpunit/phpunit": "^8.5.8 || ^9.3"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.x-dev"
- }
- },
"autoload": {
"psr-4": {
- "Money\\": "src/"
+ "League\\MimeTypeDetection\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2628,40 +1490,39 @@
],
"authors": [
{
- "name": "Mathias Verraes",
- "email": "mathias@verraes.net",
- "homepage": "http://verraes.net"
- },
+ "name": "Frank de Jonge",
+ "email": "info@frankdejonge.nl"
+ }
+ ],
+ "description": "Mime-type detection for Flysystem",
+ "support": {
+ "issues": "https://github.com/thephpleague/mime-type-detection/issues",
+ "source": "https://github.com/thephpleague/mime-type-detection/tree/1.7.0"
+ },
+ "funding": [
{
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com"
+ "url": "https://github.com/frankdejonge",
+ "type": "github"
},
{
- "name": "Frederik Bosch",
- "email": "f.bosch@genkgo.nl"
+ "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
+ "type": "tidelift"
}
],
- "description": "PHP implementation of Fowler's Money pattern",
- "homepage": "http://moneyphp.org",
- "keywords": [
- "Value Object",
- "money",
- "vo"
- ],
- "time": "2020-03-18T17:49:59+00:00"
+ "time": "2021-01-18T20:58:21+00:00"
},
{
"name": "monolog/monolog",
- "version": "2.2.0",
+ "version": "2.3.2",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084"
+ "reference": "71312564759a7db5b789296369c1a264efc43aad"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1cb1cde8e8dd0f70cc0fe51354a59acad9302084",
- "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/71312564759a7db5b789296369c1a264efc43aad",
+ "reference": "71312564759a7db5b789296369c1a264efc43aad",
"shasum": ""
},
"require": {
@@ -2680,7 +1541,7 @@
"php-amqplib/php-amqplib": "~2.4",
"php-console/php-console": "^3.1.3",
"phpspec/prophecy": "^1.6.1",
- "phpstan/phpstan": "^0.12.59",
+ "phpstan/phpstan": "^0.12.91",
"phpunit/phpunit": "^8.5",
"predis/predis": "^1.1",
"rollbar/rollbar": "^1.3",
@@ -2730,6 +1591,10 @@
"logging",
"psr-3"
],
+ "support": {
+ "issues": "https://github.com/Seldaek/monolog/issues",
+ "source": "https://github.com/Seldaek/monolog/tree/2.3.2"
+ },
"funding": [
{
"url": "https://github.com/Seldaek",
@@ -2740,72 +1605,27 @@
"type": "tidelift"
}
],
- "time": "2020-12-14T13:15:25+00:00"
- },
- {
- "name": "myclabs/php-enum",
- "version": "1.7.6",
- "source": {
- "type": "git",
- "url": "https://github.com/myclabs/php-enum.git",
- "reference": "5f36467c7a87e20fbdc51e524fd8f9d1de80187c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/myclabs/php-enum/zipball/5f36467c7a87e20fbdc51e524fd8f9d1de80187c",
- "reference": "5f36467c7a87e20fbdc51e524fd8f9d1de80187c",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "php": ">=7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^7",
- "squizlabs/php_codesniffer": "1.*",
- "vimeo/psalm": "^3.8"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "MyCLabs\\Enum\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP Enum contributors",
- "homepage": "https://github.com/myclabs/php-enum/graphs/contributors"
- }
- ],
- "description": "PHP Enum implementation",
- "homepage": "http://github.com/myclabs/php-enum",
- "keywords": [
- "enum"
- ],
- "time": "2020-02-14T08:15:52+00:00"
+ "time": "2021-07-23T07:42:52+00:00"
},
{
"name": "nesbot/carbon",
- "version": "2.44.0",
+ "version": "2.51.1",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
- "reference": "e6ef33cb1f67a4bed831ed6d0f7e156739a5d8cd"
+ "reference": "8619c299d1e0d4b344e1f98ca07a1ce2cfbf1922"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e6ef33cb1f67a4bed831ed6d0f7e156739a5d8cd",
- "reference": "e6ef33cb1f67a4bed831ed6d0f7e156739a5d8cd",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/8619c299d1e0d4b344e1f98ca07a1ce2cfbf1922",
+ "reference": "8619c299d1e0d4b344e1f98ca07a1ce2cfbf1922",
"shasum": ""
},
"require": {
"ext-json": "*",
"php": "^7.1.8 || ^8.0",
"symfony/polyfill-mbstring": "^1.0",
+ "symfony/polyfill-php80": "^1.16",
"symfony/translation": "^3.4 || ^4.0 || ^5.0"
},
"require-dev": {
@@ -2824,8 +1644,8 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.x-dev",
- "dev-3.x": "3.x-dev"
+ "dev-3.x": "3.x-dev",
+ "dev-master": "2.x-dev"
},
"laravel": {
"providers": [
@@ -2851,20 +1671,24 @@
{
"name": "Brian Nesbitt",
"email": "brian@nesbot.com",
- "homepage": "http://nesbot.com"
+ "homepage": "https://markido.com"
},
{
"name": "kylekatarnls",
- "homepage": "http://github.com/kylekatarnls"
+ "homepage": "https://github.com/kylekatarnls"
}
],
"description": "An API extension for DateTime that supports 281 different languages.",
- "homepage": "http://carbon.nesbot.com",
+ "homepage": "https://carbon.nesbot.com",
"keywords": [
"date",
"datetime",
"time"
],
+ "support": {
+ "issues": "https://github.com/briannesbitt/Carbon/issues",
+ "source": "https://github.com/briannesbitt/Carbon"
+ },
"funding": [
{
"url": "https://opencollective.com/Carbon",
@@ -2875,421 +1699,245 @@
"type": "tidelift"
}
],
- "time": "2021-01-26T20:46:41+00:00"
- },
- {
- "name": "nikic/php-parser",
- "version": "v4.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "c346bbfafe2ff60680258b631afb730d186ed864"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c346bbfafe2ff60680258b631afb730d186ed864",
- "reference": "c346bbfafe2ff60680258b631afb730d186ed864",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": ">=7.0"
- },
- "require-dev": {
- "ircmaxell/php-yacc": "0.0.5",
- "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0"
- },
- "bin": [
- "bin/php-parse"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "PhpParser\\": "lib/PhpParser"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Nikita Popov"
- }
- ],
- "description": "A PHP parser written in PHP",
- "keywords": [
- "parser",
- "php"
- ],
- "time": "2020-07-02T17:12:47+00:00"
- },
- {
- "name": "nyholm/psr7",
- "version": "1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Nyholm/psr7.git",
- "reference": "c17f4f73985f62054a331cbc4ffdf9868c4ef256"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Nyholm/psr7/zipball/c17f4f73985f62054a331cbc4ffdf9868c4ef256",
- "reference": "c17f4f73985f62054a331cbc4ffdf9868c4ef256",
- "shasum": ""
- },
- "require": {
- "php": "^7.1",
- "php-http/message-factory": "^1.0",
- "psr/http-factory": "^1.0",
- "psr/http-message": "^1.0"
- },
- "provide": {
- "psr/http-factory-implementation": "1.0",
- "psr/http-message-implementation": "1.0"
- },
- "require-dev": {
- "http-interop/http-factory-tests": "dev-master",
- "php-http/psr7-integration-tests": "^1.0",
- "phpunit/phpunit": "^7.5",
- "symfony/error-handler": "^4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Nyholm\\Psr7\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com"
- },
- {
- "name": "Martijn van der Ven",
- "email": "martijn@vanderven.se"
- }
- ],
- "description": "A fast PHP7 implementation of PSR-7",
- "homepage": "http://tnyholm.se",
- "keywords": [
- "psr-17",
- "psr-7"
- ],
- "funding": [
- {
- "url": "https://github.com/Zegnat",
- "type": "github"
- },
- {
- "url": "https://github.com/nyholm",
- "type": "github"
- }
- ],
- "time": "2020-05-23T11:29:07+00:00"
+ "time": "2021-07-28T13:16:28+00:00"
},
{
- "name": "opis/closure",
- "version": "3.6.1",
+ "name": "nette/schema",
+ "version": "v1.2.1",
"source": {
"type": "git",
- "url": "https://github.com/opis/closure.git",
- "reference": "943b5d70cc5ae7483f6aff6ff43d7e34592ca0f5"
+ "url": "https://github.com/nette/schema.git",
+ "reference": "f5ed39fc96358f922cedfd1e516f0dadf5d2be0d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/opis/closure/zipball/943b5d70cc5ae7483f6aff6ff43d7e34592ca0f5",
- "reference": "943b5d70cc5ae7483f6aff6ff43d7e34592ca0f5",
+ "url": "https://api.github.com/repos/nette/schema/zipball/f5ed39fc96358f922cedfd1e516f0dadf5d2be0d",
+ "reference": "f5ed39fc96358f922cedfd1e516f0dadf5d2be0d",
"shasum": ""
},
"require": {
- "php": "^5.4 || ^7.0 || ^8.0"
+ "nette/utils": "^3.1.4 || ^4.0",
+ "php": ">=7.1 <8.1"
},
"require-dev": {
- "jeremeamia/superclosure": "^2.0",
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0"
+ "nette/tester": "^2.3 || ^2.4",
+ "phpstan/phpstan-nette": "^0.12",
+ "tracy/tracy": "^2.7"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.6.x-dev"
+ "dev-master": "1.2-dev"
}
},
"autoload": {
- "psr-4": {
- "Opis\\Closure\\": "src/"
- },
- "files": [
- "functions.php"
+ "classmap": [
+ "src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
],
"authors": [
{
- "name": "Marius Sarca",
- "email": "marius.sarca@gmail.com"
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
},
{
- "name": "Sorin Sarca",
- "email": "sarca_sorin@hotmail.com"
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
}
],
- "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.",
- "homepage": "https://opis.io/closure",
+ "description": "📐 Nette Schema: validating data structures against a given Schema.",
+ "homepage": "https://nette.org",
"keywords": [
- "anonymous functions",
- "closure",
- "function",
- "serializable",
- "serialization",
- "serialize"
+ "config",
+ "nette"
],
- "time": "2020-11-07T02:01:34+00:00"
+ "support": {
+ "issues": "https://github.com/nette/schema/issues",
+ "source": "https://github.com/nette/schema/tree/v1.2.1"
+ },
+ "time": "2021-03-04T17:51:11+00:00"
},
{
- "name": "paragonie/random_compat",
- "version": "v9.99.100",
+ "name": "nette/utils",
+ "version": "v3.2.2",
"source": {
"type": "git",
- "url": "https://github.com/paragonie/random_compat.git",
- "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
+ "url": "https://github.com/nette/utils.git",
+ "reference": "967cfc4f9a1acd5f1058d76715a424c53343c20c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
- "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
+ "url": "https://api.github.com/repos/nette/utils/zipball/967cfc4f9a1acd5f1058d76715a424c53343c20c",
+ "reference": "967cfc4f9a1acd5f1058d76715a424c53343c20c",
"shasum": ""
},
"require": {
- "php": ">= 7"
+ "php": ">=7.2 <8.1"
+ },
+ "conflict": {
+ "nette/di": "<3.0.6"
},
"require-dev": {
- "phpunit/phpunit": "4.*|5.*",
- "vimeo/psalm": "^1"
+ "nette/tester": "~2.0",
+ "phpstan/phpstan": "^0.12",
+ "tracy/tracy": "^2.3"
},
"suggest": {
- "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
- },
- "type": "library",
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Paragon Initiative Enterprises",
- "email": "security@paragonie.com",
- "homepage": "https://paragonie.com"
- }
- ],
- "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
- "keywords": [
- "csprng",
- "polyfill",
- "pseudorandom",
- "random"
- ],
- "time": "2020-10-15T08:29:30+00:00"
- },
- {
- "name": "phenx/php-font-lib",
- "version": "0.5.2",
- "source": {
- "type": "git",
- "url": "https://github.com/PhenX/php-font-lib.git",
- "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8",
- "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8",
- "shasum": ""
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7"
+ "ext-gd": "to use Image",
+ "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()",
+ "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()",
+ "ext-json": "to use Nette\\Utils\\Json",
+ "ext-mbstring": "to use Strings::lower() etc...",
+ "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()",
+ "ext-xml": "to use Strings::length() etc. when mbstring is not available"
},
"type": "library",
- "autoload": {
- "psr-4": {
- "FontLib\\": "src/FontLib"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "LGPL-3.0"
- ],
- "authors": [
- {
- "name": "Fabien Ménager",
- "email": "fabien.menager@gmail.com"
- }
- ],
- "description": "A library to read, parse, export and make subsets of different types of font files.",
- "homepage": "https://github.com/PhenX/php-font-lib",
- "time": "2020-03-08T15:31:32+00:00"
- },
- {
- "name": "phenx/php-svg-lib",
- "version": "v0.3.3",
- "source": {
- "type": "git",
- "url": "https://github.com/PhenX/php-svg-lib.git",
- "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
- "reference": "5fa61b65e612ce1ae15f69b3d223cb14ecc60e32",
- "shasum": ""
- },
- "require": {
- "sabberworm/php-css-parser": "^8.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^5.5|^6.5"
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2-dev"
+ }
},
- "type": "library",
"autoload": {
- "psr-4": {
- "Svg\\": "src/Svg"
- }
+ "classmap": [
+ "src/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "LGPL-3.0"
+ "BSD-3-Clause",
+ "GPL-2.0-only",
+ "GPL-3.0-only"
],
"authors": [
{
- "name": "Fabien Ménager",
- "email": "fabien.menager@gmail.com"
+ "name": "David Grudl",
+ "homepage": "https://davidgrudl.com"
+ },
+ {
+ "name": "Nette Community",
+ "homepage": "https://nette.org/contributors"
}
],
- "description": "A library to read, parse and export to PDF SVG files.",
- "homepage": "https://github.com/PhenX/php-svg-lib",
- "time": "2019-09-11T20:02:13+00:00"
+ "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.",
+ "homepage": "https://nette.org",
+ "keywords": [
+ "array",
+ "core",
+ "datetime",
+ "images",
+ "json",
+ "nette",
+ "paginator",
+ "password",
+ "slugify",
+ "string",
+ "unicode",
+ "utf-8",
+ "utility",
+ "validation"
+ ],
+ "support": {
+ "issues": "https://github.com/nette/utils/issues",
+ "source": "https://github.com/nette/utils/tree/v3.2.2"
+ },
+ "time": "2021-03-03T22:53:25+00:00"
},
{
- "name": "php-http/message-factory",
- "version": "v1.0.2",
+ "name": "nikic/php-parser",
+ "version": "v4.12.0",
"source": {
"type": "git",
- "url": "https://github.com/php-http/message-factory.git",
- "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1"
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "6608f01670c3cc5079e18c1dab1104e002579143"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1",
- "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143",
+ "reference": "6608f01670c3cc5079e18c1dab1104e002579143",
"shasum": ""
},
"require": {
- "php": ">=5.4",
- "psr/http-message": "^1.0"
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
},
+ "require-dev": {
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-master": "4.9-dev"
}
},
"autoload": {
"psr-4": {
- "Http\\Message\\": "src/"
+ "PhpParser\\": "lib/PhpParser"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com"
+ "name": "Nikita Popov"
}
],
- "description": "Factory interfaces for PSR-7 HTTP Message",
- "homepage": "http://php-http.org",
+ "description": "A PHP parser written in PHP",
"keywords": [
- "factory",
- "http",
- "message",
- "stream",
- "uri"
+ "parser",
+ "php"
],
- "time": "2015-12-19T14:08:53+00:00"
+ "support": {
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0"
+ },
+ "time": "2021-07-21T10:44:31+00:00"
},
{
- "name": "phpoffice/phpspreadsheet",
- "version": "1.13.0",
+ "name": "opis/closure",
+ "version": "3.6.2",
"source": {
"type": "git",
- "url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
- "reference": "21bfb5b3243b8ceb9eda499a4d699fc42c11a9d1"
+ "url": "https://github.com/opis/closure.git",
+ "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/21bfb5b3243b8ceb9eda499a4d699fc42c11a9d1",
- "reference": "21bfb5b3243b8ceb9eda499a4d699fc42c11a9d1",
+ "url": "https://api.github.com/repos/opis/closure/zipball/06e2ebd25f2869e54a306dda991f7db58066f7f6",
+ "reference": "06e2ebd25f2869e54a306dda991f7db58066f7f6",
"shasum": ""
},
"require": {
- "ext-ctype": "*",
- "ext-dom": "*",
- "ext-fileinfo": "*",
- "ext-gd": "*",
- "ext-iconv": "*",
- "ext-libxml": "*",
- "ext-mbstring": "*",
- "ext-simplexml": "*",
- "ext-xml": "*",
- "ext-xmlreader": "*",
- "ext-xmlwriter": "*",
- "ext-zip": "*",
- "ext-zlib": "*",
- "maennchen/zipstream-php": "^2.0",
- "markbaker/complex": "^1.4",
- "markbaker/matrix": "^1.2",
- "php": "^7.2",
- "psr/simple-cache": "^1.0"
+ "php": "^5.4 || ^7.0 || ^8.0"
},
"require-dev": {
- "dompdf/dompdf": "^0.8.5",
- "friendsofphp/php-cs-fixer": "^2.16",
- "jpgraph/jpgraph": "^4.0",
- "mpdf/mpdf": "^8.0",
- "phpcompatibility/php-compatibility": "^9.3",
- "phpunit/phpunit": "^8.5",
- "squizlabs/php_codesniffer": "^3.5",
- "tecnickcom/tcpdf": "^6.3"
- },
- "suggest": {
- "dompdf/dompdf": "Option for rendering PDF with PDF Writer",
- "jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers",
- "mpdf/mpdf": "Option for rendering PDF with PDF Writer",
- "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer"
+ "jeremeamia/superclosure": "^2.0",
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.6.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
- "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet"
- }
+ "Opis\\Closure\\": "src/"
+ },
+ "files": [
+ "functions.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -3297,37 +1945,29 @@
],
"authors": [
{
- "name": "Maarten Balliauw",
- "homepage": "https://blog.maartenballiauw.be"
- },
- {
- "name": "Mark Baker",
- "homepage": "https://markbakeruk.net"
- },
- {
- "name": "Franck Lefevre",
- "homepage": "https://rootslabs.net"
- },
- {
- "name": "Erik Tilt"
+ "name": "Marius Sarca",
+ "email": "marius.sarca@gmail.com"
},
{
- "name": "Adrien Crivelli"
+ "name": "Sorin Sarca",
+ "email": "sarca_sorin@hotmail.com"
}
],
- "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine",
- "homepage": "https://github.com/PHPOffice/PhpSpreadsheet",
+ "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.",
+ "homepage": "https://opis.io/closure",
"keywords": [
- "OpenXML",
- "excel",
- "gnumeric",
- "ods",
- "php",
- "spreadsheet",
- "xls",
- "xlsx"
+ "anonymous functions",
+ "closure",
+ "function",
+ "serializable",
+ "serialization",
+ "serialize"
],
- "time": "2020-05-31T13:49:28+00:00"
+ "support": {
+ "issues": "https://github.com/opis/closure/issues",
+ "source": "https://github.com/opis/closure/tree/3.6.2"
+ },
+ "time": "2021-04-09T13:42:10+00:00"
},
{
"name": "phpoption/phpoption",
@@ -3382,6 +2022,10 @@
"php",
"type"
],
+ "support": {
+ "issues": "https://github.com/schmittjoh/php-option/issues",
+ "source": "https://github.com/schmittjoh/php-option/tree/1.7.5"
+ },
"funding": [
{
"url": "https://github.com/GrahamCampbell",
@@ -3394,111 +2038,6 @@
],
"time": "2020-07-20T17:29:33+00:00"
},
- {
- "name": "phpseclib/phpseclib",
- "version": "2.0.31",
- "source": {
- "type": "git",
- "url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "233a920cb38636a43b18d428f9a8db1f0a1a08f4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/233a920cb38636a43b18d428f9a8db1f0a1a08f4",
- "reference": "233a920cb38636a43b18d428f9a8db1f0a1a08f4",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3"
- },
- "require-dev": {
- "phing/phing": "~2.7",
- "phpunit/phpunit": "^4.8.35|^5.7|^6.0|^9.4",
- "squizlabs/php_codesniffer": "~2.0"
- },
- "suggest": {
- "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.",
- "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.",
- "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
- "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
- },
- "type": "library",
- "autoload": {
- "files": [
- "phpseclib/bootstrap.php"
- ],
- "psr-4": {
- "phpseclib\\": "phpseclib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jim Wigginton",
- "email": "terrafrost@php.net",
- "role": "Lead Developer"
- },
- {
- "name": "Patrick Monnerat",
- "email": "pm@datasphere.ch",
- "role": "Developer"
- },
- {
- "name": "Andreas Fischer",
- "email": "bantu@phpbb.com",
- "role": "Developer"
- },
- {
- "name": "Hans-Jürgen Petrich",
- "email": "petrich@tronic-media.com",
- "role": "Developer"
- },
- {
- "name": "Graham Campbell",
- "email": "graham@alt-three.com",
- "role": "Developer"
- }
- ],
- "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.",
- "homepage": "http://phpseclib.sourceforge.net",
- "keywords": [
- "BigInteger",
- "aes",
- "asn.1",
- "asn1",
- "blowfish",
- "crypto",
- "cryptography",
- "encryption",
- "rsa",
- "security",
- "sftp",
- "signature",
- "signing",
- "ssh",
- "twofish",
- "x.509",
- "x509"
- ],
- "funding": [
- {
- "url": "https://github.com/terrafrost",
- "type": "github"
- },
- {
- "url": "https://www.patreon.com/phpseclib",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib",
- "type": "tidelift"
- }
- ],
- "time": "2021-04-06T13:56:45+00:00"
- },
{
"name": "psr/container",
"version": "1.1.1",
@@ -3541,6 +2080,10 @@
"container-interop",
"psr"
],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/1.1.1"
+ },
"time": "2021-03-05T17:36:06+00:00"
},
{
@@ -3587,8 +2130,64 @@
"psr",
"psr-14"
],
+ "support": {
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ },
"time": "2019-01-08T18:20:26+00:00"
},
+ {
+ "name": "psr/http-client",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-client.git",
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Client\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP clients",
+ "homepage": "https://github.com/php-fig/http-client",
+ "keywords": [
+ "http",
+ "http-client",
+ "psr",
+ "psr-18"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-client/tree/master"
+ },
+ "time": "2020-06-29T06:28:15+00:00"
+ },
{
"name": "psr/http-factory",
"version": "1.0.1",
@@ -3639,6 +2238,9 @@
"request",
"response"
],
+ "support": {
+ "source": "https://github.com/php-fig/http-factory/tree/master"
+ },
"time": "2019-04-30T12:38:16+00:00"
},
{
@@ -3689,20 +2291,23 @@
"request",
"response"
],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/master"
+ },
"time": "2016-08-06T14:39:51+00:00"
},
{
"name": "psr/log",
- "version": "1.1.3",
+ "version": "1.1.4",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
"shasum": ""
},
"require": {
@@ -3726,7 +2331,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
@@ -3736,7 +2341,10 @@
"psr",
"psr-3"
],
- "time": "2020-03-23T09:12:05+00:00"
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/1.1.4"
+ },
+ "time": "2021-05-03T11:20:27+00:00"
},
{
"name": "psr/simple-cache",
@@ -3784,24 +2392,26 @@
"psr-16",
"simple-cache"
],
+ "support": {
+ "source": "https://github.com/php-fig/simple-cache/tree/master"
+ },
"time": "2017-10-23T01:57:42+00:00"
},
{
"name": "psy/psysh",
- "version": "v0.10.4",
+ "version": "v0.10.8",
"source": {
"type": "git",
"url": "https://github.com/bobthecow/psysh.git",
- "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560"
+ "reference": "e4573f47750dd6c92dca5aee543fa77513cbd8d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bobthecow/psysh/zipball/a8aec1b2981ab66882a01cce36a49b6317dc3560",
- "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560",
+ "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e4573f47750dd6c92dca5aee543fa77513cbd8d3",
+ "reference": "e4573f47750dd6c92dca5aee543fa77513cbd8d3",
"shasum": ""
},
"require": {
- "dnoegel/php-xdg-base-dir": "0.1.*",
"ext-json": "*",
"ext-tokenizer": "*",
"nikic/php-parser": "~4.0|~3.0|~2.0|~1.3",
@@ -3826,7 +2436,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "0.10.x-dev"
+ "dev-main": "0.10.x-dev"
}
},
"autoload": {
@@ -3856,7 +2466,11 @@
"interactive",
"shell"
],
- "time": "2020-05-03T19:32:03+00:00"
+ "support": {
+ "issues": "https://github.com/bobthecow/psysh/issues",
+ "source": "https://github.com/bobthecow/psysh/tree/v0.10.8"
+ },
+ "time": "2021-04-10T16:23:39+00:00"
},
{
"name": "ralouphie/getallheaders",
@@ -3896,24 +2510,29 @@
}
],
"description": "A polyfill for getallheaders.",
+ "support": {
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+ },
"time": "2019-03-08T08:55:37+00:00"
},
{
"name": "ramsey/collection",
- "version": "1.1.3",
+ "version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/ramsey/collection.git",
- "reference": "28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1"
+ "reference": "eaca1dc1054ddd10cbd83c1461907bee6fb528fa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/collection/zipball/28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1",
- "reference": "28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1",
+ "url": "https://api.github.com/repos/ramsey/collection/zipball/eaca1dc1054ddd10cbd83c1461907bee6fb528fa",
+ "reference": "eaca1dc1054ddd10cbd83c1461907bee6fb528fa",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8"
+ "php": "^7.3 || ^8",
+ "symfony/polyfill-php81": "^1.23"
},
"require-dev": {
"captainhook/captainhook": "^5.3",
@@ -3923,6 +2542,7 @@
"hamcrest/hamcrest-php": "^2",
"jangregor/phpstan-prophecy": "^0.8",
"mockery/mockery": "^1.3",
+ "phpspec/prophecy-phpunit": "^2.0",
"phpstan/extension-installer": "^1",
"phpstan/phpstan": "^0.12.32",
"phpstan/phpstan-mockery": "^0.12.5",
@@ -3950,7 +2570,7 @@
"homepage": "https://benramsey.com"
}
],
- "description": "A PHP 7.2+ library for representing and manipulating collections.",
+ "description": "A PHP library for representing and manipulating collections.",
"keywords": [
"array",
"collection",
@@ -3959,6 +2579,10 @@
"queue",
"set"
],
+ "support": {
+ "issues": "https://github.com/ramsey/collection/issues",
+ "source": "https://github.com/ramsey/collection/tree/1.2.1"
+ },
"funding": [
{
"url": "https://github.com/ramsey",
@@ -3969,20 +2593,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-21T17:40:04+00:00"
+ "time": "2021-08-06T03:41:06+00:00"
},
{
"name": "ramsey/uuid",
- "version": "4.1.1",
+ "version": "4.2.1",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "cd4032040a750077205918c86049aa0f43d22947"
+ "reference": "fe665a03df4f056aa65af552a96e1976df8c8dae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/cd4032040a750077205918c86049aa0f43d22947",
- "reference": "cd4032040a750077205918c86049aa0f43d22947",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/fe665a03df4f056aa65af552a96e1976df8c8dae",
+ "reference": "fe665a03df4f056aa65af552a96e1976df8c8dae",
"shasum": ""
},
"require": {
@@ -3996,26 +2620,26 @@
"rhumsaa/uuid": "self.version"
},
"require-dev": {
- "codeception/aspect-mock": "^3",
- "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7.0",
+ "captainhook/captainhook": "^5.10",
+ "captainhook/plugin-composer": "^5.3",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"doctrine/annotations": "^1.8",
- "goaop/framework": "^2",
+ "ergebnis/composer-normalize": "^2.15",
"mockery/mockery": "^1.3",
"moontoast/math": "^1.1",
"paragonie/random-lib": "^2",
+ "php-mock/php-mock": "^2.2",
"php-mock/php-mock-mockery": "^1.3",
- "php-mock/php-mock-phpunit": "^2.5",
"php-parallel-lint/php-parallel-lint": "^1.1",
- "phpbench/phpbench": "^0.17.1",
+ "phpbench/phpbench": "^1.0",
"phpstan/extension-installer": "^1.0",
"phpstan/phpstan": "^0.12",
"phpstan/phpstan-mockery": "^0.12",
"phpstan/phpstan-phpunit": "^0.12",
- "phpunit/phpunit": "^8.5",
- "psy/psysh": "^0.10.0",
- "slevomat/coding-standard": "^6.0",
+ "phpunit/phpunit": "^8.5 || ^9",
+ "slevomat/coding-standard": "^7.0",
"squizlabs/php_codesniffer": "^3.5",
- "vimeo/psalm": "3.9.4"
+ "vimeo/psalm": "^4.9"
},
"suggest": {
"ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.",
@@ -4028,7 +2652,10 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.x-dev"
+ "dev-main": "4.x-dev"
+ },
+ "captainhook": {
+ "force-install": true
}
},
"autoload": {
@@ -4044,121 +2671,104 @@
"MIT"
],
"description": "A PHP library for generating and working with universally unique identifiers (UUIDs).",
- "homepage": "https://github.com/ramsey/uuid",
"keywords": [
"guid",
"identifier",
"uuid"
],
+ "support": {
+ "issues": "https://github.com/ramsey/uuid/issues",
+ "source": "https://github.com/ramsey/uuid/tree/4.2.1"
+ },
"funding": [
{
"url": "https://github.com/ramsey",
"type": "github"
- }
- ],
- "time": "2020-08-18T17:17:46+00:00"
- },
- {
- "name": "renatomarinho/laravel-page-speed",
- "version": "1.8.13",
- "source": {
- "type": "git",
- "url": "https://github.com/renatomarinho/laravel-page-speed.git",
- "reference": "c8a634c94f9b2f2a386377904eba703ad60e2552"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/renatomarinho/laravel-page-speed/zipball/c8a634c94f9b2f2a386377904eba703ad60e2552",
- "reference": "c8a634c94f9b2f2a386377904eba703ad60e2552",
- "shasum": ""
- },
- "require": {
- "illuminate/support": "5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || ^6.0 || ^7.0",
- "php": "^5.6 || ^7.0"
- },
- "require-dev": {
- "mockery/mockery": ">=0.9.4",
- "orchestra/testbench": "^3.2",
- "phpunit/phpunit": "^5.7 || ^6.0 || ^7.0 || ^8.0",
- "squizlabs/php_codesniffer": "^2.3"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "RenatoMarinho\\LaravelPageSpeed\\ServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "RenatoMarinho\\LaravelPageSpeed\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
+ },
{
- "name": "Renato Marinho",
- "email": "renato.marinho@s2move.com"
+ "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid",
+ "type": "tidelift"
}
],
- "description": "Laravel Page Speed",
- "keywords": [
- "html",
- "laravel",
- "minify",
- "optimize",
- "page speed"
- ],
- "time": "2020-05-02T13:12:06+00:00"
+ "time": "2021-08-11T01:06:55+00:00"
},
{
- "name": "sabberworm/php-css-parser",
- "version": "8.3.1",
+ "name": "spatie/laravel-permission",
+ "version": "4.2.0",
"source": {
"type": "git",
- "url": "https://github.com/sabberworm/PHP-CSS-Parser.git",
- "reference": "d217848e1396ef962fb1997cf3e2421acba7f796"
+ "url": "https://github.com/spatie/laravel-permission.git",
+ "reference": "a6e4122b65094baba7f98df153af0768ef910c85"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796",
- "reference": "d217848e1396ef962fb1997cf3e2421acba7f796",
+ "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/a6e4122b65094baba7f98df153af0768ef910c85",
+ "reference": "a6e4122b65094baba7f98df153af0768ef910c85",
"shasum": ""
},
"require": {
- "php": ">=5.3.2"
+ "illuminate/auth": "^6.0|^7.0|^8.0",
+ "illuminate/container": "^6.0|^7.0|^8.0",
+ "illuminate/contracts": "^6.0|^7.0|^8.0",
+ "illuminate/database": "^6.0|^7.0|^8.0",
+ "php": "^7.2.5|^8.0"
},
"require-dev": {
- "codacy/coverage": "^1.4",
- "phpunit/phpunit": "~4.8"
+ "orchestra/testbench": "^4.0|^5.0|^6.0",
+ "phpunit/phpunit": "^8.0|^9.0",
+ "predis/predis": "^1.1"
},
"type": "library",
- "autoload": {
- "psr-0": {
- "Sabberworm\\CSS": "lib/"
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Spatie\\Permission\\PermissionServiceProvider"
+ ]
}
},
+ "autoload": {
+ "psr-4": {
+ "Spatie\\Permission\\": "src"
+ },
+ "files": [
+ "src/helpers.php"
+ ]
+ },
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
- "name": "Raphael Schweikert"
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
}
],
- "description": "Parser for CSS Files written in PHP",
- "homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser",
+ "description": "Permission handling for Laravel 6.0 and up",
+ "homepage": "https://github.com/spatie/laravel-permission",
"keywords": [
- "css",
- "parser",
- "stylesheet"
+ "acl",
+ "laravel",
+ "permission",
+ "permissions",
+ "rbac",
+ "roles",
+ "security",
+ "spatie"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/laravel-permission/issues",
+ "source": "https://github.com/spatie/laravel-permission/tree/4.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
],
- "time": "2020-06-01T09:10:00+00:00"
+ "time": "2021-06-04T23:47:08+00:00"
},
{
"name": "stevebauman/purify",
@@ -4225,79 +2835,22 @@
},
"time": "2021-01-07T22:44:04+00:00"
},
- {
- "name": "stripe/stripe-php",
- "version": "v7.43.0",
- "source": {
- "type": "git",
- "url": "https://github.com/stripe/stripe-php.git",
- "reference": "7f516261bc496706a03b9443107532b552efa9d8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/stripe/stripe-php/zipball/7f516261bc496706a03b9443107532b552efa9d8",
- "reference": "7f516261bc496706a03b9443107532b552efa9d8",
- "shasum": ""
- },
- "require": {
- "ext-curl": "*",
- "ext-json": "*",
- "ext-mbstring": "*",
- "php": ">=5.6.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "2.16.1",
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^5.7",
- "squizlabs/php_codesniffer": "^3.3",
- "symfony/process": "~3.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Stripe\\": "lib/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Stripe and contributors",
- "homepage": "https://github.com/stripe/stripe-php/contributors"
- }
- ],
- "description": "Stripe PHP Library",
- "homepage": "https://stripe.com/",
- "keywords": [
- "api",
- "payment processing",
- "stripe"
- ],
- "time": "2020-07-18T00:01:06+00:00"
- },
{
"name": "swiftmailer/swiftmailer",
- "version": "v6.2.5",
+ "version": "v6.2.7",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
- "reference": "698a6a9f54d7eb321274de3ad19863802c879fb7"
+ "reference": "15f7faf8508e04471f666633addacf54c0ab5933"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/698a6a9f54d7eb321274de3ad19863802c879fb7",
- "reference": "698a6a9f54d7eb321274de3ad19863802c879fb7",
+ "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/15f7faf8508e04471f666633addacf54c0ab5933",
+ "reference": "15f7faf8508e04471f666633addacf54c0ab5933",
"shasum": ""
},
"require": {
- "egulias/email-validator": "^2.0",
+ "egulias/email-validator": "^2.0|^3.1",
"php": ">=7.0.0",
"symfony/polyfill-iconv": "^1.0",
"symfony/polyfill-intl-idn": "^1.10",
@@ -4341,6 +2894,10 @@
"mail",
"mailer"
],
+ "support": {
+ "issues": "https://github.com/swiftmailer/swiftmailer/issues",
+ "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.2.7"
+ },
"funding": [
{
"url": "https://github.com/fabpot",
@@ -4351,31 +2908,33 @@
"type": "tidelift"
}
],
- "time": "2021-01-12T09:35:59+00:00"
+ "time": "2021-03-09T12:30:35+00:00"
},
{
"name": "symfony/console",
- "version": "v5.2.6",
+ "version": "v5.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "35f039df40a3b335ebf310f244cb242b3a83ac8d"
+ "reference": "51b71afd6d2dc8f5063199357b9880cea8d8bfe2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/35f039df40a3b335ebf310f244cb242b3a83ac8d",
- "reference": "35f039df40a3b335ebf310f244cb242b3a83ac8d",
+ "url": "https://api.github.com/repos/symfony/console/zipball/51b71afd6d2dc8f5063199357b9880cea8d8bfe2",
+ "reference": "51b71afd6d2dc8f5063199357b9880cea8d8bfe2",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php73": "^1.8",
- "symfony/polyfill-php80": "^1.15",
+ "symfony/polyfill-php80": "^1.16",
"symfony/service-contracts": "^1.1|^2",
"symfony/string": "^5.1"
},
"conflict": {
+ "psr/log": ">=3",
"symfony/dependency-injection": "<4.4",
"symfony/dotenv": "<5.1",
"symfony/event-dispatcher": "<4.4",
@@ -4383,10 +2942,10 @@
"symfony/process": "<4.4"
},
"provide": {
- "psr/log-implementation": "1.0"
+ "psr/log-implementation": "1.0|2.0"
},
"require-dev": {
- "psr/log": "~1.0",
+ "psr/log": "^1|^2",
"symfony/config": "^4.4|^5.0",
"symfony/dependency-injection": "^4.4|^5.0",
"symfony/event-dispatcher": "^4.4|^5.0",
@@ -4431,6 +2990,9 @@
"console",
"terminal"
],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v5.3.6"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -4445,24 +3007,25 @@
"type": "tidelift"
}
],
- "time": "2021-03-28T09:42:18+00:00"
+ "time": "2021-07-27T19:10:22+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v5.2.2",
+ "version": "v5.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "f65f217b3314504a1ec99c2d6ef69016bb13490f"
+ "reference": "7fb120adc7f600a59027775b224c13a33530dd90"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/f65f217b3314504a1ec99c2d6ef69016bb13490f",
- "reference": "f65f217b3314504a1ec99c2d6ef69016bb13490f",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/7fb120adc7f600a59027775b224c13a33530dd90",
+ "reference": "7fb120adc7f600a59027775b224c13a33530dd90",
"shasum": ""
},
"require": {
- "php": ">=7.2.5"
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.16"
},
"type": "library",
"autoload": {
@@ -4493,6 +3056,9 @@
],
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/css-selector/tree/v5.3.4"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -4507,20 +3073,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-27T10:01:46+00:00"
+ "time": "2021-07-21T12:38:00+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v2.2.0",
+ "version": "v2.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665"
+ "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665",
- "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627",
+ "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627",
"shasum": ""
},
"require": {
@@ -4529,7 +3095,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.2-dev"
+ "dev-main": "2.4-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -4557,6 +3123,9 @@
],
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -4571,26 +3140,25 @@
"type": "tidelift"
}
],
- "time": "2020-09-07T11:33:47+00:00"
+ "time": "2021-03-23T23:28:01+00:00"
},
{
"name": "symfony/error-handler",
- "version": "v5.2.2",
+ "version": "v5.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "4fd4a377f7b7ec7c3f3b40346a1411e0a83f9d40"
+ "reference": "281f6c4660bcf5844bb0346fe3a4664722fe4c73"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/4fd4a377f7b7ec7c3f3b40346a1411e0a83f9d40",
- "reference": "4fd4a377f7b7ec7c3f3b40346a1411e0a83f9d40",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/281f6c4660bcf5844bb0346fe3a4664722fe4c73",
+ "reference": "281f6c4660bcf5844bb0346fe3a4664722fe4c73",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "psr/log": "^1.0",
- "symfony/polyfill-php80": "^1.15",
+ "psr/log": "^1|^2|^3",
"symfony/var-dumper": "^4.4|^5.0"
},
"require-dev": {
@@ -4623,6 +3191,9 @@
],
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/error-handler/tree/v5.3.4"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -4637,27 +3208,27 @@
"type": "tidelift"
}
],
- "time": "2021-01-27T10:15:41+00:00"
+ "time": "2021-07-23T15:55:36+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v5.2.2",
+ "version": "v5.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "4f9760f8074978ad82e2ce854dff79a71fe45367"
+ "reference": "f2fd2208157553874560f3645d4594303058c4bd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4f9760f8074978ad82e2ce854dff79a71fe45367",
- "reference": "4f9760f8074978ad82e2ce854dff79a71fe45367",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f2fd2208157553874560f3645d4594303058c4bd",
+ "reference": "f2fd2208157553874560f3645d4594303058c4bd",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1",
"symfony/event-dispatcher-contracts": "^2",
- "symfony/polyfill-php80": "^1.15"
+ "symfony/polyfill-php80": "^1.16"
},
"conflict": {
"symfony/dependency-injection": "<4.4"
@@ -4667,7 +3238,7 @@
"symfony/event-dispatcher-implementation": "2.0"
},
"require-dev": {
- "psr/log": "~1.0",
+ "psr/log": "^1|^2|^3",
"symfony/config": "^4.4|^5.0",
"symfony/dependency-injection": "^4.4|^5.0",
"symfony/error-handler": "^4.4|^5.0",
@@ -4705,6 +3276,9 @@
],
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.4"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -4719,20 +3293,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-27T10:36:42+00:00"
+ "time": "2021-07-23T15:55:36+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v2.2.0",
+ "version": "v2.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2"
+ "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ba7d54483095a198fa51781bc608d17e84dffa2",
- "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/69fee1ad2332a7cbab3aca13591953da9cdb7a11",
+ "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11",
"shasum": ""
},
"require": {
@@ -4745,7 +3319,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.2-dev"
+ "dev-main": "2.4-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -4781,6 +3355,9 @@
"interoperability",
"standards"
],
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.4.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -4795,24 +3372,25 @@
"type": "tidelift"
}
],
- "time": "2020-09-07T11:33:47+00:00"
+ "time": "2021-03-23T23:28:01+00:00"
},
{
"name": "symfony/finder",
- "version": "v5.2.2",
+ "version": "v5.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "196f45723b5e618bf0e23b97e96d11652696ea9e"
+ "reference": "17f50e06018baec41551a71a15731287dbaab186"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/196f45723b5e618bf0e23b97e96d11652696ea9e",
- "reference": "196f45723b5e618bf0e23b97e96d11652696ea9e",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/17f50e06018baec41551a71a15731287dbaab186",
+ "reference": "17f50e06018baec41551a71a15731287dbaab186",
"shasum": ""
},
"require": {
- "php": ">=7.2.5"
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.16"
},
"type": "library",
"autoload": {
@@ -4839,6 +3417,9 @@
],
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/v5.3.4"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -4853,20 +3434,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-27T10:01:46+00:00"
+ "time": "2021-07-23T15:54:19+00:00"
},
{
"name": "symfony/http-client-contracts",
- "version": "v2.3.1",
+ "version": "v2.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client-contracts.git",
- "reference": "41db680a15018f9c1d4b23516059633ce280ca33"
+ "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41db680a15018f9c1d4b23516059633ce280ca33",
- "reference": "41db680a15018f9c1d4b23516059633ce280ca33",
+ "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/7e82f6084d7cae521a75ef2cb5c9457bbda785f4",
+ "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4",
"shasum": ""
},
"require": {
@@ -4877,9 +3458,8 @@
},
"type": "library",
"extra": {
- "branch-version": "2.3",
"branch-alias": {
- "dev-main": "2.3-dev"
+ "dev-main": "2.4-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -4915,6 +3495,9 @@
"interoperability",
"standards"
],
+ "support": {
+ "source": "https://github.com/symfony/http-client-contracts/tree/v2.4.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -4929,27 +3512,27 @@
"type": "tidelift"
}
],
- "time": "2020-10-14T17:08:19+00:00"
+ "time": "2021-04-11T23:07:08+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v5.2.4",
+ "version": "v5.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "54499baea7f7418bce7b5ec92770fd0799e8e9bf"
+ "reference": "a8388f7b7054a7401997008ce9cd8c6b0ab7ac75"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/54499baea7f7418bce7b5ec92770fd0799e8e9bf",
- "reference": "54499baea7f7418bce7b5ec92770fd0799e8e9bf",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a8388f7b7054a7401997008ce9cd8c6b0ab7ac75",
+ "reference": "a8388f7b7054a7401997008ce9cd8c6b0ab7ac75",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1",
"symfony/polyfill-mbstring": "~1.1",
- "symfony/polyfill-php80": "^1.15"
+ "symfony/polyfill-php80": "^1.16"
},
"require-dev": {
"predis/predis": "~1.0",
@@ -4985,6 +3568,9 @@
],
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-foundation/tree/v5.3.6"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -4999,40 +3585,40 @@
"type": "tidelift"
}
],
- "time": "2021-02-25T17:16:57+00:00"
+ "time": "2021-07-27T17:08:17+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v5.2.2",
+ "version": "v5.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "831b51e9370ece0febd0950dd819c63f996721c7"
+ "reference": "60030f209018356b3b553b9dbd84ad2071c1b7e0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/831b51e9370ece0febd0950dd819c63f996721c7",
- "reference": "831b51e9370ece0febd0950dd819c63f996721c7",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/60030f209018356b3b553b9dbd84ad2071c1b7e0",
+ "reference": "60030f209018356b3b553b9dbd84ad2071c1b7e0",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "psr/log": "~1.0",
+ "psr/log": "^1|^2",
"symfony/deprecation-contracts": "^2.1",
"symfony/error-handler": "^4.4|^5.0",
"symfony/event-dispatcher": "^5.0",
"symfony/http-client-contracts": "^1.1|^2",
- "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/http-foundation": "^5.3",
"symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-php73": "^1.9",
- "symfony/polyfill-php80": "^1.15"
+ "symfony/polyfill-php80": "^1.16"
},
"conflict": {
"symfony/browser-kit": "<4.4",
"symfony/cache": "<5.0",
"symfony/config": "<5.0",
"symfony/console": "<4.4",
- "symfony/dependency-injection": "<5.1.8",
+ "symfony/dependency-injection": "<5.3",
"symfony/doctrine-bridge": "<5.0",
"symfony/form": "<5.0",
"symfony/http-client": "<5.0",
@@ -5044,15 +3630,15 @@
"twig/twig": "<2.13"
},
"provide": {
- "psr/log-implementation": "1.0"
+ "psr/log-implementation": "1.0|2.0"
},
"require-dev": {
- "psr/cache": "~1.0",
+ "psr/cache": "^1.0|^2.0|^3.0",
"symfony/browser-kit": "^4.4|^5.0",
"symfony/config": "^5.0",
"symfony/console": "^4.4|^5.0",
"symfony/css-selector": "^4.4|^5.0",
- "symfony/dependency-injection": "^5.1.8",
+ "symfony/dependency-injection": "^5.3",
"symfony/dom-crawler": "^4.4|^5.0",
"symfony/expression-language": "^4.4|^5.0",
"symfony/finder": "^4.4|^5.0",
@@ -5094,96 +3680,9 @@
],
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2021-01-27T14:45:46+00:00"
- },
- {
- "name": "symfony/intl",
- "version": "v5.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/intl.git",
- "reference": "b21d69ebb33adfcb7e6d8b0a0a8799db7090705b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/intl/zipball/b21d69ebb33adfcb7e6d8b0a0a8799db7090705b",
- "reference": "b21d69ebb33adfcb7e6d8b0a0a8799db7090705b",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "symfony/polyfill-intl-icu": "~1.0",
- "symfony/polyfill-php80": "^1.15"
- },
- "require-dev": {
- "symfony/filesystem": "^4.4|^5.0"
- },
- "suggest": {
- "ext-intl": "to use the component with locales other than \"en\""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Intl\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ],
- "exclude-from-classmap": [
- "/Tests/"
- ]
+ "support": {
+ "source": "https://github.com/symfony/http-kernel/tree/v5.3.6"
},
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
- },
- {
- "name": "Eriksen Costa",
- "email": "eriksen.costa@infranology.com.br"
- },
- {
- "name": "Igor Wiedler",
- "email": "igor@wiedler.ch"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "A PHP replacement layer for the C intl extension that includes additional data from the ICU library.",
- "homepage": "https://symfony.com",
- "keywords": [
- "i18n",
- "icu",
- "internationalization",
- "intl",
- "l10n",
- "localization"
- ],
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -5198,20 +3697,20 @@
"type": "tidelift"
}
],
- "time": "2020-05-30T20:35:19+00:00"
+ "time": "2021-07-29T07:06:27+00:00"
},
{
"name": "symfony/mime",
- "version": "v5.2.1",
+ "version": "v5.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "de97005aef7426ba008c46ba840fc301df577ada"
+ "reference": "633e4e8afe9e529e5599d71238849a4218dd497b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/de97005aef7426ba008c46ba840fc301df577ada",
- "reference": "de97005aef7426ba008c46ba840fc301df577ada",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/633e4e8afe9e529e5599d71238849a4218dd497b",
+ "reference": "633e4e8afe9e529e5599d71238849a4218dd497b",
"shasum": ""
},
"require": {
@@ -5219,13 +3718,16 @@
"symfony/deprecation-contracts": "^2.1",
"symfony/polyfill-intl-idn": "^1.10",
"symfony/polyfill-mbstring": "^1.0",
- "symfony/polyfill-php80": "^1.15"
+ "symfony/polyfill-php80": "^1.16"
},
"conflict": {
+ "egulias/email-validator": "~3.0.0",
+ "phpdocumentor/reflection-docblock": "<3.2.2",
+ "phpdocumentor/type-resolver": "<1.4.0",
"symfony/mailer": "<4.4"
},
"require-dev": {
- "egulias/email-validator": "^2.1.10",
+ "egulias/email-validator": "^2.1.10|^3.1",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
"symfony/dependency-injection": "^4.4|^5.0",
"symfony/property-access": "^4.4|^5.1",
@@ -5255,12 +3757,15 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "A library to manipulate MIME messages",
+ "description": "Allows manipulating MIME messages",
"homepage": "https://symfony.com",
"keywords": [
"mime",
"mime-type"
],
+ "support": {
+ "source": "https://github.com/symfony/mime/tree/v5.3.4"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -5275,20 +3780,20 @@
"type": "tidelift"
}
],
- "time": "2020-12-09T18:54:12+00:00"
+ "time": "2021-07-21T12:40:44+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.22.1",
+ "version": "v1.23.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "c6c942b1ac76c82448322025e084cadc56048b4e"
+ "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e",
- "reference": "c6c942b1ac76c82448322025e084cadc56048b4e",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce",
+ "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce",
"shasum": ""
},
"require": {
@@ -5300,7 +3805,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -5337,6 +3842,9 @@
"polyfill",
"portable"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -5351,20 +3859,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-07T16:49:33+00:00"
+ "time": "2021-02-19T12:13:01+00:00"
},
{
"name": "symfony/polyfill-iconv",
- "version": "v1.22.0",
+ "version": "v1.23.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-iconv.git",
- "reference": "b34bfb8c4c22650ac080d2662ae3502e5f2f4ae6"
+ "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/b34bfb8c4c22650ac080d2662ae3502e5f2f4ae6",
- "reference": "b34bfb8c4c22650ac080d2662ae3502e5f2f4ae6",
+ "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/63b5bb7db83e5673936d6e3b8b3e022ff6474933",
+ "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933",
"shasum": ""
},
"require": {
@@ -5376,7 +3884,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -5414,6 +3922,9 @@
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-iconv/tree/v1.23.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -5428,20 +3939,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-07T16:49:33+00:00"
+ "time": "2021-05-27T09:27:20+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.22.1",
+ "version": "v1.23.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170"
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5601e09b69f26c1828b13b6bb87cb07cddba3170",
- "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535",
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535",
"shasum": ""
},
"require": {
@@ -5453,7 +3964,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -5492,82 +4003,9 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2021-01-22T09:19:47+00:00"
- },
- {
- "name": "symfony/polyfill-intl-icu",
- "version": "v1.18.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-icu.git",
- "reference": "4e45a6e39041a9cc78835b11abc47874ae302a55"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/4e45a6e39041a9cc78835b11abc47874ae302a55",
- "reference": "4e45a6e39041a9cc78835b11abc47874ae302a55",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.3",
- "symfony/intl": "~2.3|~3.0|~4.0|~5.0"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.18-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ]
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1"
},
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's ICU-related data and classes",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "icu",
- "intl",
- "polyfill",
- "portable",
- "shim"
- ],
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -5582,20 +4020,20 @@
"type": "tidelift"
}
],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2021-05-27T12:26:48+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "v1.22.1",
+ "version": "v1.23.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "2d63434d922daf7da8dd863e7907e67ee3031483"
+ "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/2d63434d922daf7da8dd863e7907e67ee3031483",
- "reference": "2d63434d922daf7da8dd863e7907e67ee3031483",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65",
+ "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65",
"shasum": ""
},
"require": {
@@ -5609,7 +4047,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -5652,6 +4090,9 @@
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -5666,20 +4107,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-22T09:19:47+00:00"
+ "time": "2021-05-27T09:27:20+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.22.1",
+ "version": "v1.23.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248"
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248",
- "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
"shasum": ""
},
"require": {
@@ -5691,7 +4132,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -5733,6 +4174,9 @@
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -5747,20 +4191,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-22T09:19:47+00:00"
+ "time": "2021-02-19T12:13:01+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.22.1",
+ "version": "v1.23.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "5232de97ee3b75b0360528dae24e73db49566ab1"
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1",
- "reference": "5232de97ee3b75b0360528dae24e73db49566ab1",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6",
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6",
"shasum": ""
},
"require": {
@@ -5772,7 +4216,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -5810,6 +4254,9 @@
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -5824,20 +4271,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-22T09:19:47+00:00"
+ "time": "2021-05-27T12:26:48+00:00"
},
{
"name": "symfony/polyfill-php72",
- "version": "v1.22.1",
+ "version": "v1.23.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9"
+ "reference": "9a142215a36a3888e30d0a9eeea9766764e96976"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9",
- "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976",
+ "reference": "9a142215a36a3888e30d0a9eeea9766764e96976",
"shasum": ""
},
"require": {
@@ -5846,7 +4293,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -5883,6 +4330,9 @@
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -5897,20 +4347,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-07T16:49:33+00:00"
+ "time": "2021-05-27T09:17:38+00:00"
},
{
"name": "symfony/polyfill-php73",
- "version": "v1.22.1",
+ "version": "v1.23.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2"
+ "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
- "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010",
+ "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010",
"shasum": ""
},
"require": {
@@ -5919,7 +4369,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -5959,6 +4409,9 @@
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -5973,20 +4426,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-07T16:49:33+00:00"
+ "time": "2021-02-19T12:13:01+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.22.1",
+ "version": "v1.23.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91"
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91",
- "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be",
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be",
"shasum": ""
},
"require": {
@@ -5995,7 +4448,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.22-dev"
+ "dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -6039,6 +4492,9 @@
"portable",
"shim"
],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -6053,33 +4509,44 @@
"type": "tidelift"
}
],
- "time": "2021-01-07T16:49:33+00:00"
+ "time": "2021-07-28T13:41:28+00:00"
},
{
- "name": "symfony/process",
- "version": "v5.2.2",
+ "name": "symfony/polyfill-php81",
+ "version": "v1.23.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "313a38f09c77fbcdc1d223e57d368cea76a2fd2f"
+ "url": "https://github.com/symfony/polyfill-php81.git",
+ "reference": "e66119f3de95efc359483f810c4c3e6436279436"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/313a38f09c77fbcdc1d223e57d368cea76a2fd2f",
- "reference": "313a38f09c77fbcdc1d223e57d368cea76a2fd2f",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436",
+ "reference": "e66119f3de95efc359483f810c4c3e6436279436",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-php80": "^1.15"
+ "php": ">=7.1"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
"autoload": {
"psr-4": {
- "Symfony\\Component\\Process\\": ""
+ "Symfony\\Polyfill\\Php81\\": ""
},
- "exclude-from-classmap": [
- "/Tests/"
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -6088,16 +4555,25 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Executes commands in sub-processes",
+ "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
"homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -6112,43 +4588,30 @@
"type": "tidelift"
}
],
- "time": "2021-01-27T10:15:41+00:00"
+ "time": "2021-05-21T13:25:03+00:00"
},
{
- "name": "symfony/psr-http-message-bridge",
- "version": "v2.0.1",
+ "name": "symfony/process",
+ "version": "v5.3.4",
"source": {
"type": "git",
- "url": "https://github.com/symfony/psr-http-message-bridge.git",
- "reference": "e44f249afab496b4e8c0f7461fb8140eaa4b24d2"
+ "url": "https://github.com/symfony/process.git",
+ "reference": "d16634ee55b895bd85ec714dadc58e4428ecf030"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/e44f249afab496b4e8c0f7461fb8140eaa4b24d2",
- "reference": "e44f249afab496b4e8c0f7461fb8140eaa4b24d2",
+ "url": "https://api.github.com/repos/symfony/process/zipball/d16634ee55b895bd85ec714dadc58e4428ecf030",
+ "reference": "d16634ee55b895bd85ec714dadc58e4428ecf030",
"shasum": ""
},
"require": {
- "php": ">=7.1",
- "psr/http-message": "^1.0",
- "symfony/http-foundation": "^4.4 || ^5.0"
- },
- "require-dev": {
- "nyholm/psr7": "^1.1",
- "symfony/phpunit-bridge": "^4.4 || ^5.0"
- },
- "suggest": {
- "nyholm/psr7": "For a super lightweight PSR-7/17 implementation"
- },
- "type": "symfony-bridge",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0-dev"
- }
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.16"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Bridge\\PsrHttpMessage\\": ""
+ "Symfony\\Component\\Process\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -6165,17 +4628,14 @@
},
{
"name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
+ "homepage": "https://symfony.com/contributors"
}
],
- "description": "PSR HTTP message bridge",
- "homepage": "http://symfony.com",
- "keywords": [
- "http",
- "http-message",
- "psr-17",
- "psr-7"
- ],
+ "description": "Executes commands in sub-processes",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/process/tree/v5.3.4"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -6190,43 +4650,43 @@
"type": "tidelift"
}
],
- "time": "2020-06-25T08:21:47+00:00"
+ "time": "2021-07-23T15:54:19+00:00"
},
{
"name": "symfony/routing",
- "version": "v5.2.2",
+ "version": "v5.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "348b5917e56546c6d96adbf21d7f92c9ef563661"
+ "reference": "0a35d2f57d73c46ab6d042ced783b81d09a624c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/348b5917e56546c6d96adbf21d7f92c9ef563661",
- "reference": "348b5917e56546c6d96adbf21d7f92c9ef563661",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/0a35d2f57d73c46ab6d042ced783b81d09a624c4",
+ "reference": "0a35d2f57d73c46ab6d042ced783b81d09a624c4",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1",
- "symfony/polyfill-php80": "^1.15"
+ "symfony/polyfill-php80": "^1.16"
},
"conflict": {
- "symfony/config": "<5.0",
+ "doctrine/annotations": "<1.12",
+ "symfony/config": "<5.3",
"symfony/dependency-injection": "<4.4",
"symfony/yaml": "<4.4"
},
"require-dev": {
- "doctrine/annotations": "^1.10.4",
- "psr/log": "~1.0",
- "symfony/config": "^5.0",
+ "doctrine/annotations": "^1.12",
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.3",
"symfony/dependency-injection": "^4.4|^5.0",
"symfony/expression-language": "^4.4|^5.0",
"symfony/http-foundation": "^4.4|^5.0",
"symfony/yaml": "^4.4|^5.0"
},
"suggest": {
- "doctrine/annotations": "For using the annotation loader",
"symfony/config": "For using the all-in-one router or any loader",
"symfony/expression-language": "For using expression matching",
"symfony/http-foundation": "For using a Symfony Request object",
@@ -6263,6 +4723,9 @@
"uri",
"url"
],
+ "support": {
+ "source": "https://github.com/symfony/routing/tree/v5.3.4"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -6277,25 +4740,25 @@
"type": "tidelift"
}
],
- "time": "2021-01-27T10:15:41+00:00"
+ "time": "2021-07-23T15:55:36+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v2.2.0",
+ "version": "v2.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
+ "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
- "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
+ "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "psr/container": "^1.0"
+ "psr/container": "^1.1"
},
"suggest": {
"symfony/service-implementation": ""
@@ -6303,7 +4766,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.2-dev"
+ "dev-main": "2.4-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -6339,6 +4802,9 @@
"interoperability",
"standards"
],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v2.4.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -6353,20 +4819,20 @@
"type": "tidelift"
}
],
- "time": "2020-09-07T11:33:47+00:00"
+ "time": "2021-04-01T10:43:52+00:00"
},
{
"name": "symfony/string",
- "version": "v5.2.6",
+ "version": "v5.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572"
+ "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572",
- "reference": "ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572",
+ "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1",
+ "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1",
"shasum": ""
},
"require": {
@@ -6419,6 +4885,9 @@
"utf-8",
"utf8"
],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v5.3.3"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -6433,26 +4902,27 @@
"type": "tidelift"
}
],
- "time": "2021-03-17T17:12:15+00:00"
+ "time": "2021-06-27T11:44:38+00:00"
},
{
"name": "symfony/translation",
- "version": "v5.2.2",
+ "version": "v5.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "c021864d4354ee55160ddcfd31dc477a1bc77949"
+ "reference": "d89ad7292932c2699cbe4af98d72c5c6bbc504c1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/c021864d4354ee55160ddcfd31dc477a1bc77949",
- "reference": "c021864d4354ee55160ddcfd31dc477a1bc77949",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/d89ad7292932c2699cbe4af98d72c5c6bbc504c1",
+ "reference": "d89ad7292932c2699cbe4af98d72c5c6bbc504c1",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "^1.15",
+ "symfony/polyfill-php80": "^1.16",
"symfony/translation-contracts": "^2.3"
},
"conflict": {
@@ -6463,16 +4933,17 @@
"symfony/yaml": "<4.4"
},
"provide": {
- "symfony/translation-implementation": "2.0"
+ "symfony/translation-implementation": "2.3"
},
"require-dev": {
- "psr/log": "~1.0",
+ "psr/log": "^1|^2|^3",
"symfony/config": "^4.4|^5.0",
"symfony/console": "^4.4|^5.0",
"symfony/dependency-injection": "^5.0",
"symfony/finder": "^4.4|^5.0",
"symfony/http-kernel": "^5.0",
"symfony/intl": "^4.4|^5.0",
+ "symfony/polyfill-intl-icu": "^1.21",
"symfony/service-contracts": "^1.1.2|^2",
"symfony/yaml": "^4.4|^5.0"
},
@@ -6509,6 +4980,9 @@
],
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/translation/tree/v5.3.4"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -6523,20 +4997,20 @@
"type": "tidelift"
}
],
- "time": "2021-01-27T10:15:41+00:00"
+ "time": "2021-07-25T09:39:16+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v2.3.0",
+ "version": "v2.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105"
+ "reference": "95c812666f3e91db75385749fe219c5e494c7f95"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/e2eaa60b558f26a4b0354e1bbb25636efaaad105",
- "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95",
+ "reference": "95c812666f3e91db75385749fe219c5e494c7f95",
"shasum": ""
},
"require": {
@@ -6548,7 +5022,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.3-dev"
+ "dev-main": "2.4-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -6584,6 +5058,9 @@
"interoperability",
"standards"
],
+ "support": {
+ "source": "https://github.com/symfony/translation-contracts/tree/v2.4.0"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -6598,26 +5075,26 @@
"type": "tidelift"
}
],
- "time": "2020-09-28T13:05:58+00:00"
+ "time": "2021-03-23T23:28:01+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v5.2.6",
+ "version": "v5.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "89412a68ea2e675b4e44f260a5666729f77f668e"
+ "reference": "3dd8ddd1e260e58ecc61bb78da3b6584b3bfcba0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/89412a68ea2e675b4e44f260a5666729f77f668e",
- "reference": "89412a68ea2e675b4e44f260a5666729f77f668e",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3dd8ddd1e260e58ecc61bb78da3b6584b3bfcba0",
+ "reference": "3dd8ddd1e260e58ecc61bb78da3b6584b3bfcba0",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "^1.15"
+ "symfony/polyfill-php80": "^1.16"
},
"conflict": {
"phpunit/phpunit": "<5.4.3",
@@ -6669,6 +5146,9 @@
"debug",
"dump"
],
+ "support": {
+ "source": "https://github.com/symfony/var-dumper/tree/v5.3.6"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -6683,7 +5163,7 @@
"type": "tidelift"
}
],
- "time": "2021-03-28T09:42:18+00:00"
+ "time": "2021-07-27T01:56:02+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
@@ -6732,41 +5212,47 @@
],
"description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.",
"homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
+ "support": {
+ "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues",
+ "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.3"
+ },
"time": "2020-07-13T06:12:54+00:00"
},
{
"name": "vlucas/phpdotenv",
- "version": "v4.2.0",
+ "version": "v5.3.0",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
- "reference": "da64796370fc4eb03cc277088f6fede9fde88482"
+ "reference": "b3eac5c7ac896e52deab4a99068e3f4ab12d9e56"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/da64796370fc4eb03cc277088f6fede9fde88482",
- "reference": "da64796370fc4eb03cc277088f6fede9fde88482",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/b3eac5c7ac896e52deab4a99068e3f4ab12d9e56",
+ "reference": "b3eac5c7ac896e52deab4a99068e3f4ab12d9e56",
"shasum": ""
},
"require": {
- "php": "^5.5.9 || ^7.0 || ^8.0",
- "phpoption/phpoption": "^1.7.3",
- "symfony/polyfill-ctype": "^1.17"
+ "ext-pcre": "*",
+ "graham-campbell/result-type": "^1.0.1",
+ "php": "^7.1.3 || ^8.0",
+ "phpoption/phpoption": "^1.7.4",
+ "symfony/polyfill-ctype": "^1.17",
+ "symfony/polyfill-mbstring": "^1.17",
+ "symfony/polyfill-php80": "^1.17"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.4.1",
"ext-filter": "*",
- "ext-pcre": "*",
- "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20"
+ "phpunit/phpunit": "^7.5.20 || ^8.5.14 || ^9.5.1"
},
"suggest": {
- "ext-filter": "Required to use the boolean validator.",
- "ext-pcre": "Required to use most of the library."
+ "ext-filter": "Required to use the boolean validator."
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.1-dev"
+ "dev-master": "5.3-dev"
}
},
"autoload": {
@@ -6796,6 +5282,10 @@
"env",
"environment"
],
+ "support": {
+ "issues": "https://github.com/vlucas/phpdotenv/issues",
+ "source": "https://github.com/vlucas/phpdotenv/tree/v5.3.0"
+ },
"funding": [
{
"url": "https://github.com/GrahamCampbell",
@@ -6806,7 +5296,7 @@
"type": "tidelift"
}
],
- "time": "2021-01-20T15:11:48+00:00"
+ "time": "2021-01-20T15:23:13+00:00"
},
{
"name": "voku/portable-ascii",
@@ -6854,6 +5344,10 @@
"clean",
"php"
],
+ "support": {
+ "issues": "https://github.com/voku/portable-ascii/issues",
+ "source": "https://github.com/voku/portable-ascii/tree/1.5.6"
+ },
"funding": [
{
"url": "https://www.paypal.me/moelleken",
@@ -6877,56 +5371,42 @@
}
],
"time": "2020-11-12T00:07:28+00:00"
- }
- ],
- "packages-dev": [
+ },
{
- "name": "barryvdh/laravel-debugbar",
- "version": "v3.3.3",
+ "name": "webmozart/assert",
+ "version": "1.10.0",
"source": {
"type": "git",
- "url": "https://github.com/barryvdh/laravel-debugbar.git",
- "reference": "57f2219f6d9efe41ed1bc880d86701c52f261bf5"
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/57f2219f6d9efe41ed1bc880d86701c52f261bf5",
- "reference": "57f2219f6d9efe41ed1bc880d86701c52f261bf5",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
"shasum": ""
},
"require": {
- "illuminate/routing": "^5.5|^6|^7",
- "illuminate/session": "^5.5|^6|^7",
- "illuminate/support": "^5.5|^6|^7",
- "maximebf/debugbar": "^1.15.1",
- "php": ">=7.0",
- "symfony/debug": "^3|^4|^5",
- "symfony/finder": "^3|^4|^5"
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
},
"require-dev": {
- "laravel/framework": "5.5.x"
+ "phpunit/phpunit": "^8.5.13"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.2-dev"
- },
- "laravel": {
- "providers": [
- "Barryvdh\\Debugbar\\ServiceProvider"
- ],
- "aliases": {
- "Debugbar": "Barryvdh\\Debugbar\\Facade"
- }
+ "dev-master": "1.10-dev"
}
},
"autoload": {
"psr-4": {
- "Barryvdh\\Debugbar\\": "src/"
- },
- "files": [
- "src/helpers.php"
- ]
+ "Webmozart\\Assert\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -6934,113 +5414,74 @@
],
"authors": [
{
- "name": "Barry vd. Heuvel",
- "email": "barryvdh@gmail.com"
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
}
],
- "description": "PHP Debugbar integration for Laravel",
+ "description": "Assertions to validate method input/output with nice error messages.",
"keywords": [
- "debug",
- "debugbar",
- "laravel",
- "profiler",
- "webprofiler"
- ],
- "funding": [
- {
- "url": "https://github.com/barryvdh",
- "type": "github"
- }
+ "assert",
+ "check",
+ "validate"
],
- "time": "2020-05-05T10:53:32+00:00"
- },
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.10.0"
+ },
+ "time": "2021-03-09T10:59:23+00:00"
+ }
+ ],
+ "packages-dev": [
{
- "name": "composer/semver",
- "version": "1.5.1",
+ "name": "barryvdh/laravel-debugbar",
+ "version": "v3.6.2",
"source": {
"type": "git",
- "url": "https://github.com/composer/semver.git",
- "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de"
+ "url": "https://github.com/barryvdh/laravel-debugbar.git",
+ "reference": "70b89754913fd89fef16d0170a91dbc2a5cd633a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/c6bea70230ef4dd483e6bbcab6005f682ed3a8de",
- "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de",
+ "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/70b89754913fd89fef16d0170a91dbc2a5cd633a",
+ "reference": "70b89754913fd89fef16d0170a91dbc2a5cd633a",
"shasum": ""
},
"require": {
- "php": "^5.3.2 || ^7.0"
+ "illuminate/routing": "^6|^7|^8",
+ "illuminate/session": "^6|^7|^8",
+ "illuminate/support": "^6|^7|^8",
+ "maximebf/debugbar": "^1.16.3",
+ "php": ">=7.2",
+ "symfony/debug": "^4.3|^5",
+ "symfony/finder": "^4.3|^5"
},
"require-dev": {
- "phpunit/phpunit": "^4.5 || ^5.0.5"
+ "mockery/mockery": "^1.3.3",
+ "orchestra/testbench-dusk": "^4|^5|^6",
+ "phpunit/phpunit": "^8.5|^9.0",
+ "squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Composer\\Semver\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "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"
+ "dev-master": "3.5-dev"
},
- {
- "name": "Rob Bast",
- "email": "rob.bast@gmail.com",
- "homepage": "http://robbast.nl"
+ "laravel": {
+ "providers": [
+ "Barryvdh\\Debugbar\\ServiceProvider"
+ ],
+ "aliases": {
+ "Debugbar": "Barryvdh\\Debugbar\\Facade"
+ }
}
- ],
- "description": "Semver library that offers utilities, version constraint parsing and validation.",
- "keywords": [
- "semantic",
- "semver",
- "validation",
- "versioning"
- ],
- "time": "2020-01-13T12:06:48+00:00"
- },
- {
- "name": "composer/xdebug-handler",
- "version": "1.4.2",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/xdebug-handler.git",
- "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51",
- "reference": "fa2aaf99e2087f013a14f7432c1cd2dd7d8f1f51",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.2 || ^7.0 || ^8.0",
- "psr/log": "^1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8"
},
- "type": "library",
"autoload": {
"psr-4": {
- "Composer\\XdebugHandler\\": "src"
- }
+ "Barryvdh\\Debugbar\\": "src/"
+ },
+ "files": [
+ "src/helpers.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -7048,132 +5489,61 @@
],
"authors": [
{
- "name": "John Stevenson",
- "email": "john-stevenson@blueyonder.co.uk"
+ "name": "Barry vd. Heuvel",
+ "email": "barryvdh@gmail.com"
}
],
- "description": "Restarts a process without Xdebug.",
+ "description": "PHP Debugbar integration for Laravel",
"keywords": [
- "Xdebug",
- "performance"
- ],
- "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"
- }
+ "debug",
+ "debugbar",
+ "laravel",
+ "profiler",
+ "webprofiler"
],
- "time": "2020-06-04T11:16:35+00:00"
- },
- {
- "name": "doctrine/annotations",
- "version": "1.10.3",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/annotations.git",
- "reference": "5db60a4969eba0e0c197a19c077780aadbc43c5d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/annotations/zipball/5db60a4969eba0e0c197a19c077780aadbc43c5d",
- "reference": "5db60a4969eba0e0c197a19c077780aadbc43c5d",
- "shasum": ""
- },
- "require": {
- "doctrine/lexer": "1.*",
- "ext-tokenizer": "*",
- "php": "^7.1 || ^8.0"
- },
- "require-dev": {
- "doctrine/cache": "1.*",
- "phpunit/phpunit": "^7.5"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.9.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
- }
+ "support": {
+ "issues": "https://github.com/barryvdh/laravel-debugbar/issues",
+ "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.6.2"
},
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
+ "funding": [
{
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
+ "url": "https://fruitcake.nl",
+ "type": "custom"
},
{
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
+ "url": "https://github.com/barryvdh",
+ "type": "github"
}
],
- "description": "Docblock Annotations Parser",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "annotations",
- "docblock",
- "parser"
- ],
- "time": "2020-05-25T17:24:27+00:00"
+ "time": "2021-06-14T14:29:26+00:00"
},
{
"name": "doctrine/instantiator",
- "version": "1.3.1",
+ "version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
- "reference": "f350df0268e904597e3bd9c4685c53e0e333feea"
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea",
- "reference": "f350df0268e904597e3bd9c4685c53e0e333feea",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
+ "doctrine/coding-standard": "^8.0",
"ext-pdo": "*",
"ext-phar": "*",
- "phpbench/phpbench": "^0.13",
- "phpstan/phpstan-phpunit": "^0.11",
- "phpstan/phpstan-shim": "^0.11",
- "phpunit/phpunit": "^7.0"
+ "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
@@ -7187,7 +5557,7 @@
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.com/"
+ "homepage": "https://ocramius.github.io/"
}
],
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
@@ -7196,6 +5566,10 @@
"constructor",
"instantiate"
],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
+ },
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
@@ -7210,20 +5584,20 @@
"type": "tidelift"
}
],
- "time": "2020-05-29T17:27:14+00:00"
+ "time": "2020-11-10T18:47:58+00:00"
},
{
"name": "facade/flare-client-php",
- "version": "1.6.1",
+ "version": "1.8.1",
"source": {
"type": "git",
"url": "https://github.com/facade/flare-client-php.git",
- "reference": "f2b0969f2d9594704be74dbeb25b201570a98098"
+ "reference": "47b639dc02bcfdfc4ebb83de703856fa01e35f5f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/facade/flare-client-php/zipball/f2b0969f2d9594704be74dbeb25b201570a98098",
- "reference": "f2b0969f2d9594704be74dbeb25b201570a98098",
+ "url": "https://api.github.com/repos/facade/flare-client-php/zipball/47b639dc02bcfdfc4ebb83de703856fa01e35f5f",
+ "reference": "47b639dc02bcfdfc4ebb83de703856fa01e35f5f",
"shasum": ""
},
"require": {
@@ -7265,38 +5639,40 @@
"flare",
"reporting"
],
+ "support": {
+ "issues": "https://github.com/facade/flare-client-php/issues",
+ "source": "https://github.com/facade/flare-client-php/tree/1.8.1"
+ },
"funding": [
{
"url": "https://github.com/spatie",
"type": "github"
}
],
- "time": "2021-04-08T08:50:01+00:00"
+ "time": "2021-05-31T19:23:29+00:00"
},
{
"name": "facade/ignition",
- "version": "2.4.2",
+ "version": "2.11.2",
"source": {
"type": "git",
"url": "https://github.com/facade/ignition.git",
- "reference": "2179568bdfddfa56c90c845a0be1a0b52adbf52a"
+ "reference": "7c4e7a7da184cd00c7ce6eacc590200bb9672de7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/facade/ignition/zipball/2179568bdfddfa56c90c845a0be1a0b52adbf52a",
- "reference": "2179568bdfddfa56c90c845a0be1a0b52adbf52a",
+ "url": "https://api.github.com/repos/facade/ignition/zipball/7c4e7a7da184cd00c7ce6eacc590200bb9672de7",
+ "reference": "7c4e7a7da184cd00c7ce6eacc590200bb9672de7",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-mbstring": "*",
- "facade/flare-client-php": "^1.0",
- "facade/ignition-contracts": "^1.0",
- "filp/whoops": "^2.4",
+ "facade/flare-client-php": "^1.6",
+ "facade/ignition-contracts": "^1.0.2",
"illuminate/support": "^7.0|^8.0",
"monolog/monolog": "^2.0",
- "php": "^7.2.5",
- "scrivo/highlight.php": "^9.15",
+ "php": "^7.2.5|^8.0",
"symfony/console": "^5.0",
"symfony/var-dumper": "^5.0"
},
@@ -7343,7 +5719,13 @@
"laravel",
"page"
],
- "time": "2021-03-08T13:56:01+00:00"
+ "support": {
+ "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction",
+ "forum": "https://twitter.com/flareappio",
+ "issues": "https://github.com/facade/ignition/issues",
+ "source": "https://github.com/facade/ignition"
+ },
+ "time": "2021-07-20T14:01:22+00:00"
},
{
"name": "facade/ignition-contracts",
@@ -7392,44 +5774,54 @@
"flare",
"ignition"
],
+ "support": {
+ "issues": "https://github.com/facade/ignition-contracts/issues",
+ "source": "https://github.com/facade/ignition-contracts/tree/1.0.2"
+ },
"time": "2020-10-16T08:27:54+00:00"
},
{
- "name": "filp/whoops",
- "version": "2.7.3",
+ "name": "fakerphp/faker",
+ "version": "v1.15.0",
"source": {
"type": "git",
- "url": "https://github.com/filp/whoops.git",
- "reference": "5d5fe9bb3d656b514d455645b3addc5f7ba7714d"
+ "url": "https://github.com/FakerPHP/Faker.git",
+ "reference": "89c6201c74db25fa759ff16e78a4d8f32547770e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filp/whoops/zipball/5d5fe9bb3d656b514d455645b3addc5f7ba7714d",
- "reference": "5d5fe9bb3d656b514d455645b3addc5f7ba7714d",
+ "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/89c6201c74db25fa759ff16e78a4d8f32547770e",
+ "reference": "89c6201c74db25fa759ff16e78a4d8f32547770e",
"shasum": ""
},
"require": {
- "php": "^5.5.9 || ^7.0",
- "psr/log": "^1.0.1"
+ "php": "^7.1 || ^8.0",
+ "psr/container": "^1.0",
+ "symfony/deprecation-contracts": "^2.2"
+ },
+ "conflict": {
+ "fzaninotto/faker": "*"
},
"require-dev": {
- "mockery/mockery": "^0.9 || ^1.0",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0",
- "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0"
+ "bamarni/composer-bin-plugin": "^1.4.1",
+ "ext-intl": "*",
+ "symfony/phpunit-bridge": "^4.4 || ^5.2"
},
"suggest": {
- "symfony/var-dumper": "Pretty print complex values better with var-dumper available",
- "whoops/soap": "Formats errors as SOAP responses"
+ "ext-curl": "Required by Faker\\Provider\\Image to download images.",
+ "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.",
+ "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.",
+ "ext-mbstring": "Required for multibyte Unicode string functionality."
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.6-dev"
+ "dev-main": "v1.15-dev"
}
},
"autoload": {
"psr-4": {
- "Whoops\\": "src/Whoops/"
+ "Faker\\": "src/Faker/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -7438,151 +5830,57 @@
],
"authors": [
{
- "name": "Filipe Dobreira",
- "homepage": "https://github.com/filp",
- "role": "Developer"
+ "name": "François Zaninotto"
}
],
- "description": "php error handling for cool kids",
- "homepage": "https://filp.github.io/whoops/",
+ "description": "Faker is a PHP library that generates fake data for you.",
"keywords": [
- "error",
- "exception",
- "handling",
- "library",
- "throwable",
- "whoops"
+ "data",
+ "faker",
+ "fixtures"
],
- "time": "2020-06-14T09:00:00+00:00"
+ "support": {
+ "issues": "https://github.com/FakerPHP/Faker/issues",
+ "source": "https://github.com/FakerPHP/Faker/tree/v1.15.0"
+ },
+ "time": "2021-07-06T20:39:40+00:00"
},
{
- "name": "friendsofphp/php-cs-fixer",
- "version": "v2.16.4",
+ "name": "filp/whoops",
+ "version": "2.14.0",
"source": {
"type": "git",
- "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
- "reference": "1023c3458137ab052f6ff1e09621a721bfdeca13"
+ "url": "https://github.com/filp/whoops.git",
+ "reference": "fdf92f03e150ed84d5967a833ae93abffac0315b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/1023c3458137ab052f6ff1e09621a721bfdeca13",
- "reference": "1023c3458137ab052f6ff1e09621a721bfdeca13",
+ "url": "https://api.github.com/repos/filp/whoops/zipball/fdf92f03e150ed84d5967a833ae93abffac0315b",
+ "reference": "fdf92f03e150ed84d5967a833ae93abffac0315b",
"shasum": ""
},
"require": {
- "composer/semver": "^1.4",
- "composer/xdebug-handler": "^1.2",
- "doctrine/annotations": "^1.2",
- "ext-json": "*",
- "ext-tokenizer": "*",
- "php": "^5.6 || ^7.0",
- "php-cs-fixer/diff": "^1.3",
- "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0",
- "symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0",
- "symfony/filesystem": "^3.0 || ^4.0 || ^5.0",
- "symfony/finder": "^3.0 || ^4.0 || ^5.0",
- "symfony/options-resolver": "^3.0 || ^4.0 || ^5.0",
- "symfony/polyfill-php70": "^1.0",
- "symfony/polyfill-php72": "^1.4",
- "symfony/process": "^3.0 || ^4.0 || ^5.0",
- "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0"
+ "php": "^5.5.9 || ^7.0 || ^8.0",
+ "psr/log": "^1.0.1"
},
"require-dev": {
- "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0",
- "justinrainbow/json-schema": "^5.0",
- "keradus/cli-executor": "^1.2",
- "mikey179/vfsstream": "^1.6",
- "php-coveralls/php-coveralls": "^2.1",
- "php-cs-fixer/accessible-object": "^1.0",
- "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.1",
- "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.1",
- "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.1",
- "phpunitgoodpractices/traits": "^1.8",
- "symfony/phpunit-bridge": "^5.1",
- "symfony/yaml": "^3.0 || ^4.0 || ^5.0"
+ "mockery/mockery": "^0.9 || ^1.0",
+ "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3",
+ "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0"
},
"suggest": {
- "ext-dom": "For handling output formats in XML",
- "ext-mbstring": "For handling non-UTF8 characters.",
- "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.",
- "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.",
- "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible."
- },
- "bin": [
- "php-cs-fixer"
- ],
- "type": "application",
- "autoload": {
- "psr-4": {
- "PhpCsFixer\\": "src/"
- },
- "classmap": [
- "tests/Test/AbstractFixerTestCase.php",
- "tests/Test/AbstractIntegrationCaseFactory.php",
- "tests/Test/AbstractIntegrationTestCase.php",
- "tests/Test/Assert/AssertTokensTrait.php",
- "tests/Test/IntegrationCase.php",
- "tests/Test/IntegrationCaseFactory.php",
- "tests/Test/IntegrationCaseFactoryInterface.php",
- "tests/Test/InternalIntegrationCaseFactory.php",
- "tests/Test/IsIdenticalConstraint.php",
- "tests/TestCase.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Dariusz Rumiński",
- "email": "dariusz.ruminski@gmail.com"
- }
- ],
- "description": "A tool to automatically fix PHP code style",
- "funding": [
- {
- "url": "https://github.com/keradus",
- "type": "github"
- }
- ],
- "time": "2020-06-27T23:57:46+00:00"
- },
- {
- "name": "fzaninotto/faker",
- "version": "v1.9.1",
- "source": {
- "type": "git",
- "url": "https://github.com/fzaninotto/Faker.git",
- "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/fc10d778e4b84d5bd315dad194661e091d307c6f",
- "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.3 || ^7.0"
- },
- "require-dev": {
- "ext-intl": "*",
- "phpunit/phpunit": "^4.8.35 || ^5.7",
- "squizlabs/php_codesniffer": "^2.9.2"
+ "symfony/var-dumper": "Pretty print complex values better with var-dumper available",
+ "whoops/soap": "Formats errors as SOAP responses"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.9-dev"
+ "dev-master": "2.7-dev"
}
},
"autoload": {
"psr-4": {
- "Faker\\": "src/Faker/"
+ "Whoops\\": "src/Whoops/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -7591,17 +5889,32 @@
],
"authors": [
{
- "name": "François Zaninotto"
+ "name": "Filipe Dobreira",
+ "homepage": "https://github.com/filp",
+ "role": "Developer"
}
],
- "description": "Faker is a PHP library that generates fake data for you.",
+ "description": "php error handling for cool kids",
+ "homepage": "https://filp.github.io/whoops/",
"keywords": [
- "data",
- "faker",
- "fixtures"
+ "error",
+ "exception",
+ "handling",
+ "library",
+ "throwable",
+ "whoops"
+ ],
+ "support": {
+ "issues": "https://github.com/filp/whoops/issues",
+ "source": "https://github.com/filp/whoops/tree/2.14.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/denis-sokolov",
+ "type": "github"
+ }
],
- "abandoned": true,
- "time": "2019-12-12T13:22:17+00:00"
+ "time": "2021-07-13T12:00:00+00:00"
},
{
"name": "hamcrest/hamcrest-php",
@@ -7648,56 +5961,108 @@
"keywords": [
"test"
],
+ "support": {
+ "issues": "https://github.com/hamcrest/hamcrest-php/issues",
+ "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1"
+ },
"time": "2020-07-09T08:09:16+00:00"
},
{
- "name": "laravel/dusk",
- "version": "v6.4.1",
+ "name": "laravel/sail",
+ "version": "v1.9.0",
"source": {
"type": "git",
- "url": "https://github.com/laravel/dusk.git",
- "reference": "db10ac70d01f332614a54cd7f1fe4757066db7cc"
+ "url": "https://github.com/laravel/sail.git",
+ "reference": "3e1aa8679b10ae9210eebfbc2ee5f3600f356702"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/dusk/zipball/db10ac70d01f332614a54cd7f1fe4757066db7cc",
- "reference": "db10ac70d01f332614a54cd7f1fe4757066db7cc",
+ "url": "https://api.github.com/repos/laravel/sail/zipball/3e1aa8679b10ae9210eebfbc2ee5f3600f356702",
+ "reference": "3e1aa8679b10ae9210eebfbc2ee5f3600f356702",
"shasum": ""
},
"require": {
- "ext-json": "*",
- "ext-zip": "*",
- "illuminate/console": "^6.0|^7.0",
- "illuminate/support": "^6.0|^7.0",
- "nesbot/carbon": "^2.0",
- "php": "^7.2",
- "php-webdriver/webdriver": "^1.8.1",
- "symfony/console": "^4.3|^5.0",
- "symfony/finder": "^4.3|^5.0",
- "symfony/process": "^4.3|^5.0",
- "vlucas/phpdotenv": "^3.0|^4.0"
+ "illuminate/console": "^8.0|^9.0",
+ "illuminate/contracts": "^8.0|^9.0",
+ "illuminate/support": "^8.0|^9.0",
+ "php": "^7.3|^8.0"
},
- "require-dev": {
- "mockery/mockery": "^1.0",
- "phpunit/phpunit": "^7.5.15|^8.4|^9.0"
+ "bin": [
+ "bin/sail"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ },
+ "laravel": {
+ "providers": [
+ "Laravel\\Sail\\SailServiceProvider"
+ ]
+ }
},
- "suggest": {
- "ext-pcntl": "Used to gracefully terminate Dusk when tests are running."
+ "autoload": {
+ "psr-4": {
+ "Laravel\\Sail\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "Docker files for running a basic Laravel application.",
+ "keywords": [
+ "docker",
+ "laravel"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/sail/issues",
+ "source": "https://github.com/laravel/sail"
+ },
+ "time": "2021-08-03T18:51:44+00:00"
+ },
+ {
+ "name": "laravel/ui",
+ "version": "v3.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/ui.git",
+ "reference": "07d725813350c695c779382cbd6dac0ab8665537"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/ui/zipball/07d725813350c695c779382cbd6dac0ab8665537",
+ "reference": "07d725813350c695c779382cbd6dac0ab8665537",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/console": "^8.42",
+ "illuminate/filesystem": "^8.42",
+ "illuminate/support": "^8.42",
+ "illuminate/validation": "^8.42",
+ "php": "^7.3|^8.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "6.x-dev"
+ "dev-master": "3.x-dev"
},
"laravel": {
"providers": [
- "Laravel\\Dusk\\DuskServiceProvider"
+ "Laravel\\Ui\\UiServiceProvider"
]
}
},
"autoload": {
"psr-4": {
- "Laravel\\Dusk\\": "src/"
+ "Laravel\\Ui\\": "src/",
+ "Illuminate\\Foundation\\Auth\\": "auth-backend/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -7710,35 +6075,37 @@
"email": "taylor@laravel.com"
}
],
- "description": "Laravel Dusk provides simple end-to-end testing and browser automation.",
+ "description": "Laravel UI utilities and presets.",
"keywords": [
"laravel",
- "testing",
- "webdriver"
+ "ui"
],
- "time": "2020-07-14T18:02:46+00:00"
+ "support": {
+ "source": "https://github.com/laravel/ui/tree/v3.3.0"
+ },
+ "time": "2021-05-25T16:45:33+00:00"
},
{
"name": "maximebf/debugbar",
- "version": "v1.16.3",
+ "version": "v1.17.1",
"source": {
"type": "git",
"url": "https://github.com/maximebf/php-debugbar.git",
- "reference": "1a1605b8e9bacb34cc0c6278206d699772e1d372"
+ "reference": "0a3532556be0145603f8a9de23e76dc28eed7054"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/1a1605b8e9bacb34cc0c6278206d699772e1d372",
- "reference": "1a1605b8e9bacb34cc0c6278206d699772e1d372",
+ "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/0a3532556be0145603f8a9de23e76dc28eed7054",
+ "reference": "0a3532556be0145603f8a9de23e76dc28eed7054",
"shasum": ""
},
"require": {
- "php": "^7.1",
+ "php": "^7.1|^8",
"psr/log": "^1.0",
"symfony/var-dumper": "^2.6|^3|^4|^5"
},
"require-dev": {
- "phpunit/phpunit": "^5"
+ "phpunit/phpunit": "^7.5.20 || ^9.4.2"
},
"suggest": {
"kriswallsmith/assetic": "The best way to manage assets",
@@ -7748,7 +6115,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.16-dev"
+ "dev-master": "1.17-dev"
}
},
"autoload": {
@@ -7777,20 +6144,24 @@
"debug",
"debugbar"
],
- "time": "2020-05-06T07:06:27+00:00"
+ "support": {
+ "issues": "https://github.com/maximebf/php-debugbar/issues",
+ "source": "https://github.com/maximebf/php-debugbar/tree/v1.17.1"
+ },
+ "time": "2021-08-01T09:19:02+00:00"
},
{
"name": "mockery/mockery",
- "version": "1.4.1",
+ "version": "1.4.3",
"source": {
"type": "git",
"url": "https://github.com/mockery/mockery.git",
- "reference": "1404386ca3410b04fe58b9517e85d702ab33b2c6"
+ "reference": "d1339f64479af1bee0e82a0413813fe5345a54ea"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mockery/mockery/zipball/1404386ca3410b04fe58b9517e85d702ab33b2c6",
- "reference": "1404386ca3410b04fe58b9517e85d702ab33b2c6",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/d1339f64479af1bee0e82a0413813fe5345a54ea",
+ "reference": "d1339f64479af1bee0e82a0413813fe5345a54ea",
"shasum": ""
},
"require": {
@@ -7802,7 +6173,7 @@
"phpunit/phpunit": "<8.0"
},
"require-dev": {
- "phpunit/phpunit": "^8.5 || ^9.0"
+ "phpunit/phpunit": "^8.5 || ^9.3"
},
"type": "library",
"extra": {
@@ -7845,20 +6216,24 @@
"test double",
"testing"
],
- "time": "2020-07-09T08:31:54+00:00"
+ "support": {
+ "issues": "https://github.com/mockery/mockery/issues",
+ "source": "https://github.com/mockery/mockery/tree/1.4.3"
+ },
+ "time": "2021-02-24T09:51:49+00:00"
},
{
"name": "myclabs/deep-copy",
- "version": "1.10.1",
+ "version": "1.10.2",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5"
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
- "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
"shasum": ""
},
"require": {
@@ -7893,45 +6268,49 @@
"object",
"object graph"
],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
+ },
"funding": [
{
"url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
"type": "tidelift"
}
],
- "time": "2020-06-29T13:22:24+00:00"
+ "time": "2020-11-13T09:40:50+00:00"
},
{
"name": "nunomaduro/collision",
- "version": "v4.2.0",
+ "version": "v5.8.0",
"source": {
"type": "git",
"url": "https://github.com/nunomaduro/collision.git",
- "reference": "d50490417eded97be300a92cd7df7badc37a9018"
+ "reference": "0c3c393462eada1233513664e2d22bb9f69ca393"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nunomaduro/collision/zipball/d50490417eded97be300a92cd7df7badc37a9018",
- "reference": "d50490417eded97be300a92cd7df7badc37a9018",
+ "url": "https://api.github.com/repos/nunomaduro/collision/zipball/0c3c393462eada1233513664e2d22bb9f69ca393",
+ "reference": "0c3c393462eada1233513664e2d22bb9f69ca393",
"shasum": ""
},
"require": {
"facade/ignition-contracts": "^1.0",
- "filp/whoops": "^2.4",
- "php": "^7.2.5",
+ "filp/whoops": "^2.7.2",
+ "php": "^7.3 || ^8.0",
"symfony/console": "^5.0"
},
"require-dev": {
- "facade/ignition": "^2.0",
- "fideloper/proxy": "^4.2",
- "friendsofphp/php-cs-fixer": "^2.16",
- "fruitcake/laravel-cors": "^1.0",
- "laravel/framework": "^7.0",
- "laravel/tinker": "^2.0",
- "nunomaduro/larastan": "^0.5",
- "orchestra/testbench": "^5.0",
- "phpstan/phpstan": "^0.12.3",
- "phpunit/phpunit": "^8.5.1 || ^9.0"
+ "brianium/paratest": "^6.1",
+ "fideloper/proxy": "^4.4.1",
+ "friendsofphp/php-cs-fixer": "^3.0",
+ "fruitcake/laravel-cors": "^2.0.3",
+ "laravel/framework": "^8.0 || ^9.0",
+ "nunomaduro/larastan": "^0.6.2",
+ "nunomaduro/mock-final-classes": "^1.0",
+ "orchestra/testbench": "^6.0 || ^7.0",
+ "phpstan/phpstan": "^0.12.64",
+ "phpunit/phpunit": "^9.5.0"
},
"type": "library",
"extra": {
@@ -7969,6 +6348,10 @@
"php",
"symfony"
],
+ "support": {
+ "issues": "https://github.com/nunomaduro/collision/issues",
+ "source": "https://github.com/nunomaduro/collision"
+ },
"funding": [
{
"url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L",
@@ -7983,32 +6366,33 @@
"type": "patreon"
}
],
- "time": "2020-04-04T19:56:08+00:00"
+ "time": "2021-08-13T14:23:01+00:00"
},
{
"name": "phar-io/manifest",
- "version": "1.0.3",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/phar-io/manifest.git",
- "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4"
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
- "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-phar": "*",
- "phar-io/version": "^2.0",
- "php": "^5.6 || ^7.0"
+ "ext-xmlwriter": "*",
+ "phar-io/version": "^3.0.1",
+ "php": "^7.2 || ^8.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"autoload": {
@@ -8038,75 +6422,28 @@
}
],
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
- "time": "2018-07-08T19:23:20+00:00"
- },
- {
- "name": "phar-io/version",
- "version": "2.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/version.git",
- "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6",
- "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6",
- "shasum": ""
- },
- "require": {
- "php": "^5.6 || ^7.0"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
+ "support": {
+ "issues": "https://github.com/phar-io/manifest/issues",
+ "source": "https://github.com/phar-io/manifest/tree/2.0.3"
},
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian@phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "Developer"
- }
- ],
- "description": "Library for handling version information and constraints",
- "time": "2018-07-08T19:19:57+00:00"
+ "time": "2021-07-20T11:28:43+00:00"
},
{
- "name": "php-cs-fixer/diff",
- "version": "v1.3.0",
+ "name": "phar-io/version",
+ "version": "3.1.0",
"source": {
"type": "git",
- "url": "https://github.com/PHP-CS-Fixer/diff.git",
- "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756"
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "bae7c545bef187884426f042434e561ab1ddb182"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/78bb099e9c16361126c86ce82ec4405ebab8e756",
- "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182",
+ "reference": "bae7c545bef187884426f042434e561ab1ddb182",
"shasum": ""
},
"require": {
- "php": "^5.6 || ^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^5.7.23 || ^6.4.3",
- "symfony/process": "^3.3"
+ "php": "^7.2 || ^8.0"
},
"type": "library",
"autoload": {
@@ -8120,88 +6457,27 @@
],
"authors": [
{
- "name": "Kore Nordmann",
- "email": "mail@kore-nordmann.de"
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
},
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
},
{
- "name": "SpacePossum"
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
}
],
- "description": "sebastian/diff v2 backport support for PHP5.6",
- "homepage": "https://github.com/PHP-CS-Fixer",
- "keywords": [
- "diff"
- ],
- "time": "2018-02-15T16:58:55+00:00"
- },
- {
- "name": "php-webdriver/webdriver",
- "version": "1.8.2",
- "source": {
- "type": "git",
- "url": "https://github.com/php-webdriver/php-webdriver.git",
- "reference": "3308a70be084d6d7fd1ee5787b4c2e6eb4b70aab"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/3308a70be084d6d7fd1ee5787b4c2e6eb4b70aab",
- "reference": "3308a70be084d6d7fd1ee5787b4c2e6eb4b70aab",
- "shasum": ""
- },
- "require": {
- "ext-curl": "*",
- "ext-json": "*",
- "ext-zip": "*",
- "php": "^5.6 || ~7.0",
- "symfony/polyfill-mbstring": "^1.12",
- "symfony/process": "^2.8 || ^3.1 || ^4.0 || ^5.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^2.0",
- "jakub-onderka/php-parallel-lint": "^1.0",
- "php-coveralls/php-coveralls": "^2.0",
- "php-mock/php-mock-phpunit": "^1.1",
- "phpunit/phpunit": "^5.7",
- "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0",
- "sminnee/phpunit-mock-objects": "^3.4",
- "squizlabs/php_codesniffer": "^3.5",
- "symfony/var-dumper": "^3.3 || ^4.0 || ^5.0"
- },
- "suggest": {
- "ext-SimpleXML": "For Firefox profile creation"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.8.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Facebook\\WebDriver\\": "lib/"
- },
- "files": [
- "lib/Exception/TimeoutException.php"
- ]
+ "description": "Library for handling version information and constraints",
+ "support": {
+ "issues": "https://github.com/phar-io/version/issues",
+ "source": "https://github.com/phar-io/version/tree/3.1.0"
},
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "A PHP client for Selenium WebDriver. Previously facebook/webdriver.",
- "homepage": "https://github.com/php-webdriver/php-webdriver",
- "keywords": [
- "Chromedriver",
- "geckodriver",
- "php",
- "selenium",
- "webdriver"
- ],
- "time": "2020-03-04T14:40:12+00:00"
+ "time": "2021-02-23T14:00:09+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -8250,32 +6526,35 @@
"reflection",
"static analysis"
],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
"time": "2020-06-27T09:03:43+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "5.1.0",
+ "version": "5.2.2",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e"
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
- "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
"shasum": ""
},
"require": {
- "ext-filter": "^7.1",
- "php": "^7.2",
- "phpdocumentor/reflection-common": "^2.0",
- "phpdocumentor/type-resolver": "^1.0",
- "webmozart/assert": "^1"
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
},
"require-dev": {
- "doctrine/instantiator": "^1",
- "mockery/mockery": "^1"
+ "mockery/mockery": "~1.3.2"
},
"type": "library",
"extra": {
@@ -8303,20 +6582,24 @@
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "time": "2020-02-22T12:28:44+00:00"
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
+ },
+ "time": "2020-09-03T19:13:55+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "1.3.0",
+ "version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "e878a14a65245fbe78f8080eba03b47c3b705651"
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e878a14a65245fbe78f8080eba03b47c3b705651",
- "reference": "e878a14a65245fbe78f8080eba03b47c3b705651",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
"shasum": ""
},
"require": {
@@ -8348,32 +6631,36 @@
}
],
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
- "time": "2020-06-27T10:12:23+00:00"
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
+ },
+ "time": "2020-09-17T18:55:26+00:00"
},
{
"name": "phpspec/prophecy",
- "version": "1.11.1",
+ "version": "1.13.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160"
+ "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b20034be5efcdab4fb60ca3a29cba2949aead160",
- "reference": "b20034be5efcdab4fb60ca3a29cba2949aead160",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea",
+ "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.2",
- "php": "^7.2",
- "phpdocumentor/reflection-docblock": "^5.0",
+ "php": "^7.2 || ~8.0, <8.1",
+ "phpdocumentor/reflection-docblock": "^5.2",
"sebastian/comparator": "^3.0 || ^4.0",
"sebastian/recursion-context": "^3.0 || ^4.0"
},
"require-dev": {
"phpspec/phpspec": "^6.0",
- "phpunit/phpunit": "^8.0"
+ "phpunit/phpunit": "^8.0 || ^9.0"
},
"type": "library",
"extra": {
@@ -8411,44 +6698,52 @@
"spy",
"stub"
],
- "time": "2020-07-08T12:44:21+00:00"
+ "support": {
+ "issues": "https://github.com/phpspec/prophecy/issues",
+ "source": "https://github.com/phpspec/prophecy/tree/1.13.0"
+ },
+ "time": "2021-03-17T13:42:18+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "7.0.10",
+ "version": "9.2.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf"
+ "reference": "f6293e1b30a2354e8428e004689671b83871edde"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf",
- "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde",
+ "reference": "f6293e1b30a2354e8428e004689671b83871edde",
"shasum": ""
},
"require": {
"ext-dom": "*",
+ "ext-libxml": "*",
"ext-xmlwriter": "*",
- "php": "^7.2",
- "phpunit/php-file-iterator": "^2.0.2",
- "phpunit/php-text-template": "^1.2.1",
- "phpunit/php-token-stream": "^3.1.1",
- "sebastian/code-unit-reverse-lookup": "^1.0.1",
- "sebastian/environment": "^4.2.2",
- "sebastian/version": "^2.0.1",
- "theseer/tokenizer": "^1.1.3"
+ "nikic/php-parser": "^4.10.2",
+ "php": ">=7.3",
+ "phpunit/php-file-iterator": "^3.0.3",
+ "phpunit/php-text-template": "^2.0.2",
+ "sebastian/code-unit-reverse-lookup": "^2.0.2",
+ "sebastian/complexity": "^2.0",
+ "sebastian/environment": "^5.1.2",
+ "sebastian/lines-of-code": "^1.0.3",
+ "sebastian/version": "^3.0.1",
+ "theseer/tokenizer": "^1.2.0"
},
"require-dev": {
- "phpunit/phpunit": "^8.2.2"
+ "phpunit/phpunit": "^9.3"
},
"suggest": {
- "ext-xdebug": "^2.7.2"
+ "ext-pcov": "*",
+ "ext-xdebug": "*"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "7.0-dev"
+ "dev-master": "9.2-dev"
}
},
"autoload": {
@@ -8474,32 +6769,42 @@
"testing",
"xunit"
],
- "time": "2019-11-20T13:55:58+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-03-28T07:26:59+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "2.0.2",
+ "version": "3.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "050bedf145a257b1ff02746c31894800e5122946"
+ "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946",
- "reference": "050bedf145a257b1ff02746c31894800e5122946",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8",
+ "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8",
"shasum": ""
},
"require": {
- "php": "^7.1"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^7.1"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
@@ -8524,26 +6829,48 @@
"filesystem",
"iterator"
],
- "time": "2018-09-13T20:33:42+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:57:25+00:00"
},
{
- "name": "phpunit/php-text-template",
- "version": "1.2.1",
+ "name": "phpunit/php-invoker",
+ "version": "3.1.1",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+ "url": "https://github.com/sebastianbergmann/php-invoker.git",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "ext-pcntl": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcntl": "*"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
"autoload": {
"classmap": [
"src/"
@@ -8560,37 +6887,47 @@
"role": "lead"
}
],
- "description": "Simple template engine.",
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "description": "Invoke callables with a timeout",
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
"keywords": [
- "template"
+ "process"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
],
- "time": "2015-06-21T13:50:34+00:00"
+ "time": "2020-09-28T05:58:55+00:00"
},
{
- "name": "phpunit/php-timer",
- "version": "2.1.2",
+ "name": "phpunit/php-text-template",
+ "version": "2.0.4",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "1038454804406b0b5f5f520358e78c1c2f71501e"
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e",
- "reference": "1038454804406b0b5f5f520358e78c1c2f71501e",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
"shasum": ""
},
"require": {
- "php": "^7.1"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^7.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.1-dev"
+ "dev-master": "2.0-dev"
}
},
"autoload": {
@@ -8609,38 +6946,47 @@
"role": "lead"
}
],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
"keywords": [
- "timer"
+ "template"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
],
- "time": "2019-06-07T04:22:29+00:00"
+ "time": "2020-10-26T05:33:50+00:00"
},
{
- "name": "phpunit/php-token-stream",
- "version": "3.1.1",
+ "name": "phpunit/php-timer",
+ "version": "5.0.3",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff"
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff",
- "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
"shasum": ""
},
"require": {
- "ext-tokenizer": "*",
- "php": "^7.1"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^7.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.1-dev"
+ "dev-master": "5.0-dev"
}
},
"autoload": {
@@ -8655,65 +7001,78 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "Wrapper around PHP's tokenizer extension.",
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
"keywords": [
- "tokenizer"
+ "timer"
],
- "abandoned": true,
- "time": "2019-09-17T06:23:10+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:16:10+00:00"
},
{
"name": "phpunit/phpunit",
- "version": "8.5.8",
+ "version": "9.5.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "34c18baa6a44f1d1fbf0338907139e9dce95b997"
+ "reference": "191768ccd5c85513b4068bdbe99bb6390c7d54fb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/34c18baa6a44f1d1fbf0338907139e9dce95b997",
- "reference": "34c18baa6a44f1d1fbf0338907139e9dce95b997",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/191768ccd5c85513b4068bdbe99bb6390c7d54fb",
+ "reference": "191768ccd5c85513b4068bdbe99bb6390c7d54fb",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.2.0",
+ "doctrine/instantiator": "^1.3.1",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-xml": "*",
"ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.9.1",
- "phar-io/manifest": "^1.0.3",
- "phar-io/version": "^2.0.1",
- "php": "^7.2",
- "phpspec/prophecy": "^1.8.1",
- "phpunit/php-code-coverage": "^7.0.7",
- "phpunit/php-file-iterator": "^2.0.2",
- "phpunit/php-text-template": "^1.2.1",
- "phpunit/php-timer": "^2.1.2",
- "sebastian/comparator": "^3.0.2",
- "sebastian/diff": "^3.0.2",
- "sebastian/environment": "^4.2.2",
- "sebastian/exporter": "^3.1.1",
- "sebastian/global-state": "^3.0.0",
- "sebastian/object-enumerator": "^3.0.3",
- "sebastian/resource-operations": "^2.0.1",
- "sebastian/type": "^1.1.3",
- "sebastian/version": "^2.0.1"
+ "myclabs/deep-copy": "^1.10.1",
+ "phar-io/manifest": "^2.0.3",
+ "phar-io/version": "^3.0.2",
+ "php": ">=7.3",
+ "phpspec/prophecy": "^1.12.1",
+ "phpunit/php-code-coverage": "^9.2.3",
+ "phpunit/php-file-iterator": "^3.0.5",
+ "phpunit/php-invoker": "^3.1.1",
+ "phpunit/php-text-template": "^2.0.3",
+ "phpunit/php-timer": "^5.0.2",
+ "sebastian/cli-parser": "^1.0.1",
+ "sebastian/code-unit": "^1.0.6",
+ "sebastian/comparator": "^4.0.5",
+ "sebastian/diff": "^4.0.3",
+ "sebastian/environment": "^5.1.3",
+ "sebastian/exporter": "^4.0.3",
+ "sebastian/global-state": "^5.0.1",
+ "sebastian/object-enumerator": "^4.0.3",
+ "sebastian/resource-operations": "^3.0.3",
+ "sebastian/type": "^2.3.4",
+ "sebastian/version": "^3.0.2"
},
"require-dev": {
- "ext-pdo": "*"
+ "ext-pdo": "*",
+ "phpspec/prophecy-phpunit": "^2.0.1"
},
"suggest": {
"ext-soap": "*",
- "ext-xdebug": "*",
- "phpunit/php-invoker": "^2.0.0"
+ "ext-xdebug": "*"
},
"bin": [
"phpunit"
@@ -8721,12 +7080,15 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "8.5-dev"
+ "dev-master": "9.5-dev"
}
},
"autoload": {
"classmap": [
"src/"
+ ],
+ "files": [
+ "src/Framework/Assert/Functions.php"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -8747,6 +7109,10 @@
"testing",
"xunit"
],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.8"
+ },
"funding": [
{
"url": "https://phpunit.de/donate.html",
@@ -8757,100 +7123,93 @@
"type": "github"
}
],
- "time": "2020-06-22T07:06:58+00:00"
+ "time": "2021-07-31T15:17:34+00:00"
},
{
- "name": "rap2hpoutre/laravel-log-viewer",
- "version": "v1.6.0",
+ "name": "sebastian/cli-parser",
+ "version": "1.0.1",
"source": {
"type": "git",
- "url": "https://github.com/rap2hpoutre/laravel-log-viewer.git",
- "reference": "02023f590b84d11be8716a8c07146c128f9e7b42"
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rap2hpoutre/laravel-log-viewer/zipball/02023f590b84d11be8716a8c07146c128f9e7b42",
- "reference": "02023f590b84d11be8716a8c07146c128f9e7b42",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
"shasum": ""
},
"require": {
- "illuminate/support": "4.2.*|5.*|^6.0|^7.0",
- "php": ">=5.4.0"
+ "php": ">=7.3"
},
"require-dev": {
- "orchestra/testbench": "3.7.*",
- "phpunit/phpunit": "^7"
+ "phpunit/phpunit": "^9.3"
},
- "type": "laravel-package",
+ "type": "library",
"extra": {
- "laravel": {
- "providers": [
- "Rap2hpoutre\\LaravelLogViewer\\LaravelLogViewerServiceProvider"
- ]
+ "branch-alias": {
+ "dev-master": "1.0-dev"
}
},
"autoload": {
"classmap": [
- "src/controllers"
- ],
- "psr-0": {
- "Rap2hpoutre\\LaravelLogViewer\\": "src/"
- }
+ "src/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "rap2hpoutre",
- "email": "raphaelht@gmail.com"
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "A Laravel log reader",
- "keywords": [
- "laravel",
- "log",
- "log-reader",
- "log-viewer",
- "logging",
- "lumen"
+ "description": "Library for parsing CLI options",
+ "homepage": "https://github.com/sebastianbergmann/cli-parser",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
],
- "time": "2020-04-27T06:40:08+00:00"
+ "time": "2020-09-28T06:08:49+00:00"
},
{
- "name": "scrivo/highlight.php",
- "version": "v9.18.1.6",
+ "name": "sebastian/code-unit",
+ "version": "1.0.8",
"source": {
"type": "git",
- "url": "https://github.com/scrivo/highlight.php.git",
- "reference": "44a3d4136edb5ad8551590bf90f437db80b2d466"
+ "url": "https://github.com/sebastianbergmann/code-unit.git",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/44a3d4136edb5ad8551590bf90f437db80b2d466",
- "reference": "44a3d4136edb5ad8551590bf90f437db80b2d466",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
"shasum": ""
},
"require": {
- "ext-json": "*",
- "ext-mbstring": "*",
- "php": ">=5.4"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^4.8|^5.7",
- "sabberworm/php-css-parser": "^8.3",
- "symfony/finder": "^2.8|^3.4",
- "symfony/var-dumper": "^2.8|^3.4"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
"autoload": {
- "psr-0": {
- "Highlight\\": "",
- "HighlightUtilities\\": ""
- },
- "files": [
- "HighlightUtilities/functions.php"
+ "classmap": [
+ "src/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -8859,61 +7218,106 @@
],
"authors": [
{
- "name": "Geert Bergman",
- "homepage": "http://www.scrivo.org/",
- "role": "Project Author"
- },
- {
- "name": "Vladimir Jimenez",
- "homepage": "https://allejo.io",
- "role": "Maintainer"
- },
- {
- "name": "Martin Folkers",
- "homepage": "https://twobrain.io",
- "role": "Contributor"
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "Server side syntax highlighter that supports 185 languages. It's a PHP port of highlight.js",
- "keywords": [
- "code",
- "highlight",
- "highlight.js",
- "highlight.php",
- "syntax"
- ],
+ "description": "Collection of value objects that represent the PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/code-unit",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
+ },
"funding": [
{
- "url": "https://github.com/allejo",
+ "url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
- "time": "2020-12-22T19:20:29+00:00"
+ "time": "2020-10-26T13:08:54+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
- "version": "1.0.1",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
- "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:30:19+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "4.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
- "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
"shasum": ""
},
"require": {
- "php": "^5.6 || ^7.0"
+ "php": ">=7.3",
+ "sebastian/diff": "^4.0",
+ "sebastian/exporter": "^4.0"
},
"require-dev": {
- "phpunit/phpunit": "^5.7 || ^6.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "4.0-dev"
}
},
"autoload": {
@@ -8929,38 +7333,64 @@
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
}
],
- "description": "Looks up which function or method a line of code belongs to",
- "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
- "time": "2017-03-04T06:30:41+00:00"
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:49:45+00:00"
},
{
- "name": "sebastian/comparator",
- "version": "3.0.2",
+ "name": "sebastian/complexity",
+ "version": "2.0.2",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da"
+ "url": "https://github.com/sebastianbergmann/complexity.git",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
- "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
"shasum": ""
},
"require": {
- "php": "^7.1",
- "sebastian/diff": "^3.0",
- "sebastian/exporter": "^3.1"
+ "nikic/php-parser": "^4.7",
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^7.1"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "2.0-dev"
}
},
"autoload": {
@@ -8973,57 +7403,51 @@
"BSD-3-Clause"
],
"authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- },
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "Provides the functionality to compare PHP values for equality",
- "homepage": "https://github.com/sebastianbergmann/comparator",
- "keywords": [
- "comparator",
- "compare",
- "equality"
+ "description": "Library for calculating the complexity of PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/complexity",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/complexity/issues",
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
],
- "time": "2018-07-12T15:12:46+00:00"
+ "time": "2020-10-26T15:52:27+00:00"
},
{
"name": "sebastian/diff",
- "version": "3.0.2",
+ "version": "4.0.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29"
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
- "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
"shasum": ""
},
"require": {
- "php": "^7.1"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^7.5 || ^8.0",
- "symfony/process": "^2 || ^3.3 || ^4"
+ "phpunit/phpunit": "^9.3",
+ "symfony/process": "^4.2 || ^5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "4.0-dev"
}
},
"autoload": {
@@ -9036,13 +7460,13 @@
"BSD-3-Clause"
],
"authors": [
- {
- "name": "Kore Nordmann",
- "email": "mail@kore-nordmann.de"
- },
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
}
],
"description": "Diff implementation",
@@ -9053,27 +7477,37 @@
"unidiff",
"unified diff"
],
- "time": "2019-02-04T06:01:07+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:10:38+00:00"
},
{
"name": "sebastian/environment",
- "version": "4.2.3",
+ "version": "5.1.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368"
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
- "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
"shasum": ""
},
"require": {
- "php": "^7.1"
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^7.5"
+ "phpunit/phpunit": "^9.3"
},
"suggest": {
"ext-posix": "*"
@@ -9081,7 +7515,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.2-dev"
+ "dev-master": "5.1-dev"
}
},
"autoload": {
@@ -9106,34 +7540,44 @@
"environment",
"hhvm"
],
- "time": "2019-11-20T08:46:58+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:52:38+00:00"
},
{
"name": "sebastian/exporter",
- "version": "3.1.2",
+ "version": "4.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e"
+ "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e",
- "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65",
+ "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65",
"shasum": ""
},
"require": {
- "php": "^7.0",
- "sebastian/recursion-context": "^3.0"
+ "php": ">=7.3",
+ "sebastian/recursion-context": "^4.0"
},
"require-dev": {
"ext-mbstring": "*",
- "phpunit/phpunit": "^6.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.1.x-dev"
+ "dev-master": "4.0-dev"
}
},
"autoload": {
@@ -9173,30 +7617,40 @@
"export",
"exporter"
],
- "time": "2019-09-14T09:02:43+00:00"
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:24:23+00:00"
},
{
"name": "sebastian/global-state",
- "version": "3.0.0",
+ "version": "5.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4"
+ "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4",
- "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49",
+ "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49",
"shasum": ""
},
"require": {
- "php": "^7.2",
- "sebastian/object-reflector": "^1.1.1",
- "sebastian/recursion-context": "^3.0"
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
},
"require-dev": {
"ext-dom": "*",
- "phpunit/phpunit": "^8.0"
+ "phpunit/phpunit": "^9.3"
},
"suggest": {
"ext-uopz": "*"
@@ -9204,7 +7658,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "5.0-dev"
}
},
"autoload": {
@@ -9227,79 +7681,43 @@
"keywords": [
"global state"
],
- "time": "2019-02-01T05:30:01+00:00"
- },
- {
- "name": "sebastian/object-enumerator",
- "version": "3.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
- "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
- "shasum": ""
- },
- "require": {
- "php": "^7.0",
- "sebastian/object-reflector": "^1.1.1",
- "sebastian/recursion-context": "^3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3"
},
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
+ "funding": [
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
}
],
- "description": "Traverses array structures and object graphs to enumerate all referenced objects",
- "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
- "time": "2017-08-03T12:35:26+00:00"
+ "time": "2021-06-11T13:31:12+00:00"
},
{
- "name": "sebastian/object-reflector",
- "version": "1.1.1",
+ "name": "sebastian/lines-of-code",
+ "version": "1.0.3",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "773f97c67f28de00d397be301821b06708fca0be"
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
- "reference": "773f97c67f28de00d397be301821b06708fca0be",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
"shasum": ""
},
"require": {
- "php": "^7.0"
+ "nikic/php-parser": "^4.6",
+ "php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^6.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1-dev"
+ "dev-master": "1.0-dev"
}
},
"autoload": {
@@ -9314,87 +7732,50 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "Allows reflection of object attributes, including inherited and non-public ones",
- "homepage": "https://github.com/sebastianbergmann/object-reflector/",
- "time": "2017-03-29T09:07:27+00:00"
- },
- {
- "name": "sebastian/recursion-context",
- "version": "3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
- "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
- "shasum": ""
- },
- "require": {
- "php": "^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^6.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
+ "description": "Library for counting the lines of code in PHP source code",
+ "homepage": "https://github.com/sebastianbergmann/lines-of-code",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
},
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
+ "funding": [
{
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
}
],
- "description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2017-03-03T06:23:57+00:00"
+ "time": "2020-11-28T06:42:11+00:00"
},
{
- "name": "sebastian/resource-operations",
- "version": "2.0.1",
+ "name": "sebastian/object-enumerator",
+ "version": "4.0.4",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9"
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
- "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
"shasum": ""
},
"require": {
- "php": "^7.1"
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-master": "4.0-dev"
}
},
"autoload": {
@@ -9412,77 +7793,44 @@
"email": "sebastian@phpunit.de"
}
],
- "description": "Provides a list of PHP built-in functions that operate on resources",
- "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
- "time": "2018-10-04T04:07:39+00:00"
- },
- {
- "name": "sebastian/type",
- "version": "1.1.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/type.git",
- "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3",
- "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3",
- "shasum": ""
- },
- "require": {
- "php": "^7.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
},
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
+ "funding": [
{
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
}
],
- "description": "Collection of value objects that represent the types of the PHP type system",
- "homepage": "https://github.com/sebastianbergmann/type",
- "time": "2019-07-02T08:10:15+00:00"
+ "time": "2020-10-26T13:12:34+00:00"
},
{
- "name": "sebastian/version",
- "version": "2.0.1",
+ "name": "sebastian/object-reflector",
+ "version": "2.0.4",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
"shasum": ""
},
"require": {
- "php": ">=5.6"
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "2.0-dev"
}
},
"autoload": {
@@ -9497,311 +7845,278 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
+ "email": "sebastian@phpunit.de"
}
],
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "time": "2016-10-03T07:35:21+00:00"
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:14:26+00:00"
},
{
- "name": "symfony/debug",
- "version": "v4.4.10",
+ "name": "sebastian/recursion-context",
+ "version": "4.0.4",
"source": {
"type": "git",
- "url": "https://github.com/symfony/debug.git",
- "reference": "28f92d08bb6d1fddf8158e02c194ad43870007e6"
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/28f92d08bb6d1fddf8158e02c194ad43870007e6",
- "reference": "28f92d08bb6d1fddf8158e02c194ad43870007e6",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
"shasum": ""
},
"require": {
- "php": ">=7.1.3",
- "psr/log": "~1.0",
- "symfony/polyfill-php80": "^1.15"
- },
- "conflict": {
- "symfony/http-kernel": "<3.4"
+ "php": ">=7.3"
},
"require-dev": {
- "symfony/http-kernel": "^3.4|^4.0|^5.0"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.4-dev"
+ "dev-master": "4.0-dev"
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Component\\Debug\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
+ "classmap": [
+ "src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
},
{
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
}
],
- "description": "Symfony Debug Component",
- "homepage": "https://symfony.com",
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
+ },
"funding": [
{
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
+ "url": "https://github.com/sebastianbergmann",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
}
],
- "time": "2020-05-24T08:33:35+00:00"
+ "time": "2020-10-26T13:17:30+00:00"
},
{
- "name": "symfony/filesystem",
- "version": "v5.1.2",
+ "name": "sebastian/resource-operations",
+ "version": "3.0.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/filesystem.git",
- "reference": "6e4320f06d5f2cce0d96530162491f4465179157"
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/6e4320f06d5f2cce0d96530162491f4465179157",
- "reference": "6e4320f06d5f2cce0d96530162491f4465179157",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-ctype": "~1.8"
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.1-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Component\\Filesystem\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
+ "classmap": [
+ "src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
}
],
- "description": "Symfony Filesystem Component",
- "homepage": "https://symfony.com",
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+ },
"funding": [
{
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
+ "url": "https://github.com/sebastianbergmann",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
}
],
- "time": "2020-05-30T20:35:19+00:00"
+ "time": "2020-09-28T06:45:17+00:00"
},
{
- "name": "symfony/options-resolver",
- "version": "v5.1.2",
+ "name": "sebastian/type",
+ "version": "2.3.4",
"source": {
"type": "git",
- "url": "https://github.com/symfony/options-resolver.git",
- "reference": "663f5dd5e14057d1954fe721f9709d35837f2447"
+ "url": "https://github.com/sebastianbergmann/type.git",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/663f5dd5e14057d1954fe721f9709d35837f2447",
- "reference": "663f5dd5e14057d1954fe721f9709d35837f2447",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/polyfill-php80": "^1.15"
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.1-dev"
+ "dev-master": "2.3-dev"
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Component\\OptionsResolver\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
+ "classmap": [
+ "src/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "Symfony OptionsResolver Component",
- "homepage": "https://symfony.com",
- "keywords": [
- "config",
- "configuration",
- "options"
- ],
+ "description": "Collection of value objects that represent the types of the PHP type system",
+ "homepage": "https://github.com/sebastianbergmann/type",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/type/issues",
+ "source": "https://github.com/sebastianbergmann/type/tree/2.3.4"
+ },
"funding": [
{
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
+ "url": "https://github.com/sebastianbergmann",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
}
],
- "time": "2020-05-23T13:08:13+00:00"
+ "time": "2021-06-15T12:49:02+00:00"
},
{
- "name": "symfony/polyfill-php70",
- "version": "v1.20.0",
+ "name": "sebastian/version",
+ "version": "3.0.2",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php70.git",
- "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644"
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644",
- "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.3"
},
- "type": "metapackage",
+ "type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.20-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "dev-master": "3.0-dev"
}
},
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
}
],
- "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+ },
"funding": [
{
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
+ "url": "https://github.com/sebastianbergmann",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
}
],
- "time": "2020-10-23T14:02:19+00:00"
+ "time": "2020-09-28T06:39:44+00:00"
},
{
- "name": "symfony/stopwatch",
- "version": "v5.1.2",
+ "name": "symfony/debug",
+ "version": "v4.4.27",
"source": {
"type": "git",
- "url": "https://github.com/symfony/stopwatch.git",
- "reference": "0f7c58cf81dbb5dd67d423a89d577524a2ec0323"
+ "url": "https://github.com/symfony/debug.git",
+ "reference": "2f9160e92eb64c95da7368c867b663a8e34e980c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/0f7c58cf81dbb5dd67d423a89d577524a2ec0323",
- "reference": "0f7c58cf81dbb5dd67d423a89d577524a2ec0323",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/2f9160e92eb64c95da7368c867b663a8e34e980c",
+ "reference": "2f9160e92eb64c95da7368c867b663a8e34e980c",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/service-contracts": "^1.0|^2"
+ "php": ">=7.1.3",
+ "psr/log": "^1|^2|^3"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
+ "conflict": {
+ "symfony/http-kernel": "<3.4"
+ },
+ "require-dev": {
+ "symfony/http-kernel": "^3.4|^4.0|^5.0"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\Stopwatch\\": ""
+ "Symfony\\Component\\Debug\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -9821,8 +8136,11 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Stopwatch Component",
+ "description": "Provides tools to ease debugging PHP code",
"homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/debug/tree/v4.4.27"
+ },
"funding": [
{
"url": "https://symfony.com/sponsor",
@@ -9837,20 +8155,20 @@
"type": "tidelift"
}
],
- "time": "2020-05-20T17:43:50+00:00"
+ "time": "2021-07-22T07:21:39+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.2.0",
+ "version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a"
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
"shasum": ""
},
"require": {
@@ -9877,72 +8195,27 @@
}
],
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "support": {
+ "issues": "https://github.com/theseer/tokenizer/issues",
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
+ },
"funding": [
{
"url": "https://github.com/theseer",
"type": "github"
}
],
- "time": "2020-07-12T23:59:07+00:00"
- },
- {
- "name": "webmozart/assert",
- "version": "1.9.1",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozarts/assert.git",
- "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
- "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.3 || ^7.0 || ^8.0",
- "symfony/polyfill-ctype": "^1.8"
- },
- "conflict": {
- "phpstan/phpstan": "<0.12.20",
- "vimeo/psalm": "<3.9.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.36 || ^7.5.13"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Webmozart\\Assert\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
- }
- ],
- "description": "Assertions to validate method input/output with nice error messages.",
- "keywords": [
- "assert",
- "check",
- "validate"
- ],
- "time": "2020-07-08T17:02:28+00:00"
+ "time": "2021-07-28T10:34:58+00:00"
}
],
"aliases": [],
- "minimum-stability": "stable",
+ "minimum-stability": "dev",
"stability-flags": [],
- "prefer-stable": false,
+ "prefer-stable": true,
"prefer-lowest": false,
"platform": {
- "php": ">=7.2.5"
+ "php": "^7.3|^8.0"
},
"platform-dev": [],
- "plugin-api-version": "2.0.0"
+ "plugin-api-version": "2.1.0"
}
diff --git a/config/app.php b/config/app.php
old mode 100755
new mode 100644
index 809e27354..72c5c1c07
--- a/config/app.php
+++ b/config/app.php
@@ -13,7 +13,7 @@
|
*/
- 'name' => env('APP_NAME', 'Laravel'),
+ 'name' => env('APP_NAME', 'Unifiedtransform'),
/*
|--------------------------------------------------------------------------
@@ -22,7 +22,7 @@
|
| This value determines the "environment" your application is currently
| running in. This may determine how you prefer to configure various
- | services your application utilizes. Set this in your ".env" file.
+ | services the application utilizes. Set this in your ".env" file.
|
*/
@@ -39,7 +39,7 @@
|
*/
- 'debug' => env('APP_DEBUG', false),
+ 'debug' => (bool) env('APP_DEBUG', false),
/*
|--------------------------------------------------------------------------
@@ -54,6 +54,8 @@
'url' => env('APP_URL', 'http://localhost'),
+ 'asset_url' => env('ASSET_URL', null),
+
/*
|--------------------------------------------------------------------------
| Application Timezone
@@ -65,7 +67,7 @@
|
*/
- 'timezone' => 'Asia/Dhaka',//'UTC',
+ 'timezone' => 'UTC',
/*
|--------------------------------------------------------------------------
@@ -95,35 +97,31 @@
/*
|--------------------------------------------------------------------------
- | Encryption Key
+ | Faker Locale
|--------------------------------------------------------------------------
|
- | This key is used by the Illuminate encrypter service and should be set
- | to a random, 32 character string, otherwise these encrypted strings
- | will not be safe. Please do this before deploying an application!
+ | This locale will be used by the Faker PHP library when generating fake
+ | data for your database seeds. For example, this will be used to get
+ | localized telephone numbers, street address information and more.
|
*/
- 'key' => env('APP_KEY'),
-
- 'cipher' => 'AES-256-CBC',
+ 'faker_locale' => 'en_US',
/*
|--------------------------------------------------------------------------
- | Logging Configuration
+ | Encryption Key
|--------------------------------------------------------------------------
|
- | Here you may configure the log settings for your application. Out of
- | the box, Laravel uses the Monolog PHP logging library. This gives
- | you a variety of powerful log handlers / formatters to utilize.
- |
- | Available Settings: "single", "daily", "syslog", "errorlog"
+ | This key is used by the Illuminate encrypter service and should be set
+ | to a random, 32 character string, otherwise these encrypted strings
+ | will not be safe. Please do this before deploying an application!
|
*/
- 'log' => env('APP_LOG', 'single'),
+ 'key' => env('APP_KEY'),
- 'log_level' => env('APP_LOG_LEVEL', 'debug'),
+ 'cipher' => 'AES-256-CBC',
/*
|--------------------------------------------------------------------------
@@ -157,7 +155,7 @@
Illuminate\Pagination\PaginationServiceProvider::class,
Illuminate\Pipeline\PipelineServiceProvider::class,
Illuminate\Queue\QueueServiceProvider::class,
- Illuminate\Redis\RedisServiceProvider::class,
+ // Illuminate\Redis\RedisServiceProvider::class,
Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
Illuminate\Session\SessionServiceProvider::class,
Illuminate\Translation\TranslationServiceProvider::class,
@@ -167,8 +165,7 @@
/*
* Package Service Providers...
*/
- Mavinoo\Batch\BatchServiceProvider::class,
- Lab404\Impersonate\ImpersonateServiceProvider::class,
+
/*
* Application Service Providers...
*/
@@ -177,6 +174,15 @@
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
+
+ App\Providers\SchoolSessionServiceProvider::class,
+ App\Providers\SemesterServiceProvider::class,
+ App\Providers\AcademicSettingServiceProvider::class,
+ App\Providers\SchoolClassServiceProvider::class,
+ App\Providers\SectionServiceProvider::class,
+ App\Providers\CourseServiceProvider::class,
+ App\Providers\UserServiceProvider::class,
+ App\Providers\PurifySetupProvider::class,
],
/*
@@ -193,6 +199,7 @@
'aliases' => [
'App' => Illuminate\Support\Facades\App::class,
+ 'Arr' => Illuminate\Support\Arr::class,
'Artisan' => Illuminate\Support\Facades\Artisan::class,
'Auth' => Illuminate\Support\Facades\Auth::class,
'Blade' => Illuminate\Support\Facades\Blade::class,
@@ -202,30 +209,34 @@
'Config' => Illuminate\Support\Facades\Config::class,
'Cookie' => Illuminate\Support\Facades\Cookie::class,
'Crypt' => Illuminate\Support\Facades\Crypt::class,
+ 'Date' => Illuminate\Support\Facades\Date::class,
'DB' => Illuminate\Support\Facades\DB::class,
'Eloquent' => Illuminate\Database\Eloquent\Model::class,
'Event' => Illuminate\Support\Facades\Event::class,
'File' => Illuminate\Support\Facades\File::class,
'Gate' => Illuminate\Support\Facades\Gate::class,
'Hash' => Illuminate\Support\Facades\Hash::class,
+ 'Http' => Illuminate\Support\Facades\Http::class,
'Lang' => Illuminate\Support\Facades\Lang::class,
'Log' => Illuminate\Support\Facades\Log::class,
'Mail' => Illuminate\Support\Facades\Mail::class,
'Notification' => Illuminate\Support\Facades\Notification::class,
'Password' => Illuminate\Support\Facades\Password::class,
'Queue' => Illuminate\Support\Facades\Queue::class,
+ 'RateLimiter' => Illuminate\Support\Facades\RateLimiter::class,
'Redirect' => Illuminate\Support\Facades\Redirect::class,
- 'Redis' => Illuminate\Support\Facades\Redis::class,
+ // 'Redis' => Illuminate\Support\Facades\Redis::class,
'Request' => Illuminate\Support\Facades\Request::class,
'Response' => Illuminate\Support\Facades\Response::class,
'Route' => Illuminate\Support\Facades\Route::class,
'Schema' => Illuminate\Support\Facades\Schema::class,
'Session' => Illuminate\Support\Facades\Session::class,
'Storage' => Illuminate\Support\Facades\Storage::class,
+ 'Str' => Illuminate\Support\Str::class,
'URL' => Illuminate\Support\Facades\URL::class,
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
- 'Batch' => Mavinoo\Batch\BatchFacade::class,
+
],
];
diff --git a/config/auth.php b/config/auth.php
old mode 100755
new mode 100644
index f8a1194bd..ba1a4d8cb
--- a/config/auth.php
+++ b/config/auth.php
@@ -42,8 +42,9 @@
],
'api' => [
- 'driver' => 'passport',
+ 'driver' => 'token',
'provider' => 'users',
+ 'hash' => false,
],
],
@@ -67,7 +68,7 @@
'providers' => [
'users' => [
'driver' => 'eloquent',
- 'model' => App\User::class,
+ 'model' => App\Models\User::class,
],
// 'users' => [
@@ -96,7 +97,21 @@
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
+ 'throttle' => 60,
],
],
+ /*
+ |--------------------------------------------------------------------------
+ | Password Confirmation Timeout
+ |--------------------------------------------------------------------------
+ |
+ | Here you may define the amount of seconds before a password confirmation
+ | times out and the user is prompted to re-enter their password via the
+ | confirmation screen. By default, the timeout lasts for three hours.
+ |
+ */
+
+ 'password_timeout' => 10800,
+
];
diff --git a/config/broadcasting.php b/config/broadcasting.php
old mode 100755
new mode 100644
index 5eecd2b26..2d529820c
--- a/config/broadcasting.php
+++ b/config/broadcasting.php
@@ -11,7 +11,7 @@
| framework when an event needs to be broadcast. You may set this to
| any of the connections defined in the "connections" array below.
|
- | Supported: "pusher", "redis", "log", "null"
+ | Supported: "pusher", "ably", "redis", "log", "null"
|
*/
@@ -36,10 +36,16 @@
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
- //
+ 'cluster' => env('PUSHER_APP_CLUSTER'),
+ 'useTLS' => true,
],
],
+ 'ably' => [
+ 'driver' => 'ably',
+ 'key' => env('ABLY_KEY'),
+ ],
+
'redis' => [
'driver' => 'redis',
'connection' => 'default',
diff --git a/config/cache.php b/config/cache.php
old mode 100755
new mode 100644
index c492dcadc..8736c7a7a
--- a/config/cache.php
+++ b/config/cache.php
@@ -1,4 +1,5 @@
env('CACHE_DRIVER', 'file'),
@@ -27,6 +26,9 @@
| well as their drivers. You may even define multiple stores for the
| same cache driver to group types of items stored in your caches.
|
+ | Supported drivers: "apc", "array", "database", "file",
+ | "memcached", "redis", "dynamodb", "octane", "null"
+ |
*/
'stores' => [
@@ -37,12 +39,14 @@
'array' => [
'driver' => 'array',
+ 'serialize' => false,
],
'database' => [
'driver' => 'database',
'table' => 'cache',
'connection' => null,
+ 'lock_connection' => null,
],
'file' => [
@@ -58,7 +62,7 @@
env('MEMCACHED_PASSWORD'),
],
'options' => [
- // Memcached::OPT_CONNECT_TIMEOUT => 2000,
+ // Memcached::OPT_CONNECT_TIMEOUT => 2000,
],
'servers' => [
[
@@ -71,7 +75,21 @@
'redis' => [
'driver' => 'redis',
- 'connection' => 'default',
+ 'connection' => 'cache',
+ 'lock_connection' => 'default',
+ ],
+
+ 'dynamodb' => [
+ 'driver' => 'dynamodb',
+ 'key' => env('AWS_ACCESS_KEY_ID'),
+ 'secret' => env('AWS_SECRET_ACCESS_KEY'),
+ 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
+ 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
+ 'endpoint' => env('DYNAMODB_ENDPOINT'),
+ ],
+
+ 'octane' => [
+ 'driver' => 'octane',
],
],
diff --git a/config/cors.php b/config/cors.php
new file mode 100644
index 000000000..8a39e6daa
--- /dev/null
+++ b/config/cors.php
@@ -0,0 +1,34 @@
+ ['api/*', 'sanctum/csrf-cookie'],
+
+ 'allowed_methods' => ['*'],
+
+ 'allowed_origins' => ['*'],
+
+ 'allowed_origins_patterns' => [],
+
+ 'allowed_headers' => ['*'],
+
+ 'exposed_headers' => [],
+
+ 'max_age' => 0,
+
+ 'supports_credentials' => false,
+
+];
diff --git a/config/database.php b/config/database.php
old mode 100755
new mode 100644
index ef1379bd8..b42d9b30a
--- a/config/database.php
+++ b/config/database.php
@@ -1,5 +1,7 @@
[
'driver' => 'sqlite',
+ 'url' => env('DATABASE_URL'),
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
+ 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
],
'mysql' => [
'driver' => 'mysql',
+ 'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
@@ -50,12 +55,17 @@
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
- 'strict' => false,
+ 'prefix_indexes' => true,
+ 'strict' => true,
'engine' => null,
+ 'options' => extension_loaded('pdo_mysql') ? array_filter([
+ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
+ ]) : [],
],
'pgsql' => [
'driver' => 'pgsql',
+ 'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
@@ -63,12 +73,14 @@
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
+ 'prefix_indexes' => true,
'schema' => 'public',
'sslmode' => 'prefer',
],
'sqlsrv' => [
'driver' => 'sqlsrv',
+ 'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
@@ -76,12 +88,7 @@
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
- ],
-
- 'dusk_testing' => [
- 'driver' => 'sqlite',
- 'database' => database_path('database.sqlite'),
- 'prefix' => '',
+ 'prefix_indexes' => true,
],
],
@@ -105,20 +112,34 @@
|--------------------------------------------------------------------------
|
| Redis is an open source, fast, and advanced key-value store that also
- | provides a richer set of commands than a typical key-value systems
+ | provides a richer body of commands than a typical key-value system
| such as APC or Memcached. Laravel makes it easy to dig right in.
|
*/
'redis' => [
- 'client' => 'predis',
+ 'client' => env('REDIS_CLIENT', 'phpredis'),
+
+ 'options' => [
+ 'cluster' => env('REDIS_CLUSTER', 'redis'),
+ 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
+ ],
'default' => [
+ 'url' => env('REDIS_URL'),
+ 'host' => env('REDIS_HOST', '127.0.0.1'),
+ 'password' => env('REDIS_PASSWORD', null),
+ 'port' => env('REDIS_PORT', '6379'),
+ 'database' => env('REDIS_DB', '0'),
+ ],
+
+ 'cache' => [
+ 'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
- 'port' => env('REDIS_PORT', 6379),
- 'database' => 0,
+ 'port' => env('REDIS_PORT', '6379'),
+ 'database' => env('REDIS_CACHE_DB', '1'),
],
],
diff --git a/config/filesystems.php b/config/filesystems.php
old mode 100755
new mode 100644
index 7c81c8def..64ef5391b
--- a/config/filesystems.php
+++ b/config/filesystems.php
@@ -15,19 +15,6 @@
'default' => env('FILESYSTEM_DRIVER', 'local'),
- /*
- |--------------------------------------------------------------------------
- | Default Cloud Filesystem Disk
- |--------------------------------------------------------------------------
- |
- | Many applications store files both locally and in the cloud. For this
- | reason, you may specify a default "cloud" driver here. This driver
- | will be bound as the Cloud disk implementation in the container.
- |
- */
-
- 'cloud' => env('FILESYSTEM_CLOUD', 's3'),
-
/*
|--------------------------------------------------------------------------
| Filesystem Disks
@@ -37,7 +24,7 @@
| may even configure multiple disks of the same driver. Defaults have
| been setup for each driver as an example of the required options.
|
- | Supported Drivers: "local", "ftp", "s3", "rackspace"
+ | Supported Drivers: "local", "ftp", "sftp", "s3"
|
*/
@@ -50,7 +37,8 @@
'public' => [
'driver' => 'local',
- 'root' => public_path('storage'),//storage_path('app/public'),
+ // 'root' => storage_path('app/public'),
+ 'root' => public_path('storage'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
@@ -61,8 +49,26 @@
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
+ 'url' => env('AWS_URL'),
+ 'endpoint' => env('AWS_ENDPOINT'),
+ 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
],
],
+ /*
+ |--------------------------------------------------------------------------
+ | Symbolic Links
+ |--------------------------------------------------------------------------
+ |
+ | Here you may configure the symbolic links that will be created when the
+ | `storage:link` Artisan command is executed. The array keys should be
+ | the locations of the links and the values should be their targets.
+ |
+ */
+
+ 'links' => [
+ public_path('storage') => storage_path('app/public'),
+ ],
+
];
diff --git a/config/hashing.php b/config/hashing.php
new file mode 100644
index 000000000..842577087
--- /dev/null
+++ b/config/hashing.php
@@ -0,0 +1,52 @@
+ 'bcrypt',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Bcrypt Options
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify the configuration options that should be used when
+ | passwords are hashed using the Bcrypt algorithm. This will allow you
+ | to control the amount of time it takes to hash the given password.
+ |
+ */
+
+ 'bcrypt' => [
+ 'rounds' => env('BCRYPT_ROUNDS', 10),
+ ],
+
+ /*
+ |--------------------------------------------------------------------------
+ | Argon Options
+ |--------------------------------------------------------------------------
+ |
+ | Here you may specify the configuration options that should be used when
+ | passwords are hashed using the Argon algorithm. These will allow you
+ | to control the amount of time it takes to hash the given password.
+ |
+ */
+
+ 'argon' => [
+ 'memory' => 1024,
+ 'threads' => 2,
+ 'time' => 2,
+ ],
+
+];
diff --git a/config/logging.php b/config/logging.php
new file mode 100644
index 000000000..1aa06aa30
--- /dev/null
+++ b/config/logging.php
@@ -0,0 +1,105 @@
+ env('LOG_CHANNEL', 'stack'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Log Channels
+ |--------------------------------------------------------------------------
+ |
+ | Here you may configure the log channels for your application. Out of
+ | the box, Laravel uses the Monolog PHP logging library. This gives
+ | you a variety of powerful log handlers / formatters to utilize.
+ |
+ | Available Drivers: "single", "daily", "slack", "syslog",
+ | "errorlog", "monolog",
+ | "custom", "stack"
+ |
+ */
+
+ 'channels' => [
+ 'stack' => [
+ 'driver' => 'stack',
+ 'channels' => ['single'],
+ 'ignore_exceptions' => false,
+ ],
+
+ 'single' => [
+ 'driver' => 'single',
+ 'path' => storage_path('logs/laravel.log'),
+ 'level' => env('LOG_LEVEL', 'debug'),
+ ],
+
+ 'daily' => [
+ 'driver' => 'daily',
+ 'path' => storage_path('logs/laravel.log'),
+ 'level' => env('LOG_LEVEL', 'debug'),
+ 'days' => 14,
+ ],
+
+ 'slack' => [
+ 'driver' => 'slack',
+ 'url' => env('LOG_SLACK_WEBHOOK_URL'),
+ 'username' => 'Laravel Log',
+ 'emoji' => ':boom:',
+ 'level' => env('LOG_LEVEL', 'critical'),
+ ],
+
+ 'papertrail' => [
+ 'driver' => 'monolog',
+ 'level' => env('LOG_LEVEL', 'debug'),
+ 'handler' => SyslogUdpHandler::class,
+ 'handler_with' => [
+ 'host' => env('PAPERTRAIL_URL'),
+ 'port' => env('PAPERTRAIL_PORT'),
+ ],
+ ],
+
+ 'stderr' => [
+ 'driver' => 'monolog',
+ 'level' => env('LOG_LEVEL', 'debug'),
+ 'handler' => StreamHandler::class,
+ 'formatter' => env('LOG_STDERR_FORMATTER'),
+ 'with' => [
+ 'stream' => 'php://stderr',
+ ],
+ ],
+
+ 'syslog' => [
+ 'driver' => 'syslog',
+ 'level' => env('LOG_LEVEL', 'debug'),
+ ],
+
+ 'errorlog' => [
+ 'driver' => 'errorlog',
+ 'level' => env('LOG_LEVEL', 'debug'),
+ ],
+
+ 'null' => [
+ 'driver' => 'monolog',
+ 'handler' => NullHandler::class,
+ ],
+
+ 'emergency' => [
+ 'path' => storage_path('logs/laravel.log'),
+ ],
+ ],
+
+];
diff --git a/config/mail.php b/config/mail.php
old mode 100755
new mode 100644
index bb92224c5..54299aabf
--- a/config/mail.php
+++ b/config/mail.php
@@ -4,45 +4,73 @@
/*
|--------------------------------------------------------------------------
- | Mail Driver
+ | Default Mailer
|--------------------------------------------------------------------------
|
- | Laravel supports both SMTP and PHP's "mail" function as drivers for the
- | sending of e-mail. You may specify which one you're using throughout
- | your application here. By default, Laravel is setup for SMTP mail.
- |
- | Supported: "smtp", "sendmail", "mailgun", "mandrill", "ses",
- | "sparkpost", "log", "array"
+ | This option controls the default mailer that is used to send any email
+ | messages sent by your application. Alternative mailers may be setup
+ | and used as needed; however, this mailer will be used by default.
|
*/
- 'driver' => env('MAIL_DRIVER', 'smtp'),
+ 'default' => env('MAIL_MAILER', 'smtp'),
/*
|--------------------------------------------------------------------------
- | SMTP Host Address
+ | Mailer Configurations
|--------------------------------------------------------------------------
|
- | Here you may provide the host address of the SMTP server used by your
- | applications. A default option is provided that is compatible with
- | the Mailgun mail service which will provide reliable deliveries.
+ | Here you may configure all of the mailers used by your application plus
+ | their respective settings. Several examples have been configured for
+ | you and you are free to add your own as your application requires.
|
- */
-
- 'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
-
- /*
- |--------------------------------------------------------------------------
- | SMTP Host Port
- |--------------------------------------------------------------------------
+ | Laravel supports a variety of mail "transport" drivers to be used while
+ | sending an e-mail. You will specify which one you are using for your
+ | mailers below. You are free to add additional mailers as required.
|
- | This is the SMTP port used by your application to deliver e-mails to
- | users of the application. Like the host we have set this value to
- | stay compatible with the Mailgun e-mail application by default.
+ | Supported: "smtp", "sendmail", "mailgun", "ses",
+ | "postmark", "log", "array"
|
*/
- 'port' => env('MAIL_PORT', 587),
+ 'mailers' => [
+ 'smtp' => [
+ 'transport' => 'smtp',
+ 'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
+ 'port' => env('MAIL_PORT', 587),
+ 'encryption' => env('MAIL_ENCRYPTION', 'tls'),
+ 'username' => env('MAIL_USERNAME'),
+ 'password' => env('MAIL_PASSWORD'),
+ 'timeout' => null,
+ 'auth_mode' => null,
+ ],
+
+ 'ses' => [
+ 'transport' => 'ses',
+ ],
+
+ 'mailgun' => [
+ 'transport' => 'mailgun',
+ ],
+
+ 'postmark' => [
+ 'transport' => 'postmark',
+ ],
+
+ 'sendmail' => [
+ 'transport' => 'sendmail',
+ 'path' => '/usr/sbin/sendmail -bs',
+ ],
+
+ 'log' => [
+ 'transport' => 'log',
+ 'channel' => env('MAIL_LOG_CHANNEL'),
+ ],
+
+ 'array' => [
+ 'transport' => 'array',
+ ],
+ ],
/*
|--------------------------------------------------------------------------
@@ -60,47 +88,6 @@
'name' => env('MAIL_FROM_NAME', 'Example'),
],
- /*
- |--------------------------------------------------------------------------
- | E-Mail Encryption Protocol
- |--------------------------------------------------------------------------
- |
- | Here you may specify the encryption protocol that should be used when
- | the application send e-mail messages. A sensible default using the
- | transport layer security protocol should provide great security.
- |
- */
-
- 'encryption' => env('MAIL_ENCRYPTION', 'tls'),
-
- /*
- |--------------------------------------------------------------------------
- | SMTP Server Username
- |--------------------------------------------------------------------------
- |
- | If your SMTP server requires a username for authentication, you should
- | set it here. This will get used to authenticate with your server on
- | connection. You may also set the "password" value below this one.
- |
- */
-
- 'username' => env('MAIL_USERNAME'),
-
- 'password' => env('MAIL_PASSWORD'),
-
- /*
- |--------------------------------------------------------------------------
- | Sendmail System Path
- |--------------------------------------------------------------------------
- |
- | When using the "sendmail" driver to send e-mails, we will need to know
- | the path to where Sendmail lives on this server. A default path has
- | been provided here, which will work well on most of your systems.
- |
- */
-
- 'sendmail' => '/usr/sbin/sendmail -bs',
-
/*
|--------------------------------------------------------------------------
| Markdown Mail Settings
diff --git a/config/permission.php b/config/permission.php
new file mode 100644
index 000000000..1a4207e6c
--- /dev/null
+++ b/config/permission.php
@@ -0,0 +1,143 @@
+ [
+
+ /*
+ * When using the "HasPermissions" trait from this package, we need to know which
+ * Eloquent model should be used to retrieve your permissions. Of course, it
+ * is often just the "Permission" model but you may use whatever you like.
+ *
+ * The model you want to use as a Permission model needs to implement the
+ * `Spatie\Permission\Contracts\Permission` contract.
+ */
+
+ 'permission' => Spatie\Permission\Models\Permission::class,
+
+ /*
+ * When using the "HasRoles" trait from this package, we need to know which
+ * Eloquent model should be used to retrieve your roles. Of course, it
+ * is often just the "Role" model but you may use whatever you like.
+ *
+ * The model you want to use as a Role model needs to implement the
+ * `Spatie\Permission\Contracts\Role` contract.
+ */
+
+ 'role' => Spatie\Permission\Models\Role::class,
+
+ ],
+
+ 'table_names' => [
+
+ /*
+ * When using the "HasRoles" trait from this package, we need to know which
+ * table should be used to retrieve your roles. We have chosen a basic
+ * default value but you may easily change it to any table you like.
+ */
+
+ 'roles' => 'roles',
+
+ /*
+ * When using the "HasPermissions" trait from this package, we need to know which
+ * table should be used to retrieve your permissions. We have chosen a basic
+ * default value but you may easily change it to any table you like.
+ */
+
+ 'permissions' => 'permissions',
+
+ /*
+ * When using the "HasPermissions" trait from this package, we need to know which
+ * table should be used to retrieve your models permissions. We have chosen a
+ * basic default value but you may easily change it to any table you like.
+ */
+
+ 'model_has_permissions' => 'model_has_permissions',
+
+ /*
+ * When using the "HasRoles" trait from this package, we need to know which
+ * table should be used to retrieve your models roles. We have chosen a
+ * basic default value but you may easily change it to any table you like.
+ */
+
+ 'model_has_roles' => 'model_has_roles',
+
+ /*
+ * When using the "HasRoles" trait from this package, we need to know which
+ * table should be used to retrieve your roles permissions. We have chosen a
+ * basic default value but you may easily change it to any table you like.
+ */
+
+ 'role_has_permissions' => 'role_has_permissions',
+ ],
+
+ 'column_names' => [
+
+ /*
+ * Change this if you want to name the related model primary key other than
+ * `model_id`.
+ *
+ * For example, this would be nice if your primary keys are all UUIDs. In
+ * that case, name this `model_uuid`.
+ */
+
+ 'model_morph_key' => 'model_id',
+ ],
+
+ /*
+ * When set to true, the required permission names are added to the exception
+ * message. This could be considered an information leak in some contexts, so
+ * the default setting is false here for optimum safety.
+ */
+
+ 'display_permission_in_exception' => false,
+
+ /*
+ * When set to true, the required role names are added to the exception
+ * message. This could be considered an information leak in some contexts, so
+ * the default setting is false here for optimum safety.
+ */
+
+ 'display_role_in_exception' => false,
+
+ /*
+ * By default wildcard permission lookups are disabled.
+ */
+
+ 'enable_wildcard_permission' => false,
+
+ 'cache' => [
+
+ /*
+ * By default all permissions are cached for 24 hours to speed up performance.
+ * When permissions or roles are updated the cache is flushed automatically.
+ */
+
+ 'expiration_time' => \DateInterval::createFromDateString('24 hours'),
+
+ /*
+ * The cache key used to store all permissions.
+ */
+
+ 'key' => 'spatie.permission.cache',
+
+ /*
+ * When checking for a permission against a model by passing a Permission
+ * instance to the check, this key determines what attribute on the
+ * Permissions model is used to cache against.
+ *
+ * Ideally, this should match your preferred way of checking permissions, eg:
+ * `$user->can('view-posts')` would be 'name'.
+ */
+
+ 'model_key' => 'name',
+
+ /*
+ * You may optionally indicate a specific cache driver to use for permission and
+ * role caching using any of the `store` drivers listed in the cache.php config
+ * file. Using 'default' here means to use the `default` set in cache.php.
+ */
+
+ 'store' => 'default',
+ ],
+];
diff --git a/config/purify.php b/config/purify.php
index 2089d15ca..3ee8a0eda 100644
--- a/config/purify.php
+++ b/config/purify.php
@@ -67,7 +67,7 @@
|
*/
- 'HTML.Allowed' => 'h1,h2,h3,h4,h5,h6,b,strong,i,em,a[href|title],ul,ol,li,p[style],br,span,img[width|height|alt|src]',
+ 'HTML.Allowed' => 'h1,h2,h3,h4,h5,h6,b,strong,i,em,a[href|title],ul,ol,li,p[style],br,span,img[width|height|alt|src],figure[class],table,tr,th,td',
/*
|--------------------------------------------------------------------------
diff --git a/config/queue.php b/config/queue.php
old mode 100755
new mode 100644
index 4d83ebd0c..25ea5a819
--- a/config/queue.php
+++ b/config/queue.php
@@ -4,18 +4,16 @@
/*
|--------------------------------------------------------------------------
- | Default Queue Driver
+ | Default Queue Connection Name
|--------------------------------------------------------------------------
|
| Laravel's queue API supports an assortment of back-ends via a single
| API, giving you convenient access to each back-end using the same
- | syntax for each one. Here you may set the default queue driver.
- |
- | Supported: "sync", "database", "beanstalkd", "sqs", "redis", "null"
+ | syntax for every one. Here you may define a default connection.
|
*/
- 'default' => env('QUEUE_DRIVER', 'sync'),
+ 'default' => env('QUEUE_CONNECTION', 'sync'),
/*
|--------------------------------------------------------------------------
@@ -26,6 +24,8 @@
| is used by your application. A default configuration has been added
| for each back-end shipped with Laravel. You are free to add more.
|
+ | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null"
+ |
*/
'connections' => [
@@ -39,6 +39,7 @@
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
+ 'after_commit' => false,
],
'beanstalkd' => [
@@ -46,22 +47,28 @@
'host' => 'localhost',
'queue' => 'default',
'retry_after' => 90,
+ 'block_for' => 0,
+ 'after_commit' => false,
],
'sqs' => [
'driver' => 'sqs',
- 'key' => 'your-public-key',
- 'secret' => 'your-secret-key',
- 'prefix' => 'https://sqs.us-east-1.amazonaws.com/your-account-id',
- 'queue' => 'your-queue-name',
- 'region' => 'us-east-1',
+ 'key' => env('AWS_ACCESS_KEY_ID'),
+ 'secret' => env('AWS_SECRET_ACCESS_KEY'),
+ 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
+ 'queue' => env('SQS_QUEUE', 'default'),
+ 'suffix' => env('SQS_SUFFIX'),
+ 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
+ 'after_commit' => false,
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
- 'queue' => 'default',
+ 'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => 90,
+ 'block_for' => null,
+ 'after_commit' => false,
],
],
@@ -78,6 +85,7 @@
*/
'failed' => [
+ 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'failed_jobs',
],
diff --git a/config/services.php b/config/services.php
old mode 100755
new mode 100644
index 4460f0ec2..2a1d616c7
--- a/config/services.php
+++ b/config/services.php
@@ -8,31 +8,26 @@
|--------------------------------------------------------------------------
|
| This file is for storing the credentials for third party services such
- | as Stripe, Mailgun, SparkPost and others. This file provides a sane
- | default location for this type of information, allowing packages
- | to have a conventional place to find your various credentials.
+ | as Mailgun, Postmark, AWS and more. This file provides the de facto
+ | location for this type of information, allowing packages to have
+ | a conventional file to locate the various service credentials.
|
*/
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
+ 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
],
- 'ses' => [
- 'key' => env('SES_KEY'),
- 'secret' => env('SES_SECRET'),
- 'region' => 'us-east-1',
- ],
-
- 'sparkpost' => [
- 'secret' => env('SPARKPOST_SECRET'),
+ 'postmark' => [
+ 'token' => env('POSTMARK_TOKEN'),
],
- 'stripe' => [
- 'model' => App\User::class,
- 'key' => env('STRIPE_KEY'),
- 'secret' => env('STRIPE_SECRET'),
+ 'ses' => [
+ 'key' => env('AWS_ACCESS_KEY_ID'),
+ 'secret' => env('AWS_SECRET_ACCESS_KEY'),
+ 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
];
diff --git a/config/session.php b/config/session.php
old mode 100755
new mode 100644
index 0be66abab..ac0802b19
--- a/config/session.php
+++ b/config/session.php
@@ -1,4 +1,5 @@
null,
+ 'connection' => env('SESSION_CONNECTION', null),
/*
|--------------------------------------------------------------------------
@@ -91,13 +92,15 @@
| Session Cache Store
|--------------------------------------------------------------------------
|
- | When using the "apc" or "memcached" session drivers, you may specify a
- | cache store that should be used for these sessions. This value must
- | correspond with one of the application's configured cache stores.
+ | While using one of the framework's cache driven session backends you may
+ | list a cache store that should be used for these sessions. This value
+ | must match with one of the application's configured cache "stores".
+ |
+ | Affects: "apc", "dynamodb", "memcached", "redis"
|
*/
- 'store' => null,
+ 'store' => env('SESSION_STORE', null),
/*
|--------------------------------------------------------------------------
@@ -161,11 +164,11 @@
|
| By setting this option to true, session cookies will only be sent back
| to the server if the browser has a HTTPS connection. This will keep
- | the cookie from being sent to you if it can not be done securely.
+ | the cookie from being sent to you when it can't be done securely.
|
*/
- 'secure' => env('SESSION_SECURE_COOKIE', false),
+ 'secure' => env('SESSION_SECURE_COOKIE'),
/*
|--------------------------------------------------------------------------
@@ -187,12 +190,12 @@
|
| This option determines how your cookies behave when cross-site requests
| take place, and can be used to mitigate CSRF attacks. By default, we
- | do not enable this as other CSRF protection services are in place.
+ | will set this value to "lax" since this is a secure default value.
|
- | Supported: "lax", "strict"
+ | Supported: "lax", "strict", "none", null
|
*/
- 'same_site' => null,
+ 'same_site' => 'lax',
];
diff --git a/config/view.php b/config/view.php
old mode 100755
new mode 100644
index 2acfd9cc9..22b8a18d3
--- a/config/view.php
+++ b/config/view.php
@@ -28,6 +28,9 @@
|
*/
- 'compiled' => realpath(storage_path('framework/views')),
+ 'compiled' => env(
+ 'VIEW_COMPILED_PATH',
+ realpath(storage_path('framework/views'))
+ ),
];
diff --git a/database/.gitignore b/database/.gitignore
old mode 100755
new mode 100644
index 9b1dffd90..9b19b93c9
--- a/database/.gitignore
+++ b/database/.gitignore
@@ -1 +1 @@
-*.sqlite
+*.sqlite*
diff --git a/database/factories/AcademicSettingFactory.php b/database/factories/AcademicSettingFactory.php
new file mode 100644
index 000000000..b55fcf67a
--- /dev/null
+++ b/database/factories/AcademicSettingFactory.php
@@ -0,0 +1,29 @@
+ 'section',
+ 'marks_submission_status' => 'off',
+ ];
+ }
+}
diff --git a/database/factories/AccountFactory.php b/database/factories/AccountFactory.php
deleted file mode 100755
index f642e9a2b..000000000
--- a/database/factories/AccountFactory.php
+++ /dev/null
@@ -1,25 +0,0 @@
-define(Account::class, function (Faker $faker) {
- return [
- 'name' => $faker->name,
- 'type' => $faker->randomElement(['income','expense']),
- 'amount' => $faker->randomNumber(4, false),
- 'description' => $faker->sentences(3, true),
- 'school_id' => function() use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('id')->toArray());
- else return factory(School::class)->create()->id;
- },
- 'user_id' => function() use ($faker) {
- if (User::where('role', 'accountant')->count())
- return $faker->randomElement(User::where('role', 'accountant')->pluck('id')->toArray());
- else return factory(User::class)->states('accountant')->create()->id;
- }
- ];
-});
diff --git a/database/factories/AccountSectorFactory.php b/database/factories/AccountSectorFactory.php
deleted file mode 100755
index 54ab5b781..000000000
--- a/database/factories/AccountSectorFactory.php
+++ /dev/null
@@ -1,23 +0,0 @@
-define(AccountSector::class, function (Faker $faker) {
- return [
- 'name' => $faker->catchPhrase,
- 'type' => $faker->randomElement(['income','expense']),
- 'school_id' => function () use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('id')->toArray());
- else return factory(School::class)->create()->id;
- },
- 'user_id' => function() use ($faker) {
- if (User::where('role','accountant')->count())
- return $faker->randomElement(User::where('role','accountant')->pluck('id')->toArray());
- else return factory(User::class)->states('accountant')->create()->id;
- },
- ];
-});
diff --git a/database/factories/AssignedTeacherFactory.php b/database/factories/AssignedTeacherFactory.php
new file mode 100644
index 000000000..5594bee3e
--- /dev/null
+++ b/database/factories/AssignedTeacherFactory.php
@@ -0,0 +1,28 @@
+define(Attendance::class, function (Faker $faker) {
- return [
- 'present' => $faker->randomElement([0,1,2]),
- 'student_id' => function () use ($faker) {
- if (User::student()->count())
- return $faker->randomElement(User::student()->take(10)->pluck('id')->toArray());
- else return factory(User::class)->create(['role' => 'student'])->id;
- },
- 'section_id' => function () use ($faker) {
- if (Section::count())
- return $faker->randomElement(Section::pluck('id')->toArray());
- else return factory(Section::class)->create()->id;
- },
- 'exam_id' => function () use ($faker) {
- if (Exam::count())
- return $faker->randomElement(Exam::bySchool($faker->randomElement(School::pluck('id')->toArray()))->pluck('id')->toArray());
- else return factory(Exam::class)->create()->id;
- },
- 'user_id' => function () use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- },
- ];
-});
+use App\Models\Attendance;
+use Illuminate\Database\Eloquent\Factories\Factory;
+
+class AttendanceFactory extends Factory
+{
+ /**
+ * The name of the factory's corresponding model.
+ *
+ * @var string
+ */
+ protected $model = Attendance::class;
+
+ /**
+ * Define the model's default state.
+ *
+ * @return array
+ */
+ public function definition()
+ {
+ return [
+ //
+ ];
+ }
+}
diff --git a/database/factories/BookFactory.php b/database/factories/BookFactory.php
deleted file mode 100755
index 946f64a8e..000000000
--- a/database/factories/BookFactory.php
+++ /dev/null
@@ -1,38 +0,0 @@
-define(Book::class, function (Faker $faker) {
- return [
- 'book_code' => 'bk'.$faker->unique()->randomNumber(7, false),
- 'title' => $faker->sentences(1, true),
- 'author' => $faker->name,
- 'quantity' => $faker->randomElement([5,8,19,13,34]),
- 'rackNo' => $faker->randomElement([1,2,3,4,5,6,7,8,9,10,11,12]),
- 'rowNo' => $faker->randomElement([1,2,3,4,5,6,7,8,9,10,11,12]),
- 'type' => $faker->randomElement(['Academic','Magazine','Story','Other']),
- 'img_path' => $faker->imageUrl($width = 150, $height = 150, 'cats'),
- 'about' => $faker->sentences(3, true),
- 'price' => $faker->randomNumber,
- 'class_id' => function() use ($faker) {
- if (Myclass::count() > 0) {
- return $faker->randomElement(Myclass::pluck('id')->toArray());
- } else return factory(Myclass::class)->create()->id;
- },
- 'school_id' => function() use ($faker) {
- if (School::count() > 0) {
- return $faker->randomElement(School::pluck('id')->toArray());
- } else return factory(School::class)->create()->id;
- },
- 'user_id' => function() use ($faker) {
- if (User::where('role','librarian')->count() > 0) {
- return $faker->randomElement(User::where('role','librarian')->pluck('id')->toArray());
- } else
- return factory(User::class)->states('librarian')->create()->id;
- }
- ];
-});
diff --git a/database/factories/CertificateFactory.php b/database/factories/CertificateFactory.php
deleted file mode 100755
index a5dcf1415..000000000
--- a/database/factories/CertificateFactory.php
+++ /dev/null
@@ -1,25 +0,0 @@
-define(Certificate::class, function (Faker $faker) {
- return [
- 'file_path' => $faker->url,
- 'title' => $faker->sentences(1, true),
- 'given_to' => $faker->randomElement(User::where('role', 'student')->pluck('student_code')->toArray()),
- 'active' => $faker->randomElement([0, 1]),
- 'school_id' => function() use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('id')->toArray());
- else return factory(School::class)->create()->id;
- },
- 'user_id' => function() use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- },
- ];
-});
diff --git a/database/factories/CourseFactory.php b/database/factories/CourseFactory.php
old mode 100755
new mode 100644
index 30b60c7fc..6d8dd36d3
--- a/database/factories/CourseFactory.php
+++ b/database/factories/CourseFactory.php
@@ -1,68 +1,28 @@
define(Course::class, function (Faker $faker) {
- return [
- 'course_name' => $faker->words(3, true),
- 'class_id' => function () use ($faker) {
- if (Myclass::count())
- return $faker->randomElement(Myclass::pluck('id')->toArray());
- else return factory(Myclass::class)->create()->id;
- },
- 'course_type' => $faker->randomElement(['Core','Elective']),
- 'course_time' => $faker->randomElement(['9:30AM-10:20AM','12:50PM-01:40PM']),
- 'school_id' => function () use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('id')->toArray());
- else return factory(School::class)->create()->id;
- },
- 'teacher_id' => function () use ($faker) {
- if (User::where('role', 'teacher')->count())
- return $faker->randomElement(User::where('role', 'teacher')->take(10)->pluck('id')->toArray());
- else return factory(User::class)->create(['role' => 'teacher'])->id;
- },
- 'section_id' => function () use ($faker) {
- if (Section::count())
- return $faker->randomElement(Section::pluck('id')->toArray());
- else return factory(Section::class)->create()->id;
- },
- 'grade_system_name' => function () use ($faker) {
- if (Gradesystem::count())
- return $faker->randomElement(Gradesystem::pluck('grade_system_name')->toArray());
- else return factory(Gradesystem::class)->create()->grade_system_name;
- },
- 'exam_id' => function () use ($faker) {
- if (Exam::count())
- return $faker->randomElement(Exam::pluck('id')->toArray());
- else return factory(Exam::class)->create()->id;
- },
- 'quiz_count' => $faker->randomElement([1,2,3,4,5]),
- 'assignment_count' => $faker->randomElement([1,2,3]),
- 'ct_count' => $faker->randomElement([1,2,3,4,5]),
- 'quiz_percent' => 10,
- 'attendance_percent' => 5,
- 'assignment_percent' => 15,
- 'ct_percent' => 10,
- 'final_exam_percent' => 50,
- 'practical_percent' => 25,
- 'att_fullmark' => 5,
- 'quiz_fullmark' => 15,
- 'a_fullmark' => 20,
- 'ct_fullmark' => 15,
- 'final_fullmark' => 100,
- 'practical_fullmark' => 30,
- 'user_id' => function () use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- },
- ];
-});
+use App\Models\Course;
+use Illuminate\Database\Eloquent\Factories\Factory;
+
+class CourseFactory extends Factory
+{
+ /**
+ * The name of the factory's corresponding model.
+ *
+ * @var string
+ */
+ protected $model = Course::class;
+
+ /**
+ * Define the model's default state.
+ *
+ * @return array
+ */
+ public function definition()
+ {
+ return [
+ //
+ ];
+ }
+}
diff --git a/database/factories/DepartmentFactory.php b/database/factories/DepartmentFactory.php
deleted file mode 100755
index 74701a6d8..000000000
--- a/database/factories/DepartmentFactory.php
+++ /dev/null
@@ -1,16 +0,0 @@
-define(Department::class, function (Faker $faker) {
- return [
- 'school_id' => function () use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('id')->toArray());
- else return factory(School::class)->create()->id;
- },
- 'department_name' => $faker->randomElement(['Bangla','English','Math']),
- ];
-});
diff --git a/database/factories/EventFactory.php b/database/factories/EventFactory.php
old mode 100755
new mode 100644
index 6c8c2e160..ca4a3f964
--- a/database/factories/EventFactory.php
+++ b/database/factories/EventFactory.php
@@ -1,21 +1,28 @@
define(Event::class, function (Faker $faker) {
- return [
- 'file_path' => $faker->url,
- 'title' => $faker->sentences(1, true),
- 'description' => $faker->sentences(3, true),
- 'active' => $faker->randomElement([0, 1]),
- 'school_id' => $faker->randomElement(School::pluck('id')->toArray()),
- 'user_id' => function() use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- },
- ];
-});
+use App\Models\Event;
+use Illuminate\Database\Eloquent\Factories\Factory;
+
+class EventFactory extends Factory
+{
+ /**
+ * The name of the factory's corresponding model.
+ *
+ * @var string
+ */
+ protected $model = Event::class;
+
+ /**
+ * Define the model's default state.
+ *
+ * @return array
+ */
+ public function definition()
+ {
+ return [
+ //
+ ];
+ }
+}
diff --git a/database/factories/ExamFactory.php b/database/factories/ExamFactory.php
old mode 100755
new mode 100644
index 82a0e9960..24330ce97
--- a/database/factories/ExamFactory.php
+++ b/database/factories/ExamFactory.php
@@ -1,31 +1,28 @@
define(Exam::class, function (Faker $faker) {
- return [
- 'exam_name' => $faker->words(3, true),
- 'school_id' => function() use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('id')->toArray());
- else return factory(School::class)->create()->id;
- },
- 'term' => $faker->text(20),
- 'active' => $faker->randomElement([0,1]),
- 'start_date' => $faker->dateTime()->format('Y-m-d H:i:s'),
- 'end_date' => $faker->dateTime()->format('Y-m-d H:i:s'),
- 'notice_published' => $faker->randomElement([0,1]),
- 'result_published' => $faker->randomElement([0,1]),
- 'user_id' => function() use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- },
- 'created_at' => Carbon::now(),
- 'updated_at' => Carbon::now(),
- ];
-});
+use App\Models\Exam;
+use Illuminate\Database\Eloquent\Factories\Factory;
+
+class ExamFactory extends Factory
+{
+ /**
+ * The name of the factory's corresponding model.
+ *
+ * @var string
+ */
+ protected $model = Exam::class;
+
+ /**
+ * Define the model's default state.
+ *
+ * @return array
+ */
+ public function definition()
+ {
+ return [
+ //
+ ];
+ }
+}
diff --git a/database/factories/ExamForClassFactory.php b/database/factories/ExamForClassFactory.php
deleted file mode 100755
index 7a0f3776c..000000000
--- a/database/factories/ExamForClassFactory.php
+++ /dev/null
@@ -1,14 +0,0 @@
-define(ExamForClass::class, function (Faker $faker) {
- return [
- 'class_id' => $faker->randomElement(Myclass::pluck('id')->toArray()),
- 'exam_id' => $faker->randomElement(Exam::where('active', 1)->pluck('id')->toArray()),
- 'active' => $faker->randomElement([0, 1]),
- ];
-});
diff --git a/database/factories/ExamRuleFactory.php b/database/factories/ExamRuleFactory.php
new file mode 100644
index 000000000..5e25df9e0
--- /dev/null
+++ b/database/factories/ExamRuleFactory.php
@@ -0,0 +1,28 @@
+define(Faq::class, function (Faker $faker) {
- return [
- 'question' => $faker->sentence(6, true),
- 'answer' => $faker->sentences(3, true),
- 'user_id' => function () use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- },
- ];
-});
diff --git a/database/factories/FeeFactory.php b/database/factories/FeeFactory.php
deleted file mode 100755
index 215dbada9..000000000
--- a/database/factories/FeeFactory.php
+++ /dev/null
@@ -1,36 +0,0 @@
-define(Fee::class, function (Faker $faker) {
- return [
- 'fee_name' => $faker->name,
- 'school_id' => function() use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('id')->toArray());
- else return factory(School::class)->create()->id;
- },
- 'user_id' => function() use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- },
- ];
-});
-
-// 'admission_fee' => $faker->randomNumber,
-// 'tution_fee' => $faker->randomNumber,
-// 'fine_fee' => $faker->randomNumber,
-// 'exam_fee' => $faker->randomNumber,
-// 'registration_fee' => $faker->randomNumber,
-// 'library_fee' => $faker->randomNumber,
-// 'lab_fee' => $faker->randomNumber,
-// 'sport_fee' => $faker->randomNumber,
-// 'late_payment_fee' => $faker->randomNumber,
-// 'maintenance_fee' => $faker->randomNumber,
-// 'internet_fee' => $faker->randomNumber,
-// 'farewell_fee' => $faker->randomNumber,
-// 'other_fee' => $faker->randomNumber,
diff --git a/database/factories/FeedbackFactory.php b/database/factories/FeedbackFactory.php
deleted file mode 100755
index c3e363550..000000000
--- a/database/factories/FeedbackFactory.php
+++ /dev/null
@@ -1,13 +0,0 @@
-define(Feedback::class, function (Faker $faker) {
- return [
- 'description' => $faker->sentences(3, true),
- 'student_id' => $faker->randomElement(User::student()->pluck('id')->toArray()),
- 'teacher_id' => $faker->randomElement(User::where('role', 'teacher')->pluck('id')->toArray())
- ];
-});
diff --git a/database/factories/FinalMarkFactory.php b/database/factories/FinalMarkFactory.php
new file mode 100644
index 000000000..f244acc48
--- /dev/null
+++ b/database/factories/FinalMarkFactory.php
@@ -0,0 +1,28 @@
+define(Form::class, function (Faker $faker) {
- return [
- 'name' => $faker->name,
- 'file_path' => $faker->url,
- 'school_id' => factory(School::class)->create()->id,
- 'user_id' => function() use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- },
- ];
-});
diff --git a/database/factories/GradeFactory.php b/database/factories/GradeFactory.php
deleted file mode 100755
index 377a17f43..000000000
--- a/database/factories/GradeFactory.php
+++ /dev/null
@@ -1,56 +0,0 @@
-define(Grade::class, function (Faker $faker) {
- return [
- 'gpa' => $faker->randomNumber(1, false),
- 'marks' => $faker->randomNumber(2, false),
- 'attendance' => 5,
- 'quiz1' => $faker->randomNumber(2, false),
- 'quiz2' => $faker->randomNumber(2, false),
- 'quiz3' => $faker->randomNumber(2, false),
- 'quiz4' => $faker->randomNumber(2, false),
- 'quiz5' => $faker->randomNumber(2, false),
- 'ct1' => $faker->randomNumber(2, false),
- 'ct2' => $faker->randomNumber(2, false),
- 'ct3' => $faker->randomNumber(2, false),
- 'ct4' => $faker->randomNumber(2, false),
- 'ct5' => $faker->randomNumber(2, false),
- 'assignment1' => $faker->randomNumber(2, false),
- 'assignment2' => $faker->randomNumber(2, false),
- 'assignment3' => $faker->randomNumber(2, false),
- 'written' => $faker->randomNumber(2, false),
- 'mcq' => $faker->randomNumber(2, false),
- 'practical' => $faker->randomNumber(2, false),
- 'exam_id' => function () use ($faker) {
- if (Exam::count())
- return $faker->randomElement(Exam::pluck('id')->toArray());
- else return factory(Exam::class)->create()->id;
- },
- 'student_id' => function () use ($faker) {
- if (User::student()->count())
- return $faker->randomElement(User::student()->take(10)->pluck('id')->toArray());
- else return factory(User::class)->create(['role' => 'student'])->id;
- },
- 'teacher_id' => function () use ($faker) {
- if (User::where('role', 'teacher')->count())
- return $faker->randomElement(User::where('role', 'teacher')->take(10)->pluck('id')->toArray());
- else return factory(App\User::class)->create(['role' => 'teacher'])->id;
- },
- 'course_id' => function () use ($faker) {
- if (Course::count())
- return $faker->randomElement(Course::take(10)->pluck('id')->toArray());
- else return factory(Course::class)->create()->id;
- },
- 'user_id' => function () use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- },
- ];
-});
diff --git a/database/factories/GradeRuleFactory.php b/database/factories/GradeRuleFactory.php
new file mode 100644
index 000000000..ea42a9063
--- /dev/null
+++ b/database/factories/GradeRuleFactory.php
@@ -0,0 +1,28 @@
+define(Gradesystem::class, function (Faker $faker) {
- return [
- 'grade_system_name' => $faker->randomElement(['Grade System 1','Grade System 2']),
- 'grade' => $faker->randomElement(['A+','A','A-','B+','B','B-','C+','C','C-','D+','D','F']),
- 'point' => $faker->randomElement([2.50,2.75,3.00,3.50,4.00,4.50,5.00]),
- 'from_mark' => $faker->randomElement([0,30,60,70,80,90]),
- 'to_mark' => $faker->randomElement([60,70,80,90,100]),
- 'school_id' => function() use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('id')->toArray());
- else return factory(School::class)->create()->id;
- },
- 'user_id' => function() use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- },
- ];
-});
diff --git a/database/factories/GradingSystemFactory.php b/database/factories/GradingSystemFactory.php
new file mode 100644
index 000000000..e9866aaae
--- /dev/null
+++ b/database/factories/GradingSystemFactory.php
@@ -0,0 +1,28 @@
+define(Homework::class, function (Faker $faker) {
- return [
- 'file_path' => $faker->url,
- 'description' => $faker->sentences(3, true),
- 'teacher_id' => $faker->randomElement(User::where('role', 'teacher')->pluck('id')->toArray()),
- 'section_id' => $faker->randomElement(Section::pluck('id')->toArray())
- ];
-});
diff --git a/database/factories/IssuedbooksFactory.php b/database/factories/IssuedbooksFactory.php
deleted file mode 100755
index 01437e681..000000000
--- a/database/factories/IssuedbooksFactory.php
+++ /dev/null
@@ -1,37 +0,0 @@
-define(Issuedbook::class, function (Faker $faker) {
- return [
- 'student_code' => function () use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('student_code')->toArray());
- else return factory(User::class)->create()->student_code;
- },
- 'book_id' => function () use ($faker) {
- if (Book::count())
- return $faker->randomElement(Book::pluck('id')->toArray());
- else return factory(Book::class)->create()->id;
- },
- 'quantity' => $faker->randomElement([5,8,19,13,34]),
- 'school_id' => function () use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('id')->toArray());
- else return factory(School::class)->create()->id;
- },
- 'issue_date' => $faker->date('Y-m-d', 'now'),
- 'return_date' => $faker->date('Y-m-d', 'now'),
- 'fine' => $faker->randomElement([5,8,19,13,34]),
- 'borrowed' => $faker->randomElement([1,0]),
- 'user_id' => function () use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- }
- ];
-});
diff --git a/database/factories/MarkFactory.php b/database/factories/MarkFactory.php
new file mode 100644
index 000000000..60c609174
--- /dev/null
+++ b/database/factories/MarkFactory.php
@@ -0,0 +1,28 @@
+define(Message::class, function (Faker $faker) {
- return [
- 'phone_number' => $faker->randomNumber(7, false),
- 'email' => $faker->unique()->safeEmail,
- 'message' => $faker->sentences(3, true),
- 'school_id' => function () use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('id')->toArray());
- else return factory(School::class)->create()->id;
- },
- 'user_id' => function () use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- },
- ];
-});
diff --git a/database/factories/MyclassFactory.php b/database/factories/MyclassFactory.php
deleted file mode 100755
index 7fb1d7617..000000000
--- a/database/factories/MyclassFactory.php
+++ /dev/null
@@ -1,22 +0,0 @@
-define(Myclass::class, function (Faker $faker) {
- static $class_number = 0;
-
- return [
- 'class_number' => $class_number++, //$faker->randomDigitNotNull,
- 'school_id' => function() use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('id')->toArray());
- else return factory(School::class)->create()->id;
- },
- 'group' => function() use ($class_number, $faker) {
- $element = $faker->randomElement(['science', 'commerce', 'arts']);
- return ($class_number > 8) ? $element : "";
- }
- ];
-});
diff --git a/database/factories/NoticeFactory.php b/database/factories/NoticeFactory.php
old mode 100755
new mode 100644
index 3905c885f..0b1c88b48
--- a/database/factories/NoticeFactory.php
+++ b/database/factories/NoticeFactory.php
@@ -1,25 +1,28 @@
define(Notice::class, function (Faker $faker) {
- return [
- 'file_path' => $faker->url,
- 'title' => $faker->sentences(1, true),
- 'description' => $faker->sentences(3, true),
- 'active' => $faker->randomElement([0, 1]),
- 'school_id' => function() use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('id')->toArray());
- else return factory(School::class)->create()->id;
- },
- 'user_id' => function() use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- },
- ];
-});
+use App\Models\Notice;
+use Illuminate\Database\Eloquent\Factories\Factory;
+
+class NoticeFactory extends Factory
+{
+ /**
+ * The name of the factory's corresponding model.
+ *
+ * @var string
+ */
+ protected $model = Notice::class;
+
+ /**
+ * Define the model's default state.
+ *
+ * @return array
+ */
+ public function definition()
+ {
+ return [
+ //
+ ];
+ }
+}
diff --git a/database/factories/NotificationFactory.php b/database/factories/NotificationFactory.php
deleted file mode 100755
index f00f2e688..000000000
--- a/database/factories/NotificationFactory.php
+++ /dev/null
@@ -1,19 +0,0 @@
-define(Notification::class, function (Faker $faker) {
- return [
- 'sent_status' => $faker->randomElement([0, 1]),
- 'active' => $faker->randomElement([0, 1]),
- 'message' => $faker->sentences(3, true),
- 'student_id' => $faker->randomElement(App\User::student()->pluck('id')->toArray()),
- 'user_id' => function() use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- },
- ];
-});
diff --git a/database/factories/PaymentFactory.php b/database/factories/PaymentFactory.php
deleted file mode 100755
index 3cd0fbfd6..000000000
--- a/database/factories/PaymentFactory.php
+++ /dev/null
@@ -1,10 +0,0 @@
-define(Payment::class, function (Faker $faker) {
- return [
- //
- ];
-});
diff --git a/database/factories/PromotionFactory.php b/database/factories/PromotionFactory.php
new file mode 100644
index 000000000..e2a9aa659
--- /dev/null
+++ b/database/factories/PromotionFactory.php
@@ -0,0 +1,28 @@
+define(Routine::class, function (Faker $faker) {
- return [
- 'file_path' => $faker->url,
- 'title' => $faker->sentences(1, true),
- 'description' => $faker->sentences(3, true),
- 'active' => $faker->randomElement([0, 1]),
- 'school_id' => function() use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('id')->toArray());
- else return factory(School::class)->create()->id;
- },
- 'section_id' => function() use ($faker) {
- if (Section::count())
- return $faker->randomElement(Section::pluck('id')->toArray());
- else return factory(Section::class)->create()->id;
- },
- 'user_id' => function() use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- },
- ];
-});
+use App\Models\Routine;
+use Illuminate\Database\Eloquent\Factories\Factory;
+
+class RoutineFactory extends Factory
+{
+ /**
+ * The name of the factory's corresponding model.
+ *
+ * @var string
+ */
+ protected $model = Routine::class;
+
+ /**
+ * Define the model's default state.
+ *
+ * @return array
+ */
+ public function definition()
+ {
+ return [
+ //
+ ];
+ }
+}
diff --git a/database/factories/SchoolClassFactory.php b/database/factories/SchoolClassFactory.php
new file mode 100644
index 000000000..ac3e26e20
--- /dev/null
+++ b/database/factories/SchoolClassFactory.php
@@ -0,0 +1,28 @@
+define(School::class, function (Faker $faker) {
- return [
- 'name' => $faker->name,
- 'about' => $faker->sentences(3, true),
- 'medium' => $faker->randomElement(['bangla', 'english']),
- 'code' => date("y").substr(number_format(time() * mt_rand(),0,'',''),0,6),
- 'established' => $faker->name,
- 'theme' => 'flatly',
- ];
-});
diff --git a/database/factories/SchoolSessionFactory.php b/database/factories/SchoolSessionFactory.php
new file mode 100644
index 000000000..1a455a3e2
--- /dev/null
+++ b/database/factories/SchoolSessionFactory.php
@@ -0,0 +1,28 @@
+define(Section::class, function (Faker $faker) {
- return [
- 'section_number' => $faker->randomElement(['A', 'B','C','D','E','F','G','H','I','J','K','L','M']),
- 'room_number' => $faker->randomDigitNotNull,
- 'class_id' => function() use ($faker) {
- if (Myclass::count())
- return $faker->randomElement(Myclass::pluck('id')->toArray());
- else return factory(Myclass::class)->create()->id;
- },
- ];
-});
+use App\Models\Section;
+use Illuminate\Database\Eloquent\Factories\Factory;
+
+class SectionFactory extends Factory
+{
+ /**
+ * The name of the factory's corresponding model.
+ *
+ * @var string
+ */
+ protected $model = Section::class;
+
+ /**
+ * Define the model's default state.
+ *
+ * @return array
+ */
+ public function definition()
+ {
+ return [
+ //
+ ];
+ }
+}
diff --git a/database/factories/SemesterFactory.php b/database/factories/SemesterFactory.php
new file mode 100644
index 000000000..4d0937568
--- /dev/null
+++ b/database/factories/SemesterFactory.php
@@ -0,0 +1,28 @@
+define(StudentBoardExam::class, function (Faker $faker) {
- $student_id =$faker->randomElement(User::student()->pluck('id')->toArray());
- return [
- 'student_id' => $student_id,
- 'user_id' => $student_id,
- 'exam_name' => $faker->randomElement(['JSC','SSC','O Level', 'A Level']),
- 'group' => $faker->randomElement(['science','commerce','arts']),
- 'roll' => $faker->randomNumber(7, false),
- 'registration' => $faker->randomNumber(7, false),
- 'session' => '2018-19',
- 'board' => $faker->randomElement(['dhaka','rajsahi','sylhet']),
- 'passing_year' => 2011,
- 'institution_name' => 'efnj school',
- 'gpa' => 5.00,
- ];
-});
diff --git a/database/factories/StudentinfoFactory.php b/database/factories/StudentinfoFactory.php
deleted file mode 100755
index 42bdc52a9..000000000
--- a/database/factories/StudentinfoFactory.php
+++ /dev/null
@@ -1,45 +0,0 @@
-define(StudentInfo::class, function (Faker $faker) {
- return [
- 'student_id' => $faker->randomElement(User::student()->pluck('id')->toArray()),
- 'session' => now()->year,
- 'version' => $faker->randomElement(['bangla', 'english']),
- 'group' => $faker->randomElement(['', 'science', 'commerce', 'arts']),
- 'birthday' => $faker->dateTimeThisCentury->format('Y-m-d'),
- 'religion' => $faker->randomElement(['islam','hinduism','christianism','buddhism','other']),
- 'father_name' => $faker->name,
- 'father_phone_number' => $faker->randomNumber(7, false),
- 'father_national_id' => "SA0218IBYZVZJSEC8536V4XC",
- 'father_occupation' => $faker->jobTitle,
- 'father_designation' => $faker->jobTitle,
- 'father_annual_income' => $faker->randomElement([1000000, 500000, 300000, 700000]),
- 'mother_name' => $faker->name,
- 'mother_phone_number' => $faker->randomNumber(7, false),
- 'mother_national_id' => "SA0218IBYZVZJSEC8536V4XC",
- 'mother_occupation' => $faker->jobTitle,
- 'mother_designation' => $faker->jobTitle,
- 'mother_annual_income' => $faker->randomElement([1000000, 500000, 300000, 700000]),
- ];
-});
-
-$factory->state(StudentInfo::class, 'without_group', [
- 'group' => ''
-]);
-
-$factory->state(StudentInfo::class, 'science', [
- 'group' => 'science'
-]);
-
-$factory->state(StudentInfo::class, 'commerce', [
- 'group' => 'commerce'
-]);
-
-$factory->state(StudentInfo::class, 'arts', [
- 'group' => 'arts'
-]);
-
diff --git a/database/factories/SyllabusFactory.php b/database/factories/SyllabusFactory.php
old mode 100755
new mode 100644
index 33fa8f9b5..7469e587f
--- a/database/factories/SyllabusFactory.php
+++ b/database/factories/SyllabusFactory.php
@@ -1,31 +1,28 @@
define(Syllabus::class, function (Faker $faker) {
- return [
- 'file_path' => $faker->url,
- 'description' => $faker->sentences(3, true),
- 'title' => $faker->sentences(1, true),
- 'active' => $faker->randomElement([0, 1]),
- 'school_id' => function () use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('id')->toArray());
- else return factory(School::class)->create()->id;
- },
- 'class_id' => function() use ($faker) {
- if (Myclass::count())
- return $faker->randomElement(Myclass::pluck('id')->toArray());
- else return factory(Myclass::class)->create()->id;
- },
- 'user_id' => function() use ($faker) {
- if (User::count())
- return $faker->randomElement(User::pluck('id')->toArray());
- else return factory(User::class)->create()->id;
- },
- ];
-});
+use App\Models\Syllabus;
+use Illuminate\Database\Eloquent\Factories\Factory;
+
+class SyllabusFactory extends Factory
+{
+ /**
+ * The name of the factory's corresponding model.
+ *
+ * @var string
+ */
+ protected $model = Syllabus::class;
+
+ /**
+ * Define the model's default state.
+ *
+ * @return array
+ */
+ public function definition()
+ {
+ return [
+ //
+ ];
+ }
+}
diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php
old mode 100755
new mode 100644
index beb065e42..38fd7a6fa
--- a/database/factories/UserFactory.php
+++ b/database/factories/UserFactory.php
@@ -1,87 +1,57 @@
define(User::class, function (Faker $faker) {
- static $password;
-
- return [
- 'name' => e($faker->name),
- 'email' => $faker->unique()->safeEmail,
- 'password' => $password ?: $password = bcrypt('secret'),
- 'remember_token' => Str::random(10),
- 'active' => 1,
- 'role' => $faker->randomElement(['student', 'teacher', 'admin', 'accountant', 'librarian']),
- 'school_id' => function () use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('id')->toArray());
- else return factory(School::class)->create()->id;
- },
- 'code' => function () use ($faker) {
- if (School::count())
- return $faker->randomElement(School::pluck('code')->toArray());
- else return factory(School::class)->create()->code;
- },
- 'student_code' => $faker->unique()->randomNumber(7, false),
- 'address' => e($faker->address),
- 'about' => $faker->sentences(3, true),
- 'pic_path' => $faker->imageUrl(640, 480),
- 'phone_number' => $faker->unique()->phoneNumber,
- 'verified' => 1,
- 'section_id' => function () use ($faker) {
- if (Section::count())
- return $faker->randomElement(Section::pluck('id')->toArray());
- else return factory(Section::class)->create()->id;
- },
- 'department_id' => function () use ($faker) {
- if (Department::count())
- return $faker->randomElement(Department::pluck('id')->toArray());
- else return factory(Department::class)->create()->id;
- },
- 'blood_group' => $faker->randomElement(['a+', 'b+', 'ab', 'o+']),
- 'nationality' => 'Bangladeshi',
- 'gender' => $faker->randomElement(['male', 'female']),
- 'stripe_id' => null,
- 'card_brand' => null,
- 'card_last_four' => null,
- 'trial_ends_at' => null,
- ];
-});
-
-$factory->state(User::class, 'master', [
- 'role' => 'master'
-]);
-$factory->state(User::class, 'accountant', [
- 'role' => 'accountant'
-]);
+namespace Database\Factories;
-$factory->state(User::class, 'admin', [
- 'role' => 'admin'
-]);
-
-$factory->state(User::class, 'librarian', [
- 'role' => 'librarian'
-]);
-
-$factory->state(User::class, 'teacher', [
- 'role' => 'teacher'
-]);
+use App\Models\User;
+use Illuminate\Database\Eloquent\Factories\Factory;
+use Illuminate\Support\Str;
-$factory->state(User::class, 'student', [
- 'role' => 'student'
-]);
+class UserFactory extends Factory
+{
+ /**
+ * The name of the factory's corresponding model.
+ *
+ * @var string
+ */
+ protected $model = User::class;
+
+ /**
+ * Define the model's default state.
+ *
+ * @return array
+ */
+ public function definition()
+ {
+ return [
+ 'first_name' => $this->faker->name(),
+ 'last_name' => $this->faker->name(),
+ 'email' => $this->faker->unique()->safeEmail(),
+ 'email_verified_at' => now(),
+ 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
+ 'remember_token' => Str::random(10),
+ 'gender' => $this->faker->randomElement(['Male', 'Female']),
+ 'nationality' => 'Bangladeshi',
+ 'phone' => 'Ex: 325 43657 7554',
+ 'address' => '568, Dhaka',
+ 'address2' => 'Same',
+ 'city' => 'Dhaka',
+ 'zip' => '32545',
+ 'photo' => null,
+ 'role' => 'admin',
+ ];
+ }
+
+ /**
+ * Indicate that the model's email address should be unverified.
+ *
+ * @return \Illuminate\Database\Eloquent\Factories\Factory
+ */
+ public function unverified()
+ {
+ return $this->state(function (array $attributes) {
+ return [
+ 'email_verified_at' => null,
+ ];
+ });
+ }
+}
diff --git a/database/migrations/2014_10_12_000000_create_schools_table.php b/database/migrations/2014_10_12_000000_create_schools_table.php
deleted file mode 100755
index d1bf7efb1..000000000
--- a/database/migrations/2014_10_12_000000_create_schools_table.php
+++ /dev/null
@@ -1,37 +0,0 @@
-increments('id');
- $table->string('name');
- $table->string('established')->default('');
- $table->text('about');
- $table->string('medium');//bn,en
- $table->integer('code')->unique();
- $table->string('theme');
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('schools');
- }
-}
diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php
new file mode 100644
index 000000000..c30689275
--- /dev/null
+++ b/database/migrations/2014_10_12_000000_create_users_table.php
@@ -0,0 +1,49 @@
+id();
+ $table->string('first_name');
+ $table->string('last_name');
+ $table->string('email')->unique();
+ $table->string('gender');
+ $table->string('nationality');
+ $table->string('phone');
+ $table->string('address');
+ $table->string('address2');
+ $table->string('city');
+ $table->string('zip');
+ $table->string('photo')->nullable();
+ $table->string('birthday')->nullable();
+ $table->string('blood_type')->nullable();
+ $table->string('religion')->nullable();
+ $table->string('role');
+ $table->timestamp('email_verified_at')->nullable();
+ $table->string('password');
+ $table->rememberToken();
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('users');
+ }
+}
diff --git a/database/migrations/2017_12_27_025313_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php
old mode 100755
new mode 100644
similarity index 100%
rename from database/migrations/2017_12_27_025313_create_password_resets_table.php
rename to database/migrations/2014_10_12_100000_create_password_resets_table.php
index 0d5cb8450..0ee0a36a4
--- a/database/migrations/2017_12_27_025313_create_password_resets_table.php
+++ b/database/migrations/2014_10_12_100000_create_password_resets_table.php
@@ -1,8 +1,8 @@
increments('id');
- $table->string('name');
- $table->string('email')->unique();
- $table->string('password');
- $table->string('role');
- $table->tinyInteger('active');
- $table->integer('school_id')->nullable();
- $table->integer('code')->nullable();//school code Auto generated
- $table->integer('student_code')->unique()->nullable();//Auto generated
- $table->string('gender')->default('');
- $table->string('blood_group')->default('');
- $table->string('nationality')->default('');
- $table->string('phone_number')->unique()->default('');
- $table->string('address')->default('');
- $table->text('about')->default('');
- $table->string('pic_path')->default('');
- $table->tinyInteger('verified');
- $table->integer('section_id')->unsigned()->nullable();
- $table->rememberToken();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('users');
- }
-}
diff --git a/database/migrations/2017_12_27_025450_create_syllabuses_table.php b/database/migrations/2017_12_27_025450_create_syllabuses_table.php
deleted file mode 100755
index 572906c58..000000000
--- a/database/migrations/2017_12_27_025450_create_syllabuses_table.php
+++ /dev/null
@@ -1,37 +0,0 @@
-increments('id');
- $table->string('file_path');
- $table->string('title');
- $table->text('description');
- $table->tinyInteger('active');
- $table->integer('school_id')->unsigned();
- $table->integer('user_id')->unsigned();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('syllabuses');
- }
-}
diff --git a/database/migrations/2017_12_27_025530_create_homeworks_table.php b/database/migrations/2017_12_27_025530_create_homeworks_table.php
deleted file mode 100755
index 1aba14da8..000000000
--- a/database/migrations/2017_12_27_025530_create_homeworks_table.php
+++ /dev/null
@@ -1,35 +0,0 @@
-increments('id');
- $table->string('file_path');
- $table->text('description');
- $table->integer('teacher_id')->unsigned();
- $table->integer('section_id')->unsigned();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('homeworks');
- }
-}
diff --git a/database/migrations/2017_12_27_025556_create_grades_table.php b/database/migrations/2017_12_27_025556_create_grades_table.php
deleted file mode 100755
index c49f1b82c..000000000
--- a/database/migrations/2017_12_27_025556_create_grades_table.php
+++ /dev/null
@@ -1,55 +0,0 @@
-increments('id');
- $table->float('marks', 8, 2);//final exam
- $table->float('gpa', 8, 2);//final exam
- $table->float('attendance', 8, 2);
- $table->float('quiz1', 8, 2);
- $table->float('quiz2', 8, 2);
- $table->float('quiz3', 8, 2);
- $table->float('quiz4', 8, 2);
- $table->float('quiz5', 8, 2);
- $table->float('ct1', 8, 2);
- $table->float('ct2', 8, 2);
- $table->float('ct3', 8, 2);
- $table->float('ct4', 8, 2);
- $table->float('ct5', 8, 2);
- $table->float('assignment1', 8, 2);
- $table->float('assignment2', 8, 2);
- $table->float('assignment3', 8, 2);
- $table->float('written', 8, 2);
- $table->float('mcq', 8, 2);
- $table->float('practical', 8, 2);
- $table->integer('exam_id')->unsigned();
- $table->integer('student_id')->unsigned();
- $table->integer('teacher_id')->unsigned();
- $table->integer('course_id')->unsigned();
- $table->integer('user_id')->unsigned();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('grades');
- }
-}
diff --git a/database/migrations/2017_12_27_025612_create_notifications_table.php b/database/migrations/2017_12_27_025612_create_notifications_table.php
deleted file mode 100755
index d7a710689..000000000
--- a/database/migrations/2017_12_27_025612_create_notifications_table.php
+++ /dev/null
@@ -1,36 +0,0 @@
-increments('id');
- $table->tinyInteger('sent_status');
- $table->tinyInteger('active');
- $table->text('message');
- $table->integer('student_id')->unsigned();
- $table->integer('user_id')->unsigned();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('notifications');
- }
-}
diff --git a/database/migrations/2017_12_27_025644_create_books_table.php b/database/migrations/2017_12_27_025644_create_books_table.php
deleted file mode 100755
index 84399a3a4..000000000
--- a/database/migrations/2017_12_27_025644_create_books_table.php
+++ /dev/null
@@ -1,44 +0,0 @@
-increments('id');
- $table->string('book_code',50)->unique();
- $table->string('title',250);
- $table->string('author',100);
- $table->integer('quantity')->unsigned();
- $table->string('rackNo',10);
- $table->string('rowNo',10);
- $table->string('img_path');
- $table->text('about');
- $table->string('type',10);
- $table->integer('price');
- $table->integer('class_id')->unsigned();
- $table->integer('school_id')->unsigned();
- $table->integer('user_id')->unsigned();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('books');
- }
-}
diff --git a/database/migrations/2017_12_27_025727_create_courses_table.php b/database/migrations/2017_12_27_025727_create_courses_table.php
deleted file mode 100755
index 3d61b37dd..000000000
--- a/database/migrations/2017_12_27_025727_create_courses_table.php
+++ /dev/null
@@ -1,56 +0,0 @@
-increments('id');
- $table->string('course_name');
- $table->integer('class_id')->unsigned();
- $table->string('course_type');
- $table->string('course_time');
- $table->string('grade_system_name');
- $table->integer('quiz_count');
- $table->integer('assignment_count');
- $table->integer('ct_count');
- $table->integer('quiz_percent');
- $table->integer('attendance_percent');
- $table->integer('assignment_percent');
- $table->integer('ct_percent');
- $table->integer('final_exam_percent');
- $table->integer('practical_percent');
- $table->integer('att_fullmark');
- $table->integer('quiz_fullmark');
- $table->integer('a_fullmark');
- $table->integer('ct_fullmark');
- $table->integer('final_fullmark');
- $table->integer('practical_fullmark');
- $table->integer('school_id')->unsigned();
- $table->integer('exam_id')->unsigned();
- $table->integer('teacher_id')->unsigned();
- $table->integer('section_id')->unsigned();
- $table->integer('user_id')->unsigned();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('courses');
- }
-}
diff --git a/database/migrations/2017_12_27_025738_create_forms_table.php b/database/migrations/2017_12_27_025738_create_forms_table.php
deleted file mode 100755
index ee3553935..000000000
--- a/database/migrations/2017_12_27_025738_create_forms_table.php
+++ /dev/null
@@ -1,35 +0,0 @@
-increments('id');
- $table->string('name');
- $table->string('file_path');
- $table->integer('school_id')->unsigned();
- $table->integer('user_id')->unsigned();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('forms');
- }
-}
diff --git a/database/migrations/2017_12_27_025751_create_messages_table.php b/database/migrations/2017_12_27_025751_create_messages_table.php
deleted file mode 100755
index 032bfb8df..000000000
--- a/database/migrations/2017_12_27_025751_create_messages_table.php
+++ /dev/null
@@ -1,36 +0,0 @@
-increments('id');
- $table->string('phone_number');
- $table->string('email')->unique();
- $table->text('message');
- $table->integer('school_id')->unsigned();
- $table->integer('user_id')->unsigned();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('messages');
- }
-}
diff --git a/database/migrations/2018_02_06_161642_create_fees_table.php b/database/migrations/2018_02_06_161642_create_fees_table.php
deleted file mode 100755
index fbf74756f..000000000
--- a/database/migrations/2018_02_06_161642_create_fees_table.php
+++ /dev/null
@@ -1,45 +0,0 @@
-increments('id');
- $table->string('fee_name');// or Re-admisson
- $table->integer('school_id')->unsigned();
- // $table->string('fine_fee');//penalty
- // $table->string('exam_fee');
- // $table->string('registration_fee');
- // $table->string('library_fee');
- // $table->string('lab_fee');
- // $table->string('sport_fee');
- // $table->string('late_payment_fee');
- // $table->string('maintenance_fee');
- // $table->string('internet_fee');
- // $table->string('farewell_fee');
- // $table->string('other_fee');
- $table->integer('user_id');
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('fees');
- }
-}
diff --git a/database/migrations/2018_03_26_105657_create_grade_systems_table.php b/database/migrations/2018_03_26_105657_create_grade_systems_table.php
deleted file mode 100755
index 2b4482830..000000000
--- a/database/migrations/2018_03_26_105657_create_grade_systems_table.php
+++ /dev/null
@@ -1,38 +0,0 @@
-increments('id');
- $table->string('grade_system_name');
- $table->string('grade');
- $table->float('point');
- $table->integer('from_mark');
- $table->integer('to_mark');
- $table->integer('school_id');
- $table->integer('user_id')->unsigned();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('grade_systems');
- }
-}
diff --git a/database/migrations/2018_03_27_153448_create_issued_books_table.php b/database/migrations/2018_03_27_153448_create_issued_books_table.php
deleted file mode 100755
index 926c806b4..000000000
--- a/database/migrations/2018_03_27_153448_create_issued_books_table.php
+++ /dev/null
@@ -1,40 +0,0 @@
-increments('id');
- $table->integer('student_code');
- $table->integer('book_id')->unsigned();
- $table->integer('quantity');
- $table->integer('school_id')->unsigned();
- $table->date('issue_date');
- $table->date('return_date');
- $table->decimal('fine');
- $table->tinyInteger('borrowed');
- $table->integer('user_id')->unsigned();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('issued_books');
- }
-}
diff --git a/database/migrations/2018_04_01_195635_create_accounts_table.php b/database/migrations/2018_04_01_195635_create_accounts_table.php
deleted file mode 100755
index 3753139f9..000000000
--- a/database/migrations/2018_04_01_195635_create_accounts_table.php
+++ /dev/null
@@ -1,37 +0,0 @@
-increments('id');
- $table->string('name');
- $table->string('type');
- $table->integer('amount');
- $table->text('description');
- $table->integer('school_id')->unsigned();
- $table->integer('user_id')->unsigned();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('accounts');
- }
-}
diff --git a/database/migrations/2018_04_29_121233_create_student_infos_table.php b/database/migrations/2018_04_29_121233_create_student_infos_table.php
deleted file mode 100755
index b7f10cb50..000000000
--- a/database/migrations/2018_04_29_121233_create_student_infos_table.php
+++ /dev/null
@@ -1,50 +0,0 @@
-increments('id');
- $table->integer('student_id')->unsigned();
- $table->string('session');
- $table->string('version');
- $table->string('group');
- $table->dateTime('birthday');
- $table->string('religion');
- $table->string('father_name');
- $table->string('father_phone_number');
- $table->string('father_national_id');
- $table->string('father_occupation');
- $table->string('father_designation');
- $table->integer('father_annual_income');
- $table->string('mother_name');
- $table->string('mother_phone_number');
- $table->string('mother_national_id');
- $table->string('mother_occupation');
- $table->string('mother_designation');
- $table->integer('mother_annual_income');
- $table->integer('user_id')->unsigned()->nullable();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('student_infos');
- }
-}
diff --git a/database/migrations/2018_04_29_121517_create_student_board_exams_table.php b/database/migrations/2018_04_29_121517_create_student_board_exams_table.php
deleted file mode 100755
index 6f7a53d1e..000000000
--- a/database/migrations/2018_04_29_121517_create_student_board_exams_table.php
+++ /dev/null
@@ -1,42 +0,0 @@
-increments('id');
- $table->integer('student_id')->unsigned();
- $table->string('exam_name');
- $table->string('group');
- $table->integer('roll');
- $table->integer('registration');
- $table->string('session');
- $table->string('board');
- $table->integer('passing_year');
- $table->string('institution_name');
- $table->float('gpa');
- $table->integer('user_id')->unsigned();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('student_board_exams');
- }
-}
diff --git a/database/migrations/2018_10_05_163435_create_exam_for_classes_table.php b/database/migrations/2018_10_05_163435_create_exam_for_classes_table.php
deleted file mode 100755
index 35fdc8f8d..000000000
--- a/database/migrations/2018_10_05_163435_create_exam_for_classes_table.php
+++ /dev/null
@@ -1,32 +0,0 @@
-increments('id');
- $table->integer('class_id')->unsigned();
- $table->integer('exam_id')->unsigned();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('exam_for_classes');
- }
-}
diff --git a/database/migrations/2018_10_08_002853_add_department_class_teacher_to_users_table.php b/database/migrations/2018_10_08_002853_add_department_class_teacher_to_users_table.php
deleted file mode 100755
index 84044272a..000000000
--- a/database/migrations/2018_10_08_002853_add_department_class_teacher_to_users_table.php
+++ /dev/null
@@ -1,32 +0,0 @@
-integer('department_id')->unsigned()->default(0);
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::table('users', function (Blueprint $table) {
- $table->dropColumn(['department_id']);
- });
- }
-}
diff --git a/database/migrations/2018_10_09_093606_add_term_start_end_date_to_exams_table.php b/database/migrations/2018_10_09_093606_add_term_start_end_date_to_exams_table.php
deleted file mode 100755
index 13105627c..000000000
--- a/database/migrations/2018_10_09_093606_add_term_start_end_date_to_exams_table.php
+++ /dev/null
@@ -1,34 +0,0 @@
-string('term',20)->default('');
- $table->string('start_date',50)->default('');
- $table->string('end_date',50)->default('');
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::table('exams', function (Blueprint $table) {
- $table->dropColumn(['term', 'start_date','end_date']);
- });
- }
-}
diff --git a/database/migrations/2019_04_08_105033_add_class_id_to_syllabuses_table.php b/database/migrations/2019_04_08_105033_add_class_id_to_syllabuses_table.php
deleted file mode 100755
index 5bcd6f6f1..000000000
--- a/database/migrations/2019_04_08_105033_add_class_id_to_syllabuses_table.php
+++ /dev/null
@@ -1,32 +0,0 @@
-integer('class_id')->unsigned()->default(0);
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::table('syllabuses', function (Blueprint $table) {
- $table->dropColumn(['class_id']);
- });
- }
-}
diff --git a/database/migrations/2019_04_08_121149_add_section_id_to_routines_table.php b/database/migrations/2019_04_08_121149_add_section_id_to_routines_table.php
deleted file mode 100755
index 3882ed850..000000000
--- a/database/migrations/2019_04_08_121149_add_section_id_to_routines_table.php
+++ /dev/null
@@ -1,32 +0,0 @@
-integer('section_id')->unsigned()->default(0);
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::table('routines', function (Blueprint $table) {
- $table->dropColumn(['section_id']);
- });
- }
-}
diff --git a/database/migrations/2019_04_25_101700_add_active_to_exam_for_class_table.php b/database/migrations/2019_04_25_101700_add_active_to_exam_for_class_table.php
deleted file mode 100755
index 164e6d6e5..000000000
--- a/database/migrations/2019_04_25_101700_add_active_to_exam_for_class_table.php
+++ /dev/null
@@ -1,32 +0,0 @@
-tinyInteger('active')->default(0);
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::table('exam_for_classes', function (Blueprint $table) {
- $table->dropColumn(['active']);
- });
- }
-}
diff --git a/database/migrations/2019_05_10_151601_add_stripe_fields_in_users_table.php b/database/migrations/2019_05_10_151601_add_stripe_fields_in_users_table.php
deleted file mode 100755
index c39b101d0..000000000
--- a/database/migrations/2019_05_10_151601_add_stripe_fields_in_users_table.php
+++ /dev/null
@@ -1,35 +0,0 @@
-string('stripe_id')->nullable();
- // $table->string('card_brand')->nullable();
- // $table->string('card_last_four')->nullable();
- // $table->timestamp('trial_ends_at')->nullable();
- // });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- // Schema::table('users', function (Blueprint $table) {
- // $table->dropColumn(['stripe_id','card_brand','card_last_four','trial_ends_at']);
- // });
- }
-}
diff --git a/database/migrations/2019_05_10_163920_create_stripe_subscription_table.php b/database/migrations/2019_05_10_163920_create_stripe_subscription_table.php
deleted file mode 100755
index eb5686e5d..000000000
--- a/database/migrations/2019_05_10_163920_create_stripe_subscription_table.php
+++ /dev/null
@@ -1,38 +0,0 @@
-increments('id');
- // $table->integer('user_id');
- // $table->string('name');
- // $table->string('stripe_id');
- // $table->string('stripe_plan');
- // $table->integer('quantity');
- // $table->timestamp('trial_ends_at')->nullable();
- // $table->timestamp('ends_at')->nullable();
- // $table->timestamps();
- // });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- // Schema::dropIfExists('subscriptions');
- }
-}
diff --git a/database/migrations/2019_05_10_193135_create_payments_table.php b/database/migrations/2019_05_10_193135_create_payments_table.php
deleted file mode 100755
index 557958d8f..000000000
--- a/database/migrations/2019_05_10_193135_create_payments_table.php
+++ /dev/null
@@ -1,36 +0,0 @@
-increments('id');
- $table->string('payment_id');
- $table->tinyInteger('payment_status');
- $table->float('amount');
- $table->integer('custormer_id')->unsigned();
- $table->string('charge_for');
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('payments');
- }
-}
diff --git a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php
new file mode 100644
index 000000000..6aa6d743e
--- /dev/null
+++ b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php
@@ -0,0 +1,36 @@
+id();
+ $table->string('uuid')->unique();
+ $table->text('connection');
+ $table->text('queue');
+ $table->longText('payload');
+ $table->longText('exception');
+ $table->timestamp('failed_at')->useCurrent();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('failed_jobs');
+ }
+}
diff --git a/database/migrations/2021_08_14_063609_create_permission_tables.php b/database/migrations/2021_08_14_063609_create_permission_tables.php
new file mode 100644
index 000000000..edf92e7a1
--- /dev/null
+++ b/database/migrations/2021_08_14_063609_create_permission_tables.php
@@ -0,0 +1,114 @@
+bigIncrements('id');
+ $table->string('name'); // For MySQL 8.0 use string('name', 125);
+ $table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125);
+ $table->timestamps();
+
+ $table->unique(['name', 'guard_name']);
+ });
+
+ Schema::create($tableNames['roles'], function (Blueprint $table) {
+ $table->bigIncrements('id');
+ $table->string('name'); // For MySQL 8.0 use string('name', 125);
+ $table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125);
+ $table->timestamps();
+
+ $table->unique(['name', 'guard_name']);
+ });
+
+ Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames) {
+ $table->unsignedBigInteger('permission_id');
+
+ $table->string('model_type');
+ $table->unsignedBigInteger($columnNames['model_morph_key']);
+ $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_permissions_model_id_model_type_index');
+
+ $table->foreign('permission_id')
+ ->references('id')
+ ->on($tableNames['permissions'])
+ ->onDelete('cascade');
+
+ $table->primary(['permission_id', $columnNames['model_morph_key'], 'model_type'],
+ 'model_has_permissions_permission_model_type_primary');
+ });
+
+ Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames) {
+ $table->unsignedBigInteger('role_id');
+
+ $table->string('model_type');
+ $table->unsignedBigInteger($columnNames['model_morph_key']);
+ $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_roles_model_id_model_type_index');
+
+ $table->foreign('role_id')
+ ->references('id')
+ ->on($tableNames['roles'])
+ ->onDelete('cascade');
+
+ $table->primary(['role_id', $columnNames['model_morph_key'], 'model_type'],
+ 'model_has_roles_role_model_type_primary');
+ });
+
+ Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) {
+ $table->unsignedBigInteger('permission_id');
+ $table->unsignedBigInteger('role_id');
+
+ $table->foreign('permission_id')
+ ->references('id')
+ ->on($tableNames['permissions'])
+ ->onDelete('cascade');
+
+ $table->foreign('role_id')
+ ->references('id')
+ ->on($tableNames['roles'])
+ ->onDelete('cascade');
+
+ $table->primary(['permission_id', 'role_id'], 'role_has_permissions_permission_id_role_id_primary');
+ });
+
+ app('cache')
+ ->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null)
+ ->forget(config('permission.cache.key'));
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ $tableNames = config('permission.table_names');
+
+ if (empty($tableNames)) {
+ throw new \Exception('Error: config/permission.php not found and defaults could not be merged. Please publish the package configuration before proceeding, or drop the tables manually.');
+ }
+
+ Schema::drop($tableNames['role_has_permissions']);
+ Schema::drop($tableNames['model_has_roles']);
+ Schema::drop($tableNames['model_has_permissions']);
+ Schema::drop($tableNames['roles']);
+ Schema::drop($tableNames['permissions']);
+ }
+}
diff --git a/database/migrations/2018_10_09_203125_create_departments_table.php b/database/migrations/2021_08_29_082638_create_school_sessions_table.php
old mode 100755
new mode 100644
similarity index 57%
rename from database/migrations/2018_10_09_203125_create_departments_table.php
rename to database/migrations/2021_08_29_082638_create_school_sessions_table.php
index 7369e89ea..dcb1d77c9
--- a/database/migrations/2018_10_09_203125_create_departments_table.php
+++ b/database/migrations/2021_08_29_082638_create_school_sessions_table.php
@@ -1,10 +1,10 @@
increments('id');
- $table->integer('school_id')->unsigned();
- $table->string('department_name',50);
+ Schema::create('school_sessions', function (Blueprint $table) {
+ $table->id();
+ $table->string('session_name');
$table->timestamps();
});
}
@@ -28,6 +27,6 @@ public function up()
*/
public function down()
{
- Schema::dropIfExists('departments');
+ Schema::dropIfExists('school_sessions');
}
}
diff --git a/database/migrations/2021_08_29_082900_create_semesters_table.php b/database/migrations/2021_08_29_082900_create_semesters_table.php
new file mode 100644
index 000000000..2d45477a4
--- /dev/null
+++ b/database/migrations/2021_08_29_082900_create_semesters_table.php
@@ -0,0 +1,35 @@
+id();
+ $table->string('semester_name');
+ $table->date('start_date');
+ $table->date('end_date');
+ $table->unsignedInteger('session_id');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('semesters');
+ }
+}
diff --git a/database/migrations/2017_12_27_025806_create_faqs_table.php b/database/migrations/2021_08_29_082956_create_school_classes_table.php
old mode 100755
new mode 100644
similarity index 57%
rename from database/migrations/2017_12_27_025806_create_faqs_table.php
rename to database/migrations/2021_08_29_082956_create_school_classes_table.php
index 50a9bc767..e7e56b085
--- a/database/migrations/2017_12_27_025806_create_faqs_table.php
+++ b/database/migrations/2021_08_29_082956_create_school_classes_table.php
@@ -1,10 +1,10 @@
increments('id');
- $table->string('question');
- $table->text('answer');
- $table->integer('user_id')->unsigned();
+ Schema::create('school_classes', function (Blueprint $table) {
+ $table->id();
+ $table->string('class_name');
+ $table->unsignedInteger('session_id');
$table->timestamps();
});
}
@@ -29,6 +28,6 @@ public function up()
*/
public function down()
{
- Schema::dropIfExists('faqs');
+ Schema::dropIfExists('school_classes');
}
}
diff --git a/database/migrations/2017_12_27_025427_create_sections_table.php b/database/migrations/2021_08_29_083021_create_sections_table.php
old mode 100755
new mode 100644
similarity index 69%
rename from database/migrations/2017_12_27_025427_create_sections_table.php
rename to database/migrations/2021_08_29_083021_create_sections_table.php
index 5109f1607..bb2326df4
--- a/database/migrations/2017_12_27_025427_create_sections_table.php
+++ b/database/migrations/2021_08_29_083021_create_sections_table.php
@@ -1,8 +1,8 @@
increments('id');
- $table->string('section_number');
- $table->integer('room_number');
- $table->integer('class_id')->unsigned();
- $table->integer('user_id')->unsigned()->default(0);
+ $table->id();
+ $table->string('section_name');
+ $table->string('room_no');
+ $table->unsignedInteger('class_id');
+ $table->unsignedInteger('session_id');
$table->timestamps();
});
}
diff --git a/database/migrations/2020_07_24_201246_create_certificates_table.php b/database/migrations/2021_08_29_083216_create_courses_table.php
old mode 100755
new mode 100644
similarity index 50%
rename from database/migrations/2020_07_24_201246_create_certificates_table.php
rename to database/migrations/2021_08_29_083216_create_courses_table.php
index 2a6c9479e..0801014fc
--- a/database/migrations/2020_07_24_201246_create_certificates_table.php
+++ b/database/migrations/2021_08_29_083216_create_courses_table.php
@@ -4,7 +4,7 @@
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
-class CreateCertificatesTable extends Migration
+class CreateCoursesTable extends Migration
{
/**
* Run the migrations.
@@ -13,15 +13,14 @@ class CreateCertificatesTable extends Migration
*/
public function up()
{
- Schema::create('certificates', function (Blueprint $table) {
+ Schema::create('courses', function (Blueprint $table) {
$table->id();
+ $table->string('course_name');
+ $table->string('course_type');
+ $table->unsignedInteger('class_id');
+ $table->unsignedInteger('semester_id');
+ $table->unsignedInteger('session_id');
$table->timestamps();
- $table->string('file_path');
- $table->string('title');
- $table->integer('given_to');
- $table->tinyInteger('active');
- $table->integer('school_id')->unsigned();
- $table->integer('user_id')->unsigned();
});
}
@@ -32,6 +31,6 @@ public function up()
*/
public function down()
{
- Schema::dropIfExists('certificates');
+ Schema::dropIfExists('courses');
}
}
diff --git a/database/migrations/2017_12_27_025631_create_feedbacks_table.php b/database/migrations/2021_08_29_083346_create_academic_settings_table.php
old mode 100755
new mode 100644
similarity index 54%
rename from database/migrations/2017_12_27_025631_create_feedbacks_table.php
rename to database/migrations/2021_08_29_083346_create_academic_settings_table.php
index 665689bef..104324c61
--- a/database/migrations/2017_12_27_025631_create_feedbacks_table.php
+++ b/database/migrations/2021_08_29_083346_create_academic_settings_table.php
@@ -1,10 +1,10 @@
increments('id');
- $table->text('description');
- $table->integer('teacher_id')->unsigned();
- $table->integer('student_id')->unsigned();
+ Schema::create('academic_settings', function (Blueprint $table) {
+ $table->id();
+ $table->string('attendance_type')->default('section');
+ $table->string('marks_submission_status')->default('off');
$table->timestamps();
});
}
@@ -29,6 +28,6 @@ public function up()
*/
public function down()
{
- Schema::dropIfExists('feedbacks');
+ Schema::dropIfExists('academic_settings');
}
}
diff --git a/database/migrations/2021_08_29_083429_create_promotions_table.php b/database/migrations/2021_08_29_083429_create_promotions_table.php
new file mode 100644
index 000000000..604e2b787
--- /dev/null
+++ b/database/migrations/2021_08_29_083429_create_promotions_table.php
@@ -0,0 +1,36 @@
+id();
+ $table->unsignedInteger('student_id');
+ $table->unsignedInteger('class_id');
+ $table->unsignedInteger('section_id');
+ $table->unsignedInteger('session_id');
+ $table->string('id_card_number');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('promotions');
+ }
+}
diff --git a/database/migrations/2021_08_29_083504_create_exam_rules_table.php b/database/migrations/2021_08_29_083504_create_exam_rules_table.php
new file mode 100644
index 000000000..3ed5ed5be
--- /dev/null
+++ b/database/migrations/2021_08_29_083504_create_exam_rules_table.php
@@ -0,0 +1,36 @@
+id();
+ $table->float('total_marks');
+ $table->float('pass_marks');
+ $table->text('marks_distribution_note');
+ $table->unsignedInteger('exam_id');
+ $table->unsignedInteger('session_id');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('exam_rules');
+ }
+}
diff --git a/database/migrations/2021_08_29_083523_create_grade_rules_table.php b/database/migrations/2021_08_29_083523_create_grade_rules_table.php
new file mode 100644
index 000000000..5ce94724d
--- /dev/null
+++ b/database/migrations/2021_08_29_083523_create_grade_rules_table.php
@@ -0,0 +1,37 @@
+id();
+ $table->float('point');
+ $table->string('grade');
+ $table->float('start_at');
+ $table->float('end_at');
+ $table->unsignedInteger('grading_system_id');
+ $table->unsignedInteger('session_id');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('grade_rules');
+ }
+}
diff --git a/database/migrations/2021_08_29_083603_create_marks_table.php b/database/migrations/2021_08_29_083603_create_marks_table.php
new file mode 100644
index 000000000..9b35ebf70
--- /dev/null
+++ b/database/migrations/2021_08_29_083603_create_marks_table.php
@@ -0,0 +1,38 @@
+id();
+ $table->float('marks')->default(0);
+ $table->unsignedInteger('student_id');
+ $table->unsignedInteger('class_id');
+ $table->unsignedInteger('section_id');
+ $table->unsignedInteger('course_id');
+ $table->unsignedInteger('exam_id');
+ $table->unsignedInteger('session_id');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('marks');
+ }
+}
diff --git a/database/migrations/2017_12_21_065735_create_exams_table.php b/database/migrations/2021_08_29_083628_create_exams_table.php
old mode 100755
new mode 100644
similarity index 56%
rename from database/migrations/2017_12_21_065735_create_exams_table.php
rename to database/migrations/2021_08_29_083628_create_exams_table.php
index d79dff77a..9d3c4f85c
--- a/database/migrations/2017_12_21_065735_create_exams_table.php
+++ b/database/migrations/2021_08_29_083628_create_exams_table.php
@@ -1,8 +1,8 @@
increments('id');
- $table->string('exam_name');
- $table->tinyInteger('active');
- $table->tinyInteger('notice_published');
- $table->tinyInteger('result_published');
- $table->integer('school_id')->unsigned();
- $table->integer('user_id')->unsigned();
- $table->timestamps();
+ $table->id();
+ $table->string('exam_name');
+ $table->dateTime('start_date');
+ $table->dateTime('end_date');
+ $table->unsignedInteger('class_id');
+ $table->unsignedInteger('course_id');
+ $table->unsignedInteger('semester_id');
+ $table->unsignedInteger('session_id');
+ $table->timestamps();
});
}
diff --git a/database/migrations/2021_08_29_083730_create_student_parent_infos_table.php b/database/migrations/2021_08_29_083730_create_student_parent_infos_table.php
new file mode 100644
index 000000000..7190e9cca
--- /dev/null
+++ b/database/migrations/2021_08_29_083730_create_student_parent_infos_table.php
@@ -0,0 +1,37 @@
+id();
+ $table->unsignedInteger('student_id');
+ $table->string('father_name');
+ $table->string('father_phone');
+ $table->string('mother_name');
+ $table->string('mother_phone');
+ $table->string('parent_address');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('student_parent_infos');
+ }
+}
diff --git a/database/migrations/2017_12_27_025413_create_classes_table.php b/database/migrations/2021_08_29_083742_create_student_academic_infos_table.php
old mode 100755
new mode 100644
similarity index 55%
rename from database/migrations/2017_12_27_025413_create_classes_table.php
rename to database/migrations/2021_08_29_083742_create_student_academic_infos_table.php
index 764872f26..1df7d54c9
--- a/database/migrations/2017_12_27_025413_create_classes_table.php
+++ b/database/migrations/2021_08_29_083742_create_student_academic_infos_table.php
@@ -1,10 +1,10 @@
increments('id');
- $table->string('class_number');
- $table->integer('school_id')->unsigned();
- $table->string('group');
+ Schema::create('student_academic_infos', function (Blueprint $table) {
+ $table->id();
+ $table->string('board_reg_no')->nullable();
+ $table->unsignedInteger('student_id');
$table->timestamps();
});
}
@@ -29,6 +28,6 @@ public function up()
*/
public function down()
{
- Schema::dropIfExists('classes');
+ Schema::dropIfExists('student_academic_infos');
}
}
diff --git a/database/migrations/2017_12_27_025349_create_attendances_table.php b/database/migrations/2021_08_29_083934_create_attendances_table.php
old mode 100755
new mode 100644
similarity index 61%
rename from database/migrations/2017_12_27_025349_create_attendances_table.php
rename to database/migrations/2021_08_29_083934_create_attendances_table.php
index 64e73d800..b6c95c072
--- a/database/migrations/2017_12_27_025349_create_attendances_table.php
+++ b/database/migrations/2021_08_29_083934_create_attendances_table.php
@@ -1,8 +1,8 @@
increments('id');
- $table->integer('student_id')->unsigned();
- $table->integer('section_id')->unsigned();
- $table->integer('exam_id')->unsigned();
- $table->tinyInteger('present')->unsigned();
- $table->integer('user_id')->unsigned();
+ $table->id();
+ $table->unsignedInteger('course_id')->default(0);
+ $table->unsignedInteger('class_id')->default(0);
+ $table->unsignedInteger('section_id')->default(0);
+ $table->unsignedInteger('student_id');
+ $table->string('status');
+ $table->unsignedInteger('session_id');
$table->timestamps();
});
}
diff --git a/database/migrations/2017_12_27_025503_create_notices_table.php b/database/migrations/2021_08_29_084019_create_notices_table.php
old mode 100755
new mode 100644
similarity index 64%
rename from database/migrations/2017_12_27_025503_create_notices_table.php
rename to database/migrations/2021_08_29_084019_create_notices_table.php
index f814a685f..410f29c7f
--- a/database/migrations/2017_12_27_025503_create_notices_table.php
+++ b/database/migrations/2021_08_29_084019_create_notices_table.php
@@ -1,8 +1,8 @@
increments('id');
- $table->string('file_path');
- $table->string('title');
- $table->text('description');
- $table->tinyInteger('active');
- $table->integer('school_id')->unsigned();
- $table->integer('user_id')->unsigned();
+ $table->id();
+ $table->text('notice');
+ $table->unsignedInteger('session_id');
$table->timestamps();
});
}
diff --git a/database/migrations/2017_12_27_025512_create_events_table.php b/database/migrations/2021_08_29_084030_create_events_table.php
old mode 100755
new mode 100644
similarity index 68%
rename from database/migrations/2017_12_27_025512_create_events_table.php
rename to database/migrations/2021_08_29_084030_create_events_table.php
index 37bcde2b0..a66f3ee29
--- a/database/migrations/2017_12_27_025512_create_events_table.php
+++ b/database/migrations/2021_08_29_084030_create_events_table.php
@@ -1,8 +1,8 @@
increments('id');
- $table->string('file_path');
+ $table->id();
$table->string('title');
- $table->text('description');
- $table->tinyInteger('active');
- $table->integer('school_id')->unsigned();
- $table->integer('user_id')->unsigned();
+ $table->dateTime('start');
+ $table->dateTime('end');
+ $table->unsignedInteger('session_id');
$table->timestamps();
});
}
diff --git a/database/migrations/2021_08_29_084041_create_syllabi_table.php b/database/migrations/2021_08_29_084041_create_syllabi_table.php
new file mode 100644
index 000000000..82cdc1f26
--- /dev/null
+++ b/database/migrations/2021_08_29_084041_create_syllabi_table.php
@@ -0,0 +1,36 @@
+id();
+ $table->string('syllabus_name');
+ $table->string('syllabus_file_path');
+ $table->unsignedInteger('class_id');
+ $table->unsignedInteger('course_id');
+ $table->unsignedInteger('session_id');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('syllabi');
+ }
+}
diff --git a/database/migrations/2017_12_27_025542_create_routines_table.php b/database/migrations/2021_08_29_084056_create_routines_table.php
old mode 100755
new mode 100644
similarity index 62%
rename from database/migrations/2017_12_27_025542_create_routines_table.php
rename to database/migrations/2021_08_29_084056_create_routines_table.php
index 2ed3e7e43..84c570b73
--- a/database/migrations/2017_12_27_025542_create_routines_table.php
+++ b/database/migrations/2021_08_29_084056_create_routines_table.php
@@ -1,8 +1,8 @@
increments('id');
- $table->string('file_path');
- $table->string('title');
- $table->text('description');
- $table->tinyInteger('active');
- $table->integer('school_id')->unsigned();
- $table->integer('user_id')->unsigned();
+ $table->id();
+ $table->string('start');
+ $table->string('end');
+ $table->integer('weekday');
+ $table->unsignedInteger('class_id');
+ $table->unsignedInteger('section_id');
+ $table->unsignedInteger('course_id');
+ $table->unsignedInteger('session_id');
$table->timestamps();
});
}
diff --git a/database/migrations/2021_10_07_134023_create_assigned_teachers_table.php b/database/migrations/2021_10_07_134023_create_assigned_teachers_table.php
new file mode 100644
index 000000000..b91f31dbc
--- /dev/null
+++ b/database/migrations/2021_10_07_134023_create_assigned_teachers_table.php
@@ -0,0 +1,37 @@
+id();
+ $table->unsignedInteger('teacher_id');
+ $table->unsignedInteger('semester_id');
+ $table->unsignedInteger('class_id');
+ $table->unsignedInteger('section_id');
+ $table->unsignedInteger('course_id');
+ $table->unsignedInteger('session_id');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('assigned_teachers');
+ }
+}
diff --git a/database/migrations/2018_04_01_195715_create_account_sectors_table.php b/database/migrations/2021_10_09_061039_create_grading_systems_table.php
old mode 100755
new mode 100644
similarity index 51%
rename from database/migrations/2018_04_01_195715_create_account_sectors_table.php
rename to database/migrations/2021_10_09_061039_create_grading_systems_table.php
index 7a7c74681..c6ab4254f
--- a/database/migrations/2018_04_01_195715_create_account_sectors_table.php
+++ b/database/migrations/2021_10_09_061039_create_grading_systems_table.php
@@ -1,10 +1,10 @@
increments('id');
- $table->string('name');
- $table->string('type');
- $table->integer('school_id')->unsigned();
- $table->integer('user_id')->unsigned();
+ Schema::create('grading_systems', function (Blueprint $table) {
+ $table->id();
+ $table->string('system_name');
+ $table->unsignedInteger('class_id');
+ $table->unsignedInteger('semester_id');
+ $table->unsignedInteger('session_id');
$table->timestamps();
});
}
@@ -30,6 +30,6 @@ public function up()
*/
public function down()
{
- Schema::dropIfExists('account_sectors');
+ Schema::dropIfExists('grading_systems');
}
}
diff --git a/database/migrations/2021_10_16_123559_create_final_marks_table.php b/database/migrations/2021_10_16_123559_create_final_marks_table.php
new file mode 100644
index 000000000..edee620c5
--- /dev/null
+++ b/database/migrations/2021_10_16_123559_create_final_marks_table.php
@@ -0,0 +1,40 @@
+id();
+ $table->float('calculated_marks')->default(0);
+ $table->float('final_marks')->default(0);
+ $table->text('note')->nullable();
+ $table->unsignedInteger('student_id');
+ $table->unsignedInteger('class_id');
+ $table->unsignedInteger('section_id');
+ $table->unsignedInteger('course_id');
+ $table->unsignedInteger('semester_id');
+ $table->unsignedInteger('session_id');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('final_marks');
+ }
+}
diff --git a/database/migrations/2021_11_26_040801_create_assignments_table.php b/database/migrations/2021_11_26_040801_create_assignments_table.php
new file mode 100644
index 000000000..6d68ded18
--- /dev/null
+++ b/database/migrations/2021_11_26_040801_create_assignments_table.php
@@ -0,0 +1,39 @@
+id();
+ $table->unsignedInteger('teacher_id');
+ $table->unsignedInteger('semester_id');
+ $table->unsignedInteger('class_id');
+ $table->unsignedInteger('section_id');
+ $table->unsignedInteger('course_id');
+ $table->unsignedInteger('session_id');
+ $table->string('assignment_name');
+ $table->string('assignment_file_path');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('assignments');
+ }
+}
diff --git a/database/seeders/AcademicSettingSeeder.php b/database/seeders/AcademicSettingSeeder.php
new file mode 100644
index 000000000..012d78dd1
--- /dev/null
+++ b/database/seeders/AcademicSettingSeeder.php
@@ -0,0 +1,19 @@
+count(1)->create();
+ }
+}
diff --git a/database/seeds/FeesTableSeeder.php b/database/seeders/AssignedTeacherSeeder.php
old mode 100755
new mode 100644
similarity index 65%
rename from database/seeds/FeesTableSeeder.php
rename to database/seeders/AssignedTeacherSeeder.php
index bbdce2aa9..32eda889e
--- a/database/seeds/FeesTableSeeder.php
+++ b/database/seeders/AssignedTeacherSeeder.php
@@ -1,8 +1,10 @@
create();
+ //
}
}
diff --git a/database/seeds/FaqsTableSeeder.php b/database/seeders/AssignmentSeeder.php
old mode 100755
new mode 100644
similarity index 65%
rename from database/seeds/FaqsTableSeeder.php
rename to database/seeders/AssignmentSeeder.php
index 2c7e8ac39..ce810603e
--- a/database/seeds/FaqsTableSeeder.php
+++ b/database/seeders/AssignmentSeeder.php
@@ -1,8 +1,10 @@
create();
+ //
}
}
diff --git a/database/seeds/ExamsTableSeeder.php b/database/seeders/CourseAttendanceSeeder.php
old mode 100755
new mode 100644
similarity index 64%
rename from database/seeds/ExamsTableSeeder.php
rename to database/seeders/CourseAttendanceSeeder.php
index 0c8fa3c90..948186b08
--- a/database/seeds/ExamsTableSeeder.php
+++ b/database/seeders/CourseAttendanceSeeder.php
@@ -1,8 +1,10 @@
create();
+ //
}
}
diff --git a/database/seeds/BooksTableSeeder.php b/database/seeders/CourseSeeder.php
old mode 100755
new mode 100644
similarity index 64%
rename from database/seeds/BooksTableSeeder.php
rename to database/seeders/CourseSeeder.php
index 1c45b2f0d..170f8c791
--- a/database/seeds/BooksTableSeeder.php
+++ b/database/seeders/CourseSeeder.php
@@ -1,8 +1,10 @@
create();
+ //
}
}
diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php
new file mode 100644
index 000000000..5f407b54a
--- /dev/null
+++ b/database/seeders/DatabaseSeeder.php
@@ -0,0 +1,21 @@
+call([
+ AcademicSettingSeeder::class,
+ PermissionSeeder::class,
+ ]);
+ }
+}
diff --git a/database/seeders/EventSeeder.php b/database/seeders/EventSeeder.php
new file mode 100644
index 000000000..33a6278de
--- /dev/null
+++ b/database/seeders/EventSeeder.php
@@ -0,0 +1,18 @@
+forgetCachedPermissions();
+
+ // create permissions
+ Permission::create(['name' => 'create users']);
+ Permission::create(['name' => 'view users']);
+ Permission::create(['name' => 'edit users']);
+ Permission::create(['name' => 'delete users']);
+
+ Permission::create(['name' => 'promote students']);
+
+ Permission::create(['name' => 'create notices']);
+ Permission::create(['name' => 'view notices']);
+ Permission::create(['name' => 'edit notices']);
+ Permission::create(['name' => 'delete notices']);
+
+ Permission::create(['name' => 'create events']);
+ Permission::create(['name' => 'view events']);
+ Permission::create(['name' => 'edit events']);
+ Permission::create(['name' => 'delete events']);
+
+ Permission::create(['name' => 'create syllabi']);
+ Permission::create(['name' => 'view syllabi']);
+ Permission::create(['name' => 'edit syllabi']);
+ Permission::create(['name' => 'delete syllabi']);
+
+ Permission::create(['name' => 'create routines']);
+ Permission::create(['name' => 'view routines']);
+ Permission::create(['name' => 'edit routines']);
+ Permission::create(['name' => 'delete routines']);
+
+ Permission::create(['name' => 'create exams']);
+ Permission::create(['name' => 'view exams']);
+ Permission::create(['name' => 'delete exams']);
+ Permission::create(['name' => 'create exams rule']);
+ Permission::create(['name' => 'view exams rule']);
+ Permission::create(['name' => 'edit exams rule']);
+ Permission::create(['name' => 'delete exams rule']);
+ Permission::create(['name' => 'view exams history']);
+
+ Permission::create(['name' => 'create grading systems']);
+ Permission::create(['name' => 'view grading systems']);
+ Permission::create(['name' => 'edit grading systems']);
+ Permission::create(['name' => 'delete grading systems']);
+ Permission::create(['name' => 'create grading systems rule']);
+ Permission::create(['name' => 'view grading systems rule']);
+ Permission::create(['name' => 'edit grading systems rule']);
+ Permission::create(['name' => 'delete grading systems rule']);
+
+ Permission::create(['name' => 'take attendances']);
+ Permission::create(['name' => 'view attendances']);
+ Permission::create(['name' => 'update attendances type']);
+
+ Permission::create(['name' => 'submit assignments']);
+ Permission::create(['name' => 'create assignments']);
+ Permission::create(['name' => 'view assignments']);
+
+ Permission::create(['name' => 'save marks']);
+ Permission::create(['name' => 'view marks']);
+
+ Permission::create(['name' => 'create school sessions']);
+
+ Permission::create(['name' => 'create semesters']);
+ Permission::create(['name' => 'view semesters']);
+ Permission::create(['name' => 'edit semesters']);
+ Permission::create(['name' => 'assign teachers']);
+ Permission::create(['name' => 'create courses']);
+ Permission::create(['name' => 'view courses']);
+ Permission::create(['name' => 'edit courses']);
+
+ Permission::create(['name' => 'view academic settings']);
+ Permission::create(['name' => 'update marks submission window']);
+ Permission::create(['name' => 'update browse by session']);
+
+ Permission::create(['name' => 'create classes']);
+ Permission::create(['name' => 'view classes']);
+ Permission::create(['name' => 'edit classes']);
+ // Permission::create(['name' => 'delete classes']);
+
+ Permission::create(['name' => 'create sections']);
+ Permission::create(['name' => 'view sections']);
+ Permission::create(['name' => 'edit sections']);
+ // Permission::create(['name' => 'delete sections']);
+
+ $user = \App\Models\User::factory()->create([
+ 'email' => 'admin@ut.com',
+ 'first_name' => 'Hasib',
+ 'last_name' => 'Mahmud'
+ ]);
+ $user->givePermissionTo(
+ 'create school sessions',
+ 'update browse by session',
+ 'create semesters',
+ 'edit semesters',
+ 'assign teachers',
+ 'create courses',
+ 'view courses',
+ 'edit courses',
+ 'create classes',
+ 'view classes',
+ 'edit classes',
+ 'create sections',
+ 'view sections',
+ 'edit sections',
+ 'create exams',
+ 'view exams',
+ 'create exams rule',
+ 'edit exams rule',
+ 'delete exams rule',
+ 'view exams rule',
+ 'create routines',
+ 'view routines',
+ 'edit routines',
+ 'delete routines',
+ 'view marks',
+ 'view academic settings',
+ 'update marks submission window',
+ 'create users',
+ 'edit users',
+ 'view users',
+ 'promote students',
+ 'update attendances type',
+ 'view attendances',
+ 'take attendances',//Teacher only
+ 'create grading systems',
+ 'view grading systems',
+ 'edit grading systems',
+ 'delete grading systems',
+ 'create grading systems rule',
+ 'view grading systems rule',
+ 'edit grading systems rule',
+ 'delete grading systems rule',
+ 'create notices',
+ 'view notices',
+ 'edit notices',
+ 'delete notices',
+ 'create events',
+ 'view events',
+ 'edit events',
+ 'delete events',
+ 'create syllabi',
+ 'view syllabi',
+ 'edit syllabi',
+ 'delete syllabi',
+ 'view assignments'
+ );
+ }
+}
diff --git a/database/seeders/PromotionSeeder.php b/database/seeders/PromotionSeeder.php
new file mode 100644
index 000000000..ec0820b37
--- /dev/null
+++ b/database/seeders/PromotionSeeder.php
@@ -0,0 +1,18 @@
+create();
- }
-}
diff --git a/database/seeds/AccountsTableSeeder.php b/database/seeds/AccountsTableSeeder.php
deleted file mode 100755
index a6f1043f7..000000000
--- a/database/seeds/AccountsTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/AttendancesTableSeeder.php b/database/seeds/AttendancesTableSeeder.php
deleted file mode 100755
index 3db123cd1..000000000
--- a/database/seeds/AttendancesTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/CertificateTableSeeder.php b/database/seeds/CertificateTableSeeder.php
deleted file mode 100755
index d143d0ff2..000000000
--- a/database/seeds/CertificateTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/ClassesTableSeeder.php b/database/seeds/ClassesTableSeeder.php
deleted file mode 100755
index e877660b4..000000000
--- a/database/seeds/ClassesTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/CoursesTableSeeder.php b/database/seeds/CoursesTableSeeder.php
deleted file mode 100755
index 1b2fa993e..000000000
--- a/database/seeds/CoursesTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php
deleted file mode 100755
index 54a998b6f..000000000
--- a/database/seeds/DatabaseSeeder.php
+++ /dev/null
@@ -1,44 +0,0 @@
-call(SchoolsTableSeeder::class);
- $this->call(DepartmentTableSeeder::class);
- $this->call(ClassesTableSeeder::class);
- $this->call(SectionsTableSeeder::class);
- $this->call(UsersTableSeeder::class);
- $this->call(SyllabusesTableSeeder::class);
- $this->call(NoticesTableSeeder::class);
- $this->call(EventsTableSeeder::class);
- $this->call(FeesTableSeeder::class);
- $this->call(HomeworksTableSeeder::class);
- $this->call(RoutinesTableSeeder::class);
- $this->call(NotificationsTableSeeder::class);
- $this->call(ExamsTableSeeder::class);
- $this->call(GradesystemsTableSeeder::class);
- $this->call(CoursesTableSeeder::class);
- $this->call(GradesTableSeeder::class);
- $this->call(ExamForClassesTableSeeder::class);
- $this->call(AttendancesTableSeeder::class);
- $this->call(FeedbacksTableSeeder::class);
- $this->call(FormsTableSeeder::class);
- $this->call(BooksTableSeeder::class);
- $this->call(MessagesTableSeeder::class);
- $this->call(FaqsTableSeeder::class);
- $this->call(IssuedbooksTableSeeder::class);
- $this->call(AccountsTableSeeder::class);
- $this->call(AccountSectorsTableSeeder::class);
- $this->call(StudentinfosTableSeeder::class);
- $this->call(StudentboardexamsTableSeeder::class);
- $this->call(CertificateTableSeeder::class);
- }
-}
diff --git a/database/seeds/DepartmentTableSeeder.php b/database/seeds/DepartmentTableSeeder.php
deleted file mode 100755
index e3a96033f..000000000
--- a/database/seeds/DepartmentTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/EventsTableSeeder.php b/database/seeds/EventsTableSeeder.php
deleted file mode 100755
index aa787767f..000000000
--- a/database/seeds/EventsTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/ExamForClassesTableSeeder.php b/database/seeds/ExamForClassesTableSeeder.php
deleted file mode 100755
index cfc911744..000000000
--- a/database/seeds/ExamForClassesTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/FeedbacksTableSeeder.php b/database/seeds/FeedbacksTableSeeder.php
deleted file mode 100755
index 14c08a17b..000000000
--- a/database/seeds/FeedbacksTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/FormsTableSeeder.php b/database/seeds/FormsTableSeeder.php
deleted file mode 100755
index 431a9427e..000000000
--- a/database/seeds/FormsTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/GradesTableSeeder.php b/database/seeds/GradesTableSeeder.php
deleted file mode 100755
index 77191b6b4..000000000
--- a/database/seeds/GradesTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/GradesystemsTableSeeder.php b/database/seeds/GradesystemsTableSeeder.php
deleted file mode 100755
index a2921525a..000000000
--- a/database/seeds/GradesystemsTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/HomeworksTableSeeder.php b/database/seeds/HomeworksTableSeeder.php
deleted file mode 100755
index e6eb1936e..000000000
--- a/database/seeds/HomeworksTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/IssuedbooksTableSeeder.php b/database/seeds/IssuedbooksTableSeeder.php
deleted file mode 100755
index 6b10a31d0..000000000
--- a/database/seeds/IssuedbooksTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/MessagesTableSeeder.php b/database/seeds/MessagesTableSeeder.php
deleted file mode 100755
index b1ac7942b..000000000
--- a/database/seeds/MessagesTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/NoticesTableSeeder.php b/database/seeds/NoticesTableSeeder.php
deleted file mode 100755
index 492ec4d0a..000000000
--- a/database/seeds/NoticesTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/NotificationsTableSeeder.php b/database/seeds/NotificationsTableSeeder.php
deleted file mode 100755
index 57731a77f..000000000
--- a/database/seeds/NotificationsTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/RoutinesTableSeeder.php b/database/seeds/RoutinesTableSeeder.php
deleted file mode 100755
index 56d8eac83..000000000
--- a/database/seeds/RoutinesTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/SchoolsTableSeeder.php b/database/seeds/SchoolsTableSeeder.php
deleted file mode 100755
index 684ccb38f..000000000
--- a/database/seeds/SchoolsTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/SectionsTableSeeder.php b/database/seeds/SectionsTableSeeder.php
deleted file mode 100755
index d361a501c..000000000
--- a/database/seeds/SectionsTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/StudentboardexamsTableSeeder.php b/database/seeds/StudentboardexamsTableSeeder.php
deleted file mode 100755
index 9aac14f3e..000000000
--- a/database/seeds/StudentboardexamsTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/StudentinfosTableSeeder.php b/database/seeds/StudentinfosTableSeeder.php
deleted file mode 100755
index dd8ded8db..000000000
--- a/database/seeds/StudentinfosTableSeeder.php
+++ /dev/null
@@ -1,20 +0,0 @@
-states('without_group')->create();
- factory(StudentInfo::class, 25)->states('science')->create();
- factory(StudentInfo::class, 15)->states('commerce')->create();
- factory(StudentInfo::class, 10)->states('arts')->create();
- }
-}
diff --git a/database/seeds/SyllabusesTableSeeder.php b/database/seeds/SyllabusesTableSeeder.php
deleted file mode 100755
index b837a0e97..000000000
--- a/database/seeds/SyllabusesTableSeeder.php
+++ /dev/null
@@ -1,16 +0,0 @@
-create();
- }
-}
diff --git a/database/seeds/UsersTableSeeder.php b/database/seeds/UsersTableSeeder.php
deleted file mode 100755
index b02297f68..000000000
--- a/database/seeds/UsersTableSeeder.php
+++ /dev/null
@@ -1,31 +0,0 @@
-insert([
- 'name' => "hasib",
- 'email' => 'hasib@unifiedtransform.com',
- 'password' => bcrypt('secret'),
- 'role' => 'master',
- 'student_code' => 0000000,
- 'active' => 1,
- 'verified' => 1,
- ]);
-
- factory(User::class, 10)->states('admin')->create();
- factory(User::class, 10)->states('accountant')->create();
- factory(User::class, 10)->states('librarian')->create();
- factory(User::class, 30)->states('teacher')->create();
- factory(User::class, 200)->states('student')->create();
- }
-}
diff --git a/dev b/dev
deleted file mode 100644
index a0f60c897..000000000
--- a/dev
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env bash
-
-if ! [ -x "$(command -v docker-compose)" ]; then
- echo 'docker-compose is not installed on your machine. Seems you should run the docker-install executable first to help you go through' >&2
- sleep 1
- exit 1
-fi
-
-COMPOSE="docker-compose"
-
-if [ $# -gt 0 ]; then
- if [ "$1" == "artisan" ]; then
- shift 1
- $COMPOSE run --rm artisan "$@"
- elif [ "$1" == "composer" ]; then
- shift 1
- $COMPOSE run --rm composer "$@"
- elif [ "$1" == "rebuild" ]; then
- shift 1
- $COMPOSE up -d --force-recreate --no-deps --build "$@"
- $COMPOSE down
- else
- $COMPOSE "$@"
- fi
-else
- $COMPOSE ps
-fi
diff --git a/docker-compose.yml b/docker-compose.yml
old mode 100755
new mode 100644
index 3dbf8014b..17177c6c8
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,109 +1,64 @@
version: '3'
-
-#Docker Networks
-networks:
- app-network:
- driver: bridge
-
-#Volumes
-volumes:
- dbdata:
- driver: local
-
services:
- #Nginx Service
- nginx:
+ #PHP Service
+ app:
build:
context: .
- dockerfile: ./docker/nginx.dockerfile
- container_name: nginx
+ dockerfile: Dockerfile
+ image: digitalocean.com/php
+ container_name: app
+ restart: unless-stopped
+ tty: true
+ environment:
+ SERVICE_NAME: app
+ SERVICE_TAGS: dev
+ working_dir: /var/www
+ volumes:
+ - ./:/var/www
+ - ./php/local.ini:/usr/local/etc/php/conf.d/local.ini
+ networks:
+ - app-network
+
+ #Nginx Service
+ webserver:
+ image: nginx:alpine
+ container_name: webserver
+ restart: unless-stopped
+ tty: true
ports:
- - "${DOCKER_WEBSERVER_HOST}:80"
+ - "8080:80"
+ - "443:443"
volumes:
- - .:/var/www/html
- depends_on:
- - php
- - db
+ - ./:/var/www
+ - ./nginx/conf.d/:/etc/nginx/conf.d/
networks:
- app-network
#MySQL Service
db:
- image: mysql:latest
+ image: mysql:5.7.22
container_name: db
restart: unless-stopped
tty: true
ports:
- "3306:3306"
environment:
- MYSQL_DATABASE: ${DB_DATABASE}
- MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
- MYSQL_USER: ${DB_USERNAME}
- MYSQL_PASSWORD: ${DB_PASSWORD}
+ MYSQL_DATABASE: unifiedtransform
+ MYSQL_ROOT_PASSWORD: your_mysql_root_password
SERVICE_TAGS: dev
SERVICE_NAME: mysql
volumes:
- - dbdata:/var/lib/mysql
- networks:
- - app-network
-
- #PHP Service
- php:
- build:
- context: .
- dockerfile: ./docker/php.dockerfile
- container_name: php
- volumes:
- - .:/var/www/html
- ports:
- - "9000:9000"
- networks:
- - app-network
-
- #Composer Service
- composer:
- build:
- context: .
- dockerfile: ./docker/composer.dockerfile
- container_name: composer
- volumes:
- - .:/var/www/html
- working_dir: /var/www/html
- depends_on:
- - php
- user: laravel
+ - dbdata:/var/lib/mysql/
+ - ./mysql/my.cnf:/etc/mysql/my.cnf
networks:
- app-network
- entrypoint: [ 'composer', '--ignore-platform-reqs' ]
- #Artisan Service
- artisan:
- build:
- context: .
- dockerfile: ./docker/php.dockerfile
- container_name: artisan
- volumes:
- - .:/var/www/html
- depends_on:
- - db
- working_dir: /var/www/html
- user: laravel
- entrypoint: [ 'php', '/var/www/html/artisan' ]
- networks:
- - app-network
-
- #PHPMyAdmin Service
- phpmyadmin:
- depends_on:
- - db
- image: phpmyadmin/phpmyadmin:latest
- container_name: phpmyadmin
- restart: always
- ports:
- - '${DOCKER_PHPMYADMIN_HOST}:80'
- environment:
- PMA_HOST: db
- UPLOAD_LIMIT: 3000000000
- networks:
- - app-network
+#Docker Networks
+networks:
+ app-network:
+ driver: bridge
+#Volumes
+volumes:
+ dbdata:
+ driver: local
\ No newline at end of file
diff --git a/docker-install.sh b/docker-install.sh
deleted file mode 100755
index cfc145bf0..000000000
--- a/docker-install.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-if ! [ -x "$(command -v docker-compose)" ]; then
- echo 'docker-compose is not installed on your machine' >&2
- sleep 1
- echo 'Installing docker-compose'
- sleep 1
- sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- sudo chmod +x /usr/local/bin/docker-compose
- sleep 1
-fi
-
-echo "Scaffolding your app using Docker... This will take a while..."
-sleep 1
-sudo docker-compose up -d
-sudo docker-compose run --rm composer install
-sudo docker-compose run --rm artisan migrate:fresh --seed
-
-sleep 1
diff --git a/docker/composer.dockerfile b/docker/composer.dockerfile
deleted file mode 100755
index aa0cb3596..000000000
--- a/docker/composer.dockerfile
+++ /dev/null
@@ -1,5 +0,0 @@
-FROM composer:latest
-
-RUN addgroup -g 1000 laravel && adduser -G laravel -g laravel -s /bin/sh -D laravel
-
-WORKDIR /var/www/html
diff --git a/docker/nginx.dockerfile b/docker/nginx.dockerfile
deleted file mode 100755
index 6c9ded38d..000000000
--- a/docker/nginx.dockerfile
+++ /dev/null
@@ -1,10 +0,0 @@
-FROM nginx:stable-alpine
-
-ADD ./docker/nginx/nginx.conf /etc/nginx/nginx.conf
-ADD ./docker/nginx/default.conf /etc/nginx/conf.d/default.conf
-
-RUN mkdir -p /var/www/html
-
-RUN addgroup -g 1000 laravel && adduser -G laravel -g laravel -s /bin/sh -D laravel
-
-RUN chown laravel:laravel /var/www/html
diff --git a/docker/nginx/nginx.conf b/docker/nginx/nginx.conf
deleted file mode 100755
index 060e50253..000000000
--- a/docker/nginx/nginx.conf
+++ /dev/null
@@ -1,29 +0,0 @@
-user laravel;
-worker_processes auto;
-
-error_log /var/log/nginx/error.log warn;
-pid /var/run/nginx.pid;
-
-events {
- worker_connections 1024;
-}
-
-http {
- include /etc/nginx/mime.types;
- default_type application/octet-stream;
-
- log_format main '$remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent" "$http_x_forwarded_for"';
-
- access_log /var/log/nginx/access.log main;
-
- sendfile on;
- #tcp_nopush on;
-
- keepalive_timeout 65;
-
- #gzip on;
-
- include /etc/nginx/conf.d/*.conf;
-}
diff --git a/docker/php.dockerfile b/docker/php.dockerfile
deleted file mode 100755
index 75bbdebae..000000000
--- a/docker/php.dockerfile
+++ /dev/null
@@ -1,14 +0,0 @@
-FROM php:7.4-fpm-alpine
-
-ADD ./docker/php/www.conf /usr/local/etc/php-fpm.d/www.conf
-ADD ./docker/php/php.ini /usr/local/etc/php/php.ini
-
-RUN addgroup -g 1000 laravel && adduser -G laravel -g laravel -s /bin/sh -D laravel
-
-RUN mkdir -p /var/www/html
-
-RUN chown laravel:laravel /var/www/html
-
-WORKDIR /var/www/html
-
-RUN docker-php-ext-install pdo pdo_mysql
diff --git a/docker/php/php.ini b/docker/php/php.ini
deleted file mode 100755
index 7cc12b64c..000000000
--- a/docker/php/php.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-memory_limit = 64M
-upload_max_filesize = 64M
-post_max_size = 64M
-max_execution_time = 90
diff --git a/docker/php/www.conf b/docker/php/www.conf
deleted file mode 100755
index eb028e111..000000000
--- a/docker/php/www.conf
+++ /dev/null
@@ -1,439 +0,0 @@
-; Start a new pool named 'www'.
-; the variable $pool can be used in any directive and will be replaced by the
-; pool name ('www' here)
-[www]
-
-; Per pool prefix
-; It only applies on the following directives:
-; - 'access.log'
-; - 'slowlog'
-; - 'listen' (unixsocket)
-; - 'chroot'
-; - 'chdir'
-; - 'php_values'
-; - 'php_admin_values'
-; When not set, the global prefix (or NONE) applies instead.
-; Note: This directive can also be relative to the global prefix.
-; Default Value: none
-;prefix = /path/to/pools/$pool
-
-; Unix user/group of processes
-; Note: The user is mandatory. If the group is not set, the default user's group
-; will be used.
-user = laravel
-group = laravel
-
-; The address on which to accept FastCGI requests.
-; Valid syntaxes are:
-; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
-; a specific port;
-; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
-; a specific port;
-; 'port' - to listen on a TCP socket to all addresses
-; (IPv6 and IPv4-mapped) on a specific port;
-; '/path/to/unix/socket' - to listen on a unix socket.
-; Note: This value is mandatory.
-listen = 127.0.0.1:9000
-
-; Set listen(2) backlog.
-; Default Value: 511 (-1 on FreeBSD and OpenBSD)
-;listen.backlog = 511
-
-; Set permissions for unix socket, if one is used. In Linux, read/write
-; permissions must be set in order to allow connections from a web server. Many
-; BSD-derived systems allow connections regardless of permissions. The owner
-; and group can be specified either by name or by their numeric IDs.
-; Default Values: user and group are set as the running user
-; mode is set to 0660
-;listen.owner = www-data
-;listen.group = www-data
-;listen.mode = 0660
-; When POSIX Access Control Lists are supported you can set them using
-; these options, value is a comma separated list of user/group names.
-; When set, listen.owner and listen.group are ignored
-;listen.acl_users =
-;listen.acl_groups =
-
-; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
-; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
-; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
-; must be separated by a comma. If this value is left blank, connections will be
-; accepted from any ip address.
-; Default Value: any
-;listen.allowed_clients = 127.0.0.1
-
-; Specify the nice(2) priority to apply to the pool processes (only if set)
-; The value can vary from -19 (highest priority) to 20 (lower priority)
-; Note: - It will only work if the FPM master process is launched as root
-; - The pool processes will inherit the master process priority
-; unless it specified otherwise
-; Default Value: no set
-; process.priority = -19
-
-; Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user
-; or group is differrent than the master process user. It allows to create process
-; core dump and ptrace the process for the pool user.
-; Default Value: no
-; process.dumpable = yes
-
-; Choose how the process manager will control the number of child processes.
-; Possible Values:
-; static - a fixed number (pm.max_children) of child processes;
-; dynamic - the number of child processes are set dynamically based on the
-; following directives. With this process management, there will be
-; always at least 1 children.
-; pm.max_children - the maximum number of children that can
-; be alive at the same time.
-; pm.start_servers - the number of children created on startup.
-; pm.min_spare_servers - the minimum number of children in 'idle'
-; state (waiting to process). If the number
-; of 'idle' processes is less than this
-; number then some children will be created.
-; pm.max_spare_servers - the maximum number of children in 'idle'
-; state (waiting to process). If the number
-; of 'idle' processes is greater than this
-; number then some children will be killed.
-; ondemand - no children are created at startup. Children will be forked when
-; new requests will connect. The following parameter are used:
-; pm.max_children - the maximum number of children that
-; can be alive at the same time.
-; pm.process_idle_timeout - The number of seconds after which
-; an idle process will be killed.
-; Note: This value is mandatory.
-pm = dynamic
-
-; The number of child processes to be created when pm is set to 'static' and the
-; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
-; This value sets the limit on the number of simultaneous requests that will be
-; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
-; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
-; CGI. The below defaults are based on a server without much resources. Don't
-; forget to tweak pm.* to fit your needs.
-; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
-; Note: This value is mandatory.
-pm.max_children = 5
-
-; The number of child processes created on startup.
-; Note: Used only when pm is set to 'dynamic'
-; Default Value: (min_spare_servers + max_spare_servers) / 2
-pm.start_servers = 2
-
-; The desired minimum number of idle server processes.
-; Note: Used only when pm is set to 'dynamic'
-; Note: Mandatory when pm is set to 'dynamic'
-pm.min_spare_servers = 1
-
-; The desired maximum number of idle server processes.
-; Note: Used only when pm is set to 'dynamic'
-; Note: Mandatory when pm is set to 'dynamic'
-pm.max_spare_servers = 3
-
-; The number of seconds after which an idle process will be killed.
-; Note: Used only when pm is set to 'ondemand'
-; Default Value: 10s
-;pm.process_idle_timeout = 10s;
-
-; The number of requests each child process should execute before respawning.
-; This can be useful to work around memory leaks in 3rd party libraries. For
-; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
-; Default Value: 0
-;pm.max_requests = 500
-
-; The URI to view the FPM status page. If this value is not set, no URI will be
-; recognized as a status page. It shows the following informations:
-; pool - the name of the pool;
-; process manager - static, dynamic or ondemand;
-; start time - the date and time FPM has started;
-; start since - number of seconds since FPM has started;
-; accepted conn - the number of request accepted by the pool;
-; listen queue - the number of request in the queue of pending
-; connections (see backlog in listen(2));
-; max listen queue - the maximum number of requests in the queue
-; of pending connections since FPM has started;
-; listen queue len - the size of the socket queue of pending connections;
-; idle processes - the number of idle processes;
-; active processes - the number of active processes;
-; total processes - the number of idle + active processes;
-; max active processes - the maximum number of active processes since FPM
-; has started;
-; max children reached - number of times, the process limit has been reached,
-; when pm tries to start more children (works only for
-; pm 'dynamic' and 'ondemand');
-; Value are updated in real time.
-; Example output:
-; pool: www
-; process manager: static
-; start time: 01/Jul/2011:17:53:49 +0200
-; start since: 62636
-; accepted conn: 190460
-; listen queue: 0
-; max listen queue: 1
-; listen queue len: 42
-; idle processes: 4
-; active processes: 11
-; total processes: 15
-; max active processes: 12
-; max children reached: 0
-;
-; By default the status page output is formatted as text/plain. Passing either
-; 'html', 'xml' or 'json' in the query string will return the corresponding
-; output syntax. Example:
-; http://www.foo.bar/status
-; http://www.foo.bar/status?json
-; http://www.foo.bar/status?html
-; http://www.foo.bar/status?xml
-;
-; By default the status page only outputs short status. Passing 'full' in the
-; query string will also return status for each pool process.
-; Example:
-; http://www.foo.bar/status?full
-; http://www.foo.bar/status?json&full
-; http://www.foo.bar/status?html&full
-; http://www.foo.bar/status?xml&full
-; The Full status returns for each process:
-; pid - the PID of the process;
-; state - the state of the process (Idle, Running, ...);
-; start time - the date and time the process has started;
-; start since - the number of seconds since the process has started;
-; requests - the number of requests the process has served;
-; request duration - the duration in µs of the requests;
-; request method - the request method (GET, POST, ...);
-; request URI - the request URI with the query string;
-; content length - the content length of the request (only with POST);
-; user - the user (PHP_AUTH_USER) (or '-' if not set);
-; script - the main script called (or '-' if not set);
-; last request cpu - the %cpu the last request consumed
-; it's always 0 if the process is not in Idle state
-; because CPU calculation is done when the request
-; processing has terminated;
-; last request memory - the max amount of memory the last request consumed
-; it's always 0 if the process is not in Idle state
-; because memory calculation is done when the request
-; processing has terminated;
-; If the process is in Idle state, then informations are related to the
-; last request the process has served. Otherwise informations are related to
-; the current request being served.
-; Example output:
-; ************************
-; pid: 31330
-; state: Running
-; start time: 01/Jul/2011:17:53:49 +0200
-; start since: 63087
-; requests: 12808
-; request duration: 1250261
-; request method: GET
-; request URI: /test_mem.php?N=10000
-; content length: 0
-; user: -
-; script: /home/fat/web/docs/php/test_mem.php
-; last request cpu: 0.00
-; last request memory: 0
-;
-; Note: There is a real-time FPM status monitoring sample web page available
-; It's available in: /usr/local/share/php/fpm/status.html
-;
-; Note: The value must start with a leading slash (/). The value can be
-; anything, but it may not be a good idea to use the .php extension or it
-; may conflict with a real PHP file.
-; Default Value: not set
-;pm.status_path = /status
-
-; The ping URI to call the monitoring page of FPM. If this value is not set, no
-; URI will be recognized as a ping page. This could be used to test from outside
-; that FPM is alive and responding, or to
-; - create a graph of FPM availability (rrd or such);
-; - remove a server from a group if it is not responding (load balancing);
-; - trigger alerts for the operating team (24/7).
-; Note: The value must start with a leading slash (/). The value can be
-; anything, but it may not be a good idea to use the .php extension or it
-; may conflict with a real PHP file.
-; Default Value: not set
-;ping.path = /ping
-
-; This directive may be used to customize the response of a ping request. The
-; response is formatted as text/plain with a 200 response code.
-; Default Value: pong
-;ping.response = pong
-
-; The access log file
-; Default: not set
-;access.log = log/$pool.access.log
-
-; The access log format.
-; The following syntax is allowed
-; %%: the '%' character
-; %C: %CPU used by the request
-; it can accept the following format:
-; - %{user}C for user CPU only
-; - %{system}C for system CPU only
-; - %{total}C for user + system CPU (default)
-; %d: time taken to serve the request
-; it can accept the following format:
-; - %{seconds}d (default)
-; - %{miliseconds}d
-; - %{mili}d
-; - %{microseconds}d
-; - %{micro}d
-; %e: an environment variable (same as $_ENV or $_SERVER)
-; it must be associated with embraces to specify the name of the env
-; variable. Some exemples:
-; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
-; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
-; %f: script filename
-; %l: content-length of the request (for POST request only)
-; %m: request method
-; %M: peak of memory allocated by PHP
-; it can accept the following format:
-; - %{bytes}M (default)
-; - %{kilobytes}M
-; - %{kilo}M
-; - %{megabytes}M
-; - %{mega}M
-; %n: pool name
-; %o: output header
-; it must be associated with embraces to specify the name of the header:
-; - %{Content-Type}o
-; - %{X-Powered-By}o
-; - %{Transfert-Encoding}o
-; - ....
-; %p: PID of the child that serviced the request
-; %P: PID of the parent of the child that serviced the request
-; %q: the query string
-; %Q: the '?' character if query string exists
-; %r: the request URI (without the query string, see %q and %Q)
-; %R: remote IP address
-; %s: status (response code)
-; %t: server time the request was received
-; it can accept a strftime(3) format:
-; %d/%b/%Y:%H:%M:%S %z (default)
-; The strftime(3) format must be encapsuled in a %{`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `