/** * 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; }
/** * 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; } }