Пример #1
0
 public static function GetDifferentielReferentielForSelect($nom, $colId, $colLib, $colDesc = '', $idParDefaut = NULL, $colCat = '', $colCatLib = '')
 {
     $nomRef = '';
     if (is_array($nom)) {
         foreach ($nom as $nomCol) {
             if ($nomRef !== '') {
                 $nomRef .= ',';
             }
             $nomRef .= $nomCol;
         }
     } else {
         $nomRef = $nom;
     }
     $contexte = self::ContexteCourant();
     if (self::$referentiels[REF_TYPE_DONNEES][$contexte][$nomRef][REF_DONNEES_DIFFSELOK] === false) {
         $changementRef = false;
         self::$referentiels[REF_TYPE_DONNEES][$contexte][$nomRef][REF_DONNEES_DIFFSELOK] = true;
         $nouveauRef = self::GetReferentiel($nomRef);
         $ancienRef = NULL;
         $anciennesCat = array();
         $nouvellesCat = array();
         if ($contexte !== REF_CONTEXTE_AUCUN) {
             $ancienRef = GContexte::Referentiel($contexte, $nomRef, REF_TYPE_DONNEES);
         } else {
             $ancienRef = GSession::Referentiel($nomRef, REF_TYPE_DONNEES);
         }
         if ($ancienRef === NULL) {
             $ancienRef = array();
         } else {
             foreach ($ancienRef as &$ancienneValeur) {
                 if ($colCat !== '' && $colCatLib !== '') {
                     $anciennesCat[] = $ancienneValeur[$colCat];
                 }
             }
             foreach ($nouveauRef as &$mObjet) {
                 if ($colCat !== '' && $colCatLib !== '') {
                     $nouvellesCat[$mObjet->GetChampSQLFromTableau($colCat)] = 1;
                 }
                 foreach ($ancienRef as &$ancienneValeur) {
                     if ($ancienneValeur !== NULL && $mObjet !== NULL) {
                         $identique = true;
                         foreach ($ancienneValeur as $nomCol => $valCol) {
                             if ($mObjet->GetChampSQLFromTableau(explode(',', $nomCol)) !== $valCol) {
                                 $identique = false;
                             }
                         }
                         if ($identique === true) {
                             if ($idParDefaut != NULL && $mObjet->GetChampSQLFromTableau($colId) == $idParDefaut) {
                                 if ($changementRef === false) {
                                     GReponse::AjouterElementSelect($nomRef);
                                     $changementRef = true;
                                 }
                                 GReponse::AjouterElementSelectSelection($idParDefaut);
                             }
                             $ancienneValeur = NULL;
                             $mObjet = NULL;
                             break;
                         }
                     }
                 }
             }
         }
         $categorieCree = array();
         foreach ($nouveauRef as &$mObjet) {
             if ($mObjet !== NULL) {
                 if ($changementRef === false) {
                     GReponse::AjouterElementSelect($nomRef);
                     $changementRef = true;
                 }
                 $activer = false;
                 $id = $mObjet->GetChampSQLFromTableau($colId);
                 if ($idParDefaut !== NULL && $id == $idParDefaut) {
                     $activer = true;
                 }
                 $categorie = '';
                 if ($colCat !== '') {
                     $categorie = $mObjet->GetChampSQLFromTableau($colCat);
                     if ($colCatLib !== '' && !array_key_exists($categorie, $categorieCree)) {
                         GReponse::AjouterElementSelectCreationCategorie($categorie, $mObjet->GetChampSQLFromTableau($colCatLib));
                         $categorieCree[$categorie] = 1;
                     }
                 }
                 $description = '';
                 if ($colDesc !== '') {
                     $description = $mObjet->GetChampSQLFromTableau($colDesc);
                 }
                 GReponse::AjouterElementSelectCreation($id, $mObjet->GetChampSQLFromTableau($colLib), $description, $activer, $categorie);
             }
         }
         foreach ($ancienRef as &$ancienneValeur) {
             if ($ancienneValeur !== NULL) {
                 if ($changementRef === false && $ancienneValeur !== NULL) {
                     GReponse::AjouterElementSelect($nomRef);
                     $changementRef = true;
                 }
                 GReponse::AjouterElementSelectSuppression($ancienneValeur[$colId]);
                 //if ($colCat !== '' && $colCatLib !== '')
                 //   $anciennesCat[] = $ancienneValeur[$colCat];
             }
         }
         foreach ($anciennesCat as $categorie) {
             if ($changementRef === false) {
                 GReponse::AjouterElementSelect($nomRef);
                 $changementRef = true;
             }
             if (!array_key_exists($categorie, $nouvellesCat)) {
                 GReponse::AjouterElementSelectSuppressionCategorie($categorie);
             }
         }
     }
 }
        $mTypeGroupe = new MTypeGroupe(TYPEGROUPE_JEU);
        $mTypeGroupe->AjouterColSelection(COL_LIBELLE);
        $mTypeGroupe->Charger();
        $select->AjouterElement(-2, $mTypeGroupe->Libelle(), '', GSession::Groupe(COL_TYPEGROUPE) === TYPEGROUPE_JEU, false);
    }
    if ($mJeu != NULL && $mGroupe != NULL) {
        $select->AjouterCategorie($mJeu->Id(), $mJeu->Libelle());
        $select->AjouterElement($mGroupe->Id(), $mGroupe->Nom(), $mGroupe->Description(), true, false);
    }
    $selectGroupe->SetCadreBoutonsCache(1, 2);
    GContexte::AjouterContenu(CADRE_INFO_GROUPE, $selectGroupe);
} else {
    if (GSession::Groupe('change') == 1) {
        GReferentiel::AjouterReferentiel(COL_JEU, $mListeJeux, array(COL_ID, array(COL_LIBELLE, COL_LIBELLE)), true);
        GReferentiel::GetDifferentielReferentielForSelect(COL_JEU, COL_ID, array(COL_LIBELLE, COL_LIBELLE), '', $jeuId);
        $typeGroupe = GSession::Groupe(COL_TYPEGROUPE);
        if ($typeGroupe == TYPEGROUPE_COMMUNAUTE) {
            GReponse::AjouterElementSelect(COL_GROUPE);
            GReponse::AjouterElementSelectSelection(-1);
        } else {
            if ($typeGroupe == TYPEGROUPE_JEU) {
                GReponse::AjouterElementSelect(COL_GROUPE);
                GReponse::AjouterElementSelectSelection(-2);
            } else {
                GReferentiel::AjouterReferentiel(COL_GROUPE, $mListeGroupes, array(COL_ID, COL_NOM, COL_DESCRIPTION, COL_JEU), true);
                GReferentiel::GetDifferentielReferentielForSelect(COL_GROUPE, COL_ID, COL_NOM, COL_DESCRIPTION, $groupeId, COL_JEU, array(COL_JEU, COL_LIBELLE, COL_LIBELLE));
            }
        }
        GSession::Groupe('change', NULL, true);
    }
}