Subversion Repositories Applications.annuaire

Compare Revisions

Ignore whitespace Rev 52 → Rev 53

/trunk/controleurs/AnnuaireControleur.php
22,7 → 22,8
* @return Array $donnees les données modifiées
*/
public function preTraiterDonnees($donnees) {
$donnees['base_url'] = Registre::getInstance()->get('base_url_application');
 
$donnees['base_url'] = new Url(Registre::getInstance()->get('base_url_application'));
return $donnees;
}
 
61,6 → 62,7
$this->chargerModele('AnnuaireModele');
$this->chargerModele('MetadonneeModele');
$data['erreurs'] = array();
$data['champs_mappage'] = $this->AnnuaireModele->obtenirChampsMappageAnnuaire($id);
$data['annuaire'] = $this->AnnuaireModele->chargerAnnuaire($id, true);
$data['metadonnees'] = $this->MetadonneeModele->chargerListeMetadonneeAnnuaire($id);
$annuaire = $this->getVue(Config::get('dossier_squelettes_annuaires').'annuaire', $data);
209,15 → 211,14
// Si le champ fait partie des champs mappés
$cle_champ = array_search($id_champ, $tableau_mappage[1]);
 
if($cle_champ) {
// on ajoute sa clé correspondante dans le tableau des champs mappés
// qui sont les champs à vérifier
if($condition) {
$valeurs_mappees[$cle_champ.'_'.$condition] = $valeur;
} else {
$valeurs_mappees[$cle_champ] = $valeur;
 
}
// on ajoute sa clé correspondante dans le tableau des champs mappés
// qui sont les champs à vérifier
if($condition) {
$condition = $valeurs[$type.'_'.$id_champ];
$valeurs_mappees[$id_champ] = array('valeur' => $valeur, 'type' => $type, 'condition' => $condition);
} else {
//$valeurs_mappees[$cle_champ] = $valeur;
$valeurs_mappees[$id_champ] = array('valeur' => $valeur, 'type' => $type, 'condition' => false);
}
 
if(!$condition) {
226,7 → 227,7
}
 
// vérification des champs minimaux : nom, prénom, mail, mot de passe
if($erreurs = $verificateur->verifierErreursChamps($id_annuaire,$valeurs_mappees, $tableau_mappage)) {
if($erreurs = $verificateur->verifierErreursChampsSelonType($id_annuaire,$valeurs_mappees, $tableau_mappage)) {
$valeurs['erreurs'] = $erreurs;
return $this->afficherFormulaireInscription($id_annuaire, $valeurs);
}
271,6 → 272,7
$valeurs_metadonnees = array();
 
$mail_nouvel_inscrit = $valeurs['mail_'.$tableau_mappage[1]['champ_mail']];
$pass_nouvel_inscrit = $valeurs['pass_'.$tableau_mappage[1]['champ_pass']];
 
// on itère sur le tableau de valeur pour récupérer les métadonnées;
foreach($valeurs as $nom_champ => $valeur) {
323,6 → 325,7
 
//TODO: gérer le cas de spip et de wikini par un multimapping des champs
//TODO: voir openid
// TODO appel des plugins d'inscription
 
// Si tout a réussi on supprime les données d'inscription temporaire
$this->AnnuaireModele->supprimerDonneesInscriptionTemporaire($identifiant);
329,6 → 332,11
 
$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, false);
 
// Identifier l'utilisateur !
//$identificateur = new IdentificationControleur();
//$identificateur->fabriquerCookie($mail_nouvel_inscrit, $pass_nouvel_inscrit, false);
//$identificateur->loggerUtilisateurParCookie();
 
// S'il existe une page d'accueil spécifique à l'annuaire pour la confirmation d'inscription
if($this->templateExiste($annuaire['informations']['aa_code'].'_inscription_confirmation', Config::get('dossier_squelettes_annuaires'))) {
// on l'affiche
359,6 → 367,11
return $resultat;
}
 
public function afficherFormulaireIdentification($donnees = array()) {
 
return $this->getVue(Config::get('dossier_squelettes_formulaires').'identification', $donnees);
}
 
/**
* Affiche la fiche principale d'un utilisateur
* @param int $id_annuaire l'identifiant de l'annuaire
854,6 → 867,14
$this->chargerModele('AnnuaireModele');
$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, true);
 
if(isset($_GET['numero_page'])) {
$numero_page = $_GET['numero_page'];
}
 
if(isset($_GET['taille_page'])) {
$taille_page = $_GET['taille_page'];
}
 
$tableau_mappage = $this->AnnuaireModele->obtenirChampsMappageAnnuaire($id_annuaire);
 
//$valeurs_get = array('m' => $_GET['m']);
902,11 → 923,11
// on recherche les infos dans la table annuaire mappée
// en incluant ou excluant les id déjà trouvées dans les metadonnées
// suivant le critères d'exclusivité ou non
$resultat_annuaire_mappe = $this->AnnuaireModele->rechercherInscritDansAnnuaireMappe($id_annuaire,$valeurs_mappees, $resultat_metadonnees, $exclusive);
$resultat_annuaire_mappe = $this->AnnuaireModele->rechercherInscritDansAnnuaireMappe($id_annuaire,$valeurs_mappees, $resultat_metadonnees, $exclusive, $numero_page, $taille_page);
 
$resultat_recherche = $resultat_annuaire_mappe;
$resultat_recherche = $resultat_annuaire_mappe['resultat'];
 
$nb_resultats = count($resultat_recherche);
$nb_resultats = $resultat_annuaire_mappe['total'];
 
// on renvoie une liste identique à celle de la liste des inscrits
$donnees['resultats_recherche'] = $resultat_recherche;
915,9 → 936,11
$donnees['nb_resultats'] = $nb_resultats;
 
$url_base = new URL(Registre::getInstance()->get('base_url_application'));
$url_pagination = new URL('');
//$valeurs_get['id_annuaire'] = $id_annuaire;
$url_pagination = clone($url_base);
 
$valeurs_get['id_annuaire'] = $id_annuaire;
$valeurs_get['m'] = $_GET['m'];
 
$donnees['pagination'] = $this->paginer($numero_page,$taille_page,$nb_resultats,$url_pagination, $valeurs_get);
$vue_resultat_recherche = $this->getVue(Config::get('dossier_squelettes_annuaires').'annuaire_resultat_recherche', $donnees);
 
934,6 → 957,18
*/
public function rechercherInscritParlocalisation($id_annuaire,$valeurs_recherchees, $numero_page = 1, $taille_page = 50) {
 
if(isset($_GET['taille_page'])) {
$taille_page = $_GET['taille_page'];
} else {
$taille_page = 50;
}
 
if(isset($_GET['numero_page'])) {
$numero_page = $_GET['numero_page'];
} else {
$numero_page = 1;
}
 
$this->chargerModele('AnnuaireModele');
$annuaire = $this->AnnuaireModele->chargerAnnuaire($id_annuaire, true);
 
946,20 → 981,21
 
$champ_id_annuaire = $tableau_mappage[0]['champ_id'];
 
$code_postal = $valeurs_recherchees['champ_code_postal'];
$valeur = $valeurs_recherchees['pays'];
 
if(isset($tableau_mappage[0]['champ_code_postal'])) {
$champ_critere = $tableau_mappage[0]['champ_code_postal'];
$resultat_annuaire_mappe = $this->AnnuaireModele->rechercherInscritDansAnnuaireMappeParChamp($id_annuaire, $champ_critere, $code_postal, true);
}
//Debug::printr($valeurs_get);
 
/*
// on recherche dans les métadonnées
$this->chargerModele('MetadonneeModele');
// le résultat est un ensemble d'identifiants
$resultat_metadonnees = $this->MetadonneeModele->rechercherDansValeurMetadonnees($id_annuaire,$valeurs_recherchees, false);
*/
$champ_critere = 'U_COUNTRY';
 
$resultat_annuaire_mappe = $this->AnnuaireModele->rechercherInscritDansAnnuaireMappeParChamp($id_annuaire, $champ_critere, $valeur, true, $taille_page, $numero_page);
 
/*
// on recherche dans les métadonnées
$this->chargerModele('MetadonneeModele');
// le résultat est un ensemble d'identifiants
$resultat_metadonnees = $this->MetadonneeModele->rechercherDansValeurMetadonnees($id_annuaire,$valeurs_recherchees, false);
*/
 
// on recherche les infos dans la table annuaire mappée
// en incluant ou excluant les id déjà trouvées dans les metadonnées
// suivant le critères d'exclusivité ou non
967,14 → 1003,17
 
$resultat_recherche = $resultat_annuaire_mappe;
 
$nb_resultats = count($resultat_recherche);
$nb_resultats = $resultat_recherche['total'];
$inscrits_resultats = $resultat_recherche['resultat'];
 
// on renvoie une liste identique à celle de la liste des inscrits
$donnees['resultats_recherche'] = $resultat_recherche;
$donnees['resultats_recherche'] = $inscrits_resultats;
$donnees['tableau_mappage'] = $tableau_mappage[0];
$donnees['id_annuaire'] = $id_annuaire;
$donnees['nb_resultats'] = $nb_resultats;
 
//Debug::printr($donnees['resultats_recherche']);
 
$url_base = new URL(Registre::getInstance()->get('base_url_application'));
$url_pagination = new URL($url_base);
 
1139,11 → 1178,12
 
/**
* Renvoie le template de pagination, considérant des éléments donnés en paramètre
* @param
* @param
* @param
* @param
* @param
* @param int $numero_page le numéro de page en cours
* @param int $taille_page la taille de page
* @param int $total le nombre total de pages
* @param object $url_base l'url de base de la page
* @param array $valeurs les valeurs à concatener à l'url
* @return string le html contenu la template de pagination rempli avec les infos
*/
private function paginer($numero_page = 1, $taille_page = 50, $total, $url_base, $valeurs) {
 
1157,40 → 1197,72
 
$nombre_pages = round($total/$taille_page,'PHP_ROUND_HALF_DOWN') ;
 
foreach($valeurs as $cle => $variable) {
$url_base->setVariableRequete($cle,$variable);
}
 
if($numero_page < 2) {
$page_precedente = false;
$url_page_precedente = '';
} else {
$url_page_prec = clone($url_base);
$url_page_prec->setVariableRequete('numero_page',($page_precedente));
$url_page_prec->setVariableRequete('taille_page',($taille_page));
$url_page_precedente = $url_page_prec->getUrl();
}
 
if($taille_page*($numero_page) >= $total) {
$page_suivante = false;
$url_page_suivante = '';
} else {
$url_page_suiv = clone($url_base);
$url_page_suiv->setVariableRequete('numero_page',($page_suivante));
$url_page_suiv->setVariableRequete('taille_page',($taille_page));
$url_page_suivante = $url_page_suiv->getUrl();
}
 
foreach($valeurs as $cle => $variable) {
$url_base->setVariableRequete($cle,$variable);
$urls_pages = array();
 
for($i = 1; $i <= $nombre_pages ; $i++) {
 
$url_page_prev = clone($url_base);
$url_page_prev->setVariableRequete('numero_page',($i));
$url_page_prev->setVariableRequete('taille_page',($taille_page));
$url_pages[$i] = $url_page_prev->getUrl();
}
 
$donnees['pagination']= array('numero_page' => $numero_page, 'page_precedente' => $page_precedente, 'page_suivante' => $page_suivante, 'nombre_pages' => $nombre_pages, 'taille_page' => $taille_page);
$donnees['variables'] = $valeurs;
 
 
$donnees = array('url_pages' => $url_pages, 'numero_page' => $numero_page,
'page_precedente' => $page_precedente, 'page_suivante' => $page_suivante,
'url_page_precedente' => $url_page_precedente, 'url_page_suivante' => $url_page_suivante,
'nombre_pages' => $nombre_pages, 'taille_page' => $taille_page);
$donnees['base_url_pagination'] = $url_base;
 
return $this->getVue(Config::get('dossier_squelettes_elements').'pagination',$donnees);
 
}
 
 
/** --- Fonction pour les images ------------------------------------------------------------------------*/
 
public function afficherFormulaireUploadImage($id_annuaire,$id_utilisateur) {
public function afficherFormulaireUploadImage($id_annuaire,$id_utilisateur, $donnees = array()) {
 
$donnees['aa_id_annuaire'] = $id_annuaire;
$donnees['id_utilisateur'] = $id_utilisateur;
 
 
$donnees['amc_nom'] = 'Avatar';
$donnees['amc_id_champ'] = 101;
 
$this->chargerModele('AnnuaireModele');
$id_champ_image = $this->AnnuaireModele->obtenirChampAvatar($id_annuaire);
 
if(!$id_champ_image) {
$donnees['erreurs'] = 'Aucun champ n\'est défini pour l\'image de profil';
return $this->getVue(Config::get('dossier_squelettes_elements').'erreurs',$donnees);
}
 
$donnees['amc_id_champ'] = $id_champ_image;
 
 
return $this->getVue(Config::get('dossier_squelettes_champs').'image',$donnees);
}
 
1200,10 → 1272,10
*/
public function ajouterImageUtilisateur($id_annuaire, $id_utilisateur, $fichier_a_stocker, $retourner_booleen = false) {
 
$donnees = array('erreurs' => array());
 
foreach($fichier_a_stocker as $nom_champ => $fichier) {
 
//TODO: ajouter les vérifications de format
 
$ids_champ = mb_split("_",$nom_champ, 3);
 
if(count($ids_champ) == 2) {
1217,6 → 1289,14
}
 
$this->chargerModele('ImageModele');
 
$format_accepte = $this->ImageModele->verifierFormat($fichier['name']);
 
if(!$format_accepte) {
$donnees['erreurs'][$id_champ] = 'Cette extension de fichier n\'est pas prise en charge';
return $this->afficherFormulaireUploadImage($id_annuaire, $id_utilisateur,$id_champ,$donnees);
}
 
$stockage_image = $this->ImageModele->stockerFichier($id_annuaire, $id_utilisateur, $fichier);
 
$this->chargerModele('MetadonneeModele');
1223,7 → 1303,8
if($stockage_image && $this->MetadonneeModele->ajouterNouvelleValeurMetadonnee($id_champ,$id_utilisateur,$stockage_image)) {
 
} else {
return false;
$donnees['erreurs'][$id_champ] = 'Problème durant le stockage de l\'image';
return $this->afficherFormulaireUploadImage($id_annuaire, $id_utilisateur,$id_champ,$donnees);
}
}
 
1234,19 → 1315,12
}
}
 
public function chargerNombreAnnuaireListeInscritsParContinent($id_annuaire, $id_continent) {
public function chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $id_zones) {
 
$ontologie_modele = new OntologieControleur();
 
//$liste_pays = $ontologie_controleur->obtenirPaysDuContinent($id_continent);
 
return array('1' => '200','2' => '290','3'=> '500','4'=> '1200','5'=> '560','6'=> '666','7'=> '784');
$annuaire_modele = $this->getModele('AnnuaireModele');
return $annuaire_modele->chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $id_zones);
}
 
public function chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $id_pays) {
return array('1' => '200','2' => '290','3'=> '500','4'=> '1200','5'=> '560','6'=> '666','7'=> '784');
}
 
public function chargerNombreAnnuaireListeInscritsParDepartement($id_annuaire) {
$this->chargerModele('AnnuaireModele');
return $this->AnnuaireModele->chargerNombreAnnuaireListeInscritsParDepartement($id_annuaire);