--- /dev/null
+pukiwiki\.(?:dev|official)
+(?!)
+
<?php
// PukiWiki - Yet another WikiWikiWeb clone.
-// $Id: file.php,v 1.72 2006/06/11 14:42:09 henoheno Exp $
+// $Id: file.php,v 1.73 2006/08/08 18:10:59 teanan Exp $
// Copyright (C)
// 2002-2006 PukiWiki Developers Team
// 2001-2002 Originally written by yu-ji
function page_write($page, $postdata, $notimestamp = FALSE)
{
global $trackback;
+ global $autoalias, $aliaspage;
if (PKWK_READONLY) return; // Do nothing
}
links_update($page);
+
+ // for AutoAlias
+ if ($autoalias>0 && $page==$aliaspage) {
+ // AutoAliasName is updated
+ $pages = array_keys(get_autoaliases());
+ if(count($pages)>0) {
+ autolink_pattern_write(CACHE_DIR . 'autoalias.dat',
+ get_autolink_pattern($pages, $autoalias));
+ } else {
+ @unlink(CACHE_DIR . 'autoalias.dat');
+ }
+ }
}
// Modify original text with user-defined / system-defined rules
fclose($fp);
// For AutoLink
- if ($autolink) {
- list($pattern, $pattern_a, $forceignorelist) =
- get_autolink_pattern($pages);
-
- $file = CACHE_DIR . PKWK_AUTOLINK_REGEX_CACHE;
- pkwk_touch_file($file);
- $fp = fopen($file, 'r+') or
- die_message('Cannot open ' . 'CACHE_DIR/' . PKWK_AUTOLINK_REGEX_CACHE);
- set_file_buffer($fp, 0);
- flock($fp, LOCK_EX);
- ftruncate($fp, 0);
- rewind($fp);
- fputs($fp, $pattern . "\n");
- fputs($fp, $pattern_a . "\n");
- fputs($fp, join("\t", $forceignorelist) . "\n");
- flock($fp, LOCK_UN);
- fclose($fp);
+ if ($autolink){
+ autolink_pattern_write(CACHE_DIR . PKWK_AUTOLINK_REGEX_CACHE,
+ get_autolink_pattern($pages, $autolink));
}
}
+// update autolink data
+function autolink_pattern_write($filename, $autolink_pattern)
+{
+ list($pattern, $pattern_a, $forceignorelist) = $autolink_pattern;
+
+ $fp = fopen($filename, 'w') or
+ die_message('Cannot open ' . $filename);
+ set_file_buffer($fp, 0);
+ flock($fp, LOCK_EX);
+ rewind($fp);
+ fputs($fp, $pattern . "\n");
+ fputs($fp, $pattern_a . "\n");
+ fputs($fp, join("\t", $forceignorelist) . "\n");
+ flock($fp, LOCK_UN);
+ fclose($fp);
+}
+
// Get elapsed date of the page
function get_pg_passage($page, $sw = TRUE)
{
<?php
// PukiWiki - Yet another WikiWikiWeb clone.
-// $Id: func.php,v 1.73 2006/05/15 16:41:39 teanan Exp $
+// $Id: func.php,v 1.74 2006/08/08 18:10:59 teanan Exp $
// Copyright (C)
// 2002-2006 PukiWiki Developers Team
// 2001-2002 Originally written by yu-ji
}
// Generate AutoLink patterns (thx to hirofummy)
-function get_autolink_pattern(& $pages)
+function get_autolink_pattern(& $pages, $min_len = -1)
{
global $WikiName, $autolink, $nowikiname;
unset($config);
$auto_pages = array_merge($ignorepages, $forceignorepages);
+ if ($min_len == -1) {
+ $min_len = $autolink; // set $autolink, when omitted.
+ }
+
foreach ($pages as $page)
if (preg_match('/^' . $WikiName . '$/', $page) ?
- $nowikiname : strlen($page) >= $autolink)
+ $nowikiname : strlen($page) >= $min_len)
$auto_pages[] = $page;
if (empty($auto_pages)) {
return $result;
}
+// get pagelist for AutoAlias
+function get_autoaliases()
+{
+ global $aliaspage, $autoalias_max_words;
+
+ $pages = array();
+ $pattern = <<<EOD
+\[\[ # open bracket
+((?:(?!\]\]).)+)> # (1) alias name
+((?:(?!\]\]).)+) # (2) alias link
+\]\] # close bracket
+EOD;
+
+ $postdata = join('', get_source($aliaspage));
+ $matches = array();
+ if(preg_match_all("/$pattern/x", $postdata, $matches, PREG_SET_ORDER)) {
+ foreach($matches as $match) {
+ $pages[$match[1]] = trim($match[2]);
+ }
+ }
+ // fail safe
+ $pages = array_slice($pages, 0, $autoalias_max_words);
+
+ return $pages;
+}
+
// Get absolute-URI of this script
function get_script_uri($init_uri = '')
{
<?php
// PukiWiki - Yet another WikiWikiWeb clone
-// $Id: link.php,v 1.11 2006/04/06 03:00:00 teanan Exp $
+// $Id: link.php,v 1.12 2006/08/08 18:10:59 teanan Exp $
// Copyright (C) 2003-2006 PukiWiki Developers Team
// License: GPL v2 or (at your option) any later version
//
if (is_a($_obj, 'Link_autolink')) { // ¹Ôµ·¤¬°¤¤
$rel_auto[] = $_obj->name;
+ } else if (is_a($_obj, 'Link_autoalias')) {
+ $_alias = $_obj->get_alias($_obj->name);
+ if (is_pagename($_alias)) {
+ $rel_auto[] = $_alias;
+ }
} else {
$rel_new[] = $_obj->name;
}
$_obj->name == $page || $_obj->name == '')
continue;
- $rel[] = $_obj->name;
- if (! isset($ref[$_obj->name][$page]))
- $ref[$_obj->name][$page] = 1;
+ $_name = $_obj->name;
+ if (is_a($_obj, 'Link_autoalias')) {
+ $_alias = $_obj->get_alias($_obj->name);
+ if (! is_pagename($_alias))
+ continue; // not PageName
+ $_name = $_alias;
+ }
+ $rel[] = $_name;
+ if (! isset($ref[$_name][$page]))
+ $ref[$_name][$page] = 1;
if (! is_a($_obj, 'Link_autolink'))
- $ref[$_obj->name][$page] = 0;
+ $ref[$_name][$page] = 0;
}
$rel = array_unique($rel);
if (! empty($rel)) {
<?php
// PukiWiki - Yet another WikiWikiWeb clone.
-// $Id: make_link.php,v 1.30 2005/12/10 07:57:30 henoheno Exp $
+// $Id: make_link.php,v 1.31 2006/08/08 18:10:59 teanan Exp $
// Copyright (C)
// 2003-2005 PukiWiki Developers Team
// 2001-2002 Originally written by yu-ji
'url_interwiki', // URLs (interwiki definition)
'mailto', // mailto: URL schemes
'interwikiname', // InterWikiNames
+ 'autoalias', // AutoAlias
'autolink', // AutoLinks
'bracketname', // BracketNames
'wikiname', // WikiNames
+ 'autoalias_a', // AutoAlias(alphabet)
'autolink_a', // AutoLinks(alphabet)
);
}
}
}
+// AutoAlias
+class Link_autoalias extends Link
+{
+ var $forceignorepages = array();
+ var $auto;
+ var $auto_a; // alphabet only
+ var $alias;
+
+ function Link_autoalias($start)
+ {
+ global $autoalias, $aliaspage;
+
+ parent::Link($start);
+
+ if (!$autoalias || !file_exists(CACHE_DIR.'autoalias.dat') || $this->page==$aliaspage)
+ {
+ return;
+ }
+ @list($auto,$auto_a,$forceignorepages) = file(CACHE_DIR.'autoalias.dat');
+ $this->auto = $auto;
+ $this->auto_a = $auto_a;
+ $this->forceignorepages = explode("\t", trim($forceignorepages));
+ $this->alias = '';
+ }
+ function get_pattern()
+ {
+ return isset($this->auto) ? '(' . $this->auto . ')' : FALSE;
+ }
+ function get_count()
+ {
+ return 1;
+ }
+ function set($arr,$page)
+ {
+ list($name) = $this->splice($arr);
+ // Ignore pages listed
+ if (in_array($name, $this->forceignorepages)) {
+ return FALSE;
+ }
+ return parent::setParam($page,$name,'','pagename',$name);
+ }
+
+ function toString()
+ {
+ $this->alias = $this->get_alias($this->name);
+ if ($this->alias != '') {
+ $link = '[[' . $this->name . '>' . $this->alias . ']]';
+ return make_link($link);
+ }
+ return '';
+ }
+
+ function get_alias($name)
+ {
+ static $aliases;
+
+ if (!isset($aliases)) {
+ $aliases = get_autoaliases();
+ }
+ $result = '';
+ if (array_key_exists($name, $aliases)) {
+ $result = $aliases[$this->name];
+ }
+ return $result;
+ }
+}
+
+class Link_autoalias_a extends Link_autoalias
+{
+ function Link_autoalias_a($start)
+ {
+ parent::Link_autoalias($start);
+ }
+ function get_pattern()
+ {
+ return isset($this->auto_a) ? '(' . $this->auto_a . ')' : FALSE;
+ }
+}
+
// Make hyperlink for the page
function make_pagelink($page, $alias = '', $anchor = '', $refer = '', $isautolink = FALSE)
{
<?php
// PukiWiki - Yet another WikiWikiWeb clone
-// $Id: pukiwiki.ini.php,v 1.140 2006/06/11 14:35:39 henoheno Exp $
+// $Id: pukiwiki.ini.php,v 1.141 2006/08/08 18:10:59 teanan Exp $
// Copyright (C)
// 2002-2006 PukiWiki Developers Team
// 2001-2002 Originally written by yu-ji
$whatsnew = 'RecentChanges'; // Modified page list
$whatsdeleted = 'RecentDeleted'; // Removeed page list
$interwiki = 'InterWikiName'; // Set InterWiki definition here
+$aliaspage = 'AutoAliasName'; // Set AutoAlias definition here
$menubar = 'MenuBar'; // Menu
/////////////////////////////////////////////////
$autolink = 0; // Bytes, 0 = OFF (try 8)
/////////////////////////////////////////////////
+// AutoAlias feature
+
+// AutoAlias minimum bytes (0 = Disable)
+$autoalias = 0;
+
+// Maximum number of words which AutoAlias replace
+$autoalias_max_words = 50;
+
+/////////////////////////////////////////////////
// Enable Freeze / Unfreeze feature
$function_freeze = 1;
--- /dev/null
+*AutoAliasName [#qf9311bb]
+AutoAliasÍѤÎÄêµÁ¥ê¥¹¥È¤Ç¤¹¡£
+
+* PukiWiki [#ee87d39e]
+-[[pukiwiki.official>http://pukiwiki.sourceforge.jp/]]
+-[[pukiwiki.dev>http://pukiwiki.sourceforge.jp/dev/]]