PageRenderTime 39ms CodeModel.GetById 8ms RepoModel.GetById 0ms app.codeStats 0ms

/spip/ecrire/plugins/afficher_plugin.php

https://github.com/eyeswebcrea/espace-couture-sittler.fr
PHP | 201 lines | 136 code | 37 blank | 28 comment | 16 complexity | 549a67307e1239a7a6264bd439f7e08a MD5 | raw file
Possible License(s): LGPL-2.1, GPL-3.0
  1. <?php
  2. /***************************************************************************\
  3. * SPIP, Systeme de publication pour l'internet *
  4. * *
  5. * Copyright (c) 2001-2011 *
  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('inc/charsets');
  13. include_spip('inc/texte');
  14. include_spip('inc/plugin'); // pour charge_instal_plugin
  15. // http://doc.spip.org/@ligne_plug
  16. function plugins_afficher_plugin_dist($url_page, $plug_file, $actif, $expose=false, $class_li="item", $dir_plugins=_DIR_PLUGINS) {
  17. static $id_input = 0;
  18. static $versions = array();
  19. $force_reload = (_request('var_mode')=='recalcul');
  20. $get_infos = charger_fonction('get_infos','plugins');
  21. $info = $get_infos($plug_file, $force_reload, $dir_plugins);
  22. $prefix = $info['prefix'];
  23. $erreur = (!isset($info['erreur']) ? ''
  24. : ("<div class='erreur'>" . join('<br >', $info['erreur']) . "</div>"));
  25. $cfg = !$actif ? '' : plugin_bouton_config($plug_file,$info,$dir_plugins);
  26. // numerotons les occurrences d'un meme prefix
  27. $versions[$prefix] = $id = isset($versions[$prefix]) ? $versions[$prefix] + 1 : '';
  28. $class_li .= ($actif?" actif":"") . ($expose?" on":"") . (isset($info['erreur']) ? " erreur" : '');
  29. return "<li id='$prefix$id' class='$class_li'>"
  30. . (($erreur OR $dir_plugins===_DIR_EXTENSIONS)
  31. ? '': plugin_checkbox(++$id_input, $plug_file, $actif))
  32. . plugin_resume($info, $dir_plugins, $plug_file, $url_page)
  33. . $cfg
  34. . $erreur
  35. . (($dir_plugins!==_DIR_EXTENSIONS AND plugin_est_installe($plug_file))
  36. ? plugin_desintalle($plug_file) : '')
  37. . "<div class='details'>" // pour l'ajax de exec/info_plugin
  38. . (!$expose ? '' : affiche_bloc_plugin($plug_file, $info))
  39. . "</div>"
  40. ."</li>";
  41. }
  42. function plugin_bouton_config($nom, $infos, $dir)
  43. {
  44. // la verification se base sur le filesystem
  45. // il faut donc n'utiliser que des minuscules, par convention
  46. $prefix = strtolower($infos['prefix']);
  47. // si plugin.xml fournit un squelette, le prendre
  48. if ($infos['config'])
  49. return recuperer_fond("$dir$nom/" . $infos['config'],
  50. array('script' => 'configurer_' . $prefix,
  51. 'nom' => $nom));
  52. // si le plugin CFG est la, l'essayer
  53. if (defined('_DIR_PLUGIN_CFG')) {
  54. if (include_spip('inc/cfg')) // test CFG version >= 1.0.5
  55. if ($cfg = icone_lien_cfg("$dir$nom", "cfg"))
  56. return "<div class='cfg_link'>$cfg</div>";
  57. }
  58. // sinon prendre le squelette std sur le nom std
  59. return recuperer_fond("prive/modeles/cfg",
  60. array('script' => 'configurer_' . $prefix,
  61. 'nom' => $nom));
  62. }
  63. // checkbox pour activer ou desactiver
  64. // si ce n'est pas une extension
  65. function plugin_checkbox($id_input, $file, $actif)
  66. {
  67. $name = substr(md5($file),0,16);
  68. return "<div class='check'>\n"
  69. . "<input type='checkbox' name='s$name' id='label_$id_input'"
  70. . ($actif?" checked='checked'":"")
  71. . " class='checkbox' value='O' />"
  72. . "\n<label for='label_$id_input'>"._T('activer_plugin')."</label>"
  73. . "</div>";
  74. }
  75. // Cartouche Resume
  76. function plugin_resume($info, $dir_plugins, $plug_file, $url_page)
  77. {
  78. $desc = plugin_propre($info['description']);
  79. $dir = $dir_plugins.$plug_file;
  80. if (($p=strpos($desc, "<br />"))!==FALSE)
  81. $desc = substr($desc, 0,$p);
  82. $url = parametre_url($url_page, "plugin", $dir);
  83. if (isset($info['icon']) and $i = trim($info['icon'])) {
  84. include_spip("inc/filtres_images_mini");
  85. $i = inserer_attribut(image_reduire("$dir/$i", 32),'alt','');
  86. $i = "<div class='icon'><a href='$url' rel='info'>$i</a></div>";
  87. } else $i = '';
  88. return "<div class='resume'>"
  89. . "<h3 class='nom'><a href='$url' rel='info'>"
  90. . typo($info['nom'])
  91. . "</a></h3>"
  92. . " <span class='version'>".$info['version']."</span>"
  93. . " <span class='etat'> - "
  94. . plugin_etat_en_clair($info['etat'])
  95. . "</span>"
  96. . "<div class='short'>".couper($desc,70)."</div>"
  97. . $i
  98. . "</div>";
  99. }
  100. function plugin_desintalle($plug_file){
  101. $action = redirige_action_auteur('desinstaller_plugin',$plug_file,'admin_plugin');
  102. $text = _T('bouton_desinstaller');
  103. $text2 = _T('info_desinstaller_plugin');
  104. $file = basename($plug_file);
  105. return "<div class='actions'>[".
  106. "<a href='$action'
  107. onclick='return confirm(\"$text $file ?\\n$text2\")'>"
  108. . $text
  109. . "</a>]</div>" ;
  110. }
  111. function plugin_etat_en_clair($etat){
  112. if (!in_array($etat,array('stable','test','experimental')))
  113. $etat = 'developpement';
  114. return _T('plugin_etat_'.$etat);
  115. }
  116. // http://doc.spip.org/@plugin_propre
  117. function plugin_propre($texte) {
  118. $mem = $GLOBALS['toujours_paragrapher'];
  119. $GLOBALS['toujours_paragrapher'] = false;
  120. $texte = propre($texte);
  121. $GLOBALS['toujours_paragrapher'] = $mem;
  122. return $texte;
  123. }
  124. // http://doc.spip.org/@affiche_bloc_plugin
  125. function affiche_bloc_plugin($plug_file, $info, $dir_plugins=null) {
  126. if (!$dir_plugins)
  127. $dir_plugins = _DIR_PLUGINS;
  128. $s = "";
  129. // TODO: le traiter_multi ici n'est pas beau
  130. // cf. description du plugin/_stable_/ortho/plugin.xml
  131. if (isset($info['description']))
  132. $s .= "<div class='desc'>".plugin_propre($info['description']) . "</div>\n";
  133. if (isset($info['auteur']) AND trim($info['auteur']))
  134. $s .= "<div class='auteurs'>" . _T('public:par_auteur') .' '. plugin_propre($info['auteur']) . "</div>\n";
  135. if (isset($info['licence']))
  136. $s .= "<div class='licence'> - " . _T('intitule_licence') .' '. plugin_propre($info['licence']) . "</div>\n";
  137. if (trim($info['lien'])) {
  138. $lien = $info['lien'];
  139. if (!preg_match(',^https?://,iS', $lien))
  140. $lien = extraire_attribut(extraire_balise(propre($lien),'a'),'href');
  141. $s .= "<div class='site'><a href='$lien' class='spip_out'>" . _T('en_savoir_plus') .'</a></div>';
  142. }
  143. //
  144. // Ajouter les infos techniques
  145. //
  146. $infotech = array();
  147. $version = _T('version') .' '. $info['version'];
  148. // Version SVN
  149. if ($svn_revision = version_svn_courante($dir_plugins.$plug_file))
  150. $version .= ($svn_revision<0 ? ' SVN':'').' ['.abs($svn_revision).']';
  151. $infotech[] = $version;
  152. // source zip le cas echeant
  153. $source = (lire_fichier($dir_plugins.$plug_file.'/install.log', $log)
  154. AND preg_match(',^source:(.*)$,m', $log, $r))
  155. ? '<br />'._T('plugin_source').' '.trim($r[1])
  156. :'';
  157. $s .= "<div class='tech'>"
  158. . join(' &mdash; ', $infotech) .
  159. '<br />' . _T('repertoire_plugins') .' '. $plug_file
  160. . $source
  161. ."</div>";
  162. return $s;
  163. }
  164. ?>