2010 juil. 9
Par Dsls - Lien permanent
Le passage à dotclear 2.2 est l'occasion de remettre à plat le plugin Metadata.
Jusqu'alors, Metadata avait 2 rôles : la gestion des métadonnées, et la gestion des tags. Metadata fera désormais partie intégrante du core de dotclear, sous la forme du fichier inc/core/class.dc.meta.php.
Les parties spécifiques à la gestion des tags ont été déplacées au sein d'un nouveau plugin livré de base, le plugin Tags.
D'autres améliorations ont été apportées :
- Maintenant qu'il est intégré au core, il n'est plus besoin d'instancier la classe dcMeta à tout-va. Une instance est désormais systématiquement créée dans $core->meta
- La méthode $core->meta->getMeta est dépréciée. L'ancienne méthode avait pour signature :
public function getMeta($type=null,$limit=null,$meta_id=null,$post_id=null) {
Il faudra désormais compter sur deux nouvelles méthodes :
public function getMetadata($params=array(), $count_only=false){} public function computeMetaStats($rs) {}
Concrètement, getMeta avait 2 rôles : récupérer des métadonnées, et calculer les statistiques de ces métadonnées (occurences d'apparition, notamment utilisées par les nuages de tags). Ces 2 rôles sont désormais séparés.
getMetadata récupère les métadonnées en fonction de certains critères. Son mécanisme est très similaire à getPosts de $core->blog. $params peut prendre les attributs suivants :
- meta_type : récupère les métadonnées d'un type donné
- meta_id : récupère les métadonnées ayant une valeur donnée
- post_id : récupère les métadonnées d'un billet donné
- limit : limite le nombre d'entrées récupérées
- order : spécifie l'ordre de récupération des métadonnées
computeMetaStats enrichit le résultat renvoyé par getMetadata en y insérant les champs statistiques percent et roundpercent.
En pratique, un ancien appel à getMeta de la forme :
$meta = new dcMeta($core); $rs_meta = $meta->getMeta($type,$limit,$meta_id,$post_id);
sera à modifier en :
$rs_meta = $core->meta->getMetadata(array( 'meta_type' => $type, 'meta_id' => $meta_id, 'post_id' => $post_id, 'limit' => $limit));
ou, s'il y a des statistiques à récupérer, en :
$rs_meta = $core->meta->computeMetaStats( $core->meta->getMetadata(array( 'meta_type' => $type, 'meta_id' => $meta_id, 'post_id' => $post_id, 'limit' => $limit)));
L'ancienne méthode getMeta est toujours présente pour des raisons de compatibilité avec l'existant.
Commentaires
Très intéressant, merci pour les précisions. Je vais mettre à jour ma plateforme et vérifier que tout les plugins fonctionnent encore. :)
Pierre
En complément...
Si vous constatez l'affichage de deux blocs apparemment identiques pour sélectionner des mots clés lors de l'édition d'un billet, cela veut dire que vous avez à la fois les plugins tags et metadata d'installés dans le répertoire des plugins fournis avec Dotclear depuis la 2.2.
metadata est de trop, vous pouvez supprimer...
Ça veut dire OK pour la recherche sur les tags de Gallery?