/** * Toteuttaa uuden havainnon tallentamisen. Lopuksi näyttää havainnot ja * tuo näkyviin nimenomaan juuri tallennetun havainnon, vaikkei se olisikaan * uusin havainto. * * @param Parametrit $parametriolio * @return Palaute $palauteolio */ function toteuta_uuden_havainnon_tallennus($parametriolio) { $omaid = $parametriolio->omaid; $lajiluokka_id_hav = $parametriolio->lajiluokka_id_hav; $paiva_hav = $parametriolio->paiva_hav; $kk_hav = $parametriolio->kk_hav; $vuosi_hav = $parametriolio->vuosi_hav; $paikka_hav = $parametriolio->paikka_hav; $kommentti_hav = $parametriolio->kommentti_hav; $kieli_kuv = $parametriolio->kieli_kuv; $tietokantaolio = $parametriolio->tietokantaolio; $id_hav = false; // Tätä ei vielä tiedetä. $palauteolio = new Palaute(); // Määritellään kaksialkioinen taulukko, jonka metodi palauttaa: $palautetaulukko = array(); $palautetaulukko[0] = "Ilmoitus"; $palautetaulukko[1] = "Sisalto"; // Tarkistetaan tiedot: $tarkistustulos = tarkista_havaintotiedot($paikka_hav, $kommentti_hav, $vuosi_hav, $kk_hav, $paiva_hav); // Ellei tiedot ole kunnossa, palautetaan virheilmoitus ja näytetään // lomake: if ($tarkistustulos != Bongausasetuksia::$lomaketiedot_kunnossa) { $palautetaulukko[0] = $tarkistustulos; $parametriolio->set_uusi_hav(true); $parametriolio->set_tallennuspalaute($tarkistustulos); $palautetaulukko[1] = nayta_havaintolomake($parametriolio); } else { $taulu = "bhavainnot"; $sarakenimitaulukko = array("henkilo_id", "lajiluokka_id", "vuosi", "kk", "paiva", "paikka", "kommentti", "maa", "varmuus"); $arvotaulukko = array($omaid, $lajiluokka_id_hav, $vuosi_hav, $kk_hav, $paiva_hav, $paikka_hav, $kommentti_hav, $parametriolio->maa_hav, $parametriolio->varmuus_hav); $havaintotallennuspalaute = $tietokantaolio->tallenna_uusi_rivi($taulu, $sarakenimitaulukko, $arvotaulukko, Bongaustekstit::$havainto_virheilm_tallennus_eiok); // Jos ei onnistunut: if ($havaintotallennuspalaute != Bongausasetuksia::$tietokantahaku_onnistui) { $palautetaulukko[0] = $havaintotallennuspalaute; $parametriolio->set_uusi_hav(true); $parametriolio->set_tallennuspalaute($havaintotallennuspalaute); $palautetaulukko[1] = nayta_havaintolomake($parametriolio); } else { if (mysql_affected_rows() == 1) { // Haetaan luodun havainnon id: $uuden_id = mysql_insert_id(); // Haetaan lajin nimi // Tässäpä lausetta kerrakseen: $hakulause = "SELECT bkuvaukset.nimi AS laji\n FROM bkuvaukset\n WHERE bkuvaukset.lajiluokka_id = {$lajiluokka_id_hav}\n AND bkuvaukset.kieli= " . $kieli_kuv . "\n LIMIT 1\n "; $havaintohaku = $tietokantaolio->tee_OMAhaku($hakulause); $havaintotaulu = $tietokantaolio->hae_osumarivit_olioina($havaintohaku); if (!empty($havaintotaulu)) { $laji = $havaintotaulu[0]->laji; } else { $laji = "tuntematon"; } // Eka kirjain isoksi (toimii englantilaisilla kirjaimilla): $laji = eka_kirjain_isoksi($laji); // Ilmoitetaan tallennetun lajin nimi: $parametriolio->set_tallennuspalaute($laji . Bongaustekstit::$ilm_havainto_lajista); // Aktiivisuusmerkintä: $viimeksi_aktiivi = time(); $aktiivisuuslaji = Aktiivisuus::$HAVAINTO_UUDEN_TALLENNUS; paivita_aktiivisuus($omaid, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji); $palautetaulukko[0] = Bongaustekstit::$ilm_havainnon_lisays_ok; // Tyhjennetään lajiluokka, ettei hämää jo tallennetulla lajilla: $lajiluokka_id_hav = ""; if ($parametriolio->get_aukaise_havainnot()) { $parametriolio->id_hav = $uuden_id; $palautetaulukko[1] = hae_havainnot($parametriolio); } else { $parametriolio->set_uusi_hav(true); $palautetaulukko[1] = nayta_havaintolomake($parametriolio); } } } } $palauteolio->set_sisalto($palautetaulukko[1]); $palauteolio->set_ilmoitus($palautetaulukko[0]); $palauteolio->set_oikean_palkin_naytto(true); return $palauteolio; }