/**
  * @see	TrackbackAdapter::receive()
  */
 public function ping($objectID, $trackbackURL)
 {
     require_once WCF_DIR . 'lib/data/contest/ViewableContest.class.php';
     $entry = new ViewableContest($objectID);
     if (!$entry->contestID) {
         throw new IllegalLinkException();
     }
     $trackback = new Trackback('easy coding contest', $entry->getOwner()->getName());
     $trackback->ping($trackbackURL, PAGE_URL . '/index.php?page=Contest&contestID=' . $objectID, $entry->subject, $entry->getExcerpt());
 }
 function admin_blog_new()
 {
     $message = "";
     $this->set("categories", $this->Category->find('list'));
     if (!empty($this->data)) {
         $this->Article->create($this->data);
         $this->Article->validates();
         $validationResult = $this->Article->validationErrors;
         if (empty($validationResult)) {
             $trackback_urls = trim($this->data['Article']['trackback']);
             unset($this->data['Article']['trackback']);
             $this->data['Article']['created'] = date("Y-m-d H:i:s");
             $this->data['Article']['type'] = 1;
             if ($this->Article->save($this->data)) {
                 $message .= "新規記事を保存しました。\n";
             } else {
                 $message .= "記事の保存に失敗しました。\n";
             }
             // get information for trackback and ping
             $blog_name = $this->Setting->getValue('blog.name');
             $blog_author = $this->Setting->getValue('blog.author');
             $permalink = HOST . $this->base . '/blog/entry/' . $this->data['Article']['url'];
             $rss_link = HOST . $this->base . '/blog/rss';
             // send trackback
             if (!empty($trackback_urls)) {
                 //load trackback class
                 App::import('Vendor', 'trackback', array('file' => 'trackback.php'));
                 $urls = explode("\n", $trackback_urls);
                 $content = strip_tags($this->data['Article']['content']);
                 $content = mb_substr($content, 0, 100);
                 if (count($urls) > 0) {
                     $trackback = new Trackback($blog_name, $blog_author, Configure::read('App.encoding'));
                     foreach ($urls as $url) {
                         if ($trackback->ping($url, $permalink, $this->data['Article']['title'], $content)) {
                             $message .= "{$url}にトラックバックを送信しました。\n";
                         } else {
                             $message .= "{$url}にトラックバックは送信できませんでした。\n";
                         }
                     }
                 }
             }
             $pings = explode("\n", $this->Setting->getValue('blog.pings'));
             if (!empty($pings)) {
                 App::import('Vendor', 'weblog_pinger', array('file' => 'weblog_pinger.php'));
                 App::import('Vendor', 'xmlrpc', array('file' => 'xmlrpc.inc'));
                 foreach ($pings as $url) {
                     if (!empty($url)) {
                         $pinger = new Weblog_Pinger();
                         $blog_name = urlencode($blog_name);
                         //メジャーな所に送っておく。
                         $ping_result = $pinger->ping_all(trim($url), $blog_name, $permalink);
                         $this->log("ping result : \n" . var_export($ping_result, true), LOG_DEBUG);
                         $ping_result = $pinger->simplePing(trim($url), $blog_name, $permalink, "", "", $rss_link);
                         $this->log("ping result : \n" . var_export($ping_result, true), LOG_DEBUG);
                         if (!is_array($ping_result)) {
                             $message .= "{$url}にPingを送信しました。<br />\n";
                         } else {
                             $message .= "{$url}にPing送信に失敗しました。<br />\n";
                         }
                     }
                 }
             }
             $this->Session->write("message", $message);
             $this->redirect(array('controller' => 'operation', 'action' => 'blog_list'));
         }
     }
 }
Exemple #3
0
 function blog_trackback_send($ping_urls, $blogentry_id, $blogentry_title, &$blogentry_body)
 {
     global $database, $user, $url, $setting;
     // Trackback class
     $trackback = new Trackback($user->user_displayname . "'s Blog", $user->user_displayname, "UTF-8");
     // Prepare data
     $blogentry_excerpt = strlen($blogentry_body) > 255 ? substr($blogentry_body, 0, 254) : $blogentry_body;
     $blogentry_url = $url->url_create('blog_entry', $user->user_info['user_username'], $blogentry_id);
     // Allow multiple trackbacks
     if (!is_array($ping_urls)) {
         $ping_urls = array($ping_urls);
     }
     // Detect trackbacks
     if ($user->level_info['level_blog_trackbacks_detect']) {
         $detected_trackback_urls = $trackback->auto_discovery($blogentry_body);
         $ping_urls = array_merge($ping_urls, $detected_trackback_urls);
     }
     $ping_urls = array_unique(array_filter($ping_urls));
     // Ping the trackback urls (and generate ping log query)
     $sql = "INSERT INTO se_blogpings (blogping_blogentry_id, blogping_target_url, blogping_source_url, blogping_status, blogping_type, blogping_ip) VALUES ";
     $isFirst = TRUE;
     $trackback_results = array();
     foreach ($ping_urls as $ping_url) {
         $tb_result = $trackback->ping($ping_url, $blogentry_url, $blogentry_title, $blogentry_excerpt);
         if ($tb_result == "1") {
             $trackback_results[$ping_url] = "Could not connect";
         } elseif ($tb_result == "2") {
             $trackback_results[$ping_url] = "Success";
         } elseif ($tb_result == "3") {
             $trackback_results[$ping_url] = "An error occurred";
         } else {
             $trackback_results[$ping_url] = "An unknown error has occurred";
         }
         if (!$isFirst) {
             $sql .= ',';
         }
         $sql .= "('{$blogentry_id}', '" . $database->database_real_escape_string($ping_url) . "', '" . $database->database_real_escape_string($_SERVER['REQUEST_URI']) . "', 1, 1, '{$_SERVER['REMOTE_ADDR']}')";
         $isFirst = FALSE;
     }
     if (!$isFirst) {
         $resource = $database->database_query($sql);
     }
     return array('result' => TRUE, 'trackback_results' => $results);
 }