/** * Tallentaa muokatut tiedot ja palauttaa arvon * Havainto::OPERAATIO_ONNISTUI, jos onnistuu. */ public function tallenna_muutokset() { $palaute = ""; // Varmistetaan, että jokin on muuttunut vertaamalla tietokannassa // olevaan olioon: $muutoksia_havaittu = false; $alkup = Havainto::etsi($this->get_id(), $this->tietokantaolio); if ($alkup->olio_loytyi_tietokannasta) { if ($this->lajiluokka_id === $alkup->get_lajiluokka_id() && $this->vuosi === $alkup->get_vuosi() && $this->kk === $alkup->get_kk() && $this->paiva === $alkup->get_paiva() && $this->paikka === $alkup->get_paikka() && $this->kommentti === $alkup->get_kommentti() && $this->maa === $alkup->get_maa() && $this->varmuus === $alkup->get_varmuus()) { $muutoksia_havaittu = false; } else { $muutoksia_havaittu = true; } } if ($muutoksia_havaittu) { // Tarkistetaan vielä, että arvot ok: if ($this->on_tallennuskelpoinen(false)) { $taulu = Tietokannan_taulunimet::$bhavainnot; $muutossarakkeet = array(Havainto::$SARAKENIMI_LAJILUOKKA_ID, Havainto::$SARAKENIMI_VUOSI, Havainto::$SARAKENIMI_KK, Havainto::$SARAKENIMI_PAIVA, Havainto::$SARAKENIMI_PAIKKA, Havainto::$SARAKENIMI_KOMMENTTI, Havainto::$SARAKENIMI_MAA, Havainto::$SARAKENIMI_VARMUUS); $muutosarvot = array($this->lajiluokka_id, $this->vuosi, $this->kk, $this->paiva, $this->paikka, $this->kommentti, $this->maa, $this->varmuus); $ehtosarake = Havainto::$SARAKENIMI_ID; $ehtoarvo = $this->get_id(); $max_muutosrivilkm = 1; // Muutetaan max yhtä riviä. $muokattujen_lkm = $this->tietokantaolio->tee_UPDATEhaku($taulu, $muutossarakkeet, $muutosarvot, $ehtosarake, $ehtoarvo, $max_muutosrivilkm); if ($muokattujen_lkm === 1) { $palaute = Havainto::$OPERAATIO_ONNISTUI; } else { $palaute = Havainto::$VIRHE; $this->lisaa_virheilmoitus(Bongaustekstit::$ilm_havainnon_muokkaustallennus_eiok); } } // Ellei ole tallennuskelpoinen, tulee siitä ilmoitus listalle. } else { // Ellei muutoksia havaittu: $ilmoitus = Bongaustekstit::$ilm_havainnon_muutoksia_ei_havaittu; $this->lisaa_ilmoitus($ilmoitus, Ilmoitus::$TYYPPI_ILMOITUS); } return $palaute; }