load->model('common_model'); class Event_model extends Common_Model { public $table = 'events'; protected $primary_key = 'id'; /** * Retourne la liste des évenement d'un pilote * @return objet La liste */ public function evenement_de($membre, $where = array (), $name = "events") { $select = 'events.id as id, events.edate as date, events.evaid as plane_flight, events.evpid as glider_flight' . ', events.ecomment as comment, events_types.name as event_type, events_types.id as events_types_id, events_types.activite as activite, ordre, date_expiration'; $result = $this->db->select($select) ->from("events, events_types") ->where("events.etype = events_types.id") ->where(array ("events.emlogin" => $membre)) ->where($where) ->order_by('date DESC') ->get()->result_array(); $CI = & get_instance(); foreach ($result as $key => $row) { $result[$key]['image'] = date_db2ht($row['date']) . ' ' . $row['event_type']; if ($row['glider_flight']) { $image = $CI->vols_planeur_model->image($row['glider_flight']); $result[$key]['glider_flight_image'] = $image; } else { $result[$key]['glider_flight'] = ""; } if ($row['plane_flight']) { $image = $CI->vols_avion_model->image($row['plane_flight']); $result[$key]['plane_flight_image'] = $image; } else { $result[$key]['plane_flight'] = ""; } } $this->gvvmetadata->store_table($name, $result); return $result; } /** * @return a default user who has an event, either the logged in one or the first one. */ public function default_id() { if ($this->count() == 0) return ""; $id = $this->dx_auth->get_username(); $count = $this->count(array ( 'emlogin' => $id )); if ($count == 0) { $query = $this->db->select('emlogin')->from($this->table)->order_by('emlogin')->get()->result_array(); $row = $query[0]; $id = $row['emlogin']; return $id; } else { return $id; } } public function getEventMember($id) { $count = $this->count(array ( 'id' => $id )); if ($count == 0) return ""; else { $query = $this->db->select('id,emlogin')->from($this->table)->where(array ( "id" => $id ))->get()->result_array(); $row = $query[0]; return $row['emlogin']; } } /** * Retourne le tableau tableau utilisé pour l'affichage par page * @return objet La liste */ public function select_page($nb = 1000, $debut = 0, $where = array (), $name = "event") { $select = $this->select_columns('etype, edate, evpid, evaid, ecomment', $nb, $debut, $where); $this->gvvmetadata->store_table($name, $select); return $select; } /** * Certificats annuels * @param unknown_type $year */ public function getStats($year) { $select = 'events_types.name as event_type, etype, count(*) as stat'; $db_res = $this->db->select($select) ->from("events,events_types") ->where("events.etype = events_types.id") ->where(array ("YEAR(events.edate)" => $year)) ->order_by("name ASC") ->group_by("YEAR(edate),events_types.name") ->get(); $result = $this->get_to_array($db_res); $max = 0; foreach ($result as $key => $row) { // var_dump($row); $type = $row["etype"]; unset ($result[$key]["etype"]); $who = $this->db->select('emlogin, etype, mnom, mprenom, YEAR(edate) as year')->from("events, membres, events_types")->where("events.etype = events_types.id")->where("events.emlogin = membres.mlogin")->where("events.etype = \"$type\"")->where("YEAR(edate) = \"$year\"")->get()->result_array(); $count = 0; foreach ($who as $evt) { $count++; $login = $evt['emlogin']; $name = $evt["mprenom"] . " " . $evt["mnom"]; $result[$key][$count] = anchor(controller_url("event/page/$login"), $name); if ($count > $max) $max = $count; } } // remplit les lignes incomplètes foreach ($result as $key => $row) { for ($count = 1; $count <= $max; $count++) { if (!isset ($result[$key][$count])) { $result[$key][$count] = ''; } } } $this->gvvmetadata->store_table("events_year", $result); return $result; } /** * Extrait les informations de formation */ public function formation($activites = array (), $format = "html") { // Liste de pilotes actifs. $select = 'mlogin, mnom, mprenom, m25ans'; $actifs = $this->db->select($select)->from("membres") ->where("actif = \"1\" ") ->where("categorie <> \"1\" ") ->order_by("mnom, mprenom") ->get()->result_array(); // var_dump($actifs); // extraction des noms des certificats $types = $this->db->select("id, name, activite, ordre") ->from("events_types") ->order_by('activite, ordre') ->get()->result_array(); // extraction des certificats par pilotes $select = 'mlogin, mnom, mprenom, events.etype as event_type, events.edate as event_date, events_types.name as event_name'; $select .= ", events_types.expirable as expirable, events.date_expiration as date_expiration"; $db_res = $this->db->select($select) ->from("membres, events, events_types") ->where("events.etype = events_types.id") ->where("events.emlogin = membres.mlogin") ->order_by("mnom, mprenom, event_date") ->group_by("mlogin, event_name, event_date")->get(); $certifs = $this->get_to_array($db_res); $revert = array (); foreach ($certifs as $row) { $date = $row['event_date']; $str = date_db2ht($date); if (($format == "html") && ($row['expirable']) && isset($row['date_expiration']) && (strtotime($row['date_expiration']) < strtotime("now"))) $str = '
* foreach ($list as $line) { * $line['mlogin'], $line['mnom'] ** * @param $where selection * @return objet La liste */ public function flight_events($where = array ()) { return $this->db ->select("events.id as id, emlogin, events.etype, evpid, evaid, events_types.id as type_id, en_vol, activite") ->from("events, events_types") ->where($where) ->where("events.etype = events_types.id") ->get()->result_array(); } /** * Extrait les informations de formation */ public function licences_per_year($type) { // Liste de tous les pilotes qui ont eux des licences // Il faut fusionner les pilotes qui ont eu des licences (actifs ou non) et les pilotes actifs $select = 'mlogin, mnom, mprenom, m25ans'; $actifs = $this->db->select($select)->from("membres,licences") ->where("membres.mlogin = licences.pilote") ->group_by("membres.mlogin") ->order_by("mnom, mprenom")->get()->result_array(); // extraction des licences $selection = $this->select_columns('id, pilote, type, year, date, comment', 1000000, 0, array ( 'type' => $type )); // look for min and max year $min_range = 10; $min = date("Y"); $max = $min; foreach ($selection as $licence) { $year = $licence['year']; if ($year < $min) $min = $year; if ($year > $max) $max = $year; } if (($max - $min) < $min_range) $min = $max - $min_range; // Initialise the array $results = array (); $line = 0; $col = 0; $total_annuel = array (); $total_annuel[$col] = "Total"; $results[$line][$col++] = "Pilote"; for ($year = $min; $year <= $max; $year++) { $results[$line][$col] = $year; $total_annuel[$col] = 0; $col++; } $pilote_line = array (); foreach ($actifs as $pilote) { $line++; $col = 0; $mlogin = $pilote['mlogin']; $pilote_line[$mlogin] = $line; $results[$line][$col++] = anchor(controller_url("event/page/$mlogin"), $pilote['mnom'] . ' ' . $pilote['mprenom']); for ($year = $min; $year <= $max; $year++) { $url = controller_url("licences/set/$mlogin/$year/$type"); $box = anchor($url, '-'); $results[$line][$col++] = $box; } } foreach ($selection as $licence) { $pilote = $licence['pilote']; $year = $licence['year']; $url = controller_url("licences/switch_it/$pilote/$year/$type"); $box = anchor($url, $year); $col = $year - $min +1; if ( array_key_exists($pilote, $pilote_line) ) { $results[$pilote_line[$pilote]][$col] = $box; $total_annuel[$col] += 1; } } $results[] = $total_annuel; //var_dump($results); return $results; } /** * return the validity date of the last medical * or an empty string when there is none * @param unknown $mlogin */ function medical_validity_date($mlogin) { $medical_id = $this->config->item('medical_id'); $where = array('events_types.id' => $medical_id); $visites = $this->event_model->evenement_de($mlogin, $where); if (count($visites)) { $visite = $visites[0]; if (isset($visite['date_expiration']) && (strtotime('now') <= strtotime($visite['date_expiration']))) { return $visite['date_expiration']; } } return ""; } /** * Return the * @param unknown $mlogin */ function bpp_date($mlogin) { $where = array('events_types.name' => 'BPP'); $brevets = $this->event_model->evenement_de($mlogin, $where); if (count($brevets) > 0) { return $brevets[0]['date']; } return ""; } /** * Return the * @param unknown $mlogin */ function controle_date($mlogin) { $where = array('events_types.name' => 'Contrôle de compétence'); $liste = $this->event_model->evenement_de($mlogin, $where); if (count($liste) > 0) { return $liste[0]['date']; } return ""; } /** * Return the * @param unknown $mlogin */ function passager_date($mlogin) { $where = array('events_types.name' => 'Emport passager'); $liste = $this->event_model->evenement_de($mlogin, $where); if (count($liste) > 0) { return $liste[0]['date']; } return ""; } /** * Return the * @param unknown $mlogin */ function inst_validity($mlogin) { $where = array('events_types.name' => 'ITP'); $where = "(events_types.name like 'ITP' or events_types.name like 'ITV')"; $liste = $this->event_model->evenement_de($mlogin, $where); // var_dump($liste); if (count($liste) > 0) { return $liste[0]['date_expiration']; } return ""; } } ?>