Rev 336 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?phpclass Cotisation extends AppControleur {public function Cotisation() {parent::__construct();}/*** Initialisation du controleur principal en fonction des paramètres de l'url.*/public function executerPlugin() {$plugin_action = Config::get('plugin_variable_action');if (isset($_GET[$plugin_action])) {$action = $_GET[$plugin_action];} else {$action = Config::get('plugin_action_defaut');}if(!$this->controleAccesAdmin($action)) {return;}unset($_GET[$plugin_action]);$resultat_action_plugin = $this->$action($_GET);return $resultat_action_plugin ;}/*** Méthode appelée pour ajouter un élément.*/public function ajouterCotisation() {$params = $_POST;$elements_requis = array('id_cotisant','date_cotisation', 'montant_cotisation', 'mode_cotisation');$erreurs = array();foreach($elements_requis as $requis) {if(!isset($params[$requis])) {//$erreurs[$requis] = 'erreur ';}}if(!empty($erreurs)) {$this->envoyer($erreurs);}$params['date_cotisation'] = $this->formaterVersDateMysql($params['date_cotisation']);$cotisation_modele = new CotisationModele();$ajout_cotisation = $cotisation_modele->ajouterCotisation($params);if(!$ajout_cotisation) {$retour['erreurs'] = 'erreur d\'insertion';}$retour['id_utilisateur'] = $params['id_cotisant'];return $this->afficherInformationsCotisationPourInscrit($retour);}/*** Méthode appelée pour mettre à jour une cotisation*/public function mettreAJourCotisation() {$params = $_POST;$id_cotisation = $params['id_cotisation'];$elements_requis = array('id_cotisation','id_cotisant','date_cotisation', 'montant_cotisation', 'mode_cotisation');$erreurs = array();foreach($elements_requis as $requis) {if(!isset($params[$requis])) {//$erreurs[$requis] = 'erreur ';}}if(!empty($erreurs)) {$this->envoyer($erreurs);}$params['date_cotisation'] = $this->formaterVersDateMysql($params['date_cotisation']);$cotisation_modele = new CotisationModele();$modification_cotisation = $cotisation_modele->mettreAJourCotisation($id_cotisation, $params);if(!$modification_cotisation) {$retour['erreurs'] = 'erreur d\'insertion';}$retour['id_utilisateur'] = $params['id_cotisant'];return $this->afficherInformationsCotisationPourInscrit($retour);}/*** Méthode appelée pour supprimer un élément*/public function supprimerCotisation() {$id_cotisation = $_GET['id_cotisation'];$cotisation_modele = new CotisationModele();$suppression_cotisation = $cotisation_modele->supprimerCotisation($id_cotisation);if(!$suppression_cotisation) {// TODO: comment gère t'on les erreurs ?}$param['id_utilisateur'] = $_GET['id_utilisateur'];return $this->afficherInformationsCotisationPourInscrit($param);}/**** Affiche un tableau récapitulant les informations de l'historique des cotisations pour un membre donné*/private function afficherInformationsCotisationPourInscrit($param) {$id_inscrit = $param['id_utilisateur'];if(!Registre::getInstance()->get('est_admin')) {$id_inscrit = Registre::getInstance()->get('identification_id');}$donnees['cotisations'] = $this->obtenirInformationsCotisationPourInscrit($param);$donnees['url_formulaire_ajout_cotisation'] = $this->getUrlFormulaireAjoutCotisation($id_inscrit);if(isset($param['message'])) {$donnees['message'] = $param['message'];}if(Registre::getInstance()->get('est_admin')) {$squelette = 'liste_cotisations_admin';} else {$squelette = 'liste_cotisations_inscrit';}$liste_cotisations_html = $this->renvoyerSquelette($squelette, $donnees);return $liste_cotisations_html;}/**** Renvoie les informations de cotisation pour un membre donné*/private function obtenirInformationsCotisationPourInscrit($param) {$id_inscrit = $param['id_utilisateur'];if(!Registre::getInstance()->get('est_admin')) {$id_inscrit = Registre::getInstance()->get('identification_id');}$cotisation_modele = new CotisationModele();$infos_cotisation_inscrit = $cotisation_modele->obtenirInformationsCotisationsPourInscrit($id_inscrit);$infos_cotisation_inscrit_formatees = array();foreach($infos_cotisation_inscrit as $cotisation_inscrit) {$infos_cotisation_inscrit_formatees[] = $this->formaterInformationsCotisationPourEnvoi($cotisation_inscrit);}return $infos_cotisation_inscrit_formatees;}private function afficherFormulaireAjoutCotisation($param) {$donnees['id_cotisant'] = $param['id_cotisant'];$donnees['cotisations'] = $this->obtenirInformationsCotisationPourInscrit($param);$cotisation_modele = new CotisationModele();$donnees['modes_cotisation'] = $cotisation_modele->obtenirListeModesCotisation();$donnees['url_liste_cotisations'] = $this->getUrlVoirListeCotisations();$donnees['url_ajout_cotisation'] = $this->getUrlAjoutCotisation();$donnees['url_retour'] = $this->urlService();$liste_cotisations_html = $this->renvoyerSquelette('formulaire_ajout_cotisation', $donnees);return $liste_cotisations_html;}private function afficherFormulaireModificationCotisation() {$param = $_GET;$donnees['id_utilisateur'] = $param['id_utilisateur'];$donnees['id_cotisation_a_modifer'] = $param['id_cotisation'];$donnees['cotisations'] = $this->obtenirInformationsCotisationPourInscrit($param);$cotisation_modele = new CotisationModele();$donnees['modes_cotisation'] = $cotisation_modele->obtenirListeModesCotisation();$donnees['url_liste_cotisations'] = $this->getUrlVoirListeCotisations();$donnees['url_modification_cotisation'] = $this->getUrlModificationCotisation($donnees['id_cotisation_a_modifer']);$donnees['url_retour'] = $this->urlService();$liste_cotisations_html = $this->renvoyerSquelette('formulaire_modification_cotisation', $donnees);return $liste_cotisations_html;}// +---------------------------------------------------------------------------------------------------------------+// METHODES D'ACCES A LA BASE DE DONNEESprivate function getInformationsHistoriqueCotisation() {$requete_infos_historique_cotisation = 'SELECT * FROM annuaire_COTISATION';$infos_historique_cotisation = $this->executerRequete($requete_infos_historique_cotisation);$infos_historique_cotisation_formatees = array();foreach($infos_historique_cotisation as $cotisation) {$infos_historique_cotisation_formatees[] = $this->formaterInformationsCotisationPourEnvoi($cotisation);}return $infos_historique_cotisation_formatees;}private function obtenirNumeroRecuCotisation($param) {$id_cotisation = $param['id_cotisation'];$id_utilisateur = $param['id_utilisateur'];if(!Registre::getInstance()->get('est_admin')) {$id_utilisateur = Registre::getInstance()->get('identification_id');}$id_annuaire = Config::get('annuaire_defaut');if(isset($_GET['id_annuaire'])) {$id_annuaire = $_GET['id_annuaire'];}$utilisateur = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);if(!isset($id_cotisation)) {return;}$cotisation_modele = new CotisationModele();$infos_cotisation = $cotisation_modele->obtenirInformationsPourIdCotisation($id_cotisation, $id_utilisateur);if(empty($infos_cotisation)) {return;}$infos_cotisation_formatees = $this->formaterInformationsCotisationPourEnvoi($infos_cotisation);if(!$this->recuEstGenere($infos_cotisation_formatees)) {$numero_nouveau_recu = $this->calculerNouvelOrdreRecuPourCotisation($infos_cotisation_formatees);$infos_cotisation_formatees['recu_envoye'] = $numero_nouveau_recu;$this->mettreAJourNumeroRecu($infos_cotisation_formatees['id_cotisation'],$numero_nouveau_recu);}return $infos_cotisation_formatees;}private function initialiserInformationsAnnuaireUtilisateur($param) {$id_cotisation = $param['id_cotisation'];$id_utilisateur = $param['id_utilisateur'];if(!Registre::getInstance()->get('est_admin')) {$param['id_utilisateur'] = Registre::getInstance()->get('identification_id');}$id_annuaire = Config::get('annuaire_defaut');if(isset($_GET['id_annuaire'])) {$param['id_annuaire'] = $_GET['id_annuaire'];}$param['utilisateur'] = $this->obtenirValeursUtilisateur($id_annuaire, $id_utilisateur);return $param;}private function envoyerRecuCotisation($param) {$param = $this->initialiserInformationsAnnuaireUtilisateur($param);$infos_cotisation_formatees = $this->obtenirNumeroRecuCotisation($param);if(!$this->recuEstEnvoye($infos_cotisation_formatees)) {$infos_cotisation_formatees['date_envoi_recu'] = $this->mettreAJourDateEnvoiRecuPourCotisation($infos_cotisation_formatees);}$recu = new Recu();$recu_pdf = $recu->renvoyerRecuPdf($param['utilisateur'], $infos_cotisation_formatees);$messagerie = new MessageControleur();$donnees['url_voir_recu'] = $this->getUrlTelechargementRecuPourMail($param['id_cotisation']);$contenu_message = $this->renvoyerSquelette('message_recu_cotisation', $donnees);$envoi = $messagerie->envoyerMailAvecPieceJointe(Config::get('adresse_mail_cotisation'), $param['utilisateur']['mail']['amv_valeur'], 'Recu pour votre don à tela botanica', $contenu_message, $recu_pdf, 'Recu.pdf', 'application/pdf');$param['message'] = 'Votre reçu a bien été envoyé à l\'adresse '.$param['utilisateur']['mail']['amv_valeur'];return $this->afficherInformationsCotisationPourInscrit($param);}private function voirRecuCotisation($param) {$param = $this->initialiserInformationsAnnuaireUtilisateur($param);if(!isset($param['id_cotisation'])) {return;}$cotisation_modele = new CotisationModele();$infos_cotisation = $cotisation_modele->obtenirInformationsPourIdCotisation($param['id_cotisation'], $param['id_utilisateur']);if(empty($infos_cotisation)) {return;}$infos_cotisation_formatees = $this->formaterInformationsCotisationPourEnvoi($infos_cotisation);$infos_cotisation_formatees = $this->obtenirNumeroRecuCotisation($param);// tant que le recu n'est pas envoyé sa date est celle du jour courantif(!$this->recuEstEnvoye($infos_cotisation_formatees)) {$infos_cotisation_formatees['date_envoi_recu'] = date('d/m/Y');}$recu = new Recu();$recu->afficherRecuPdf($param['utilisateur'], $infos_cotisation_formatees);return true;}private function recuEstGenere($cotisation) {if($cotisation['recu_envoye'] != null && $cotisation['recu_envoye'] != 0) {return true;}return false;}private function recuEstEnvoye($cotisation) {if($cotisation['date_envoi_recu'] != null && $cotisation['date_envoi_recu'] != 0) {return true;}return false;}private function calculerNouvelOrdreRecuPourCotisation($cotisation) {$cotisation_modele = new CotisationModele();$annee_recu = $cotisation['annee_cotisation'];$numero_ordre = $cotisation_modele->calculerNouvelOrdreRecuEtIncrementer($annee_recu);return $numero_ordre;}private function mettreAJourDateEnvoiRecuPourCotisation($cotisation) {$cotisation_modele = new CotisationModele();$cotisation_modele->mettreAJourDateEnvoiRecu($cotisation['id_cotisation']);$date_envoi_recu = $this->genererDateCouranteFormatAnnuaire();return $date_envoi_recu;}private function mettreAJourNumeroRecu($id_cotisation, $numero_recu) {$cotisation_modele = new CotisationModele();$maj_cotisation_num_recu = $cotisation_modele->mettreAJourNumeroRecu($id_cotisation, $numero_recu);return $maj_cotisation_num_recu;}private function formaterInformationsCotisationPourEnvoi($cotisation) {$cotisation_modele = new CotisationModele();$cotisation_champs_formates = array('id_cotisation' => $cotisation['IC_ID'],'id_inscrit' => $cotisation['IC_ANNU_ID'],'annee_cotisation' => $this->formaterAnneeDateCotisationMySql($cotisation['IC_DATE']),'date_cotisation' => $this->formaterDateMysqlVersDateAnnuaire($cotisation['IC_DATE']),'montant_cotisation' => $cotisation['IC_MONTANT'],'mode_cotisation' => $cotisation_modele->obtenirModeCotisationParId($cotisation['IC_MC_ID']),'id_mode_cotisation' => $cotisation['IC_MC_ID'],'recu_envoye' => $cotisation['IC_RECU'],'date_envoi_recu' => $this->formaterDateMysqlVersDateCotisation($cotisation['IC_DATE_ENVOIE_RECU']),'url_voir_recu' => $this->getUrlVoirRecuCotisation($cotisation['IC_ID']),'url_envoyer_recu' => $this->getUrlEnvoiRecuCotisation($cotisation['IC_ID']),'url_formulaire_modification' => $this->getUrlFormulaireModificationCotisation($cotisation['IC_ID']),'url_suppression' => $this->getUrlSuppressionCotisation($cotisation['IC_ID']));return $cotisation_champs_formates;}private function renvoyerSquelette($squelette, $donnees) {$chemin_squelette = Config::get('chemin_appli').'composants'.DS.ANNUAIRE_PLUGIN.DS.'squelettes'.DS.$squelette.'.tpl.html';$sortie = SquelettePhp::analyser($chemin_squelette, $donnees);//$squelette_dossier = .'squelettes'.DS;return $sortie;}private function urlService($params = array()) {$url_service = new Url(Url::getDemande()->getUrl());$variables_requetes = $url_service->getVariablesRequete();$variables_plugins = array(Config::get('plugin_variable_action'), 'id_cotisation', 'id_cotisant');foreach($params as $cle => $valeur) {$variables_requetes[$cle] = $valeur;}$url_service->setVariablesRequete($variables_requetes);return $url_service->getUrl();}private function getUrlVoirListeCotisations() {$params = array('action_cotisation' => 'afficherInformationsCotisationPourInscrit');return $this->urlService($params);}private function getUrlVoirRecuCotisation($id_cotisation) {$params = array('action_cotisation' => 'voirRecuCotisation','id_cotisation' => $id_cotisation);return $this->urlService($params);}private function getUrlTelechargementRecuPourMail($id_cotisation) {return Config::get('base_url_telechargement').'?m=annuaire_afficher_page&page=cotisations&id_annuaire=1&action_cotisation=voirRecuCotisation&id_cotisation='.$id_cotisation;}private function getUrlEnvoiRecuCotisation($id_cotisation) {$params = array('action_cotisation' => 'envoyerRecuCotisation','id_cotisation' => $id_cotisation);return $this->urlService($params);}private function getUrlFormulaireAjoutCotisation($id_cotisant) {$params = array('action_cotisation' => 'afficherFormulaireAjoutCotisation','id_cotisant' => $id_cotisant);return $this->urlService($params);}private function getUrlAjoutCotisation() {$params = array('action_cotisation' => 'ajouterCotisation');return $this->urlService($params);}private function getUrlFormulaireModificationCotisation($id_cotisation) {$params = array('action_cotisation' => 'afficherFormulaireModificationCotisation','id_cotisation' => $id_cotisation);return $this->urlService($params);}private function getUrlModificationCotisation($id_cotisation) {$params = array('action_cotisation' => 'mettreAjourCotisation','id_cotisation' => $id_cotisation);return $this->urlService($params);}private function getUrlSuppressionCotisation($id_cotisation) {$params = array('action_cotisation' => 'supprimerCotisation','id_cotisation' => $id_cotisation);return $this->urlService($params);}private function controleAccesAdmin($fonction) {$fonction_admins = array('ajouterCotisation','mettreAJourCotisation','supprimerCotisation','afficherFormulaireAjoutCotisation','envoyerRecuCotisation');if(in_array($fonction, $fonction_admins) && !Registre::getInstance()->get('est_admin')) {return false;}return true;}private function formaterAnneeDateCotisationMySql($date_cotisation) {$annee_cotisation = '0';if($date_cotisation != '0') {$annee_cotisation = date('Y',strtotime($date_cotisation));}return $annee_cotisation;}private function formaterDateMysqlVersDateCotisation($date) {if($date == '0000-00-00') {return 0;}return $this->formaterDateMysqlVersDateAnnuaire($date);}}?>