/**
 * Palauttaa luvun, joka ilmoittaa, kuinka monta annetun yläluokan lajia
 * annettu henkilö on havainnut.
 * @param <type> $tietokantaolio
 * @param <type> $henkilo_id
 * @param <type> $lajiluokka_id
 * @param <type> $puolivuotiskauden_nro: 1->kevät 2010, 2-> syksy2010, 3->kevät2011 jne.
 * Jos tämä on ei-numeerinen, haetaan kaikki.
 *
 * Palauttaa taulukon, jossa kaksi lkm-alkiota: kaikki ja Suomessa havaitut
 *
 * KORJAA MENEMÄÄN HAVAINTOJAKSOJEN KAUTTA KUN KERKIÄT
 */
function laske_henkilon_bongausten_lkm($tietokantaolio, $henkilo_id, $ylaluokka_id, $puolivuotiskauden_nro)
{
    $lkm = array();
    // 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";
    }
    // 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 = "AND bhavainnot.vuosi = {$vuosi}\n                        AND bhavainnot.kk > {$kk_alaraja}\n                        AND bhavainnot.kk < {$kk_ylaraja}";
    } else {
        $jaksoaikaehto = "";
        /* Haetaan kaikki! */
    }
    // Muotoillaan varmuusehto:
    $varmuusehto = "AND bhavainnot.varmuus >= " . Varmuus::$melkoisen_varma;
    $hakulause = "SELECT bhavainnot.lajiluokka_id AS laji_id\n                FROM bhavainnot\n                JOIN henkilot\n                ON bhavainnot.henkilo_id = henkilot.id\n                JOIN blajiluokat\n                ON bhavainnot.lajiluokka_id = blajiluokat.id\n                WHERE henkilot.id = {$henkilo_id}\n                AND {$ylaluokkaehto}\n                {$jaksoaikaehto}\n                {$varmuusehto}\n                GROUP BY laji_id;\n               ";
    $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause);
    // Palauttaa luvun 0 myös jos parametri paha.
    $lkm[0] = $tietokantaolio->hae_osumarivien_lkm($hakutulos);
    // Haetaan sitten vain Suomessa nähtyjen lkm:
    $suomi = Maat::$suomi;
    $hakulause = "SELECT bhavainnot.lajiluokka_id AS laji_id\n                FROM bhavainnot\n                JOIN henkilot\n                ON bhavainnot.henkilo_id = henkilot.id\n                JOIN blajiluokat\n                ON bhavainnot.lajiluokka_id = blajiluokat.id\n                WHERE henkilot.id = {$henkilo_id}\n                AND {$ylaluokkaehto}\n                {$jaksoaikaehto}\n                {$varmuusehto}\n                AND bhavainnot.maa = {$suomi}\n                GROUP BY laji_id;\n               ";
    $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause);
    // Palauttaa luvun 0 myös jos parametri paha.
    $lkm[1] = $tietokantaolio->hae_osumarivien_lkm($hakutulos);
    return $lkm;
}