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