|
|
(7 intermediate revisions by the same user not shown) |
Line 12: |
Line 12: |
|
| |
|
| It is similar to the [[SDSM:Historical_Changes|Historical Changes]] part | | It is similar to the [[SDSM:Historical_Changes|Historical Changes]] part |
| but that it describes work which was prepared and published in a Git branch | | but that it describes work which was prepared and published in Git feature |
| but it was deemed premature to merge it to the trunk, such as due to a
| | branches that are longer lived and not yet merged to the trunk; in |
| desire for more testing first, or because it was possibly unfinished; in
| |
| contrast, ''Historical'' is for work that ''was'' merged to trunk. | | contrast, ''Historical'' is for work that ''was'' merged to trunk. |
|
| |
|
| [[#top|RETURN]] | | [[#top|RETURN]] |
|
| |
|
| == SDS Laravel: Changes to Third-Party Dependencies == | | == SDS Laravel: Removed Application Functionality == |
|
| |
|
| === 2024 Jun 17: Upgrade To Laravel 10 and Vue 3 === | | === 2024 Jun 25: Remove Screens For Application For Student Enrollment By Parents === |
|
| |
|
| ==== Summary of PHP Dependency Upgrades or Removals ====
| | This task removed the ''SDS Laravel'' screens that supported parents |
| | applications for student enrollment of their children directly in '''SDS'''. |
| | The functionality became obsolete and unused when Blackbaud started being |
| | used for applications instead, and applications were imported to '''SDS''' |
| | from Blackbaud by an automated process. |
|
| |
|
| This task updated <code>composer.json</code> to require the latest
| | These 20 source files were simply removed: |
| PHP-8.1-compatible versions of all PHP library dependencies,
| |
| in particular taking Laravel from <code>8.x</code> to <code>10.x</code>.
| |
|
| |
|
| To be specific, it made these dependency changes:
| | * app/Http/Controllers/Application/ApplicationController.php |
| | * app/Http/Controllers/Application/FamilyInfoController.php |
| | * app/Http/Controllers/Application/OtherController.php |
| | * app/Http/Controllers/Application/ParentInfoController.php |
| | * app/Http/Controllers/Application/ParentQuestionController.php |
| | * app/Http/Controllers/Application/StudentInfoController.php |
| | * app/Http/Controllers/Application/StudentQuestionController.php |
| | * app/Http/Controllers/System/EditBoardingQuestionController.php |
| | * resources/js/components/application/AddressInfo.vue |
| | * resources/js/components/application/FamilyStatus.vue |
| | * resources/js/components/application/GuardianHolder.vue |
| | * resources/js/components/application/GuardianInfo.vue |
| | * resources/views/application/home.blade.php |
| | * resources/views/application/index.blade.php |
| | * resources/views/application/parentinfo/index.blade.php |
| | * resources/views/application/studentinfo/index.blade.php |
| | * resources/views/includes/application_menu.blade.php |
| | * resources/views/system/boarding_question/create.blade.php |
| | * resources/views/system/boarding_question/edit.blade.php |
| | * resources/views/system/boarding_question/index.blade.php |
|
| |
|
| * barryvdh/laravel-debugbar (^3.7 to ^3.13.5)
| | These 3 source files were updated to remove references to the removed ones: |
| * directorytree/ldaprecord-laravel (^2.7.3 to ^3.3.3)
| |
| * etern8ty/beanstream (dev-master unchanged and is custom fork)
| |
| * fakerphp/faker (^1.23.1 unchanged)
| |
| * fideloper/proxy (^4.4.2 removed as laravel/framework has its upgrade built-in)
| |
| * goldspecdigital/laravel-eloquent-uuid (^8.0.1 removed as laravel/framework has its upgrade built-in)
| |
| * guzzlehttp/guzzle (^7.8.1 unchanged)
| |
| * intervention/image (^2.7.2 unchanged but upgrade exists)
| |
| * juliomotol/laravel-auth-timeout (^3.1.1 to ^4.1)
| |
| * lab404/laravel-impersonate (^1.7.5 unchanged)
| |
| * laravel/framework (^8.83.27 to ^10.48.12)
| |
| * laravel/helpers (^1.7 unchanged)
| |
| * laravel/tinker (^2.9 unchanged)
| |
| * laravel/ui (^3.4.6 to 4.5.2)
| |
| * mockery/mockery (^1.6.12 unchanged)
| |
| * nunomaduro/collision (^5.11 to ^7.10)
| |
| * phpunit/phpunit (^10.5.20 to ^10.5.21)
| |
| * spatie/laravel-ignition (^1.6.4 to ^2.8)
| |
| * staudenmeir/eloquent-has-many-deep (^1.14.4 to ^1.19.4)
| |
|
| |
|
| ==== Summary of JavaScript Dependency Upgrades or Removals ====
| | * resources/js/app.js |
| | * resources/views/includes/menu.blade.php |
| | * routes/web.php |
|
| |
|
| This task updated <code>package.json</code> to require the latest
| | Note that Laravel Eloquent Models related to this functionality were |
| versions of all JavaScript library dependencies,
| | explicitly left alone, so they can still thoroughly represent the actual |
| in particular taking Vue from <code>2.x</code> to <code>3.x</code>.
| | database structure, and they can still be used by other processes. |
| | | Likewise, references to student applications in other screens were left |
| To be specific, it made these dependency changes:
| | alone as they may still be relevant to the Blackbaud process or for history. |
| | |
| * @fortawesome/fontawesome-free (^5.15.4 unchanged)
| |
| * axios (^0.27.2 unchanged)
| |
| * bootstrap (^4.6.2 unchanged)
| |
| * bootstrap-select (^1.13.18 unchanged)
| |
| * cross-env (^7.0.3 unchanged)
| |
| * font-awesome (^4.7.0 unchanged)
| |
| * jquery (^3.7.1 unchanged)
| |
| * jquery-ui (^1.13.3 unchanged)
| |
| * laravel-mix (^5.0.9 unchanged)
| |
| * lodash (^4.17.21 unchanged)
| |
| * moment (^2.30.1 unchanged)
| |
| * popper.js (^1.16.1 unchanged)
| |
| * resolve-url-loader (^3.1.5 unchanged)
| |
| * sass (^1.77.4 unchanged)
| |
| * sass-loader (^8.0.2 unchanged)
| |
| * tempusdominus-bootstrap-4 (^5.39.2 unchanged)
| |
| * tempusdominus-core (^5.19.3 unchanged)
| |
| * vue (^2.7.16 unchanged)
| |
| * vue-bootstrap-datetimepicker (^5.0.1 unchanged)
| |
| * vue-template-compiler (^2.7.16 unchanged)
| |
| | |
| ==== Changes For laravel/framework Upgrade's Removal of "dates" Model Attribute ====
| |
| | |
| This task also updated 51 PHP source files to be compatible with a breaking
| |
| change made by Laravel itself with version 10.
| |
| | |
| Laravel supported a "dates" model attribute through version 9, and then
| |
| Laravel 10 removed it. The function of this was to enumerate database/model
| |
| fields that were supposed to be automatically converted to Carbon DateTime
| |
| objects; so under Laravel 8, any "dates" declarations would be respected,
| |
| while under Laravel 10 they would be ignored.
| |
| | |
| Compare:
| |
| | |
| * https://laravel.com/api/9.x/Illuminate/Database/Eloquent/Concerns/HasAttributes.html
| |
| * https://laravel.com/api/10.x/Illuminate/Database/Eloquent/Concerns/HasAttributes.html
| |
| | |
| As a result, simply upgrading ''SDS Laravel'' from Laravel 8 to 10 resulted
| |
| in many parts of the app breaking in various ways including when simply
| |
| visiting the post-login home screen, as PHP died with errors like
| |
| <code>Call to a member function format() on int</code>.
| |
| | |
| To fix this, any instances of <code>protected $dates = ['x',...]</code>
| |
| in model classes were replaced with
| |
| <code>protected $casts = ['x'=>'datetime',...]</code>
| |
| which was the more modern way to get the same functionality, which exists
| |
| in both Laravel 8 and 10. For the few model classes that already had other
| |
| <code>$casts</code> declarations, the replacements were merged with those.
| |
| | |
| While the "dates" change could have been its own task that was merged to
| |
| trunk prior to and separately from the current Laravel 10 upgrade task, it
| |
| was combined with the latter to streamline testing, as both had potential
| |
| impacts over a large fraction of the app.
| |
| | |
| ==== Changes For goldspecdigital/laravel-eloquent-uuid Removal ====
| |
| | |
| This task also updated these 5 PHP source files to be compatible with the
| |
| replacement of <code>goldspecdigital/laravel-eloquent-uuid</code> with a
| |
| Laravel built-in:
| |
| | |
| * app/Models/Application/Application.php
| |
| * app/Models/User.php
| |
| * app/Models/User/Student.php
| |
| * app/Models/User/Teacher.php
| |
| * app/Models/User/UserContract.php
| |
| | |
| These further 3 files also referenced the trait but commented out, so not
| |
| current users but possible past or future users:
| |
| | |
| * app/Models/Application/AppUser.php
| |
| * app/Models/User/Address.php
| |
| * app/Models/User/Guardian.php
| |
| | |
| For each of the above 8 files, there were these 2 line subsitutions:
| |
| | |
| use GoldSpecDigital\LaravelEloquentUUID\Database\Eloquent\Uuid;
| |
| use Uuid;
| |
| | |
| use Illuminate\Database\Eloquent\Concerns\HasUuids;
| |
| use HasUuids;
| |
| | |
| Here is a description of the above built-in feature in Laravel 9.3+:
| |
| | |
| https://laravel.com/docs/11.x/eloquent#uuid-and-ulid-keys
| |
| | |
| The purpose of that reimplemented functionality was to empower use of
| |
| generated UUIDs for primary key fields of some database tables instead of
| |
| the serially generated integers that ''SDS Laravel'' more typically uses;
| |
| Laravel Eloquent only gained built-in support for UUIDs with version 9.3.
| |
| | |
| This task also deleted the single PHP file
| |
| <code>app/Models/Traits/Uuids.php</code> as it appeared to be unused.
| |
| | |
| ==== Changes For fideloper/proxy Removal ====
| |
| | |
| This task also updated <code>app/Http/Middleware/TrustProxies.php</code> to
| |
| be compatible with the replacement of <code>fideloper/proxy</code> with a
| |
| Laravel built-in. The changes were in 2 spots.
| |
| | |
| First was this substitution:
| |
| | |
| use Fideloper\Proxy\TrustProxies as Middleware;
| |
| | |
| use Illuminate\Http\Middleware\TrustProxies as Middleware;
| |
| | |
| Second was this substitution:
| |
| | |
| 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;
| |
| | |
| ==== Changes For juliomotol/laravel-auth-timeout Upgrade ====
| |
| | |
| This task also updated
| |
| <code>app/Http/Middleware/AuthTimeoutMiddleware.php </code> to be
| |
| compatible with the <code>juliomotol/laravel-auth-timeout</code> upgrade.
| |
| | |
| There was this 1 substitution:
| |
| | |
| use JulioMotol\AuthTimeout\Middleware\AuthTimeoutMiddleware as BaseMiddleware;
| |
| | |
| use JulioMotol\AuthTimeout\Middlewares\CheckAuthTimeout as BaseMiddleware;
| |
| | |
| Note that <code>juliomotol/laravel-auth-timeout</code> must be upgraded
| |
| simultaneously with Laravel since the former's versions 3.1.1 and 4.1
| |
| respectively require Laravel 8 and 10 respectively.
| |
| | |
| See https://github.com/juliomotol/laravel-auth-timeout/blob/master/CHANGELOG.md
| |
| for more change details and upgrade notes on that.
| |
| | |
| ==== Changes For directorytree/ldaprecord-laravel Upgrade ====
| |
| | |
| This task also made 3 distinct sets of changes to be compatible with the
| |
| <code>directorytree/ldaprecord-laravel</code> upgrade.
| |
| | |
| See also for context:
| |
| | |
| * https://ldaprecord.com/docs/laravel/v3/upgrading/
| |
| * https://ldaprecord.com/docs/laravel/v3/release-notes/
| |
| * https://github.com/DirectoryTree/LdapRecord-Laravel/releases
| |
| | |
| The first set of changes...
| |
| | |
| This task updated the 1 PHP config source file <code>config/ldap.php</code>
| |
| to account for <code>logging</code> now being an array. There was this 1
| |
| substitution:
| |
| | |
| 'logging' => env('LDAP_LOGGING', true),
| |
| | |
| 'logging' => [
| |
| 'enabled' => env('LDAP_LOGGING', true),
| |
| ],
| |
| | |
| The second set of changes...
| |
| | |
| For context, <code>directorytree/ldaprecord-laravel</code> had a PHP trait
| |
| named <code>LdapRecord\Laravel\Auth\MultiDomainAuthentication</code> which
| |
| was deprecated before version <code>2.7.3</code> and removed in version
| |
| <code>3.0.0</code>. The 1 SDS PHP source file
| |
| <code>app/Http/Controllers/Auth/LoginController.php</code> used that trait.
| |
| | |
| This task updated <code>LoginController</code> to clone into itself the
| |
| used portions of <code>MultiDomainAuthentication</code>, thus removing the
| |
| external dependency of the former on the latter.
| |
| | |
| As the removed trait was itself a sub-trait of
| |
| <code>LdapRecord\Laravel\Auth\CreatesUserProvider</code>,
| |
| <code>LoginController</code> now composed that directly and not indirectly.
| |
| | |
| Also <code>LoginController</code> gained the new protected function
| |
| <code>getLdapGuard</code> cloned from the removed trait.
| |
| | |
| Note that the function <code>getLdapGuardFromRequest</code> was ''not''
| |
| cloned from the removed trait since <code>LoginController</code> already
| |
| had its own version that overrode it.
| |
| | |
| The third set of changes...
| |
| | |
| For context, each of these 5 SDS classes composed one of the 2 classes
| |
| <code>LdapRecord\Models\Model</code> or <code>LdapRecord\Models\Scope</code>:
| |
| | |
| * app/Ldap/ExternalUser.php
| |
| * app/Ldap/Scopes/OnlyStaffUsers.php
| |
| * app/Ldap/Scopes/OnlyStudents.php
| |
| * app/Ldap/SmusStudents.php
| |
| * app/Ldap/SmusUser.php
| |
| | |
| For each of those 5, it was updated such that for any property or method it
| |
| contained which overrode or implemented a same-named one from
| |
| <code>Model</code> or <code>Scope</code>, that property or method had
| |
| explicit type annotations added to match the originals. This was required
| |
| for the SDS code to satisfy a PHP or Laravel stricture so the code runs. | |
|
| |
|
| [[#top|RETURN]] | | [[#top|RETURN]] |