Petite astuce rapide, mais relativement pratique lorsque l’on travaille avec plusieurs projets avec mantis bugtracker, il est courant de saisir un bug dans le mauvais projet.
Pour corriger cela, il n’existe qu’un seul moyen, éditer directement ces informations dans la base de données…
Pas très pratique vous en conviendrez !

Pour faciliter cela quelques modifications suffisent :

Pour commencer nous allons éditer le fichier bug_update_advanced_page.php situé à la racine du dossier.

A la ligne 120 ( Avant le début du formulaire d’édition), rajoutez le code suivant :

#  Formulaire pour changer le projet d'un bug
echo '<form action="bug_update_change_project_page.php" name="form_bug_update_change_project" method="post" >
<input type="hidden" name="bug_id" value="',$f_bug_id,'" />
<input type="hidden" name="new_project_id" id="new_project_id" value="0" />
</form>';
# Fin Formulaire

Remplacez ensuite les lignes suivantes :

# Project Name
echo '<td>', $tpl_project_name, '</td>';

par

#Possibilité de changer le projet du bug
echo '<td>', $tpl_project_name,'<br />',
lang_get('change_project'),'&nbsp;
<select id="select_change_project_id" onchange="document.getElementById(\'new_project_id\').value = this.value;document.forms.form_bug_update_change_project.submit();">'
,print_project_option_list( join( ';', helper_get_current_project_trace() ), true, null, true )
,'</select>',
'</td>';

Nous allons ensuite créer un nouveau fichier bug_update_change_project_page.php qui sera chargée de mettre à jour le projet du bug.
Voici son code :

#   Modification du projet d'un bug depuis sa page d'édition
require_once( 'core.php' );
require_once( 'database_api.php' );
 
#  Récupération de l'id du bug et du nouvel id projet
$f_bug_id = gpc_get_int( 'bug_id' );
$f_new_project_id = gpc_get( 'new_project_id' );
 
# Si le projet est un sous-projet l'id récupéré est sous la forme projetParent;id_projet
$f_project_id = explode(';',$f_new_project_id);
$f_project_id_index = sizeof($f_project_id);
 
if ( sizeof($f_project_id) > 1 ) {
 
$f_project_id_index = sizeof($f_project_id) - 1 ;
$f_new_project_id = $f_project_id[$f_project_id_index];
}
 
 
#  Mise à jour de la table
$t_bug_table = db_get_table( 'mantis_bug_table' );
 
$p_query = "UPDATE $t_bug_table
SET project_id = ". db_param() ."
WHERE id = ".db_param()." ";
 
$query = db_query_bound( $p_query, array( $f_new_project_id, $f_bug_id));
#  Redirection vers la page de détails du bug
print_header_redirect( 'view.php' . '?id=' . $f_bug_id );

Pour finir, il est nécessaire d’ajouter une clé de traduction dans le fichier “lang/strings_french.txt”

$s_change_project = ‘Changer de projet’;

Une fois tous ces éléments changé il est désormais possible de changer le projet d’un bug directement depuis sa page d’édition 🙂