예제 #1
0
 /**
  * Saves a new trackback if all is ok and sends response
  * The function other people send to so our blog gadget
  * gets trackbacks
  *
  * @access  public
  * @return  string  trackback xml response
  */
 function Trackback()
 {
     // Based on Wordpress trackback implementation
     $tb_msg_error = '<?xml version="1.0" encoding="iso-8859-1"?><response><error>1</error><message>#MESSAGE#</message></response>';
     $tb_msg_ok = '<?xml version="1.0" encoding="iso-8859-1"?><response><error>0</error></response>';
     $sender = Jaws_Utils::GetRemoteAddress();
     $ip = $sender['proxy'] . (!empty($sender['proxy']) ? '-' : '') . $sender['client'];
     $post = jaws()->request->fetch(array('title', 'url', 'blog_name', 'excerpt'), 'post');
     if (is_null($post['title']) || is_null($post['url']) || is_null($post['blog_name']) || is_null($post['excerpt'])) {
         Jaws_Header::Location('');
     }
     $id = jaws()->request->fetch('id', 'get');
     if (is_null($id)) {
         $id = jaws()->request->fetch('id', 'post');
         if (is_null($id)) {
             $id = '';
         }
     }
     $title = urldecode($post['title']);
     $url = urldecode($post['url']);
     $blogname = urldecode($post['blog_name']);
     $excerpt = urldecode($post['excerpt']);
     if (trim($id) == '') {
         Jaws_Header::Location('');
     } elseif (empty($title) && empty($url) && empty($blogname)) {
         $url = $this->gadget->urlMap('SingleView', array('id' => $id), true);
         Jaws_Header::Location($url);
     } elseif ($this->gadget->registry->fetch('trackback') == 'true') {
         header('Content-Type: text/xml');
         $model = $this->gadget->model->load('Trackbacks');
         $trackback = $model->NewTrackback($id, $url, $title, $excerpt, $blogname, $ip);
         if (Jaws_Error::IsError($trackback)) {
             return str_replace('#MESSAGE#', $trackback->GetMessage(), $tb_msg_error);
         }
         return $tb_msg_ok;
     } else {
         header('Content-Type: text/xml');
         return str_replace('#MESSAGE#', _t('BLOG_TRACKBACK_DISABLED'), $tb_msg_error);
     }
 }