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); } }