ah heritage d'oscom, et perte de temps

Messagepar oscim » Ven 04 Sep 2009, 16:08

Salut

Un petit mot pour mettre en relief, se rappeler ou apprendre....

Les configuration pour beaucoup de ces elmement utilise des true/false

la petite subtilité, est que ce ne sont pas des valeur bollean, mais des strings, et donc que la casse est importante.

Vous remarquerez ensuite que certainne conf, utilise le
* true
* True
* TRUE

Et dans chaque cas, un control du type if (MACHINCHOSE =='true')

C'est la que le bat blesse. Attention à la casse de la valeur enregsitrée.

Il arrive des petit pbs recurrent liée à ce pbs , ou des perte de temps ...

La solution que j'ai utilisé, n'est pas la plus simple, mais celle qui me prrait la plus finie.

J'ai ajouté une fonction à general (public et admin)
Code: Tout sélectionner
/**
* @author oscim - OscssTeam
  @param string/boolean defini par une constante!
  @return boolean true/false
*/
function _cst_bool($text){
  if(!tep_not_null($text)) return false;
  $value=(defined(strtoupper($text))) ? return constant(strtoupper($text)) : 'false';
  if( (is_string($value) && strtoupper($value)=='TRUE')||( is_bool($value) && $value==TRUE)  )  return true;
  elseif( (is_string($value) && (strtoupper($value)=='FALSE'))  || ( is_bool($value) && $value==FALSE)  ) return false;
  return false;
}

Cette fonction retourne necessairement (bool)false, sauf si elle detecte true, quelque soit la casse.

Et ensuite sont utilisation dans les controls.

ex avec tep_mail
Code: Tout sélectionner
function tep_mail($to_name, $to_email_address, $email_subject, $email_text, $from_email_name, $from_email_address) {
    if (!_cst_bool('SEND_EMAILS')) return false;

    require_once(DIR_WS_CLASSES . 'mime.php');
    require_once(DIR_WS_CLASSES . 'email.php');
    // Instantiate a new mail object
    $message = new email(array('X-Mailer: osCommerce Mailer'));

    // Build the text version
    $text = str_replace( array(' ','€'), array(' ','euro'),strip_tags($email_text));
    if (_cst_bool('EMAIL_USE_HTML')) {
    $message->add_html($email_text, $text);
    } else {
    $message->add_text($text);
    }

    // Send message
    $message->build_message();
    $message->send($to_name, $to_email_address, $from_email_name, $from_email_address, $email_subject);
}

Cette solution , lourde à mettre en place, mais peut être appliqué au fur et a mesure.

L'autre solution consiste a appliquer systhematique sur les valeur des constantes une fonction qui force la casse .
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar cynic- » Ven 04 Sep 2009, 19:24

Très bien d'avoir remarqué ça (et subi aussi je suppose, comme nous tous)
La correction que tu proposes est bienvenue ;)

Merci !!!
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar oscim » Ven 04 Sep 2009, 21:42

De rien

Pour ne pas tous re-corrigier, toute les revisions sur lesquelles je travailles, sont corrihé, ou en cours.

Ca peut servir..
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33

Messagepar cynic- » Lun 09 Nov 2009, 21:17

En incluant la fonction dans l'admin (general.php) j'ai ceci :
Code: Tout sélectionner
Parse error: syntax error, unexpected T_RETURN in D:/wamp/www/oscss_121/admin/includes/functions/general.php on line 1541

Il s'agit de la ligne suivante qui me semble pourtant OK :

Code: Tout sélectionner
$value = (defined(strtoupper($text))) ? return constant(strtoupper($text)) : 'false';

Edit : sous php5 le "return" ne doit pas apparaître (en le supprimant ça fonctionne) :
Code: Tout sélectionner
$value = (defined(strtoupper($text))) ? constant(strtoupper($text)) : 'false';
Dernière édition par cynic- le Lun 09 Nov 2009, 21:28, édité 1 fois.
cynic-
Site Admin
 
Messages: 694
Inscription: Mar 04 Déc 2007, 13:04

Messagepar oscim » Mer 11 Nov 2009, 19:35

Effectivement, je crois avoir peut être ecrit un peu vite

Le return n'as de toute facon rien a faire ici...
Pour un web au normes du W3C, pour un web plus propre !

- Download osCSS Toutes versions
- stable osCSS 2.1.0 (help|info|new dev) Official help|wiki|Tuto for osCSS 2 | doc doxygen
- Utiliser le tracker pour suivre les évolutions et développements
- Inscrivez vos sites sur oscss pour présenter vos réalisations
Avatar de l’utilisateur
oscim
Site Admin
 
Messages: 1643
Inscription: Mar 25 Sep 2007, 11:33


Retourner vers Bar

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

cron