Skip to content

Latest commit

 

History

History
417 lines (312 loc) · 15.9 KB

CHANGELOG.md

File metadata and controls

417 lines (312 loc) · 15.9 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[5.2.0] - (30/11/2021)

Changed

  • Logic Groups now use the database for quick audience lookup

[5.1.2] - (22/10/2021)

Changed

  • Updated forn schema version to 3

[5.1.1] - (21/10/2021)

Fixed

  • participant middleware was being loaded on the admin side of modules

[5.1.0] - (18/10/2021)

Added

  • Soft deletes on most models, and ability to restore the models and their children

[5.0.2] - (23/09/2021)

Changed

  • Activity Instances return dummy models if the control model does not exist

[5.0.1] - (22/09/2021)

Changed

  • Resolve Transformer contract rather than using VFGTransformer.
  • PR-344: Use new form schema
  • Fix client caching not properly caching response

Added

  • Add position to js variables
  • participant-activity and participant-module middleware groups
  • Migrations to update settings
  • Added a title prefix to resource
  • Name the main module route 'module.admin' and 'module.participant'

5.0.0 - (11/08/2021)

Removed

  • Cookies warning blade template is no longer included with the SDK

[5.0.0-rc1] - (11/08/2021)

Fixed

  • When support redirects to a module page, the query string is added to the new redirection
  • Handle error thrown by the ControlServiceProvider when settings retrieved in the service provider due to no set app key

Added

  • Image URL for module instance and activity models
  • Added a blade wrapper around content and the frontend body, to allow for further html customisations
  • Added Setting framework for global and user settings (portal-147, portal-265)
  • Add more injected data that js can access
    • Old input
    • Validation errors
    • All named routes
  • config values support.url and support.api_url that can be used to get the base url or api url.

Changed

  • Upgraded from PHP 7.4 to PHP 8.0
  • Upgraded from Laravel 6.0 to Laravel 8.0
  • Use modern factories for everything rather than legacy factories. If your tests use any factories from Control or the SDK, you'll need to change them to use modern factories.
  • Changed the variable names to be injected for JavaScript use, and do so through a view composer for all Bristol SU bases.
  • Add hasUser, hasGroup and hasRole to the Authentication contract.
  • Neatened up middleware groups to only those documented

Removed

  • Moved authentication to the portal-auth package
    • Moved Passport Service provider
    • Moved the `BristolSU\Support\Authentication\Contracts\Authentication implementations
    • Moved the request->user() function override to the portal-auth package
    • Moved everything in the BristolSU\Support\User namespace to package.
      • BristolSU\Support\User\User -> BristolSU\Auth\User\AuthenticationUser
      • BristolSU\Support\User\UserRepository -> BristolSU\Auth\User\AuthenticationUserRepository
      • BristolSU\Support\User\Contracts\UserRepository -> BristolSU\Auth\User\Contracts\AuthenticationUserRepository
      • User authentication resolvers for both API and Web
      • BristolSU\Support\User\Contracts\UserAuthentication -> BristolSU\Auth\User\Contracts\AuthenticationUserResolver
    • CheckAdminIsAtLeastUser obsolete because now handled in the Authentication
    • getDatabaseUser() and setDatabaseUser() from testing - tests no longer use database users
    • Deleted BristolSU\ActivityInstance\AuthenticationProvider\ActivityInstanceProvider as now handled through WebRequestActivityInstanceResolver and ApiActivityInstanceResolver
    • BristolSU\Testing\ActivityInstance\LaravelAuthActivityInstanceResolver changed to use session rather than the whole laravel auth system, and renamed to BristolSU\Testing\ActivityInstance\SessionActivityInstanceResolver
  • Simplified default header (portal-226)
  • Removed the passport dependency
  • Removed support for the blade partials cookies_warning and analytics

4.7.6 - (20/03/2021)

Fixed

  • portal-19: Set action history messages to a text not string
  • portal-330: Stop UpdateProgress from timing out by chunking resulting jobs

4.7.5 - (06/03/2021)

Changed

  • portal-85: Only update progress snapshots when changes have been made

4.7.4 - (09/09/2020)

Fixed

  • ServiceRequest resolves from contract not concretion

4.7.3 - (09/09/2020)

Changed

  • portal-123: Change the name of registerConnection to registerConnector
  • Updated dependencies

Fixed

  • portal-124: Register services using the correct alias

4.7.2 - (24/08/2020)

Added

  • findForPassport method to the Database User to allow for passport API connection

4.7.1 - (15/08/2020)

Added

  • Relationship between the activity instance and progress models
  • Relationship between the module instance and module instance progress models
  • ProgressRepository for retrieving progress information from the database

4.7.0 - (07/08/2020)

Changed

  • Laravel Passport upgraded to v9
  • Publish groups. All modules can now be published with the module tag

Added

  • registerAction method in Service Provider to register an action.
  • Completion Condition array in service provider
  • Registering services extracted to base service provider
  • Registering filters in array in the service provider
  • First draft of documentation

4.6.1 - (16/06/2020)

Removed

  • Removed the AirTable progress integration on

4.6.0 - (15/06/2020)

Added

  • Progress framework for taking snapshots and exporting the progress
  • participantName method to the Activity Instance

Changed

  • ModuleInstance Evaluator now returns the percentage.

4.5.1 - (12/05/2020)

Changed

  • Removed prophecy from testcase

4.5 - (12/05/2020)

Added

  • AudienceMemberFactory::fromUserInLogic to get an audience member of a user filtered to a logic group
  • CachedAudienceMemberFactory to cache audience member results
  • Use AudienceMemberFactory::fromUserInLogic in LogicAudience
  • ActivityInstanceRepository::allForResource

Changed

  • ActivityRepository::allForAdministrator returns inactive and disabled activities too

4.4.1 - (27/04/2020)

Changed

  • Update dependencies
  • Set filter caching to 15 minutes
  • Allow filter caching duration to be set through the environment variables

4.4 - (23/04/2020)

Added

  • Module instance groupings table
  • grouping_id and order columns on module_instance
  • ModuleInstance::grouping relationship

4.3.3 - (22/04/2020)

Changed

  • Updated Dependencies

4.3.2 - (03/04/2020)

Changed

  • Module instance checks against being disabled or not active are only made for participants

Added

  • moduleparticipant middleware group to mark the participant side of a module

4.3.1 - (02/04/2020)

Added

  • Ability to control caching of filters through config

Fixed

  • Script tag id for google analytics takes from config

4.3 - (23/03/3030)

Added

  • should_queue column to action instances
  • If should_queue is false, the action is dispatched immediately

4.2 - (23/03/2020)

Changed

  • Action is now an abstract class not an interface
  • All actions must return an ActionResponse class instance
  • All actions must define a 'run' method instead of a 'handle' method

Added

  • Created action history table
  • HasHistory trait for actions
  • Get all history through an action instance

4.1 - (19/03/2020)

Added

  • UserTagged and RoleTagged filters
  • \BristolSU\Support\Action\ActionInstanceRepository::forModuleInstance method
  • \BristolSU\Support\Action\ActionInstanceRepository::getById method
  • \BristolSU\Support\Action\ActionInstanceRepository::update method
  • \BristolSU\Support\Action\ActionInstanceRepository::delete method
  • \BristolSU\Support\Action\ActionInstanceRepository::all method
  • \BristolSU\Support\Completion\CompletionConditionInstanceRepository::getById method
  • \BristolSU\Support\Completion\CompletionConditionInstanceRepository::update method
  • \BristolSU\Support\Filters\FilterInstanceRepository::getById method
  • \BristolSU\Support\Filters\FilterInstanceRepository::update method
  • \BristolSU\Support\Filters\FilterInstanceRepository::delete method
  • \BristolSU\Support\Logic\LogicRepository::getById method
  • \BristolSU\Support\Logic\LogicRepository::update method
  • \BristolSU\Support\Logic\LogicRepository::delete method
  • \BristolSU\Support\ModuleInstance\ModuleInstanceRepository::update method
  • \BristolSU\Support\ModuleInstance\ModuleInstanceRepository::delete method

4.0 - (18/03/2020)

Changed

  • Action Instances, Activities, Module Instances and Logics retrieve the user ID from UserAuthentication not Authentication
  • Changed event_field in action_instance_fields table to action_value
  • Allow text to be entered into the action value, replace any {{event:field}} with the event 'field' value
  • Added static Action::options() method to return a form schema
  • ActionInstance::action_schema property

Removed

  • getFields and getFieldMetaData from Action contract
  • ActionInstance::action_fields property

[3.1.2] - (18/03/2020)

Fixed

  • Fix bug with ApiAuthentication implementation picking up a request body as a query string

3.1.1 - (18/03/2020)

Added

  • Middleware to throw an ActivityDisabled exception if the activity is disabled
  • Middleware to throw a ModuleInstanceDisabled exception if the module instance is disabled

3.1 - (16/03/2020)

Changed

  • Activity Instance related middleware now only runs on participant routes

Added

  • Middleware to check the user in Authentication belongs to the database user
  • Middleware to check the logged in group and role are valid
  • Middleware to check the Activity Instance is owned by the logged in credentials
  • Use the request query parameters to save authentication information, as opposed to the session
  • Use request query parameters to get activity instance information, as opposed to the session

Removed

  • LaravelAuthActivityInstanceResolver class
  • WebSessionAuthentication class
  • LogIntoActivityInstance Middleware

3.0.2 - (11/03/2020)

Changed

  • Removed Global Scope from the relationship between a connection and a module instance service

Removed

  • Remove BristolSU\Support\ModuleInstance\Contracts\Evaluator\ActivityInstanceEvaluator::evaluateAdministrator function
  • Remove BristolSU\Support\ModuleInstance\Contracts\Evaluator\ModuleInstanceEvaluator::evaluateAdministrator activity instance parameter

3.0.1 - (28/02/2020)

Added

BristolSU\Support\Testing\HandlesAuthorization to help with testing modules with permissions

3.0 - (22/02/2020)

Changed

  • Filter::options() should now return a \FormSchema\Schema\Form class
  • Filter::toArray() converts the FormSchema to a Vue Form Generator schema
  • Updated all filters supplied by the SDK
  • CompletionCondition::options() should now return a \FormSchema\Schema\Form class
  • ModuleBuilder calls toArray on the completion condition as opposed to casting itself.
  • Activity Repository::active() now returns only activities that are enabled

Added

  • Implement CompletionCondition::toArray and ::toJson for converting completion conditions to array/json representations.
  • enabled column to the activities and module_instances tables
  • enabled scope to an Activity model
  • enabled scope to a Module Instance model
  • \BristolSU\Support\ModuleInstance\ModuleInstanceRepository::allThroughActivity() to get all module instances for an activity
  • \BristolSU\Support\ModuleInstance\ModuleInstanceRepository::allEnabledThroughActivity() to get all enabled module instances for an activity
  • user_id column to an Activity, Module Instance, Action Instance and Logic Group
  • 'For' property to a Module model. This property is either user, group or role and allows modules to, e.g., require a group to be logged in to use the module.
  • HasRevision trait for tracking model revisions in the SDK
  • \BristolSU\Support\Completion\Contracts\CompletionConditionTester::evaluatePercentage method added for getting the percentage complete of a completion condition

2.1 - (05/02/2020)

Added

  • .gitattributes file
  • \BristolSU\Support\User\UserRepository::getById method for retrieving a user by ID
  • \BristolSU\Support\User\UserRepository::setRememberToken to set a users remember token
  • \BristolSU\Support\User\User::getEmailForVerification to get the email to use for verification
  • \BristolSU\Support\User\User::getEmailForPasswordReset to get the email to use for password resets

2.0.1 - (05/02/2020)

Added

  • Integration to use a user as a notifiable in the laravel framework, for mail

2.0 - (04/02/2020)

Added

  • doctrine/dbal dependency for editing migrations
  • Logout function for UserAuthentication
  • UserRepository::getWhereEmail function to retrieve a user via email
  • UserRepository::getFromControlId function to retrieve a user via control ID
  • UserRepository::getFromRememberToken function to get by remember token
  • Functions to get the control user from the database user

Removed

  • Forename, surname, email and student ID columns from database user model.
  • UserRepository::getWhereIdentity function

1.1 - (30/01/2020)

Changed

  • Bumped the control dependency to version 1 (stable)
  • Allow Module Instance Setting values to be null
  • Refresh the module builder instance in the factory

Added

  • Laravel Session Authentication

Removed

  • Laravel Web Authentication

1.0.1 - (23/01/2020)

Changed

  • Generate a new module builder each time the module factory is used
  • Make module instance setting values nullable
  • Connection ID attribute is now fillable for a module instance service
  • Prefer stable dependencies

1.0 - (17/01/2020)

Added

  • Initial Release