prestashop/prestashop-accounts-installer

Utility package to install `ps_accounts` module or present data to trigger manual install from psx configuration page.

v1.0.4 2023-05-04 07:24 UTC

README

Utility package to install ps_accounts module or present data to trigger manual install from psx configuration page.

This module also give you access to ps_accounts services through its module service container dealing with the installation status of the module.

Compatibility Matrix

We aims to follow partially the Prestashop compatibility charts

Installation

This package is available on Packagist, you can install it via Composer.

composer require prestashop/prestashop-accounts-installer

Register as a service in your PSx container (recommended)

Example :

services:
  <your_module>.ps_accounts_installer:
    class: 'PrestaShop\PsAccountsInstaller\Installer\Installer'
    arguments:
      - '5.0.0'

  <your_module>.ps_accounts_facade:
    class: 'PrestaShop\PsAccountsInstaller\Installer\Facade\PsAccounts'
    arguments:
      - '@<your_module>.ps_accounts_installer'

The name under which you register both services in your service container must be unique to avoid collision with other modules including it.

The 5.0.0 specified argument is the minimum required ps_account module version. You should modify it if you need another version.

How to use it

Installer

In your module main class install method. (Will only do something on PrestaShop 1.7 and above)

    $this->getService('ps_accounts.installer')->install();

Presenter

For example in your main module's class getContent method.

    Media::addJsDef([
        'contextPsAccounts' => $this->getService('ps_accounts.facade')
            ->getPsAccountsPresenter()
            ->present($this->name),
    ]);

This presenter will serve as default minimal presenter and switch to PsAccountsPresenter data when ps_accounts module is installed.

Accessing PsAccounts Services

Installer class includes accessors to get instances of services from PsAccounts Module :

  • getPsAccountsService
  • getPsBillingService

The methods above will throw an exception in case ps_accounts module is not installed or not in the required version.

Example :

use PrestaShop\PsAccountsInstaller\Installer\Exception\ModuleVersionException;
use PrestaShop\PsAccountsInstaller\Installer\Exception\ModuleNotInstalledException;

try {
    $psAccountsService = $this->getService('ps_accounts.facade')->getPsAccountsService();

    $shopJwt = $psAccountsService->getOrRefreshToken();

    $shopUuid = $psAccountsService->getShopUuid();

    $apiUrl = $psAccountsService->getAdminAjaxUrl();

    // Your code here

} catch (ModuleNotInstalledException $e) {

    // You handle exception here

} catch (ModuleVersionException $e) {

    // You handle exception here
}