Browse Source

mettre le trunk au bon endroit

jeux2
maieul@maieul.net 11 years ago
commit
7983a392f5
  1. 262
      .gitattributes
  2. 67
      _REGLES_DE_COMMIT.txt
  3. 63
      base/jeux_ajouter_resultat.php
  4. 22
      base/jeux_compacter.php
  5. 7
      base/jeux_modifier_statut.php
  6. 14
      base/jeux_supprimer.php
  7. 60
      base/jeux_tables.php
  8. 129
      base/jeux_upgrade.php
  9. 74
      exec/inc_boites_infos.php
  10. 61
      exec/jeux_edit.php
  11. 222
      exec/jeux_gerer_resultats.php
  12. 46
      exec/jeux_resultats_auteur.php
  13. 46
      exec/jeux_resultats_jeu.php
  14. 30
      exec/jeux_tous.php
  15. 109
      exec/jeux_voir.php
  16. 37
      fonds/auteur_details.html
  17. 2
      fonds/bouton_corriger.html
  18. 2
      fonds/bouton_recommencer.html
  19. 2
      fonds/bouton_reinitialiser.html
  20. 2
      fonds/bouton_rejouer.html
  21. 53
      fonds/cfg_jeux.html
  22. 25
      fonds/jeu_details.html
  23. 12
      fonds/jeu_score.html
  24. 80
      fonds/jeux_boites_infos.html
  25. 1
      fonds/jeux_compacter.html
  26. 26
      fonds/jeux_edit.html
  27. 71
      fonds/jeux_tous.html
  28. 13
      fonds/jeux_voir.html
  29. 2
      fonds/resultats.html
  30. 6
      fonds/resultats_auteur_lien.html
  31. 393
      gpl_fr.txt
  32. BIN
      icones_barre/jeu-16.png
  33. BIN
      img/diag_echecs29/bb.gif
  34. BIN
      img/diag_echecs29/bb.png
  35. BIN
      img/diag_echecs29/bk.gif
  36. BIN
      img/diag_echecs29/bk.png
  37. BIN
      img/diag_echecs29/bn.gif
  38. BIN
      img/diag_echecs29/bn.png
  39. BIN
      img/diag_echecs29/bp.gif
  40. BIN
      img/diag_echecs29/bp.png
  41. BIN
      img/diag_echecs29/bq.gif
  42. BIN
      img/diag_echecs29/bq.png
  43. BIN
      img/diag_echecs29/br.gif
  44. BIN
      img/diag_echecs29/br.png
  45. BIN
      img/diag_echecs29/wb.gif
  46. BIN
      img/diag_echecs29/wb.png
  47. BIN
      img/diag_echecs29/wk.gif
  48. BIN
      img/diag_echecs29/wk.png
  49. BIN
      img/diag_echecs29/wn.gif
  50. BIN
      img/diag_echecs29/wn.png
  51. BIN
      img/diag_echecs29/wp.gif
  52. BIN
      img/diag_echecs29/wp.png
  53. BIN
      img/diag_echecs29/wq.gif
  54. BIN
      img/diag_echecs29/wq.png
  55. BIN
      img/diag_echecs29/wr.gif
  56. BIN
      img/diag_echecs29/wr.png
  57. BIN
      img/diag_echecs35/bb.gif
  58. BIN
      img/diag_echecs35/bb.png
  59. BIN
      img/diag_echecs35/bk.gif
  60. BIN
      img/diag_echecs35/bk.png
  61. BIN
      img/diag_echecs35/bn.gif
  62. BIN
      img/diag_echecs35/bn.png
  63. BIN
      img/diag_echecs35/bp.gif
  64. BIN
      img/diag_echecs35/bp.png
  65. BIN
      img/diag_echecs35/bq.gif
  66. BIN
      img/diag_echecs35/bq.png
  67. BIN
      img/diag_echecs35/br.gif
  68. BIN
      img/diag_echecs35/br.png
  69. BIN
      img/diag_echecs35/wb.gif
  70. BIN
      img/diag_echecs35/wb.png
  71. BIN
      img/diag_echecs35/wk.gif
  72. BIN
      img/diag_echecs35/wk.png
  73. BIN
      img/diag_echecs35/wn.gif
  74. BIN
      img/diag_echecs35/wn.png
  75. BIN
      img/diag_echecs35/wp.gif
  76. BIN
      img/diag_echecs35/wp.png
  77. BIN
      img/diag_echecs35/wq.gif
  78. BIN
      img/diag_echecs35/wq.png
  79. BIN
      img/diag_echecs35/wr.gif
  80. BIN
      img/diag_echecs35/wr.png
  81. BIN
      img/diag_echecs35A/bb.png
  82. BIN
      img/diag_echecs35A/bk.png
  83. BIN
      img/diag_echecs35A/bn.png
  84. BIN
      img/diag_echecs35A/bp.png
  85. BIN
      img/diag_echecs35A/bq.png
  86. BIN
      img/diag_echecs35A/br.png
  87. BIN
      img/diag_echecs35A/wb.png
  88. BIN
      img/diag_echecs35A/wk.png
  89. BIN
      img/diag_echecs35A/wn.png
  90. BIN
      img/diag_echecs35A/wp.png
  91. BIN
      img/diag_echecs35A/wq.png
  92. BIN
      img/diag_echecs35A/wr.png
  93. BIN
      img/diag_echecs35L/bb.png
  94. BIN
      img/diag_echecs35L/bk.png
  95. BIN
      img/diag_echecs35L/bn.png
  96. BIN
      img/diag_echecs35L/bp.png
  97. BIN
      img/diag_echecs35L/bq.png
  98. BIN
      img/diag_echecs35L/br.png
  99. BIN
      img/diag_echecs35L/wb.png
  100. BIN
      img/diag_echecs35L/wk.png
  101. Some files were not shown because too many files have changed in this diff Show More

262
.gitattributes vendored

@ -0,0 +1,262 @@
* text=auto !eol
/_REGLES_DE_COMMIT.txt -text
base/jeux_ajouter_resultat.php -text
base/jeux_compacter.php -text
base/jeux_modifier_statut.php -text
base/jeux_supprimer.php -text
base/jeux_tables.php -text
base/jeux_upgrade.php -text
exec/inc_boites_infos.php -text
exec/jeux_edit.php -text
exec/jeux_gerer_resultats.php -text
exec/jeux_resultats_auteur.php -text
exec/jeux_resultats_jeu.php -text
exec/jeux_tous.php -text
exec/jeux_voir.php -text
fonds/auteur_details.html -text
fonds/bouton_corriger.html -text
fonds/bouton_recommencer.html -text
fonds/bouton_reinitialiser.html -text
fonds/bouton_rejouer.html -text
fonds/cfg_jeux.html -text
fonds/jeu_details.html -text
fonds/jeu_score.html -text
fonds/jeux_boites_infos.html -text
fonds/jeux_compacter.html -text
fonds/jeux_edit.html -text
fonds/jeux_tous.html -text
fonds/jeux_voir.html -text
fonds/resultats.html -text
fonds/resultats_auteur_lien.html -text
/gpl_fr.txt -text
icones_barre/jeu-16.png -text
img/diag_echecs29/bb.gif -text
img/diag_echecs29/bb.png -text
img/diag_echecs29/bk.gif -text
img/diag_echecs29/bk.png -text
img/diag_echecs29/bn.gif -text
img/diag_echecs29/bn.png -text
img/diag_echecs29/bp.gif -text
img/diag_echecs29/bp.png -text
img/diag_echecs29/bq.gif -text
img/diag_echecs29/bq.png -text
img/diag_echecs29/br.gif -text
img/diag_echecs29/br.png -text
img/diag_echecs29/wb.gif -text
img/diag_echecs29/wb.png -text
img/diag_echecs29/wk.gif -text
img/diag_echecs29/wk.png -text
img/diag_echecs29/wn.gif -text
img/diag_echecs29/wn.png -text
img/diag_echecs29/wp.gif -text
img/diag_echecs29/wp.png -text
img/diag_echecs29/wq.gif -text
img/diag_echecs29/wq.png -text
img/diag_echecs29/wr.gif -text
img/diag_echecs29/wr.png -text
img/diag_echecs35/bb.gif -text
img/diag_echecs35/bb.png -text
img/diag_echecs35/bk.gif -text
img/diag_echecs35/bk.png -text
img/diag_echecs35/bn.gif -text
img/diag_echecs35/bn.png -text
img/diag_echecs35/bp.gif -text
img/diag_echecs35/bp.png -text
img/diag_echecs35/bq.gif -text
img/diag_echecs35/bq.png -text
img/diag_echecs35/br.gif -text
img/diag_echecs35/br.png -text
img/diag_echecs35/wb.gif -text
img/diag_echecs35/wb.png -text
img/diag_echecs35/wk.gif -text
img/diag_echecs35/wk.png -text
img/diag_echecs35/wn.gif -text
img/diag_echecs35/wn.png -text
img/diag_echecs35/wp.gif -text
img/diag_echecs35/wp.png -text
img/diag_echecs35/wq.gif -text
img/diag_echecs35/wq.png -text
img/diag_echecs35/wr.gif -text
img/diag_echecs35/wr.png -text
img/diag_echecs35A/bb.png -text
img/diag_echecs35A/bk.png -text
img/diag_echecs35A/bn.png -text
img/diag_echecs35A/bp.png -text
img/diag_echecs35A/bq.png -text
img/diag_echecs35A/br.png -text
img/diag_echecs35A/wb.png -text
img/diag_echecs35A/wk.png -text
img/diag_echecs35A/wn.png -text
img/diag_echecs35A/wp.png -text
img/diag_echecs35A/wq.png -text
img/diag_echecs35A/wr.png -text
img/diag_echecs35L/bb.png -text
img/diag_echecs35L/bk.png -text
img/diag_echecs35L/bn.png -text
img/diag_echecs35L/bp.png -text
img/diag_echecs35L/bq.png -text
img/diag_echecs35L/br.png -text
img/diag_echecs35L/wb.png -text
img/diag_echecs35L/wk.png -text
img/diag_echecs35L/wn.png -text
img/diag_echecs35L/wp.png -text
img/diag_echecs35L/wq.png -text
img/diag_echecs35L/wr.png -text
img/diag_echecs35M/bb.png -text
img/diag_echecs35M/bk.png -text
img/diag_echecs35M/bn.png -text
img/diag_echecs35M/bp.png -text
img/diag_echecs35M/bq.png -text
img/diag_echecs35M/br.png -text
img/diag_echecs35M/wb.png -text
img/diag_echecs35M/wk.png -text
img/diag_echecs35M/wn.png -text
img/diag_echecs35M/wp.png -text
img/diag_echecs35M/wq.png -text
img/diag_echecs35M/wr.png -text
img/diag_echecs55A/bb.png -text
img/diag_echecs55A/bk.png -text
img/diag_echecs55A/bn.png -text
img/diag_echecs55A/bp.png -text
img/diag_echecs55A/bq.png -text
img/diag_echecs55A/br.png -text
img/diag_echecs55A/wb.png -text
img/diag_echecs55A/wk.png -text
img/diag_echecs55A/wn.png -text
img/diag_echecs55A/wp.png -text
img/diag_echecs55A/wq.png -text
img/diag_echecs55A/wr.png -text
img/diag_echecs55L/bb.png -text
img/diag_echecs55L/bk.png -text
img/diag_echecs55L/bn.png -text
img/diag_echecs55L/bp.png -text
img/diag_echecs55L/bq.png -text
img/diag_echecs55L/br.png -text
img/diag_echecs55L/wb.png -text
img/diag_echecs55L/wk.png -text
img/diag_echecs55L/wn.png -text
img/diag_echecs55L/wp.png -text
img/diag_echecs55L/wq.png -text
img/diag_echecs55L/wr.png -text
img/diag_echecs55M/bb.png -text
img/diag_echecs55M/bk.png -text
img/diag_echecs55M/bn.png -text
img/diag_echecs55M/bp.png -text
img/diag_echecs55M/bq.png -text
img/diag_echecs55M/br.png -text
img/diag_echecs55M/wb.png -text
img/diag_echecs55M/wk.png -text
img/diag_echecs55M/wn.png -text
img/diag_echecs55M/wp.png -text
img/diag_echecs55M/wq.png -text
img/diag_echecs55M/wr.png -text
img/echiquiers/wood35.png -text
img/echiquiers/wood55.png -text
img/jeu-16.png -text
img/jeu-24.png -text
img/jeu-cfg.png -text
img/jeu-crayon.png -text
img/jeu-laurier.png -text
img/jeu-loupe.png -text
img/jeu-nouveau.png -text
img/jeu-voir.png -text
img/jeux-48.png -text
img/jeux-tous.png -text
img/pendu1/config.ini -text
img/pendu1/pendu0.gif -text
img/pendu1/pendu1.gif -text
img/pendu1/pendu2.gif -text
img/pendu1/pendu3.gif -text
img/pendu1/pendu4.gif -text
img/pendu1/pendu5.gif -text
img/pendu1/pendu6.gif -text
img/pendu2/config.ini -text
img/pendu2/pendu0.gif -text
img/pendu2/pendu1.gif -text
img/pendu2/pendu10.gif -text
img/pendu2/pendu2.gif -text
img/pendu2/pendu3.gif -text
img/pendu2/pendu4.gif -text
img/pendu2/pendu5.gif -text
img/pendu2/pendu6.gif -text
img/pendu2/pendu7.gif -text
img/pendu2/pendu8.gif -text
img/pendu2/pendu9.gif -text
img/pendu3/A1.gif -text
img/pendu3/A2.gif -text
img/pendu3/A3.gif -text
img/pendu3/A4.gif -text
img/pendu3/B1.gif -text
img/pendu3/B2.gif -text
img/pendu3/B3.gif -text
img/pendu3/B4.gif -text
img/pendu3/C1.gif -text
img/pendu3/C2.gif -text
img/pendu3/C3.gif -text
img/pendu3/C4.gif -text
img/pendu3/config.ini -text
inc/jeux_autoriser.php -text
javascript/jeux.js -text
javascript/mots_croises.js -text
javascript/pendu.js -text
javascript/qcm.js -text
javascript/sudoku.js -text
/jeu.html -text
/jeux.css.html -text
jeux/chesstuff.php -text
jeux/demineur.todo -text
jeux/devinettes.php -text
jeux/diag_echecs.php -text
jeux/diag_echecs_inc.php -text
jeux/diag_echecs_init.php -text
jeux/escalettre.todo -text
jeux/kakuro.todo -text
jeux/mots_croises.php -text
jeux/multi_jeux.php -text
jeux/pendu.php -text
jeux/qcm.php -text
jeux/rebus.todo -text
jeux/shanghai.todo -text
jeux/sudoku.php -text
jeux/textes.php -text
jeux/trous.html -text
jeux/trous.php -text
/jeux_boutons.php -text
/jeux_config.php -text
/jeux_fonctions.php -text
/jeux_options.php -text
/jeux_pipelines.php -text
/jeux_resultats_tableau.html -text
/jeux_utils.php -text
lang/jeux_de.php -text
lang/jeux_en.php -text
lang/jeux_fr.php -text
lang/jeux_it.php -text
lang/motscroises_en.php -text
lang/motscroises_fr.php -text
lang/motscroises_it.php -text
lang/paquet-jeux_fr.php -text
lang/pendu_fr.php -text
lang/pendu_it.php -text
lang/qcm_en.php -text
lang/qcm_fr.php -text
lang/qcm_it.php -text
lang/sudoku_en.php -text
lang/sudoku_fr.php -text
lang/sudoku_it.php -text
modeles/auteur_resultats.html -text
modeles/chesstuff.html -text
modeles/jeu.html -text
modeles/jeu_resultats.html -text
modeles/resultats_tableau.html -text
modeles/resultats_tableau_totaux.html -text
/paquet.xml -text
/plugin.xml -text
prive/listes/corbeille_jeux.html -text
styles/mots_croises.css -text
styles/pendu.css -text
styles/qcm.css -text
styles/sudoku.css -text
styles/trous.css -text
tests/types_tables_id_jeux.php -text
vues/jeux_contenu.html -text

67
_REGLES_DE_COMMIT.txt

@ -0,0 +1,67 @@
Projet : Plugin insérant des jeux divers et variés dans les articles
Licence : GPL
Auteurs : Patrice Vanneufville
patrice¡.!vanneufville¡@!laposte¡.!net
Voici les règles à suivre avant de commiter des modifications sur
cette branche.
A. Observer le planning de travail. Pour le modifier, proposez-nous vos idées !
Planning de modification, sans ordre :
1. Prévoir Plusieurs jeux dans une page (en cours...)
2. Meilleures CSS
3. AJAX/jQuery
4. Traductions et ajouts de langues
5. Statistiques des performances et des timings
6. Sauvegarde des jeux en cours (utilisateurs identifiés)
7. Notification par mail
8. Intégrer Hot Potatoes ?
9.
10. D'autres jeux, encore et encore !
B. Obligation de commenter les commits
Si vous envoyez des modifications, il faut toujours les commenter
de façon "descriptive" et "complète" avec l'option -m ou -F du
commit SVN.
C. Modification du code
Cette version peut évoluer. Si vous avez envie de vous
retrousser les manches, n'hésitez pas.
Chaque jeu doit être codé dans un fichier séparé du genre inc/monjeu.php
et une signature doit permettre de le retrouver.
Voir la fonction jeux($chaine) dans jeux_pipelines.php.
La syntaxe entre les balises <jeux> et </jeux> doit rester unifiée et
respecter une certaine cohérence.
Tout le monde à le droit de faire des modifications.
Toutefois, dans un premier temps, il est souhaitable d'avertir
les auteurs principaux du projet. Il faut alors, dans le mail,
envoyer un patch au format "diff -pu", donner une description
défendable du bug corrigé et la manière choisie pour le corriger.
En particulier, il faut bien penser à:
- décrire le bug que l'on corrige,
comment on a choisi de le corriger,
- décrire la modification que l'on a faite et pourquoi le
nouveau code est meilleur que l'ancien (qui n'est certainement
pas un code parfait de toute façon)
- décrire la nouvelle fonction, ce quelle apporte à
l'utilisateur, les dépendances qu'elle apporte.
D. Clarté du code.
Il n'y a actuellement pas de règles précises d'écriture correcte du
code. Il faut juste garder du code indenté (i.e. indenter chaque
fermeture sur une nouvelle ligne pour les gros blocs), en général,
suivre la façon dont c'est fait dans les fichiers de base.
Il faut toujours mettre une chaîne de documentation quand c'est
possible et quand on le peut documenter le processus/l'algorithme que
l'on implémente.

63
base/jeux_ajouter_resultat.php

@ -0,0 +1,63 @@
<?php
function jeux_ajouter_resultat($id_jeu, $resultat, $total, $resultat_long=''){
$id_auteur = $GLOBALS["auteur_session"]['id_auteur'];
if (!$id_auteur) return;
$requete = sql_fetsel('type_resultat', 'spip_jeux', "id_jeu=$id_jeu");
$type_resultat = $requete['type_resultat'];
// valeurs possibles : 'defaut', 'aucun', 'premier', 'dernier', 'meilleur', 'meilleurs', 'tous'
if($type_resultat=='defaut')
$type_resultat = function_exists('lire_config')?lire_config('jeux/type_resultat'):'dernier';
// valeurs possibles : 'aucun', 'premier', 'dernier', 'meilleur', 'meilleurs', 'tous'
if($type_resultat=='aucun') return;
$resultat = intval($resultat);
$total = intval($total);
// un $id_resultat nul entraine une insertion
// un $id_resultat non nul entraine un remplacement
$id_resultat = 0;
// on insere ou on remplace ?
// si on remplace, verifier quel type de resultat : le meilleur, le premier ou le dernier
$requete = sql_fetsel('resultat_court,total,id_resultat', 'spip_jeux_resultats', "id_jeu=$id_jeu AND id_auteur=$id_auteur");
if (($type_resultat!='tous') && $requete) {
// ici on va probablement remplacer le score en base...
// valeurs possibles : 'premier', 'dernier', 'meilleur', 'meilleurs'
$id_resultat = $requete['id_resultat'];
switch($type_resultat) {
case 'premier':
// score present, donc on part
return;
case 'dernier':
// remplacement systematique ici
break;
case 'meilleurs':
// on poursuit avec 'meilleur' et on insere si ok,
$id_resultat = 0;
case 'meilleur':
$resultat_en_base = intval($requete['resultat_court']);
$total_en_base = intval($requete['total']);
$score_en_base = !$total_en_base?$resultat_en_base:$resultat_en_base/$total_en_base;
$score = !$total?$resultat:$resultat/$total;
// si pas mieux, on part
if($score_en_base >= $score) return;
break;
}
}
// ca y est, on peut enregistrer le resultat
jeux_ajouter_resultat_base($id_resultat, $id_jeu, $id_auteur, $resultat, $resultat_long, $total, $type_resultat);
}
function jeux_ajouter_resultat_base($id_resultat, $id_jeu, $id_auteur, $resultat, $resultat_long, $total, $type_resultat) {
if($id_resultat) {
sql_updateq('spip_jeux_resultats', array('resultat_court'=>$resultat, 'resultat_long'=>$resultat_long, 'total'=>$total), "id_resultat=$id_resultat");
spip_log("Le resultat #$id_resultat de l'auteur #$id_auteur au jeu #$id_jeu a ete modifie (type '$type_resultat')",'jeux');
} else {
sql_insertq('spip_jeux_resultats', array('id_jeu'=>$id_jeu, 'id_auteur'=>$id_auteur, 'resultat_court'=>$resultat, 'resultat_long'=>$resultat_long, 'total'=>$total));
spip_log("Le resultat de l'auteur #$id_auteur au jeu #$id_jeu a ete enregistre (type '$type_resultat')",'jeux');
}
}
?>

22
base/jeux_compacter.php

@ -0,0 +1,22 @@
<?php
function jeux_compacter_tout_jeu($id_jeu){
include_spip('public/assembler');
$liste = recuperer_fond('fonds/jeux_compacter', array('id_jeu'=>$id_jeu));
sql_delete('spip_jeux_resultats', "id_jeu=$id_jeu AND ".sql_in('id_resultat', $liste, 'NOT'));
}
function jeux_compacter_tout_auteur($id_auteur){
include_spip('public/assembler');
$liste = recuperer_fond('fonds/jeux_compacter', array('id_auteur'=>$id_auteur));
sql_delete('spip_jeux_resultats', "id_auteur=$id_auteur AND ".sql_in('id_resultat', $liste, 'NOT'));
}
function jeux_compacter_tout_tout(){
include_spip('public/assembler');
$liste = recuperer_fond('fonds/jeux_compacter');
sql_delete('spip_jeux_resultats', sql_in('id_resultat', $liste, 'NOT'));
}
?>

7
base/jeux_modifier_statut.php

@ -0,0 +1,7 @@
<?php
include_spip('inc/utils');
function jeu_modifier_statut($id,$statut){
sql_updateq("spip_jeux", array('statut'=>$statut), "id_jeu=$id");
spip_log("modifier statut jeu$id, $statut",'jeux');
}
?>

14
base/jeux_supprimer.php

@ -0,0 +1,14 @@
<?php
function jeux_supprimer_tout_jeu($id_jeu){
sql_delete('spip_jeux_resultats', "id_jeu=$id_jeu");
}
function jeux_supprimer_tout_auteur($id_auteur){
sql_delete('spip_jeux_resultats', "id_auteur=$id_auteur");
}
function jeux_supprimer_tout_tout(){
sql_delete('spip_jeux_resultats');
}
?>

60
base/jeux_tables.php

@ -0,0 +1,60 @@
<?php
// declaration des tables du plugin jeux //
global $table_des_tables;
global $tables_principales;
include_spip('base/serial'); // pour eviter une reinit posterieure des tables modifiees
global $tables_jointures;
$table_des_tables['jeux'] = 'jeux';
$table_des_tables['jeux_resultats'] = 'jeux_resultats';
$jeux = array(
'id_jeu' => 'bigint(21) NOT NULL',
'date' => 'timestamp');
if (isset($GLOBALS['meta']['jeux_base_version'])) {
$jeux = array_merge($jeux, array(
'type_jeu' => 'text NOT NULL',
'titre_prive' => 'text NOT NULL',
));
}
$jeux = array_merge($jeux, array(
'contenu' => 'text NOT NULL',
'statut' => "varchar(10) DEFAULT '0' NOT NULL",
'type_resultat'=>"varchar(10) DEFAULT '0' NOT NULL"
)
);
$jeux_key = array(
'PRIMARY KEY' =>'id_jeu');
$jeux_resultats = array(
'id_resultat' => 'bigint(21) NOT NULL',
'id_jeu' => 'bigint(21) NOT NULL',
'id_auteur' => 'bigint(21) NOT NULL',
'date' => 'timestamp',
'resultat_court' => 'int(12)',
'resultat_long' => 'text NOT NULL',
'total' => 'int(12) NOT NULL'
);
$jeux_resultats_key=array('PRIMARY KEY' =>'id_resultat',
'KEY id_jeu' =>'id_jeu',
'KEY id_auteur' =>'id_auteur'
);
$tables_principales['spip_jeux'] =
array('field' => &$jeux, 'key' => &$jeux_key);
$tables_principales['spip_jeux_resultats'] =
array('field' => &$jeux_resultats, 'key' => &$jeux_resultats_key);
global $table_des_traitements;
$table_des_traitements['CONTENU'][]= 'propre(%s)';
// Declarations pour la corbeille (plugin Corbeille, ou Couteau Suisse)
global $corbeille_params;
$corbeille_params['jeux'] = array (
"statut" => 'poubelle',
"tableliee"=> array('spip_jeux_resultats'),
"libelle" => 'jeux:jeux',
);
?>

129
base/jeux_upgrade.php

@ -0,0 +1,129 @@
<?php
$GLOBALS['jeux_base_version'] = 0.17;
function jeux_install($install){
switch($install) {
case 'test':
return isset($GLOBALS['meta']['jeux_base_version'])
AND ($GLOBALS['meta']['jeux_base_version']>=$GLOBALS['jeux_base_version']);
case 'install':
jeux_verifier_base();
break;
case 'uninstall':
jeux_vider_tables();
break;
}
}
function jeux_vider_tables() {
include_spip('base/abstract_sql');
sql_drop_table('spip_jeux');
sql_drop_table("spip_jeux_resultats");
effacer_meta('jeux_base_version');
}
function jeux_maj_version(&$v1, $v2) {
echo "MAJ Jeux : $v1 =&gt; $v2<br />";
ecrire_meta('jeux_base_version', $v1=$v2, 'non');
}
function jeux_verifier_base(){
// version de la base de donnee
$version_base = $GLOBALS['jeux_base_version'];
$current_version = isset($GLOBALS['meta']['jeux_base_version'])
?$GLOBALS['meta']['jeux_base_version']
:0.0;
if ($current_version != $version_base){
include_spip('base/create');
include_spip('base/abstract_sql');
include_spip('base/jeux_tables');
if ($current_version==0.0){
creer_base();
jeux_maj_version($current_version, 0.10);
}
if ($current_version<($test_version=0.11)){
// ajout du champ 'nom' a la table spip_jeux, si pas deja existant
$desc = sql_showtable('spip_jeux', true);
if (!isset($desc['field']['nom'])){
sql_alter("TABLE spip_jeux ADD `nom` text DEFAULT '' NOT NULL AFTER `date`");
// ajout d'un nom par defaut aux jeux existants
$res = sql_select(array('id_jeu'),array('spip_jeux'));
$sans = _T('jeux:sans_type');
while ($row = sql_fetch($res))
sql_updateq('spip_jeux', array('nom'=>'$sans'), "id_jeu=".$row['id_jeu']);
}
// ajout du champ 'titre' a la table spip_jeux, si pas deja existant
if (!isset($desc['field']['titre'])){
sql_alter("TABLE spip_jeux ADD `titre` text DEFAULT '' NOT NULL AFTER `nom`");
// ajout d'un titre par defaut aux jeux existants
$res = sql_select(array('id_jeu'), 'spip_jeux');
$sans = _T('jeux:sans_titre_prive');
while ($row = sql_fetch($res))
sql_update('spip_jeux', array('titre'=>$sans), "id_jeu=".$row['id_jeu']);
}
jeux_maj_version($current_version, $test_version);
}
if ($current_version<($test_version=0.12)){
// changement de noms 'titre' => 'titre_prive' et 'nom' => 'type_jeu'
$desc = sql_showtable('spip_jeux', true);
if (isset($desc['field']['titre']))
sql_alter('TABLE spip_jeux CHANGE `titre` `titre_prive` TEXT');
if (isset($desc['field']['nom']))
sql_alter('TABLE spip_jeux CHANGE `nom` `type_jeu` TEXT');
jeux_maj_version($current_version, $test_version);
}
if ($current_version<($test_version=0.13)){
// suppression de 'titre' et 'nom'
$desc = sql_showtable('spip_jeux', true);
if (isset($desc['field']['titre']))
sql_alter('TABLE spip_jeux DROP `titre`');
if (isset($desc['field']['nom']))
sql_alter('TABLE spip_jeux DROP `nom`');
jeux_maj_version($current_version, $test_version);
}
if ($current_version<($test_version=0.14)){
// ajout de 'total'
$desc = sql_showtable("spip_jeux_resultats", true);
if (!isset($desc['field']['total']))
sql_alter('TABLE spip_jeux_resultats ADD `total` int(12) NOT NULL DEFAULT 0 AFTER `resultat_long`');
jeux_maj_version($current_version, $test_version);
}
if ($current_version<($test_version=0.15)){
// ajout de 'resultat_unique'
$desc = sql_showtable('spip_jeux', true);
if (!isset($desc['field']['resultat_unique']))
sql_alter("TABLE spip_jeux ADD `resultat_unique` NOT NULL DEFAULT 'non'");
jeux_maj_version($current_version, $test_version);
}
if ($current_version<($test_version=0.16)){
// fusion de 'resultat_unique' et 'enregistrer_resultat' vers 'type_resultat'
// types d'enregistrement disponibles : 'defaut', 'aucun', 'premier', 'dernier', 'meilleur', 'tous'
sql_alter('TABLE spip_jeux CHANGE `resultat_unique` `type_resultat` VARCHAR(10)');
sql_updateq('spip_jeux',array('type_resultat'=>'premier'), "`type_resultat`='oui'");
sql_updateq('spip_jeux',array('type_resultat'=>'dernier'), "`type_resultat`='non'");
sql_updateq('spip_jeux',array('type_resultat'=>'aucun'), "`enregistrer_resultat`='non'");
sql_alter('TABLE spip_jeux DROP `enregistrer_resultat`');
jeux_maj_version($current_version, $test_version);
}
if ($current_version<($test_version=0.17)){
// tenir compte du bug sur les prefixes
$desc = sql_showtable('spip_jeux', true);
if (isset($desc['field']['titre']))
sql_alter('TABLE spip_jeux CHANGE `titre` `titre_prive` TEXT');
if (isset($desc['field']['nom']))
sql_alter('TABLE spip_jeux CHANGE `nom` `type_jeu` TEXT');
if (!isset($desc['field']['resultat_unique']))
sql_alter("TABLE spip_jeux ADD `resultat_unique` VARCHAR(10) NOT NULL DEFAULT 'non'");
jeux_maj_version($current_version, $test_version);
}
}
}
?>

74
exec/inc_boites_infos.php

@ -0,0 +1,74 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
// pour tous les recuperer_fond()
include_spip('public/assembler');
// Pagination sur les jeux disponibles
function jeux_navigation_pagination() {
$texte = ''; $href = 'jeux_voir'; $nb_aff = 1; $deb_aff = 1;
$self = self();
$id_jeu = intval(_request('id_jeu'));
// liste des jeux disponibles
$fetch = 'sql_fetch';
$q = sql_select('id_jeu', 'spip_jeux');
$ids = array(); $i = 0;
while($r = $fetch($q)) {
$ids[$i++] = $r['id_jeu'];
if ($id_jeu==$r['id_jeu']) $deb_aff = $i;
}
$num_rows = count($ids);
if($num_rows<2) return '';
for ($i = 0; $i < $num_rows; $i += $nb_aff){
$deb = $i + 1;
// Pagination : si on est trop loin, on met des '...'
if (abs($deb-$deb_aff)>10) {
if ($deb<$deb_aff) {
if (!isset($premiere)) { $premiere = '1 ... '; $texte .= $premiere; }
} else {
$derniere = ' | ... '.$num_rows; $texte .= $derniere; break;
}
} else {
$fin = $i + $nb_aff;
if ($fin > $num_rows) $fin = $num_rows;
if ($deb > 1) $texte .= " |\n";
if ($deb_aff >= $deb AND $deb_aff <= $fin) $texte .= "<strong>$deb</strong>";
else {
$script = parametre_url($self, 'id_jeu', $ids[$i]);
$texte .= "<a href=\"$script\">$deb</a>";
}
}
}
return "<div class='verdana3' style='text-align: center;'>$texte</div>";
}
function boite_infos_auteur($id_auteur) {
return recuperer_fond('fonds/jeux_boites_infos',array('id_auteur'=>$id_auteur, 'exec'=>_request('exec')));
}
function boite_infos_jeu($id_jeu) {
return recuperer_fond('fonds/jeux_boites_infos',array('id_jeu'=>$id_jeu, 'exec'=>_request('exec')));
}
function boite_infos_accueil($id_foo=0) {
return recuperer_fond('fonds/jeux_boites_infos',
array('boite'=>'accueil', 'exec'=>_request('exec'), 'id_foo'=>$id_foo, 'config'=>function_exists('lire_config')?'oui':'non'));
}
// boite pour le pipeline affiche_droite
function boite_info_jeux_edit(){
return debut_cadre_relief(find_in_path('img/jeu-voir.png'),true,'',_T('jeux:inserer_jeu'))
. "<div>"._T('jeux:inserer_jeu_explication')."</div>"
. jeux_icone_horizontale(_T('jeux:liste_jeux'),generer_url_ecrire('jeux_tous'),find_in_path('img/jeux-tous.png'))
. jeux_icone_horizontale(_T('jeux:nouveau_jeu'),generer_url_ecrire('jeux_edit','nouveau=oui'),find_in_path('img/jeu-nouveau.png'))
. fin_cadre_relief(true);
}
// boite pour le pipeline affiche_droite
function boite_infos_spip_auteur($id_auteur) {
return recuperer_fond('fonds/resultats_auteur_lien', array('id_auteur' => $id_auteur));
}
?>

61
exec/jeux_edit.php

@ -0,0 +1,61 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
include_spip('exec/inc_boites_infos');
include_spip('jeux_utils');
function exec_jeux_edit(){
include_spip('inc/utils');
$id_jeu = intval(_request('id_jeu'));
if (_request('valider')) {
$id_jeu = jeux_ajouter_jeu($id_jeu, _request('contenu'), _request('titre_prive'), _request('type_resultat'));
include_spip('inc/headers');
redirige_par_entete(generer_url_ecrire('jeux_voir', 'id_jeu=' . $id_jeu, true));
}
$gros_titre = _request('nouveau')?_T('jeux:nouveau_jeu'):_T('jeux:modifier_jeu', array('id'=>$id_jeu));
$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page($gros_titre);
echo debut_gauche('', true);
echo boite_infos_jeu($id_jeu);
echo debut_cadre_relief();
echo _T('jeux:explication_jeu');
echo fin_cadre_relief();
echo creer_colonne_droite('',true);
echo debut_droite('',true);
echo gros_titre($gros_titre, '', false);
echo jeux_debut_cadre_formulaire();
echo "<form method='post' name='jeux_edit'>\n";
include_spip('public/assembler');
echo recuperer_fond('fonds/jeux_edit', array('id_jeu'=>$id_jeu));
echo "<p align='right'><input type='submit' name='valider' value='"._T('bouton_valider')."' class='fondo' /></p>";
echo '</form>';
echo jeux_fin_cadre_formulaire();
echo fin_gauche(), fin_page();
}
function jeux_ajouter_jeu($id_jeu=0, $contenu='', $titre_prive='', $type_resultat='defaut'){
include_spip('jeux_utils');
$type_jeu = jeux_trouver_nom($contenu);
$type_jeu = strlen($type_jeu)?$type_jeu:_T('jeux:jeu_vide');
$titre_prive = strlen($titre_prive)?$titre_prive:_T('jeux:sans_titre_prive');
$contenu = _JEUX_DEBUT.jeux_sans_balise($contenu)._JEUX_FIN;
if (!$id_jeu) {
$id_jeu = sql_insertq('spip_jeux', array('date' => 'NOW()', 'statut'=>'publie', 'type_jeu'=>$type_jeu, 'titre_prive'=>$titre_prive, 'contenu'=>$contenu, 'type_resultat'=>$type_resultat));
spip_log($id_jeu
?"Le jeu #$id_jeu a ete cree par l'auteur #".$GLOBALS["auteur_session"]['id_auteur']
:'ERREUR : la creation d\'un jeu en base a echoue. Verifier la structure de la table et les permissions SQL.','jeux');
} else {
sql_updateq('spip_jeux', array('date' => 'NOW()', 'type_jeu'=>$type_jeu, 'titre_prive'=>$titre_prive, 'contenu'=>$contenu, 'type_resultat'=>$type_resultat), "id_jeu=$id_jeu");
spip_log("Le jeu #$id_jeu a ete modifie par l'auteur #".$GLOBALS["auteur_session"]['id_auteur'],'jeux');
}
return intval($id_jeu);
}
?>

222
exec/jeux_gerer_resultats.php

@ -0,0 +1,222 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
include_spip('exec/inc_boites_infos');
function exec_jeux_gerer_resultats(){
// les boutons ... le pire ennemi des ados parait-il
$supprimer_tout = _request('supprimer_tout');
$supprimer_confirmer = _request('supprimer_confirmer');
$compacter_tout = _request('compacter_tout');
$compacter_confirmer = _request('compacter_confirmer');
($supprimer_confirmer) ? $bouton = 'supprimer_confirmer' : $bouton = '';
($bouton == '' and $supprimer_tout) ? $bouton = 'supprimer_tout' : $bouton = $bouton;
($bouton == '' and $compacter_tout) ? $bouton = 'compacter_tout' : $bouton = $bouton;
($bouton == '' and $compacter_confirmer) ? $bouton = 'compacter_confirmer' : $bouton = $bouton;
$id_jeu = _request('id_jeu');
$id_auteur = _request('id_auteur');
if ($id_jeu and autoriser('gererresultats')) { gerer_resultat_jeux($id_jeu,$bouton); return; }
if ($id_auteur and autoriser('gererresultats','auteur',$id_auteur)) { gerer_resultats_auteur($id_auteur,$bouton); return; }
// ... et par defaut
if (autoriser('gererresultats')) {gerer_resultat_tous($bouton); return;}
interdit();
}
function gerer_resultat_tous($bouton){
// aie, aie, on efface tout !
if ($bouton == 'supprimer_confirmer'){
include_spip('base/jeux_supprimer');
jeux_supprimer_tout_tout();
include_spip('inc/headers');
redirige_par_entete(generer_url_ecrire('jeux_tous'));
}
if ($bouton == 'compacter_confirmer'){
include_spip('base/jeux_compacter');
jeux_compacter_tout_tout();
include_spip('inc/headers');
redirige_par_entete(generer_url_ecrire('jeux_tous'));
}
$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page(_T("jeux:gerer_resultats_tout"));
echo debut_gauche('',true);
echo boite_infos_accueil();
echo creer_colonne_droite('',true);
echo debut_droite('',true);
if ($bouton == 'supprimer_tout' or $bouton == 'compacter_tout')
echo gros_titre(_T("jeux:confirmation"), '', false);
debut_cadre_relief();
echo gros_titre(_T("jeux:gerer_resultats_tout"), '', false);
formulaire_suppression($bouton, 'tout');
fin_cadre_relief();
echo fin_gauche(), fin_page();
}
function gerer_resultats_auteur($id_auteur, $bouton){
$requete = sql_fetsel('id_auteur,nom', 'spip_auteurs', "id_auteur=$id_auteur", '');
$nom = $requete['nom'];
$id_auteur = $requete['id_auteur'];
$commencer_page = charger_fonction('commencer_page', 'inc');
if(!$id_auteur){
echo $commencer_page(_T("jeux:pas_d_auteur"));
echo gros_titre(_T("jeux:pas_d_auteur"), '', false), fin_page();
return;
}
// aïe, aïe, on efface tout pour $id_auteur
if ($bouton == 'supprimer_confirmer'){
include_spip('base/jeux_supprimer');
jeux_supprimer_tout_auteur($id_auteur);
include_spip('inc/headers');
redirige_par_entete(generer_url_ecrire('jeux_resultats_auteur', 'id_auteur='.$id_auteur, true));
}
if ($bouton == 'compacter_confirmer'){
include_spip('base/jeux_compacter');
jeux_compacter_tout_auteur($id_auteur);
include_spip('inc/headers');
redirige_par_entete(generer_url_ecrire('jeux_resultats_auteur', 'id_auteur='.$id_auteur, true));
}
echo $commencer_page(_T("jeux:gerer_resultats_auteur",array('nom'=>$nom)));
echo debut_gauche('',true);
echo boite_infos_auteur($id_auteur);
echo boite_infos_accueil($id_auteur);
echo creer_colonne_droite('',true);
echo debut_droite('',true);
if ($bouton == 'supprimer_tout' or $bouton == 'compacter_tout')
echo gros_titre(_T("jeux:confirmation"), '', false);
debut_cadre_relief();
echo gros_titre(_T("jeux:gerer_resultats_auteur", array('nom'=>$nom)), '', false);
formulaire_suppression($bouton, 'auteur');
fin_cadre_relief();
echo fin_gauche(), fin_page();
}
function gerer_resultat_jeux($id_jeu, $bouton){
$requete = sql_fetsel('id_jeu,type_jeu', 'spip_jeux', "id_jeu=$id_jeu");
$id_jeu = $requete['id_jeu'];
$type_jeu = $requete['type_jeu'];
$commencer_page = charger_fonction('commencer_page', 'inc');
if(!$id_jeu){
echo $commencer_page(_T("jeux:pas_de_jeu"));
echo gros_titre(_T("jeux:pas_de_jeu"), '', false), fin_page();
return;
}
// aïe, aïe, on efface tout pour $id_jeu
if ($bouton == 'supprimer_confirmer'){
include_spip('base/jeux_supprimer');
jeux_supprimer_tout_jeu($id_jeu);
include_spip('inc/headers');
redirige_par_entete(generer_url_ecrire('jeux_resultats_jeu', 'id_jeu='.$id_jeu, true));
}
if ($bouton == 'compacter_confirmer'){
include_spip('base/jeux_compacter');
jeux_compacter_tout_jeu($id_jeu);
include_spip('inc/headers');
redirige_par_entete(generer_url_ecrire('jeux_resultats_jeu', 'id_jeu='.$id_jeu, true));
}
echo $commencer_page(_T("jeux:gerer_resultats_jeu",array('id'=>$id_jeu,'nom'=>$type_jeu)));
echo debut_gauche('',true);
echo boite_infos_jeu($id_jeu);
echo boite_infos_accueil($id_jeu);
echo creer_colonne_droite('',true);
echo debut_droite('',true);
if ($bouton == 'supprimer_tout' or $bouton == 'compacter_tout')
echo gros_titre(_T("jeux:confirmation"), '', false);
debut_cadre_relief();
echo gros_titre(_T("jeux:gerer_resultats_jeu", array('id'=>$id_jeu,'nom'=>$type_jeu)), '', false);
formulaire_suppression($bouton, 'jeu');
fin_cadre_relief();
echo fin_gauche(), fin_page();
}
function formulaire_suppression($bouton, $type){
$commencer_page = charger_fonction('commencer_page', 'inc');
echo jeux_jeux_debut_cadre_formulaire();
echo "<form method='post' name='supprimer_resultat'>";
debut_cadre_relief();
if ($bouton == 'supprimer_tout'){
$res = "<br/><input type='submit' name='supprimer_confirmer' value='"._T('jeux:supprimer_confirmer')."' class='fondo' />";
echo
_T('jeux:confirmation_supprimer_'.$type),
"\n<div style='text-align: center'>",
debut_boite_alerte(),
"\n<div class='serif'>",
"\n<b>"._T('avis_suppression_base')."&nbsp;!</b>",
"\n</div>",
$res,
fin_boite_alerte(),
"</div>";
}
else if ($bouton == 'compacter_tout'){
$res = "<br/><input type='submit' name='compacter_confirmer' value='"._T('jeux:compacter_confirmer')."' class='fondo' />";
echo
_T('jeux:confirmation_compacter_'.$type),
"\n<div style='text-align: center'>",
debut_boite_alerte(),
"\n<div class='serif'>",
"\n<b>"._T('avis_suppression_base')."&nbsp;!</b>",
"\n</div>",
$res,
fin_boite_alerte(),
"</div>";
}
else {
$res = "<br/><input type='submit' name='supprimer_tout' value='"._T('jeux:supprimer_tout_'.$type)."' class='fondo' />";
echo
_T('jeux:explication_supprimer_'.$type),
"\n<div style='text-align: center'>",
debut_boite_alerte(),
"\n<div class='serif'>",
"\n<b>"._T('avis_suppression_base')."&nbsp;!</b>",
"\n</div>",
$res,
fin_boite_alerte(),
"</div>";
$res = "<br/><input type='submit' name='compacter_tout' value='"._T('jeux:compacter_tout_'.$type)."' class='fondo' />";
echo
_T('jeux:explication_compacter_'.$type),
"\n<div style='text-align: center'>",
debut_boite_alerte(),
"\n<div class='serif'>",
"\n<b>"._T('avis_suppression_base')."&nbsp;!</b>",
"\n</div>",
$res,
fin_boite_alerte(),
"</div>";
}
fin_cadre_relief();
echo "</form>";
echo jeux_fin_cadre_formulaire();
}
function interdit(){
$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page(_T('avis_non_acces_page'));
echo debut_gauche('',true);
echo debut_droite('',true);
echo _T('avis_non_acces_page');
echo fin_gauche(), fin_page();
}
?>

46
exec/jeux_resultats_auteur.php

@ -0,0 +1,46 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
include_spip('exec/inc_boites_infos');
function exec_jeux_resultats_auteur(){
$id_auteur = _request('id_auteur');
$par = _request('par');
$requete = sql_fetsel('id_auteur,nom', 'spip_auteurs', "id_auteur=$id_auteur");
$nom = $requete['nom'];
$id_auteur = $requete['id_auteur'];
$commencer_page = charger_fonction('commencer_page', 'inc');
if(!$id_auteur){
echo $commencer_page(_T("jeux:pas_d_auteur"));
echo gros_titre(_T("jeux:pas_d_auteur"), '', false), fin_page();
return;
}
echo $commencer_page(_T("jeux:resultats_auteur",array('nom'=>$nom)));
echo debut_gauche('',true);
echo boite_infos_auteur($id_auteur);
echo boite_infos_accueil($id_auteur);
echo creer_colonne_droite('',true);
echo debut_droite('',true);
debut_cadre_relief();
echo gros_titre(_T("jeux:resultats_auteur", array('nom'=>$nom)), '', false);
debut_cadre('liste');
include_spip('public/assembler');
echo recuperer_fond('fonds/resultats',array('id_auteur'=>$id_auteur,'par'=>$par));
fin_cadre('liste');
fin_cadre_relief();
echo fin_gauche(), fin_page();
}
?>

46
exec/jeux_resultats_jeu.php

@ -0,0 +1,46 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
include_spip('exec/inc_boites_infos');
function exec_jeux_resultats_jeu(){
$id_jeu = _request('id_jeu');
$par = _request('par');
$commencer_page = charger_fonction('commencer_page', 'inc');
$requete = sql_fetsel('id_jeu,type_jeu,titre_prive', 'spip_jeux', "id_jeu=$id_jeu");
$id_jeu = $requete['id_jeu'];
$type_jeu = $requete['type_jeu'];
$titre_prive = $requete['titre_prive'];
if(!$id_jeu){
echo $commencer_page(_T("jeux:pas_de_jeu"));
echo gros_titre(_T("jeux:pas_de_jeu"), '', false), fin_page();
return;
}
echo $commencer_page(_T("jeux:resultats_jeu",array('id'=>$id_jeu,'nom'=>$type_jeu)));
echo debut_gauche('',true);
echo boite_infos_jeu($id_jeu);
echo boite_infos_accueil($id_jeu);
echo creer_colonne_droite('',true);
echo debut_droite('',true);
debut_cadre_relief();
echo gros_titre(_T("jeux:resultats_jeu", array('id'=>$id_jeu,'nom'=>$type_jeu)), '', false);
$titre_prive = $titre_prive==''?_T('jeux:sans_titre_prive'):propre($titre_prive);
echo "<div style='font-weight:bold'>$titre_prive</div><br />";
echo "<div class='nettoyeur'></div>";
debut_cadre('liste');
include_spip('public/assembler');
echo recuperer_fond('fonds/resultats', array('id_jeu'=>$id_jeu,'par'=>$par));
fin_cadre('liste');
fin_cadre_relief();
echo jeux_navigation_pagination();
echo fin_gauche(), fin_page();
}
?>

30
exec/jeux_tous.php

@ -0,0 +1,30 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
include_spip('exec/inc_boites_infos');
function exec_jeux_tous(){
$par = _request('par');
($par =='') ? $par='date' : $par = $par;
$commencer_page = charger_fonction('commencer_page', 'inc');
include_spip('public/assembler');
echo $commencer_page(_T("jeux:liste_jeux")),
recuperer_fond('fonds/jeux_tous', array('par'=>$par));
}
function table_jeux_caracteristiques() {
global $jeux_caracteristiques;
$res = '|{{'._T('jeux:jeux').'}}|{{'._T('public:signatures_petition').'}}|{{'._T('jeux:options').'}}|{{'._T('spip:icone_configuration_site').'}}|';
foreach($jeux_caracteristiques['TYPES'] as $j=>$t) {
include_spip('jeux/'.$j);
$config = function_exists($f='jeux_'.$j.'_init')?trim($f()):'';
$res .= "\n|$t|&#91;"
. join("]\n_ &#91;",$jeux_caracteristiques['SIGNATURES'][$j]) . ']|['
. join("]\n_ &#91;",array_diff($jeux_caracteristiques['SEPARATEURS'][$j],$jeux_caracteristiques['SIGNATURES'][$j])) . ']|'
. preg_replace(array(',//.*,', ',[\n\r]+,'), array('', "\n_ "), $config) . '|';
}
return propre($res);
}
?>

109
exec/jeux_voir.php

@ -0,0 +1,109 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
include_spip('exec/inc_boites_infos');
function exec_jeux_voir(){
global $jeux_caracteristiques;
$commencer_page = charger_fonction('commencer_page', 'inc');
$id_jeu = _request('id_jeu');
include_spip('jeux_utils');
$requete = sql_fetsel('statut,contenu,id_jeu,type_jeu,titre_prive,date,type_resultat', 'spip_jeux', "id_jeu=$id_jeu");
list($statut, $contenu, $id_jeu, $type_jeu, $titre_prive, $date, $type_resultat) =
array($requete['statut'], $requete['contenu'], $requete['id_jeu'], $requete['type_jeu'], $requete['titre_prive'], $requete['date'], $requete['type_resultat']);
$liste = jeux_liste_les_jeux($contenu);
if(count($liste)==1)
$configuration_defaut = jeux_configuration_generale($liste[0]);
else {
$configuration_defaut = array();
foreach($liste as $jeu)
if(count($t = jeux_configuration_generale($jeu)))
$configuration_defaut[] = $jeux_caracteristiques['TYPES'][$jeu].'<ul><li>'.join('</li><li>', $t).'</li></ul>';
}
$configuration_interne = jeux_trouver_configuration_interne($contenu);
// cas particulier des multi-jeux
if(count($liste) && $liste[0]=='multi_jeux') {
$configuration_interne = array($jeux_caracteristiques['TYPES']['multi_jeux'].'<ul><li>'.join('</li><li>', $configuration_interne).'</li></ul>');
$textes = explode('['._JEUX_MULTI_JEUX.']', $contenu);
unset($textes[0]);
foreach($textes as $t) {
$jeu = jeux_trouver_nom($t);
if(count($t = jeux_trouver_configuration_interne($t)))
$configuration_interne[] = $jeu.'<ul><li>'.join('</li><li>', $t).'</li></ul>';
}
} else $configuration_interne = jeux_trouver_configuration_interne($contenu);
$titre_public = jeux_trouver_titre_public($contenu);
if($titre_prive=='') $titre_prive = _T('jeux:sans_titre_prive');
if($titre_public) {
$titre_prive = _T('jeux:jeu_titre_prive_') . ' ' . $titre_prive;
$titre_public = _T('jeux:jeu_titre_public_') . ' ' . $titre_public;
}
$contenu = $type_jeu==_T('jeux:jeu_vide')?_T('jeux:introuvable'):propre($contenu);
$puce = jeux_puce_statut($statut);
if(!$id_jeu){
echo $commencer_page(_T("jeux:pas_de_jeu"));
echo debut_gauche('',true);
echo boite_infos_accueil();
echo fin_gauche(), _T("jeux:pas_de_jeu"), fin_page();
return;
}
echo $commencer_page(_T("jeux:jeu_numero", array('id'=>$id_jeu,'nom'=>$type_jeu)));
echo debut_gauche('',true);
echo boite_infos_jeu($id_jeu);
echo boite_infos_accueil();
debut_cadre_relief();
echo "<strong>"._t("jeux:derniere_modif")."</strong><br />".affdate($date).' '.heures($date).":".minutes($date);
fin_cadre_relief();
echo creer_colonne_droite('',true);
echo debut_droite('',true);
debut_cadre_relief();
// changement de statut
if (autoriser('modifierstatut')){
if (_request('statut_modif')){
include_spip('base/jeux_modifier_statut');
jeu_modifier_statut($id_jeu, $statut=_request('statut_modif'));
}
echo gros_titre($puce." "._T("jeux:jeu_numero", array('id'=>$id_jeu,'nom'=>$type_jeu)), '', '', false);
debut_cadre_relief();
echo "<span class='titrem'>"._T('jeux:titres_jeu')
.'</span>'.propre('<ul><li>'.$titre_prive.($titre_public?"</li><li>$titre_public":'').'</li></ul>');
echo "<form method='post' name='statut_edit'>\n";
echo "<span class='titrem'>"._T('jeux:statut_jeu')."</span><ul><li>$type_jeu</li><li><select name='statut_modif'>";
echo '<option value="publie">'._T('texte_statut_publie').'</option>';
echo '<option value="poubelle"'.($statut=='poubelle'?' selected="selected"':'').'>'._T('texte_statut_poubelle').'</option>';
echo '<option value="refuse"'.($statut=='refuse'?' selected="selected"':'').'>'._T('texte_statut_refuse').'</option>';
echo "</select>&nbsp;<input type='submit' name='valider' value='"._T('bouton_valider')."' class='fondo' /></li></ul>\n";
echo "</form>";
echo "<span class='titrem'>"._T('jeux:cfg_type_resultat')
."</span><ul><li>"._T("jeux:resultat2_$type_resultat").'</li></ul>';
if(count($configuration_defaut))
echo "<span class='titrem'>"._T('jeux:configuration_defaut')
."</span><ul><li>".join('</li><li>', $configuration_defaut).'</li></ul>';
if(count($configuration_interne))
echo "<span class='titrem'>"._T('jeux:configuration_interne')
."</span><ul><li>".join('</li><li>', $configuration_interne).'</li></ul>';
fin_cadre_relief();
}
else
echo gros_titre($puce." "._T("jeux:jeu_numero", array('id'=>$id_jeu,'nom'=>$type_jeu)), '', '', false);
echo '<br />', $contenu;
fin_cadre_relief();
echo jeux_navigation_pagination();
echo fin_gauche(), fin_page();
}
?>

37
fonds/auteur_details.html

@ -0,0 +1,37 @@
<B_resultats>
#ANCRE_PAGINATION
<table class='arial2' cellpadding='2' cellspacing='0' style='width: 100%; border: 0px;'>
<thead>
<tr class="titrem" style="text-align:center">
<th>[(#ENV{par}|!=={id_jeu}|oui)<a class="ajax" href="[(#SELF|parametre_url{par,id_jeu})]">]<:jeux:jeu_numero_court:>[(#ENV{par}|!=={date}|oui)</a>]</th>
<th>[(#ENV{par}|!={id_jeu}|oui)<a class="ajax" href="[(#SELF|parametre_url{par,id_jeu})]">]<:jeux:jeu_type:>[(#ENV{par}|!={id_jeu}|oui)</a>]</th>
<th><:jeux:jeu_titre_prive:></th>
<th>[(#ENV{par}|!=={date}|oui)<a class="ajax" href="[(#SELF|parametre_url{par,date})]">]<:date:>[(#ENV{par}|!=={date}|oui)</a>]</th>
<th>[(#ENV{par}|oui)<a class="ajax" href="[(#SELF|parametre_url{par,''})]">]<:jeux:resultat:>[(#ENV{par}|oui)</a>]</th>
</tr>
</thead>
<tbody>
<BOUCLE_resultats(JEUX_RESULTATS) {id_auteur} {par #ENV{par}, round(resultat_court / total, 3)}{inverse #ENV{par}|=={id_jeu}|?{0,1}}{pagination 30}>
<tr class="tr_liste">
<td style="text-align:center"><a href="#URL_ECRIRE{jeux_voir, id_jeu=#ID_JEU}">#ID_JEU</a></td>
<B_jeu>
<BOUCLE_jeu(JEUX){statut==refuse|publie}{id_jeu}>
<td style="text-align:center"><a href="#URL_ECRIRE{jeux_voir, id_jeu=#ID_JEU}">#TYPE_JEU</a></td>
<td style="text-align:center"><a href="#URL_ECRIRE{jeux_voir, id_jeu=#ID_JEU}">#TITRE_PRIVE</a></td>
</BOUCLE_jeu>
<td style="text-align:center">??</td>
<td style="text-align:center">??</td>
<//B_jeu>
<td style="text-align:center">[(#DATE|affdate)] [(#DATE|heures)]:[(#DATE|minutes)]</td>
<td style="text-align:center">#RESULTAT_COURT / #TOTAL</td>
</tr>
[<tr>
<td colspan="3">(#RESULTAT_LONG)</td>
</tr>]
</BOUCLE_resultats>
</tbody>
</table>
[<div class="pagination">(#PAGINATION)</div>]
</B_resultats>
<br/><:jeux:aucun_resultat:>
<//B_resultats>

2
fonds/bouton_corriger.html

@ -0,0 +1,2 @@
[(#REM) Ce fond est surchargeable dans votre squelette ]
<div style="text-align:center;"><input type="submit" value="<:jeux:corriger:>" class="jeux_bouton" /></div>

2
fonds/bouton_recommencer.html

@ -0,0 +1,2 @@
[(#REM) Ce fond est surchargeable dans votre squelette ]
<div class="jeux_bouton_reset">&#091; <a href="[(#NETTOYER_URI|parametre_url{var_hasard, #EVAL{uniqid(rand())}})&#35;JEU#ENV{indexJeux}]"><:jeux:recommencer:></a> &#093;</div>

2
fonds/bouton_reinitialiser.html

@ -0,0 +1,2 @@
[(#REM) Ce fond est surchargeable dans votre squelette ]
<div class="jeux_bouton_reset">&#091; <a href="[(#NETTOYER_URI|parametre_url{var_hasard, #EVAL{uniqid(rand())}})&#35;JEU#ENV{indexJeux}]"><:jeux:reinitialiser:></a> &#093;</div>

2
fonds/bouton_rejouer.html

@ -0,0 +1,2 @@
[(#REM) Ce fond est surchargeable dans votre squelette ]
<div class="jeux_bouton_reset">&#091; <a href="[(#NETTOYER_URI|parametre_url{var_hasard, #EVAL{uniqid(rand())}})&#35;JEU#ENV{indexJeux}]"><:jeux:rejouer:></a> &#093;</div>

53
fonds/cfg_jeux.html

@ -0,0 +1,53 @@
<!-- titre=<:jeux:jeux:> -->
<!-- descriptif=
[(#REM|sinon{<:jeux:liste_jeux:>}|jeux_icone_horizontale{#URL_ECRIRE{jeux_tous},#CHEMIN{img/jeux-tous.png}})]
<BOUCLE_tous_resultats(JEUX_RESULTATS){0,1}>
[(#AUTORISER{gererresultats}) [(#REM|sinon{<:jeux:gerer_resultats:>}|jeux_icone_horizontale{#URL_ECRIRE{jeux_gerer_resultats},#CHEMIN{img/jeu-laurier.png}})]]
</BOUCLE_tous_resultats>
[(#REM|sinon{<:jeux:doc_jeux:>}|jeux_icone_horizontale{http://www.spip-contrib.net/Des-jeux-dans-vos-articles,#CHEMIN{img/jeu-24.png}})]
[(#REM|sinon{<:jeux:doc_scores:>}|jeux_icone_horizontale{http://www.spip-contrib.net/Des-jeux-avec-des-scores,#CHEMIN{img/jeu-24.png}})]
-->
<style type="text/css">
<!--
form p {margin:0.2em 0;}
form fieldset {margin:1em 0;}
-->
</style>
[(#REM) icone=img/jeu-cfg.png]
#CACHE{0}
<form method="post">[(#ENV{_cfg_}|form_hidden)]
<h2 style="text-align:center;"><:jeux:configuration_generale:></h2>
<hr/>
<p><:jeux:cfg_introduction:></p>
<fieldset><legend><:jeux:cfg_scores:> </legend>
<p><label><:jeux:cfg_type_resultat:><br/>
<select name="type_resultat">
<option value="dernier"[ selected="(#CONFIG{jeux/type_resultat}|=={dernier}|?{selected})"]><:jeux:resultat2_dernier:></option>
<option value="premier"[ selected="(#CONFIG{jeux/type_resultat}|=={premier}|?{selected})"]><:jeux:resultat2_premier:></option>
<option value="meilleur"[ selected="(#CONFIG{jeux/type_resultat}|=={meilleur}|?{selected})"]><:jeux:resultat2_meilleur:></option>
<option value="meilleurs"[ selected="(#CONFIG{jeux/type_resultat}|=={meilleurs}|?{selected})"]><:jeux:resultat2_meilleurs:></option>
<option value="tous"[ selected="(#CONFIG{jeux/type_resultat}|=={tous}|?{selected})"]><:jeux:resultat2_tous:></option>
<option value="aucun"[ selected="(#CONFIG{jeux/type_resultat}|=={aucun}|?{selected})"]><:jeux:resultat2_aucun:></option>
</select>
</label></p>
</fieldset>
[(#REM) Attention, important :
les options de config par defaut doivent etre nommees sous la forme 'cfg_uneOption'
]
<fieldset><legend><:jeux:cfg_affichage:> </legend>
<p><label><input type="checkbox" name="cfg_reponse" [checked="(#CONFIG{jeux/cfg_reponse}|!={''}|?{'checked'})"] class="fondl" />
<:jeux:cfg_donner_reponse:></label></p>
<p><label><input type="checkbox" name="cfg_indices" [checked="(#CONFIG{jeux/cfg_indices}|!={''}|?{'checked'})"] class="fondl" />
<:jeux:cfg_donner_indices:></label></p>
</fieldset>
<fieldset><legend><:jeux:cfg_correction:> </legend>
<p><label><input type="checkbox" name="cfg_solution" [checked="(#CONFIG{jeux/cfg_solution}|!={''}|?{'checked'})"] class="fondl" />
<:jeux:cfg_donner_solution:></label></p>
</fieldset>
<p align="right"><input class="fondo" type="submit" name="_cfg_ok" value="<:valider:>" /></p>
</form>

25
fonds/jeu_details.html

@ -0,0 +1,25 @@
<B_resultats>
<table class='arial2' cellpadding='2' cellspacing='0' style='width: 100%; border: 0px;'>
<tr class="titrem">
<th>[(#ENV{par}|!=={nom}|oui)<a class='ajax' href="[(#SELF|parametre_url{par,nom})]">]<:jeux:auteur:>[(#ENV{par}|!=={nom}|oui)</a>]</th>
<th>[(#ENV{par}|!=={date}|oui)<a class='ajax' href="[(#SELF|parametre_url{par,date})]">]<:date:>[(#ENV{par}|!=={date}|oui)</a>]</th>
<th style="text-align:center">[(#ENV{par}|oui)<a class='ajax' href="[(#SELF|parametre_url{par,''})]">]<:jeux:resultat:>[(#ENV{par}|oui)</a>]</th>
</tr></thead>
#PAGINATION
<BOUCLE_resultats(JEUX_RESULTATS spip_auteurs) {id_jeu} {par #ENV{par}, round(resultat_court / total, 3)} {inverse #ENV{par}|=={nom}|?{0,1}}{pagination 30}><!-- {statut==refuse|publie} -->
<tr class ="tr_liste">
<td><a href="?exec=jeux_resultats_auteur&id_auteur=#ID_AUTEUR">#NOM</a></td>
<td>[(#DATE|affdate)] [(#DATE|heures)]:[(#DATE|minutes)]</td>
<td style="text-align:center">#RESULTAT_COURT / #TOTAL</td>
[<td>(#TYPE_RESULTAT)</td>]
</tr>
[<tr>
<td colspan="3">(#RESULTAT_LONG)</td>
</tr>]
</BOUCLE_resultats>
</table>
</B_resultats>
<br/><:jeux:aucun_resultat:>
<//B_resultats>

12
fonds/jeu_score.html

@ -0,0 +1,12 @@
[(#REM)
Affiche le score d'un jeu a l'issue d'une correction.
Champs disponibles : id_jeu (si existe), score, total, resultat_long, commentaire
]<div class="jeux_score">
<:jeux:score:>&nbsp;#ENV*{score}&nbsp;/&nbsp;#ENV*{total}
[<br /><:jeux:bravo:>(#ENV*{score}|=={#ENV*{total}}|oui)]
</div>
[<div class="jeux_commentaire_score">
(#ENV*{commentaire})
</div>]

80
fonds/jeux_boites_infos.html

@ -0,0 +1,80 @@
[(#VAL{1}|debut_boite_info)]
<BOUCLE_jeu(JEUX){id_jeu}{0,1}>
<strong><:jeux:jeu_court|replace{@id@,#ID_JEU}|replace{@nom@,#TYPE_JEU}:></strong><br />
[(#ENV{exec}|=={jeux_edit}|oui)
<:jeux:retourner_jeu|jeux_icone_horizontale{#URL_ECRIRE{jeux_voir,id_jeu=#ID_JEU},#CHEMIN{img/jeu-loupe.png}}:>
<:jeux:liste_jeux|jeux_icone_horizontale{#URL_ECRIRE{jeux_tous},#CHEMIN{img/jeux-tous.png}}:>
]
[(#ENV{exec}|!={jeux_edit}|oui)
[(#ENV{exec}|=={jeux_voir}|oui)
[(#STATUT|=={publie}|oui)
[(#SET{url,[(#URL_PAGE{jeu,id_jeu=#ID_JEU}|parametre_url{var_mode,calcul})]})]
<:jeux:voir_en_ligne|jeux_icone_horizontale{#GET{url},racine-24.gif}:>
]
]
[(#ENV{exec}|!={jeux_voir}|oui)
<:jeux:voir_jeu|jeux_icone_horizontale{#URL_ECRIRE{jeux_voir,id_jeu=#ID_JEU},#CHEMIN{img/jeu-loupe.png}}:>
]
<:jeux:modifier_ce_jeu|jeux_icone_horizontale{#URL_ECRIRE{jeux_edit,id_jeu=#ID_JEU},#CHEMIN{img/jeu-crayon.png}}:>
]
<BOUCLE_resultats(JEUX_RESULTATS){id_jeu}{0,1}>
[(#ENV{exec}|!={jeux_edit}|oui)
[(#ENV{exec}|!={jeux_resultats_jeu}|oui)
<:jeux:voir_ses_resultats|jeux_icone_horizontale{#URL_ECRIRE{jeux_resultats_jeu,id_jeu=#ID_JEU},#CHEMIN{img/jeu-laurier.png}}:>
]
[(#ENV{exec}|!={jeux_gerer_resultats}|oui)
[(#AUTORISER{gererresultats})
<:jeux:gerer_ses_resultats|jeux_icone_horizontale{#URL_ECRIRE{jeux_gerer_resultats,id_jeu=#ID_JEU},#CHEMIN{img/jeu-laurier.png}}:>
]
]
]
</BOUCLE_resultats>
</BOUCLE_jeu>
<BOUCLE_auteur(AUTEURS){tous}{id_auteur}{0,1}>
<strong>#NOM</strong><br />
<:jeux:infos_auteur|jeux_icone_horizontale{#URL_ECRIRE{auteur_infos,id_auteur=#ID_AUTEUR},#CHEMIN{images/auteur-24.gif}}:>
[(#ENV{exec}|=={jeux_gerer_resultats}|oui)
<:jeux:voir_ses_resultats|jeux_icone_horizontale{#URL_ECRIRE{jeux_resultats_auteur,id_auteur=#ID_AUTEUR},#CHEMIN{img/jeu-laurier.png}}:>
]
[(#ENV{exec}|!={jeux_gerer_resultats}|oui)
[(#AUTORISER{gererresultats})
<:jeux:gerer_ses_resultats|jeux_icone_horizontale{#URL_ECRIRE{jeux_gerer_resultats,id_auteur=#ID_AUTEUR},#CHEMIN{img/jeu-laurier.png}}:>
]
]
</BOUCLE_auteur>
#SET{resultats,non}
<BOUCLE_tous_resultats(JEUX_RESULTATS){0,1}>[(#AUTORISER{gererresultats}) #SET{resultats,oui}]</BOUCLE_tous_resultats>
[(#ENV{exec}|=={jeux_edit}|oui)
<:jeux:liste_jeux|jeux_icone_horizontale{#URL_ECRIRE{jeux_tous},#CHEMIN{img/jeux-tous.png}}:>
]
[(#ENV{boite}|=={accueil}|oui)
[(#ENV{exec}|=={jeux_tous}|oui)
<:jeux:nouveau_jeu|jeux_icone_horizontale{#URL_ECRIRE{jeux_edit,nouveau=oui},#CHEMIN{img/jeu-nouveau.png}}:>
]
[(#ENV{exec}|!={jeux_tous}|oui)
<:jeux:liste_jeux|jeux_icone_horizontale{#URL_ECRIRE{jeux_tous},#CHEMIN{img/jeux-tous.png}}:>
]
[(#GET{resultats}|=={oui}|oui)
[(#ENV{exec}|match{'^jeux_gerer_resultats|jeux_resultats_jeu|jeux_resultats_auteur$'}|?{[(#ENV{id_foo}|>{0}|oui)]})
<:jeux:gerer_resultats|jeux_icone_horizontale{#URL_ECRIRE{jeux_gerer_resultats},#CHEMIN{img/jeu-laurier.png}}:>
]
]
[(#ENV{exec}|=={jeux_tous}|oui)
[(#ENV{config}|=={oui}|oui)
<:jeux:configurer_jeux|jeux_icone_horizontale{#URL_ECRIRE{cfg,cfg=jeux},#CHEMIN{img/jeu-cfg.png}}:>
]
<:jeux:doc_jeux|jeux_icone_horizontale{http://www.spip-contrib.net/Des-jeux-dans-vos-articles,#CHEMIN{img/jeu-24.png}}:>
<:jeux:doc_scores|jeux_icone_horizontale{http://www.spip-contrib.net/Des-jeux-avec-des-scores,#CHEMIN{img/jeu-24.png}}:>
]
<br /><i><b>Attention</b> : partie du plugin en cours de d&eacute;veloppement.
Merci de rapporter les bugs &eacute;ventuels et/ou de contribuer aux am&eacute;liorations.</i>
]
<//B_auteur>
<//B_jeu>
[(#VAL{1}|fin_boite_info)]

1
fonds/jeux_compacter.html

@ -0,0 +1 @@
0<BOUCLE_jeux(JEUX){id_jeu?}{statut==refuse|publie}><BOUCLE_resultats(JEUX_RESULTATS){!par date}{id_jeu}{id_auteur?}{0,1}>[,(#ID_AUTEUR|?{#ID_RESULTAT})]</BOUCLE_resultats></BOUCLE_jeux>

26
fonds/jeux_edit.html

@ -0,0 +1,26 @@
#CACHE{0}
<BOUCLE_jeu(JEUX){id_jeu}>
[(#SET{grand_titre,[(#REM|sinon{<:jeux:modifier_jeu:>}|replace{@id@,#ID_JEU})]})]
[(#SET{contenu,[(#CONTENU*|replace{</?jeux>,}|entites_html)]})]
[(#SET{titre_prive,[(#TITRE_PRIVE|sinon{<:jeux:sans_titre_prive:>})]})]
#SET{type_jeu,#TYPE_JEU}
#SET{type_resultat,#TYPE_RESULTAT}
</BOUCLE_jeu>
<//B_jeu>
<label><span class='titrem'><:jeux:jeu_titre_prive:></span><br />
<input type="text" name="titre_prive" value="[(#GET{titre_prive}|textebrut)]"