Пример #1
0
 /**
  * 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;
     }
 }
Пример #2
0
 /**
  * Toteuttaa monen uuden havainnon tallennuksen.
  * @return \Palaute
  */
 public function toteuta_tallenna_monta_uutta()
 {
     $tietokantaolio = $this->get_tietokantaolio();
     $palauteolio = $this->get_palauteolio();
     // Sisältää valittujen lajiluokkien id:t.
     $valinnat = $this->get_parametriolio()->lajivalinnat_hav;
     $laskuri = 0;
     $tallennusten_lkm = 0;
     $virheiden_lkm = 0;
     $tallennetut_lajit = "";
     // Nimet kerätään tähän.
     foreach ($valinnat as $id_lj) {
         $uusi = new Havainto($this->tietokantaolio(), Havainto::$PARAMETRI_EI_KAYTOSSA);
         $uusi->set_henkilo_id($this->get_parametriolio()->omaid);
         $uusi->set_lajiluokka_id($id_lj);
         $uusi->set_paiva($this->get_parametriolio()->paiva_hav);
         $uusi->set_kk($this->get_parametriolio()->kk_hav);
         $uusi->set_vuosi($this->get_parametriolio()->vuosi_hav);
         $uusi->set_paikka($this->get_parametriolio()->paikka_hav);
         $uusi->set_kommentti($this->get_parametriolio()->kommentti_hav);
         $uusi->set_maa($this->get_parametriolio()->maa_hav);
         $uusi->set_varmuus($this->get_parametriolio()->varmuus_hav);
         if ($uusi->tallenna_uusi() === Havainto::$OPERAATIO_ONNISTUI) {
             $tallennusten_lkm++;
             // Haetaan nimi tallennetulle:
             $nimi = Bongaustekstit::$nimi_tuntematon;
             $lajiluokka = new Lajiluokka($tietokantaolio, $id_lj);
             if ($lajiluokka->olio_loytyi_tietokannasta) {
                 $kuvaus = $lajiluokka->hae_kuvaus($this->get_parametriolio()->kieli_id);
                 if ($kuvaus instanceof Kuvaus) {
                     if ($laskuri == 0) {
                         $nimi = $kuvaus->get_nimi();
                     } else {
                         $nimi = ", " . $kuvaus->get_nimi();
                     }
                 }
             }
             $tallennetut_lajit .= $nimi;
         } else {
             $virheiden_lkm++;
         }
         $laskuri++;
     }
     // Aktiivisuusmerkintä (vain kerran):
     $viimeksi_aktiivi = time();
     $aktiivisuuslaji = Aktiivisuus::$HAVAINTO_UUDEN_TALLENNUS;
     paivita_aktiivisuus($this->get_parametriolio()->omaid, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji);
     // Palautteet:
     if ($tallennusten_lkm == sizeof($valinnat)) {
         $kommentti = $tallennusten_lkm . " " . Bongaustekstit::$ilm_havaintojen_lisays_ok . " (" . $tallennetut_lajit . ")";
     } else {
         $kommentti = $virheiden_lkm . " " . Bongaustekstit::$ilm_havaintojen_lisays_eiok;
     }
     $palauteolio->set_ilmoitus($kommentti);
     // Avataan havainnot.
     $palauteolio->set_sisalto($this->toteuta_nayta()->get_sisalto());
     return $palauteolio;
 }
Пример #3
0
 public function testaa_havainnon_muokkaus()
 {
     $this->lisaa_testikommentti("<h4>Havainnon muokkaustesti alkaa</h4>", false);
     $this->lisaa_testikommentti("Muokataan ekaa valmista havaintota (Linnut)", false);
     $this->muokattava = $this->havainto1;
     //======================================================================
     // Testataan ennen muutoksia onTallennuskelpoinen-metodi, jonka
     // pitäisi valittaa:
     $this->lisaa_testikommentti("Kokeillaan tallentaa ennen muutoksia,\n            minka ei pitaisi onnistua:", false);
     if ($this->muokattava->tallenna_muutokset() == Havainto::$OPERAATIO_ONNISTUI) {
         $this->lisaa_testikommentti("Virhe: muuttumattomia tietoja ei\n                ole tarkoitus antaa tallentaa!", true);
     } else {
         $this->lisaa_testikommentti("Oikein: muuttumattomia tietoja ei\n                tallenneta!", false);
     }
     //======================================================================
     // ASetetaan kuvaukselle tahallaan vääriä arvoja (paikaksi tyhjä):
     $this->muokattava->set_paikka("");
     $this->lisaa_testikommentti("Testataan tahallaan tallennus,\n            jonka pitaisi valittaa:", false);
     // tyhjennetään vielä aiemmat virheilmoitukset:
     $this->muokattava->tyhjenna_virheilmoitukset();
     // Virheilmoitus pitäisi tulla:
     if ($this->muokattava->tallenna_muutokset() == Havainto::$OPERAATIO_ONNISTUI) {
         $this->lisaa_testikommentti("Virhe: tyhjä paikka-muuttuja livahti ohi\n                        tarkastuksen!", true);
     } else {
         if ($this->muokattava->virheilmoitusten_lkm() == 1) {
             $this->lisaa_testikommentti("Oikein:  Tiedoissa virheita:<br/>" . $this->muokattava->tulosta_virheilmoitukset(), false);
         } else {
             $this->lisaa_testikommentti("Virhe: virheilmoituksia (" . $this->muokattava->virheilmoitusten_lkm() . " kpl):<br/>" . $this->muokattava->tulosta_virheilmoitukset(), true);
         }
     }
     // tyhjennetään vielä aiemmat virheilmoitukset:
     $this->muokattava->tyhjenna_virheilmoitukset();
     //======================================================================
     // ASetetaan havainnolle hyviä arvoja:
     $muokattu_paikka = "Naapurin pihallla";
     $muokattu_vuosi = 1999;
     $this->muokattava->set_paikka($muokattu_paikka);
     $this->muokattava->set_vuosi($muokattu_vuosi);
     $this->lisaa_testikommentti("Testataan hyvien muutosten tallennus, \n            jonka ei pitaisi valittaa:", false);
     // tyhjennetään vielä aiemmat virheilmoitukset:
     $this->muokattava->tyhjenna_virheilmoitukset();
     // Virheilmoituksia ei pitäisi tulla:
     if ($this->muokattava->tallenna_muutokset() === Havainto::$OPERAATIO_ONNISTUI) {
         $this->lisaa_testikommentti("Oikein! Tallennus ok!", false);
         // Kokeillaan hakea sama tietokannasta ja varmistetaan, että
         // muutettu kommentti on todella muuttunut:
         // Huom! Alla vuoden vertailussa pitää olla merkit noin. Täysi
         // identtisyys ei mene läpi. Menisi, jos vuosi olisi
         // määritelty $muokattu_vuosi = "1999". Liittyy ilmeisesti
         // tapaan, jolla numeroarvot jossakin vaiheessa muuttuvat merkkijonoiksi.
         $testi = new Havainto($this->tietokantaolio, $this->muokattava->get_id());
         if ($testi->get_paikka() === $muokattu_paikka && $testi->get_vuosi() == $muokattu_vuosi) {
             $this->lisaa_testikommentti("Muutokset oikein tietokannassa!\n                     Paikka on nykyaan: '" . $testi->get_paikka() . "' ja " . "vuosi '" . $testi->get_vuosi() . "'", false);
         } else {
             $this->lisaa_testikommentti("Muutokset vaarin tietokannassa!\n                     Paikka on nykyaan: '" . $testi->get_paikka() . "' ja " . "vuosi '" . $testi->get_vuosi() . "'", true);
         }
     } else {
         $this->lisaa_testikommentti("Virhe:  Tallennus ei ok:<br/>" . $this->muokattava->tulosta_virheilmoitukset(), true);
         $testi = new Havainto($this->tietokantaolio, $this->muokattava->get_id());
         $this->lisaa_testikommentti(" Tietokannassa seuraavat tiedot:\n                     Paikka on nykyaan: '" . $testi->get_paikka() . "' ja " . "vuosi '" . $testi->get_vuosi() . "'", true);
     }
     //======================================================================
     $this->lisaa_testikommentti("<h4>Havainnon muokkaustesti loppui</h4>", false);
     // Tyhjennetään virheilmoitukset:
     $this->tyhjenna_virheilmoitukset();
     //======================================================================
     //======================================================================
 }