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