Changeset 61314 in spip-zone


Ignore:
Timestamp:
May 15, 2012, 12:53:54 PM (7 years ago)
Author:
marcimat@…
Message:

Réparer |me et #ME pour SPIP 3.

Location:
_squelettes_/aveline/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _squelettes_/aveline/trunk/aveline_fonctions.php

    r61313 r61314  
    194194        static $deja = false;
    195195        static $auteurs = array();
     196        // id_article peut arriver avec 'article/8' (ou rubrique/3 et on sort)
     197        if (strpbrk($id_article, '/')) {
     198                list($objet, $id_article) = explode('/', $id_article);
     199                if ($objet != 'article') {
     200                        return $sinon;
     201                }
     202        }
    196203        if(!$deja) {
    197                 $r = spip_query("SELECT id_auteur
    198                         FROM spip_auteurs_articles
    199                         WHERE id_article=$id_article");
    200                 while($row = spip_fetch_array($r))
    201                         $auteurs[] = intval($row['id_auteur']);
     204                $auteurs = sql_allfetsel("id_auteur", "spip_auteurs_liens", array(
     205                        "objet=".sql_quote('article'),
     206                        "id_objet=".sql_quote($id_article)));
     207                $auteurs = array_map('array_shift', $auteurs);
     208                $auteurs = array_map('intval', $auteurs);
    202209                $deja = true;
    203210        }
    204         return in_array($id_auteur, $auteurs)?$sioui:$sinon;
     211        return in_array($id_auteur, $auteurs) ? $sioui : $sinon;
    205212}
    206213
    207214function balise_ME($p){
    208         $p->code = "me(".
    209                 champ_sql('id_article', $p).', '.
    210                 champ_sql('id_auteur', $p).', '.
    211                 "'me', '')";
     215        $b = index_boucle($p);
     216        if ($b === '') {
     217                $msg = array('zbug_champ_hors_boucle',
     218                                array('champ' => '#ME')
     219                          );
     220                erreur_squelette($msg, $p);
     221                return;
     222        }
     223
     224        // retrouver la description de la table
     225        $boucle = &$p->boucles[$b];
     226        $trouver_table = charger_fonction('trouver_table','base');
     227        $desc = $trouver_table($boucle->id_table);
     228        // s'il n'y a pas de champ id_article ,
     229        // chercher id_objet, objet
     230        if (isset($desc['field']['id_article'])) {
     231                // ancienne table spip_forum
     232                $p->code = "me(".
     233                        champ_sql('id_article', $p).', '.
     234                        champ_sql('id_auteur', $p).', '.
     235                        "'me', '')";
     236        } elseif (isset($desc['field']['objet']) AND isset($desc['field']['id_objet'])) {
     237                // nouvelle table spip_forum
     238                $p->code = "me(".
     239                        champ_sql('objet', $p) . " . '/' . " . champ_sql('id_objet', $p).", ".
     240                        champ_sql('id_auteur', $p).", ".
     241                        "'me', '')";
     242        } else {
     243                $msg = array('aveline:zbug_erreur_champ',
     244                        array('champ' => '#ME')
     245                );
     246                erreur_squelette($msg, $p);
     247        }
    212248        return $p;
    213249}
  • _squelettes_/aveline/trunk/lang/aveline_fr.php

    r61313 r61314  
    488488
    489489        'zbug_erreur_critere' => 'Erreur dans le critere @critere@.',
     490        'zbug_erreur_champ' => 'Erreur dans la palise @champ@.',
    490491);
    491492
Note: See TracChangeset for help on using the changeset viewer.