/** * 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ää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ää linkkiä ei tallennettu, " . " koska valintoja ei havaittu!"; } else { $palaute = "Virhe! Vain " . $onnistumiset_lkm . " linkkiä " . "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; }
/** * 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; }
$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äärä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äärä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ä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); }