Mantisのカスタム項目での一覧表示 | 脱サラ大学生のプログラム日記
2008-01-09 21:55:28

Mantisのカスタム項目での一覧表示

テーマ:Mantis
・カスタム項目とは
バグ報告時に追加で入力できる項目です。テキストや数値の他に日付などを追加することができます。

時刻が指定できないのが残念。。。

・カスタム項目の追加方法
システム管理 -> カスタム項目管理

にて項目をあらかじめ作成しておきます。
作成した後に項目の設定とプロジェクトへの割付を行います。

・一覧ページへのリンク追加
TOPメニューに一覧ページへのリンクを追加します。

・一覧ページ準備
似たページをコピーして作ります。
今回は通常の検索ページである[view_all_bug_page.php]をベースに利用します。

基本的には

include( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'view_all_inc.php' );

上記の行ですべての処理を行っていますので、この行を削除して変わりの処理を追加することになります。

・データ構造確認
今回はカスタム項目をあらかじめ作成しておき、IDなどは決め内で利用したいと思います。

SELECT
 bt.id ,
bt.priority,
bt.severity,
bt.status,
 pt.name as project_name,
bt.category,
bt.handler_id,
st.value,
bt.summary
FROM
mantis_custom_field_string_table st,
mantis_bug_table bt,
mantis_project_table pt
WHERE
 pt.id = bt.project_id AND
 bt.id = st.bug_id AND
st.field_id = 1
ORDER BY
st.value

上記でカスタム項目1番にデータが入っている一覧を取得しています。
データ項目については的確な資料がないのでデータの中味とソースコードを読んで解析することになります。

・テーブル構造出力
検索ページを参考に、定型のテーブル構造をecho文などで出力します。

・データ取得
上記のSQLを実行してデータを取得します。
mantisでのSQL実行は以下の手順です。

$query = "select now()";
$result = db_query( $query );
while( $row = db_fetch_array( $result ) ){
print_r( $row );
}

・データ処理
$priority = get_enum_element( 'priority', $row['priority'] );
$severity = get_enum_element( 'severity', $row['severity'] );
$status = get_enum_element( 'status', $row['status'] );

mantis上で定義されている情報などは上記のような取得関数があります。
この関数を利用することで番号から対応する文字列を取得することが可能です。

・フィルター処理
このままだとプロジェクトなどのフィルタリングがされていないので追加する必要があります。

// プロジェクトフィルター
$project_id = helper_get_current_project();
if( $project_id == 0 ){
// すべて
$project_str = " 1 = 1 ";
} else {
$project_list = array();
$project_list = project_hierarchy_get_all_subprojects($project_id);
$project_list[] = $project_id;
 
$project_str = " bt.project_id in ( " . implode( ",", $project_list ) . " ) ";
}

現状のプロジェクトIDを取得して、0番以外の場合にはプロジェクトが選択されているので、サブプロジェクトを含めたプロジェクト番号リストを取得してフィルタリングを行います。

同じようにリストで必要なフィルタリング機能があれば追加していきます。

・今後
ある程度定型処理になりそうなので、表示項目とソート条件を選んで一覧表示できるような拡張があれば便利そうですね。
標準の検索もある程度項目の編集が可能ですが、ちと設定が面倒ですしいろいろなビューがあったほうがいいですよね。

Ameba人気のブログ

Amebaトピックス

    ブログをはじめる

    たくさんの芸能人・有名人が
    書いているAmebaブログを
    無料で簡単にはじめることができます。

    公式トップブロガーへ応募

    多くの方にご紹介したいブログを
    執筆する方を「公式トップブロガー」
    として認定しております。

    芸能人・有名人ブログを開設

    Amebaブログでは、芸能人・有名人ブログを
    ご希望される著名人の方/事務所様を
    随時募集しております。