Ignore:
Timestamp:
12/19/10 17:36:48 (9 years ago)
Author:
b_b
Message:

-* ajout d'un parametre auto (false par defaut) à prepare_trackback() pour ne pas lancer la détection automatique à chaque chargement du formulaire
-* ajout d'un bouton pour lancer manuellement la detetion automatique des urls à pinger
-* doc des fonctions + ménage et chaines de langue

Location:
plugins_spip/trackbacks
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • plugins_spip/trackbacks/formulaires/trackbacks.html

    r4636 r4641  
    2727                <!--extra-->
    2828                <p class='boutons'>
    29                         <input class='submit' type='submit' name='enregistrer' value='<:bouton_enregistrer:>' />
     29                        <input class='submit' type='submit' name='auto' value='<:trackbacks:auto_decouverte:>' />
     30                        <input class='submit' type='submit' name='enregistrer' value='<:trackbacks:envoyer_trackback:>' />
    3031                </p>
    3132        </div></form>]
  • plugins_spip/trackbacks/formulaires/trackbacks.php

    r4636 r4641  
    11<?php
    22
     3include_spip('inc/envoi_trackback');
     4
    35function formulaires_trackbacks_charger_dist($objet, $id_objet, $retour=''){
    4 
    5         include_spip('inc/envoi_trackback');
    6 
     6       
    77        if ($donnees = prepare_trackback($objet, $id_objet)){
    88                foreach($donnees as $key=>$val){
     
    1313        $valeurs['objet'] = $objet;
    1414        $valeurs['id_objet'] = $id_objet;       
    15         $valeurs['list_urls'] = implode("\n", $donnees['liste_urls']);
     15        $valeurs['list_urls'] = '';
    1616        $valeurs['excerpt'] = $donnees['excerpt'];
    1717        $valeurs['resultat'] = '';
     
    2323function formulaires_trackbacks_verifier_dist($objet, $id_objet, $retour=''){
    2424        $erreurs = array();
     25        if (!_request('list_urls') AND !_request('auto'))
     26                $erreurs['list_urls'] = _T('trackbacks:erreur_list_urls');
    2527        return $erreurs;
    2628}
     
    2931       
    3032        $message = array('editable'=>true, 'message_ok'=>'');
     33       
     34        if (_request('auto')){
     35                if ($donnees = prepare_trackback($objet, $id_objet, true))
     36                        set_request('list_urls', implode("\n", $donnees['liste_urls']));
     37                return $message;
     38        }
    3139
    3240        if ($list_urls = _request('list_urls')) {
  • plugins_spip/trackbacks/inc/envoi_trackback.php

    r4640 r4641  
    77include_spip("public/composer");
    88
    9 function prepare_trackback($type, $id_objet) {
     9/**
     10 * générer le contenu du trackback
     11 *
     12 * @param string $objet Le type d'objet SPIP auquel il est attaché
     13 * @param int $id_objet L'id_objet de l'objet auquel il est attaché
     14 * @param boolean $auto rechercher automatiquement les urls de trackbacks dans les liens du texte
     15 */
     16function prepare_trackback($objet, $id_objet, $auto=false) {
    1017        $f = chercher_filtre('introduction');
    11         $table = "spip_".table_objet($type);
    12         $col_id = id_table_objet($type);
     18        $table = "spip_".table_objet($objet);
     19        $col_id = id_table_objet($objet);
    1320
    1421        $select = array('titre', 'texte');
    1522        $from = array($table);
    1623        $where = array("statut='publie'", "$col_id=$id_objet");
    17         switch($type) {
     24        switch($objet) {
    1825                case 'article':
    1926                        $select = array_merge($select, array('chapo', 'ps', 'descriptif', 'url_site'));
     
    3441        if(empty($donnees)) return false;
    3542        else {
    36                 $liens = recuperer_liens_externes($donnees['texte']);
    3743                $liste_urls = array();
    38                 foreach($liens as $link) {
    39                         spip_log("link = $link",'trackbacks');
    40                         spip_log(auto_decouverte_trackback($link),'trackbacks');
    41                         if(($ping = auto_decouverte_trackback($link)) !== false)
    42                                 $liste_urls[] = $ping;
     44                if ($auto) {
     45                        $liens = recuperer_liens_externes($donnees['texte']);
     46                        foreach($liens as $link) {
     47                                spip_log("link = $link",'trackbacks');
     48                                spip_log(auto_decouverte_trackback($link),'trackbacks');
     49                                if(($ping = auto_decouverte_trackback($link)) !== false)
     50                                        $liste_urls[] = $ping;
     51                        }
    4352                }
    44                
    4553                $descriptif = propre($donnees['descriptif']);
    4654                $texte = propre($donnees['texte']);
     
    5967}
    6068
    61 //faire un tableau de tous les liens externes d'un texte
     69/**
     70 * faire un tableau de tous les liens externes d'un texte
     71 *
     72 * @param string $test Le texte à analyser
     73 */
    6274function recuperer_liens_externes($text) {
    6375        $linkArray = array();
     
    103115}
    104116
    105 //decouvrir les entete de definitions de trackback des pages distantes
     117/**
     118 * decouvrir les entete de definitions de trackback des pages distantes
     119 *
     120 * @param string $link URL de la page à analyser
     121 */
    106122function auto_decouverte_trackback($link) {
    107123        $page_content = recuperer_page('http://'.$link);
     
    135151}
    136152
    137 /*
    138 function envoi_trackback($ping, $datas) {
    139         //TODO:detection du charset distant et conversion si necessaire
    140         $pageContents = recuperer_page($ping, true, true, 1048576, $datas);
    141        
    142         $pattern = '|<response>.*<error>(.*)</error>(.*)'.
    143                         '(<message>(.*)</message>(.*))?'.
    144                         '</response>|msU';
    145        
    146         if (!preg_match($pattern,$pageContents,$matches))
    147         {
    148                 return array(false, _L('Source is not a ping URL'));
    149         }
    150 
    151         # On continue, le match est OK
    152         $ping_error = $matches[1];
    153         $ping_msg = (!empty($matches[4])) ? $matches[4] : '';
    154        
    155         if ($ping_error != '0') {
    156                 return array(false, _L('Trackback error').' : '.$ping_msg);
    157         } else {
    158                 # Oui ! Le trackback est passe ! champagne :))
    159                 # On va faire la notification
    160                 //$this->postPingNotify($post_id,$url); TODO historiser les ping reussi (et les echecs?)
    161                 return array(true, "Ok");
    162         }
    163 }
    164 */
    165153?>
  • plugins_spip/trackbacks/lang/trackbacks_en.php

    r2509 r4641  
    77//A
    88'article_nopost' => 'No post for this ID.',
     9'auto_decouverte' => 'Auto discover ping URLs',
    910
    1011//B
     
    1819//E
    1920'erreur_insertion' => 'An error occured while inserting the trackback.',
     21'erreur_list_urls' => 'You must specify at least one URL to ping.',
     22'envoyer_trackback' => 'Ping',
    2023
    2124//I
     
    3437'info_pas_de_trackback' => 'no trackback',
    3538'info_rss' => 'TrackBack item for this blog',
     39'info_trackback' => 'Trackbacks',
     40
     41//L
     42'label_excerpt' => 'Send excerpt',
     43'label_liste_pings' => 'URLs to ping',
    3644
    3745//N
    3846'noid' => 'No ID.',
    3947'notrackbacks' => 'Trackbacks are not allowed for this post or weblog.',
     48
     49//P
     50'pings_envoyes' => 'Previously sent pings',
    4051
    4152//T
  • plugins_spip/trackbacks/lang/trackbacks_fr.php

    r4631 r4641  
    77//A
    88'article_nopost' => 'Pas d\'article pour cet identifiant.',
     9'auto_decouverte' => 'D&eacute;tecter les URLs',
    910
    1011//B
     
    1819//E
    1920'erreur_insertion' => 'Une erreur s\'est produite lors de l\'insertion du trackback.',
     21'erreur_list_urls' => 'Vous devez entrer au moins une URL de trackback.',
     22'envoyer_trackback' => 'Envoyer',
    2023
    2124//I
     
    3740
    3841//L
    39 'label_excerpt' => 'Extrait a envoyer',
    40 'label_liste_pings' => 'Liste des pings &agrave; faire',
     42'label_excerpt' => 'Envoyer l\'extrait',
     43'label_liste_pings' => 'URLs &agrave; r&eacute;trolier',
    4144
    4245//N
    4346'noid' => 'Pas d\'ID',
    4447'notrackbacks' => 'Les trackbacks ne sont pas autoris&eacute;s pour cet objet ou pour ce weblog.',
     48
     49//P
     50'pings_envoyes' => 'R&eacute;troliens d&eacute;j&agrave; envoy&eacute;s',
    4551
    4652//T
  • plugins_spip/trackbacks/prive/contenu/trackbacks_objet.html

    r4636 r4641  
    1 <div id="editer_trackbacks_[(#ENV{objet})]_[(#ENV{id_objet})]" class="ajax-action nom_action">
     1<div id="editer_trackbacks_[(#ENV{objet})]_[(#ENV{id_objet})]">
    22        <div id="pave_trackbacks_depliable" class="bloc_depliable blocreplie ajax">
    33                #FORMULAIRE_TRACKBACKS{#ENV{objet},#ENV{id_objet}}
    4                 <B_pings><ul>
     4                <B_pings><h3 class="legend"><:trackbacks:pings_envoyes:></h3>
     5                <ul>
    56                <BOUCLE_pings(PINGS){objet}{id_objet}>
    67                        <li>#DATE - #URL_PING</li>
Note: See TracChangeset for help on using the changeset viewer.