Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 /**
  * Lisää tarkistuksia esimerkiksi liittyen tunnuksiin. Palauttaa samat
  * arvot kuin Malliluokkapohjan metodikin. Virheen sattuessa ilmoitukset
  * virheilmoituksissa.
  * 
  * Huomaa, että salasana koodaus tehdään vasta tarkistuksen jälkeen, jotta
  * tarkistus on mahdollinen. Tämä tosin aiheutti melkein aika ilkeän
  * virheen, jonka onneksi testiohjelma huomasi...
  */
 public function tallenna_muutokset()
 {
     // Tarkistetaan ennen tallennuksen yrittämistä.
     $uusi_olio = false;
     if ($this->on_tallennuskelpoinen($uusi_olio)) {
         // Jos kaikki kunnossa, koodataan tarvittaessa salasana ja tallennetaan:
         if ($this->tunnusten_muokkaus === Tunnukset::$kumpikin || $this->tunnusten_muokkaus === Tunnukset::$vain_salis) {
             $koodattu = md5($this->get_arvo(Henkilo::$sarakenimi_salasana));
             $this->set_arvo($koodattu, Henkilo::$sarakenimi_salasana);
         }
         $tallennuspalaute = parent::tallenna_muutokset();
     } else {
         $tallennuspalaute = Henkilo::$VIRHE;
         // Tämä oli ilkeä: virheellinen arvo aiheutti sen, että
         // salasana jäi koodaamattomaan muotoon, ja jos heti perään
         // muokattiin olion jotakin muuta kuin tunnusta, livahti
         // tietokantaan salasana selväkielisenä! Kannatti testata...
         // Pitää siis koodata täällä myös!
         if ($this->tunnusten_muokkaus === Tunnukset::$kumpikin || $this->tunnusten_muokkaus === Tunnukset::$vain_salis) {
             $koodattu = md5($this->get_arvo(Henkilo::$sarakenimi_salasana));
             $this->set_arvo($koodattu, Henkilo::$sarakenimi_salasana);
         }
     }
     return $tallennuspalaute;
 }