-<?php\r
-/////////////////////////////////////////////////\r
-// PukiWiki - Yet another WikiWikiWeb clone.\r
-//\r
-// $Id: update_entities.inc.php,v 1.1 2003/06/24 01:19:00 arino Exp $\r
-//\r
-\r
-// DTD¤Î¾ì½ê\r
-define('W3C_XHTML_DTD_LOCATION','http://www.w3.org/TR/xhtml1/DTD/');\r
-\r
-// ¥á¥Ã¥»¡¼¥¸ÀßÄê\r
-function plugin_update_entities_init()\r
-{\r
- $messages = array(\r
- '_entities_messages'=>array(\r
- 'title_update' => '¥¥ã¥Ã¥·¥å¹¹¿·',\r
- 'msg_adminpass' => '´ÉÍý¼Ô¥Ñ¥¹¥ï¡¼¥É',\r
- 'btn_submit' => '¼Â¹Ô',\r
- 'msg_done' => '¥¥ã¥Ã¥·¥å¤Î¹¹¿·¤¬´°Î»¤·¤Þ¤·¤¿¡£',\r
- 'msg_usage' => '\r
-* ½èÍýÆâÍÆ\r
-\r
-:ʸ»ú¼ÂÂλ²¾È¤Ë¥Þ¥Ã¥Á¤¹¤ëÀµµ¬É½¸½¥Ñ¥¿¡¼¥ó¤Î¥¥ã¥Ã¥·¥å¤ò¹¹¿·|\r
-PHP¤Î»ý¤Ä¥Æ¡¼¥Ö¥ë¤ª¤è¤ÓW3C¤ÎDTD¤ò¥¹¥¥ã¥ó¤·¤Æ¡¢¥¥ã¥Ã¥·¥å¤ËµÏ¿¤·¤Þ¤¹¡£\r
-\r
-* ½èÍýÂоÝ\r
-¡ÖCOLOR(red){not found.}¡×¤¬É½¼¨¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ï½èÍý¤µ¤ì¤Þ¤»¤ó¡£\r
--%s\r
-\r
-* ¼Â¹Ô\r
-´ÉÍý¼Ô¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ·¤Æ¡¢[¼Â¹Ô]¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£\r
-'\r
- )\r
- );\r
- set_plugin_messages($messages);\r
-}\r
-\r
-function plugin_update_entities_action()\r
-{\r
- global $script,$post,$vars,$adminpass;\r
- global $_entities_messages;\r
- \r
- if (empty($vars['action']) or empty($post['adminpass']) or md5($post['adminpass']) != $adminpass)\r
- {\r
- $items = plugin_update_entities_create();\r
- $body = convert_html(sprintf($_entities_messages['msg_usage'],join("\n-",$items)));\r
- $body .= <<<EOD\r
-<form method="POST" action="$script">\r
- <div>\r
- <input type="hidden" name="plugin" value="update_entities" />\r
- <input type="hidden" name="action" value="update" />\r
- {$_entities_messages['msg_adminpass']}\r
- <input type="password" name="adminpass" size="20" value="" />\r
- <input type="submit" value="{$_entities_messages['btn_submit']}" />\r
- </div>\r
-</form>\r
-EOD;\r
- return array(\r
- 'msg'=>$_entities_messages['title_update'],\r
- 'body'=>$body\r
- );\r
- }\r
- else if ($vars['action'] == 'update')\r
- {\r
- plugin_update_entities_create(TRUE);\r
- return array(\r
- 'msg'=>$_entities_messages['title_update'],\r
- 'body'=>$_entities_messages['msg_done']\r
- );\r
- }\r
- \r
- return array(\r
- 'msg'=>$_entities_messages['title_update'],\r
- 'body'=>$_entities_messages['err_invalid']\r
- );\r
-}\r
-function plugin_update_entities_create($do=FALSE)\r
-{\r
- $files = array('xhtml-lat1.ent','xhtml-special.ent','xhtml-symbol.ent');\r
- $entities = strtr(\r
- array_values(get_html_translation_table(HTML_ENTITIES)),\r
- array('&'=>'',';'=>'')\r
- );\r
- $items = array('php:html_translation_table');\r
- foreach ($files as $file)\r
- {\r
- $source = file(W3C_XHTML_DTD_LOCATION.$file);\r
-// or die_message('cannot receive '.W3C_XHTML_DTD_LOCATION.$file.'.');\r
- if (!is_array($source))\r
- {\r
- $items[] = "w3c:$file COLOR(red):not found.";\r
- continue;\r
- }\r
- $items[] = "w3c:$file";\r
- if (preg_match_all('/<!ENTITY\s+([A-Za-z0-9]+)/',\r
- join('',$source),$matches,PREG_PATTERN_ORDER))\r
- {\r
- $entities = array_merge($entities,$matches[1]);\r
- }\r
- }\r
- $entities = array_unique($entities);\r
- if (!$do)\r
- {\r
- return $items;\r
- }\r
- sort($entities,SORT_STRING);\r
- $min = 999;\r
- $max = 0;\r
- foreach ($entities as $entity)\r
- {\r
- $len = strlen($entity);\r
- $max = max($max,$len);\r
- $min = min($min,$len);\r
- }\r
- \r
- $pattern = "(?=[a-zA-Z0-9]\{$min,$max})".get_autolink_pattern_sub($entities,0,count($entities),0);\r
- $fp = fopen(CACHE_DIR.'entities.dat','w')\r
- or die_message('cannot write file '.CAHCE_DIR.'entities.dat<br />maybe permission is not writable or filename is too long');\r
- fwrite($fp,$pattern);\r
- fclose($fp);\r
- \r
- return $items;\r
-}\r
-?>\r
+<?php
+/////////////////////////////////////////////////
+// PukiWiki - Yet another WikiWikiWeb clone.
+//
+// $Id: update_entities.inc.php,v 1.2 2003/07/22 05:56:49 arino Exp $
+//
+
+// DTD¤Î¾ì½ê
+define('W3C_XHTML_DTD_LOCATION','http://www.w3.org/TR/xhtml1/DTD/');
+
+// ¥á¥Ã¥»¡¼¥¸ÀßÄê
+function plugin_update_entities_init()
+{
+ $messages = array(
+ '_entities_messages'=>array(
+ 'title_update' => '¥¥ã¥Ã¥·¥å¹¹¿·',
+ 'msg_adminpass' => '´ÉÍý¼Ô¥Ñ¥¹¥ï¡¼¥É',
+ 'btn_submit' => '¼Â¹Ô',
+ 'msg_done' => '¥¥ã¥Ã¥·¥å¤Î¹¹¿·¤¬´°Î»¤·¤Þ¤·¤¿¡£',
+ 'msg_usage' => '
+* ½èÍýÆâÍÆ
+
+:ʸ»ú¼ÂÂλ²¾È¤Ë¥Þ¥Ã¥Á¤¹¤ëÀµµ¬É½¸½¥Ñ¥¿¡¼¥ó¤Î¥¥ã¥Ã¥·¥å¤ò¹¹¿·|
+PHP¤Î»ý¤Ä¥Æ¡¼¥Ö¥ë¤ª¤è¤ÓW3C¤ÎDTD¤ò¥¹¥¥ã¥ó¤·¤Æ¡¢¥¥ã¥Ã¥·¥å¤ËµÏ¿¤·¤Þ¤¹¡£
+
+* ½èÍýÂоÝ
+¡ÖCOLOR(red){not found.}¡×¤¬É½¼¨¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ï½èÍý¤µ¤ì¤Þ¤»¤ó¡£
+-%s
+
+* ¼Â¹Ô
+´ÉÍý¼Ô¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ·¤Æ¡¢[¼Â¹Ô]¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£
+'
+ )
+ );
+ set_plugin_messages($messages);
+}
+
+function plugin_update_entities_action()
+{
+ global $script,$post,$vars,$adminpass;
+ global $_entities_messages;
+
+ if (empty($vars['action']) or empty($post['adminpass']) or md5($post['adminpass']) != $adminpass)
+ {
+ $items = plugin_update_entities_create();
+ $body = convert_html(sprintf($_entities_messages['msg_usage'],join("\n-",$items)));
+ $body .= <<<EOD
+<form method="POST" action="$script">
+ <div>
+ <input type="hidden" name="plugin" value="update_entities" />
+ <input type="hidden" name="action" value="update" />
+ {$_entities_messages['msg_adminpass']}
+ <input type="password" name="adminpass" size="20" value="" />
+ <input type="submit" value="{$_entities_messages['btn_submit']}" />
+ </div>
+</form>
+EOD;
+ return array(
+ 'msg'=>$_entities_messages['title_update'],
+ 'body'=>$body
+ );
+ }
+ else if ($vars['action'] == 'update')
+ {
+ plugin_update_entities_create(TRUE);
+ return array(
+ 'msg'=>$_entities_messages['title_update'],
+ 'body'=>$_entities_messages['msg_done']
+ );
+ }
+
+ return array(
+ 'msg'=>$_entities_messages['title_update'],
+ 'body'=>$_entities_messages['err_invalid']
+ );
+}
+function plugin_update_entities_create($do=FALSE)
+{
+ $files = array('xhtml-lat1.ent','xhtml-special.ent','xhtml-symbol.ent');
+ $entities = strtr(
+ array_values(get_html_translation_table(HTML_ENTITIES)),
+ array('&'=>'',';'=>'')
+ );
+ $items = array('php:html_translation_table');
+ foreach ($files as $file)
+ {
+ $source = file(W3C_XHTML_DTD_LOCATION.$file);
+// or die_message('cannot receive '.W3C_XHTML_DTD_LOCATION.$file.'.');
+ if (!is_array($source))
+ {
+ $items[] = "w3c:$file COLOR(red):not found.";
+ continue;
+ }
+ $items[] = "w3c:$file";
+ if (preg_match_all('/<!ENTITY\s+([A-Za-z0-9]+)/',
+ join('',$source),$matches,PREG_PATTERN_ORDER))
+ {
+ $entities = array_merge($entities,$matches[1]);
+ }
+ }
+ if (!$do)
+ {
+ return $items;
+ }
+ $entities = array_unique($entities);
+ sort($entities,SORT_STRING);
+ $min = 999;
+ $max = 0;
+ foreach ($entities as $entity)
+ {
+ $len = strlen($entity);
+ $max = max($max,$len);
+ $min = min($min,$len);
+ }
+
+ $pattern = "(?=[a-zA-Z0-9]\{$min,$max})".get_autolink_pattern_sub($entities,0,count($entities),0);
+ $fp = fopen(CACHE_DIR.'entities.dat','w')
+ or die_message('cannot write file '.CAHCE_DIR.'entities.dat<br />maybe permission is not writable or filename is too long');
+ fwrite($fp,$pattern);
+ fclose($fp);
+
+ return $items;
+}
+?>