textwheel.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. /***************************************************************************\
  3. * SPIP, Systeme de publication pour l'internet *
  4. * *
  5. * Copyright (c) 2001-2014 *
  6. * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
  7. * *
  8. * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
  9. * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
  10. \***************************************************************************/
  11. if (!defined("_ECRIRE_INC_VERSION")) return;
  12. include_spip('engine/textwheel');
  13. // si une regle change et rend son cache non valide
  14. // incrementer ce define au numero de commit concerne
  15. // (inconsistence entre la wheel et l'inclusion php)
  16. if (!defined('_WHEELS_VERSION')) define('_WHEELS_VERSION',68672);
  17. //
  18. // Definition des principales wheels de SPIP
  19. //
  20. if (!isset($GLOBALS['spip_wheels'])) {
  21. $GLOBALS['spip_wheels'] = array();
  22. }
  23. // Si le tableau des raccourcis existe déjà
  24. if (!isset($GLOBALS['spip_wheels']['raccourcis']) OR !is_array($GLOBALS['spip_wheels']['raccourcis']))
  25. $GLOBALS['spip_wheels']['raccourcis'] = array(
  26. 'spip/spip.yaml',
  27. 'spip/spip-paragrapher.yaml'
  28. );
  29. else
  30. $GLOBALS['spip_wheels']['raccourcis'] = array_merge(
  31. array(
  32. 'spip/spip.yaml',
  33. 'spip/spip-paragrapher.yaml'
  34. ),
  35. $GLOBALS['spip_wheels']['raccourcis']
  36. );
  37. if (test_espace_prive ())
  38. $GLOBALS['spip_wheels']['raccourcis'][] = 'spip/ecrire.yaml';
  39. $GLOBALS['spip_wheels']['interdire_scripts'] = array(
  40. 'spip/interdire-scripts.yaml'
  41. );
  42. $GLOBALS['spip_wheels']['echappe_js'] = array(
  43. 'spip/echappe-js.yaml'
  44. );
  45. $GLOBALS['spip_wheels']['paragrapher'] = array(
  46. 'spip/spip-paragrapher.yaml'
  47. );
  48. $GLOBALS['spip_wheels']['listes'] = array(
  49. 'spip/spip-listes.yaml'
  50. );
  51. //
  52. // Methode de chargement d'une wheel SPIP
  53. //
  54. class SPIPTextWheelRuleset extends TextWheelRuleSet {
  55. protected function findFile(&$file, $path=''){
  56. static $default_path;
  57. // absolute file path?
  58. if (file_exists($file))
  59. return $file;
  60. // file include with texwheels, relative to calling ruleset
  61. if ($path AND file_exists($f = $path.$file))
  62. return $f;
  63. return find_in_path($file,'wheels/');
  64. }
  65. public static function &loader($ruleset, $callback = '', $class = 'SPIPTextWheelRuleset') {
  66. # memoization
  67. # attention : le ruleset peut contenir apres loading des chemins relatifs
  68. # il faut donc que le cache depende du chemin courant vers la racine de SPIP
  69. $key = 'tw-'.md5(_WHEELS_VERSION."-".serialize($ruleset).$callback.$class._DIR_RACINE);
  70. # lecture du cache
  71. include_spip('memoization_options');
  72. if (!function_exists('cache_get')) include_spip('inc/memoization-mini');
  73. if ((!defined('_VAR_MODE') OR _VAR_MODE!='recalcul')
  74. AND $cacheruleset = cache_get($key))
  75. return $cacheruleset;
  76. # calcul de la wheel
  77. $ruleset = parent::loader($ruleset, $callback, $class);
  78. # ecriture du cache
  79. cache_set($key, $ruleset);
  80. return $ruleset;
  81. }
  82. }
  83. function tw_trig_purger($quoi){
  84. if ($quoi=='cache')
  85. purger_repertoire(_DIR_CACHE."wheels");
  86. return $quoi;
  87. }
  88. ?>