Fork me on GitHub

Rapport de message :*
 

Re: tests avancés de XOOPS 2.0.14rc1

Titre du sujet : Re: tests avancés de XOOPS 2.0.14rc1
par gabybob sur 18/06/2006 23:57:16

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
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

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