PageRenderTime 35ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/_plugins_/acs/branches/v2/inc/composant/pages_liste.php

https://bitbucket.org/pombredanne/spip-zone-treemap
PHP | 111 lines | 82 code | 14 blank | 15 comment | 18 complexity | 8a047a5bc340f5a5f11380af15f9f315 MD5 | raw file
  1. <?php
  2. # ACS
  3. # (Plugin Spip)
  4. # http://acs.geomaticien.org
  5. #
  6. # Copyright Daniel FAIVRE, 2007-2012
  7. # Copyleft: licence GPL - Cf. LICENCES.txt
  8. define('_SPIP_DIST_DIR', _DIR_RACINE.'dist');
  9. include_spip('inc/composant/composants_liste');
  10. /**
  11. * Retourne un tableau des pages squelettes du site (Utilise le cache ACS)
  12. *
  13. * Spip va chercher ses squelettes dans l'ordre suivant :
  14. * over > modèle ACS actif > plugins actifs > spip (dist)
  15. */
  16. function pages_liste() {
  17. static $liste;
  18. if (!count($liste)) {
  19. include_spip('inc/acs_cache');
  20. $set = (isset($GLOBALS['meta']['acsSet']) ? $GLOBALS['meta']['acsSet'] : 'cat');
  21. $liste = cache('pages_du_site', 'a_'.$set.'_pages_liste');
  22. }
  23. return $liste[0];
  24. }
  25. function pages_du_site() {
  26. $pages = array();
  27. // Ordre d'override : over 1 > ...> over n > modèle ACS actif > plugins actifs > spip (dist)
  28. $tas = explode(':', $GLOBALS['meta']['acsSqueletteOverACS']);
  29. foreach($tas as $dir) {
  30. $squelettes['over'.$numover] = _ACS_DIR_SITE_ROOT.$dir;
  31. $numover += 1;
  32. }
  33. // Squelettes du set ACS actif:
  34. $squelettes['acs'] = _DIR_PLUGIN_ACS.'sets/'.(isset($GLOBALS['meta']['acsSet']) ? $GLOBALS['meta']['acsSet'] : 'cat');
  35. // On ajoute les squelettes de plugins actifs - Add skeletons from active plugins
  36. $plugins = unserialize($GLOBALS['meta']['plugin']);
  37. foreach ($plugins as $NAME=>$plugin) {
  38. $squelettes['plugin_'.$NAME] = _DIR_PLUGINS.$plugin['dir'];
  39. }
  40. $squelettes['spip'] = _SPIP_DIST_DIR;
  41. foreach($squelettes as $source => $dir) {
  42. foreach(pages_du_squelette($dir) as $dossier => $pdd) {
  43. if (!isset($pages[$dossier])) $pages[$dossier] = array();
  44. foreach($pdd as $page=>$param) {
  45. if (!isset($pages[$dossier][$page]))
  46. $pages[$dossier][$page] = array('source' => $source);
  47. }
  48. }
  49. }
  50. return $pages;
  51. }
  52. function pages_du_squelette($dir) {
  53. $pages = array();
  54. $dossiers = array('', 'modeles', 'formulaires');
  55. if ($GLOBALS['meta']['ACS_VOIR_PAGES_COMPOSANTS']) {
  56. $dossiers_composants = array_keys(composants_liste());
  57. foreach($dossiers_composants as $k => $v)
  58. $dossiers_composants[$k] = 'composants/'.$v;
  59. sort($dossiers_composants);
  60. $dossiers = array_merge($dossiers, $dossiers_composants);
  61. }
  62. foreach($dossiers as $dossier) {
  63. $pages[$dossier] = array();
  64. $pdd = pages_du_dossier($dir, $dossier);
  65. foreach($pdd as $page=>$param) {
  66. $pages[$dossier][$page] = true;
  67. }
  68. }
  69. return $pages;
  70. }
  71. function pages_du_dossier($dir, $dossier) {
  72. $pages = array();
  73. $dir .= ($dossier ? '/'.$dossier : '');
  74. if (@is_dir($dir) AND @is_readable($dir) AND $d = @opendir($dir)) {
  75. while (($f = readdir($d)) !== false && ($nbfiles<1000)) {
  76. if ($f[0] != '.' # ignorer . .. .svn etc
  77. AND $f != 'CVS'
  78. AND $f != 'remove.txt'
  79. AND @is_readable($p = "$dir/$f")) {
  80. if (is_file($p)) {
  81. if (preg_match(";.*[.]html$;iS", $f)) {
  82. $pagename = substr($f, 0, -5);
  83. if (($pagename == 'wrap') ||
  84. ($pagename == 'acs.js') ||
  85. ((substr($pagename, -8) == '_preview') && (!$GLOBALS['meta']['ACS_VOIR_PAGES_PREVIEW'])) )
  86. continue;
  87. $pages[$pagename] = true;
  88. }
  89. }
  90. }
  91. $nbfiles++;
  92. }
  93. }
  94. ksort($pages);
  95. return $pages;
  96. }
  97. ?>