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 Glpi-dev@gna.org https://mail.gna.org/listinfo/glpi-dev