Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade from ZendFramework 1 #47

Open
22 of 44 tasks
adamfranco opened this issue Dec 2, 2021 · 0 comments · May be fixed by #66
Open
22 of 44 tasks

Upgrade from ZendFramework 1 #47

adamfranco opened this issue Dec 2, 2021 · 0 comments · May be fixed by #66
Assignees

Comments

@adamfranco
Copy link
Member

adamfranco commented Dec 2, 2021

The CourseCatalog currently uses an out-of-date version of ZendFramework. Either upgrade to a new version of ZF or migrate to Symfony.

  • All controller methods ported in...
    • Admin
    • Archive
    • Bookmarks
    • Catalogs
    • Courses
    • Export
    • Json
    • Offerings
    • Resources
    • Schedules
    • Terms
    • Topics
    • Utils
  • Set front page route
  • Migrate application cache to use the Symfony Cache service.
  • New theme wrapper applied
  • Menu system added
  • Port CLI tools for migrating from Banner.
    • Migrate CatalogSync to services
    • Add strict typing to interfaces
    • Port mail sending to Symfony mailer
    • Use console IO for output
    • Ensure that OCI update actually happens in a single transaction or at least a transaction per table to allow reads to be successful during update (currently viewing the tables via phpmyadmin exposes the rows as they are inserted). It turns out that the phpmyadmin row estimate is not transaction aware, but SELECT COUNT(*) FROM <table> doesn't change while INSERT statements are happening
    • Pass $allowedBlkCodes as an array from the environment.
  • Port CLI tools for exporting archives
  • Update Controller actions to cast parameters to osid_id_Id objects
  • Update constructors to short member assignment style
  • Remove any commented out code.
  • Include remaining libraries via composer rather than Git submodules:
    • fsmparser
    • jsdifflib
    • lazysessions (probably not needed with symfony...)
    • osid-phpkit
  • Ensure final code meets coding style
  • Ensure final code has no/minimal deprecations for PHP8.3 compatibility.
  • Add favicon
  • Add phpunit tests for application page load success

Follow-up:

  • Ensure that Controller actions use consistent ordering and inclusion of catalog and term parameters.
  • Ensure that Controller actions use consistent naming for arguments
  • migrate usage of setCacheControlHeaders().
  • Update direct usage of header() for errors to use a Symfony Response
  • Update SAML login to avoid creating a session prior to successful login.
  • Ensure that responses to /courses/instructorxml/{instructorId}/{catalogId} with not-found instructors are cacheable.
@adamfranco adamfranco self-assigned this Dec 2, 2021
adamfranco added a commit that referenced this issue Sep 26, 2024
Generated with
    composer create-project symfony/skeleton:"6.4.*" catalog-symfony
then manually merged into the application directory.
adamfranco added a commit that referenced this issue Sep 26, 2024
For now we can skip any reorganization, addition of namespaces, and other
refactoring of the main data model while getting controllers and views
ported over to Symfony.
@adamfranco adamfranco linked a pull request Sep 26, 2024 that will close this issue
adamfranco added a commit that referenced this issue Sep 27, 2024
The use of '/' as a separator in subcomponents turned out to be a bad idea
because these slashes need to be escaped as %2F, but these escaped slashes
can interfere with some webserver configuration.

For example Apache redirects require the NE "No Escape" option to preserve
%2F slashes without double-escaping:

    # Redirect all traffic to https
    #
    # We're using mod_rewrite here rather than mod_alias's `Redirect`
    # because mod_alias doesn't allow the "NE" == "noescape" parameter
    # that allows URLs includinging encoded slashes (%2F) to be returned
    # without double-escaping.
    RewriteRule .* https://<%= node["app_domain"] %>$0 [L,R=301,NE]

Similarly, Symfony refuses to allow slashes in parameters passed as tokens
in routes.

To address this problematic choice, use '.' as a separator of
sub-components in identifiers. Periods don't require special escaping in
URLs or database queries, though they do in regular expressions.
adamfranco added a commit that referenced this issue Sep 27, 2024
adamfranco added a commit that referenced this issue Oct 1, 2024
adamfranco added a commit that referenced this issue Oct 3, 2024
adamfranco added a commit that referenced this issue Oct 8, 2024
adamfranco added a commit that referenced this issue Oct 9, 2024
adamfranco added a commit that referenced this issue Oct 9, 2024
adamfranco added a commit that referenced this issue Nov 25, 2024
This uses an encoded JSON array to pass from shell, to YAML.
adamfranco added a commit that referenced this issue Dec 2, 2024
In the old version of the catalog we had a list of adminstrator ids in a
configuration file to provide access to management features. Instead,
shift that assignment off to Azure AD to make it easier to review and
modify via the AzureAD admin tools.
adamfranco added a commit that referenced this issue Dec 4, 2024
adamfranco added a commit that referenced this issue Dec 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant