Le but est qu'un utilisateur, un chef de service par exemple, puisse voir les
tickets des utilisateurs de son groupe quand le suivi ne conserne pas du
matériel ou logiciel assigné à son groupe.
J'ai fait pas mal de modifs pour arrivé au résultat et j'espère que tout est
présent ici.
Bonne journée et bon courrage :)
Et ajout un paramétrage :
Voir les tickets des utilisateurs de mes groupes
patch proposé
modifier la classe user.class.php
création de la fonction getGroupFromDB()
en fin de classe :
function getGroupFromDB() {
global $DB;
$sql = "SELECT * FROM glpi_users_groups WHERE
FK_users=".$this->fields["ID"]."";
$this->fields["groups"] = array();
$resultat = $DB->query($sql);
while ($data=$DB->fetch_array($resultat)){
$this->fields["groups"][] = $data["FK_groups"];
}
}
fichier inc/profiles.class.php :
remplacer
$helpdesk=array("ID","name","interface","faq","reservation_helpdesk","create_ticket","comment_ticket","observe_ticket","password_update","helpdesk_hardware","helpdesk_hardware_type","show_group_ticket","show_group_hardware");
par
$helpdesk=array("ID","name","interface","faq","reservation_helpdesk","create_ticket","comment_ticket","observe_ticket","password_update","helpdesk_hardware","helpdesk_hardware_type","show_group_ticket","show_group_hardware",
"show_usersgroup_ticket");
après
echo "<tr class='tab_bg_2'>";
echo "<td>".$LANG["profiles"][9].":</td><td>";
dropdownYesNo("observe_ticket",$this->fields["observe_ticket"]);
echo "</td>";
echo "<td>".$LANG["profiles"][26].":</td><td>";
dropdownYesNo("show_group_ticket",$this->fields["show_group_ticket"]);
echo "</td>";
echo "</tr>";
ajouter
echo "<tr class='tab_bg_2'>";
echo "<td> </td><td> ";
echo "</td>";
echo "<td>".$LANG["profiles"][32].":</td><td>";
dropdownYesNo("show_usersgroup_ticket",$this->fields["show_usersgroup_ticket"]);
echo "</td>";
echo "</tr>";
et après
echo "<tr class='tab_bg_2'>";
echo "<td>".$LANG["profiles"][20].":</td><td>";
dropdownYesNo("show_planning",$this->fields["show_planning"]);
echo "</td>";
echo "<td>".$LANG["profiles"][21].":</td><td>";
dropdownYesNo("show_all_planning",$this->fields["show_all_planning"]);
echo "</td>";
echo "<td>".$LANG["profiles"][26]."</td><td>";
dropdownYesNo("show_group_ticket",$this->fields["show_group_ticket"]);
echo "</td></tr>";
ajouter
echo "<tr class='tab_bg_2'>";
echo
"<td> </td><td> </td><td> </td><td> </td>";
echo "<td>".$LANG["profiles"][32].":</td><td>";
dropdownYesNo("show_usersgroup_ticket",$this->fields["show_usersgroup_ticket"]);
echo "</td>";
echo "</tr>";
fichier locales/fr_FR.php:
$LANG["profiles"][32]="Voir les tickets des utilisateurs de mes groupes";
le faire aussi pour les autres langues.
fichier inc/tracking.function.php
else if ($group==-1&&$author!=0&&haveRight("show_group_ticket",1)){
if (count($_SESSION["glpigroups"])){
$where.=" AND ( ";
$i=0;
foreach ($_SESSION["glpigroups"] as $gp){
if ($i>0) $where.=" OR ";
$where.=" glpi_tracking.FK_group = '$gp' ";
$i++;
}
par
else if
($group==-1&&$author!=0&&(haveRight("show_group_ticket",1)||haveRight("show_usersgroup_ticket",1))){
if (count($_SESSION["glpigroups"])){
$where.=" AND ( ";
$i=0;
foreach ($_SESSION["glpigroups"] as $gp){
if (haveRight("show_group_ticket",1)) {
if ($i>0) $where.=" OR ";
$where.=" glpi_tracking.FK_group = '$gp' ";
}
if (haveRight("show_usersgroup_ticket",1)) {
if ($i>0) $where.=" OR ";
$where.=" OR glpi_tracking.author IN (SELECT
FK_users from glpi_users_groups
where glpi_users_groups.FK_groups =
'$gp')";
}
$i++;
}
dans traking.function.php
if
(!haveRight("show_ticket","1")&&$data["author"]!=$_SESSION["glpiID"]&&$data["assign"]!=$_SESSION["glpiID"]&&(!haveRight("show_group_ticket",1)||!in_array($data["FK_group"],$_SESSION["glpigroups"])))
{
return false;
}
par
if (!haveRight("show_ticket","1")
&&$job->fields["author"]!=$_SESSION["glpiID"]
&&$job->fields["assign"]!=$_SESSION["glpiID"]
&&!($_SESSION["glpiactiveprofile"]["show_group_ticket"]&&in_array($job->fields["FK_group"],$_SESSION["glpigroups"]))
){
$author=new User();
$author->getFromDB($job->fields["author"]);
$author->getGroupFromDB();
$trouver = false;
for ($i=0; $i<count($_SESSION["glpigroups"]) &&
!$trouver; $i++) {
$trouver =
in_array($_SESSION["glpigroups"][$i],
$author->fields["groups"]);
}
if (!$trouver) Return false;
}
et
if ($_SESSION["glpiactiveprofile"]["interface"]=="central"){
if
(!haveRight("show_ticket","1")&&$data["author"]!=$_SESSION["glpiID"]&&$data["assign"]!=$_SESSION["glpiID"]&&(!haveRight("show_group_ticket",1)||!in_array($data["FK_group"],$_SESSION["glpigroups"])))
$nineth_column.=" ";
else
$nineth_column.="<a
href=\"".$CFG_GLPI["root_doc"]."/front/tracking.form.php?ID=".$data["ID"]."\"><strong>".$LANG["joblist"][13]."</strong></a> (".$job->numberOfFollowups().")";
}
par
if ($_SESSION["glpiactiveprofile"]["interface"]=="central"){
if
(!haveRight("show_ticket","1")&&$data["author"]!=$_SESSION["glpiID"]&&$data["assign"]!=$_SESSION["glpiID"]&&(!haveRight("show_group_ticket",1)||!in_array($data["FK_group"],$_SESSION["glpigroups"])))
{
$author=new User();
$author->getFromDB($data["author"]);
$author->getGroupFromDB();
$trouver = false;
for ($i=0; $i<count($_SESSION["glpigroups"]) &&
!$trouver; $i++) {
$trouver =
in_array($_SESSION["glpigroups"][$i],
$author->fields["groups"]);
}
if (!$trouver) {
$nineth_column.=" ";
} else
$nineth_column.="<a
href=\"".$CFG_GLPI["root_doc"]."/front/tracking.form.php?ID=".$data["ID"]."\"><strong>".$LANG["joblist"][13]."</strong></a> (".$job->numberOfFollowups().")";
}
else
$nineth_column.="<a
href=\"".$CFG_GLPI["root_doc"]."/front/tracking.form.php?ID=".$data["ID"]."\"><strong>".$LANG["joblist"][13]."</strong></a> (".$job->numberOfFollowups().")";
}
ajouter champ dans la table glpi_profiles :
show_usersgroup_ticket char(1);
_______________________________________________
Glpi-dev mailing list
[email protected]
https://mail.gna.org/listinfo/glpi-dev