2014年8月14日 星期四

[PHP] 使用 Mantis SOAP API - 新增 issue custom_fields

架好 Mantis 後,預設是有開啟 SOAP API 的,可以瀏覽 http://server_ip/mantis/api/soap/mantisconnect.php?wsdl 試試,應該會看到 SOAP API 的使用列表跟使用方式。

對於 custom_fields 的用法,可用在新增一些額外的資料屬性來記錄,必須先新增 custom_fields:

Manage -> Manage Custom Fields -> 填寫想的欄位名字 -> New Custom Field -> 在 Write Access 請填寫 Reporter 以及 Display 的區域也勾一勾 -> update custom field,別忘了下方也要選擇使用的 project 並點選 Link Custom Field

接著,在使用 Mantis SOAP API 時,必須先用 mc_project_get_custom_fields 把 custom_fields 的資料撈出來,因為在使用 mc_issue_add 時,對於 custom_fields 必須填寫 id 跟 name:

// 使用 Hash 來記錄
$custom_fields = array();
foreach( $c->mc_project_get_custom_fields($user, $pass, $project_id) as $raw )
        if (isset($raw->field->name) )
                $custom_fields[$raw->field->name] = $raw->field;


最後再新增 issue data 時,記得 custom_fields 是一個 Array of Object,所以新增的額外欄位資料,請用:

$field_item = new stdClass();
$field_item->field = $custom_fields["Custom_field_name"];
$field_item->value = $custom_fields_value["Custom_field_name"];


例如:

$issue_data = array(
        'project' => array(
                        'id' => $project_id
                ),
        'category' => $issus_category,
        'summary' => $issue_summary,
        'description' => $issue_description,
'custom_fields' => array()
);

$field_item = new stdClass();
$field_item->field = $custom_fields["Custom_field_name"];
$field_item->value = $custom_fields_value["Custom_field_name"];

array_push( $issue_data['custom_fields'] , $field_item );

$issus_id = $c->mc_issue_add($user, $pass, $issue_data);

沒有留言:

張貼留言