[SPIP Zone] surcharge de $GLOBALS['champs_extra']

petit probleme

le plugin openPublishing utilise maintenant les champs extra de la table
article pour y stocker diverses informations

$GLOBALS['champs_extra'] = Array (

        'articles' => Array (
                        "OP_pseudo" => "ligne|brut|pseudonyme du
rédacteur",
                        "OP_mail" => "ligne|propre|mail du rédacteur",
                )
        );

Or si un autre plugin ou un squelette utilise lui aussi les champs extra, la
définition ci-dessus est écrasée par la nouvelle. ce qui est très embettant
car cela signifirai qu'il n'est qu'un seul plugin qui est le droit d'utiliser
les champs extra ...

existe-t'il une possibilité de de définir des champs extras dans plusieurs
plugins ?

Je me répond à moi-même :

Voici une solution inélégante pour résoudre ce problème :

1ere étape : la définition du tableau extra que l'on vaut ajouter (pour une
table spécifique)
2eme étape : on test si le tableau extra est vide ou pas (toujours pour la
table sur laquelle l'on travail)
3eme étape :
- si c'est vide, on y ajoute notre tableau sans écraser les définitions extra
concernant les autres tables
- si c'est pas vide, on mélange les définitions (en priant pour que les noms
des champs extras ne soient pas identiques) et l'on ajoute tout cela au
global champs_extra

Je ne suis pas du tout satisfait de ce code, je suis sur qu'il doit y avoir
une solution plus logique :slight_smile:

//
// Definition des champs extra pour les articles openPublishing
//

// definition du tableau des extras utilisé par le plugin
$op_article = Array (
  "OP_pseudo" => "ligne|brut|pseudonyme du rédacteur",
  "OP_mail" => "ligne|propre|mail du rédacteur"
);

// si les extra de la table que l'on veut etendre sont vide
if (empty($GLOBALS['champs_extra']['articles'])) {
  $op_extra = Array (
    'articles' => $op_article
    );
}

else {// si ce n'est pas vide, on merge
  $merge_article = array_merge($GLOBALS['champs_extra']['articles'],
$op_article);
  $op_extra = Array (
    'articles' => $merge_article
  );
}

$GLOBALS['champs_extra'] = array_merge ($GLOBALS['champs_extra'], $op_extra);

Le Friday 07 March 2008 11:57:17 edd, vous avez écrit :

petit probleme

le plugin openPublishing utilise maintenant les champs extra de la table
article pour y stocker diverses informations

$GLOBALS['champs_extra'] = Array (

        'articles' => Array (
                        "OP_pseudo" => "ligne|brut|pseudonyme du
rédacteur",
                        "OP_mail" => "ligne|propre|mail du
rédacteur", )
        );

Or si un autre plugin ou un squelette utilise lui aussi les champs extra,
la définition ci-dessus est écrasée par la nouvelle. ce qui est très
embettant car cela signifirai qu'il n'est qu'un seul plugin qui est le
droit d'utiliser les champs extra ...

existe-t'il une possibilité de de définir des champs extras dans plusieurs
plugins ?
_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

$GLOBALS['champs_extra'] = Array (

        'articles' => Array (
                        "OP_pseudo" => "ligne|brut|pseudonyme du rédacteur",
                        "OP_mail" => "ligne|propre|mail du rédacteur",
                )
        );

Il faudrait remplacer par ceci :

$GLOBALS['champs_extra']['articles']['OP_pseudo'] =
  'ligne|brut|pseudonyme du rédacteur';
$GLOBALS['champs_extra']['articles']['OP_mail'] =
  'ligne|propre|mail du rédacteur';

-Nicolas

--
Nicolas "Brush" HOIZEY
Clever Age : http://www.clever-age.com/
Gastero Prod : http://www.gasteroprod.com/
Photos : http://www.flickr.com/gp/38608514@N00/M1c002

Le Friday 07 March 2008 12:25:09 Nicolas Hoizey, vous avez écrit :

$GLOBALS['champs_extra']['articles']['OP_pseudo'] =
'ligne|brut|pseudonyme du rédacteur';
$GLOBALS['champs_extra']['articles']['OP_mail'] =
'ligne|propre|mail du rédacteur';

hum ... ce bout code fait planter spip, et je ne comprend pas pourquoi ... y'a
pas d'erreur de syntaxe.

edd a écrit :

Le Friday 07 March 2008 12:25:09 Nicolas Hoizey, vous avez écrit :

$GLOBALS['champs_extra']['articles']['OP_pseudo'] =
        'ligne|brut|pseudonyme du rédacteur';
$GLOBALS['champs_extra']['articles']['OP_mail'] =
        'ligne|propre|mail du rédacteur';

hum ... ce bout code fait planter spip, et je ne comprend pas pourquoi ... y'a pas d'erreur de syntaxe.

Il faut sans doute déjà créer $GLOBALS['champs_extra']['articles'] en fait.

-Nicolas

--
Nicolas "Brush" HOIZEY
Clever Age : http://www.clever-age.com/
Gastero Prod : http://www.gasteroprod.com/
Photos : http://www.flickr.com/gp/38608514@N00/M1c002

Le Friday 07 March 2008 12:58:08 Nicolas Hoizey, vous avez écrit :

edd a écrit :
> Le Friday 07 March 2008 12:25:09 Nicolas Hoizey, vous avez écrit :
>> $GLOBALS['champs_extra']['articles']['OP_pseudo'] =
>> 'ligne|brut|pseudonyme du rédacteur';
>> $GLOBALS['champs_extra']['articles']['OP_mail'] =
>> 'ligne|propre|mail du rédacteur';
>
> hum ... ce bout code fait planter spip, et je ne comprend pas pourquoi
> ... y'a pas d'erreur de syntaxe.

Il faut sans doute déjà créer $GLOBALS['champs_extra']['articles'] en fait.

-Nicolas

voila le code. Merci pour ton aide :slight_smile:

// si les extra de la table que l'on veut etendre sont vide faut creer le
tableau
if (empty($GLOBALS['champs_extra']['articles']))
  $GLOBALS['champs_extra']['articles'] = Array();

$GLOBALS['champs_extra']['articles']['OP_pseudo'] = "ligne|brut|pseudonyme du
rédacteur";
$GLOBALS['champs_extra']['articles']['OP_mail'] = "ligne|propre|mail du
rédacteur";