|
|
|
@ -116,56 +116,6 @@ function plugins_preparer_sql_plugin($plugin) {
|
|
|
|
|
return $champs; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Normalise un nom issu d'un plugin.xml |
|
|
|
|
* |
|
|
|
|
* @todo Supprimer cette fonction qui ne sert nulle part ? |
|
|
|
|
* |
|
|
|
|
* @uses extraire_trads() |
|
|
|
|
* |
|
|
|
|
* @param string $nom |
|
|
|
|
* Le nom |
|
|
|
|
* @param string $langue |
|
|
|
|
* La langue à extraire |
|
|
|
|
* @param bool $supprimer_numero |
|
|
|
|
* Supprimer les numéros ? |
|
|
|
|
* @return string |
|
|
|
|
* Le nom |
|
|
|
|
**/ |
|
|
|
|
function normaliser_nom($nom, $langue = '', $supprimer_numero = true) { |
|
|
|
|
include_spip('inc/texte'); |
|
|
|
|
|
|
|
|
|
// On extrait les traductions de l'eventuel multi |
|
|
|
|
// Si le nom n'est pas un multi alors le tableau renvoye est de la forme '' => 'nom' |
|
|
|
|
$noms = extraire_trads(str_replace(['<multi>', '</multi>'], [], $nom, $nbr_replace)); |
|
|
|
|
$multi = ($nbr_replace > 0 and !$langue) ? true : false; |
|
|
|
|
|
|
|
|
|
$nouveau_nom = ''; |
|
|
|
|
foreach ($noms as $_lang => $_nom) { |
|
|
|
|
$_nom = trim($_nom); |
|
|
|
|
if (!$_lang) { |
|
|
|
|
$_lang = _LANGUE_PAR_DEFAUT; |
|
|
|
|
} |
|
|
|
|
if ($supprimer_numero) { |
|
|
|
|
$nbr_matches = preg_match(',(.+)(\s+[\d._]*)$,Um', $_nom, $matches); |
|
|
|
|
} else { |
|
|
|
|
$nbr_matches = 0; |
|
|
|
|
} |
|
|
|
|
if (!$langue or $langue == $_lang or (is_countable($noms) ? count($noms) : 0) == 1) { |
|
|
|
|
$nouveau_nom .= (($multi) ? '[' . $_lang . ']' : '') . |
|
|
|
|
(($nbr_matches > 0) ? trim($matches[1]) : $_nom); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($nouveau_nom) { // On renvoie un nouveau nom multi ou pas sans la valeur de la branche |
|
|
|
|
$nouveau_nom = (($multi) ? '<multi>' : '') . $nouveau_nom . (($multi) ? '</multi>' : ''); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $nouveau_nom; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Normalise un lien issu d'un plugin.xml |
|
|
|
|
* |
|
|
|
@ -209,6 +159,15 @@ function normaliser_auteur_licence($texte, $balise) {
|
|
|
|
|
include_spip('inc/lien'); |
|
|
|
|
include_spip('inc/svp_outiller'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Regexp des raccourcis, aussi utilisee pour la fusion de sauvegarde Spip |
|
|
|
|
// Laisser passer des paires de crochets pour la balise multi |
|
|
|
|
// mais refuser plus d'imbrications ou de mauvaises imbrications |
|
|
|
|
// sinon les crochets ne peuvent plus servir qu'a ce type de raccourci |
|
|
|
|
// @deprecated |
|
|
|
|
defined('_RACCOURCI_LIEN') || define('_RACCOURCI_LIEN', '/\[([^][]*?([[][^]>-]*[]][^][]*)*)->(>?)([^]]*)\]/msS'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// On extrait le multi si besoin et on selectionne la traduction francaise |
|
|
|
|
$t = normaliser_multi($texte); |
|
|
|
|
|
|
|
|
@ -294,24 +253,28 @@ function normaliser_auteur_licence($texte, $balise) {
|
|
|
|
|
/** |
|
|
|
|
* Expanse les multi en un tableau de textes complets, un par langue |
|
|
|
|
* |
|
|
|
|
* @uses _EXTRAIRE_MULTI |
|
|
|
|
* @param string $texte |
|
|
|
|
* Le texte |
|
|
|
|
* @return array |
|
|
|
|
* Texte expansé par code de langue : couples (code de langue => texte) |
|
|
|
|
*/ |
|
|
|
|
function normaliser_multi($texte) { |
|
|
|
|
include_spip('inc/filtres'); |
|
|
|
|
|
|
|
|
|
if (!preg_match_all(_EXTRAIRE_MULTI, $texte, $regs, PREG_SET_ORDER)) { |
|
|
|
|
include_spip("src/Texte/Utils/Collecteur"); |
|
|
|
|
include_spip("src/Texte/CollecteurMultis"); |
|
|
|
|
$collecteurMultis = new Spip\Texte\CollecteurMultis(); |
|
|
|
|
$multis = $collecteurMultis->collecter($texte); |
|
|
|
|
|
|
|
|
|
if (!$multis) { |
|
|
|
|
return [_LANGUE_PAR_DEFAUT => $texte]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$trads = []; |
|
|
|
|
foreach ($regs as $reg) { |
|
|
|
|
foreach (extraire_trads($reg[1]) as $k => $v) { |
|
|
|
|
foreach ($multis as $multi) { |
|
|
|
|
foreach ($multi['trads'] as $k => $v) { |
|
|
|
|
// Si le code de langue n'est pas précisé dans le multi c'est donc la langue par défaut |
|
|
|
|
$lang = $k ?: _LANGUE_PAR_DEFAUT; |
|
|
|
|
$trads[$lang] = str_replace($reg[0], $v, $trads[$k] ?? $texte); |
|
|
|
|
$trads[$lang] = str_replace($multi['raw'], $v, $trads[$lang] ?? $texte); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|