Proposer une amélioration de commentaire

Le commentaire à poster est au format «docblock» (de phpDoc) qui peut être enrichi de tags spécifiques pour SPIP.
Fichier
ecrire/public/references.php
Fonction
index_exception

    Nom ou pseudo de l'auteur de la proposition

Code original

/**
 * Retrouve un alias d'un champ dans une boucle
 *
 * Référence à une entite SPIP alias d'un champ SQL.
 * Ça peut même être d'un champ dans une jointure qu'il faut provoquer
 * si ce n'est fait
 *
 * @param Boucle $boucle Boucle dont on prend un alias de champ
 * @param array $desc Description de la table SQL de la boucle
 * @param string $nom_champ Nom du champ original demandé
 * @param array $excep
 *     Description de l'exception pour ce champ. Peut être :
 *
 *     - string : nom du champ véritable dans la table
 *     - array :
 *         - liste (table, champ) indique que le véritable champ
 *           est dans une autre table et construit la jointure dessus
 *         - liste (table, champ, fonction) idem, mais en passant un
 *           nom de fonction qui s'occupera de créer la jointure.
 * @return array
 *     Liste (nom du champ alias, nom du champ). Le nom du champ alias
 *     est une expression pour le SELECT de la boucle du style "mots.titre AS titre_mot"
 **/
function index_exception(&$boucle, $desc, $nom_champ, $excep) {
	static $trouver_table;
	if (!$trouver_table) {
		$trouver_table = charger_fonction('trouver_table', 'base');
	}
 
	if (is_array($excep)) {
		// permettre aux plugins de gerer eux meme des jointures derogatoire ingerables
		$t = null;
		if (count($excep) == 3) {
			$index_exception_derogatoire = array_pop($excep);
			$t = $index_exception_derogatoire($boucle, $desc, $nom_champ, $excep);
		}
		if ($t == null) {
			list($e, $x) = $excep;  #PHP4 affecte de gauche a droite
			$excep = $x;    #PHP5 de droite a gauche !
			$j = $trouver_table($e, $boucle->sql_serveur);
			if (!$j) {
				return array('', '');
			}
			$e = $j['table'];
			if (!$t = array_search($e, $boucle->from)) {
				$k = $j['key']['PRIMARY KEY'];
				if (strpos($k, ',')) {
					$l = (preg_split('/\s*,\s*/', $k));
					$k = $desc['key']['PRIMARY KEY'];
					if (!in_array($k, $l)) {
						spip_log("jointure impossible $e " . join(',', $l));
 
						return array('', '');
					}
				}
				$k = array($boucle->id_table, array($e), $k);
				fabrique_jointures($boucle, array($k));
				$t = array_search($e, $boucle->from);
			}
		}
	} else {
		$t = $boucle->id_table;
	}
	// demander a SQL de gerer le synonyme
	// ca permet que excep soit dynamique (Cedric, 2/3/06)
	if ($excep != $nom_champ) {
		$excep .= ' AS ' . $nom_champ;
	}
 
	return array("$t.$excep", $nom_champ);
}

Le commentaire au format « docblock » peut être complété des éléments suivants sécifiques
à SPIP.

Sur un entête de fichier :

  • @package SPIP\Core\x (pour un fichier du core, x dépendant du fichier)
  • @package SPIP\Nom\x (pour un fichier de plugin, Nom étant le nom du plugin)

Sur un entête de fonction :

  • @pipeline x : indique que la fonction est une utilisation d’un pipeline
  • @pipeline_appel x : indique que la fonction appelle le pipeline indiqué
  • @balise : indique que la fonction est une compilation de balise
  • @filtre : indique un |filtre
  • @critere : indique que la fonction est une compilaiton de critère
  • @boucle : indique que la fonction est une compilaiton de boucle
Vous inscrire sur ce site

L’espace privé de ce site est ouvert aux visiteurs, après inscription. Une fois enregistré, vous pourrez consulter les articles en cours de rédaction, proposer des articles et participer à tous les forums.

Identifiants personnels

Indiquez ici votre nom et votre adresse email. Votre identifiant personnel vous parviendra rapidement, par courrier électronique.