Changeset 85703 in spip-zone


Ignore:
Timestamp:
Oct 28, 2014, 7:22:03 PM (5 years ago)
Author:
patfr@…
Message:

Robustesse des jeux multiples (résout le bug sur les multi QCM).
+ filtre permettant d'exploiter les résultats intermédiaires : |resultat_intermediaire
Exemples :

[(#RESULTAT_LONG|resultat_intermediaire{nb})]
[(#RESULTAT_LONG|resultat_intermediaire{score,1})]

Location:
_plugins_/jeux/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/jeux/trunk/jeux/multi_jeux.php

    r85698 r85703  
    3838*/
    3939
    40 // Separateur pour l'enregistrement des resultats detailles en base
     40// Separateur pour l'enregistrement en base des resultats longs
    4141@define('_SEP_BASE_MULTI_JEUX', '<br />');
    4242
     
    7171        for($i=1; $i<$c; $i++) {
    7272                // decoder le texte obtenu en fonction des signatures et (re!)inclure le jeu
    73                 jeux_decode_les_jeux($textes[$i], $indexJeux);
     73                jeux_decode_les_jeux($textes[$i], $indexJeux+$i/1000);
    7474        }
    7575
     
    9898        }
    9999        return $tete.$html.$texte.$pied.'</div>';
     100}
    100101
    101 }
    102102?>
  • _plugins_/jeux/trunk/jeux_fonctions.php

    r65514 r85703  
    5353        // separateurs inutiles ici, le texte est celui d'un seul jeu
    5454        $texte = str_replace(array(_JEUX_DEBUT, _JEUX_FIN), '', $texte);
    55         if(!is_array($config)) return $texte . "\n[config]" . $config;
     55        if(!is_array($config)) return $texte . "\n["._JEUX_CONFIG.']' . $config;
    5656        array_walk($config, create_function('&$v,&$k','$v = trim($k)."=".trim($v);'));
    57         return $texte . "[config]" . join("\n", $config);
     57        return $texte . '['._JEUX_CONFIG.']' . join("\n", $config);
    5858}
    5959
     
    103103}
    104104
     105// renvoie la configuration interne d'un jeu
     106function balise_CONFIG_INTERNE_dist($p) {
     107        $texte = champ_sql('texte', $p);
     108        $param = interprete_argument_balise(1, $p);
     109        $p->code = "jeux_trouver_configuration_interne($texte, ".($param?$param:"''").')';
     110        return $p;
     111}
    105112
    106113// traduction longue du type de resultat
     
    154161}
    155162
     163/*
     164 filtre interpretant le resultat long d'un jeu multiple
     165 exemples d'utilisation :
     166        [(#RESULTAT_LONG|resultat_intermediaire{nb})]
     167        [(#RESULTAT_LONG|resultat_intermediaire{score,1})]
     168 $index doit commencer a 1
     169 valeurs reconnues pour $code :
     170        score => renvoie le score intermediaire
     171        total => renvoie le total intermediaire
     172        detail => renvoie le resultat long intermediaire
     173        nb => renvoie le nombre de sous-jeux
     174*/
     175function filtre_resultat_intermediaire($texte, $code='score', $index=0) {
     176        include_spip('jeux/multi_jeux');
     177        $nb = count($t = explode(_SEP_BASE_MULTI_JEUX, $texte));
     178        if($nb<2) return '';
     179        if($code=='nb') return $nb-1;
     180        if($index<1 || $index>$nb) return 'ERR';
     181        switch($code) {
     182                case 'score': case 'total':
     183                        $t = array_pop($t);
     184                        $t = explode('/', $t, 2);
     185                        $t = explode(',', $t[$code=='score'?0:1]);
     186                        return trim($t[$index-1]);
     187                case 'detail': return $t[$index-1];
     188        }
     189}
    156190
    157191?>
  • _plugins_/jeux/trunk/jeux_utils.php

    r65527 r85703  
    343343// les index doivent etre positifs
    344344function jeux_idname($indexJeux, $index=-1, $prefixe='', $index2=-1, $prefixe2='') {
     345        $indexJeux = str_replace('.','_',$indexJeux);
    345346        $indexJeux = 'reponses' . $indexJeux;
    346347        if($index<0) return array($indexJeux, $indexJeux);
     
    351352// renvoie la reponse trimee du formulaire (NULL si n'existe pas)
    352353function jeux_form_reponse($indexJeux, $index=-1, $prefixe='', $index2=-1, $prefixe2='') {
    353         $reponse = _request('reponses'.$indexJeux);
     354        $reponse = _request('reponses'.str_replace('.','_',$indexJeux));
    354355        if($index>=0 && is_array($reponse)) $reponse = isset($reponse[$prefixe.$index])?$reponse[$prefixe.$index]:NULL;
    355356        if($index2>=0 && is_array($reponse)) $reponse = isset($reponse[$prefixe2.$index2])?$reponse[$prefixe2.$index2]:NULL;
     
    358359}
    359360
    360 // indique si on doit corriger ou non
     361// indique si on doit corriger ou non (attention aux multi jeux)
    361362function jeux_form_correction($indexJeux) {
    362         return intval(_request('correction'.$indexJeux))?true:false;
     363        return intval(_request('correction'.intval($indexJeux)))?true:false;
    363364}
    364365
  • _plugins_/jeux/trunk/paquet.xml

    r85698 r85703  
    22        prefix="jeux"
    33        categorie="divers"
    4         version="3.3.0"
     4        version="3.3.1"
    55        etat="test"
    66        compatibilite="[3.0.0;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.