/** * Hakee käyttäjien havaintomäärät kyseisestä luokasta. * @param <type> $ylaluokka_id luku, joka määrää sen, mistä yläluokasta * havaintoja haetaan. Jos parametri on alle 1 tai epäluku, etsitään kaikista * luokista. * @param <type> $tietokantaolio * @param <type> $nyk_puolivuotiskauden_nro: 1->kevät 2010, 2-> syksy2010, * 3->kevät2011 jne. * @param int $omaid Käyttäjän tunniste. */ static function hae_havaintomaarat($ylaluokka_id, $tietokantaolio, $nyk_puolivuotiskauden_nro, $omaid) { $palaute = ""; $ylaluokkaehto = ""; // Muotoillaan yläluokan lause: if (isset($ylaluokka_id) && is_numeric($ylaluokka_id) && $ylaluokka_id > 0) { $ylaluokkaehto = "blajiluokat.ylaluokka_id = {$ylaluokka_id}"; } else { $ylaluokkaehto = "blajiluokat.ylaluokka_id <> -1"; } //======================================================================= // Haetaan ensin kaikki havainnot: $hakulause = "SELECT DISTINCT\n henkilot.etunimi AS nimi,\n henkilot.id AS henk_id\n FROM blajiluokat\n JOIN bhavainnot\n ON bhavainnot.lajiluokka_id = blajiluokat.id\n JOIN henkilot\n ON bhavainnot.henkilo_id = henkilot.id\n WHERE {$ylaluokkaehto}"; $havaintohaku = $tietokantaolio->tee_OMAhaku($hakulause); $havaintotaulu_kaikki = $tietokantaolio->hae_osumarivit_olioina($havaintohaku); //============= SUODATUS ALKU ====================================== $havaintotaulu = array(); $suodattimet = Suodatin::hae_suodattimet($omaid, $tietokantaolio); foreach ($havaintotaulu_kaikki as $osuma) { $henkilo_id = $osuma->henk_id; if (!Suodatin::henkilo_suodatetaan_kevyt($henkilo_id, $omaid, $suodattimet)) { array_push($havaintotaulu, $osuma); } } //============= SUODATUS LOPPU ===================================== if (!empty($havaintotaulu)) { // Muotoillaan jakso-otsikko: $palaute .= "<div id='bongaukset_kaikki'><b>Kaikki</b><br />"; $havaintotulostaulu = array(); foreach ($havaintotaulu as $henkilo) { $lkm = Havainto::laske_henkilon_bongausten_lkm($tietokantaolio, $henkilo->henk_id, $ylaluokka_id, "Ehi vuan ihan kaikki!"); $tulosmj = "<span class='huomio2' title='" . Bongauspainikkeet::$HAVAINNOT_NAYTA_HENKILON_LAJIT_KAIKKI_TITLE . "' onclick='hae_henkilon_bongauslajit(" . $henkilo->henk_id . ",\"kaikki_jaksot\"," . "\"nayta_kaikki\")'>" . $henkilo->nimi . ": " . $lkm[0] . "</span>" . "<span class='huomio2' title='" . Bongauspainikkeet::$HAVAINNOT_NAYTA_HENKILON_LAJIT_SUOMI_TITLE . "' onclick='hae_henkilon_bongauslajit(" . $henkilo->henk_id . ",\"kaikki_jaksot\",\"" . Bongausasetuksia::$nayta_vain_suomessa_havaitut . "\")'>" . " (FI: " . $lkm[1] . ")" . "</span><br />"; array_push($havaintotulostaulu, array($lkm[0], $tulosmj)); } usort($havaintotulostaulu, "Havainto::vertaa_havaintomaarat"); foreach ($havaintotulostaulu as $tulos) { $palaute .= $tulos[1]; } // Kaikkien loppu: $palaute .= "</div>"; } //======================================================================= // Haetaan sitten puolivuotiskausittain: if (isset($nyk_puolivuotiskauden_nro) && is_numeric($nyk_puolivuotiskauden_nro) && $nyk_puolivuotiskauden_nro > 0) { /* Käydään läpi kaikki puolivuotiskaudet, joilla havaintoja tehty. */ for ($i = 0; $i < $nyk_puolivuotiskauden_nro; $i++) { $puolivuotiskauden_nro = $nyk_puolivuotiskauden_nro - $i; // Muotoillaan puolivuotiskauden valinta: if (is_numeric($puolivuotiskauden_nro)) { $vuosi = floor(2010 + ($puolivuotiskauden_nro - 1) / 2); $kk_alaraja = 0; $kk_ylaraja = 7; if ($puolivuotiskauden_nro % 2 == 0) { $kk_alaraja = 6; $kk_ylaraja = 13; } $jaksoaikaehto = "bhavainnot.vuosi = {$vuosi}\n AND bhavainnot.kk > {$kk_alaraja}\n AND bhavainnot.kk < {$kk_ylaraja}"; } else { $jaksoaikaehto = ""; /* Haetaan kaikki! */ } $hakulause = "SELECT DISTINCT\n henkilot.etunimi AS nimi,\n henkilot.id AS henk_id\n FROM blajiluokat\n JOIN bhavainnot\n ON bhavainnot.lajiluokka_id = blajiluokat.id\n JOIN henkilot\n ON bhavainnot.henkilo_id = henkilot.id\n WHERE {$ylaluokkaehto}\n AND {$jaksoaikaehto}\n "; $havaintohaku = $tietokantaolio->tee_OMAhaku($hakulause); $havaintotaulu_kaikki = $tietokantaolio->hae_osumarivit_olioina($havaintohaku); //============= SUODATUS ALKU ====================================== $havaintotaulu = array(); foreach ($havaintotaulu_kaikki as $osuma) { $henkilo_id = $osuma->henk_id; if (!Suodatin::henkilo_suodatetaan_kevyt($henkilo_id, $omaid, $suodattimet)) { array_push($havaintotaulu, $osuma); } } //============= SUODATUS LOPPU ===================================== if (!empty($havaintotaulu)) { // Muotoillaan jakso-otsikko: $palaute .= "<div class='bongaukset_jakso'><b>"; if ($puolivuotiskauden_nro % 2 == 0) { $palaute .= "Syksy "; } else { $palaute .= "Kevät "; } $palaute .= floor(2010 + ($puolivuotiskauden_nro - 1) / 2) . "</b><br />"; // Haluan nimet havaintomääräjärjestyksessä, joten teen // uuden taulukon, jossa järjestys oikea. Hmm. // Uuteen taulukkoon tulee jokaisesta henkilöstä tämän // tulosviesti ja lkm pikkutaulukossa. $havaintotulostaulu = array(); foreach ($havaintotaulu as $henkilo) { $lkm = Havainto::laske_henkilon_bongausten_lkm($tietokantaolio, $henkilo->henk_id, $ylaluokka_id, $puolivuotiskauden_nro); // Tulostetaan lajimäärät ja lisätään mahdollisuus // klikkaamalla nähdä havaitut lajit. $tulosmj = "<span class='huomio2' title='" . Bongauspainikkeet::$HAVAINNOT_NAYTA_HENKILON_LAJIT_KAIKKI_TITLE . "' onclick='hae_henkilon_bongauslajit(" . $henkilo->henk_id . "," . $puolivuotiskauden_nro . "," . "\"nayta_kaikki\")'>" . $henkilo->nimi . ": " . $lkm[0] . "</span>" . "<span class='huomio2' title='" . Bongauspainikkeet::$HAVAINNOT_NAYTA_HENKILON_LAJIT_SUOMI_TITLE . "' onclick='hae_henkilon_bongauslajit(" . $henkilo->henk_id . "," . $puolivuotiskauden_nro . ",\"" . Bongausasetuksia::$nayta_vain_suomessa_havaitut . "\")'>" . " (FI: " . $lkm[1] . ")" . "</span><br />"; array_push($havaintotulostaulu, array($lkm[0], $tulosmj)); } usort($havaintotulostaulu, "Havainto::vertaa_havaintomaarat"); foreach ($havaintotulostaulu as $tulos) { $palaute .= $tulos[1]; } $palaute .= "</div>"; } } } return $palaute; }