Changeset 43287 in spip-zone


Ignore:
Timestamp:
Jan 1, 2011, 12:41:02 PM (10 years ago)
Author:
marcimat@…
Message:

Pour éviter des erreurs SQL de table inconnue (sur trouver_table() appelé par une fonction comme objet_type()), on stocke dans les champs extras les infos d'objet, de type et de table_sql harmonisé pour mieux s'y retrouver dans le code lorsqu'on a besoin de l'un ou l'autre.

Devrait résoudre les «Table 'db1035917_jdnv45612Ztxa_biz.article' doesn't exist - SHOW CREATE TABLE article » signalés par Pierrick

Location:
_plugins_/champs_extras2/core
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/champs_extras2/core/cextras_balises.php

    r31901 r43287  
    7474               
    7575                if ($c->enum // sinon pas la peine de continuer
    76                 and $objet == objet_type(table_objet($c->table)) // attention aux cas compliques site->syndic !
     76                and $objet == $c->_type // attention aux cas compliques site->syndic !
    7777                and ($colonne == $c->champ)
    7878                and $c->sql) {
  • _plugins_/champs_extras2/core/cextras_pipelines.php

    r42036 r43287  
    176176                foreach ($champs as $c) {
    177177                        // attention aux cas compliques site->syndic !
    178                         if ($nom == objet_type(table_objet($c->table)) and $c->champ and $c->sql) {
     178                        if ($nom == $c->_type and $c->champ and $c->sql) {
    179179                                $extras[] = $c;
    180180                        }
     
    216216
    217217                        // on affiche seulement les champs dont la saisie est autorisee
    218                         $type = objet_type($c->table).'_'.$c->champ;
     218                        $type = $c->_type . '_' . $c->champ;
    219219                        include_spip('inc/autoriser');
    220220                        if (autoriser('modifierextra', $type, $flux['args']['id'], '', array(
     
    291291
    292292                        // on affiche seulement les champs dont la vue est autorisee
    293                         $type = objet_type($c->table).'_'.$c->champ;
     293                        $type = $c->_type . '_' . $c->champ;
    294294                        include_spip('inc/autoriser');
    295295                        if (autoriser('voirextra', $type, $flux['args']['id_objet'], '', array(
     
    366366                                // (si affiche uniquement pour la rubrique XX par exemple).
    367367                                // On teste seulement les champs dont la modification est autorisee
    368                                 $type = objet_type($c->table).'_'.$c->champ;
     368                                $type = $c->_type . '_' . $c->champ;
    369369                                $id_objet = $flux['args']['args'][0]; // ? vraiment toujours ?
    370370
     
    374374                                // resultats differents... Il faudra surveiller.
    375375                                if (autoriser('modifierextra', $type, $id_objet, '', array(
    376                                         'type' => $c->table,
     376                                        'type' => $c->_type,
    377377                                        'id_objet' => $id_objet)))
    378378                                {       
     
    411411                                }
    412412                                if ($priorite) {
    413                                         $t[objet_type($c->table)][$c->champ] = $priorite;
     413                                        $t[$c->_type][$c->champ] = $priorite;
    414414                                }
    415415                        }
  • _plugins_/champs_extras2/core/inc/cextras.php

    r35802 r43287  
    1717
    1818        var $_id = ''; // identifiant de ce champ extra
     19
     20        // calcules a la volee
     21        var $_type = ''; // rubrique
     22        var $_objet = ''; // rubriques
     23        var $_table_sql = ''; // spip_rubriques
    1924
    2025        // experimental (avec saisies)
     
    4247                        }
    4348                }
     49               
     50                // calculer _objet et _table_sql
     51                $this->_type      = objet_type(table_objet($this->table)); // article
     52                $this->_objet     = table_objet($this->_type); // articles
     53                $this->_table_sql = table_objet_sql($this->table); // spip_articles
     54               
    4455                // calculer l'id du champ extra
    4556                $this->make_id();
     
    7687        // ajoutons les champs un par un
    7788        foreach ($champs as $c){
    78                 $table = table_objet_sql($c->table);
     89                $table = $c->_table_sql;
    7990                if (isset($tables[$table]) and $c->champ and $c->sql) {
    8091                        $tables[$table]['field'][$c->champ] = $c->sql;
     
    89100        foreach ($champs as $c){
    90101                if ($c->traitements and $c->champ and $c->sql) {
    91                         $tobjet = table_objet($c->table);
     102                        $tobjet = $c->_objet;
    92103                        $balise = strtoupper($c->champ);
    93104                        // definir
  • _plugins_/champs_extras2/core/inc/cextras_gerer.php

    r40534 r43287  
    3030                $objets[$objet] = array(
    3131                        'table' => table_objet_sql($objet),
    32                         'type' => objet_type($objet),
     32                        'type' => objet_type(table_objet($objet)),
    3333                        'nom' => $traduction,
    3434                );
     
    114114        $tables = array();
    115115        foreach ($champs as $c){
    116                 if ($table = table_objet_sql($c->table)) {
     116                if ($table = $c->_table_sql) {
    117117                        $tables[$table] = $table;
    118118                } else {
     
    153153        $retour = true;
    154154        foreach ($champs as $c){
    155                 if ($objet = table_objet($c->table)) {
     155                if ($objet = $c->_objet) {
    156156                        $desc = $trouver_table($objet);
    157157                        if (!isset($desc['field'][$c->champ])) {
     
    186186        // on efface chaque champ trouve
    187187        foreach ($champs as $c){
    188                 if ($table = table_objet_sql($c->table) and $c->champ and $c->sql) {
     188                if ($table = $c->_table_sql and $c->champ and $c->sql) {
    189189                        sql_alter("TABLE $table DROP $c->champ");
    190190                }
  • _plugins_/champs_extras2/core/plugin.xml

    r42348 r43287  
    33        <auteur>Matthieu Marcillaud, Fil</auteur>
    44        <licence>GNU/GPL</licence>
    5         <version>1.7.1</version>
     5        <version>1.8.0</version>
    66        <icon>images/cextras-64.png</icon>
    77        <description>
Note: See TracChangeset for help on using the changeset viewer.