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>&nbsp;</td><td>&nbsp;";
                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>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</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.="&nbsp;";
                        else
                                $nineth_column.="<a
href=\"".$CFG_GLPI["root_doc"]."/front/tracking.form.php?ID=".$data["ID"]."\"><strong>".$LANG["joblist"][13]."</strong></a>&nbsp;(".$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.="&nbsp;";
                                } else
                                $nineth_column.="<a
href=\"".$CFG_GLPI["root_doc"]."/front/tracking.form.php?ID=".$data["ID"]."\"><strong>".$LANG["joblist"][13]."</strong></a>&nbsp;(".$job->numberOfFollowups().")";
                        }
                        else
                                $nineth_column.="<a
href=\"".$CFG_GLPI["root_doc"]."/front/tracking.form.php?ID=".$data["ID"]."\"><strong>".$LANG["joblist"][13]."</strong></a>&nbsp;(".$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

Reply via email to