/** * Lisää havainnot, joiden kaikkien tiedot on kopioitu valituista. * Kopioida saa kaikkien havaintoja, myös omia, jos siihen näkee tarvetta. * * <p>Antaa ilmoitukset ja ilmoituksen onnistumisesta $palauteolion kautta. * Palauttaa käyttäjän havaintojen näyttötilaan.</p> * * @return \Palaute Palauttaa Palaute-luokan olion. */ public function toteuta_kopioi_itselle() { $valitut = $this->valittujen_idt; $omaid = $this->get_parametriolio()->omaid; $tallennetut = array(); $palauteolio = $this->get_palauteolio(); $virheilmot = array(); if (empty($valitut)) { $palauteolio->set_ilmoitus(Bongaustekstit::$ilm_ei_valintoja); $palauteolio->set_operaatio_onnistui(true); } else { foreach ($valitut as $id) { $kopioitava = new Havainto($this->get_tietokantaolio(), $id); if ($kopioitava->olio_loytyi_tietokannasta) { $uusi = new Havainto($this->get_tietokantaolio(), Havainto::$PARAMETRI_EI_KAYTOSSA); $uusi->set_lajiluokka_id($kopioitava->get_lajiluokka_id()); $uusi->set_henkilo_id($omaid); $uusi->set_kk($kopioitava->get_kk()); $uusi->set_paiva($kopioitava->get_paiva()); $uusi->set_vuosi($kopioitava->get_vuosi()); $uusi->set_maa($kopioitava->get_maa()); $uusi->set_paikka($kopioitava->get_paikka()); $uusi->set_varmuus($kopioitava->get_varmuus()); $uusi->set_kommentti(""); // Kommentiksi tyhjä. if ($uusi->tallenna_uusi() === Havainto::$OPERAATIO_ONNISTUI) { array_push($tallennetut, $uusi); } else { // tallennetaan virheilmoitukset array_push($virheilmot, $uusi->tulosta_virheilmoitukset()); } } } if (sizeof($tallennetut) == sizeof($valitut)) { $palauteolio->set_ilmoitus(sizeof($tallennetut) . " " . Bongaustekstit::$ilm_havaintojen_lisays_ok); $palauteolio->set_operaatio_onnistui(true); } else { $viestit = sizeof($valitut) - sizeof($tallennetut) . " " . Bongaustekstit::$ilm_havaintojen_lisays_eiok; foreach ($virheilmot as $ilm) { $viestit .= $ilm . Html::luo_br(); } $palauteolio->set_ilmoitus($viestit); $palauteolio->set_operaatio_onnistui(false); } } // Näytetään havainnot: $palauteolio->set_sisalto($this->toteuta_nayta()->get_sisalto()); return $palauteolio; }