예제 #1
0
/**
 * 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;
}