$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