Bonjour,
Je me suis remis sur ce sujet après une période de test des mécanismes de souscriptions "en l'état". Tout fonctionne bien.
Du moins, jusqu'à ce qu'on mette à jour HikaShop (business 3.4) et HikaSerial (2.1.1).
Lorsque j'affiche le détail d'un plan en BO, la vue est "cassée". Après investigation, cela vient de mon plugin qui demande en paramètre du plan une valeur de version. Cela fonctionnait bien sur la version précédente. Voici la partie du code concernée :
class plgHikaserialLimeLMsubscriber extends hikaserialPlugin {
protected $type = 'subscriber';
protected $multiple = false;
protected $name = 'LimeLMsubscriber';
protected $pluginConfig = array();
protected $subscriptionConfig = array(
'versionID' => array('HIKA_SERIAL_OPT_LIMELM_VERSION_ID','input')
);
public function __construct(&$subject, $config) {
parent::__construct($subject, $config);
}
/*
* utilisé pour paramétrer dynamiquement l'interface de configuration de l'abonnement
public function onPlanActionsConfiguration(&$plan) {
if(empty($plan->actions))
$plan->actions = array();
$plan->actions[$this->name] = $this->subscriptionConfig;
}
*/
//
// A la création on affecte une clef signifiant "bientôt ici votre clef définitive". Par contre si on arrive ici
// via un renouvelement d'un ancien serial, on va stocker la clef correspondant à cet ancien serial ici.
//
public function onBeforeSubscriptionCreate(&$subscription, $do)
Si je laisse la ligne qui définit les champs des variables du plan ($subscriptionConfig), ça plante. Si je les commente, tout s'affiche normalement mais, bien sûr, je n'ai plus accès à ma variable dans les paramètres du plan et donc dans l'exécution des fonctions du plugin.
Que j'active ou pas la fonction "onPlanActionsConfiguration" ne change rien au problème.
J'ai comparé avec les deux autres plugin de souscriptions (acymailing et group) et ne vois pas ce qui pourrait avoir changé....
Si je change le type "input" pour le type "list" ou "field" par exemple, cela s'affiche normalement mais avec des erreurs php logiques puisqu 'il lui manque des informations pour "rendre" la vue.
Vous pouvez simuler le problème en rajoutant une ligne comme " 'test' => array('test','input')" dans la config de votre plugin "groupSubscriber". Cela provoque la même erreur.