/** * Metodi, joka tallentaa muokatun kokonaisuuden tiedot tietokantaan. * Palauttaa arvon Malliluokkapohja::$VIRHE, jos tallennus epäonnistuu, * muuten arvon Malliluokkapohja::$OPERAATIO_ONNISTUI. * * Ajaa Malliluokkapohjan vastaavan metodin yli. * * Seuraavat arvot asetetaan täällä automaattisesti, joten niistä ei * tarvitse muualla huolehtia: * * ed_muutos_sek * * luomishetki_sek-arvoa ei ole syytä muuttaa, vaikka sitä ei estetä täällä. * * Huolehtii myös isikokonaisuuksien on_lapsia-arvojen päivittämisestä silloin, kun * isikokonaisuutta vaihdetaan. Tällöin sekä uuden että vanhan isi- * kokonaisuuden on_lapsia-arvot tarkistetaan ja päivitetään. * * @return int Palauttaa normaalin Malliluokkapohja::$VIRHE tai * Malliluokkapohja::$OPERAATIO_ONNISTUI -arvon. * */ function tallenna_muutokset() { $this->set_arvo(time(), Kokonaisuusolio::$sarakenimi_ed_muutos_sek); // Haetaan tietokannassa olevan olion ylakokonaisuuden_id, koska tämän // olion arvoja on jo saatettu muuttaa: $vanha = new Kokonaisuusolio($this->get_id(), $this->tietokantaolio); $ylakokonaisuuden_id_vanha = $vanha->getYlakokonaisuuden_id(); $tallennus = parent::tallenna_muutokset(); if ($tallennus === Malliluokkapohja::$OPERAATIO_ONNISTUI) { // Päivitetään on_lapsia, jos kokonaisuus on linkitetty johonkin muuhun: $ylakokonaisuuden_id = $this->getYlakokonaisuuden_id(); if ($ylakokonaisuuden_id != $ylakokonaisuuden_id_vanha) { // Jos uusi yläkokonaisuus on olemassaolevan kokonaisuus, // varmistetaan, että sillä on lapsia. if ($ylakokonaisuuden_id > 0) { $ylakok = new Kokonaisuusolio($ylakokonaisuuden_id, $this->tietokantaolio); if ($ylakok->olio_loytyi_tietokannasta) { $on_lapsia = 1; $onnistuminen = $ylakok->tallenna_on_lapsia_muutos_kokon($on_lapsia); if ($onnistuminen === Kokonaisuusolio::$VIRHE) { $this->lisaa_virheilmoitus(Tekstit::$virheilm_kokon_muutostallennus_lapsimuutos_eiok); } } else { $this->lisaa_virheilmoitus(Tekstit::$ilm_kokon_ei_loytynyt); } } // Mahdollinen entinen yläkokonaisuus pitää myös tarkistaa, onko // sillä vielä lapsia vai ei. Mutta vain jos id > 0, koska // muuten kokonaisuudella ei ennen ollut yläkokonaisuuksia. if ($ylakokonaisuuden_id_vanha > 0) { $ylakok_vanha = new Kokonaisuusolio($ylakokonaisuuden_id_vanha, $this->tietokantaolio); if ($ylakok_vanha->olio_loytyi_tietokannasta) { if ($ylakok_vanha->on_lapsia_kokon()) { $on_lapsia = 1; } else { $on_lapsia = 0; } $onnistuminen = $ylakok_vanha->tallenna_on_lapsia_muutos_kokon($on_lapsia); if ($onnistuminen === Kokonaisuusolio::$VIRHE) { $this->lisaa_virheilmoitus(Tekstit::$virheilm_kokon_muutostallennus_lapsimuutos_eiok); } } else { $this->lisaa_virheilmoitus(Tekstit::$ilm_kokon_ei_loytynyt); } } } } return $tallennus; }