Пример #1
0
 /**
  * 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);
 }
Пример #2
0
    /**
     * 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']);
    }
Пример #3
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;
 }
Пример #4
0
    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();