Dotclear


Ignore:
Timestamp:
09/01/13 03:16:29 (11 years ago)
Author:
Florent Cotton <florent.cotton@…>
Branch:
pingbacks
Children:
1675:23613441b822, 1676:ae97601883d2
Message:

Support des pingbacks : après le support de la détection et de l'envoi de pingbacks, au tour du support en réception.
Dans le détail (ou presque) :

  • Ajout d'un endpoint "pingback.ping" XML-RPC, mais le tout le gros du traitement est dans le fichier class.dc.trackback.php
  • Ajout d'une méthode "receive_pb" dans la classe dcTrackback pour la prise en charge quasi-complète de la réception et enregistrement d'un pingback.
  • Ajout d'une balise template {{tpl:BlogXMLRPCURL}} pour retourner l'URL du serveur XML-RPC du blog courant
  • Ajout d'un bloc au niveau des en-têtes dans les templates par défaut post.html et page.html pour la mise en oeuvre si besoin d'un <link rel="pingback" ../>
  • Ajout de l'envoi d'un en-tête HTTP supplémentaire "X-Pingback" dans les gestionnaires d'URLs pour les types "post" et "pages"

Reste plus qu'à tester en conditions réelles et à polir au besoin.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • inc/core/class.dc.xmlrpc.php

    r1179 r1674  
    214214               array('array','integer','string','string'), 
    215215               'Retrieve all of the comment statuses.'); 
     216                
     217          # Pingback support 
     218          $this->addCallback('pingback.ping',array($this,'pingback_ping'), 
     219               array('string', 'string', 'string'), 
     220               'Notify a link to a post.'); 
    216221     } 
    217222      
     
    270275     } 
    271276      
    272      private function setBlog() 
     277     private function setBlog($bypass = false) 
    273278     { 
    274279          if (!$this->blog_id) { 
     
    288293          } 
    289294           
    290           if (!$this->core->blog->settings->system->enable_xmlrpc || 
    291           !$this->core->auth->check('usage,contentadmin',$this->core->blog->id)) { 
     295          if (!$bypass && 
     296               (!$this->core->blog->settings->system->enable_xmlrpc || 
     297               !$this->core->auth->check('usage,contentadmin',$this->core->blog->id))) { 
    292298               $this->core->blog = null; 
    293299               throw new Exception('Not enough permissions on this blog.'); 
     
    16291635          ); 
    16301636     } 
     1637 
     1638     /* Pingback support 
     1639     --------------------------------------------------- */ 
     1640     public function pingback_ping($from_url, $to_url) 
     1641     { 
     1642          # Come on, buddy! Don't make me waste time with this kind of silliness... 
     1643          if (!(filter_var($from_url, FILTER_VALIDATE_URL) && preg_match('!^https?://!',$from_url))) { 
     1644               throw new Exception(__('No valid source URL provided? Try again!'), 0); 
     1645          } 
     1646           
     1647          $this->setBlog(true); 
     1648          $tb = new dcTrackback($this->core); 
     1649          return $tb->receive_pb($from_url, $to_url); 
     1650     } 
    16311651} 
    16321652?> 
Note: See TracChangeset for help on using the changeset viewer.

Sites map