예제 #1
0
function plugin_showrss_convert()
{
    static $_xml;
    if (!isset($_xml)) {
        $_xml = extension_loaded('xml');
    }
    if (!$_xml) {
        return '#showrss: xml extension is not found<br />' . "\n";
    }
    $num = func_num_args();
    if ($num == 0) {
        return PLUGIN_SHOWRSS_USAGE . '<br />' . "\n";
    }
    $argv = func_get_args();
    $timestamp = FALSE;
    $cachehour = 0;
    $template = $uri = '';
    switch ($num) {
        case 4:
            $timestamp = trim($argv[3]) == '1';
            /*FALLTHROUGH*/
        /*FALLTHROUGH*/
        case 3:
            $cachehour = trim($argv[2]);
            /*FALLTHROUGH*/
        /*FALLTHROUGH*/
        case 2:
            $template = strtolower(trim($argv[1]));
            /*FALLTHROUGH*/
        /*FALLTHROUGH*/
        case 1:
            $uri = trim($argv[0]);
    }
    $class = $template == '' || $template == 'default' ? 'ShowRSS_html' : 'ShowRSS_html_' . $template;
    if (!is_numeric($cachehour)) {
        return '#showrss: Cache-lifetime seems not numeric: ' . htmlspecialchars($cachehour) . '<br />' . "\n";
    }
    if (!class_exists($class)) {
        return '#showrss: Template not found: ' . htmlspecialchars($template) . '<br />' . "\n";
    }
    if (!is_url($uri)) {
        return '#showrss: Seems not URI: ' . htmlspecialchars($uri) . '<br />' . "\n";
    }
    if (!is_requestable($uri)) {
        return '#showrss: Prohibit fetching RSS from my server<br />' . "\n";
    }
    list($rss, $time) = plugin_showrss_get_rss($uri, $cachehour);
    if ($rss === FALSE) {
        return '#showrss: Failed fetching RSS from the server<br />' . "\n";
    }
    if ($timestamp > 0) {
        $time = '<p style="font-size:10px; font-weight:bold">Last-Modified:' . get_date('Y/m/d H:i:s', $time) . '</p>';
    }
    $obj = new $class($rss);
    return $obj->toString($time);
}
function plugin_showrss_convert()
{
    if (func_num_args() == 0) {
        // 引数がない場合はエラー
        return "<p>showrss: no parameter(s).</p>\n";
    }
    if (!extension_loaded('xml')) {
        // xml 拡張機能が有効でない場合。
        return "<p>showrss: xml extension is not loaded</p>\n";
    }
    $array = func_get_args();
    $rssurl = $tmplname = $usecache = $usetimestamp = '';
    switch (func_num_args()) {
        case 4:
            $usetimestamp = trim($array[3]);
        case 3:
            $usecache = $array[2];
        case 2:
            $tmplname = strtolower(trim($array[1]));
        case 1:
            $rssurl = trim($array[0]);
    }
    // RSS パスの値チェック
    if (!PukiWikiFunc::is_url($rssurl)) {
        return '<p>showrss: syntax error. ' . htmlspecialchars($rssurl) . "</p>\n";
    }
    $class = "ShowRSS_html_{$tmplname}";
    if (!class_exists($class)) {
        $class = 'ShowRSS_html';
    }
    list($rss, $time) = plugin_showrss_get_rss($rssurl, $usecache);
    if ($rss === FALSE) {
        return "<p>showrss: cannot get rss from server.</p>\n";
    }
    $obj = new $class($rss);
    $timestamp = '';
    if ($usetimestamp > 0) {
        $time = PukiWikiFunc::get_date('Y/m/d H:i:s', $time);
        $timestamp = "<p style=\"font-size:10px; font-weight:bold\">Last-Modified:{$time}</p>";
    }
    return $obj->toString($timestamp);
}
예제 #3
0
파일: showrss.inc.php 프로젝트: big2men/qhm
function plugin_showrss_convert()
{
    global $script;
    $qm = get_qm();
    $qt = get_qt();
    if (func_num_args() == 0) {
        // 引数がない場合はエラー
        return $qm->replace('fmt_err_cvt', 'showrss', $qm->m['plg_showrss']['err_noparams']);
    }
    if (!extension_loaded('xml')) {
        // xml 拡張機能が有効でない場合。
        return $qm->replace('fmt_err_cvt', 'showrss', $qm->m['plg_showrss']['err_ex_xml_load']);
    }
    //---- キャッシュのための処理を登録 -----
    if ($qt->create_cache) {
        $args = func_get_args();
        return $qt->get_dynamic_plugin_mark(__FUNCTION__, $args);
    }
    //------------------------------------
    $array = func_get_args();
    $rssurl = $tmplname = $showline = $usecache = $usetimestamp = '';
    switch (func_num_args()) {
        case 5:
            $usetimestamp = trim($array[4]);
        case 4:
            $usecache = $array[3];
        case 3:
            $showline = trim($array[2]);
        case 2:
            $tmplname = strtolower(trim($array[1]));
        case 1:
            $rssurl = trim($array[0]);
    }
    //自己参照を防止する
    $p = parse_url($rssurl);
    if (strpos($p['query'], 'cmd=blog_rss') === FALSE && strpos(dirname($rssurl) . '/index.php', $script) === 0) {
        return '<strong style="color:red">Error</strong><br />#showrss: 自分自身のRSSは読み込めません。#recent をお使いください。';
    }
    // RSS パスの値チェック
    if (!is_url($rssurl)) {
        return $qm->replace('fmt_err_cvt', 'showrss', $qm->replace('plg_showrss.err_syntax', h($rssurl)));
    }
    $class = "ShowRSS_html_{$tmplname}";
    if (!class_exists($class)) {
        $class = 'ShowRSS_html';
    }
    list($rss, $time) = plugin_showrss_get_rss($rssurl, $usecache);
    if ($rss === FALSE) {
        return $qm->replace('fmt_err_cvt', 'showrss', $qm->m['plg_showrss.err_cannot_get']);
    }
    $obj = new $class($rss, $showline);
    $timestamp = '';
    if ($usetimestamp > 0) {
        $time = get_date('Y/m/d H:i:s', $time);
        $timestamp = "<p style=\"font-size:10px; font-weight:bold\">Last-Modified:{$time}</p>";
    }
    return $obj->toString($timestamp);
}
예제 #4
0
function plugin_showrss_convert()
{
    static $_xml;
    if (!isset($_xml)) {
        $_xml = extension_loaded('xml');
    }
    if (!$_xml) {
        return '#showrss: xml extension is not found<br />' . "\n";
    }
    $num = func_num_args();
    if ($num == 0) {
        return '<p class="alert alert-success">' . PLUGIN_SHOWRSS_USAGE . '</p>' . "\n";
    }
    $argv = func_get_args();
    $timestamp = FALSE;
    $cachehour = 6;
    $template = 'default';
    $uri = '';
    switch ($num) {
        case 4:
            $timestamp = trim($argv[3]) == '1';
            /*FALLTHROUGH*/
        /*FALLTHROUGH*/
        case 3:
            $cachehour = trim($argv[2]);
            /*FALLTHROUGH*/
        /*FALLTHROUGH*/
        case 2:
            $template = strtolower(trim($argv[1]));
            /*FALLTHROUGH*/
        /*FALLTHROUGH*/
        case 1:
            $uri = trim($argv[0]);
    }
    $class = empty($template) || $template == 'default' ? 'ShowRSS_html' : 'ShowRSS_html_' . $template;
    if (!is_numeric($cachehour)) {
        return '<p class="alert alert-warning">#showrss: Cache-lifetime seems not numeric: <var>' . htmlsc($cachehour) . '</var></p>' . "\n";
    }
    if (!class_exists($class)) {
        return '<p class="alert alert-warning">#showrss: Template not found: <var>' . htmlsc($template) . '</var></p>' . "\n";
    }
    if (!is_url($uri)) {
        return '<p class="alert alert-warning">#showrss: Seems not URI: <var>' . htmlsc($uri) . '</var></p>' . "\n";
    }
    //if (! is_requestable($uri))
    //	return '<p class="alert alert-warning">#showrss: Prohibit fetching RSS from my server.</p>' . "\n";
    list($rss, $time, $reason) = plugin_showrss_get_rss($uri, $cachehour);
    if (!$rss) {
        return '<p class="alert alert-warning">#showrss: ' . $reason . '</p>' . "\n";
    }
    if ($timestamp > 0) {
        $time = '<p style="font-size:small; font-weight:bold; text-align:right;">Last-Modified:' . get_date('Y/m/d H:i:s', $time) . '</p>';
    }
    $obj = new $class($rss);
    return $obj->toString($time);
}