Example #1
0
 /**
  * 本文中のリンク先にTrackBack Pingを送る
  *
  * return array('url' => 'error_mes')	url:エラーの発生した送信先URL error_mes:エラー内容
  */
 private function sendtrackback()
 {
     require_once 'Services/Trackback.php';
     $data['title'] = $this->subject;
     $data['excerpt'] = mb_strlen($this->text) >= 256 ? mb_substr($this->text, 0, 252) . '...' : $this->text;
     $data['url'] = gettinyURL($this->pagename);
     $data['blog_name'] = SITENAME . ' - ' . $this->blogname;
     $tb = Services_Trackback::create(array('id' => 'dummy'), array('timeout' => 4, 'fetchlines' => 999999));
     if (PEAR::isError($tb)) {
         throw new PluginException('TrackBack送信時にエラーが発生しました(' . $tb->getMessage() . ')。', $this);
     }
     $ret = array();
     $count = preg_match_all('/https?:\\/\\/[-a-zA-Z0-9_:@&?=+,.!\\/~*%$\';#]+/u', $this->text, $m);
     if ($count) {
         foreach ($m[0] as $url) {
             $tb->set('url', $url);
             $result = $tb->autodiscover();
             if (!PEAR::isError($result)) {
                 foreach ($data as $key => $val) {
                     $tb->set($key, $val);
                 }
                 $r = $tb->send();
                 if (PEAR::isError($r)) {
                     $ret[$url] = $r->getMessage();
                 }
             } else {
                 $ret[$url] = $result->getMessage();
             }
         }
     }
     return $ret;
 }