Mantisバグトラッカーバージョン1.2.8のインストールをカスタマイズして、バグレポートページに動的なカスタム列挙型フィールドを含めるように取り組んでいます。動的列挙型を設定する方法を理解し、対応する関数を作成して、可能な値を生成することができました。これが私がこれまでに持っているものです:
[管理]->[カスタムフィールドの管理]->[レガシージョブ番号]
名前:「レガシージョブ番号」
タイプ:列挙型
可能な値:= Legacy_job_number
デフォルト値:0
読み取りおよび書き込みアクセス:ビューア
最小。長さ:1
最大。長さ:0
フィルターに追加:チェック
済みジョブ作成時に表示:チェック
済みジョブ更新時に表示:チェック済み
custom_functions_inc.php
function custom_function_override_enum_legacy_job_number() {
$t_project_name = project_get_name( helper_get_current_project() );
$t_job_time_code = htmlentities(trim(substr(date('U'), 6, 9)));
$t_project_description = project_get_field( helper_get_current_project(), 'description', '' );
$t_project_description = "$t_project_description";
$t_job_code = $t_project_description . "2012" . $t_job_time_code;
$t_possible_values_array = array("", "$t_job_code");
$t_possible_values = implode( '|', $t_possible_values_array );
return $t_possible_values;
}
私が抱えている問題は、新しいジョブを送信しようとしたり、「レガシージョブ番号」フィールドをそのまま更新して既存のジョブを更新しようとしたりするたびに、アプリケーションエラー#1303「レガシージョブ」フィールドの値が無効になることです。番号"。'
$ t_job_time_code = htmlentities(trim(substr(date('U')、6、9)));によって生成されたタイムスタンプ値まで問題を追跡しました。-削除すると、バグレポートは正常に送信されます。(ご覧のとおり、日付を$ t_job_codeにハードコーディングしているだけです。これは理想的ではありませんが、機能します。)
私が最終的にやりたいのは、特定のバグを識別するために使用されるため、一意である可能性が99.99%の「レガシージョブ番号」文字列に4桁の番号を追加することです。タイムスタンプを使用すると、タイムスタンプが絶えず増加するため、これにはうまくいくと思いましたが、どうやらMantisはそれを好まないようです。私はこれについていくつかのバリエーションを試しましたが、rand()またはmt_rand()によって生成された乱数を使用したくないのは、それでも重複が発生する可能性があるためです。
誰かが(1)なぜこれが起こっているのか、そして(2)私がそれを修正しようとするかもしれないことを説明するのを手伝ってもらえますか?
ご検討とご協力に感謝いたします。
最高、ピーター