Carnet Wiki

Joomla 3 / Joomla2spip

Version 2 — Septembre 2014 YannX

Joomla est l’un des CMS les plus utilisé en France, mais il peut présenter de nombreuses failles de sécurité et nous préférerons y accéder sous SPIP.

Attention, cet article documente la version pour accéder à un Joomla 3 !

Sur la zone, vous trouverez un plugin de lecture et conversion, et vous consulterez les notes d’origine ; toutefois, vous aurez peut-etre quelques questions....

Noter d’abord que Joomla utilise la même notion de $prefix que spip, mais il n’a pas de valeur de préfixe par défaut, un radical est généré aléatoirement : vous devrez donc commencer par modifier les noms des tables physiques, car SPIP ne sait pas (encore ?) appliquer un $prefix à des tables non-SPIP.
Dans la suite de cet article, vous devrez prévoir d’adapter ce préfixe, en avant du nom de table précédé par un _ : dans la version d’origine du plugin, il s’agit du préfixe jos_ :PhpMyAdmin permet de remplacer un préfixe dans tous les noms de tables d’une base, par une seule opération !

N.B. Dans tous les squelettes du plugin ci-dessous, l’ensemble des boucles est désormais protégé par un ? à suivre le nom physique de la table, pour éviter une erreur de table inexistante, avec néanmoins un message d’anomalies...

Quelques équivalences (pour Joomla 3)

Comme tout CMS, les auteurs, articles et rubriques sont enregistrées dans des tables de la base Joomla, à savoir :
-  _users : id, #NAME, #USERNAME , #EMAIL , #PARAMS
-  _content : id, asset_id, #SECTIONID #TITLE , #CATID , #PARENTID , #LANGAGE
_
#TITLE , # INTROTEXT , #FULLTEXT , #CREATED , #CREATED_BY (= id_auteur), #CREATED_BY_ALIAS , #MODIFIED , #PUBLISH_UP , #PUBLISH_DOWN )
#IMAGES
#IMAGES # URLS #ATTRIBS #METAKEYS #METADESC #XREFERENCE (a reference to enable linkages to external datasets)
-  _assets : id, parent_id, #NAME #TITLE, #RULES # RULES (droits /en JSON)
-  _categories : id, asset_id, parent_id, #TITLE , #DESCRIPTION , # ALIAS

Documentation du plugin


-  Permet de lire et afficher une bdd joomla avec SPIP
-  Gère la conversion Joomla -> SPIP via un squelette

Plugin joomla2spip
Montrant les choix du menu : ?spip.php ?page=joomla2spip

UTILISATION

  1. installer un SPIP sur la même base de donnée que le joomla
  2. installer le plugin
  3. avant de l’utiliser, vous devrez corriger les prefixes du jeu de tables Joomla
  4. se rendre sur la page ./spip.php?page=joomla2spip
    Plugin joomla2spip
    Montrant les choix du menu : ?spip.php ?page=joomla2spip

    Le menu proposé offre un sommaire des articles, et la liste des catégories à droite,
    la lecture de l’articles

REMARQUES
Joomla propose des champs inexistants dans la table article de spip, ils sont disponibles via des plugins SPIP on les ignore ici (dans cette première version joomla2spip v0.2.3 la conversion n’a pas été testée ! ).
-  ordre
-  date de dépublication
-  id_parent (pour faire des articles liés)

Joomla propose des ’features’ non gérées par SPIP ; ignoré.
-  menus => necessite un plugin...

les liens de _content ;
index.php?option=com_content&task=view&id=43&Itemid=81
sont transformés dans spip_articles en
spip.php?page=article&id_article=43

Les id_article doivent être forcés pour correspondre à id.

TODO
Chopper les urls des rubriques, des articles des documents.
jos_jv_page_url (url propres ?)
jos_jv_a_page ?
jos_redirection ?

Chopper les utilisateurs :

  • les auteurs : jos_users
  • les contacts : jos_contact_details
  • les abonnés : jos_acajoom_subscribers

Types d’utilisateurs : jos_usertypes
-  *# administrator
-  *# editor
-  *# user
-  *# author
-  *# publisher
-  *# manager

Pour lancer la conversion régler php.ini :

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;


max_execution_time = 18000     ; Maximum execution time of each script, in seconds
max_input_time = 18000        ; Maximum amount of time each script may spend parsing request data
memory_limit = 64M      ; Maximum amount of memory a script may consume (8MB)

-  > erational : la pagination permet de limiter la consommation
-  > xdjuj .2.1 : récupère les forums pour SPIP 2 également

Version .2.3 et suivantes : sur un Joomla 3, les structures de tables ont changé !
-  > YannX .2.3 : en trunk, une protection par boucle sur table optionnelle
(pour la disparition de ’jos_sections’ en Joomla 3)

Une autre technique : base annexe

Le menu de Maintenance technique de SPIP permettant de déclarer une autre base SPIP, va être utilisée pour assurer des boucles sur une declaration annexe pour Joomla :
-  créer un fichier de connexion, à nommer joom
-  les boucles de tables devront être précédées de ce radical de connexion :
BOUCLE_content(joom:content){par id}

Des noisettes Z seront rendues disponibles dans le plugin....