Overview
Comment: | Clarification de la valeur de retour de Plugin::fireSignal, qui doit renvoyer TRUE si un plugin a arrêté l'exécution, FALSE si des plugins ont été appelés mais aucun n'a interrompu l'exécution, et NULL si aucun plugin n'a été exécuté |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
126edcf10ccb715aecbbd3381ff2e220 |
User & Date: | bohwaz on 2019-12-09 18:10:03 |
Other Links: | manifest | tags |
Context
2019-12-09
| ||
18:10 | Ajout d'un signal de plugin motdepasse.compromis check-in: 501bf924d3 user: bohwaz tags: trunk | |
18:10 | Clarification de la valeur de retour de Plugin::fireSignal, qui doit renvoyer TRUE si un plugin a arrêté l'exécution, FALSE si des plugins ont été appelés mais aucun n'a interrompu l'exécution, et NULL si aucun plugin n'a été exécuté check-in: 126edcf10c user: bohwaz tags: trunk | |
17:52 | Import compta : utilisation de la ligne d'entête comme intitulé des colonnes, import fonctionnel du projet depuis CSV, ne pas exiger d'avoir toutes les colonnes présentes dans le CSV check-in: cc3a83e9d2 user: bohwaz tags: trunk, stable | |
Changes
Modified src/include/lib/Garradin/Plugin.php from [44775e077d] to [de7f4cd5b0].
745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 |
return DB::getInstance()->first('SELECT version FROM plugins WHERE id = ?;', $id); } /** * Déclenche le signal donné auprès des plugins enregistrés * @param string $signal Nom du signal * @param array $params Paramètres du callback (array ou null) * @return NULL NULL si aucun plugin n'a été appelé, true sinon */ static public function fireSignal($signal, $params = null, &$callback_return = null) { $list = DB::getInstance()->get('SELECT * FROM plugins_signaux WHERE signal = ?;', $signal); $system = explode(',', PLUGINS_SYSTEM); foreach ($list as $row) { // Ne pas appeler les plugins dont le code n'existe pas/plus, // SAUF si c'est un plugin système (auquel cas ça fera une erreur) if (!self::getPath($row->plugin, in_array($row->plugin, $system))) { continue; } $return = call_user_func_array('Garradin\\Plugin\\' . $row->callback, [&$params, &$callback_return]); if ($return) { return $return; } } return !empty($list) ? false : null; } } |
| > > > > > > > | < | | |
745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 |
return DB::getInstance()->first('SELECT version FROM plugins WHERE id = ?;', $id); } /** * Déclenche le signal donné auprès des plugins enregistrés * @param string $signal Nom du signal * @param array $params Paramètres du callback (array ou null) * @return NULL NULL si aucun plugin n'a été appelé, * TRUE si un plugin a été appelé et a arrêté l'exécution, * FALSE si des plugins ont été appelés mais aucun n'a stopé l'exécution */ static public function fireSignal($signal, $params = null, &$callback_return = null) { $list = DB::getInstance()->get('SELECT * FROM plugins_signaux WHERE signal = ?;', $signal); if (!count($list)) { return null; } $system = explode(',', PLUGINS_SYSTEM); foreach ($list as $row) { // Ne pas appeler les plugins dont le code n'existe pas/plus, // SAUF si c'est un plugin système (auquel cas ça fera une erreur) if (!self::getPath($row->plugin, in_array($row->plugin, $system))) { continue; } $return = call_user_func_array('Garradin\\Plugin\\' . $row->callback, [&$params, &$callback_return]); if (true === $return) { return true; } } return false; } } |
Modified src/include/lib/Garradin/Squelette.php from [cb5267ae5a] to [f4ce828da9].
630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 |
'loop_start' => &$loop_start, 'code' => &$statement_code, ]; // Appel du plugin lié à cette boucle, si ça existe $return = Plugin::fireSignal('boucle.' . $loopType, $params, $callback_return); // Si le retour est du texte on le traite comme tel if (is_string($return)) { return $return; } // Sinon si ce n'est pas true elseif (!$return) { throw new \KD2\MiniSkelMarkupException("Le type de boucle '".$loopType."' est inconnu."); } if (empty($query)) { $query = 'SELECT 0 LIMIT 0;'; |
| < < < < < | |
630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 |
'loop_start' => &$loop_start,
'code' => &$statement_code,
];
// Appel du plugin lié à cette boucle, si ça existe
$return = Plugin::fireSignal('boucle.' . $loopType, $params, $callback_return);
// Si aucun plugin n'a été appelé c'est que le type de boucle n'est pas défini
if (!$return)
{
throw new \KD2\MiniSkelMarkupException("Le type de boucle '".$loopType."' est inconnu.");
}
if (empty($query))
{
$query = 'SELECT 0 LIMIT 0;';
|