public function toteuta_tallenna_uusia_lisavaltuuksia(&$palaute)
 {
     $tietokantaolio = $this->get_tietokantaolio();
     $parametriolio = $this->get_parametriolio();
     // Huom: alla naytettava-muuttujaa käytetään poikkeavalla tavalla,
     // jota ei suositella yleensä.
     $parametriolio->naytettava = $parametriolio->lv_kohdetyyppi;
     // Vaihtoehdot ovat joko lisävaltuus yksittäiseen olioon tai sitten
     // omistajan kaikkiin olioihin liittyen.
     if ($parametriolio->lv_vaikutusalue == Lisavaltuudet::$kaikki_omistajan_oliot) {
         // Nämä molemmat pitää tällöin olla tietokannassa seuraavasti:
         $parametriolio->lv_kohde_id = Lisavaltuudet::$kaikki_omistajan_oliot;
         $parametriolio->lv_kohdetyyppi = Lisavaltuudet::$kaikki_omistajan_oliot;
     }
     // Sitten luodaan uusi olio ja tallennetaan se:
     $id = Lisavaltuudet::$MUUTTUJAA_EI_MAARITELTY;
     $uusi_lv = new Lisavaltuudet($id, $tietokantaolio);
     $uusi_lv->set_arvo($parametriolio->lv_henkilo_id, Lisavaltuudet::$sarakenimi_henkilo_id);
     $uusi_lv->set_arvo($parametriolio->lv_kohde_id, Lisavaltuudet::$sarakenimi_olio_id);
     $uusi_lv->set_arvo($parametriolio->lv_kohdetyyppi, Lisavaltuudet::$sarakenimi_oliotyyppi);
     $uusi_lv->set_arvo($parametriolio->lv_oikeudet, Lisavaltuudet::$sarakenimi_valtuus);
     $uusi_lv->set_arvo($parametriolio->lv_omistaja_id, Lisavaltuudet::$sarakenimi_omistaja_id);
     // Täällä tehdään myös kaikki mahdolliset tarkistukset.
     if ($uusi_lv->tallenna_uusi() == Lisavaltuudet::$OPERAATIO_ONNISTUI) {
         $palaute = toteuta_nayta_oliot2($parametriolio);
         $palaute->set_ilmoitus(Kayttajatekstit::$lisavaltuudet_tallennus_onnistui);
     } else {
         $palaute = toteuta_nayta_oliot2($parametriolio);
         $palaute->set_ilmoitus(Kayttajatekstit::$lisavaltuudet_tallennus_epaonnistui . "<br/>" . $uusi_lv->tulosta_virheilmoitukset());
         $this->lisaa_virheilmoitus(Kayttajatekstit::$lisavaltuudet_tallennus_epaonnistui . "<br/>" . $uusi_lv->tulosta_virheilmoitukset());
     }
     return $palaute;
 }
Example #2
0
 public function testaa_lisavaltuuden_luominen_tallennus()
 {
     if (!$this->testiratkaisu instanceof Ratkaisu) {
         $this->lisaa_virheilmoitus("Virhe metodissa 'testaa_lisavaltuu...'" . " ratkaisuolio ei ole oikea olio!");
     } else {
         $this->lisaa_lihava_kommentti("Luodaan uusi Lisavaltuudet-luokan olio kaikilla oikeuksilla:");
         $id = Malliluokkapohja::$MUUTTUJAA_EI_MAARITELTY;
         $this->testilisavaltuus = new Lisavaltuudet($id, $this->tietokantaolio);
         // Annetaan kunnon arvot:
         $this->testilisavaltuus->set_arvo_kevyt($this->testihenkilo->get_id(), Lisavaltuudet::$sarakenimi_henkilo_id);
         $this->testilisavaltuus->set_arvo_kevyt($this->testiratkaisu->getId(), Lisavaltuudet::$sarakenimi_olio_id);
         $this->testilisavaltuus->set_arvo_kevyt(Oliotyyppi::$RATKAISU, Lisavaltuudet::$sarakenimi_oliotyyppi);
         $this->testilisavaltuus->set_arvo_kevyt($this->testiomistaja->get_id(), Lisavaltuudet::$sarakenimi_omistaja_id);
         $this->testilisavaltuus->set_arvo_kevyt(Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA, Lisavaltuudet::$sarakenimi_valtuus);
         // Arvojen asetuksen onnistuminen:
         if ($this->testilisavaltuus->virheilmoitusten_lkm() == 0) {
             $this->lisaa_kommentti("Lisävaltuuden arvojen asetus onnistui.");
             // Tallennus tietokantaan:
             // Tallennus:
             if ($this->testilisavaltuus->tallenna_uusi() === Malliluokkapohja::$OPERAATIO_ONNISTUI) {
                 $this->lisaa_kommentti("Uuden lisävaltuuden luonti ja tallennus ok!");
                 // Tarkistetaan vielä tiedot ja hakumetodi:
                 $lisavaltuusarvo = Lisavaltuudet::hae_lisavaltuus_static($this->testiratkaisu->getId(), Oliotyyppi::$RATKAISU, $this->testihenkilo->get_id(), $this->testiratkaisu->getHenkiloId(), $this->tietokantaolio);
                 // Alla ei saa olla "==="-juttua! (lukujen tyyppi muuttuu helposti)
                 if ($lisavaltuusarvo == Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) {
                     $this->lisaa_kommentti("Uuden lisävaltuuden haku tietokannasta ok!");
                 } else {
                     $this->lisaa_virheilmoitus("Virhe lisävaltuuden haussa!" . " Tarkista 'Lisavaltuudet::hae_lisavaltuus'-metodi!" . " Y.m. metodin palautusarvo=" . $lisavaltuusarvo);
                 }
             } else {
                 $this->lisaa_virheilmoitus("Virhe uuden lisävaltuuden " . "tallennuksessa.  <br/>" . $this->testilisavaltuus->tulosta_virheilmoitukset());
             }
         } else {
             $this->lisaa_virheilmoitus("Virhe arvojen asetuksessa: <br/>" . $this->testilisavaltuus->tulosta_virheilmoitukset());
         }
         //=======================================================================
         //=======================================================================
         $this->lisaa_kommentti("==========================================================");
         $this->lisaa_lihava_kommentti("Yritetään tallentaa uusi lisävaltuus samoilla\n                 tiedoilla:");
         $pal = $this->testilisavaltuus->tallenna_uusi();
         if ($pal == Lisavaltuudet::$VIRHE) {
             $this->lisaa_kommentti("Oikein, ei onnistunut. <br/>" . $this->testilisavaltuus->tulosta_virheilmoitukset());
         } else {
             $this->lisaa_virheilmoitus("Virhe: sama tallennettiin uudestaan!" . $this->testilisavaltuus->tulosta_virheilmoitukset());
         }
         $this->testilisavaltuus->tyhjenna_kaikki_ilmoitukset();
         //=======================================================================
         //=======================================================================
         $this->lisaa_kommentti("==========================================================");
         $this->lisaa_lihava_kommentti("Tallennetaan uusi yleinen lisävaltuus \n                joka koskee testiomistajan kaikkia kohteita:");
         $id = Malliluokkapohja::$MUUTTUJAA_EI_MAARITELTY;
         $this->testilisavaltuus_yleinen = new Lisavaltuudet($id, $this->tietokantaolio);
         // Annetaan kunnon arvot:
         $this->testilisavaltuus_yleinen->set_arvo_kevyt($this->testihenkilo->get_id(), Lisavaltuudet::$sarakenimi_henkilo_id);
         //============ huom nämä!
         $this->testilisavaltuus_yleinen->set_arvo_kevyt(Lisavaltuudet::$kaikki_omistajan_oliot, Lisavaltuudet::$sarakenimi_olio_id);
         $this->testilisavaltuus_yleinen->set_arvo_kevyt(Lisavaltuudet::$kaikki_omistajan_oliot, Lisavaltuudet::$sarakenimi_oliotyyppi);
         //============
         $this->testilisavaltuus_yleinen->set_arvo_kevyt($this->testiomistaja->get_id(), Lisavaltuudet::$sarakenimi_omistaja_id);
         $this->testilisavaltuus_yleinen->set_arvo_kevyt(Lisavaltuudet::$SAA_MUOKATA_JA_POISTAA, Lisavaltuudet::$sarakenimi_valtuus);
         $pal = $this->testilisavaltuus_yleinen->tallenna_uusi();
         if ($pal == Lisavaltuudet::$VIRHE) {
             $this->lisaa_virheilmoitus("Virhe yleisen lisävaltuudet tallennuksessa. <br/>" . $this->testilisavaltuus_yleinen->tulosta_virheilmoitukset());
         } else {
             $this->lisaa_kommentti("Yleisen lisävaltuuden tallennus onnistui!" . $this->testilisavaltuus_yleinen->tulosta_virheilmoitukset());
             $this->lisaa_kommentti("Tarkistetaan, että valtuusarvon hakumetodi" . " hakee nimenomaan suuremman kahdesta:");
             // Tarkistetaan vielä tiedot ja hakumetodi:
             $lisavaltuusarvo = Lisavaltuudet::hae_lisavaltuus_static($this->testiratkaisu->getId(), Oliotyyppi::$RATKAISU, $this->testilisavaltuus_yleinen->get_henkilo_id(), $this->testilisavaltuus_yleinen->get_omistaja_id(), $this->tietokantaolio);
             // Alla ei saa olla "==="-juttua! (lukujen tyyppi muuttuu helposti)
             if ($lisavaltuusarvo == $this->testilisavaltuus_yleinen->get_valtuusarvo()) {
                 $this->lisaa_kommentti("Uuden lisävaltuuden haku tietokannasta ok!");
             } else {
                 $this->lisaa_virheilmoitus("Virhe lisävaltuuden haussa!" . " Tarkista 'Lisavaltuudet::hae_lisavaltuus'-metodi!" . " Y.m. metodin palautusarvo=" . $lisavaltuusarvo);
             }
         }
         //=======================================================================
         //=======================================================================
         $this->lisaa_kommentti("==========================================================");
         $this->lisaa_lihava_kommentti("Yritetään tallentaa uusi yleinen lisävaltuus samoilla\n                 tiedoilla:");
         $pal = $this->testilisavaltuus_yleinen->tallenna_uusi();
         if ($pal == Lisavaltuudet::$VIRHE) {
             $this->lisaa_kommentti("Oikein, ei onnistunut. <br/>" . $this->testilisavaltuus_yleinen->tulosta_virheilmoitukset());
         } else {
             $this->lisaa_virheilmoitus("Virhe: sama tallennettiin uudestaan!" . $this->testilisavaltuus_yleinen->tulosta_virheilmoitukset());
         }
         $this->testilisavaltuus_yleinen->tyhjenna_kaikki_ilmoitukset();
         //=======================================================================
         //=======================================================================
         $this->lisaa_kommentti("==========================================================");
         $this->lisaa_lihava_kommentti("Yritetään tallentaa testihenkilölle\n                uutta erityistä lisävaltuutta, minkä pitäisi nyt onnistua!");
         $id = Malliluokkapohja::$MUUTTUJAA_EI_MAARITELTY;
         $testi = new Lisavaltuudet($id, $this->tietokantaolio);
         // Annetaan kunnon arvot:
         $testi->set_arvo_kevyt($this->testihenkilo->get_id(), Lisavaltuudet::$sarakenimi_henkilo_id);
         $testiolio_id = 222;
         // Tällaista yksittäistä lisävaltuutta ei varmasti löydy!
         $testi->set_arvo_kevyt($testiolio_id, Lisavaltuudet::$sarakenimi_olio_id);
         $testi->set_arvo_kevyt(Oliotyyppi::$KOKONAISUUS, Lisavaltuudet::$sarakenimi_oliotyyppi);
         $testi->set_arvo_kevyt($this->testiomistaja->get_id(), Lisavaltuudet::$sarakenimi_omistaja_id);
         $testi->set_arvo_kevyt(Lisavaltuudet::$SAA_MUOKATA_JA_POISTAA, Lisavaltuudet::$sarakenimi_valtuus);
         $pal = $testi->tallenna_uusi();
         if ($pal == Lisavaltuudet::$VIRHE) {
             $this->lisaa_virheilmoitus("Virhe: tallennus ei onnistunut! <br/>" . $testi->tulosta_virheilmoitukset());
         } else {
             $this->lisaa_kommentti("Oikein: lisävaltuu tallennettiin \n                        vaikka yleinen valtuus testihenkilölle olemassa!");
         }
         $testi->tyhjenna_kaikki_ilmoitukset();
         //======================================================================
         //=======================================================================
     }
 }