You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
2.3 KiB

  1. <?php
  2. // Construit le contenu multi des balises nom, slogan et description a partir des items de langue
  3. // contenus dans les fichiers paquet-prefixe_langue.php
  4. function empaqueteur_paquet_multi($dir_source) {
  5. $multis = '';
  6. if ($fichier_fr = glob($dir_source . '/lang/paquet-*_fr.php')) {
  7. // Determination du nom du module, du prefixe et des items de langue
  8. $nom_fr = basename($fichier_fr[0], '.php');
  9. $prefixe = substr($nom_fr, 7, strlen($nom_fr)-3-7);
  10. $module = "paquet-$prefixe";
  11. $item_nom = $prefixe . "_nom";
  12. $item_slogan = $prefixe . "_slogan";
  13. $item_description = $prefixe . "_description";
  14. // On cherche tous les fichiers de langue destines a la traduction du paquet.xml
  15. if ($fichiers_langue = glob($dir_source . "/lang/{$module}_*.php")) {
  16. $nom = $slogan = $description = '';
  17. foreach ($fichiers_langue as $_fichier_langue) {
  18. $nom_fichier = basename($_fichier_langue, '.php');
  19. $langue = substr($nom_fichier, strlen($module) + 1 - strlen($nom_fichier));
  20. // Si la langue est reconnue, on traite la liste des items de langue
  21. if (isset($GLOBALS['codes_langues'][$langue])) {
  22. $GLOBALS['idx_lang'] = $langue;
  23. include($_fichier_langue);
  24. foreach ($GLOBALS[$langue] as $_item => $_traduction) {
  25. if ($_item == $item_nom)
  26. $nom .= "\n[$langue]$_traduction";
  27. if ($_item == $item_slogan)
  28. $slogan .= "\n[$langue]$_traduction";
  29. if ($_item == $item_description)
  30. $description .= "\n[$langue]$_traduction";
  31. }
  32. }
  33. }
  34. // Finaliser la construction des balises multi
  35. if ($nom) $multis .= "<nom>\n<multi>$nom\n</multi>\n</nom>\n";
  36. if ($slogan) $multis .= "<slogan>\n<multi>$slogan\n</multi>\n</slogan>\n";
  37. if ($description) $multis .= "<description>\n<multi>$description\n</multi>\n</description>\n";
  38. }
  39. }
  40. return ($multis ? "<multis>\n$multis</multis>" : '');
  41. }
  42. // Renvoie le path complet du logo a partir de la balise icon de plugin.xml et de la racine des sources
  43. function empaqueteur_paquet_logo($xml, $dir_source) {
  44. if (preg_match('#logo\s*=\s*[\'"](.+)[\'"]#i', $xml, $matches)) {
  45. $logo = $dir_source . '/' . trim($matches[1]);
  46. $logo_svg = preg_replace(",-\d+\.png$,", "-xx.svg", $logo);
  47. if ($logo_svg !== $logo and file_exists($logo_svg)) {
  48. return $logo_svg;
  49. }
  50. return $logo;
  51. }
  52. return '';
  53. }