Přeskočit na hlavní obsah

AfterInstall Script

This script executes critical setup tasks immediately after the installation or upgrade of the extension. It ensures proper system configuration, dependency checks, and data initialization.

Purpose

The AfterInstall script performs several essential functions:

  • Dependency Verification: Checks if required modules (like Autocrm) are installed with compatible versions before proceeding.
  • Legacy Cleanup: Automatically uninstalls a deprecated extension (AiInvoiceParsing) if found, preventing conflicts.
  • Configuration Setup: Applies default system configurations (e.g., tab list entities, invoice parsing settings).
  • Data Initialization: Creates default records (e.g., integration entries) for immediate functionality.
  • Cache Management: Clears system cache to ensure new configurations take effect.

Core Logic

The script follows a sequential workflow:

  • Load Dependencies: Injects essential services like Config, EntityManager, and DataManager from the system container.
  • Check Requirements: Validates module dependencies using version comparison logic (supports operators like \≥, ^, ~).
  • Handle Legacy: Uses ActionManager to uninstall deprecated extensions if detected.
  • Apply Defaults: Safely merges predefined configurations (DEFAULT_CONFIG) without overwriting existing values.
  • Seed Data: Creates system records (DEFAULT_RECORDS) only if they don't already exist, using transactional checks.
  • Finalize: Refreshes system cache to activate changes.

Key dependencies include:

  • Config for system settings
  • EntityManager for database operations
  • InjectableFactory for dynamic service instantiation

Technické informace

Třída: AfterInstall

Metody:

  • run(Container $container, array $params)

  • Params: isUpgrade (bool) skips tab list updates during upgrades

  • Flow: Orchestrates all steps via private methods

  • checkModuleDependencies()

  • Logic: Validates REQUIRED_MODULES against installed extensions using Extension entity

  • Version Handling: Supports semantic versioning via satisfiesVersionRequirement()

  • defaultConfig()

  • Mechanism: Uses ConfigWriter to apply DEFAULT_CONFIG only for undefined keys

  • createRecord(string $entityType, array $data)

  • Safety: Checks existence via Selection queries with withDeleted() scope

  • Condition: Uses Condition::equal() for ID matching

Konstanty:

  • DEFAULT_CONFIG: Predefined settings (e.g., orGroupForSupplierInvoice)
  • DEFAULT_RECORDS: Initial Integration records (e.g., AI parsing endpoint)
  • REQUIRED_MODULES: Versioned module requirements (e.g., Autocrm \≥3.9.10)