/** * @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')); } } }
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); }