Version 6 — Janvier 2009 — JLuc
définir une fonction qui teste la version
On peut faire appel à la Cette fonction < code>version_compare</code > implémenter permet d’implémenter les fonctionnalités critiques de 2 manières différentes selon la version du core de SPIP. On peut ainsi garder le plugin compatible avec plusieurs versions de SPIP, ( mais cela allourdit le code. ).
if (version_compare($GLOBALS['spip_version_code'],'1.9300','<')) { // SPIP <= 1.9.2x
...}
elseif (version_compare($GLOBALS['spip_version_code'],'1.9300','>=')) {
... // spip V2
};
Voir aussi Regarder par exemple la fonction < code>spiplistes_spip_est_inferieur_193()</code > du plugin spipliste. : < code > spiplistes_spip_est_inferieur_193()</code >
debut_page
pour thelia il a fallu remplacer :
debut_page(_T("spip_thelia:catalogue_thelia"), "Catalogue Télia", "Catalogue Télia");
par
$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page(_T("spip_thelia:catalogue_thelia"),_T("spip_thelia:catalogue_thelia"),_T("spip_thelia:catalogue_thelia"));
generer_url_xxxx
Remplacer les generer_url_xxxx(’...’) par generer_url_entite(’xxxx’,...), idem dans les squelettes :
|generer_url_site{...}
=> |generer_url_entite{site, ...}
Pour un code portable, on teste la version, ce qui fait que pour un portage compatible :$url = generer_url_article($row['id_article']);
devient :
$url = ( spiplistes_spip_est_inferieur_193()) ?
generer_url_article($row['id_article']) : generer_url_entite($row['id_article'], 'article');
_q
_q est remplacé par sql_quote
spip_query, spip_fetch_array,...
Ces fonctions sont encore définies mais peut être plus pour longtemps.
Il faut préférer les fonctions en sql_ (cf http://doc.spip.org/spip.php?page=r...)
(idem spip_abstract.., calcule_mysql_in, ...)
Exemples :
- 1 )
<code Exemple :
< code >
$result = spip_query(« SELECT * FROM spip_forms WHERE id_form= »._q($id_form)) ;
if (!$row = spip_fetch_array($result)) return false ;
est remplacé par :
if (!$row = sql_fetsel("multiple","spip_forms","id_form=".intval($id_form)))
return false;
- 2 ) <code Tandis que
< code >
$row = spip_fetch_array(spip_query(« SELECT COUNT(*) AS tot FROM spip_forms_donnees WHERE id_form= ».intval($id_form).« AND confirmation=’valide’ AND statut<>’poubelle’ »)) ;
if ($row) $nb_reponses = $row[’tot’] ;
est remplacé par
$nb_reponses = sql_countsel("spip_forms_donnees","id_form=".intval($id_form)." AND confirmation='valide' AND statut<>'poubelle'");
- 3 ) De même,
$result = spip_query("SELECT r.id_donnee, r.date,r.url, c.champ, c.valeur ".
"FROM spip_forms_donnees AS r LEFT JOIN spip_forms_donnees_champs AS c USING (id_donnee) ".
"WHERE id_form=".intval($id_form)." AND confirmation='valide' AND statut<>'poubelle' AND c.id_donnee IS NOT NULL ".
"ORDER BY date, r.id_donnee");
while ($row = spip_fetch_array($result))
{...
est remplacé par
$rows = sql_allfetsel(
"r.id_donnee, r.date,r.url, c.champ, c.valeur ",
"spip_forms_donnees AS r LEFT JOIN spip_forms_donnees_champs AS c ON r.id_donnee=c.id_donnee",
"id_form=".intval($id_form)." AND confirmation='valide' AND statut<>'poubelle' AND c.id_donnee IS NOT NULL ",
"date, r.id_donnee");
foreach($rows as $row)
{...
- 4 ) delete : < code>spip_query("DELETE spip_query("DELETE
FROM spip_forms_champs_choix WHERE id_form=3");
est remplacé par sql_delete("spip_forms_champs_choix","id_form=3);"
- 5) Insertions :
$lsDate = date('Y-m-d H:i:s');
spip_query("INSERT INTO spip_articles (titre, id_rubrique, texte, date, statut) VALUES ('$titre', '$id_rubrique', '$texte', '$lsDate', 'publie')");
$id_article = spip_insert_id();
est remplacé par :
$lsDate = date('Y-m-d H:i:s');
$id_article = sql_insertq( 'spip_articles', array(
'titre'=>$titre, 'id_rubrique'=>$id_rubrique,
'texte'=>$texte, 'statut'=>'publie', 'id_secteur'=>$id_secteur,
'date'=> $lsDate, 'accepter_forum'=>'non', 'lang'=>$lang));
- 6 ) insertions multiples : on On pourra également remplacer de multiples appels à spip_query ("INSERT...")
par un unique appel à <code>sql_insertq_multi</code code > sql_insertq_multi</code > après avoir préparé les données .
spip_abstract_insert
spip_abstract_insert("spip_forms_donnees","(id_donnee,id_form,date,ip,id_auteur,url,confirmation,statut,maj)","(".intval($id_donnee).",".intval($id_form).", NOW(),"._q($ip).","._q($id_auteur).","._q($url).", 'valide', 'publie', NOW() )");
est remplacé par
$id_donnee = sql_insertq("spip_forms_donnees",
array(
"id_donnee"=>$id_donnee,
"id_form"=>$id_form,
"date"=>"NOW()",
"ip"=>$ip,
"id_auteur"=>$id_auteur,
"url"=>$url,
"confirmation"=>"valide",
"statut"=>'publie',
"maj"=>"NOW()"));
spip_abstract_fetch
$row = @spip_abstract_fetch($result,"")
est remplacé par $row = @sql_fetch($result,"")
spip_abstract_count
spip_abstract_count($result, $verif->sql_serveur)
est remplacé par sql_count($result,$verif->sql_serveur)
------------------
à creuser, du côté des motclés
- create_groupe a peut être changé de signature.
- voir ce qu’il en est de create_rubrique_mot ou create_mot_rubrique