tinyurlを使ってpukiwikiのURLを短くするプラグイン
tinyurlのサービスを利用して、pukiwikiのURLを短くするプラグイン
高専カンファレンスWiki用に作ってみた
動作確認はPukiWiki Plus! 1.4.7plus-u2-i18nのみ。たぶん本家でも動くはず。
<?php /** * TinyURLプラグイン */ define('TINYURL_API', 'http://tinyurl.com/api-create.php'); function tinyurl_get_tinyurl() { global $script, $vars; $_page = isset($vars['page']) ? $vars['page'] : $defaultpage; $tiny_name = CACHE_DIR . encode($_page) . '.tiny'; if (! file_exists($tiny_name)) { $pageurl = $script.'?'.rawurlencode($_page); $tinyurl = tinyurl_call_webapi($pageurl); if($tinyurl) { $fp = fopen($tiny_name, 'w') or die_message('cannot write ' . htmlspecialchars($tiny_name)); fputs($fp, $tinyurl); fclose($fp); } else { return false; } } else { $tinyurl = file_get_contents($tiny_name); if(!preg_match(',^http://tinyurl.com/,', $tinyurl)) { return false; } } return $tinyurl; } function tinyurl_call_webapi($url) { $request_url = TINYURL_API.'?url='.urlencode($url); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $request_url); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $res = curl_exec($ch); curl_close($ch); if(preg_match(',^http://tinyurl.com/,', $res)) { return trim($res); } else return false; } ?>
上のソースをtinyurl.inc.phpとして保存して、plugin あたりに放り込むと吉。
(Pukiwiki Plus!だとextend/pluginがいいかも)
<?php if ($is_page) { ?> <a href="<?php echo $_LINK['reload'] ?>"><span class="small"><?php echo $_LINK['reload'] ?></span></a> <?php require_once(EXT_PLUGIN_DIR.'tinyurl.inc.php'); $tinyurl = tinyurl_get_tinyurl(); ?> <?php if($tinyurl) { ?> [<a href="<?php echo htmlspecialchars($tinyurl); ?>"><span class="small">tinyurl</span></a>] <?php } ?> <?php } ?>
あとは、skinのphpを書き換えれば完成。
ライセンスは PHP Licence とします。