private function createFilters($option0, $item = null, $displayOnlyLinked = null)
 {
     if (isset($item) and isset($displayOnlyLinked)) {
         $lesClasses = $item->classes->sortby("sessionscholaire_id");
         //affiche seulement les classes associées à cet item.
     } else {
         //sinon affiche toutes les classes.
         $lesClasses = Classe::all()->sortby("sessionscholaire_id");
         //ce n'est pas exactement par session, mais si les id de session sont dans le bon ordre, ca le sera.
     }
     $belongsToList = createSelectOptions($lesClasses, [get_class(), 'createOptionsValue'], $option0);
     if (isset($item)) {
         //si on a un item, on sélectionne toutes les classes déjà associées
         $belongsToSelectedIds = $item->classes->pluck('id')->toArray();
     } else {
         //sinon, on sélectionne la classe qui a été passée en paramêtre (si elle est bonne, sinon, la première de la liste
         $belongsToSelectedIds = checkLinkedId(array_keys($belongsToList)[0], Input::get('belongsToId'), 'App\\Models\\Classe');
         //TODO je devrai pas avoir d'input ici, ca devrait venir en parametre
     }
     $filtre1 = createFiltreParSessionPourClasses($lesClasses, true);
     $tp = $item;
     return compact('tp', 'belongsToList', 'belongsToSelectedIds', 'filtre1');
 }
 private function displayView($option0, $selectedValue, $item = null, $displayOnlyLinked = null)
 {
     if (isset($item) and isset($displayOnlyLinked)) {
         $lesTPs = $item->tps;
         //affiche seulement les tps associées à cet item. (utile pour show)
     } else {
         //sinon affiche tous.
         $lesTPs = TP::all()->sortby("nom");
     }
     $belongsToList = createSelectOptions($lesTPs, [get_class(), 'createOptionsValue'], $option0);
     if (isset($item)) {
         //si on a un item, on sélectionne seulement ce qui est associées
         $belongsToSelectedIds = $item->TPs->pluck('id')->toArray();
     } else {
         //sinon, on sélectionne ce qui a été passée en paramêtre (si c'est bon, sinon, la première de la liste
         $belongsToSelectedIds = checkLinkedId(array_keys($belongsToList)[0], $selectedValue, 'App\\Models\\TP');
     }
     $filtre1 = createFiltreParClassePourTP($lesTPs, true);
     $question = $item;
     return compact('question', 'belongsToList', 'belongsToSelectedIds', 'filtre1');
 }
 /**
  * Crée les variables utilisées pour créer l'entête de la view Index 
  * 
  * @param string $option0 le nom d'une option supplémentaire (tous, aucun...) qui est ajouté à l'index 0 du select
  * @param TP $item le tp sélectionné dans le select précédent cet écran
  * @param boolean $displayOnlyLinked flag indiquant si on doit afficher seulement les classes associés à $item
  * @return multitype:
  */
 private function createHeaderForView($option0, $item = null, $displayOnlyLinked = null)
 {
     if (isset($item) and isset($displayOnlyLinked)) {
         $lesClasses = $item->classes;
         //affiche seulement les classes associées à cet item. (utile pour show)
     } else {
         //sinon affiche toutes les classes.
         $lesClasses = Classe::all()->sortby("sessionscholaire_id");
         //ce n'est pas exactement par session, mais si les id sont dans le bon ordre, ca le sera.
     }
     //Si l'usager connecté n'a pas la capacité de gérer les classes, alors on liste seulement les classes associées à cet usager.
     if (!Auth::user()->ability('', 'ajout-classe')) {
         $u = Auth::user();
         $lesClasses = $lesClasses->filter(function ($item) use($u) {
             return $item->professeurs()->get()->contains("id", $u->id);
         });
     }
     $belongsToList = createSelectOptions($lesClasses, [get_class(), 'createOptionsValue'], $option0);
     if (isset($item)) {
         //si on a un item, on sélectionne toutes les classes déjà associées
         $belongsToSelectedIds = $item->classes->pluck('id')->toArray();
     } else {
         //sinon, on sélectionne la classe qui a été passée en paramêtre (si elle est bonne, sinon, la première de la liste
         $belongsToSelectedIds = checkLinkedId(array_keys($belongsToList)[0], Input::get('belongsToId'), 'App\\Models\\Classe');
         //TODO: enlever input d'ici, ca crée un lien avec la view.
     }
     $filtre1 = createFiltreParSessionPourClasses($lesClasses, true);
     $tp = $item;
     return compact('tp', 'belongsToList', 'belongsToSelectedIds', 'filtre1');
 }