load->model('common_model'); $CI->load->model('event_model'); $CI->load->helper('statistic'); /** * Membres_model CRUD pattern. * * Everything is done in Common_Model except the table * name declaration */ class Membres_model extends Common_Model { public $table = 'membres'; protected $primary_key = 'mlogin'; /** * Retourne une chaine de caractère qui identifie une ligne de façon unique. * Cette chaine est utilisé dans les affichages. * Par défaut elle retourne la valeur de la clé, mais elle est conçue pour être * surchargée. * * @param $key - * identifiant du pilote * @param $short - * retourne le trigramme si non vide, sinon l'image normale */ public function image($key, $short = false) { if ($key == "") return ""; $vals = $this->get_by_id('mlogin', $key); if (array_key_exists('mprenom', $vals) && array_key_exists('mnom', $vals)) { if ($short && array_key_exists('trigramme', $vals) && ($vals ['trigramme'] != '')) { return $vals ['trigramme']; } return $vals ['mnom'] . " " . $vals ['mprenom']; } else { return "pilote inconnu $key"; } } public function age($key) { if ($key == "") return ""; $vals = $this->get_by_id('mlogin', $key); if (array_key_exists('m25ans', $vals)) return $vals ['m25ans']; else return "nil"; } /** * Les gens sons considérés comme moins de 25 ans la case à cocher - 25 ans est active dans la fiche membre. * C'est au trésorier de basculer en fonction de la règle du club * - soit quand ils dépassent 25 ans * - soit au moment de leur première licence plus de 25 ans */ public function moins_25ans($key, $date) { if ($key == "") return ""; gvv_debug("-25 ans $key $date"); $date25 = date_m25ans(substr($date, 0, 4)); $this->db->select("(mdaten > \"$date25\") as m25ans, year(mdaten) as year")->where('mlogin', $key); $vals = $this->db->get($this->table)->row_array(); gvv_debug(var_export($vals, true)); return $vals ['m25ans']; /* * if (!$vals['year']) { * return $vals['m25ans']; * } else { * * } * $birth_year = $vals['year']; * $bill_year = substr($date, 0, 4); * $m25 = (($bill_year - $birth_year) <= 25); * gvv_debug("-25 ans $key $birth_year $bill_year $m25"); * return $m25; */ } /** * Retourne un hash qui peut-être utilisé dans un menu drow-down * * @param * hash des valeurs */ public function qualif_selector($key, $level) { $allkeys = $this->select_columns($key . ',mniveaux', 0, 0, array ( 'actif' => 1 )); $result = array (); $result [''] = ''; foreach ( $allkeys as $row ) { $niveaux = $row ['mniveaux']; if (($niveaux & ($level)) != 0) { $value = $row [$key]; $result [$value] = $this->image($value); } } return $result; } /** * Retourne le tableau tableau utilisé pour l'affichage par page * * @return objet La liste */ public function select_page($nb = 1000, $debut = 0, $selection = array()) { $select = $this->db->select('mlogin, mprenom, trigramme, mnom, madresse, cp, ville, mtelf, mtelm, memail, mdaten, m25ans, msexe, actif, categorie, photo')->from($this->table)->order_by('mnom, mprenom')->where($selection)-> // ->limit($nb, $debut) get()->result_array(); foreach ( $select as $key => $row ) { $select [$key] ['image'] = "le pilote " . $row ['mprenom'] . ' ' . $row ['mnom']; $pilote = $row ['mlogin']; $select [$key] ['vols_avion'] = anchor(controller_url("vols_avion/vols_du_pilote/$pilote"), "avion"); $select [$key] ['vols_planeur'] = anchor(controller_url("vols_planeur/vols_du_pilote/$pilote"), "planeur"); $select [$key] ['liens'] = form_dropdown('goto', array ( 'planeur' => "Vols planeur", 'avion' => "Vols avion", 'certificats' => "Certificats", 'compte' => "Compte", 'tickets' => 'Tickets' ), 'tickets', "id='goto' onchange=goto(\"$pilote\");"); $list = array ( anchor(controller_url("vols_avion/vols_du_pilote/$pilote"), "Vols avion"), anchor(controller_url("vols_planeur/vols_du_pilote/$pilote"), "Vols planeur"), anchor(controller_url("membre/certificats/$pilote"), "Certificats") ); $select [$key] ['vols_avion'] = ul($list); $msexe = $select [$key] ['msexe']; $select [$key] ['msexe'] = "
" . $msexe . "
"; // désactivé, pertube le tri par date // $mdaten = $select[$key]['mdaten']; // $class = "m25"; // $select[$key]['mdaten'] = "
" . $mdaten . "
"; // var_dump($select[$key]); } $this->gvvmetadata->store_table($this->table, $select); return $select; } /** * Retourne le tableau tableau utilisé pour l'affichage par page * * @return objet La liste */ public function select_licences() { $select = $this->db->select("mlogin, mprenom, mnom, madresse, cp, ville, mdaten, CONCAT(mnom, ' ', mprenom) as nom_prenom", FALSE)->from($this->table)->order_by('mnom, mprenom')->where(array ( 'actif' => 1 ))->get()->result_array(); $this->gvvmetadata->store_table($this->table, $select); return $select; } /** * * @return a default user, either the logged in one or the first one. */ public function default_id() { $id = $this->dx_auth->get_username(); $count = $this->count(array ( 'mlogin' => $id )); // echo "count=$count $id
"; if ($count == 0) { return ''; /** * $query = $this->db->select('mlogin') * ->from($this->table) * ->get() * ->result_array(); * $row = $query[0]; * $id = $row['mlogin']; */ } else { return $id; } } /** * Temporaire tratement d'une date */ function certif($mlogin, $id, $key, $value) { $select = $this->db->select('*')->from('events')->where(array ( 'emlogin' => $mlogin, 'etype' => $id ))->get()->result_array(); $count = count($select); if (! $count && ('0000-00-00' != $value)) echo "$count $mlogin: $key => $value ... $id" . br(); } /** * Fonction temporaire de migration des dates de certificats * * (14, 'Premier vol', 1), * (15, 'Laché planeur', 1), * (16, 'Vol 1h', 1), * (17, 'Vol 5h', 4), * (18, 'Gain de 1000m', 4), * (19, 'Gain de 3000m', 4), * (20, 'Gain de 5000m', 4), * (21, 'Distance de 50km', 4), * (22, 'Distance de 300km', 4), * (23, 'Distance de 500km', 4), * (24, 'Distance de 750km', 4), * (25, 'Distance de 1000km', 4), * (26, 'Visite médical', 0), * (27, 'BPP', 1), * (28, 'BIA', 0), * (29, 'Campagne', 1), * (30, 'Contôle de compétence', 1), * (31, 'Circuit de 300km FAI', 4), * (33, 'Théorique BPP', 1), * (34, 'Emport passager', 1), * (35, 'Laché avion', 2), * (36, 'BB', 2), * (37, 'PPL', 2); * (38, 'Validité licence avion', 2); * (39, 'FI Formateur instructeur', 2); * (40, 'FE Formateur examinateur', 2); * (41, 'Autorisation remorquage', 2); * (42, 'Premier vol avion', 1); * * (43, 'ITP', 1); * (44, 'ITV', 1); */ public function export($nb = 1000, $debut = 0) { $select = $this->db->select('*')->from($this->table)->order_by('mnom, mprenom')->limit($nb, $debut)->get()->result_array(); // var_dump($select); $certifs = array ( 'mbranum' => 37, 'mbradat' => 37, 'mbraval' => 38, 'mbrpnum' => 27, 'mbrpdat' => 27, 'numinstavion' => 39, 'dateinstavion' => 39, 'numivv' => 43, 'dateivv' => 43, 'medical' => 26 ); /* */ foreach ( $select as $row ) { $mlogin = $row ['mlogin']; foreach ( $row as $key => $value ) { if (array_key_exists($key, $certifs)) { if ($value) { $id = $certifs [$key]; $this->certif($mlogin, $id, $key, $value); } } } } } /** * Retourne la liste des adresses emails selectionnées sour forme de chaine de caractères. * * @param unknown_type $where * @return unknown */ public function emails($where = array()) { if ($where == '') $where = array (); if ($where == "solde < 0") { $where = array (); $debiteur = true; } else { $debiteur = false; } $select = $this->db->select("memail, memailparent, mlogin")->from($this->table)->where($where)->where(array ( 'actif' => 1 ))->get()->result_array(); $adresses = array (); foreach ( $select as $row ) { if ($debiteur) { // TODO: Il faudra faire qq chose de plus robuste $solde = $this->comptes_model->solde_pilote($row ['mlogin']); if ($solde >= 0) { gvv_debug("solde positif $solde " . $row ['mlogin']); continue; } } if (isset($row ['memail']) && $row ['memail']) $adresses [] = $row ['memail']; if (isset($row ['memailparent']) && $row ['memailparent']) $adresses [] = $row ['memailparent']; } $res = join(", ", $adresses); gvv_debug("emails = $res"); return $res; } /** * selectionne les pilotes qui ont une adresse email donnée * * @param unknown_type $email * @return unknown */ public function pilote_with_email($email) { $select = $this->db->select("mlogin, mprenom, mnom, madresse, cp, ville, mdaten, memail, memailparent", FALSE)->from($this->table)->order_by('mnom, mprenom')->where("actif = \"1\" and (memail = \"" . $email . "\" or memailparent = \"" . $email . "\") ")->get()->result_array(); gvv_debug("sql: " . $this->db->last_query()); $cnt = 0; foreach ( $select as $row ) { $select [$cnt] ['solde'] = $this->comptes_model->solde_pilote($row ['mlogin']); $cnt ++; } // gvv_debug("query result=" . var_export($select, true)); return $select; } } /* End of file membres_model.php */ /* Location: ./application/models/membres_model.php */