Pour info :
Quand le préfixe de la BDD n’est pas spip_
, les requêtes de l’api sql_
doivent utiliser quand même le préfixe spip_
, et il est transformé par le vrai préfixe de la BDD. Ainsi le code est valable quelque soit le préfixe. Toutefois, quand il y un JOIN
dans la requête, SPIP ne transforme le préfixe que s’il y a des alias sur les tables utilisées.
On vient de préciser la doc sur ce point : Éléments communs - Programmer avec SPIP 4.0 (fin de page).
Il y a sur la zone des codes qui ne semblent pas conforme à cette nécessité, et qui donc ne marchent pas lorsque le préfixe n’est pas spip_
. Une recherche sur \sjoin\s+[a-z]((?<!\bas\b).)*$
(triée ensuite) ramène les incidences suivantes. C’est pas forcément pertinent dans tous les cas, et il peut y avoir d’autres cas non répertoriés, à vérifier si votre code est concerné…
cog_fonctions.php
154 'spip_options left join spip_optionsgroupes using(id_optionsgroupe)',
comptes.php
32 nal, intitule', 'spip_asso_comptes RIGHT JOIN spip_asso_plan ON journal=code', $critere_periode, "intitule DESC"); // on se permet sql_allfetsel car il s'agit d'une association (mois d'une demie dizaine de comptes) et non d'un etablissement financier (des milliers de comptes clients)
53 code, classe', 'spip_asso_comptes RIGHT JOIN spip_asso_plan ON imputation=code', "$where AND classe<>".sql_quote($GLOBALS['association_metas']['classe_banques']). " AND classe<>".sql_quote($GLOBALS['association_metas']['classe_contributions_volontaires']), 'code'); // une contribution benevole ne doit pas etre comptabilisee en charge/produit
72 'spip_asso_comptes RIGHT JOIN spip_asso_plan ON imputation=code',
determiner_statut_document.php
36 'spip_documents_liens join spip_documents using(id_document)',
editer_client.php
202 'spip_contacts_liens LEFT JOIN spip_contacts USING(id_contact)',
219 'spip_adresses_liens LEFT JOIN spip_adresses USING(id_adresse)',
231 'spip_numeros_liens LEFT JOIN spip_numeros USING(id_numero)',
246 'spip_numeros_liens LEFT JOIN spip_numeros USING(id_numero)',
267 'spip_numeros_liens LEFT JOIN spip_numeros USING(id_numero)',
encaisse.php
25 nal, intitule', 'spip_asso_comptes RIGHT JOIN spip_asso_plan ON journal=code', "date_operation>=date_anterieure AND date_operation<=NOW()", "intitule DESC"); // on se permet sql_allfetsel car il n'y en a pas des masses a priori...
formidable_pipelines.php
360 sies', 'spip_formulaires_reponses_champs JOIN spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponses_champ=$id AND spip_formulaires_reponses.id_formulaires_reponse = spip_formulaires_reponses_champs.id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire");
formidableparticipation_pipelines.php
121 _formulaires_reponse', 'spip_formulaires JOIN spip_formulaires_reponses JOIN spip_formulaires_reponses_champs', "id_formulaires_reponses_champ=$id_formulaires_reponses_champ AND spip_formulaires_reponses.id_formulaires_reponse = spip_formulaires_reponses_champs.id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire");
194 laires.id_formulaire', 'spip_formulaires JOIN spip_formulaires_reponses JOIN spip_evenements_participants', "spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire AND spip_formulaires_reponses.id_formulaires_reponse = spip_evenements_participants.id_formulaires_reponse AND spip_evenements_participants.id_evenement=$id_evenement"); // Pas réussi a reproduire en syntaxe squelette
formulaires_reponses_champ.php
20 l('*', 'spip_formulaires_reponses_champs JOIN spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponses_champ=$id_formulaires_reponses_champ AND spip_formulaires_reponses.id_formulaires_reponse = spip_formulaires_reponses_champs.id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire");
formulaires_reponses_champ.php
19 nom', 'spip_formulaires_reponses_champs JOIN spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponses_champ=$id AND spip_formulaires_reponses.id_formulaires_reponse = spip_formulaires_reponses_champs.id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire");
jeux_pipelines.php
163 esultat AS id","spip_jeux_resultats LEFT JOIN spip_auteurs ON spip_jeux_resultats.id_auteur = spip_auteurs.id_auteur","spip_auteurs.id_auteur IS NULL");
166 $res = sql_select ("spip_jeux_resultats.id_resultat AS id","spip_jeux_resultats LEFT JOIN spip_jeux ON spip_jeux_resultats.id_jeu = spip_jeux.id_jeu","spip_jeux.id_jeu IS NULL");
nettoyer_inscriptions_sans_evenement.php
29 ql_select('email', 'spip_mailsubscribers JOIN spip_mailsubscriptions', "spip_mailsubscribers.id_mailsubscriber = spip_mailsubscriptions.id_mailsubscriber AND `id_mailsubscribinglist`=$id_mailsubscribinglist AND `id_segment` = $id_segment");
reservation_communication.php
31 LEFT JOIN spip_types_documents USING(extension)', 'dl.id_objet = ' . $id_reservation_communication . '
reservations_credits_pipelines.php
57 LEFT JOIN spip_reservations USING (id_reservation)
58 LEFT JOIN spip_prix_objets USING (id_prix_objet)',
61 riptif', 'spip_reservations_details LEFT JOIN spip_reservations USING (id_reservation)', 'id_evenement=' . $flux['args']['id_objet'] . ' AND spip_reservations_details.statut="accepte"');
response.php (1 usage found)
61 'spip_reservations LEFT JOIN spip_reservations_details USING (id_reservation)',
secteur_langue_pipelines.php
57 $parent = sql_fetsel('r.id_rubrique,r.lang AS lang_rub, a.lang AS lang_art', 'spip_articles a JOIN spip_rubriques r ON a.id_rubrique = r.id_rubrique', 'id_article=' . $id_article);
souscription_pipelines.php
94 'spip_souscriptions LEFT JOIN spip_souscriptions_liens USING (id_souscription)',
soyezcreateurs_fonctions.php
196 'spip_articles LEFT JOIN spip_rubriques ON spip_rubriques.id_rubrique = spip_articles.id_rubrique',
spip_thelia_fonctions.php
512 JOIN produit ON produit.id = spip_produits_{$type}s.id_produit
513 JOIN produitdesc ON produitdesc.id = spip_produits_{$type}s.id_produit
563 JOIN rubrique ON rubrique.id = spip_rubriquesthelia_{$type}s.id_rubriquethelia
564 JOIN rubriquedesc ON rubriquedesc.rubrique = spip_rubriquesthelia_{$type}s.id_rubriquethelia
adherent.php
503 INNER JOIN pg_catalog.pg_namespace ON pg_constraint.connamespace = pg_namespace.oid
504 INNER JOIN pg_catalog.pg_class ON pg_constraint.conrelid = pg_class.oid AND pg_constraint.connamespace = pg_class.relnamespace
bilan.php
58 $join = ' RIGHT JOIN spip_asso_plan ON imputation=code';