Changeset 110691 in spip-zone


Ignore:
Timestamp:
Jun 16, 2018, 11:12:34 AM (3 years ago)
Author:
tcharlss@…
Message:

v 0.4 : ajout de 2 paramètres optionnels à la balise #COULEUR. #COULEUR{parent} va chercher la couleur du parent de l'objet en fallback. #COULEUR{parent,recursif} fait la même chose mais de façon récursive, utile si par exemple on a défini une couleur à un secteur, et qu'on veut la connaître dans un article au fin fond d'une sous-rubrique. Nécessite l'API déclarer parent qui est dans un plugin séparé pour l'instant. Je ne le mets pas en dépendance, c'est un petit bonus si l'API est présente. Renommage de l'ancienne fonction privée utilisée par la balise en un nom plus générique et réutilisable dans les squelettes si besoin. Un peu de phpDoc et de PSR

Location:
_plugins_/couleur_objet/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/couleur_objet/trunk/couleur_objet_fonctions.php

    r104332 r110691  
    11<?php
    22
    3 // https://programmer.spip.net/Recuperer-objet-et-id_objet
    4 function balise_COULEUR($p){
    5         // on prend nom de la cle primaire de l'objet pour calculer sa valeur
     3/**
     4 * Compile la balise #COULEUR
     5 *
     6 * Renvoie la couleur associée à un objet
     7 *
     8 * Elle accepte 2 paramètres :
     9 * - #COULEUR{parent} pour prendre la couleur du parent en fallback
     10 * - #COULEUR{parent,recursif} même chose, mais cherche le parent récursivement
     11 * Attention, ne fonctionne que s'il y a l'API de déclaration des parents.
     12 *
     13 * @see
     14 * https://programmer.spip.net/Recuperer-objet-et-id_objet
     15 *
     16 * @param Champ $p
     17 *     Pile au niveau de la balise
     18 * @return Champ
     19 *     Pile complétée par le code à générer
     20 */
     21function balise_COULEUR($p) {
     22
     23        // On prend nom de la clé primaire de l'objet pour calculer sa valeur
    624        $_id_objet = $p->boucles[$p->id_boucle]->primary;
    7         $id_objet = champ_sql($_id_objet, $p);
    8         $objet = $p->boucles[$p->id_boucle]->id_table;
    9         $p->code = "calculer_balise_COULEUR('$objet', $id_objet)";
     25        $id_objet  = champ_sql($_id_objet, $p);
     26        $objet     = $p->boucles[$p->id_boucle]->id_table;
     27        // 1er paramètre : prendre le parent en fallback
     28        // On vérifie juste si le texte est présent, peu importe la valeur
     29        $_parent = "false";
     30        if (($v = interprete_argument_balise(1, $p)) !== null) {
     31                $_parent = "strlen($v) ? true : false";
     32        }
     33        // 2ème paramètre : chercher le parent récursivement
     34        // On vérifie juste si le texte est présent, peu importe la valeur
     35        $_recursif = "false";
     36        if (($v2 = interprete_argument_balise(2, $p)) !== null) {
     37                $_recursif = "strlen($v2) ? true : false";
     38        }
     39
     40        $p->code = "objet_couleur('$objet', $id_objet, $_parent, $_recursif)";
     41
    1042        return $p;
    1143}
    12 function calculer_balise_COULEUR($objet,$id_objet){
     44
     45/**
     46 * Trouver la couleur d'un objet ou de son parent
     47 *
     48 * @uses objet_couleur_parent()
     49 *
     50 * @param string $objet
     51 *     Type de l'objet
     52 * @param int $id_objet
     53 *     Identifiant de l'objet
     54 * @param boolean $parent
     55 *     true pour chercher la couleur du parent
     56 * @param boolean $recursif
     57 *     true pour chercher les parents récursivement
     58 * @return string|false
     59 *     La couleur ou false si rien trouvé
     60 */
     61function objet_couleur($objet, $id_objet, $parent = false, $recursif = false) {
     62
     63        include_spip('base/objets');
     64
    1365        $objet = objet_type($objet);
    14         $row = sql_fetsel("couleur_objet", "spip_couleur_objet_liens", "objet=".sql_quote($objet)." AND id_objet=".intval($id_objet));
    15         $couleur_objet = $row['couleur_objet'];
     66        $couleur_objet = sql_getfetsel(
     67                'couleur_objet',
     68                'spip_couleur_objet_liens',
     69                array(
     70                        'objet=' . sql_quote($objet),
     71                        'id_objet=' . intval($id_objet)
     72                )
     73        );
     74
     75        // Si besoin, on prend la couleur du parent
     76        if (
     77                !$couleur
     78                and $parent
     79        ) {
     80                $couleur_objet = objet_couleur_parent($objet, $id_objet, $recursif);
     81        }
     82
    1683        return $couleur_objet;
    1784}
     85
     86/**
     87 * Trouver la couleur du parent d'un objet
     88 *
     89 * @note
     90 * Nécéssite l'API de déclaration des parents
     91 *
     92 * @uses objet_trouver_parent()
     93 *
     94 * @param string $objet
     95 *     Type de l'objet
     96 * @param int $id_objet
     97 *     Identifiant de l'objet
     98 * @param boolean $recursif
     99 *     true pour chercher les parents récursivement
     100 * @return string|null
     101 *     La couleur ou null si rien trouvé
     102 */
     103function objet_couleur_parent($objet, $id_objet, $recursif = false) {
     104
     105        $couleur = false;
     106
     107        // Uniquement si l'API existe
     108        if (
     109                include_spip('base/objets_parents')
     110                and $parent = objet_trouver_parent($objet, $id_objet)
     111        ) {
     112                $couleur = sql_getfetsel(
     113                        'couleur_objet',
     114                        'spip_couleur_objet_liens',
     115                        array (
     116                                'objet = ' . sql_quote($parent['objet']),
     117                                'id_objet = ' . intval($parent['id_objet']),
     118                        )
     119                );
     120
     121                // Si besoin on cherche récursivement
     122                if (
     123                        !$couleur
     124                        and $recursif
     125                ) {
     126                        $couleur = objet_couleur_parent($parent['objet'], $parent['id_objet'], true);
     127                }
     128
     129        }
     130
     131        return $couleur;
     132}
  • _plugins_/couleur_objet/trunk/paquet.xml

    r108465 r110691  
    22        prefix="couleur_objet"
    33        categorie="outil"
    4         version="0.3.1"
     4        version="0.4.0"
    55        schema="1.0.0"
    66        etat="stable"
Note: See TracChangeset for help on using the changeset viewer.