$tab[0][1][] = cs_code_echappement("$espace", 'SMILE');
$tab[0][2][] = $file;
$tab['racc'][] = $smy;
// pour le porte-plume
$tab[0][4]['smiley_'.$img] = $file;
}
// cette fonction appelee automatiquement a chaque affichage de la page privee du Couteau Suisse renvoie un tableau
function smileys_installe_dist($tab = array(0 => array(), 'racc' => array())) {
// l'ordre des smileys ici est important :
// - les doubles, puis les simples, puis les courts
// - le raccourci insere par la balise #SMILEYS est la premiere occurence de chaque fichier
$smileys = array(
// attention ' est different de ’ (’) (SPIP utilise/ecrit ce dernier)
":’-))"=> 'pleure_de_rire',
":’-)"=> 'pleure_de_rire',
":’-D" => 'pleure_de_rire',
":’-(" => 'triste',
// les doubles :
':-))' => 'mort_de_rire',
':))' => 'mort_de_rire',
":'-))"=> 'pleure_de_rire',
':-((' => 'en_colere',
// les simples :
';-)' => 'clin_d-oeil',
':-)' => 'sourire',
':-D' => 'mort_de_rire',
":'-)"=> 'pleure_de_rire',
":'-D" => 'pleure_de_rire',
':-(' => 'pas_content',
":'-(" => 'triste',
':->' => 'diable',
'|-)' => 'rouge',
':o)' => 'rigolo',
'B-)' => 'lunettes',
':-P' => 'tire_la_langue',
':-p' => 'tire_la_langue',
':-|' => 'bof',
':-/' => 'mouais',
':-O' => 'surpris',
':-o' => 'surpris',
// les courts : tester a l'usage...
// attention : ils ne sont reconnus que s'il y a un espace avant !
':)' => 'sourire',
':(' => 'pas_content',
';)' => 'clin_d-oeil',
':|' => 'bof',
'|)' => 'rouge',
':/' => 'mouais',
);
foreach ($smileys as $smy=>$val)
compile_smiley($tab, $smy, $val);
return $tab;
}
// liste des nouveaux raccourcis ajoutes par l'outil
// si cette fonction n'existe pas, le plugin cherche alors _T('couteauprive:un_outil:aide');
function smileys_raccourcis() {
$racc = cs_lire_data_outil('smileys', 'racc');
return _T('couteauprive:smileys:aide', array('liste' => ''.join(', ', $racc).''));
}
function smileys_echappe_balises_callback($matches) {
return cs_code_echappement($matches[1], 'SMILE');
}
// fonction de remplacement
// les balises suivantes sont protegees : html|code|cadre|frame|script|acronym|cite
function cs_rempl_smileys($texte) {
if (strpos($texte, ':')===false && strpos($texte, ')')===false) return $texte;
$smileys_rempl = cs_lire_data_outil('smileys');
// protection des images, on ne sait jamais...
$texte = preg_replace_callback(',(
),ms', 'smileys_echappe_balises_callback', $texte);
// smileys a probleme :
$texte = str_replace(':->', ':->', $texte); // remplacer > par >
// remplacer ’ (apostrophe curly) par ’
$texte = str_replace(':’-', ':’-', $texte);
$texte = str_replace(':'.chr(146).'-', ':’-', $texte);
// voila, on remplace tous les smileys d'un coup...
$texte = str_replace($smileys_rempl[0], $smileys_rempl[1], $texte);
return echappe_retour($texte, 'SMILE');
}
// fonction principale (pipeline pre_typo)
function cs_smileys_pre_typo($texte) {
if (strpos($texte, ':')===false && strpos($texte, ')')===false) return $texte;
// appeler cs_rempl_smileys() une fois que certaines balises ont ete protegees
return cs_echappe_balises('html|code|cadre|frame|script|acronym|cite', 'cs_rempl_smileys', $texte);
}
// fonction qui renvoie un tableau de smileys uniques
function smileys_uniques($smileys) {
$max = count($smileys[1]);
$new = array(array(), array(), array());
for ($i=0; $i<$max; $i++) {
if(!in_array($smileys[2][$i], $new[2])) {
$new[0][] = $smileys[0][$i]; // texte
$new[1][] = $smileys[1][$i]; // image
$new[2][] = $smileys[2][$i]; // nom de fichier
}
}
return $new;
}
// cette fonction renvoie une ligne de tableau entre