Patch pour les plugins twPostMeta et twTags
By Geoffrey on Sunday 14 August 2005, 18:32 - Coding - Permalink
Bon voilà, suite aux encouragements de Steve, et comme ce week end je n'avais pas grand chose à faire, j'ai décidé, en mon âme et conscience, de patcher les plugins twPostMeta et twTags un peu plus proprement que ce que j'avais jusqu'à présent. Du coup, j'ai ajouté une méthode twPostMeta::count(), qui permet de compter le nombre d'infos-meta d'un type donné pour un billet, et j'ai modifié la méthode twTags::NbTags() pour tirer parti de cette méthode. Et pour le plaisir des yeux, je vous remets aussi ma version de twTags::show() (et aussi histoire de centraliser tous ces patchs surtout).
Au fait Steve, je n'ai pas trouvé ton mail sur ton site (peut-être mal cherché je sais pas), donc je te trackback, voilà, ça t'apprendra.
twPostMeta::count()
function count($key, $rec = null) { global $con; $id = is_null($rec) ? $GLOBALS['news']->f('post_id') : $rec->f('post_id'); $sql = 'SELECT COUNT(DISTINCT meta_id) AS count FROM ' . DB_PREFIX . 'post_meta WHERE post_id = ' . $id . ' AND meta_key = \'' . $key . '\''; $count = $con->select($sql); if ($count === false || $count->isEmpty()) return false; $count->fetch(); return (int) $count->f('count'); }
twTags::NbTags()
function NbTags($notag = 'aucun tag', $onetag = 'un tag', $severaltags = '%s tags') { $count = twPostMeta::count('tag'); if ($count === false) return false; switch($count) { case 0: echo $notag; break; case 1: echo $onetag; break; default: printf($severaltags, $count); break; } }
twTags::show()
function show($separator = ', ', $ifEmpty = 'Pas de tags pour ce post') { $tags = twPostMeta::field('tag', TWPM_F_ALL); if (!$tags || count($tags) == 0) { echo $ifEmpty; return; } uasort ($tags, array('twTags','_strcmp')); $str = ''; foreach ($tags as $tag) $str .= $separator . '<a href="' . twTags::_url($tag) . '" rel="tag">' . htmlspecialchars($tag) . '</a>'; echo substr($str, strlen($separator)); }
3 comments
Je ne comprends pas pourquoi tu veux faire une requête SQL, alors que toutes les données nécessaires sont déjà dans le cache du plug-in en temps normal. À choisir, il me semble qu'il est moins pénalisant de récupérer toutes les infos méta relatives à un billet pour ensuite les compter via PHP si tu ne les as pas encore en cache, que de faire une requête supplémentaire si ces infos sont déjà récupérées. En plus je ne suis pas sûr que ta requête fonctionne avec MySQL 3.x. Bref, j'ai bien peur que l'essai ne soit pas transformé de ce côté-là.
En plus, dans show(), tu utilises déjà count(). Tu le remplacerais par une requête SQL ? Non, je crois que je suis définitivement plus porté sur le "bête" count().
Pour le reste, je l'intégrerai peut-être ce soir.
C'est pas faux. En fait, quand j'ai une idée quelque part, je l'ai pas ailleurs, du coup je n'ai pas pris le temps de regarder les quelques fonctions de cache que j'ai vu défiler dans le plugin.
Bon enfin bref, mea culpa toussa, mais ça m'aura au moins occupé 5 minutes dans ce week end interminable :)
Bonjour, pourquoi ai-je droit a precondition failed quand je souhaite ajouter des tags ?
En modifiant ces fonctions le problème perdure.
As tu une idée ?
Merci
This post's comments feed