Skip to content
Extraits de code Groupes Projets
Valider 304f449f rédigé par Fil's avatar Fil
Parcourir les fichiers

optimisations (Cedric)

attention le filtre de translitteration redevient |translitteration
parent b9316404
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -489,6 +489,9 @@ function translitteration($texte, $charset='AUTO', $complexe='') { ...@@ -489,6 +489,9 @@ function translitteration($texte, $charset='AUTO', $complexe='') {
$table_translit ='translit'.$complexe; $table_translit ='translit'.$complexe;
// 0. Supprimer les caracteres illegaux
$texte = corriger_caracteres($texte);
// 1. Passer le charset et les &eacute en utf-8 // 1. Passer le charset et les &eacute en utf-8
$texte = unicode_to_utf_8(html2unicode(charset2unicode($texte, $charset, true))); $texte = unicode_to_utf_8(html2unicode(charset2unicode($texte, $charset, true)));
...@@ -598,6 +601,35 @@ function transcoder_page($texte, $headers='') { ...@@ -598,6 +601,35 @@ function transcoder_page($texte, $headers='') {
return importer_charset($texte, $charset); return importer_charset($texte, $charset);
} }
//
// Gerer les outils mb_string
//
function spip_substr($c, $start=0, $end='') {
if (init_mb_string()) {
if ($end)
return mb_substr($c, $start, $end);
else
return mb_substr($c, $start);
}
// methode substr normale
else {
if ($end)
return substr($c, $start, $end);
else
return substr($c, $start);
}
}
function spip_strlen($c) {
if (init_mb_string())
return mb_strlen($c);
else
return strlen($c);
}
// Initialisation // Initialisation
$GLOBALS['CHARSET'] = Array(); $GLOBALS['CHARSET'] = Array();
......
...@@ -13,6 +13,8 @@ ...@@ -13,6 +13,8 @@
if (!defined("_ECRIRE_INC_VERSION")) return; if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/charsets');
// Appliquer un filtre (eventuellement defini dans la matrice) aux donnees // Appliquer un filtre (eventuellement defini dans la matrice) aux donnees
// et arguments // et arguments
function filtrer($filtre) { function filtrer($filtre) {
...@@ -45,19 +47,13 @@ function entites_html($texte) { ...@@ -45,19 +47,13 @@ function entites_html($texte) {
// Transformer les é dans le charset local // Transformer les é dans le charset local
function filtrer_entites($texte) { function filtrer_entites($texte) {
include_spip('inc/charsets'); # include_spip('inc/charsets');
// filtrer // filtrer
$texte = html2unicode($texte); $texte = html2unicode($texte);
// remettre le tout dans le charset cible // remettre le tout dans le charset cible
return unicode2charset($texte); return unicode2charset($texte);
} }
// Tout mettre en entites pour l'export backend (sauf iso-8859-1)
function entites_unicode($texte) {
include_spip('inc/charsets');
return charset2unicode($texte);
}
// caracteres de controle - http://www.w3.org/TR/REC-xml/#charsets // caracteres de controle - http://www.w3.org/TR/REC-xml/#charsets
function supprimer_caracteres_illegaux($texte) { function supprimer_caracteres_illegaux($texte) {
$from = "\x0\x1\x2\x3\x4\x5\x6\x7\x8\xB\xC\xE\xF\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"; $from = "\x0\x1\x2\x3\x4\x5\x6\x7\x8\xB\xC\xE\xF\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F";
...@@ -101,11 +97,6 @@ function corriger_caracteres ($texte) { ...@@ -101,11 +97,6 @@ function corriger_caracteres ($texte) {
return $texte; return $texte;
} }
function translitterer_caracteres ($texte, $charset='AUTO', $complex='') {
include_spip('inc/charsets');
return translitteration(corriger_caracteres($texte), $charset, $complexe);
}
// Encode du HTML pour transmission XML // Encode du HTML pour transmission XML
function texte_backend($texte) { function texte_backend($texte) {
...@@ -126,7 +117,7 @@ function texte_backend($texte) { ...@@ -126,7 +117,7 @@ function texte_backend($texte) {
$texte = entites_html($texte); $texte = entites_html($texte);
// verifier le charset // verifier le charset
$texte = entites_unicode($texte); $texte = charset2unicode($texte);
// Caracteres problematiques en iso-latin 1 // Caracteres problematiques en iso-latin 1
if ($GLOBALS['meta']['charset'] == 'iso-8859-1') { if ($GLOBALS['meta']['charset'] == 'iso-8859-1') {
...@@ -194,7 +185,7 @@ function PtoBR($texte){ ...@@ -194,7 +185,7 @@ function PtoBR($texte){
function lignes_longues($texte, $l = 70) { function lignes_longues($texte, $l = 70) {
// Passer en utf-8 pour ne pas avoir de coupes trop courtes avec les &#xxxx; // Passer en utf-8 pour ne pas avoir de coupes trop courtes avec les &#xxxx;
// qui prennent 7 caracteres // qui prennent 7 caracteres
include_spip('inc/charsets'); #include_spip('inc/charsets');
$texte = unicode_to_utf_8(charset2unicode( $texte = unicode_to_utf_8(charset2unicode(
$texte, $GLOBALS['meta']['charset'], true)); $texte, $GLOBALS['meta']['charset'], true));
...@@ -652,7 +643,7 @@ function style_align($bof) { ...@@ -652,7 +643,7 @@ function style_align($bof) {
// //
function filtrer_ical($texte) { function filtrer_ical($texte) {
include_spip('inc/charsets'); #include_spip('inc/charsets');
$texte = html2unicode($texte); $texte = html2unicode($texte);
$texte = unicode2charset(charset2unicode($texte, $GLOBALS['meta']['charset'], 1), 'utf-8'); $texte = unicode2charset(charset2unicode($texte, $GLOBALS['meta']['charset'], 1), 'utf-8');
$texte = ereg_replace("\n", " ", $texte); $texte = ereg_replace("\n", " ", $texte);
...@@ -2569,4 +2560,8 @@ function form_hidden($action) { ...@@ -2569,4 +2560,8 @@ function form_hidden($action) {
return $hidden; return $hidden;
} }
### fonction depreciee, laissee ici pour compat ascendante 1.9
function entites_unicode($texte) { return charset2unicode($texte); }
?> ?>
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
if (!defined("_ECRIRE_INC_VERSION")) return; if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/filtres'); include_spip('inc/filtres');
include_spip('inc/charsets');
include_spip('inc/lang');
// Verifier les variables de personnalisation // Verifier les variables de personnalisation
tester_variable('debut_intertitre', "\n<h3 class=\"spip\">"); tester_variable('debut_intertitre', "\n<h3 class=\"spip\">");
...@@ -37,7 +39,7 @@ function definir_puce() { ...@@ -37,7 +39,7 @@ function definir_puce() {
// Attention au sens, qui n'est pas defini de la meme facon dans // Attention au sens, qui n'est pas defini de la meme facon dans
// l'espace prive (spip_lang est la langue de l'interface, lang_dir // l'espace prive (spip_lang est la langue de l'interface, lang_dir
// celle du texte) et public (spip_lang est la langue du texte) // celle du texte) et public (spip_lang est la langue du texte)
include_spip('inc/lang'); #include_spip('inc/lang');
$dir = _DIR_RESTREINT ? $dir = _DIR_RESTREINT ?
lang_dir($GLOBALS['spip_lang']) : $GLOBALS['lang_dir']; lang_dir($GLOBALS['spip_lang']) : $GLOBALS['lang_dir'];
$p = ($dir == 'rtl') ? 'puce_rtl' : 'puce'; $p = ($dir == 'rtl') ? 'puce_rtl' : 'puce';
...@@ -199,37 +201,6 @@ function echappe_retour($letexte, $source='') { ...@@ -199,37 +201,6 @@ function echappe_retour($letexte, $source='') {
} }
//
// Gerer les outils mb_string
//
function spip_substr($c, $start=0, $end='') {
include_spip('inc/charsets');
if (init_mb_string()) {
if ($end)
return mb_substr($c, $start, $end);
else
return mb_substr($c, $start);
}
// methode substr normale
else {
if ($end)
return substr($c, $start, $end);
else
return substr($c, $start);
}
}
function spip_strlen($c) {
include_spip('inc/charsets');
if (init_mb_string())
return mb_strlen($c);
else
return strlen($c);
}
// fin mb_string
function couper($texte, $taille=50) { function couper($texte, $taille=50) {
$texte = substr($texte, 0, 400 + 2*$taille); /* eviter de travailler sur 10ko pour extraire 150 caracteres */ $texte = substr($texte, 0, 400 + 2*$taille); /* eviter de travailler sur 10ko pour extraire 150 caracteres */
...@@ -386,7 +357,7 @@ function typo_fr($letexte) { ...@@ -386,7 +357,7 @@ function typo_fr($letexte) {
); );
$chars = array(160 => '~', 187 => '&#187;', 171 => '&#171;', 148 => '&#148;', 147 => '&#147;', 176 => '&#176;'); $chars = array(160 => '~', 187 => '&#187;', 171 => '&#171;', 148 => '&#148;', 147 => '&#147;', 176 => '&#176;');
include_spip('inc/charsets'); #include_spip('inc/charsets');
while (list($c, $r) = each($chars)) { while (list($c, $r) = each($chars)) {
$c = unicode2charset(charset2unicode(chr($c), 'iso-8859-1', 'forcer')); $c = unicode2charset(charset2unicode(chr($c), 'iso-8859-1', 'forcer'));
$trans[$c] = $r; $trans[$c] = $r;
...@@ -494,7 +465,7 @@ function typo($letexte, $echapper=true) { ...@@ -494,7 +465,7 @@ function typo($letexte, $echapper=true) {
// un texte anglais en interface francaise (ou l'inverse) ; // un texte anglais en interface francaise (ou l'inverse) ;
// sinon determiner la typo en fonction de la langue // sinon determiner la typo en fonction de la langue
if (!$lang = $GLOBALS['lang_typo']) { if (!$lang = $GLOBALS['lang_typo']) {
include_spip('inc/lang'); #include_spip('inc/lang');
$lang = lang_typo($GLOBALS['spip_lang']); $lang = lang_typo($GLOBALS['spip_lang']);
} }
if ($lang == 'fr') if ($lang == 'fr')
......
...@@ -74,51 +74,30 @@ function include_fonction($nom, $dossier='exec') { ...@@ -74,51 +74,30 @@ function include_fonction($nom, $dossier='exec') {
// une fonction remplacant include_ecrire, et autorisant les surcharges // une fonction remplacant include_ecrire, et autorisant les surcharges
// //
function include_spip($f, $include = true) { function include_spip($f, $include = true) {
static $included_files = array();
// deja charge (nom) ? // deja charge (nom) ?
if (isset($included_files[$f])) if (isset($GLOBALS['meta']['noyau'][_DIR_RESTREINT][$f])) {
return $included_files[$f]; $s = $GLOBALS['meta']['noyau'][_DIR_RESTREINT][$f];
if ($include && $s) {
include_once $s;
}
return $s;
}
// Hack pour pouvoir appeler cette fonction depuis mes_options. // Hack pour pouvoir appeler cette fonction depuis mes_options.
define('_DIR_INCLUDE', _DIR_RESTREINT); define('_DIR_INCLUDE', _DIR_RESTREINT);
if (!$s = find_in_path($f . '.php')
// chercher le fichier dans le chemin (eventuellement, surcharge)
// est-ce dans les chemins du noyau (optimises) ?
if (_DIR_RESTREINT) {
if (isset($GLOBALS['meta']['noyau'][$f])) {
$s = $GLOBALS['meta']['noyau'][$f];
if (!$s) return false;
}
// sinon on se souvient qu'il faudra ecrire le noyau dans public/global
else
define('ecrire_noyau', 1);
}
if (!isset($s)
AND !$s = find_in_path($f . '.php')
AND (!_EXTENSION_PHP OR !$s = find_in_path($f . '.php3'))) { AND (!_EXTENSION_PHP OR !$s = find_in_path($f . '.php3'))) {
if (_DIR_RESTREINT) return $GLOBALS['meta']['noyau'][_DIR_RESTREINT][$f] = false;
$GLOBALS['meta']['noyau'][$f] = false;
return $included_files[$f] = false;
} }
// deja charge (chemin complet) ? $GLOBALS['meta']['noyau'][_DIR_RESTREINT][$f] = $s;
if (isset($included_files[$s])) { define('ecrire_noyau', 1);
if (_DIR_RESTREINT)
$GLOBALS['meta']['noyau'][$f] = $included_files[$s];
return $included_files[$f] = $included_files[$s];
}
else {
if (_DIR_RESTREINT)
$GLOBALS['meta']['noyau'][$f] = $s;
$included_files[$f] = $included_files[$s] = $s;
}
// alors on le charge (sauf si on ne voulait que son chemin) // alors on le charge (sauf si on ne voulait que son chemin)
if ($include) { if ($include) {
include($s); include_once $s;
} }
return $s; return $s;
...@@ -450,17 +429,19 @@ function lire_meta($nom) { ...@@ -450,17 +429,19 @@ function lire_meta($nom) {
// Traduction des textes de SPIP // Traduction des textes de SPIP
// //
function _T($texte, $args = '') { function _T($texte, $args = '') {
include_spip('inc/lang'); # petite optimisation pour ne passer qu'une fois dans include_spip
static $c; $c OR $c = include_spip('inc/lang');
$text = traduire_chaine($texte, $args); $text = traduire_chaine($texte, $args);
if (!empty($GLOBALS['xhtml'])) { if (!empty($GLOBALS['xhtml'])) {
include_spip('inc/charsets'); include_spip('inc/charsets');
$text = html2unicode($text, true /* secure */); $text = html2unicode($text, true /* secure */);
} }
return $text ? $text : return $text ? $text :
// pour les chaines non traduites // pour les chaines non traduites
(($n = strpos($texte,':')) === false ? $texte : (($n = strpos($texte,':')) === false ? $texte :
substr($texte, $n+1)); substr($texte, $n+1));
} }
// chaines en cours de traduction // chaines en cours de traduction
......
...@@ -169,7 +169,9 @@ if (!isset($reinstall)) { ...@@ -169,7 +169,9 @@ if (!isset($reinstall)) {
// //
// Controle d'interruption d'une longue restauration // Controle d'interruption d'une longue restauration
// //
if ($GLOBALS['_COOKIE']['spip_admin'] AND $GLOBALS['meta']["debut_restauration"]) if ($GLOBALS['_COOKIE']['spip_admin']
AND $GLOBALS['meta']["debut_restauration"]
AND !($exec=='js_menu_rubriques'))
$exec = 'import_all'; $exec = 'import_all';
$var_f = include_fonction($exec); $var_f = include_fonction($exec);
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter