Fork me on GitHub






tests avancés de XOOPS 2.0.14rc1
Aspirant
Inscrit: 13/04/2005 09:55
De 05000 GAP
Messages: 35
bonsoir,

Etant intéressé par la v2014 de XOOPS (annuaire LDAP, active directory, thèmes ... ), je me suis lancé dans les tests...

résultat :
le module xHelp 0.78 ne fonctionne plus normalement

je n'ai pas testé d'autres modules mais plutôt j'ai cherché le bogue,
- test sur xampp 1.5.3 sous windows
- test sur LINUX UBUNTU 5.10 et 6.06

je termine les modifications du noyeau de XOOPS afin de proposer la mise à jour à l'équipe de dév.

à priori c'est un PB sur la gestion des requêtes SQL "mauvais retour de la fonction /class/criteria.php => render() "
je dois tester plusieurs modules avant de proposer les modifs

la mise à jour et le résultat des tests => ICI

Gabriel

PS => voilà le PB :

SELECT COUNT(*) FROM xoops_xhelp_departments WHERE = ''
Error number: 1064
Error message: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= ''' at line 1

la requête SQL retourne WHERE = '' alors qu'il n'y a pas de condition à traiter DONC erreur MYSQL
testé avec Mysql4 et Mysql 5.0.21

Posté le : 18/06/2006 22:52

Edité par gabybob sur 18/06/2006 23:33:45
Edité par gabybob sur 18/06/2006 23:58:33
Partager Twitter Partagez cette article sur GG+
Re: tests avancés de XOOPS 2.0.14rc1
Aspirant
Inscrit: 06/01/2004 06:33
Messages: 63
C'est moins une, on est tres prets de la finale... est-ce que tu pourrais faire passer des infos stp ?

Posté le : 18/06/2006 23:32
Partager Twitter Partagez cette article sur GG+
Re: tests avancés de XOOPS 2.0.14rc1
Aspirant
Inscrit: 13/04/2005 09:55
De 05000 GAP
Messages: 35
OK Skalpa, j'ai fait une modif /class/criteria.php

dans la zone class Criteria extends CriteriaElement
VOICI LA FONCTION d'ORIGINE :

function render() {
$value = $this->value;
if ( !in_array( strtoupper($this->operator), array('IN', 'NOT IN') ) ) {
if ( ( substr( $value, 0, 1 ) != '`' ) && ( substr( $value, -1 ) != '`' ) ) {
$value = "'$value'";
} elseif ( !preg_match( '/^[a-zA-Z0-9_\.\-`]*$/', $value ) ) {
$value = '``';
}
}
$clause = (!empty($this->prefix) ? "{$this->prefix}." : "") . $this->column;
if ( !empty($this->function) ) {
$clause = sprintf($this->function, $clause);
}
$clause .= " {$this->operator} $value";
return $clause;
}

j'ai tenté une modif
function render() {
$value = $this->value;
if(empty($value)){
...............;
...............;
}
return $clause;
}

le Bmol est que les autres propriétés de la class criteria ne sont pas renseigné et comme je n'ai pas la doc du développeur je patine un peu...
Après la modif j'ai un PB d'affichage des pages secondaires de l'admin (pages vides!)

dans la version 2013 cela fonctionne

/**
* Make a sql condition string
*
* @return string
**/
function render() {
if ( strtoupper($this->operator) == 'IN' || strtoupper($this->operator) == "NOT IN") {
$value = $this->value;
} else {
if ( '' === ($value = trim($this->value)) ) {
return '';
}
if ( (substr($value, 0, 1) != '`') && (substr($value, -1) != '`') ) {
if (!class_exists('MyTextSanitizer')) {
include_once XOOPS_ROOT_PATH."/class/module.textsanitizer.php";
}
$value = "'".addslashes(stripslashes($value))."'";
}
}
$clause = (!empty($this->prefix) ? "{$this->prefix}." : "") . $this->column;
if ( !empty($this->function) ) {
$clause = sprintf($this->function, $clause);
}
$clause .= " {$this->operator} $value";
return $clause;
}

j'étudie les propriétés de la classe crteria et à suivre

je regarde de plus près et c'est plutôt la fonction renderWhere() qu'il faut modifier.

si le where est vide retourner une variable vide, et non un where =''

/**
* Make a SQL "WHERE" clause
*
* @return string
*/
function renderWhere() {
$cond = $this->render();
return empty($cond) ? '' : "WHERE $cond";
}

c'est hyper succint comme fonction et pourtant elle décide d'ajouter un WHERE si le retour de render est non vide et voilà le coeur du PB, comme render() renvoi la chaine ='' donc $cond est non vide ...

pour xoops2013 la fonction render() retourne bien $cond vide

je regarde comment traiter cela et ne pas polluer ailleurs
à demain

gabriel

Posté le : 18/06/2006 23:57

Edité par gabybob sur 19/06/2006 00:14:12
Edité par gabybob sur 19/06/2006 00:21:47
Partager Twitter Partagez cette article sur GG+
Re: tests avancés de XOOPS 2.0.14rc1
Aspirant
Inscrit: 06/01/2004 06:33
Messages: 63
:-o :-o
En fait ca vient du
if ( '' === ($value trim($this->value)) ) {
return 
'';
}


qui a disparu... Personnellement je consdidère que le remettre consiste à recréer un bug (avec ça il y a impossibilité de récupérer les éléments qui ont une colonne vide mais non nulle), mais bon de toute façon toute cette classe est problématique quelque part donc on ne va pas se poser de question et se la jouer safe pour l'instant.

Je viens de regler ca, si tu veux le fichier criteria.php mis à jour est dipos sur SF.

Merci

skalpa.>

Posté le : 19/06/2006 02:00
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

9 Personne(s) en ligne (6 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 9 | Plus ...