Events and notifications
Generated from api/packages/*/src/Events and Template::register calls
Packages dispatch Laravel events from src/Events. The templates packages register a template type for an event and a channel with Template::register(Event, Channel, Variables): when the event fires, every active template of that type is rendered with the event’s variables and sent (Templates, Notifications). Events can also be consumed by your own listeners (Extending ulams).
Notification templates
Section titled “Notification templates”| Event | Channel | Variables class | Registered in |
|---|---|---|---|
AssignToProduct |
AssignToProductVariables |
templates-email | |
AssignToProductable |
AssignToProductableVariables |
templates-email | |
UnassignProduct |
UnassignProductVariables |
templates-email | |
UnassignProductable |
UnassignProductableVariables |
templates-email | |
AccountMustBeEnableByAdmin |
VerifyUserAccountVariables |
templates-email | |
AccountConfirmed |
AccountConfirmedVariables |
templates-email | |
UserAddedToGroup |
UserAddedToGroupVariables |
templates-email | |
UserRemovedFromGroup |
UserRemovedFromGroupVariables |
templates-email | |
PasswordChanged |
PasswordChangedVariables |
templates-email | |
AccountMustBeEnableByAdmin |
VerifyUserAccountVariables |
templates-email | |
ForgotPassword |
ResetPasswordVariables |
templates-email | |
AccountRegistered |
VerifyEmailVariables |
templates-email | |
AccountDeleted |
AccountDeletedVariables |
templates-email | |
AccountBlocked |
AccountBlockedVariables |
templates-email | |
AccountDeletionRequested |
AccountDeletionRequestedVariables |
templates-email | |
ProductAttached |
ProductAttachedVariables |
templates-email | |
OrderCreated |
OrderCreatedVariables |
templates-email | |
ConsultationAccessEnquiryAdminCreatedEvent |
ConsultationAccessEnquiryAdminCreatedVariables |
templates-email | |
ConsultationAccessEnquiryDisapprovedEvent |
ConsultationAccessEnquiryDisapprovedVariables |
templates-email | |
ConsultationAccessEnquiryApprovedEvent |
ConsultationAccessEnquiryApprovedVariables |
templates-email | |
ApprovedTermWithTrainer |
ApprovedTermWithTrainerVariables |
templates-email | |
ApprovedTerm |
ApprovedTermVariables |
templates-email | |
RejectTermWithTrainer |
RejectTermWithTrainerVariables |
templates-email | |
RejectTerm |
RejectTermVariables |
templates-email | |
ReportTerm |
ReportTermVariables |
templates-email | |
ReminderAboutTerm |
ReminderAboutTermVariables |
templates-email | |
ReminderTrainerAboutTerm |
ReminderTrainerAboutTermVariables |
templates-email | |
ChangeTerm |
ChangeTermVariables |
templates-email | |
CourseAccessEnquiryAdminCreatedEvent |
CourseAccessEnquiryAdminCreatedVariables |
templates-email | |
CourseDeadlineSoon |
DeadlineIncomingVariables |
templates-email | |
CourseFinished |
UserFinishedCourseVariables |
templates-email | |
CourseAssigned |
UserAssignedToCourseVariables |
templates-email | |
CourseUnassigned |
UserUnassignedFromCourseVariables |
templates-email | |
CoursedPublished |
PublishedCourseVariables |
templates-email | |
CourseStarted |
StartedCourseVariables |
templates-email | |
CourseAccessStarted |
AccessStartedCourseVariables |
templates-email | |
CourseAccessFinished |
AccessFinishedCourseVariables |
templates-email | |
TopicFinished |
TopicFinishedCourseVariables |
templates-email | |
UlamsImportedNewUserTemplateEvent |
ImportedNewUserVariables |
templates-email | |
UpdateProposalReady |
UpdateProposalReadyVariables |
templates-email | |
SourceCheckFailing |
SourceCheckFailingVariables |
templates-email | |
CourseContentUpdated |
CourseContentUpdatedVariables |
templates-email | |
PaymentRegistered |
PaymentRegisteredVariables |
templates-email | |
PaymentFailed |
PaymentFailedVariables |
templates-email | |
PaymentSuccess |
PaymentSuccessVariables |
templates-email | |
PaymentCancelled |
PaymentCanceledVariables |
templates-email | |
TaskAssignedEvent |
TaskAssignedVariables |
templates-email | |
TaskCompleteUserConfirmationEvent |
TaskCompleteUserConfirmationVariables |
templates-email | |
TaskCompleteRequestEvent |
TaskCompleteRequestVariables |
templates-email | |
TaskOverdueEvent |
TaskOverdueVariables |
templates-email | |
TaskIncompleteEvent |
TaskIncompleteVariables |
templates-email | |
TaskNoteCreatedEvent |
TaskNoteCreatedVariables |
templates-email | |
ManuallyTriggeredEvent |
UserVariables |
templates-email | |
ProjectSolutionCreatedEvent |
ProjectSolutionCreatedVariables |
templates-email | |
TopicTypeChanged |
TopicTypeChangedVariables |
templates-email | |
ProcessVideoStarted |
VideoProcessStartedVariables |
templates-email | |
ProcessVideoFailed |
VideoProcessFailedVariables |
templates-email | |
ProcessVideoFinished |
VideoProcessFinishedVariables |
templates-email | |
ProcessVideoState |
VideoProcessStateVariables |
templates-email | |
ReminderAboutTerm |
ReminderAboutTermVariables |
templates-email | |
WebinarTrainerAssigned |
WebinarTrainerAssignedVariables |
templates-email | |
WebinarTrainerUnassigned |
WebinarTrainerUnassignedVariables |
templates-email | |
YtProblem |
YtProblemVariables |
templates-email | |
CourseFinished |
UserFinishedCourseVariables |
templates-pdf | |
ManuallyTriggeredEvent |
UserVariables |
templates-pdf | |
ApprovedTermWithTrainer |
Sms | ApprovedTermWithTrainerVariables |
templates-sms |
ReportTerm |
Sms | ReportTermVariables |
templates-sms |
RejectTermWithTrainer |
Sms | RejectTermWithTrainerVariables |
templates-sms |
RejectTerm |
Sms | RejectTermVariables |
templates-sms |
ApprovedTerm |
Sms | ApprovedTermVariables |
templates-sms |
ReminderAboutTerm |
Sms | ReportTermVariables |
templates-sms |
ReminderTrainerAboutTerm |
Sms | ReminderTrainerAboutTermVariables |
templates-sms |
ManuallyTriggeredEvent |
Sms | UserVariables |
templates-sms |
Events by package
Section titled “Events by package”assign-without-account
Section titled “assign-without-account”| Event | Description | Templates |
|---|---|---|
AssignToProduct |
||
AssignToProductable |
||
UnassignProduct |
||
UnassignProductable |
| Event | Description | Templates |
|---|---|---|
AccountBlocked |
||
AccountConfirmed |
||
AccountDeleted |
||
AccountDeletionRequested |
||
AccountMustBeEnableByAdmin |
Email, Email | |
AccountRegistered |
||
ForgotPassword |
||
Impersonate |
||
Login |
||
Logout |
||
PasswordChanged |
||
ResetPassword |
||
UserAddedToGroup |
||
UserRemovedFromGroup |
bulk-notifications
Section titled “bulk-notifications”| Event | Description | Templates |
|---|---|---|
NotificationSent |
| Event | Description | Templates |
|---|---|---|
AbandonedCartEvent |
||
OrderCancelled |
||
OrderCreated |
||
OrderPaid |
||
ProductAddedToCart |
||
ProductAttached |
||
ProductBought |
||
ProductDetached |
||
ProductRemovedFromCart |
||
ProductableAttached |
||
ProductableDetached |
consultation-access
Section titled “consultation-access”| Event | Description | Templates |
|---|---|---|
ConsultationAccessEnquiryAdminCreatedEvent |
||
ConsultationAccessEnquiryAdminUpdatedEvent |
||
ConsultationAccessEnquiryApprovedEvent |
||
ConsultationAccessEnquiryDisapprovedEvent |
||
ConsultationAccessEnquiryEvent |
consultations
Section titled “consultations”| Event | Description | Templates |
|---|---|---|
ApprovedTerm |
Email, Sms | |
ApprovedTermWithTrainer |
Email, Sms | |
ChangeTerm |
||
RejectTerm |
Email, Sms | |
RejectTermWithTrainer |
Email, Sms | |
ReminderAboutTerm |
Email, Email, Sms | |
ReminderTrainerAboutTerm |
Email, Sms | |
ReportTerm |
Email, Sms |
course-access
Section titled “course-access”| Event | Description | Templates |
|---|---|---|
CourseAccessEnquiryAdminCreatedEvent |
||
CourseAccessEnquiryStudentCreatedEvent |
course-builder
Section titled “course-builder”| Event | Description | Templates |
|---|---|---|
ElementPatched |
An element was changed by an approved chat edit (other packages mark work based on the old text as out of date). | |
EventLog |
Appends AG-UI events to course_builder_events (ADR 0011). The row id is the SSE event id. After each append the session’s “last event” key in the cache is bumped so open SSE connections wake without querying the table on every tick. A2UI v0.9 surfaces travel as ACTIVITY_SNAPSHOT events with activity type a2ui-surface; @ag-ui/core 1.0.2 defines no A2UI convention, and activity events carry exactly this kind of structured, replaceable UI state. The adapter on each side is this class and @ulams/sdk. |
|
SourceIngested |
A source was converted and its fragments written (first upload of a builder session). Other packages react to it: Living Course records revision 1 of the source. |
courses
Section titled “courses”| Event | Description | Templates |
|---|---|---|
CourseAccessFinished |
||
CourseAccessStarted |
||
CourseAssigned |
||
CourseDeadlineSoon |
||
CourseFinished |
Email, Pdf | |
CourseStarted |
||
CourseStatusChanged |
||
CourseTutorAssigned |
||
CourseTutorUnassigned |
||
CourseUnassigned |
||
CoursedPublished |
||
LessonFinished |
||
TopicFinished |
courses-import-export
Section titled “courses-import-export”| Event | Description | Templates |
|---|---|---|
CloneCourseFailedEvent |
||
CloneCourseFinishedEvent |
||
CloneCourseStartedEvent |
csv-users
Section titled “csv-users”| Event | Description | Templates |
|---|---|---|
UlamsImportedNewUserTemplateEvent |
example-plugin
Section titled “example-plugin”| Event | Description | Templates |
|---|---|---|
GreetingSent |
Dispatched when an admin sends a greeting to a user. The class lives in the Ulams\ namespace and carries a User, so the notifications package stores it as a database notification of that user and the templates package can send it on any channel an admin has a template for. |
images
Section titled “images”| Event | Description | Templates |
|---|---|---|
File |
||
FileDeleted |
||
FileStored |
living-course
Section titled “living-course”| Event | Description | Templates |
|---|---|---|
CourseContentUpdated |
A learner has new notices after an update. In-app and e-mail, at most one e-mail per course per 7 days. Recipient: the learner. | |
ProposalApplied |
An update proposal was applied to the course (progress rules and notifications follow). | |
SourceCheckFailing |
A connection failed its check three times in a row. In-app and e-mail. Recipient: the session author. | |
SourceRevisionDetected |
A source revision with impact on the course was detected (in-app only). Recipient: the session author. | |
UpdateProposalApplied |
An update proposal was applied (in-app only). Recipient: the session author. | |
UpdateProposalReady |
An update proposal is ready for review or waits for the author to start the analysis. In-app and e-mail. Recipients: the session author and the course authors who may review. |
| Event | Description | Templates |
|---|---|---|
AuCompletionReported |
A cmi5 AU reported completed or passed for its own registration through an LRS session token. The course packages listen and complete the topics that use the AU. |
payments
Section titled “payments”| Event | Description | Templates |
|---|---|---|
PaymentCancelled |
||
PaymentFailed |
||
PaymentRegistered |
||
PaymentSuccess |
permissions
Section titled “permissions”| Event | Description | Templates |
|---|---|---|
PermissionRoleChanged |
||
PermissionRoleRemoved |
| Event | Description | Templates |
|---|---|---|
ScormScoCompleted |
A learner’s tracking of a SCO reached completed or passed for the first time. |
settings
Section titled “settings”| Event | Description | Templates |
|---|---|---|
SettingPackageConfigUpdated |
stationary-events
Section titled “stationary-events”| Event | Description | Templates |
|---|---|---|
StationaryEventAssigned |
||
StationaryEventAuthorAssigned |
||
StationaryEventAuthorUnassigned |
||
StationaryEventUnassigned |
| Event | Description | Templates |
|---|---|---|
TaskAssignedEvent |
||
TaskCompleteRequestEvent |
||
TaskCompleteUserConfirmationEvent |
||
TaskDeletedEvent |
||
TaskIncompleteEvent |
||
TaskNoteCreatedEvent |
||
TaskOverdueEvent |
||
TaskUpdatedEvent |
templates
Section titled “templates”| Event | Description | Templates |
|---|---|---|
EventWrapper |
Event should have methods declared for retrieving its data, for example Course related event should have getCourse() method, but if it does not, we can try to extract ‘course’ property of the object (either from toArray method or by using Reflection) This wrapper exists for enabling extraction of any available data from event instance. | |
ManuallyTriggeredEvent |
Email, Pdf, Sms |
templates-pdf
Section titled “templates-pdf”| Event | Description | Templates |
|---|---|---|
PdfCreated |
topic-type-gift
Section titled “topic-type-gift”| Event | Description | Templates |
|---|---|---|
QuizAttemptFinishedEvent |
||
QuizAttemptJournalGradeReadyEvent |
Emitted when a fully graded attempt of a quiz flagged counts_to_grade is ready to be reflected in the journal — on finish for auto-scored quizzes, or once a lecturer grades the last open question. Re-grading a graded attempt emits it again. Consumed (in pcg-grades) to upsert the partial grade for the journal. | |
QuizAttemptStartedEvent |
||
QuizGradabilityChangedEvent |
Emitted whenever a quiz’s counts_to_grade flag flips, in either direction. Consumed (in pcg-grades) to regenerate or delete the journal partial grade(s) derived from this quiz. |
topic-type-project
Section titled “topic-type-project”| Event | Description | Templates |
|---|---|---|
ProjectGradabilityChangedEvent |
Emitted whenever a project’s counts_to_grade flag flips, in either direction. Consumed (in pcg-grades) to regenerate or delete the journal partial grade(s) derived from this project. | |
ProjectSolutionCreatedEvent |
||
ProjectSolutionGradedEvent |
Emitted when a solution of a project flagged counts_to_grade is graded by a lecturer. Re-grading the solution emits it again. Consumed (in pcg-grades) to upsert the partial grade for the journal. |
topic-types
Section titled “topic-types”| Event | Description | Templates |
|---|---|---|
TopicTypeChanged |
| Event | Description | Templates |
|---|---|---|
ProcessVideoFailed |
||
ProcessVideoFinished |
||
ProcessVideoStarted |
||
ProcessVideoState |
webinar
Section titled “webinar”| Event | Description | Templates |
|---|---|---|
ReminderAboutTerm |
Email, Email, Sms | |
WebinarTrainerAssigned |
||
WebinarTrainerUnassigned |
||
WebinarUserAssigned |
||
WebinarUserUnassigned |
youtube
Section titled “youtube”| Event | Description | Templates |
|---|---|---|
YtProblem |