Closed Phyks closed 11 years ago
Le problème vient de ce test (ligne 430) :
if (!$cle && are_values_in_string($chaine,implode(' ',$snippet))!==false || $cle!==false && isset($snippet[$cle]) && are_values_in_string($chaine,$snippet[$cle])!==false)
Quand on fait une recherche par tags, !$cle est true. Donc on ne recherche pas le tag dans la liste des tags mais le tag dans le implode(' ', $snippet). Avec un tag long, ça passe relativement inaperçu, mais avec un tag d'une lettre, tous les tags matchent (car il y a forcément une fois la lettre C dans le contenu d'un tag :).
Ce qui est curieux c'est que ça liste aussi python et bash qui ne contiennent pas de c ... AAARGH !
Si, tous contiennent un C. Regarde le code en question, tu fais un implode du snippet. Donc tu cherches un "C" dans le titre, dans la description ou dans les tags.
Sur les snippets de mon exemple :
oui, je viens de percuter au moment où tu as posté ^^
mais normalement, dans une recherche par tag, il ne devrait chercher que dans le tag...
Je viens de perdre 10 minutes avec un piège de noobs: Je fais des tests qui ne changent jamais rien à la page... j'ai oublié le cache !!!! ( :@)
Pas cool @cache... :/ C'est un vicieux celui-là :)
D'après mes tests, cela vient de la première partie de la condition :
if (!$cle && are_values_in_string($chaine,implode(' ',$snippet))!==false)
Quand on fait une recherche par tags, $cle == '#tags' et donc !$cle == true donc il teste are_values_in_string, qui renvoie true également (car on cherche un C dans tout le contenu du snippet).
Je n'ai pas regardé beaucoup plus en détails pour l'instant.
non, j'ai trouvé je pense, encore une erreur de noob tu vas voir ^^
function search($chaine,$cle=false, $from=0){global $snippets,$template,$config;if ($cle=false){ t'as vu ? non ?! ^^ ben en fait, avec if ($cle=false), $cle est toujours à false ! ^^ je corrige et je teste ;)
@broncowdd : bien vu ! Une astuce pour éviter ce genre de désagréments est de prendre l'habitude de le noter à l'envers :)
if($truc == false)
et if(false == $truc)
ont le même sens et fonctionnent de la même façon.
Par contre, if($truc = false)
est toujours vrai alors que if(false = $truc)
n'a aucun sens et renvoie une erreur :)
ha oui, pas con ça ^^ bon, je continue parce que ça ne suffit pas encore ;)
Là il cherche bien dans les tags et seulement celui cliqué (si c'est "c", il cherche " c "...)
:+1: c'est corrigé :)
Salut,
Il y a une petite erreur dans la gestion des tags. En effet, j'ai rajouté un tag "C" et j'ai mis 3 snippets à l'intérieur (2 publics, 1 privé). Lorsque je demande d'afficher tous les snippets taggés "C", SnippetVamp me retourne tous les snippets ajoutés dans l'instance (quelque soit le tag).
Je n'ai pas encore trouvé d'où vient le problème, j'updaterai l'issue si j'arrive à l'isoler.
Ce bug est visible ici par exemple : https://snippet.phyks.me/snippetvamp.php?tag=C