hypweb.net
XOOPSマニア  最新情報のRSS(サイト全体)
[ 自宅サーバーWebRing |ID=54 前後5表示乱移動サイト一覧 ]

TOP » UsersWiki » nao-pon » メモ » modPukiWiki の変更点
  
現: 2004-08-23 (月) 17:27:45 nao-pon ソース
Line 1: Line 1:
 +&font(16pt,b){&font(Red){※};この改造で得られる機能は、[[のぶのぶさん:http://www.kowa.org/]] にすべて取り込んで頂きました。};~
 +(2004-08-23に[[CVS:http://www.kowa.org/modules/xfmod/forgecvs/cvsbrowse.php/modpukiwiki]]で確認。)
 +*modPukiWikiの改造メモ [#t52d615d]
 +#contents
 +**共通リンクディレクトリに対応してみた。 [#da420ccd]
 +***PukiWikiConfig.php - class PukiWikiConfig [#pbb01dbf]
 +#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_WIKI_CACHE_DIR."config.php"))
 +     {
 +     include(MOD_PUKI_WIKI_CACHE_DIR."config.php");
 +     }
 +     // 共通リンクディレクトリ展開
 +     $wiki_common_dirs = preg_split("/\s+/",trim($wiki_common_dirs));
 +     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_CACHE_DIR.'autolink.dat');
 +     if (!file_exists(MOD_PUKI_CACHE_DIR .'autolink.dat') || ($_PukiWikiParam['autolink_dat'] != file(MOD_PUKI_CACHE_DIR .'autolink.dat')))
 +     {
 +     // 比較用オートリンクデータを保存
 +     list($pattern, $pattern_a, $forceignorelist) = $_PukiWikiParam['autolink_dat'];
 +     $fp = fopen(MOD_PUKI_CACHE_DIR . 'autolink.dat', 'wb') or
 +     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 [#e39558ff]
 +#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 !PukiWikiFunc::is_page($name))
 +     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',$name);
 +     return parent::setParam($page,$name,'','pagename',$alias);
 +    }
 +}}}
 +***PukiWikiFunc.php [#r8845b5a]
 +#code(){{{
 +    // 共通リンクディレクトリの処理(該当フルネームを返す:ブラケットなし) by nao-pon
 +    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 $dir)
 +     {
 +     $check = $dir.$page;
 +     if (PukiWikiFunc::is_page($check))
 +     {
 +     $real_pages[$page] = $check;
 +     break;
 +     }
 +     }
 +     return $real_pages[$page];
 +    }
 +}}}
 +
 +
 +**レンダリングデータをキャッシュするようにしてみた。 [#v5f9bb25]
 +***PukiWikiConfig.php - class PukiWikiConfig [#zcf10ea4]
 +#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_WIKI_CACHE_DIR."config.php"))
 +     {
 +     include(MOD_PUKI_WIKI_CACHE_DIR."config.php");
 +     }
 +     // 共通リンクディレクトリ展開
 +     $wiki_common_dirs = preg_split("/\s+/",trim($wiki_common_dirs));
 +     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_CACHE_DIR.'autolink.dat');
 +     if (!file_exists(MOD_PUKI_CACHE_DIR .'autolink.dat') || ($_PukiWikiParam['autolink_dat'] != file(MOD_PUKI_CACHE_DIR .'autolink.dat')))
 +     {
 +     // 比較用オートリンクデータを保存
 +     list($pattern, $pattern_a, $forceignorelist) = $_PukiWikiParam['autolink_dat'];
 +     $fp = fopen(MOD_PUKI_CACHE_DIR . 'autolink.dat', 'wb') or
 +     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 [#e15c3480]
 +#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($cache_file));
 +     }
 +    
 +     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) ? PukiWikiConfig::getParam('note_hr').join("\n",$_PukiWikiFootExplain) : '';
 +     }
 +     $_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 [#j4babbbd]
 +#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_DIR.'autolink.dat'))
 +     if (!$autolink or !$autolink_data)
 +     {
 +     return;
 +     }
 +     // AutoLinkデータを予めチェックするようにした by nao-pon
 +     //@list($auto,$auto_a,$forceignorepages) = file(MOD_PUKI_WIKI_CACHE_DIR.'autolink.dat');
 +     @list($auto,$auto_a,$forceignorepages) = $autolink_data;
 +     $this->auto = $auto;
 +     $this->auto_a = $auto_a;
 +     $this->forceignorepages = explode("\t",trim($forceignorepages));
 +    }
 +}}}
 +
 +**WikiNameの自動リンクが有効の時、ページがない場合のページ作成リンク有り無しのオプションを追加してみた。 [#dbcd986b]
 +***PukiWikiLink.php [#g0230e22]
 +※ 関数作成
 +#code(){{{
 +    function make_pagelink($page, $alias='',$anchor='',$refer='')
 +    {
 +     $s_page = htmlspecialchars(PukiWikiFunc::strip_bracket($page));
 +     $s_alias = ($alias == '') ? $s_page : $alias;
 +    
 +     if ($page == '') {
 +     return "<a href=\"$anchor\">$s_alias</a>";
 +     }
 +    
 +     $r_page = rawurlencode($page);
 +     $r_refer = ($refer == '') ? '' : '&refer='.rawurlencode($refer);
 +    
 +
 +     if (PukiWikiFunc::is_page($page)) {
 +     $passage = "";
 +     $title = PukiWikiConfig::getParam('link_compact') ? '' : " title=\"$s_page$passage\"";
 +     return "<a href=\"".MOD_PUKI_WIKI_URL."?$r_page$anchor\"$title>$s_alias</a>";
 +     } else {
 +     // ページ作成リンクをつけないオプション追加 by nao-pon
 +     if (!PukiWikiConfig::getParam('makepage_link')) return $s_alias;
 +     $retval = "$s_alias<a href=\"".MOD_PUKI_WIKI_URL."?cmd=edit&page=$r_page$r_refer\">".PukiWikiConfig::getParam('_symbol_noexists')."</a>";
 +     if (!PukiWikiConfig::getParam('link_compact')) {
 +     $retval = "<span class=\"".PukiWikiConfig::getParam('style_prefix')."noexists\">$retval</span>";
 +     }
 +     return $retval;
 +     }
 +    }
 +}}}
  

  • nao-pon/メモ/modPukiWiki のバックアップ差分(No. All)
    • 現: 2004-08-23 (月) 17:27:45 nao-pon

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 256, today: 1, yesterday: 0
このページのTopへ
メインメニュー
ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録
最近の更新
オンライン状況
807 人のユーザが現在オンラインです。 (16 人のユーザが UsersWiki を参照しています。)

登録ユーザ: 0
ゲスト: 807

もっと...
サイト情報