function &Weblog_Commonping($siteName, $siteURL) { // Create XML $siteName = encoding_set($siteName, "UTF-8"); $params = array(new XML_RPC_Value($siteName, "string"), new XML_RPC_Value($siteURL, "string")); $this->Ping_XML = new XML_RPC_Message("weblogUpdates.ping", $params); }
} } } $weblog =& Weblog::getInstance(); $entry =& $weblog->handler->get($tb_id); @header('Content-Type: text/xml'); // Trackback ping check if (!$tb_operator->isPing()) { $link = sprintf('%s/modules/%s/details.php?blog_id=%d', XOOPS_URL, $xoopsModule->dirname(), $tb_id); // rss mode if (isset($_GET['__mode']) && $_GET['__mode'] == "rss") { $trackback_array =& $tb_operator->handler->get($tb_id); $trackback_data_array = return_trackback_data($trackback_array); $lang = _LANGCODE; $xml = $tb_operator->toRSSXML($trackback_data_array, $entry->getVar('title', 'n'), $link, $entry->getVar('contents', 'n'), $lang); $xml = encoding_set($xml, "UTF-8"); exit($xml); } else { header("Location:" . $link); exit; } } // check trackback ID if (!preg_match("/^\\d+\$/", $tb_id)) { exit($tb_operator->getPingXML(false, "Invalid trackback ID")); } // save trackback $tb_id = intval($tb_id); $data = $tb_operator->analyzePing($_POST); $data['description'] = $data['excerpt']; $data['blog_id'] = $tb_id;
function Set_Trackback_Values(&$trackback, $tb_rss_data, $trackback_url, $direction, $entry = null) { // init $tb_rss_data $tb_rss_key = array("blog_id", "blog_name", "title", "description", "link"); foreach ($tb_rss_key as $key) { if (!isset($tb_rss_data[$key])) { $tb_rss_data[$key] = ""; } } // blog_id if ($direction == "transmit") { if (empty($entry) || !$trackback_url || !$direction) { return false; } $blog_id = $entry->getVar('blog_id'); } elseif ($direction == "recieved") { $blog_id = $tb_rss_data['blog_id']; } else { return false; } // check blog_id if (!preg_match("/^\\d+\$/", $blog_id)) { return false; } $trackback->setVar('blog_id', $blog_id); $trackback->setVar('tb_url', $trackback_url); $trackback->setVar('blog_name', encoding_set($tb_rss_data['blog_name'], _CHARSET, $tb_rss_data['encoding'])); $trackback->setVar('title', encoding_set($tb_rss_data['title'], _CHARSET, $tb_rss_data['encoding'])); $trackback->setVar('description', encoding_set($tb_rss_data['description'], _CHARSET, $tb_rss_data['encoding'])); $trackback->setVar('link', $tb_rss_data['link']); $trackback->setVar('direction', $direction); return true; }
/** * [[機能説明]] * * @access public */ function execute() { require_once "Net/TrackBack.php"; // check trackback ID if (!preg_match("/^\\d+\$/", $this->post_id)) { exit(Net_TrackBack::getPingXML(false, "Invalid trackback ID")); } $params = array("post_id" => $this->post_id); $post = $this->db->selectExecute("journal_post", $params); if ($post === false || !isset($post[0])) { exit(Net_TrackBack::getPingXML(false, "Invalid trackback ID")); } if (!$this->journalAction->checkSite($this->url)) { $params = array("page_id" => $post[0]["room_id"]); $pages = $this->db->selectExecute("pages", $params); if ($pages === false || !isset($pages[0])) { exit(Net_TrackBack::getPingXML(false, "Invalid trackback ID")); } $space_type = $pages[0]["space_type"]; $private_flag = $pages[0]["private_flag"]; $default_entry_flag = $pages[0]["default_entry_flag"]; if ($space_type != _SPACE_TYPE_PUBLIC && !($private_flag == _ON && $default_entry_flag == _ON)) { exit(Net_TrackBack::getPingXML(false, "Invalid authority")); } } $params = array("journal_id" => $post[0]['journal_id']); $journal = $this->db->selectExecute("journal", $params); if ($journal === false || !isset($journal[0])) { exit(Net_TrackBack::getPingXML(false, "Invalid trackback ID")); } $trackback['journal_id'] = $post[0]['journal_id']; if (!Net_TrackBack::isPing()) { //ブロックID取得処理 $params = array("journal_id" => $post[0]['journal_id']); $block = $this->db->selectExecute("journal_block", $params); if ($block === false || !isset($block[0])) { exit(Net_TrackBack::getPingXML(false, "Invalid trackback ID")); } $this->request->setParameter("post_id", $this->post_id); $this->request->setParameter("block_id", $block[0]['block_id']); $link = BASE_URL . INDEX_FILE_NAME . "?action=" . DEFAULT_ACTION . "&active_action=journal_view_main_detail" . "&post_id=" . $this->post_id . "&block_id=" . $block[0]['block_id'] . "#_" . $block[0]['block_id']; // rss mode if (isset($_GET['__mode']) && $_GET['__mode'] == "rss") { if ($post[0]['direction_flag'] === JOURNAL_TRACKBACK_RECEIVE) { $trackback_data_array[] = array("title" => $post[0]['title'], "url" => $post[0]['link'], "excerpt" => $post[0]['content']); $xml = Net_TrackBack::toRSSXML($trackback_data_array, $post[0]['title'], $link, $post[0]['content'], "ja"); $xml = encoding_set($xml, "UTF-8"); exit($xml); } } else { header("Location: {$link}"); } } else { $trackback_receive_flag = $journal[0]['trackback_receive_flag']; if ($trackback_receive_flag != _ON) { //受信禁止の場合 exit(Net_TrackBack::getPingXML(false, "Invalid trackback ID")); } // save trackback $post_id = intval($this->post_id); $data['blog_name'] = $this->blog_name; $data['title'] = $this->title; $data['description'] = $this->excerpt; $data['post_id'] = $post_id; $data['link'] = false; // surpress PHP warnig $trackback = array(); if (!empty($this->user_id)) { $trackback['user_id'] = $this->user_id; } if ($this->journalAction->setTrackbackValues($trackback, $data, $this->url, JOURNAL_TRACKBACK_RECEIVE)) { if ($this->journalAction->saveTrackback($trackback)) { exit(Net_TrackBack::getPingXML(true)); } } } }
//$tpl->assign('channel_webmaster', $xoopsConfig['adminmail']); //$tpl->assign('channel_editor', $xoopsConfig['adminmail']); $tpl->assign('channel_category', encoding_set(htmlspecialchars(_BL_BLOG, ENT_QUOTES), 'UTF-8')); $tpl->assign('channel_generator', encoding_set(htmlspecialchars($xoopsModule->name(), ENT_QUOTES), 'UTF-8')); $tpl->assign('channel_language', _LANGCODE); $tpl->assign('image_url', $xoopsModuleConfig['imgurl']); $dimention = ini_get('allow_url_fopen') ? getimagesize($xoopsModuleConfig['imgurl']) : ""; if (empty($dimention[0])) { $width = 88; } else { $width = $dimention[0] > 144 ? 144 : $dimention[0]; } if (empty($dimention[1])) { $height = 31; } else { $height = $dimention[1] > 400 ? 400 : $dimention[1]; } $tpl->assign('image_width', $width); $tpl->assign('image_height', $height); $results = $weblog->getEntries(0, $user_id, 0, $max); foreach ($results as $entryObject) { $item['title'] = $myts->makeTboxData4Show(encoding_set($entryObject->getVar('title', 'e'), 'UTF-8')); $item['link'] = sprintf('%s/modules/%s/details.php?blog_id=%d', XOOPS_URL, $xoopsModule->dirname(), $entryObject->getVar('blog_id')); $item['guid'] = sprintf('%s/modules/%s/details.php?blog_id=%d', XOOPS_URL, $xoopsModule->dirname(), $entryObject->getVar('blog_id')); $item['pubdate'] = date($format_timestamp, $entryObject->getVar('created')) . " " . $timezone; $description = $entryObject->getVar('contents', 's', $entryObject->getVar('blog_id'), "rss"); $item['description'] = encoding_set(htmlspecialchars(strip_tags($description), ENT_QUOTES), 'UTF-8'); $tpl->append('items', $item); } header('Content-type: application/xml; charset=utf-8'); $tpl->display('db:weblog_rss.html');
$link = XOOPS_URL . '/'; } // add weblogs itme $results = $weblog->getEntries(0, $user_id, 0, $max); $sign = $xoopsConfig['default_TZ'] >= 0 ? "+" : "-"; foreach ($results as $entryObject) { $item = array(); $data_excerpt = ""; $dc_creator = $entryObject->getVar('uname'); $item['title'] = encoding_set($entryObject->getVar('title', 'e'), "UTF-8"); $item['link'] = sprintf('%s/modules/%s/details.php?blog_id=%d', XOOPS_URL, $xoopsModule->dirname(), $entryObject->getVar('blog_id')); $item['dc:date'] = date("Y-m-d", $entryObject->getVar('created')) . "T" . date("H:i:s", $entryObject->getVar('created')) . $sign . sprintf("%02d:00", abs($xoopsConfig['default_TZ'])); $item['dc:creator'] = $entryObject->getVar('uname'); $description = preg_replace("|<br\\s*\\/>|i", "\n", $entryObject->getVar('contents', 's', $entryObject->getVar('blog_id'), "rss")); $item['description'] = encoding_set(xoops_substr(htmlspecialchars(strip_tags($description), ENT_QUOTES), 0, WEBLOG_TB_EXCERPT_NUM), 'UTF-8'); $item["_attributes"] = array("rdf:about" => $item["link"]); $item_data[] = $item; } $options = array("mode" => "simplexml", "indent" => " ", "linebreak" => "\n", "typeHints" => false, "addDecl" => true, "encoding" => "utf-8", "rootName" => "rdf:RDF", "rootAttributes" => array("xmlns" => "http://purl.org/rss/1.0/", "xmlns:rdf" => "http://www.w3.org/1999/02/22-rdf-syntax-ns#", "xmlns:dc" => "http://purl.org/dc/elements/1.1/", "xmlns:sy" => "http://purl.org/rss/1.0/modules/syndication/", "xmlns:admin" => "http://webns.net/mvcb/", "xmlns:content" => "http://purl.org/rss/1.0/modules/content/"), "defaultTagName" => "item", "attributesArray" => "_attributes"); $data["channel"] = array("title" => encoding_set($xoopsModule->getVar("name"), "UTF-8"), "link" => XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/", "description" => encoding_set($xoopsConfig["sitename"], "UTF-8"), "dc:language" => _LANGCODE, "dc:creator" => encoding_set($dc_creator, "UTF-8"), "_attributes" => array("rdf:about" => XOOPS_URL . "/modules/" . $xoopsModule->dirname() . "/")); for ($item_num = 0; $item_num < count($item_data); $item_num++) { $data["channel"]["items"]["rdf:Seq"]["rdf:li"][$item_num]["_attributes"]["rdf:resource"] = $item_data[$item_num]["link"]; $data[] = $item_data[$item_num]; } $Serializer =& new XML_Serializer($options); $status = $Serializer->serialize($data); if (PEAR::isError($status)) { die($status->getMessage()); } header('Content-type: application/xml; charset=utf-8'); echo $Serializer->getSerializedData();