Bonjour,
je reviens donc à la charge à propos de l'évolution de SPIP vers un
support multi bases, souhaitable pour plusieurs d'entre nous.
Je disais hier :
---------8<----------------------------------------------------------
La piste principale pour l'instant est d'ajouter une couche d'accès
aux données, qu'elle soit ou non objet. Une idée serait par exemple
d'avoir des fonctions getArticle(), putArticle(), updateArticle(), et
autres, pour tous les types de données ...
SPIP devant (?) conserver la compatibilité avec PHP3, l'usage d'objet
n'est pas forcément souhaitable.
---------8<----------------------------------------------------------
Je pense que le plus simple, le plus exploitable et le plus extensible
est l'usage des fonctions proposées ci-dessus, avec des tableaux
indexés en paramètre.
Par exemple, au début de 'articles_edit.php3' :
spip_query("UPDATE spip_articles SET date_modif=NOW(), auteur_modif=$connect_id_auteur WHERE id_article=$id_article");
Deviendrait :
$data = array(
'date_modif' => time(),
'auteur_modif' => $connect_id_auteur
);
updateArticle($id_article, $data);
Pour assurer le multi bases, il faut utiliser des types de données
standards, d'où l'usage ici d'un timestamp pour 'date_modif'.
Pour gérer les différentes librairies spécifiques à la base utilisée,
je propose une arborescence comme cela est fait dans d'autres projets:
/SPIP/
/SPIP/ecrire/
/SPIP/ecrire/db/
/SPIP/ecrire/db/mysql/
/SPIP/ecrire/db/oci8/
/SPIP/ecrire/db/pgsql/
...
Avec dans chaque sous-répertoire spécifique de 'db' les librairies
identiques :
connect.php3 (gestion des connexions)
rubrique.php3
article.php3
breve.php3
auteur.php3
...
Chaque script contenant les différentes fonctions à déterminer.
Est-ce que cela vous semble une bonne piste de départ ?
-Nicolas