Skip to content

MelisMarketPlace

Place de marché intégrée au backoffice pour découvrir, télécharger, mettre à jour et installer des modules Melis Platform. Paquet : melisplatform/melis-marketplace.

Objectif

MelisMarketPlace ajoute un outil Market Place dans le backoffice qui liste tous les paquets Melis Platform publiés sur Packagist avec "type": "melisplatform-module". Depuis cet outil, un administrateur peut télécharger un nouveau module, mettre à jour un module installé (la version locale est comparée à celle du dépôt), le supprimer, et exécuter l'éventuelle configuration post-installation fournie par le module. Une icône d'en-tête signale les mises à jour disponibles. C'est un module core qui ne dépend que de melis-core.

Activation

C'est un module Laminas standard. Ajoutez-le à config/melis.module.load.php :

php
return [
    // …
    'MelisMarketPlace',
];

Installation via Composer (composer require melisplatform/melis-marketplace) ; melis-core est récupéré automatiquement. Voir Référence des modules.

La place de marché dialogue avec un miroir Packagist distant ; l'URL est configurée dans config/app.interface.php sous melismarketplace_toolstree_section/datas/melis_packagist_server (par défaut http://marketplace.melisplatform.com/melis-packagist). Le même bloc datas contient une liste exceptions (MelisCore, MelisEngine, MelisFront, MelisAssetManager, MelisComposerDeploy, MelisDbDeploy) — les modules core qui ne sont jamais proposés à la suppression ou à la mise à jour.

Services clés

Les deux services sont enregistrés dans config/module.config.php via AbstractFactory et aliasés.

Alias de serviceRôle
MelisMarketPlaceServicePilote l'installation et la mise à jour des modules : charge/active un module (plugModule() / unplugModule() encapsulent MelisAssetManagerModulesService), compare les versions (compareLocalVersionFromRepo() → à jour / à mettre à jour / en avance / dev) et dispatche le formulaire de configuration optionnel d'un module (getForm(), validateForm(), submitForm(), hasPostSetup()).
MelisMarketPlaceSiteServiceGère l'installation d'un module site complet depuis la place de marché (installSite(), marketplaceInstallSite(), invokeSetup(), getModule() / setModule()).

Les constantes de statut de version sont définies dans MelisMarketPlace\Support\MelisMarketPlace (UP_TO_DATE, NEED_UPDATE, IN_ADVANCE, DEV, ainsi que les clés d'action DOWNLOAD / UPDATE / FORM).

Backoffice

L'outil est enregistré sous la section du menu de gauche melismarketplace_toolstree_section (config/app.interface.php) avec une icône de panier, ainsi qu'une icône d'en-tête (market_place_header_icon) qui fait remonter les mises à jour disponibles.

Toutes les actions se trouvent sur MelisMarketPlace\Controller\MelisMarketPlaceController (clé de contrôleur MelisMarketPlace\Controller\MelisMarketPlace) :

melisKey / actionRôle
melis_market_place_tool_displaytool-containerOutil principal ; liste les paquets (fetchPackages()).
melis_market_place_tool_package_displaytool-container-product-viewVue détaillée d'un paquet.
tool-product-modal-container / tool-product-modal-contentModale de confirmation de téléchargement/mise à jour.
tool-module-form-setup-contentAffiche le formulaire de configuration post-installation d'un module.
market-place-module-headerListe déroulante d'en-tête des modules à mettre à jour.

Actions notables du contrôleur : moduleListAction(), bundleListAction(), melisMarketPlaceProductDoAction() (effectue le téléchargement/la mise à jour), activateModuleAction() / plugModuleAction() / unplugModuleAction(), execDbDeployAction(), executeComposerScriptsAction(), reDumpAutoloadAction(), getModuleTablesAction() / exportTablesAction(), et isMarketplaceAccessibleAction(). Un flux de configuration autonome se trouve sur MelisSetupController (route /MelisMarketPlace/setup).

Front office

Ce module ne fournit aucun plugin de templating ni view helper front-office — c'est un outil exclusivement backoffice.

Tables de base de données

MelisMarketPlace ne définit aucune table propre (aucun SQL d'installation ni delta dbdeploy n'est livré avec lui). Il opère sur la configuration des modules existante de la plateforme et sur l'installation Composer. Lorsqu'un module qu'il installe fournit des deltas de base de données, ceux-ci sont appliqués via melis-dbdeploy (execDbDeployAction()) ; les installations de site réutilisent les tables CMS de la plateforme.

Exemple

Vérifier si un module installé est à jour par rapport au dépôt de la place de marché :

php
/** @var \MelisMarketPlace\Service\MelisMarketPlaceService $mp */
$mp = $serviceManager->get('MelisMarketPlaceService');

// $latestVersion provient de la liste de la place de marché pour le paquet
$status = $mp->compareLocalVersionFromRepo('MelisCmsNews', $latestVersion);
// $status est l'une des constantes MelisMarketPlace\Support\MelisMarketPlace :
// UP_TO_DATE, NEED_UPDATE, IN_ADVANCE

Fichiers clés

SujetChemin
Manifeste du modulevendor/melisplatform/melis-marketplace/composer.json
Routes / services / contrôleursvendor/melisplatform/melis-marketplace/config/module.config.php
Arbre d'outils & icône d'en-têtevendor/melisplatform/melis-marketplace/config/app.interface.php
Service d'installation/mise à jourvendor/melisplatform/melis-marketplace/src/Service/MelisMarketPlaceService.php
Service d'installation de sitevendor/melisplatform/melis-marketplace/src/Service/MelisMarketPlaceSiteService.php
Contrôleur principalvendor/melisplatform/melis-marketplace/src/Controller/MelisMarketPlaceController.php
Contrôleur de configuration autonomevendor/melisplatform/melis-marketplace/src/Controller/MelisSetupController.php
Constantesvendor/melisplatform/melis-marketplace/src/Support/MelisMarketPlace.php
Vuesvendor/melisplatform/melis-marketplace/view/melis-market-place/
Assetsvendor/melisplatform/melis-marketplace/public/

Voir aussi

Pour le déploiement piloté par Composer sous-jacent, voir melis-composerdeploy (MelisComposerService) et le mécanisme de deltas versionnés de melis-dbdeploy.