OpenEdition / lodel

Science publishing CMS
GNU General Public License v2.0
50 stars 27 forks source link

Pb TEIParser #94

Closed ssonnet closed 5 years ago

ssonnet commented 5 years ago

Bonjour,

Je suis en train de travailler à la migration vers Lodel 1.0 d'un site initialement réalisé avec Lodel 0.7. J'utilise la branche php7-compatible de Lodel 1.0. Je suis arrivé au stade des essais d'import de fichiers stylés pour conversion xml et je "bute" sur les erreurs suivantes (refus d'importer le fichier stylé) :

PHP Error (Warning) in file '/var/www/html/lodel/lodel/scripts/logic/class.data.php' on line 2224 : 
DataLogic::generateXML(): Invalid Document Encoding
Error (Internal Error) in file '/var/www/html/lodel/lodel/scripts/dao.php' on line 339 : 
SQL ERROR :
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '))  ORDER BY id' at line 1
SELECT id,type,title,style,otx,lang,newbyimportallowed FROM entrytypes WHERE (status>0 AND class IN ())  ORDER BY id
Base: lodel_sandbox
PHP Error (Notice) in file '/var/www/html/lodel/lodel/scripts/dao.php' on line 344 : 
Trying to get property of non-object
PHP Error (Notice) in file '/var/www/html/lodel/lodel/scripts/dao.php' on line 348 : 
Trying to get property of non-object
PHP Error (Warning) in file '/var/www/html/lodel/lodel/scripts/dao.php' on line 554 : 
Invalid argument supplied for foreach()
PHP Error  in file '/var/www/html/lodel/lodel/scripts/dao.php' on line 350 : 
Call to a member function MoveNext() on boolean

En essayant de débugger, je me suis rendu compte que dans lodel/scripts/teiparser.php, ligne 277, la variable $entriesClassTypes était utilisée sans contrôle de son contenu. Si la variable est vide, on a une erreur fatale. Au niveau fonctionnel, le cas de figure correspond dans le modèle éditorial à une classe qui n'a aucun champs de type 'entries', ce qui est le cas dans le modèle éditorial du site que j'essaye de migrer. Je peux "corriger" localement et temporairement le code mais j'aimerais éviter d'avoir à hacker le CMS. Est-il envisageable pour vous d'apporter les corrections au fichier teiparser.php et de les mettre à disposition des utilisateurs ? Ou avez-vous une solution alternative à proposer (il y a peut-être quelque chose qui m'échappe) ?

Cordialement.

PatGendre commented 5 years ago

bonjour, dans un 1er temps, utilisez plutôt la branche master, qui fonctionne aussi en 7.0. Pour la correction sur teiparser, on va regarder de plus près et on va vous répondre. Pour info, vous travaillez sur quel types de publications? Cordialement, Patrick Gendre

ssonnet commented 5 years ago

Bonjour,

Merci pour votre réponse, je viens de voir que vous aviez modifié le code dans la branche master : double merci à vous ;) Je vais donc tester cette branche mais cela amène une autre question : est-ce que c'est la branche à considérer pour un déploiement en production ?

Je ne sais pas si ça va répondre à votre question mais le site héberge une revue. Je crois que le plus simple est que je vous donne le lien vers le site actuel (non migré... il est en Lodel 0.9) car étant informaticien je ne suis pas un expert du domaine de l'édition électronique : http://licorne.edel.univ-poitiers.fr.

Cordialement. Sylvain Sonnet

PatGendre commented 5 years ago

Merci de votre retour, si il s'agit d'une migration de 0.9 à 1.0 c'est nettement plus simple que depuis 0.7. A toutes fins utiles il y a des explications ici : https://lodel.hypotheses.org/347 Cordialement, Patrick Gendre

ssonnet commented 5 years ago

Les explications que vous fournissez en lien sont celles que j'ai suivies, et effectivement la procédure est simple. Je me permets d'insister sur la branche master : est-ce qu'on peut la déployer sans crainte sur un environnement de production ? Cordialement. Sylvain sonnet

bcenou commented 5 years ago

Oui, la branche master est celle que nous utilisons en production sur tout OpenEdition.

-- Bruno Cénou

ssonnet commented 5 years ago

Bonjour, J'ai donc switché sur la branche master et refait mes tests : ça passe. Merci ! Cordialement. Sylvain Sonnet