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: 126edcf10ccb715aecbbd3381ff2e2201c8ca17f
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    745   		return DB::getInstance()->first('SELECT version FROM plugins WHERE id = ?;', $id);
   746    746   	}
   747    747   
   748    748   	/**
   749    749   	 * Déclenche le signal donné auprès des plugins enregistrés
   750    750   	 * @param  string $signal Nom du signal
   751    751   	 * @param  array  $params Paramètres du callback (array ou null)
   752         -	 * @return NULL 		  NULL si aucun plugin n'a été appelé, true sinon
          752  +	 * @return NULL 		  NULL si aucun plugin n'a été appelé,
          753  +	 * TRUE si un plugin a été appelé et a arrêté l'exécution,
          754  +	 * FALSE si des plugins ont été appelés mais aucun n'a stopé l'exécution
   753    755   	 */
   754    756   	static public function fireSignal($signal, $params = null, &$callback_return = null)
   755    757   	{
   756    758   		$list = DB::getInstance()->get('SELECT * FROM plugins_signaux WHERE signal = ?;', $signal);
          759  +
          760  +		if (!count($list)) {
          761  +			return null;
          762  +		}
          763  +
   757    764   		$system = explode(',', PLUGINS_SYSTEM);
   758    765   
   759    766   		foreach ($list as $row)
   760    767   		{
   761    768   			// Ne pas appeler les plugins dont le code n'existe pas/plus,
   762    769   			// SAUF si c'est un plugin système (auquel cas ça fera une erreur)
   763    770   			if (!self::getPath($row->plugin, in_array($row->plugin, $system)))
   764    771   			{
   765    772   				continue;
   766    773   			}
   767    774   
   768    775   			$return = call_user_func_array('Garradin\\Plugin\\' . $row->callback, [&$params, &$callback_return]);
   769    776   
   770         -			if ($return)
   771         -			{
   772         -				return $return;
          777  +			if (true === $return) {
          778  +				return true;
   773    779   			}
   774    780   		}
   775    781   
   776         -		return !empty($list) ? false : null;
          782  +		return false;
   777    783   	}
   778    784   }

Modified src/include/lib/Garradin/Squelette.php from [cb5267ae5a] to [f4ce828da9].

   630    630                   'loop_start'    =>  &$loop_start,
   631    631                   'code'          =>  &$statement_code,
   632    632               ];
   633    633   
   634    634               // Appel du plugin lié à cette boucle, si ça existe
   635    635               $return = Plugin::fireSignal('boucle.' . $loopType, $params, $callback_return);
   636    636   
   637         -            // Si le retour est du texte on le traite comme tel
   638         -            if (is_string($return))
   639         -            {
   640         -                return $return;
   641         -            }
   642         -            // Sinon si ce n'est pas true
   643         -            elseif (!$return)
          637  +            // Si aucun plugin n'a été appelé c'est que le type de boucle n'est pas défini
          638  +            if (!$return)
   644    639               {
   645    640                   throw new \KD2\MiniSkelMarkupException("Le type de boucle '".$loopType."' est inconnu.");
   646    641               }
   647    642   
   648    643               if (empty($query))
   649    644               {
   650    645                   $query = 'SELECT 0 LIMIT 0;';