Skip to main content Help Control Panel

Login   A+   A-

Community «   Discussion forum «   Coffee machine «  

test yacs 7.3 alpha 19

This brand new version is provided for tests only. Do not use this on production server, except if explicitly recommended.

Files

index.php 10,421 bytes, 74 downloads
Here is the 7.3 corrected index.php file that take care of the section_at_home_id feature.
Edited by Tof on Mar. 25 2007
Zoom
yacs 7.3 alpha (tgz) 3.48 Mbytes, 184 downloads
Edited by Bernard on Mar. 20 2007
Zoom

Comments

Tof
from Grenoble-Chambery
518 posts

on Mar. 25 2007


I found a bug in this release and the previous ones that try to implement the section_at_home_id feature.

The index.php file doesnt take care of this parameter.

To correct this, you've got to add the following lines after line #545 :

elseif ((int)$context['sections_at_home'] > 0) $anchor = 'section:'.$context['sections_at_home'];

I will join the corrected index.php with this post.
-----
Tof
Bernard
avatar
from nearby-an-airport
Associate, 6796 posts

on Mar. 25 2007


Tof, es-tu sûr qu'il y a un bug ? Ce que tu as ajouté, ce ne serait pas déjà lignes 512 et suivantes ?
Tof
from Grenoble-Chambery
518 posts

on Mar. 26 2007


Effectivement, les lignes 512 et compagnie font cela...

J'ai donc creusé un peu plus et me rend compte que le bug provient de la fonction Sections::get

Bad news... toutes les instructions sql utilisant like sont (à mon avis) erronées dans cette classe section et peut-être ailleurs !

Normalement (sauf erreur de ma part) la syntaxe est LIKE 'toto%' ou LIKE '%toto' ou LIKE '%toto%' et non LIKE 'toto'.

J'ai fait le test en modifiant l'instruction sql du Sections::get et le bug sur la prise en compte de cette feature provient bien de là.

En attendant, le fichier index.php que j'ai posté précédemment permet de contourner le problème.

Autre chose, est-ce bien raisonnable de faire des LIKE sur des numériques (sections.id) ?


Tof
Bernard
avatar
from nearby-an-airport
Associate, 6796 posts

on Mar. 26 2007


Bon, en fait, le problème c'est que j'ai rajouté de l'encodage Unicode dans Sections::get(), pour cause des petits noms qu'on peut donner aux sections. Si l'on passe du texte tout va bien. Mais si l'on passe un entier en tant qu'entier, YACS tente d'en faire une chaîne de caractère Unicode, ce qui pourrit la requête SQL, et la recherche n'aboutit pas. La solution, c'est tout simplement, dans index.php, de retirer le cast '(int)' à la ligne 514. Je t'ai rajouté comme testeur de la page d'index, merci du retour d'info. Dispo dans la 7.3 finale, bien sûr...
Tof
from Grenoble-Chambery
518 posts

on Mar. 28 2007


Merci Bernard, je confirme que cette correction fonctionne. PS : pour les % sur le LIKE, j'ai faux ?
-----
Tof
Bernard
avatar
from nearby-an-airport
Associate, 6796 posts

inspired from Tof on Mar. 28 2007


Tof: Le % sur le LIKE, c'est pour les recherches approchées.

En réalité, le seul moyen d'être sûr de pointer vers un enregistrement à partir de son identifiant est d'utiliser

field LIKE 'value'

et ceci, même pour les valeurs numériques. J'ai observé des choses étranges avec

field = 'value'

comme avec

field = value

C'est pas dans le manuel, je te l'accorde, mais au moins le LIKE a passé tous mes tests... Peut-être devrais-je revoir ma copie à l'occasion d'une prochaine version de MySQL, qui sait ?
Tof
from Grenoble-Chambery
518 posts

on Mar. 28 2007


Si tu le dis... je ferai des fouilles là-dessus une de ces jours si je trouve le temps.

En attendant, je te fais confiance, et en plus ça fonctionne.
-----
Tof
Tof
from Grenoble-Chambery
518 posts

on Mar. 29 2007


J'ai trouvé un autre bug dans le sections/view.php à la ligne 747 (version 7.3beta19), il faut remplacer :

$items = Sections::list_by_title_for_anchor('section:'.$item['id'], $offset, $items_per_page, $layout, $capability);

par :

$items = Sections::list_by_title_for_anchor('section:'.$item['id'], $offset, $items_per_page, $item['sections_layout'], $capability);
Bernard
avatar
from nearby-an-airport
Associate, 6796 posts

inspired from Tof on Mar. 29 2007


Tof: pas sûr, vu que $layout est positionné quelques lignes plus haut en fonction du contenu de $context['sections_layout']... J'ai raté quelque chose là ?
Tof
from Grenoble-Chambery
518 posts

inspired from Bernard on Mar. 29 2007


Bernard : le $layout est une instance de la classe Layout alors que le $item['sections_layout'] est une chaine de caractères. Sauf si c'est moi qui est raté something.
Bernard
avatar
from nearby-an-airport
Associate, 6796 posts

inspired from Tof on Mar. 31 2007


Tof: ben justement, c'est ce qu'on cherche à faire, de transmettre une instance de Layout... La chaîne de caractères, c'est juste pour quand on n'a pas encore de Layout, et qu'il faut en trouver un...

Rate this page
Posted by Bernard on Mar. 20 2007, commented by Bernard on Mar. 31 2007, (popular)