コード例 #1
0
ファイル: sListe.php プロジェクト: Gnucki/DaFramework
 public function InjecterListeObjetsMetiers(MListeObjetsMetiers $mListeObjetsMetiers, $dejaChargee = false)
 {
     // Si on est dans le cas d'un changement de page, on vérifie que c'est bien cette liste qui est visée.
     if (self::$changementPage !== NULL && self::$changementPage !== '') {
         if (array_key_exists($this->TypeSynchro(), self::$changementPage) && array_key_exists($this->numero, self::$changementPage[$this->TypeSynchro()])) {
             // Si on change effectivement de page.
             if ($this->numPageCourante != self::$changementPage[$this->TypeSynchro()][$this->numero] && $this->statique !== true) {
                 $this->numPageCourante = self::$changementPage[$this->TypeSynchro()][$this->numero];
                 GContexte::ListePageCourante($this->contexte, $this->TypeSynchro(), $this->numero, $this->numPageCourante);
                 GContexte::ListeActive($this->contexte, $this->AncienTypeSynchroPage(), true);
             } else {
                 $this->chargement = false;
             }
         } else {
             $this->chargement = false;
         }
     } else {
         if (self::$chargementEtage !== NULL && self::$chargementEtage !== '') {
             $this->chargement = $this->ChargementEtageListeParente();
         } else {
             if (self::$chargementContenu !== NULL && self::$chargementContenu !== '') {
                 $this->chargement = $this->ChargementContenuListeParente();
             }
         }
     }
     if ($this->chargement === true) {
         // Récupération des informations complémentaires sur les champs.
         // Pour que cela fonctionne, il faut que le nom du champ défini dans InitialisationChamps soit le même que
         // celui auquel il est lié dans l'objet métier de la liste.
         $mObjetMetier = $mListeObjetsMetiers->GetObjetMetierReference();
         foreach ($this->champs as $nomChamp => &$champ) {
             $noms = $nomChamp;
             if (strpos($nomChamp, ',') !== false) {
                 $noms = explode(',', $nomChamp);
             }
             $nomPremChamp = $noms;
             if (is_array($noms)) {
                 $nomPremChamp = $noms[0];
             }
             if ($mObjetMetier->IsChampExiste($nomPremChamp) === true) {
                 $champ[LISTE_CHAMPLISTE_MIN] = $mObjetMetier->GetChampMinFromTableau($noms);
                 $champ[LISTE_CHAMPLISTE_MAX] = $mObjetMetier->GetChampMaxFromTableau($noms);
                 $champ[LISTE_CHAMPLISTE_LONGUEURMIN] = $mObjetMetier->GetChampLongueurMinFromTableau($noms);
                 $champ[LISTE_CHAMPLISTE_LONGUEURMAX] = $mObjetMetier->GetChampLongueurMaxFromTableau($noms);
                 $champ[LISTE_CHAMPLISTE_REGEXP] = $mObjetMetier->GetChampRegExpFromTableau($noms);
                 if ($champ[LISTE_CHAMPLISTE_VALEURPARDEFAUT] === NULL) {
                     $champ[LISTE_CHAMPLISTE_VALEURPARDEFAUT] = $mObjetMetier->GetChampValeurParDefautFromTableau($noms);
                 }
                 $champ[LISTE_CHAMPLISTE_NONNUL] = $mObjetMetier->IsChampNonNulFromTableau($noms);
             }
         }
         // Récupération du nombre total d'éléments.
         if ($this->nbElementsTotal < 0 && $this->nbElementsParPage >= 1) {
             $this->nbElementsTotal = $mListeObjetsMetiers->GetNbElementsFromBase();
         }
         // On vérifie que le contenu de la liste n'a pas déjà été chargé par une autre liste de même type.
         $listeElem = NULL;
         if (array_key_exists($this->TypeSynchroPage(), self::$listeElemChargee)) {
             $listeElem = self::$listeElemChargee[$this->TypeSynchroPage()];
             $dejaChargee = true;
         }
         if ($dejaChargee === false) {
             // Si le nombre total d'éléments est supérieur au nombre d'éléments qu'on affiche dans une page de la liste.
             if ($this->nbElementsParPage >= 1 && $this->nbElementsParPage < $this->nbElementsTotal) {
                 // Si la liste est triable, on affiche l'élément de la page d'avant afin qu'on puisse faire changer l'élément de page.
                 if ($this->triable === true && $this->numPageCourante >= 2) {
                     $mListeObjetsMetiers->Charger($this->nbElementsParPage + 1, ($this->numPageCourante - 1) * $this->nbElementsParPage - 1);
                 } else {
                     $mListeObjetsMetiers->Charger($this->nbElementsParPage, ($this->numPageCourante - 1) * $this->nbElementsParPage);
                 }
             } else {
                 $mListeObjetsMetiers->Charger();
             }
             // On enregistre le contenu de la liste dans une variable globale aux listes, notamment pour éviter
             // de recharger 2 fois le contenu pour 2 listes identiques.
             if (self::$listeElemChargee === NULL) {
                 self::$listeElemChargee = array();
             }
             self::$listeElemChargee[$this->TypeSynchroPage()] = $mListeObjetsMetiers->GetListe();
         }
         if ($listeElem === NULL) {
             $listeElem = $mListeObjetsMetiers->GetListe();
         }
         // Récupération des éléments de la liste métier et injection dans la liste graphique.
         foreach ($listeElem as $mObjetMetier) {
             $element = array();
             foreach ($this->champs as $nomChamp => &$champ) {
                 $noms = $nomChamp;
                 if (strpos($nomChamp, ',') !== false) {
                     $noms = explode(',', $nomChamp);
                 }
                 if ($mObjetMetier->IsChampExiste($noms) === true) {
                     $champValeur = $mObjetMetier->GetChampSQLFromTableau($noms);
                     $element[LISTE_ELEMENT_OBJET] = $mObjetMetier;
                     if ($champValeur !== NULL) {
                         $element[$nomChamp][LISTE_ELEMENT_VALEURCONSULT] = $champValeur;
                     } else {
                         $element[$nomChamp][LISTE_ELEMENT_VALEURCONSULT] = $this->ChampValeurParDefaut($nomChamp);
                     }
                 } else {
                     $this->SetElemValeurChampSpec($element, $nomChamp);
                 }
             }
             $this->elements[] = $element;
         }
     }
 }