array('緊急','重要','普通','低'), '_bugtrack_plugin_state_list' => array('提案','着手','CVS待ち','完了','保留','却下'), '_bugtrack_plugin_state_sort' => array('着手','CVS待ち','保留','完了','提案','却下'), '_bugtrack_plugin_state_bgcolor' => array('#ccccff','#ffcc99','#ccddcc','#ccffcc','#ffccff','#cccccc','#ff3333'), '_bugtrack_plugin_title' => '$1 Bugtrack Plugin', '_bugtrack_plugin_base' => 'ページ', '_bugtrack_plugin_summary' => 'サマリ', '_bugtrack_plugin_priority' => '優先順位', '_bugtrack_plugin_state' => '状態', '_bugtrack_plugin_name' => '投稿者', '_bugtrack_plugin_date' => '投稿日', '_bugtrack_plugin_body' => 'メッセージ', '_bugtrack_plugin_category' => 'カテゴリー', '_bugtrack_plugin_pagename' => 'ページ名', '_bugtrack_plugin_pagename_comment' => '空欄のままだと自動的にページ名が振られます。', '_bugtrack_plugin_version_comment' => '空欄でも構いません', '_bugtrack_plugin_version' => 'バージョン', '_bugtrack_plugin_submit' => '追加' ); set_plugin_messages($messages); } function plugin_bugtrack_action() { global $script,$post,$vars,$_bugtrack_plugin_title; if ($post['mode'] == 'submit') { $page = plugin_bugtrack_write($post['base'], $post['pagename'], $post['summary'], $post['name'], $post['priority'], $post['state'], $post['category'], $post['version'], $post['body']); header("Location: $script?".rawurlencode($page)); die; } else { $ret['msg'] = $_bugtrack_plugin_title; $ret["body"] = plugin_bugtrack_print_form($vars['category']); } return $ret; } function plugin_bugtrack_print_form($base,$category) { global $_bugtrack_plugin_priority_list,$_bugtrack_plugin_state_list; global $_bugtrack_plugin_priority, $_bugtrack_plugin_state, $_bugtrack_plugin_name; global $_bugtrack_plugin_date, $_bugtrack_plugin_category, $_bugtrack_plugin_body; global $_bugtrack_plugin_summary, $_bugtrack_plugin_submit, $_bugtrack_plugin_version; global $_bugtrack_plugin_pagename, $_bugtrack_plugin_pagename_comment; global $_bugtrack_plugin_version_comment; global $script; $select_priority = ''; for ($i = 0; $i < count($_bugtrack_plugin_priority_list); ++$i) { if ($i < count($_bugtrack_plugin_priority_list) - 1) { $selected = ''; } else { $selected = ' selected="selected"'; } $select_priority .= "\n"; } $select_state = ''; for ($i = 0; $i < count($_bugtrack_plugin_state_list); ++$i) { $select_state .= "\n"; } if (count($category) == 0) { $encoded_category = ''; } else { $encoded_category = ''; } $body = <<
$_bugtrack_plugin_name
$_bugtrack_plugin_category $encoded_category
$_bugtrack_plugin_priority
$_bugtrack_plugin_state
$_bugtrack_plugin_pagename $_bugtrack_plugin_pagename_comment
$_bugtrack_plugin_version $_bugtrack_plugin_version_comment
$_bugtrack_plugin_summary
$_bugtrack_plugin_body
EOD; return $body; } function plugin_bugtrack_template($base, $summary, $name, $priority, $state, $category, $version, $body) { global $_bugtrack_plugin_priority, $_bugtrack_plugin_state, $_bugtrack_plugin_name; global $_bugtrack_plugin_date, $_bugtrack_plugin_category, $_bugtrack_plugin_base; global $_bugtrack_plugin_body, $_bugtrack_plugin_version; global $script, $WikiName; if (!preg_match("/^$WikiName$$/",$name)) { $name = "[[$name]]"; } if (!preg_match("/^$WikiName$$/",$base)) { $base = "[[$base]]"; } return << 0) { $args = func_get_args(); $category = $args; $base = array_shift($category); } return plugin_bugtrack_print_form($base,$category); } function plugin_bugtrack_pageinfo($page,$no = NULL) { global $WikiName, $InterWikiName, $BracketName; if ($no === NULL) { $no = preg_match('/\/([0-9]+)$/',$page,$matches) ? $matches[1] : 0; } $source = get_source($page); if (preg_match("/move\s*to\s*($WikiName|$InterWikiName|\[\[$BracketName\]\])/",$source[0],$match)) { return plugin_bugtrack_pageinfo(strip_bracket($match[1]),$no); } $body = join("\n",$source); $summary = $name = $priority = $state = $category = 'test'; $itemlist = array(); foreach(array('summary','name','priority','state','category') as $item) { $itemname = '_bugtrack_plugin_'.$item; global $$itemname; $itemname = $$itemname; if (preg_match("/-\s*$itemname\s*:\s*(.*)\s*/",$body,$matches)) { if ($item == 'name') { $$item = htmlspecialchars(strip_bracket($matches[1])); } else { $$item = htmlspecialchars($matches[1]); } } } global $_bugtrack_plugin_summary; if (preg_match("/\*([^\n]+)/",$body,$matches)) { $summary = htmlspecialchars($matches[1]); } return array($page, $no, $summary, $name, $priority, $state, $category); } function plugin_bugtrack_list_convert() { global $script,$vars; global $_bugtrack_plugin_priority, $_bugtrack_plugin_state, $_bugtrack_plugin_name; global $_bugtrack_plugin_date, $_bugtrack_plugin_category, $_bugtrack_plugin_summary; global $_bugtrack_plugin_state_sort,$_bugtrack_plugin_state_list,$_bugtrack_plugin_state_bgcolor; $page = $vars['page']; if (func_num_args()) { list($page) = func_get_args(); } $data = array(); $pattern = "$page/"; $pattern_len = strlen($pattern); foreach (get_existpages() as $page) { if (strpos($page,$pattern) === 0 and is_numeric(substr($page,$pattern_len))) { $line = plugin_bugtrack_pageinfo($page); array_push($data,$line); } } $table = array(); for ($i = 0; $i <= count($_bugtrack_plugin_state_list) + 1; ++$i) { $table[$i] = array(); } foreach ($data as $line) { list($page, $no, $summary, $name, $priority, $state, $category) = $line; $page_link = make_link("[[$page]]"); $state_no = array_search($state,$_bugtrack_plugin_state_sort); if ($state_no === NULL) { $state_no = count($_bugtrack_plugin_state_list); } $bgcolor = $_bugtrack_plugin_state_bgcolor[$state_no]; $row = << $page_link $state $priority $category $name $summary EOD; $table[$state_no][$no] = $row; } $table_html = <<   $_bugtrack_plugin_state $_bugtrack_plugin_priority $_bugtrack_plugin_category $_bugtrack_plugin_name $_bugtrack_plugin_summary EOD; for ($i = 0; $i <= count($_bugtrack_plugin_state_list); ++$i) { ksort($table[$i],SORT_NUMERIC); $table_html .= join("\n",$table[$i]); } return "\n$table_html
"; } ?>