function plugin_tenki_cache_image_fetch($target, $id)
{
    $filename = MOD_PUKI_UPLOAD_DIR . $id . "_tenki.gif";
    if (!is_readable($filename)) {
        $result = PukiWikiFunc::http_request($target);
        if ($result['rc'] == 200) {
            $data = $result['data'];
            plugin_tenki_cache_image_save($data, $filename);
            $size = @getimagesize($filename);
            $url = MOD_PUKI_UPLOAD_URL . $id . "_tenki.gif";
        } else {
            $url = '';
            $size = false;
        }
    } else {
        $url = MOD_PUKI_UPLOAD_URL . $id . "_tenki.gif";
        $size = @getimagesize($filename);
    }
    return array($url, $size);
}
function plugin_ref_make_thumb($url, $s_file_base, $width, $height, $org_w, $org_h)
{
    $s_file = MOD_PUKI_UPLOAD_DIR . $s_file_base;
    // GD fuction のチェック
    if (!function_exists("ImageCreate")) {
        return $url;
    }
    //GDをサポートしていない
    $gifread = '';
    if (MOD_PUKI_REF_GD_VERSION == 2) {
        $imagecreate = "ImageCreateTrueColor";
        $imageresize = "ImageCopyResampled";
    } else {
        $imagecreate = "ImageCreate";
        $imageresize = "ImageCopyResized";
    }
    if (function_exists("ImageCreateFromGif")) {
        $gifread = "on";
    }
    if (PukiWikiFunc::is_url($url)) {
        //URL
        $result = PukiWikiFunc::http_request($url);
        if ($result['rc'] !== 200) {
            return '';
        }
        $orgimg = tempnam(MOD_PUKI_UPLOAD_DIR, 'mpw_thumb');
        $fp = fopen($orgimg, 'w');
        fwrite($fp, $result['data']);
        fclose($fp);
        $url = $orgimg;
    }
    $size = @GetImageSize($url);
    $dst_im = $imagecreate($width, $height);
    switch ($size[2]) {
        case "1":
            //gif形式
            if ($gifread == "on") {
                $src_im = ImageCreateFromGif($url);
                $imageresize($dst_im, $src_im, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
                touch($s_file);
                ImageJpeg($dst_im, $s_file);
                $url = MOD_PUKI_UPLOAD_URL . $s_file_base;
            }
            break;
        case "2":
            //jpg形式
            $src_im = ImageCreateFromJpeg($url);
            $imageresize($dst_im, $src_im, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
            touch($s_file);
            ImageJpeg($dst_im, $s_file);
            $url = MOD_PUKI_UPLOAD_URL . $s_file_base;
            break;
        case "3":
            //png形式
            $src_im = ImageCreateFromPng($url);
            $imageresize($dst_im, $src_im, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
            touch($s_file);
            ImageJpeg($dst_im, $s_file);
            $url = MOD_PUKI_UPLOAD_URL . $s_file_base;
            break;
        default:
            break;
    }
    if (!empty($orgimg)) {
        unlink($orgimg);
    }
    return $url;
}
function plugin_isbn_cache_image_fetch($target, &$info, $check = true, $img_size = "M")
{
    $filename = MOD_PUKI_UPLOAD_DIR . PukiWikiFunc::encode("ISBN" . $target . $img_size . ".jpg");
    if (!is_readable($filename) || is_readable($filename) && $check && MOD_PUKI_ISBN_AMAZON_EXPIRE_IMG * 3600 * 24 < time() - filemtime($filename)) {
        $url = "http://images-jp.amazon.com/images/P/" . strtoupper($target) . ".09." . $img_size . "ZZZZZZZ.jpg";
        if (!PukiWikiFunc::is_url($url)) {
            return false;
        }
        // URL 形式チェック
        $result = PukiWikiFunc::http_request($url);
        if ($result['rc'] !== 200) {
            $data = '';
            $info[0] = 0;
        } else {
            $data = $result['data'];
            plugin_isbn_cache_image_save($data, $filename);
            $info = @getimagesize($filename);
        }
        if ($info[0] <= 1) {
            $url = "http://images-jp.amazon.com/images/P/" . strtoupper($target) . ".01." . $img_size . "ZZZZZZZ.jpg";
            $result = PukiWikiFunc::http_request($url);
            if ($result['rc'] !== 200) {
                $data = '';
                $info[0] = 0;
            } else {
                $data = $result['data'];
                plugin_isbn_cache_image_save($data, $filename);
                $info = @getimagesize($filename);
            }
            if ($info[0] <= 1) {
                $url = $noimage = $img_size == "M" ? MOD_PUKI_NOIMAGE : MOD_PUKI_NOIMAGE_S;
                $result = PukiWikiFunc::http_request($url);
                if ($result['rc'] === 200) {
                    $data = $result['data'];
                    plugin_isbn_cache_image_save($data, $filename);
                    $info = @getimagesize($filename);
                }
            }
        }
    } else {
        $info = @getimagesize($filename);
    }
    return MOD_PUKI_UPLOAD_URL . PukiWikiFunc::encode("ISBN" . $target . $img_size . ".jpg");
}
function plugin_showrss_get_rss($target, $usecache)
{
    $buf = '';
    $time = NULL;
    if ($usecache) {
        // 期限切れのキャッシュをクリア
        plugin_showrss_cache_expire($usecache);
        // キャッシュがあれば取得する
        $filename = MOD_PUKI_CACHE_DIR . PukiWikiFunc::encode($target) . '.tmp';
        if (is_readable($filename)) {
            $buf = join('', file($filename));
            $time = filemtime($filename) - MOD_PUKI_LOCALZONE;
        }
    }
    if ($time === NULL) {
        // rss本体を取得
        $data = PukiWikiFunc::http_request($target);
        if ($data['rc'] !== 200) {
            return array(FALSE, 0);
        }
        $buf = $data['data'];
        $time = MOD_PUKI_UTIME;
        // キャッシュを保存
        if ($usecache) {
            $fp = fopen($filename, 'w');
            fwrite($fp, $buf);
            fclose($fp);
        }
    }
    // parse
    $obj = new ShowRSS_XML();
    return array($obj->parse($buf), $time);
}