/** * set * Overwritten set() to set timestamp, ip and approved state correctly. * * @since * @access public * @param mixed $key The name of the property to receive. * @return mixed $val The value of the property. */ function set($key, $value) { $testKey = '_' . $key; if (isset($this->{$testKey})) { $this->{$testKey} = $value; return true; } return Services_Trackback::set($key, $value); }
/** * getResponseError * Returns an XML response for a trackback error. * * @since 0.1.0 * @access public * @param int $code The error code * @param string $message The error message * @return void */ function getResponseError($message, $code) { $data = Services_Trackback::_getEncodedData(array('code', 'message'), array('code' => $code, 'message' => $message)); $res = <<<EOD <?xml version="1.0" encoding="iso-8859-1"?> <response> <error>%s</error> <message>%s</message> </response> EOD; return sprintf($res, $data['code'], $data['message']); }
/** * 本文中のリンク先に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; }
exit; } if ($trackback->checkRepost($dbh, TRACKBACK_REPOST_COUNT, TRACKBACK_REPOST_TIMESPAN) !== false) { echo Services_Trackback::getResponseError('Only ' . TRACKBACK_REPOST_COUNT . ' trackbacks from 1 IP address within ' . TRACKBACK_REPOST_TIMESPAN . ' secs are allowed on this site. Please try again later.', 1); exit; } $trackback->createSpamCheck('Akismet', $trackback->akismetOptions); if ($trackback->checkSpam() === true) { echo Services_Trackback::getResponseError('Your trackback seems to be spam. If it is not, please contact the webmaster of this site.', 1); exit; } $res = $trackback->save($dbh); if (PEAR::isError($res)) { echo Services_Trackback::getResponseError('Your trackback could not be saved, please try again or inform the administrator.', 1); exit; } $mailData = array('id' => $trackback->get('id'), 'blog_name' => $trackback->get('blog_name'), 'title' => $trackback->get('title'), 'url' => $trackback->get('url'), 'excerpt' => $trackback->get('excerpt'), 'date' => format_date($trackback->get('timestamp')), 'timestamp' => $trackback->get('timestamp')); $mailer = Damblan_Mailer::create('Trackback_New', $mailData); // Get active maintainers only $additionalHeaders['To'] = $trackback->getMaintainers(true); if (!DEVBOX) { $res = $mailer->send($additionalHeaders); } else { $res = true; } if (PEAR::isError($res)) { echo Services_Trackback::getResponseError('The notification email for your trackback could not be send. Please inform ' . PEAR_WEBMASTER_EMAIL . '.', 1); exit; } echo Services_Trackback::getResponseSuccess();