[spip-dev] traiter_modeles et identification des documents vus

Les documents vus dans un objet sont identifiés via la fonction traiter_modeles (dans inc/lien.php) appelée par la fonction inc_marquer_doublons_doc_dist de la méditahèque.

Seuls les modèles img, emb et doc sont reconnus. Les modèles application, video, audio, image et text, pourtant fourni par défaut ne sont pas détectés alors qu’il s’agit de modèle valide et fourni en standard par SPIP. D’ailleurs, indique qu’on peut appeler directement ces modèles. Ne devraient-ils donc pas être détectés également par traiter_modeles ? Par ailleurs, pourrait-on envisager une globale ou un pipeline qui permettrait d’étendre cette liste afin que des plugins puissent spécifier des modèles qu’ils fournissent afin qu’ils soient détectés ? Pour ma part, j’ai ce besoin dans deux plugins (les modèles media et les modèles cite pour le modèle couv). Cordialement joseph

Les documents vus dans un objet sont identifiés via la fonction traiter_modeles (dans inc/lien.php) appelée par la fonction inc_marquer_doublons_doc_dist de la méditahèque.

Seuls les modèles img, emb et doc sont reconnus. Les modèles application, video, audio, image et text, pourtant fourni par défaut ne sont pas détectés alors qu'il s'agit de modèle valide et fourni en standard par SPIP. D'ailleurs, http://www.spip.net/fr_article3715.html indique qu'on peut appeler directement ces modèles.
Ne devraient-ils donc pas être détectés également par traiter_modeles ?

Ils le sont.

Par ailleurs, pourrait-on envisager une globale ou un pipeline qui permettrait d'étendre cette liste

C'est la REGEXP '_RACCOURCI_MODELE' qui le fait.

J'ai l'impression que ta question s'adresse au plugin mediatheque, pas au noyau de SPIP.

Committo,Ergo:Sum

C’est que j’ai mal compris le code alors. En regardant la version de médiathèque pou SPIP 3 (http://zone.spip.org/trac/spip-zone/browser/core/plugins/medias/inc/marquer_doublons_doc.php) je vois un incldue de inc/liens et un appel à traiter_modeles en précisant $doublos=true.

En allant regarder le code de traiter_models (http://core.spip.org/projects/spip/repository/entry/spip/ecrire/inc/lien.php ligne 227 et suivantes) je comprends ceci (mais je peux me tromper) :

_RACCOURCI_MODELE permet de détecter l’ensemble des modèles.
Par contre, pour détecter les documents on a dans le code :

242

        if ($doublons===true)

243

                $doublons = array('documents'=>array('doc','emb','img'));


Autrement dit, quand on passe $doublons=true, pour rechercher les documents vus dans le texte, seuls les modèles doc, emb et img sont recherchés.

De m^me un peu plus loin, on retrouve :
317

                                foreach($doublons?$doublons:array('documents'=>array('doc','emb','img')) as $quoi=>$modeles)

Autrement, pour l’identification des documents appelés dans le texte (ce qui joue ensuite dans la médiathèque pour qualifier les documenst comme vus), la liste des modèles concernés est bien définie en dur. C’est cette liste que je souhaiterai pouvoir étendre, d’une part aux autres modèles fournis par SPIP, mais également à d’autre smodèles de documents fournis par des plugins.

Joseph

Ah je n'avais pas vu passer ça:
http://core.spip.org/projects/spip/repository/revisions/13100
effectivement c'est des constante en dur dans le code, c'est anormal.

Committo,Ergo:Sum

Ah oui tiens, ce commit préparait l’extensibilité puisqu’il permet de passer la liste des modèles en second argument de traiter_modeles().

http://zone.spip.org/trac/spip-zone/changeset/48146 s’en sert donc pour étendre la liste des modèles analysés.

Cédric