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; }
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(); //====================================================================== //======================================================================= } }