本文整理汇总了PHP中extraire_multi函数的典型用法代码示例。如果您正苦于以下问题:PHP extraire_multi函数的具体用法?PHP extraire_multi怎么用?PHP extraire_multi使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了extraire_multi函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: spip_avant_typo
function spip_avant_typo($letexte)
{
$letexte = extraire_multi($letexte);
if (@function_exists('avant_typo')) {
return avant_typo($letexte);
}
return $letexte;
}
示例2: url_nettoyer
function url_nettoyer($titre,$longueur_maxi,$longueur_min=0,$separateur='-',$filtre=''){
if (!defined('_TRANSLITTERER_URL')) define('_TRANSLITTERER_URL', true);
$titre = supprimer_tags(supprimer_numero(extraire_multi($titre)));
$url = corriger_caracteres($titre);
if (_TRANSLITTERER_URL) $url = translitteration($url);
if ($filtre)
$url = $filtre($url);
// on va convertir tous les caracteres de ponctuation et espaces
// a l'exception de l'underscore (_), car on veut le conserver dans l'url
$url = str_replace('_', chr(7), $url);
$url = @preg_replace(',[[:punct:][:space:]]+,u', ' ', $url);
$url = str_replace(chr(7), '_', $url);
// S'il reste trop de caracteres non latins, les gerer comme wikipedia
// avec rawurlencode :
if (_TRANSLITTERER_URL && preg_match_all(",[^a-zA-Z0-9 _]+,", $url, $r, PREG_SET_ORDER)) {
foreach ($r as $regs) {
$url = substr_replace($url, rawurlencode($regs[0]),
strpos($url, $regs[0]), strlen($regs[0]));
}
}
// S'il reste trop peu, renvoyer vide
if (strlen($url) < $longueur_min)
return '';
// Sinon couper les mots et les relier par des $separateur
if (_TRANSLITTERER_URL) $mots = preg_split(",[^a-zA-Z0-9_%]+,", $url);
else $mots = preg_split(",[\s]+,", $url);
$url = '';
foreach ($mots as $mot) {
if (!strlen($mot)) continue;
$url2 = $url.$separateur.$mot;
// Si on depasse $longueur_maxi caracteres, s'arreter
// ne pas compter 3 caracteres pour %E9 mais un seul
$long = preg_replace(',%.,', '', $url2);
if (strlen($long) > $longueur_maxi) {
break;
}
$url = $url2;
}
$url = substr($url, 1);
// On enregistre en utf-8 dans la base
$url = rawurldecode($url);
if (strlen($url) < $longueur_min)
return '';
return $url;
}
示例3: couper_intro3
function couper_intro3($texte, $long, $suite) {
$texte = extraire_multi(preg_replace(",(</?)intro>,i", "\\1intro>", $texte)); // minuscules
$intro = '';
while ($fin = strpos($texte, "</intro>")) {
$zone = substr($texte, 0, $fin);
$texte = substr($texte, $fin + strlen("</intro>"));
if ($deb = strpos($zone, "<intro>") OR substr($zone, 0, 7) == "<intro>")
$zone = substr($zone, $deb + 7);
$intro .= $zone;
}
$texte = nettoyer_raccourcis_typo($intro ? $intro : $texte);
return PtoBR(traiter_raccourcis(preg_replace(',([|]\s*)+,S', '; ', couper($texte, $long, _INTRODUCTION_CODE))));
}
示例4: balise_ECATALOGUE_PRODUCT_CURRENCY_SIGN_dyn
function balise_ECATALOGUE_PRODUCT_CURRENCY_SIGN_dyn($id_article, $sign = 'sign_pre')
{
require_once _DIR_PLUGIN_ECATALOGUE . 'classes/class.CurrencyModel.php';
$currency_mdl = new CurrencyModel();
// If some exceptions are thrown - return empty value
try {
$sign = $currency_mdl->GetCurrencySignByIdArticle($id_article, $sign);
} catch (Exception $e) {
$sign = '';
}
include_spip('inc/filtres');
$sign = extraire_multi($sign);
return array('balise/ecatalogue_product_currency_sign', 0, array('sign' => $sign));
}
示例5: formulaires_ecrire_auteur_traiter_dist
function formulaires_ecrire_auteur_traiter_dist($id_auteur, $id_article, $mail)
{
$adres = _request('email_message_auteur');
$sujet = _request('sujet_message_auteur');
$texte = _request('texte_message_auteur');
$texte .= "\n\n-- " . _T('envoi_via_le_site') . " " . supprimer_tags(extraire_multi($GLOBALS['meta']['nom_site'])) . " (" . $GLOBALS['meta']['adresse_site'] . "/) --\n";
$envoyer_mail = charger_fonction('envoyer_mail', 'inc');
if ($envoyer_mail($mail, $sujet, $texte, $adres, "X-Originating-IP: " . $GLOBALS['ip'])) {
$message['message_ok'] = _T('form_prop_message_envoye');
} else {
$message['message_erreur'] = _T('pass_erreur_probleme_technique');
}
return $message;
}
示例6: geol_formulaire_charger
/**
* Insertion dans le pipeline formulaire_charger (SPIP)
*
* Surcharge du sujet et le texte du message généré par le formulaire_ecrire_auteur
* Surcharge du formulaire d'inscription pour ne pas afficher l'explication
*
* @param array $flux
* @return array $flux
*/
function geol_formulaire_charger($flux)
{
// sujet perso pour formulaire_ecrire_auteur depuis une page article (erreur de localisation)
if ($flux['args']['form'] == 'ecrire_auteur' and $flux['args']['args'][1] != '') {
$flux['data']['sujet_message_auteur'] .= supprimer_tags(extraire_multi($GLOBALS['meta']['nom_site'])) . " : " . _T('geol:sujet_erreur_localisation');
$flux['data']['texte_message_auteur'] .= _T('geol:depuis_page') . " : " . generer_url_entite_absolue($flux['args']['args'][1], 'article') . "\n\nMessage :\n\n";
}
// pas d'explicaltion sur le form d'inscription
if ($flux['args']['form'] == 'inscription' and $flux['args']['args'][0] == '1comite') {
$flux['data']['_commentaire'] = '';
}
// limiter le form de polyhierarchie sur la branche des categories (dans le public)
// cf http://zone.spip.org/trac/spip-zone/changeset/41280
if ($flux['args']['form'] == 'editer_polyhierarchie' and !test_espace_prive()) {
$flux['data']['limite_branche'] = lire_config('geol/secteur_categories', 2);
}
return $flux;
}
示例7: balise_ECATALOGUE_CURRENCY_SIGN_dyn
function balise_ECATALOGUE_CURRENCY_SIGN_dyn($currency_code = false, $sign = 'sign_pre')
{
require_once _DIR_PLUGIN_ECATALOGUE . 'classes/class.CurrencyModel.php';
$currency_mdl = new CurrencyModel();
// If $currency_code isn't defined, current currency sign will be returned
if (!$currency_code) {
$currency = $currency_mdl->GetCurrentCurrency();
} else {
$currency = $currency_mdl->SelectByCode($currency_code);
}
//$sign = $currency[$sign];
include_spip('inc/filtres');
if ($currency) {
$sign = extraire_multi($currency[$sign]);
} else {
$sign = '';
}
return array('balise/ecatalogue_currency_sign', 0, array('sign' => $sign));
}
示例8: glossaire_verifie
function glossaire_verifie(&$c) {
include_spip('public/parametrer'); // pour mes_fonctions
$res = array();
$c = count($gloss = glossaire_query_tab());
for($i=0; $i<$c; $i++) for($j=$i+1; $j<$c; $j++) {
$gi = &$gloss[$i]; $gj = &$gloss[$j];
if(!isset($gi['mots']))
list($gi['mots'],$gi['regs'],$gi['titre2']) = glossaire_parse(extraire_multi($gi['titre']));
if(!isset($gj['mots']))
list($gj['mots'],$gj['regs'],$gj['titre2']) = glossaire_parse(extraire_multi($gj['titre']));
$u = false;
$titre = $gi['mots']?glossaire_gogogo($gj['titre2'], $gi['mots'], -1, $u):'';
if(count($gi['regs']))
$titre .= preg_replace_callback($gi['regs'], "glossaire_echappe_mot_callback", $gj[titre], -1);
if(strpos($titre,'@@GLOSS')!==false) {
$a = '['.$gi['titre'].'->mot'.$gi['id_mot'].']';
$b = '['.$gj['titre'].'->mot'.$gj['id_mot'].']';
$res[] = "• "._T('couteauprive:glossaire_erreur', array('mot1'=>$a, 'mot2'=>$b))."\n_ ";
}
}
if(count($res)) return propre(join('', $res)._T('couteauprive:glossaire_inverser'));
return '';
}
示例9: afficher_forum_auteur
function afficher_forum_auteur($row)
{
$titre=$row['titre'];
$id_auteur=$row["id_auteur"];
$date_heure=$row['date_heure'];
$email_auteur=$row['email_auteur'];
$auteur= extraire_multi($row['auteur']);
if ($id_auteur) {
$formater_auteur = charger_fonction('formater_auteur', 'inc');
$res = join(' ',$formater_auteur($id_auteur));
} else {
if ($email_auteur) {
if (email_valide($email_auteur))
$email_auteur = "<a href='mailto:"
.htmlspecialchars($email_auteur)
."?subject=".rawurlencode($titre)."'>".$email_auteur
."</a>";
$auteur .= " — $email_auteur";
}
$res = safehtml("<span class='arial2'> / <b>$auteur</b></span>");
}
return "<div style='font-weight: normal;'>"
. date_interface($date_heure)
. " $res</div>";
}
示例10: formulaires_forum_charger_dist
function formulaires_forum_charger_dist(
$titre, $table, $type, $script,
$id_rubrique, $id_forum, $id_article, $id_breve, $id_syndic,
$ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) {
// exiger l'authentification des posteurs pour les forums sur abo
if ($type == "abo") {
if (!$GLOBALS["visiteur_session"]['statut']) {
return array(
'action' => '', #ne sert pas dans ce cas, on la vide pour mutualiser le cache
'editable'=>false,
'login_forum_abo'=>' ',
'inscription' => generer_url_public('identifiants', 'lang='.$GLOBALS['spip_lang']),
'oubli' => generer_url_public('spip_pass','lang='.$GLOBALS['spip_lang'],true),
);
}
}
// Tableau des valeurs servant au calcul d'une signature de securite.
// Elles seront placees en Input Hidden pour que inc/forum_insert
// recalcule la meme chose et verifie l'identite des resultats.
// Donc ne pas changer la valeur de ce tableau entre le calcul de
// la signature et la fabrication des Hidden
// Faire attention aussi a 0 != ''
// id_rubrique est parfois passee pour les articles, on n'en veut pas
$ids = array();
if ($id_rubrique > 0 AND ($id_article OR $id_breve OR $id_syndic))
$id_rubrique = 0;
foreach (array('id_article', 'id_breve', 'id_forum', 'id_rubrique', 'id_syndic') as $o) {
$ids[$o] = ($x = intval($$o)) ? $x : '';
}
// ne pas mettre '', sinon le squelette n'affichera rien.
$previsu = ' ';
// au premier appel (pas de Post-var nommee "retour_forum")
// memoriser eventuellement l'URL de retour pour y revenir apres
// envoi du message ; aux appels suivants, reconduire la valeur.
// Initialiser aussi l'auteur
if ($retour_forum = rawurldecode(_request('retour')))
$retour_forum = str_replace('&var_mode=recalcul','',$retour_forum);
else {
// par defaut, on veut prendre url_forum(), mais elle ne sera connue
// qu'en sortie, on inscrit donc une valeur absurde ("!")
$retour_forum = "!";
// sauf si on a passe un parametre en argument (exemple : {#SELF})
if ($url_param_retour)
$retour_forum = str_replace('&', '&', $url_param_retour);
$retour_forum = rawurlencode($retour_forum);
}
if (_request('retour_forum')){
$arg = forum_fichier_tmp(join('', $ids));
$securiser_action = charger_fonction('securiser_action', 'inc');
// on sait que cette fonction est dans le fichier associe
$hash = calculer_action_auteur("ajout_forum-$arg");
}
// pour les hidden
$script_hidden = "";
foreach ($ids as $id => $v)
$script_hidden .= "<input type='hidden' name='$id' value='$v' />";
$script_hidden .= "<input type='hidden' name='arg' value='$arg' />";
$script_hidden .= "<input type='hidden' name='hash' value='$hash' />";
$script_hidden .= "<input type='hidden' name='verif_".substr($hash,0,32)."' value='ok' />";
$script_hidden .= "<input type='hidden' name='afficher_texte' value='$afficher_texte' />";
$script_hidden .= "<input type='hidden' name='retour_forum' value='$retour_forum' />";
// l'ajout de documents est-il autorise ?
// cf. verifier.php
if ($formats = forum_documents_acceptes()) {
include_spip('inc/securiser_action');
$cle_ajouter_document = calculer_cle_action('ajouter-document-'.join('-',array_map('intval',$ids)));
}
return array(
'modere' => (($type != 'pri') ? '' : ' '),
'nom_site' => '',
'table' => $table,
'texte' => '',
'config' => array('afficher_barre' => ($GLOBALS['meta']['forums_afficher_barre']!='non'?' ':'')),
'titre' => str_replace('~', ' ', extraire_multi($titre)),
'action' => $script, # ce sur quoi on fait le action='...'
'_hidden' => $script_hidden, # pour les variables hidden
'url_site' => "http://",
'cle_ajouter_document' => $cle_ajouter_document,
'formats_documents_forum' => $formats,
'ajouter_document' => $_FILES['ajouter_document']['name'],
'nobot' => _request('nobot'),
'ajouter_groupe' => $ajouter_groupe,
'ajouter_mot' => (is_array($ajouter_mot) ? $ajouter_mot : array($ajouter_mot)),
'id_forum' => $id_forum, // passer id_forum au formulaire pour lui permettre d'afficher a quoi l'internaute repond
'_sign'=>implode('_',$ids)
);
}
示例11: cs_rempl_glossaire
function cs_rempl_glossaire($texte, $liste=false) {
global $gloss_id, $gloss_mots, $gloss_mots_id, $gloss_ech, $gloss_ech_id;
// si [!glossaire] est trouve on sort
if(strpos($texte, _CS_SANS_GLOSSAIRE)!==false)
return $liste?array():str_replace(_CS_SANS_GLOSSAIRE, '', $texte);
// mise en static de la table des mots pour eviter d'interrroger la base a chaque fois
// attention aux besoins de memoire...
static $limit, $glossaire_generer_url, $glossaire_generer_mot, $glossaire_array = NULL;
if(!isset($glossaire_array)) {
$glossaire_array = glossaire_query_tab();
$glossaire_generer_url = function_exists('glossaire_generer_url')?'glossaire_generer_url':'glossaire_generer_url_dist';
$limit = defined('_GLOSSAIRE_LIMITE')?_GLOSSAIRE_LIMITE:-1;
$glossaire_generer_mot = function_exists('glossaire_generer_mot')
?'glossaire_generer_mot(\'\\2\', $GLOBALS[\'gloss_mots\'][\\1])':'$GLOBALS[\'gloss_mots\'][\\1]'; // 'glossaire_generer_mot_dist(\'\\2\', $GLOBALS[\'gloss_mots\'][\\1])';
$glossaire_generer_mot = '"<a $table1[\\2]_".$GLOBALS["gl_i"]++."\' class=\'cs_glossaire\'><span class=\'gl_mot\'>".'.$glossaire_generer_mot.'."</span>$table2[\\2]</a>"';
}
$unicode = false;
$mem = $GLOBALS['toujours_paragrapher'];
$GLOBALS['toujours_paragrapher'] = false;
// initialisation des globales d'echappement
$gloss_ech = $gloss_mots = array();
$gloss_ech_id = $gloss_mots_id = 0;
// prudence 1 : protection des liens SPIP
if (strpos($texte, '[')!==false)
$texte = preg_replace_callback(',\[[^][]*->>?[^]]*\],msS', 'glossaire_echappe_balises_callback', $texte);
// parcours de tous les mots, sauf celui qui peut faire partie du contexte (par ex : /spip.php?mot5)
$mot_contexte=$GLOBALS['contexte']['id_mot']?$GLOBALS['contexte']['id_mot']:_request('id_mot');
foreach ($glossaire_array as $mot) if (($gloss_id = $mot['id_mot']) <> $mot_contexte) {
// parser le mot-cle du glossaire
// contexte de langue a prendre en compte ici
list($les_mots, $les_regexp, $les_titres) = glossaire_parse($titre=extraire_multi($mot['titre']));
$mot_present = false;
if(count($les_regexp)) {
// a chaque expression reconnue, on pose une balise temporaire cryptee
// ce remplacement est puissant, attention aux balises HTML ; par exemple, eviter : ,div,i
$texte = preg_replace_callback($les_regexp, "glossaire_echappe_mot_callback", $texte, $limit);
// TODO 1 : sous PHP 5.0, un parametre &$count permet de savoir si un remplacement a eu lieu
// et s'il faut construire la fenetre de glossaire.
// TODO 2 : decrementer le parametre $limit pour $les_mots, si &$count est renseigne.
// en attendant, constuisons qd meme la fenetre...
$mot_present = true;
}
if($les_mots) {
if(preg_match(",\W(?:$les_mots)\W,i", " $texte ")) {
$texte = glossaire_gogogo($texte, $les_mots, $limit, $unicode);
$mot_present = true;
}
}
// si un mot est trouve, on construit la fenetre de glossaire
if($mot_present) {
$lien = $glossaire_generer_url($gloss_id, $titre);
// $definition =strlen($mot['descriptif'])?$mot['descriptif']:$mot['texte'];
if($liste)
$table1[$gloss_id] = array($gloss_id, $lien, $les_titres);
else {
$table1[$gloss_id] = "href='$lien' name='mot$gloss_id"; // name est complete plus tard pour eviter les doublons
$table2[$gloss_id] = recuperer_fond(
defined('_GLOSSAIRE_JS')?'fonds/glossaire_js':'fonds/glossaire_css',
array('id_mot' => $gloss_id, 'titre' => $les_titres,
'texte' => glossaire_safe($mot['texte']),
'descriptif' => glossaire_safe($mot['descriptif'])));
}
}
}
$GLOBALS['toujours_paragrapher'] = $mem;
$GLOBALS['gl_i'] = 0;
if($liste) $texte = (preg_match_all(',@@M(\d+)#(\d+)@@,', $texte, $reg, PREG_SET_ORDER)
&& array_walk($reg,
create_function('&$v,$k,&$t1', '$v=array_merge(array($GLOBALS[\'gloss_mots\'][$v[1]]),$t1[$v[2]]);'), $table1)
)?$reg:array();
else {
// remplacement des echappements
$texte = preg_replace(',@@E(\d+)@@,e', '$GLOBALS[\'gloss_ech\'][\\1]', $texte);
// remplacement final des balises posees ci-dessus
$texte = preg_replace(',@@M(\d+)#(\d+)@@,e', $glossaire_generer_mot, $texte);
}
// nettoyage
unset($gloss_id, $gloss_mots, $gloss_mots_id, $gloss_ech, $gloss_ech_id);
return $texte;
}
示例12: infos_courtes
/**
* Récupérer les infos utiles des paquet
*
* Crée un tableau de description pour chaque paquet dans une
* écriture courte comme index ('i' pour identifiant) tel que :
* - i = identifiant
* - p = prefixe (en majuscule)
* - n = nom du plugin
* - v = version
* - e = etat
* - a = actif
* - du = dépendances utilise
* - dn = dépendances nécessite
* - dl = dépendances librairie
* - procure = prefixes procurés
* - maj = mise à jour
*
*
* On passe un where ($condition) et on crée deux tableaux, l'un des paquets
* triés par identifiant, l'autre par prefixe.
*
* @param array|string $condition
* Condition where
* @param bool $multiple
* Si multiple, le tableau par préfixe est un sous-tableau (il peut alors
* y avoir plusieurs paquets pour un même prefixe, classés par états décroissants)
* @return array
* Index 'i' : plugins triés par identifiant en base [i][32] = tableau de description
* Index 'p' : plugins triés par prefixe de plugin [p][MOTS] = tableau de description
* ou, avec $multiple=true : [p][MOTS][] = tableau de description
*/
public function infos_courtes($condition, $multiple = false)
{
$plugs = array('i' => array(), 'p' => array());
$from = array('spip_paquets AS pa', 'spip_plugins AS pl');
$orderby = $multiple ? 'pa.etatnum DESC' : '';
$where = array('pa.id_plugin = pl.id_plugin');
if (is_array($condition)) {
$where = array_merge($where, $condition);
} else {
$where[] = $condition;
}
include_spip('inc/filtres');
// extraire_multi()
$res = sql_allfetsel(array('pa.id_paquet AS i', 'pl.nom AS n', 'pl.prefixe AS p', 'pa.version AS v', 'pa.etatnum AS e', 'pa.compatibilite_spip', 'pa.dependances', 'pa.procure', 'pa.id_depot', 'pa.maj_version AS maj', 'pa.actif AS a'), $from, $where, '', $orderby);
foreach ($res as $r) {
$r['p'] = strtoupper($r['p']);
// on s'assure du prefixe en majuscule.
// savoir si un paquet est en local ou non...
$r['local'] = $r['id_depot'] == 0 ? true : false;
unset($r['id_depot']);
$d = unserialize($r['dependances']);
// voir pour enregistrer en bdd simplement 'n' et 'u' (pas la peine d'encombrer)...
$deps = array('necessite' => array(array()), 'utilise' => array(array()), 'librairie' => array(array()));
if (!$d) {
$d = $deps;
}
unset($r['dependances']);
if (!$r['procure'] or !($proc = unserialize($r['procure']))) {
$proc = array();
}
$r['procure'] = $proc;
/*
* On extrait les multi sur le nom du plugin
*/
$r['n'] = extraire_multi($r['n']);
$plugs['i'][$r['i']] = $r;
// pour chaque type de dependences... (necessite, utilise, librairie)
// on cree un tableau unique [$dependence] = array()
// au lieu de plusieurs tableaux par version de spip
// en ne mettant dans 0 que ce qui concerne notre spip local
foreach ($deps as $cle => $defaut) {
if (!isset($d[$cle])) {
$d[$cle] = $defaut;
}
// gerer les dependences autres que dans 0 (communs ou local) !!!!
// il peut exister des cles info[dn]["[version_spip_min;version_spip_max]"] de dependences
if (!isset($d[$cle][0]) or count($d[$cle]) > 1) {
$dep = array();
$dep[0] = isset($d[$cle][0]) ? $d[$cle][0] : array();
unset($d[$cle][0]);
foreach ($d[$cle] as $version => $dependences) {
if (svp_verifier_compatibilite_spip($version)) {
$dep = array_merge($dep[0], $dependences);
}
}
$d[$cle] = $dep;
}
}
// passer les prefixes en majuscule
foreach ($d['necessite'][0] as $i => $n) {
$d['necessite'][0][$i]['nom'] = strtoupper($n['nom']);
}
$plugs['i'][$r['i']]['dn'] = $d['necessite'][0];
$plugs['i'][$r['i']]['du'] = $d['utilise'][0];
$plugs['i'][$r['i']]['dl'] = $d['librairie'][0];
if ($multiple) {
$plugs['p'][$r['p']][] =& $plugs['i'][$r['i']];
// alias
} else {
//.........这里部分代码省略.........
示例13: controle_forum_boucle
function controle_forum_boucle($row, $args) {
$id_forum = $row['id_forum'];
$forum_id_parent = $row['id_parent'];
$forum_id_rubrique = $row['id_rubrique'];
$forum_id_article = $row['id_article'];
$forum_id_breve = $row['id_breve'];
$forum_date_heure = $row['date_heure'];
$forum_titre = echapper_tags($row['titre']);
$forum_texte = $row['texte'];
$forum_auteur = echapper_tags(extraire_multi($row['auteur']));
$forum_email_auteur = echapper_tags($row['email_auteur']);
$forum_nom_site = echapper_tags($row['nom_site']);
$forum_url_site = echapper_tags($row['url_site']);
$forum_stat = $row['statut'];
$forum_ip = $row['ip'];
$forum_id_auteur = $row["id_auteur"];
$r = forum_parent($id_forum);
$avant = $r['avant'];
$url = $r['url'];
$titre = $r['titre'];
$type = $r['type'];
$valeur = $r['valeur'];
$pref = $r['pref'];
if ($documents = sql_allfetsel('doc.id_document, doc.fichier AS fichier', 'spip_documents AS doc LEFT JOIN spip_documents_liens AS lien ON doc.id_document=lien.id_document', 'lien.id_objet='.intval($id_forum)." AND objet='forum'")) {
include_spip('inc/documents');
foreach ($documents as $k => $t) {
$h = generer_url_entite($t['id_document'], 'document');
$documents[$k] = "<a href='".$h."'>".basename($t['fichier'])."</a>";
}
}
switch($forum_stat) {
case 'off':
case 'privoff':
$style = " style='border: 2px #ff0000 dashed;'";
break;
case 'prop':
$style = " style='border: 2px yellow solid; background-color: white;'";
break;
case 'spam':
$style = " style='border: 2px black dotted;'";
break;
default:
$style = "";
break;
}
if ($forum_email_auteur) {
if (email_valide($forum_email_auteur))
$forum_email_auteur = "<a href='mailto:"
.htmlspecialchars($forum_email_auteur)
."?subject=".rawurlencode($forum_titre)."'>".$forum_email_auteur
."</a>";
$forum_auteur .= " — $forum_email_auteur";
}
$suite = "\n<br />$avant<b>$pref\n<a href='$url' class='controle'>$titre</a></b>"
. "<div class='controle'>".justifier(propre($forum_texte))."</div>";
include_spip('public/composer');
if ($forum_notes = safehtml(calculer_notes()))
$suite .= "<div class='notes controle'>".justifier(safehtml($forum_notes))."</div>";
if (strlen($forum_url_site) > 10 AND strlen($forum_nom_site) >= 3)
$suite .= "\n<div style='text-align: left' class='serif'><b><a href='$forum_url_site'>$forum_nom_site</a></b></div>";
return "\n<div><br /><a id='forum$id_forum'></a></div>" .
debut_cadre_forum("", true, "", typo($forum_titre)) .
"<div$style>" .
date_interface($forum_date_heure) .
safehtml("<span class='arial2'> / <b>$forum_auteur</b></span>") .
boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur, "$type=$valeur", $forum_ip, 'controle_forum', $args) .
safehtml(lignes_longues($suite)) .
afficher_forum_mots($id_forum) .
join(', ', $documents) .
"<div class='nettoyeur'></div></div>".
fin_cadre_forum(true);
}
示例14: corriger_typo
/**
* http://code.spip.net/@corriger_typo
*
* @param string $t
* @param string $lang
* @return string
*/
function corriger_typo($t, $lang = '')
{
static $typographie = array();
// Plus vite !
if (!$t) {
return $t;
}
$t = pipeline('pre_typo', $t);
// Caracteres de controle "illegaux"
$t = corriger_caracteres($t);
// Proteger les caracteres typographiques a l'interieur des tags html
if (preg_match_all(_TYPO_BALISE, $t, $regs, PREG_SET_ORDER)) {
foreach ($regs as $reg) {
$insert = $reg[0];
// hack: on transforme les caracteres a proteger en les remplacant
// par des caracteres "illegaux". (cf corriger_caracteres())
$insert = strtr($insert, _TYPO_PROTEGER, _TYPO_PROTECTEUR);
$t = str_replace($reg[0], $insert, $t);
}
}
// trouver les blocs multi et les traiter a part
$t = extraire_multi($e = $t, $lang, true);
$e = $e === $t;
// Charger & appliquer les fonctions de typographie
$idxl = "{$lang}:" . (isset($GLOBALS['lang_objet']) ? $GLOBALS['lang_objet'] : $GLOBALS['spip_lang']);
if (!isset($typographie[$idxl])) {
$typographie[$idxl] = charger_fonction(lang_typo($lang), 'typographie');
}
$t = $typographie[$idxl]($t);
// Les citations en une autre langue, s'il y a lieu
if (!$e) {
$t = echappe_retour($t, 'multi');
}
// Retablir les caracteres proteges
$t = strtr($t, _TYPO_PROTECTEUR, _TYPO_PROTEGER);
// pipeline
$t = pipeline('post_typo', $t);
# un message pour abs_url - on est passe en mode texte
$GLOBALS['mode_abs_url'] = 'texte';
return $t;
}
示例15: spiplistes_meleuse
//.........这里部分代码省略.........
// prendre la premiere etiquette sur le tas et traiter son courrier
$sql_courrier_select = array(
'titre', 'texte', 'message_texte', 'type'
, 'id_courrier', 'id_liste', 'email_test', 'total_abonnes', 'date_debut_envoi'
);
if($id_courrier =
intval(spiplistes_courriers_en_queue_premier('id_courrier', 'etat='.$sql_vide))
) {
$sql_courrier_a_traiter = spiplistes_courriers_casier_premier(
$sql_courrier_select
, 'id_courrier='.sql_quote($id_courrier)
);
spiplistes_debug_log ($prefix_log.'etiquette en cours pour id_courrier #'.$id_courrier);
} else {
// un vieux bug dans une ancienne version, eradique depuis (j'espere ;-)
//spiplistes_log($prefix_log."premiere etiquette en erreur. id_courier = 0. Supprimer cette etiquette manuellement !");
spiplistes_log(_T('spiplistes:erreur_queue_supprimer_courrier'
, array('s' => $prefix_log))
);
}
// boucle (sur LIMIT 1) pour pouvoir sortir par break si erreur
while($row = sql_fetch($sql_courrier_a_traiter)) {
foreach($sql_courrier_select as $key) {
$$key = $row[$key];
}
foreach(array('id_courrier','id_liste','total_abonnes') as $key) {
$$key = intval($$key);
}
// objet (subject) ne peut pas être en html ?!
// sauf pour le webmail (et encore)
$objet_html = filtrer_entites(typo(spiplistes_calculer_balise_titre(extraire_multi($titre))));
$page_html = stripslashes($texte);
$message_texte = stripslashes($message_texte);
$nb_emails = array();
// compteur pour la session uniquement
// le total de chaque sera ajoute en fin de session
$nb_emails_envoyes =
$nb_emails_echec =
$nb_emails_non_envoyes =
$nb_emails['texte'] =
$nb_emails['html'] = 0
;
$str_log = 'id_courrier #'.$id_courrier;
//////////////////////////
// Determiner email de l emetteur
if($is_a_test = email_valide($email_test)) {
// courrier a destination adresse email de test
$str_log .= ' TO: '.$email_test.' (TEST)';
}
else if($id_liste > 0) {
// courrier a destination des abonnes d'une liste
$total_abonnes = spiplistes_listes_nb_abonnes_compter($id_liste);
$str_log .= ' TO id_liste #'.$id_liste.' ('.$total_abonnes.' users)';
$lang = spiplistes_listes_langue($id_liste);
if($lang != '') {
$GLOBALS['spip_lang'] = $lang;
}