ページへ戻る
印刷
modPukiWikiの改造メモ
をテンプレートにして作成 ::
XOOPS マニア
UsersWiki
:nao-pon/メモ/modPukiWiki をテンプレートにして作成
開始行:
&font(16pt,b){&font(Red){※};この改造で得られる機能は、[[...
(2004-08-23に[[CVS:http://www.kowa.org/modules/xfmod/forg...
*modPukiWikiの改造メモ
#contents
**共通リンクディレクトリに対応してみた。
***PukiWikiConfig.php - class PukiWikiConfig
#code(){{{
function initParams() {
global $_PukiWikiParam;
$_PukiWikiParam = array();
//PukiWikiMod 共通リンクディレクトリ読み込み by nao-pon
$wiki_common_dirs = "";
if (MOD_PUKI_WIKI_VER == "1.3" && file_exists(MOD_PUKI_...
{
include(MOD_PUKI_WIKI_CACHE_DIR."config.php");
}
// 共通リンクディレクトリ展開
$wiki_common_dirs = preg_split("/\s+/",trim($wiki_commo...
sort($wiki_common_dirs,SORT_STRING);
$_PukiWikiParam['wiki_common_dirs'] = $wiki_common_dirs;
// オートリンクデータ読み込みとチェック
$need_cache_clear = 0;
$_PukiWikiParam['autolink_dat'] = array();
if (file_exists(MOD_PUKI_WIKI_CACHE_DIR.'autolink.dat'))
{
$_PukiWikiParam['autolink_dat'] = file(MOD_PUKI_WIKI_C...
if (!file_exists(MOD_PUKI_CACHE_DIR .'autolink.dat') &...
{
// 比較用オートリンクデータを保存
list($pattern, $pattern_a, $forceignorelist) = $_Puki...
$fp = fopen(MOD_PUKI_CACHE_DIR . 'autolink.dat', 'wb'...
die_message('Cannot write autolink file ' .
MOD_PUKI_CACHE_DIR . '/autolink.dat' .
'<br />Maybe permission is not writable');
set_file_buffer($fp, 0);
flock($fp, LOCK_EX);
rewind($fp);
fputs($fp, trim($pattern) . "\n");
fputs($fp, trim($pattern_a) . "\n");
fputs($fp, trim($forceignorelist) . "\n");
flock($fp, LOCK_UN);
fclose($fp);
// オートリンクデータが更新されているのでキャッシュを...
$dh = dir(MOD_PUKI_CACHE_DIR);
while (($file = $dh->read()) !== FALSE)
{
if (substr($file,-6) != '.cache')
{
continue;
}
$file = MOD_PUKI_CACHE_DIR.$file;
unlink($file);
}
$dh->close();
}
}
}
}}}
***PukiWikiLink.php - class PukiWikiLink_autolink
#code(){{{
function set($arr,$page)
{
$WikiName = PukiWikiConfig::getParam('WikiName');
list($name) = $this->splice($arr);
// 共通リンクディレクトリ対応 by nao-pon
$alias = $name;
// 無視リストに含まれている、あるいは存在しないページを...
// 共通リンクディレクトリ対応 by nao-pon
//if (in_array($name,$this->forceignorepages) or !PukiW...
if (in_array($name,$this->forceignorepages))
{
return FALSE;
}
// 共通リンクディレクトリを探す by nao-pon
if (!PukiWikiFunc::is_page($name))
{
if (!$name = PukiWikiFunc::get_real_pagename($name))
return FALSE;
}
// 共通リンクディレクトリ対応 by nao-pon
//return parent::setParam($page,$name,'','pagename',$na...
return parent::setParam($page,$name,'','pagename',$alia...
}
}}}
***PukiWikiFunc.php
#code(){{{
// 共通リンクディレクトリの処理(該当フルネームを返す:ブ...
function get_real_pagename($page)
{
static $real_pages = array();
$page = PukiWikiFunc::strip_bracket($page);
if (isset($real_pages[$page])) return $real_pages[$page];
$real_pages[$page] = false;
foreach(PukiWikiConfig::getParam('wiki_common_dirs') as...
{
$check = $dir.$page;
if (PukiWikiFunc::is_page($check))
{
$real_pages[$page] = $check;
break;
}
}
return $real_pages[$page];
}
}}}
**レンダリングデータをキャッシュするようにしてみた。
***PukiWikiConfig.php - class PukiWikiConfig
#code(){{{
function initParams() {
global $_PukiWikiParam;
$_PukiWikiParam = array();
//PukiWikiMod 共通リンクディレクトリ読み込み by nao-pon
$wiki_common_dirs = "";
if (MOD_PUKI_WIKI_VER == "1.3" && file_exists(MOD_PUKI_...
{
include(MOD_PUKI_WIKI_CACHE_DIR."config.php");
}
// 共通リンクディレクトリ展開
$wiki_common_dirs = preg_split("/\s+/",trim($wiki_commo...
sort($wiki_common_dirs,SORT_STRING);
$_PukiWikiParam['wiki_common_dirs'] = $wiki_common_dirs;
// オートリンクデータ読み込みとチェック
$need_cache_clear = 0;
$_PukiWikiParam['autolink_dat'] = array();
if (file_exists(MOD_PUKI_WIKI_CACHE_DIR.'autolink.dat'))
{
$_PukiWikiParam['autolink_dat'] = file(MOD_PUKI_WIKI_C...
if (!file_exists(MOD_PUKI_CACHE_DIR .'autolink.dat') &...
{
// 比較用オートリンクデータを保存
list($pattern, $pattern_a, $forceignorelist) = $_Puki...
$fp = fopen(MOD_PUKI_CACHE_DIR . 'autolink.dat', 'wb'...
die_message('Cannot write autolink file ' .
MOD_PUKI_CACHE_DIR . '/autolink.dat' .
'<br />Maybe permission is not writable');
set_file_buffer($fp, 0);
flock($fp, LOCK_EX);
rewind($fp);
fputs($fp, trim($pattern) . "\n");
fputs($fp, trim($pattern_a) . "\n");
fputs($fp, trim($forceignorelist) . "\n");
flock($fp, LOCK_UN);
fclose($fp);
// オートリンクデータが更新されているのでキャッシュを...
$dh = dir(MOD_PUKI_CACHE_DIR);
while (($file = $dh->read()) !== FALSE)
{
if (substr($file,-6) != '.cache')
{
continue;
}
$file = MOD_PUKI_CACHE_DIR.$file;
unlink($file);
}
$dh->close();
}
}
}
}}}
***PukiWikiRender.php
#code(){{{
function transform($wikistr) {
global $_PukiWikiFootExplain;
if (PukiWikiConfig::getParam('use_cache'))
{
// キャッシュ確認 by nao-pon
$cache_file = MOD_PUKI_CACHE_DIR.md5($wikistr).".cache";
if (file_exists($cache_file)) return join('',file($cac...
}
if (!is_array($wikistr)) {
$wikistr = explode("\n", $wikistr);
}
$this->_body->parse($wikistr);
$retstr = $this->_body->toString();
if (count($_PukiWikiFootExplain)) {
ksort($_PukiWikiFootExplain,SORT_NUMERIC);
$retstr .= count($_PukiWikiFootExplain) ? PukiWikiConf...
}
$_PukiWikiFootExplain=array();
if (PukiWikiConfig::getParam('use_cache'))
{
//キャッシュ保存 by nao-pon
$fp = fopen($cache_file, "wb");
fwrite($fp, $retstr);
fclose($fp);
}
return $retstr;
}
}}}
***PukiWikiLink.php - class PukiWikiLink_autolink
#code(){{{
function PukiWikiLink_autolink($start)
{
parent::PukiWikiLink($start);
$autolink = PukiWikiConfig::getParam('autolink');
$autolink_data = PukiWikiConfig::getParam('autolink_dat...
// AutoLinkデータを予めチェックするようにした by nao-pon
//if (!$autolink or !file_exists(MOD_PUKI_WIKI_CACHE_DI...
if (!$autolink or !$autolink_data)
{
return;
}
// AutoLinkデータを予めチェックするようにした by nao-pon
//@list($auto,$auto_a,$forceignorepages) = file(MOD_PUK...
@list($auto,$auto_a,$forceignorepages) = $autolink_data;
$this->auto = $auto;
$this->auto_a = $auto_a;
$this->forceignorepages = explode("\t",trim($forceignor...
}
}}}
**WikiNameの自動リンクが有効の時、ページがない場合のペー...
***PukiWikiLink.php
※ 関数作成
#code(){{{
function make_pagelink($page, $alias='',$anchor='',$refe...
{
$s_page = htmlspecialchars(PukiWikiFunc::strip_bracket(...
$s_alias = ($alias == '') ? $s_page : $alias;
if ($page == '') {
return "<a href=\"$anchor\">$s_alias</a>";
}
$r_page = rawurlencode($page);
$r_refer = ($refer == '') ? '' : '&refer='.rawurlen...
if (PukiWikiFunc::is_page($page)) {
$passage = "";
$title = PukiWikiConfig::getParam('link_compact') ? ''...
return "<a href=\"".MOD_PUKI_WIKI_URL."?$r_page$anchor...
} else {
// ページ作成リンクをつけないオプション追加 by nao-pon
if (!PukiWikiConfig::getParam('makepage_link')) return...
$retval = "$s_alias<a href=\"".MOD_PUKI_WIKI_URL."?cmd...
if (!PukiWikiConfig::getParam('link_compact')) {
$retval = "<span class=\"".PukiWikiConfig::getParam('...
}
return $retval;
}
}
}}}
終了行:
&font(16pt,b){&font(Red){※};この改造で得られる機能は、[[...
(2004-08-23に[[CVS:http://www.kowa.org/modules/xfmod/forg...
*modPukiWikiの改造メモ
#contents
**共通リンクディレクトリに対応してみた。
***PukiWikiConfig.php - class PukiWikiConfig
#code(){{{
function initParams() {
global $_PukiWikiParam;
$_PukiWikiParam = array();
//PukiWikiMod 共通リンクディレクトリ読み込み by nao-pon
$wiki_common_dirs = "";
if (MOD_PUKI_WIKI_VER == "1.3" && file_exists(MOD_PUKI_...
{
include(MOD_PUKI_WIKI_CACHE_DIR."config.php");
}
// 共通リンクディレクトリ展開
$wiki_common_dirs = preg_split("/\s+/",trim($wiki_commo...
sort($wiki_common_dirs,SORT_STRING);
$_PukiWikiParam['wiki_common_dirs'] = $wiki_common_dirs;
// オートリンクデータ読み込みとチェック
$need_cache_clear = 0;
$_PukiWikiParam['autolink_dat'] = array();
if (file_exists(MOD_PUKI_WIKI_CACHE_DIR.'autolink.dat'))
{
$_PukiWikiParam['autolink_dat'] = file(MOD_PUKI_WIKI_C...
if (!file_exists(MOD_PUKI_CACHE_DIR .'autolink.dat') &...
{
// 比較用オートリンクデータを保存
list($pattern, $pattern_a, $forceignorelist) = $_Puki...
$fp = fopen(MOD_PUKI_CACHE_DIR . 'autolink.dat', 'wb'...
die_message('Cannot write autolink file ' .
MOD_PUKI_CACHE_DIR . '/autolink.dat' .
'<br />Maybe permission is not writable');
set_file_buffer($fp, 0);
flock($fp, LOCK_EX);
rewind($fp);
fputs($fp, trim($pattern) . "\n");
fputs($fp, trim($pattern_a) . "\n");
fputs($fp, trim($forceignorelist) . "\n");
flock($fp, LOCK_UN);
fclose($fp);
// オートリンクデータが更新されているのでキャッシュを...
$dh = dir(MOD_PUKI_CACHE_DIR);
while (($file = $dh->read()) !== FALSE)
{
if (substr($file,-6) != '.cache')
{
continue;
}
$file = MOD_PUKI_CACHE_DIR.$file;
unlink($file);
}
$dh->close();
}
}
}
}}}
***PukiWikiLink.php - class PukiWikiLink_autolink
#code(){{{
function set($arr,$page)
{
$WikiName = PukiWikiConfig::getParam('WikiName');
list($name) = $this->splice($arr);
// 共通リンクディレクトリ対応 by nao-pon
$alias = $name;
// 無視リストに含まれている、あるいは存在しないページを...
// 共通リンクディレクトリ対応 by nao-pon
//if (in_array($name,$this->forceignorepages) or !PukiW...
if (in_array($name,$this->forceignorepages))
{
return FALSE;
}
// 共通リンクディレクトリを探す by nao-pon
if (!PukiWikiFunc::is_page($name))
{
if (!$name = PukiWikiFunc::get_real_pagename($name))
return FALSE;
}
// 共通リンクディレクトリ対応 by nao-pon
//return parent::setParam($page,$name,'','pagename',$na...
return parent::setParam($page,$name,'','pagename',$alia...
}
}}}
***PukiWikiFunc.php
#code(){{{
// 共通リンクディレクトリの処理(該当フルネームを返す:ブ...
function get_real_pagename($page)
{
static $real_pages = array();
$page = PukiWikiFunc::strip_bracket($page);
if (isset($real_pages[$page])) return $real_pages[$page];
$real_pages[$page] = false;
foreach(PukiWikiConfig::getParam('wiki_common_dirs') as...
{
$check = $dir.$page;
if (PukiWikiFunc::is_page($check))
{
$real_pages[$page] = $check;
break;
}
}
return $real_pages[$page];
}
}}}
**レンダリングデータをキャッシュするようにしてみた。
***PukiWikiConfig.php - class PukiWikiConfig
#code(){{{
function initParams() {
global $_PukiWikiParam;
$_PukiWikiParam = array();
//PukiWikiMod 共通リンクディレクトリ読み込み by nao-pon
$wiki_common_dirs = "";
if (MOD_PUKI_WIKI_VER == "1.3" && file_exists(MOD_PUKI_...
{
include(MOD_PUKI_WIKI_CACHE_DIR."config.php");
}
// 共通リンクディレクトリ展開
$wiki_common_dirs = preg_split("/\s+/",trim($wiki_commo...
sort($wiki_common_dirs,SORT_STRING);
$_PukiWikiParam['wiki_common_dirs'] = $wiki_common_dirs;
// オートリンクデータ読み込みとチェック
$need_cache_clear = 0;
$_PukiWikiParam['autolink_dat'] = array();
if (file_exists(MOD_PUKI_WIKI_CACHE_DIR.'autolink.dat'))
{
$_PukiWikiParam['autolink_dat'] = file(MOD_PUKI_WIKI_C...
if (!file_exists(MOD_PUKI_CACHE_DIR .'autolink.dat') &...
{
// 比較用オートリンクデータを保存
list($pattern, $pattern_a, $forceignorelist) = $_Puki...
$fp = fopen(MOD_PUKI_CACHE_DIR . 'autolink.dat', 'wb'...
die_message('Cannot write autolink file ' .
MOD_PUKI_CACHE_DIR . '/autolink.dat' .
'<br />Maybe permission is not writable');
set_file_buffer($fp, 0);
flock($fp, LOCK_EX);
rewind($fp);
fputs($fp, trim($pattern) . "\n");
fputs($fp, trim($pattern_a) . "\n");
fputs($fp, trim($forceignorelist) . "\n");
flock($fp, LOCK_UN);
fclose($fp);
// オートリンクデータが更新されているのでキャッシュを...
$dh = dir(MOD_PUKI_CACHE_DIR);
while (($file = $dh->read()) !== FALSE)
{
if (substr($file,-6) != '.cache')
{
continue;
}
$file = MOD_PUKI_CACHE_DIR.$file;
unlink($file);
}
$dh->close();
}
}
}
}}}
***PukiWikiRender.php
#code(){{{
function transform($wikistr) {
global $_PukiWikiFootExplain;
if (PukiWikiConfig::getParam('use_cache'))
{
// キャッシュ確認 by nao-pon
$cache_file = MOD_PUKI_CACHE_DIR.md5($wikistr).".cache";
if (file_exists($cache_file)) return join('',file($cac...
}
if (!is_array($wikistr)) {
$wikistr = explode("\n", $wikistr);
}
$this->_body->parse($wikistr);
$retstr = $this->_body->toString();
if (count($_PukiWikiFootExplain)) {
ksort($_PukiWikiFootExplain,SORT_NUMERIC);
$retstr .= count($_PukiWikiFootExplain) ? PukiWikiConf...
}
$_PukiWikiFootExplain=array();
if (PukiWikiConfig::getParam('use_cache'))
{
//キャッシュ保存 by nao-pon
$fp = fopen($cache_file, "wb");
fwrite($fp, $retstr);
fclose($fp);
}
return $retstr;
}
}}}
***PukiWikiLink.php - class PukiWikiLink_autolink
#code(){{{
function PukiWikiLink_autolink($start)
{
parent::PukiWikiLink($start);
$autolink = PukiWikiConfig::getParam('autolink');
$autolink_data = PukiWikiConfig::getParam('autolink_dat...
// AutoLinkデータを予めチェックするようにした by nao-pon
//if (!$autolink or !file_exists(MOD_PUKI_WIKI_CACHE_DI...
if (!$autolink or !$autolink_data)
{
return;
}
// AutoLinkデータを予めチェックするようにした by nao-pon
//@list($auto,$auto_a,$forceignorepages) = file(MOD_PUK...
@list($auto,$auto_a,$forceignorepages) = $autolink_data;
$this->auto = $auto;
$this->auto_a = $auto_a;
$this->forceignorepages = explode("\t",trim($forceignor...
}
}}}
**WikiNameの自動リンクが有効の時、ページがない場合のペー...
***PukiWikiLink.php
※ 関数作成
#code(){{{
function make_pagelink($page, $alias='',$anchor='',$refe...
{
$s_page = htmlspecialchars(PukiWikiFunc::strip_bracket(...
$s_alias = ($alias == '') ? $s_page : $alias;
if ($page == '') {
return "<a href=\"$anchor\">$s_alias</a>";
}
$r_page = rawurlencode($page);
$r_refer = ($refer == '') ? '' : '&refer='.rawurlen...
if (PukiWikiFunc::is_page($page)) {
$passage = "";
$title = PukiWikiConfig::getParam('link_compact') ? ''...
return "<a href=\"".MOD_PUKI_WIKI_URL."?$r_page$anchor...
} else {
// ページ作成リンクをつけないオプション追加 by nao-pon
if (!PukiWikiConfig::getParam('makepage_link')) return...
$retval = "$s_alias<a href=\"".MOD_PUKI_WIKI_URL."?cmd...
if (!PukiWikiConfig::getParam('link_compact')) {
$retval = "<span class=\"".PukiWikiConfig::getParam('...
}
return $retval;
}
}
}}}
ページ名: