Exemple #1
0
 /**
  * Tallentaa linkin kuvan ja albumin/havainnon&lajin välille. Palauttaa
  * onnistuessaan arvon Kuva::OPERAATIO_ONNISTUI tai sitten virheilmoituksen.
  * 
  * <p>Huom! Parametriolion id_kuva-muuttujan pitää olla määritelty,
  * muuten ei tehdä mittään!</p>
  * 
  * HUOM! MENEEKÖ JÄRJESTYSLUKU-JUTTU SEKAISIN, JOS SAMALLE KUVALLE MONTA
  * LINKKIÄ?! 
  * 
  * @param \Parametrit $parametriolio & edessä on siksi, että saadaan
  * välitettyä tietoa parametriolion avulla kutsuvaan ohjelmaan. 
  */
 public static function tallenna_kuvalinkit(&$parametriolio)
 {
     $tietokantaolio = $parametriolio->tietokantaolio;
     $uuden_kuvan_id = $parametriolio->id_kuva;
     $palaute = Kuva::$VIRHE;
     // Onnistumisen tarkastelu:
     $onnistumiset_lkm = 0;
     $linkitettavat_lkm = 0;
     // Näille pitäisi luoda linkit.
     // Tämän avulla osataan näyttää bongausalbumi tallennuksen jälkeen.
     $vika_id_lj = Lajiluokka::$MUUTTUJAA_EI_MAARITELTY;
     if ($uuden_kuvan_id == Parametrit::$EI_MAARITELTY) {
         $palaute = "Uuden kuvan id ei ole m&auml;&auml;ritelty!";
     } else {
         $taulu = $parametriolio->get_kuvalinkkitaulunimi();
         $sarakenimet = $parametriolio->get_kuvalinkkitaulun_sarakenimitaulukko();
         // Jarjestysluvuksi laitetaan uuden kuvan id.
         $jarjestysluku = $uuden_kuvan_id;
         // tapaus: monen havainnon valinta:
         if ($parametriolio->kokoelmanimi == Kuva::$KUVAT_BONGAUS && !empty($parametriolio->havaintovalinnat)) {
             $valitut_hav_idt = $parametriolio->havaintovalinnat;
             $linkitettavat_lkm = sizeof($valitut_hav_idt);
             // Tallennetaan yksi kerrallaan linkit. Huom! Ainut keksimäni
             // järkevä tapa täällä on tallentaa kuvalinkki samaan lajiluokkaan
             // kuin havaintokin on. Näin sama kuva saatetaan linkittää eri
             // lajeihin, mutta tämähän on käyttäjän tyhmyyttä.. Toki se
             // korjaantuu havainnon lajiluokkaa korjaamalla.
             foreach ($valitut_hav_idt as $id_hav) {
                 //Pitää laji_id hakea kustakin havainnosta erike
                 $hav = new Havainto($tietokantaolio, $id_hav);
                 if ($hav->olio_loytyi_tietokannasta) {
                     $id_lj = $hav->get_lajiluokka_id();
                     $vika_id_lj = $id_lj;
                     $arvot = array($uuden_kuvan_id, $id_lj, $id_hav, $jarjestysluku);
                     $virheilmoitus = "";
                     $onnistuiko_linkki = $parametriolio->tietokantaolio->tallenna_uusi_rivi($taulu, $sarakenimet, $arvot, $virheilmoitus);
                     if ($onnistuiko_linkki == Tietokantaolio::$HAKU_ONNISTUI) {
                         $onnistumiset_lkm++;
                     }
                 }
             }
             // Albumin näyttöä varten (joka lajille on oma albumi):
             $parametriolio->id_lj = $vika_id_lj;
         } else {
             // Vain yksi tallennetaan:
             $linkitettavat_lkm = 1;
             // Yksi on bongaus:
             if ($parametriolio->kokoelmanimi == Kuva::$KUVAT_BONGAUS) {
                 $arvot = array($uuden_kuvan_id, $parametriolio->id_lj, $parametriolio->id_hav, $jarjestysluku);
             } else {
                 $arvot = array($uuden_kuvan_id, $parametriolio->id_alb, $jarjestysluku);
             }
             $virheilmoitus = "";
             $onnistuiko_linkki = $parametriolio->tietokantaolio->tallenna_uusi_rivi($taulu, $sarakenimet, $arvot, $virheilmoitus);
             if ($onnistuiko_linkki == Tietokantaolio::$HAKU_ONNISTUI) {
                 $onnistumiset_lkm++;
             }
         }
         if ($onnistumiset_lkm > 0 && $onnistumiset_lkm === $linkitettavat_lkm) {
             $palaute = Kuva::$OPERAATIO_ONNISTUI;
         } else {
             if ($linkitettavat_lkm == 0) {
                 $palaute = "Virhe! Yht&auml;&auml; linkki&auml; ei tallennettu, " . " koska valintoja ei havaittu!";
             } else {
                 $palaute = "Virhe! Vain " . $onnistumiset_lkm . " linkki&auml; " . "tallennettiin! Piti tallentaa " . $linkitettavat_lkm . " kpl.";
             }
         }
     }
     return $palaute;
 }
 /**
  * ======================== SECURITY ====================================
  * Noukitaan valituista poistettaviin/muokattaviin sellaiset havainnot, joihin
  * käyttäjällä on oikeudet. Palauttaa ne taulukossa, joka voi olla
  * tyhjä.
  */
 private function poimi_valituista_mahdolliset($valitut)
 {
     $mahdolliset = array();
     $omaid = $this->get_parametriolio()->omaid;
     foreach ($valitut as $id_hav) {
         $ehdokas = new Havainto($this->get_tietokantaolio(), $id_hav);
         // Ok, jos käyttäjä on kuningas tai havainto oma:
         if ($ehdokas->olio_loytyi_tietokannasta) {
             if (on_kuningas($omaid, $this->get_tietokantaolio()) || $ehdokas->get_henkilo_id() === $omaid) {
                 // Lisätään muokattaviin:
                 array_push($mahdolliset, $ehdokas);
             }
         }
     }
     return $mahdolliset;
 }
Exemple #3
0
 /**
  * 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&auml;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;
 }
Exemple #4
0
                $linkit .= Havaintonakymat::nayta_arkistolinkit();
            } else {
                echo $ulosnappi;
            }
        }
    }
}
// Haetaan jakson nro ja havaintomäärät:
$nyk_vuosi = anna_nyk_vuoden_nro();
$nyk_kk = anna_nyk_kk_nro();
$nyk_puolivuotiskauden_nro = ($nyk_vuosi - 2009) * 2;
if ($nyk_kk < 7) {
    $nyk_puolivuotiskauden_nro--;
}
// Jos palauteolio on aktivoitu, haetaan sieltä tiedot:
if ($palauteolio->kaytossa()) {
    $sisalto = $palauteolio->get_sisalto();
    $ilmoitus = $palauteolio->get_ilmoitus();
    if ($palauteolio->get_nayta_kiintolinkit() == false) {
        $linkit = "";
    }
    if ($palauteolio->get_oikean_palkin_naytto() == true) {
        $oikea_palkki = "<span class = 'korostus'>Lajim&auml;&auml;r&auml;t (sangen varmat):</span><br />" . Havainto::hae_havaintomaarat($parametriolio->ylaluokka_id_lj, $parametriolio->tietokantaolio, $nyk_puolivuotiskauden_nro, $parametriolio->omaid);
    } else {
        $oikea_palkki = "";
    }
} else {
    $oikea_palkki = "<span class = 'korostus'>Lajim&auml;&auml;r&auml;t (sangen varmat):</span><br />" . Havainto::hae_havaintomaarat($parametriolio->ylaluokka_id_lj, $parametriolio->tietokantaolio, $nyk_puolivuotiskauden_nro, $parametriolio->omaid);
}
// Tulostetaan sivun html:
echo nayta_bongaussivu($parametriolio, $omat_valtuudet, $kielivalikko, $sisalto, $ilmoitus, $tiedot, $linkit, $oikea_palkki, $parametriolio->ylaluokka_id_lj);
 /**
  * Palauttaa yhden olion tiedot taulukkoriviin pakattuna (tr-elementti).
  * Huomaa huolehtia muista taulukkotageista!
  * @param \Havainto $hav
  * @param int $rivinro Taulukon rivin juokseva nro alkaen yhdestä.
  * @param bool $erikoisvarustelu TRUE -> sopii poistovahvistukseen jne.
  * @return type
  */
 public function luo_taulukkorivi($hav, $rivinro, $erikoisvarustelu)
 {
     $rivi_class = "";
     if ($rivinro % 2 == 0) {
         $rivi_class = Bongausasetuksia::$havaintotaulu_parillinenrivi_class;
     }
     $rivi_id = "havainto" . $hav->get_id();
     // Haetaan sitten lajiluokan nimi (kieli saadaan parametrioliosta:
     $lj = new Lajiluokka($this->tietokantaolio, $hav->get_lajiluokka_id());
     $kuvaus = $lj->hae_kuvaus($this->parametriolio->kieli_id);
     if ($kuvaus === Lajiluokka::$MUUTTUJAA_EI_MAARITELTY) {
         $nimi = $lj->get_nimi_latina();
     } else {
         $nimi = $kuvaus->get_nimi();
     }
     $bongaajan_nimi = hae_henkilon_nimi($hav->get_henkilo_id(), true, $this->tietokantaolio);
     //========================== PIkakommentit =========================
     // Toiminnot on tässä vaiheessa valintaruutu. Hakasulut pitää lisätä!
     $maar_array_valinnat = array(Maarite::name(Bongausasetuksia::$havaintovalinta_id_taulukko_name . "[]"), Maarite::value($hav->get_id()));
     $toimintasolu = Html::luo_tablesolu(Html::luo_checkbox($maar_array_valinnat), array());
     // Esim. poistovahvistuksessa valinta oletuksena päällä (koska nämä
     // on valittu):
     if ($erikoisvarustelu) {
         Maarite::lisaa_maarite(Maarite::checked(), $maar_array_valinnat);
         $toimintasolu = Html::luo_tablesolu(Html::luo_checkbox($maar_array_valinnat), array());
     }
     //========================== PIkakommentit =========================
     $pikakommenttisolu = "";
     $kommenttien_lkm = 0;
     $on_uusia_pk = false;
     $pikakommentit = Pikakommentti::hae_pikakommentit($this->parametriolio->omaid, Pikakommentti::$KOHDE_BONGAUS, $hav->get_id(), $this->tietokantaolio);
     // Jos viimeistä katseluaikaa ei ole asetettu, asetetaan 0:
     if (!isset($_SESSION['edellinen_uloskirjausaika_sek'])) {
         $_SESSION['edellinen_uloskirjausaika_sek'] = 0;
     }
     // Korostetaan solu, jos uusin on riittävän uusi eikä oma:
     if (!empty($pikakommentit)) {
         $kommenttien_lkm = sizeof($pikakommentit);
         if ($pikakommentit[0]->get_tallennushetki_sek() > $_SESSION['edellinen_uloskirjausaika_sek'] && $pikakommentit[0]->get_henkilo_id() != $this->parametriolio->omaid) {
             $on_uusia_pk = true;
         }
     }
     // Taulukon solun muotoilu:
     $onclick = Maarite::onclick("hae_pikakommentit", array(Pikakommentti::$KOHDE_BONGAUS, $hav->get_id()));
     $pk_class = "";
     if ($on_uusia_pk) {
         $pk_class = "on_uusia";
     }
     $pikakommenttisolu = Html::luo_tablesolu(Html::luo_span($kommenttien_lkm, array(Maarite::id("id" . $hav->get_id()))), array(Maarite::classs($pk_class), Maarite::title(Bongaustekstit::$ilm_pikakommentit_nakyviin), Maarite::onclick("hae_pikakommentit", array(Pikakommentti::$KOHDE_BONGAUS, $hav->get_id()))));
     //============= PIkakommentit loppu ================================
     // Muokataan varmuus- ja maamerkinnät:
     // Maa merkitään, ellei Suomi:
     if ($hav->get_maa() == Maat::$suomi) {
         $maa = "";
     } else {
         $maa = " (" . Maat::hae_maan_kuvaus($hav->get_maa()) . ")";
     }
     // Vain epävarmuus näytetään
     $varmuus = "";
     if ($hav->get_varmuus() == Varmuus::$epavarma) {
         $varmuus = " (?)";
     }
     // Haetaan kuva_id ja koodi:
     $kuvaolio = $hav->hae_kuva();
     if ($kuvaolio instanceof Kuva) {
         $kuvakoodi = $kuvaolio->nayta_pelkka_kuva($this->parametriolio->kuvien_kansio_osoite);
         $kuva_id = $kuvaolio->getId();
     } else {
         $kuvakoodi = "";
         $kuva_id = -1;
     }
     // Mahdollistetaan kuvan näyttö klikkaamalla:
     // Kuvaa klikkaamalla saadaan se isoksi:
     $klikkaus = "";
     // Tyhjä, ellei kuvakoodi ok.
     $title = "";
     if ($kuvakoodi != "") {
         $klikkaus = Maarite::onclick("hae_kuva_ja_tiedot", array($hav->get_lajiluokka_id(), $kuva_id, Kuva::$KUVAT_BONGAUS));
         $title = Bongaustekstit::$havtaulkuvan_klikkausohje;
     }
     return Html::luo_tablerivi(Html::luo_tablesolu($rivinro, array()) . Html::luo_tablesolu($nimi . $varmuus, array(Maarite::classs("huomio"), Maarite::title(Bongauspainikkeet::$HAVAINNOT_NAYTA_LAJIHAVAINNOT_TITLE), Maarite::onclick("hae_lajihavainnot", array($hav->get_lajiluokka_id())))) . Html::luo_tablesolu($hav->hae_pvm(), array()) . Html::luo_tablesolu($hav->get_paikka() . $maa, array()) . Html::luo_tablesolu(Html::luo_table(Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_span($hav->get_kommentti(), array(Maarite::classs(Bongausasetuksia::$havaintokuvakommentti_class))), array(Maarite::classs("rajaton"))) . Html::luo_tablesolu($kuvakoodi, array(Maarite::classs("rajaton"), $klikkaus, Maarite::title($title))), array()), array()), array(Maarite::name(Bongausasetuksia::$havaintotaulukon_kommenttisolun_name_arvo))) . Html::luo_tablesolu($bongaajan_nimi, array(Maarite::classs("huomio"), Maarite::title(Bongauspainikkeet::$HAVAINNOT_NAYTA_HENKILON_HAVAINNOT_TITLE), Maarite::onclick("hae_henkilon_havainnot", array($hav->get_henkilo_id(), $hav->get_lajiluokka_id())))) . $toimintasolu . $pikakommenttisolu, array(Maarite::classs($rivi_class), Maarite::id($rivi_id)));
 }
 /**
  * Tallentaa havainnon ja palauttaa olion, jonka tiedot haettu tietokannasta.
  * Virheen sattuessa palauttaa arvon Malliluokkapohja::VIRHE. 
  * @param <type> $henkilo_id
  * @param <type> $lajiluokka_id
  * @param <type> $vuosi
  * @param <type> $kk
  * @param <type> $paiva
  * @param <type> $paikka
  * @param <type> $kommentti
  * @param <type> $maa
  * @param <type> $varmuus
  */
 public function luo_ja_tallenna_havainto($henkilo_id, $lajiluokka_id, $vuosi, $kk, $paiva, $paikka, $kommentti, $maa, $varmuus)
 {
     $id = Havainto::$PARAMETRI_EI_KAYTOSSA;
     $hav = new Havainto($this->tietokantaolio, $id);
     $hav->set_henkilo_id($henkilo_id);
     $hav->set_lajiluokka_id($lajiluokka_id);
     $hav->set_vuosi($vuosi);
     $hav->set_kk($kk);
     $hav->set_paiva($paiva);
     $hav->set_paikka($paikka);
     $hav->set_kommentti($kommentti);
     $hav->set_maa($maa);
     $hav->set_varmuus($varmuus);
     $palaute = $hav->tallenna_uusi();
     // Haetaan tiedot:
     if ($palaute === Havainto::$OPERAATIO_ONNISTUI) {
         return new Havainto($this->tietokantaolio, $hav->get_id());
     } else {
         // Otetaan virheilmoitukset talteen ja nollataan olio:
         $this->lisaa_virheilmoitus($hav->tulosta_virheilmoitukset());
         $hav->nollaa_muuttujat();
         return Malliluokkapohja::$VIRHE;
     }
 }
 public function testaa_havainnon_poisto()
 {
     $this->lisaa_testikommentti("<h4>Havainnon poistotesti alkaa</h4>", false);
     $this->lisaa_testikommentti("<p>Luodaan poistoa varten uusi havainto.</p>", false);
     $henkilo_id = 1;
     $lajiluokka_id = $this->lajiluokka_id2;
     $vuosi = 2003;
     $kk = 6;
     $paiva = 12;
     $paikka = "Koulun piha";
     $kommentti = Havaintotestaus::$havainto_kommentti;
     $maa = Maat::$suomi;
     $varmuus = Varmuus::$melkoisen_varma;
     $this->havainto3 = $this->luo_ja_tallenna_havainto($henkilo_id, $lajiluokka_id, $vuosi, $kk, $paiva, $paikka, $kommentti, $maa, $varmuus);
     if ($this->havainto3 !== Havainto::$VIRHE) {
         $this->lisaa_testikommentti("Poistettavan luonti onnistui.", false);
         // Otetaan id talteen:
         $id_poistettava = $this->havainto3->get_id();
         $poistettava = $this->havainto3;
         $palaute = $poistettava->poista();
         if ($palaute === Havainto::$OPERAATIO_ONNISTUI) {
             $this->lisaa_testikommentti("Poisto onnistui!", false);
             $this->lisaa_testikommentti("Tehdaan viela tarkistus tietokannasta:", false);
             // TArkistetaan vielä tietokanta:
             $hakutulos = $this->tietokantaolio->tee_WHEREhaku_1(Tietokannan_taulunimet::$bhavainnot, Havainto::$SARAKENIMI_ID, $id_poistettava);
             $lkm = $this->tietokantaolio->hae_osumarivien_lkm($hakutulos);
             if ($lkm == 0) {
                 $this->lisaa_testikommentti("OK! Tietokannasta ei\n                        loytynyt poistettua havaintoa", false);
             } else {
                 $this->lisaa_testikommentti("Virhe! Tietokannasta\n                        loytyi poistetun id:lla " . $lkm . " havaintoa", true);
             }
         } else {
             $this->lisaa_testikommentti("Poisto epaonnistui! " . $palaute, true);
         }
     } else {
         $this->lisaa_testikommentti("Poistettavan luonti ep&auml;onnistui!", true);
     }
     $this->lisaa_testikommentti("Kokeillaan sitten poistaa olematon\n            havainto:", false);
     $falskihavainto = new Havainto($this->tietokantaolio, 12345);
     $palaute = $falskihavainto->poista();
     if ($palaute == Havainto::$OPERAATIO_ONNISTUI) {
         $this->lisaa_testikommentti("Virhe: olemattoman poisto onnistui! ", true);
     } else {
         $this->lisaa_testikommentti("Oikein: olemattoman poistoa ei edes\n                yriteta! ", false);
     }
     $this->lisaa_testikommentti("<h4>Havainnon poistotesti loppui</h4>", false);
 }