KMP PHP API Reference

MainToWorkflowEngineBranchBackupMigrator
in package
implements BackupPayloadMigratorInterface

Upgrades pre-branch backup payloads to the feature/workflow-engine object model.

Table of Contents

Interfaces

BackupPayloadMigratorInterface
Upgrades decoded backup payloads before they are restored to the current schema.

Constants

ELIGIBLE_RECOMMENDATION_STATES  : mixed = ['Need to Schedule', 'Scheduled', 'Given', 'Ann...
LEGACY_EMAIL_TEMPLATE_SLUGS  : mixed = ['App\Mailer\KMPMailer::resetPassword' => ['slu...

Methods

migrate()  : array{payload: array, stats: array}
name()  : string
Return the stable migrator identifier for restore reporting.
shouldRun()  : bool
addBestowalRecommendationLink()  : bool
backfillEmailTemplateSlugs()  : void
backfillReasonSummaries()  : void
bestowalStateForRecommendation()  : string
bestowalStatusForState()  : string
Map a bestowal state to its high-level status bucket.
buildBestowalRow()  : array<string, mixed>
emailTemplateMappingFor()  : array{slug: string, name: string, description: string}|array{}
existingBestowalByPrimaryRecommendation()  : array<int, int>
existingBestowalRecommendationLinks()  : array<string, bool>
hasLegacyEmailTemplateRows()  : bool
isEligibleParentRecommendation()  : bool
isEmptyId()  : bool
Check whether a legacy foreign key value is effectively empty.
legacyEmailTemplateSlugFor()  : string
missingRequiredBestowalData()  : bool
needsBestowalMigration()  : bool
Return true only for payloads that predate the complete bestowal model.
nextId()  : int
nullableInt()  : int|null
Normalize optional legacy foreign key values.
reasonSummaryForRecommendation()  : string|null
setRecommendationBestowalId()  : bool
slugify()  : string
Convert legacy identifiers into URL-safe slugs.
uniqueSlug()  : string
variablesSchemaFromAvailableVars()  : string|null
Build a current variables schema from legacy available_vars JSON.

Constants

LEGACY_EMAIL_TEMPLATE_SLUGS

private mixed LEGACY_EMAIL_TEMPLATE_SLUGS = ['App\Mailer\KMPMailer::resetPassword' => ['slug' => 'password-reset', 'name' => 'Password Reset', 'description' => 'Sent when a member requests a password reset link.'], 'App\Mailer\KMPMailer::mobileCard' => ['slug' => 'mobile-card-url', 'name' => 'Mobile Card URL', 'description' => 'Sent when a member requests their mobile card link.'], 'App\Mailer\KMPMailer::newRegistration' => ['slug' => 'member-registration-welcome', 'name' => 'Member Registration Welcome', 'description' => 'Welcome email sent to a newly registered adult member with a password-reset link.'], 'App\Mailer\KMPMailer::notifySecretaryOfNewMember' => ['slug' => 'member-registration-secretary', 'name' => 'New Member Secretary Notification', 'description' => 'Sent to the kingdom secretary when a new adult member registers.'], 'App\Mailer\KMPMailer::notifySecretaryOfNewMinorMember' => ['slug' => 'member-registration-secretary-minor', 'name' => 'New Minor Member Secretary Notification', 'description' => 'Sent to the kingdom secretary when a new minor member registers.'], 'App\Mailer\KMPMailer::notifyOfWarrant' => ['slug' => 'warrant-issued', 'name' => 'Warrant Issued', 'description' => 'Sent when a warrant roster workflow activates a warrant for a member.'], 'App\Mailer\KMPMailer::sendFromTemplate' => ['slug' => 'award-recommendation-submitted', 'name' => 'Award Recommendation Submitted', 'description' => 'Sent to the Crown when a new award recommendation is submitted.'], 'Officers\Mailer\OfficersMailer::notifyOfHire' => ['slug' => 'officer-hire-notification', 'name' => 'Officer Hire Notification', 'description' => 'Sent to a member when they are appointed to an office.'], 'Officers\Mailer\OfficersMailer::notifyOfRelease' => ['slug' => 'officer-release-notification', 'name' => 'Officer Release Notification', 'description' => 'Sent to a member when they are released from an office.'], 'Activities\Mailer\ActivitiesMailer::notifyApprover' => ['slug' => 'authorization-approval-request', 'name' => 'Authorization Approval Request', 'description' => 'Sent to the next approver when an authorization request needs review.'], 'Activities\Mailer\ActivitiesMailer::notifyRequester' => ['slug' => 'authorization-request-update', 'name' => 'Authorization Request Update', 'description' => 'Sent to the requester when an authorization request status changes.'], 'Activities\Mailer\ActivitiesMailer::notifyApproverOfRetraction' => ['slug' => 'authorization-request-retracted', 'name' => 'Authorization Request Retracted', 'description' => 'Sent to an approver when a pending authorization request is retracted.']]

Methods

migrate()

public migrate(array<string, mixed> $payload) : array{payload: array, stats: array}
Parameters
$payload : array<string, mixed>

Decoded backup payload.

Return values
array{payload: array, stats: array}
private addBestowalRecommendationLink(array<string, mixed> &$payload, array<string, bool> &$existingLinks, int &$nextLinkId, int $bestowalId, int $recommendationId, string $now) : bool
Parameters
$payload : array<string, mixed>
$existingLinks : array<string, bool>
$nextLinkId : int
$bestowalId : int
$recommendationId : int
$now : string
Return values
bool

backfillEmailTemplateSlugs()

private backfillEmailTemplateSlugs(array<string, mixed> &$payload, array<string, int> &$stats) : void
Parameters
$payload : array<string, mixed>
$stats : array<string, int>

bestowalStateForRecommendation()

private bestowalStateForRecommendation(array<string, mixed> $recommendation) : string
Parameters
$recommendation : array<string, mixed>
Return values
string

bestowalStatusForState()

Map a bestowal state to its high-level status bucket.

private bestowalStatusForState(string $state) : string
Parameters
$state : string
Return values
string

buildBestowalRow()

private buildBestowalRow(int $bestowalId, array<string, mixed> $recommendation, string $now) : array<string, mixed>
Parameters
$bestowalId : int
$recommendation : array<string, mixed>
$now : string
Return values
array<string, mixed>

emailTemplateMappingFor()

private emailTemplateMappingFor(array<string, mixed> $row) : array{slug: string, name: string, description: string}|array{}
Parameters
$row : array<string, mixed>
Return values
array{slug: string, name: string, description: string}|array{}

existingBestowalByPrimaryRecommendation()

private existingBestowalByPrimaryRecommendation(array<int, mixed> $bestowals) : array<int, int>
Parameters
$bestowals : array<int, mixed>
Return values
array<int, int>
private existingBestowalRecommendationLinks(array<int, mixed> $links) : array<string, bool>
Parameters
$links : array<int, mixed>
Return values
array<string, bool>

isEligibleParentRecommendation()

private isEligibleParentRecommendation(array<string, mixed> $recommendation) : bool
Parameters
$recommendation : array<string, mixed>
Return values
bool

missingRequiredBestowalData()

private missingRequiredBestowalData(array<string, mixed> $recommendation) : bool
Parameters
$recommendation : array<string, mixed>
Return values
bool

needsBestowalMigration()

Return true only for payloads that predate the complete bestowal model.

private needsBestowalMigration(array<string, mixed> $payload) : bool

Modern backups include both tables even when they contain no rows. Their recommendations must not be reinterpreted as legacy data during every restore.

Parameters
$payload : array<string, mixed>

Decoded backup payload.

Return values
bool

reasonSummaryForRecommendation()

private reasonSummaryForRecommendation(array<string, mixed> $recommendation) : string|null
Parameters
$recommendation : array<string, mixed>
Return values
string|null

setRecommendationBestowalId()

private setRecommendationBestowalId(array<string, mixed> &$payload, int $index, int $bestowalId) : bool
Parameters
$payload : array<string, mixed>
$index : int
$bestowalId : int
Return values
bool

uniqueSlug()

private uniqueSlug(string $baseSlug, array<string, bool> $usedSlugs) : string
Parameters
$baseSlug : string
$usedSlugs : array<string, bool>
Return values
string

variablesSchemaFromAvailableVars()

Build a current variables schema from legacy available_vars JSON.

private variablesSchemaFromAvailableVars(mixed $availableVars) : string|null
Parameters
$availableVars : mixed
Return values
string|null
On this page

Search results