function message_oubli($email, $param) { $r = formulaires_oubli_mail($email); if (is_array($r) AND $r[1]) { include_spip('inc/acces'); # pour creer_uniqid include_spip('inc/texte'); # pour corriger_typo $cookie = creer_uniqid(); sql_updateq("spip_auteurs", array("cookie_oubli" => $cookie), "id_auteur=" . $r[1]['id_auteur']); $nom = textebrut(corriger_typo($GLOBALS['meta']["nom_site"])); $envoyer_mail = charger_fonction('envoyer_mail','inc'); if ($envoyer_mail($email, ("[$nom] " . _T('pass_oubli_mot')), _T('pass_mail_passcookie', array('nom_site_spip' => $nom, 'adresse_site' => url_de_base(), 'sendcookie' => generer_url_public('spip_pass', "$param=$cookie", true)))) ) return _T('pass_recevoir_mail'); else return _T('pass_erreur_probleme_technique'); } return _T('pass_erreur_probleme_technique'); }
/** * Typographie generale * avec protection prealable des balises HTML et SPIP * * http://code.spip.net/@typo * * @param string $letexte * @param bool $echapper * @param null $connect * @param array $env * @return string */ function typo($letexte, $echapper = true, $connect = null, $env = array()) { // Plus vite ! if (!$letexte) { return $letexte; } // les appels directs a cette fonction depuis le php de l'espace // prive etant historiquement ecrit sans argment $connect // on utilise la presence de celui-ci pour distinguer les cas // ou il faut passer interdire_script explicitement // les appels dans les squelettes (de l'espace prive) fournissant un $connect // ne seront pas perturbes $interdire_script = false; if (is_null($connect)) { $connect = ''; $interdire_script = true; } $echapper = $echapper ? 'TYPO' : false; // Echapper les codes <html> etc if ($echapper) { $letexte = echappe_html($letexte, $echapper); } // // Installer les modeles, notamment images et documents ; // // NOTE : propre() ne passe pas par ici mais directement par corriger_typo // cf. inc/lien $letexte = traiter_modeles($mem = $letexte, false, $echapper ? $echapper : '', $connect, null, $env); if (!$echapper and $letexte != $mem) { $echapper = ''; } unset($mem); $letexte = corriger_typo($letexte); $letexte = echapper_faux_tags($letexte); // reintegrer les echappements if ($echapper !== false) { $letexte = echappe_retour($letexte, $echapper); } // Dans les appels directs hors squelette, securiser ici aussi if ($interdire_script) { $letexte = interdire_scripts($letexte); } return $letexte; }
function expanser_liens_tw($texte, $connect = '') { $debug = _request('var_debug_wheel'); $texte = pipeline('pre_liens', $texte); if ($debug) { spip_timer('liensmatch'); } tw_expanser_un_lien($connect, 'init'); if (strpos($texte, '->') !== false) { $texte = preg_replace_callback(_RACCOURCI_LIEN_TW, 'tw_expanser_un_lien', $texte); } if ($debug) { $GLOBALS['totaux']['expanser_liens:']['liensmatch'] += spip_timer('liensmatch', true); } // on passe a traiter_modeles la liste des liens reperes pour lui permettre // de remettre le texte d'origine dans les parametres du modele if ($debug) { spip_timer('traiter_modeles'); } $texte = traiter_modeles($texte, false, false, $connect, tw_expanser_un_lien('', 'sources')); if ($debug) { $GLOBALS['totaux']['expanser_liens:']['traiter_modeles'] += spip_timer('traiter_modeles', true); } if ($debug) { spip_timer('corriger_typo'); } $texte = corriger_typo($texte); if ($debug) { $GLOBALS['totaux']['expanser_liens:']['corriger_typo'] += spip_timer('corriger_typo', true); } if ($debug) { spip_timer('reinserts'); } $texte = tw_expanser_un_lien($texte, 'reinsert'); if ($debug) { $GLOBALS['totaux']['expanser_liens:']['reinserts'] += spip_timer('reinserts', true); } return $texte; }
function nettoyer_raccourcis_typo($texte, $connect='') { $texte = pipeline('nettoyer_raccourcis_typo',$texte); if (preg_match_all(_RACCOURCI_LIEN, $texte, $regs, PREG_SET_ORDER)) foreach ($regs as $reg) { list ($titre,,)= traiter_raccourci_lien_atts($reg[1]); if (!$titre) { $match = typer_raccourci($reg[count($reg)-1]); @list($type,,$id,,,,) = $match; if ($type) { $url = generer_url_entite($id,$type,'','',true); if (is_array($url)) list($type, $id) = $url; $titre = traiter_raccourci_titre($id, $type, $connect); } $titre = $titre ? $titre['titre'] : $match[0]; } $titre = corriger_typo(supprimer_tags($titre)); $texte = str_replace($reg[0], $titre, $texte); } // supprimer les notes $texte = preg_replace(",[[][[]([^]]|[]][^]])*[]][]],UimsS","",$texte); // supprimer les codes typos $texte = str_replace(array('}','{'), '', $texte); // supprimer les tableaux $texte = preg_replace(",(^|\r)\|.*\|\r,s", "\r", $texte); return $texte; }
function debusquer_entete($titre, $corps) { global $debug_objets; include_spip('balise/formulaire_admin'); include_spip('public/assembler'); // pour inclure_balise_dynamique include_spip('inc/texte'); // pour corriger_typo return _DOCTYPE_ECRIRE . html_lang_attributes() . "<head>\n<title>" . ('SPIP ' . $GLOBALS['spip_version_affichee'] . ' ' . _T('admin_debug') . ' ' . $titre . ' (' . supprimer_tags(corriger_typo($GLOBALS['meta']['nom_site']))) . ")</title>\n" . "<meta http-equiv='Content-Type' content='text/html" . (($c = $GLOBALS['meta']['charset']) ? "; charset={$c}" : '') . "' />\n" . http_script('', 'jquery.js') . "<link rel='stylesheet' href='" . url_absolue(find_in_path('spip_admin.css')) . "' type='text/css' />" . "</head>\n" . "<body style='margin:0 10px;'>\n" . "<div id='spip-debug-header'>" . $corps . inclure_balise_dynamique(balise_FORMULAIRE_ADMIN_dyn('spip-admin-float', $debug_objets), false) . '</div></body></html>'; }
function trouve_auteurs_articles($id_article) { return corriger_typo(join(", ", array_map('array_shift', sql_allfetsel("nom", "spip_auteurs AS A LEFT JOIN spip_auteurs_articles AS L ON A.id_auteur=L.id_auteur", "L.id_article=$id_article", "", "nom")))); }
/** * Nettoyer le titre d'un email * * @uses textebrut() * @uses corriger_typo() * * @param string $titre * @return string */ function nettoyer_titre_email($titre) { return str_replace("\n", ' ', textebrut(corriger_typo($titre))); }
function lettres_d_auteurs($query, $debut, $max_par_page, $tri) { $auteurs = $lettre = array(); $lettres_nombre_auteurs = 0; $lettre_prec =""; $nombre_auteurs = 0; $query = sql_select($query['SELECT'], $query['FROM'], $query['WHERE'], $query['GROUP BY'], $query['ORDER BY']); while ($auteur = sql_fetch($query)) { if ($nombre_auteurs>=$debut AND $nombre_auteurs<$debut+$max_par_page) { $auteur['restreint'] = sql_countsel("spip_auteurs_rubriques", "id_auteur=".$auteur['id_auteur']); $auteurs[] = $auteur; } if ($tri == 'nom') { $premiere_lettre = strtoupper(spip_substr(corriger_typo($auteur['nom']),0,1)); if ($premiere_lettre != $lettre_prec) { $lettre[$premiere_lettre] = $nombre_auteurs; } $lettre_prec = $premiere_lettre; } $nombre_auteurs++; } return array($auteurs, $lettre, $nombre_auteurs, $debut); }
function traiter_raccourci_lien_atts($texte) { $bulle = $hlang = false; // title et hreflang donnes par le raccourci ? if (strpbrk($texte, "|{") !== false and preg_match(_RACCOURCI_ATTRIBUTS, $texte, $m)) { $n = count($m); // |infobulle ? if ($n > 2) { $bulle = $m[3]; // {hreflang} ? if ($n > 4) { // si c'est un code de langue connu, on met un hreflang if (traduire_nom_langue($m[5]) != $m[5]) { $hlang = $m[5]; } elseif (!$m[5]) { $hlang = test_espace_prive() ? $GLOBALS['lang_objet'] : $GLOBALS['spip_lang']; // sinon c'est un italique ou un gras dans le title ou dans le texte du lien } else { if ($bulle) { $bulle .= $m[4]; } else { $m[1] .= $m[2] . $m[4]; } } } else { if (preg_match('/^[a-z_]+$/', $m[3])) { // si c'est un code de langue connu, on met un hreflang // mais on laisse le title (c'est arbitraire tout ca...) if (traduire_nom_langue($m[3]) != $m[3]) { $hlang = $m[3]; } } } } $texte = $m[1]; } if ($bulle) { $bulle = nettoyer_raccourcis_typo($bulle); $bulle = corriger_typo($bulle); } return array(trim($texte), $bulle, $hlang); }
function infos_naviguer($id_rubrique, $statut, $row, $n_forums) { $boite = pipeline ('boite_infos', array('data' => '', 'args' => array( 'type'=>'rubrique', 'id' => $id_rubrique, 'row' => $row, 'n_forums' => $n_forums ) )); $navigation = ($boite ?debut_boite_info(true). $boite . fin_boite_info(true):""); $res = sql_allfetsel("A.nom, A.id_auteur", "spip_auteurs AS A LEFT JOIN spip_auteurs_rubriques AS R ON A.id_auteur=R.id_auteur", "A.statut = '0minirezo' AND R.id_rubrique=$id_rubrique"); if (!$res) return $navigation; $img = http_img_pack('admin-12.gif','',''); foreach ($res as $k => $row) { $h = generer_url_ecrire('auteur_infos', "id_auteur=" .$row['id_auteur']); $res[$k] = "$img <a href='$h'>" . $row['nom'] . '</a>'; } $res = corriger_typo(join('<br />', $res)); $navigation .= debut_cadre_relief("fiche-perso-24.gif", true, '', _T('info_administrateurs')). $res . fin_cadre_relief(true); return $navigation; }