Exemplo n.º 1
0
 /**
  * Luo ratkaisun painikkeet tarkastaen käyttäjän oikeudet.
  * 
  * Huom: Käyttäjän id saadaan osoitteesta $this->get_parametriolio()->get_omaid().
  * Tämä on tärkeä tietää, koska sen perusteella annetaan toimenpidevaltuudet!
  * 
  * Palauttaa painikkeiden html-koodin taulukossa, joka voi olla tyhjä.
  * 
  * Painikkeet liittyvät ratkaisun muokkaukseen, poistoon, oikeuksien
  * jakamiseen ja uuden kuvan lisäämiseen, joihin kaikkiin tarvitaan
  * peruskäyttäjää enemmän valtuuksia. Oikeuksien tarkistus vaatii
  * sen verran logiikkaa, ettei sitä oikein tunnu sopivalta tehdä
  * näkymissä.
  *
  * @param int $id_ratk Sen ratkaisun tunniste, jonka painikkeita haetaan.
  */
 function luo_ratkaisupainikkeet($id_ratk)
 {
     $tietokantaolio = $this->get_tietokantaolio();
     $omaid = $this->get_parametriolio()->get_omaid();
     $id_kokon = $this->get_parametriolio()->id_kokon;
     $painikkeet = array();
     $poistonappi = "piip";
     $muokkausnappi = "";
     $uusi_kuva_painike = "";
     $jaa_oikeuksia_nappi = "";
     $nayta_koodi_nappi = "";
     // Haetaan ensin ratkaisu:
     $ratkaisu = new Ratkaisu($id_ratk, $tietokantaolio);
     if ($ratkaisu->olio_loytyi_tietokannasta) {
         //==================================================================
         $kohdeoikeudet = Henkilo::hae_kayttajan_kohdeoikeudet($ratkaisu->getHenkiloId(), $omaid, Oliotyyppi::$RATKAISU, $ratkaisu->getId(), $tietokantaolio);
         $this->lisaa_lihava_kommentti("kohdeoikeudet=" . $kohdeoikeudet . ", henkilo_id=" . $ratkaisu->getHenkiloId() . " ja omaid=" . $omaid);
         // Muokkaus ja poisto tietysti sopivan korkeille henkilöille.
         // HUOMAA: jatkossa myös sopivasti muokkaajille!
         if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_JA_POISTAA) {
             // POistopainike:
             $class = "rinnakkain";
             $id = "";
             $action = "{$_SERVER['PHP_SELF']}" . "?id_ratk=" . $ratkaisu->getId() . "&id_teht=" . $ratkaisu->getTeht_id() . "&id_kokon=" . $id_kokon;
             $name = Toimintonimet::$tehtavatoiminto;
             $value = Painikkeet::$ratkaisu_poista_value;
             $poistonappi = Html::luo_painikelomake($class, $id, $action, $name, $value);
             array_push($painikkeet, $poistonappi);
             // Oikeuksia saa jakaa vain omistaja ja kunkku.
             if ($kohdeoikeudet === Lisavaltuudet::$KAIKKI_OIKEUDET) {
                 // Oikeuksien eli lisävaltuuksien jakopainike:======================
                 $action_os = "oletus";
                 $action_kyselymuuttujat = array("id_kokon", "oppiaine_kokon", "kieli_id", "id_teht", Kayttajakontrolleri::$lv_name_kohdeolio_id, Kayttajakontrolleri::$lv_name_kohdeoliotyyppi, Kayttajakontrolleri::$lv_name_omistaja_id);
                 $action_kyselyarvot = array($id_kokon, $this->get_parametriolio()->oppiaine_kokon, $this->get_parametriolio()->kieli_id, $ratkaisu->getTeht_id(), $ratkaisu->getId(), Oliotyyppi::$RATKAISU, $ratkaisu->getHenkiloId());
                 $jaa_oikeuksia_nappi = Kayttajanakymat::luo_jaa_lisaoikeuksia_painike($action_os, $action_kyselymuuttujat, $action_kyselyarvot);
                 array_push($painikkeet, $jaa_oikeuksia_nappi);
                 //==================================================================
             }
         }
         if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) {
             // TArkistetaan urliin menevät tiedot:
             //$vastaus_turvallinen = urlencode($this->vastaus);
             //$ratkaisu_turvallinen = urlencode($this->ratkaisu);
             // Muokkauspainike:
             $class = "rinnakkain";
             $id = "";
             $action = "{$_SERVER['PHP_SELF']}" . "?id_ratk=" . $ratkaisu->getId() . "&id_teht=" . $ratkaisu->getTeht_id() . "&id_kokon=" . $id_kokon;
             //"&vastaus_ratk=".$vastaus_turvallinen.
             // "&ratkaisu_ratk=".$ratkaisu_turvallinen;
             $name = Toimintonimet::$tehtavatoiminto;
             $value = Painikkeet::$ratkaisu_muokkaa_value;
             $muokkausnappi = Html::luo_painikelomake($class, $id, $action, $name, $value);
             array_push($painikkeet, $muokkausnappi);
             /* Uuden kuvan lisäyspainike ratkaisuun*/
             $onsubmit_funktionimi = "nayta_kuvalomake";
             $onsubmit_parametrit = array($ratkaisu->getId());
             /* Ratkaisun id*/
             $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $id_kokon . "&id_teht=" . $ratkaisu->getTeht_id() . "&id_ratk=" . $ratkaisu->getId() . "&kohde_kuva=" . Kuvat::$kohde_ratkaisu);
             $input_maaritteet = array('name' => Toimintonimet::$tehtavatoiminto, 'value' => Painikkeet::$ratkaisu_lisaa_kuva_value, 'title' => Painikkeet::$ratkaisu_lisaa_kuva_title);
             try {
                 $uusi_kuva_painike = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
                 array_push($painikkeet, $uusi_kuva_painike);
             } catch (Exception $poikkeus) {
                 $this->lisaa_virheilmoitus(Tekstit::$ratkaisu_virheilm_kuvanapin_luonti_eiok . $poikkeus->getMessage());
             }
         }
         if ($kohdeoikeudet >= Lisavaltuudet::$SAA_NAHDA_EI_MUOKATA_EI_POISTAA || $ratkaisu->getNakyvyys() + 0 === Nakyvyys::$JULKINEN) {
             // Koodia voivat kaikki vilkaista, jos vain näkyvissä:
             $nayta_koodi_nappi = Html::luo_button(Painikkeet::$NAYTA_KOODI_value, array(Attr::title(Painikkeet::$NAYTA_KOODI_title), Attr::onclick("hae_koodi", array($ratkaisu->get_id(), Oliotyyppi::$RATKAISU))));
             array_push($painikkeet, $nayta_koodi_nappi);
         }
     } else {
         $this->lisaa_virheilmoitus(Tekstit::$ratkaisu_ilm_ei_loytynyt);
     }
     return $painikkeet;
 }
Exemplo n.º 2
0
 public function testaa_lisavaltuuden_vaikutus_ratkaisuun()
 {
     $this->lisaa_lihava_kommentti("Lisävaltuuden vaikutus ratkaisutoimintoihin");
     $ratkaisukontrolleri = new Ratkaisukontrolleri($this->tietokantaolio, $this->parametriolio);
     $ratkaisunakymat = new Ratkaisunakymat();
     if (!$this->testiratkaisu instanceof Ratkaisu) {
         $this->lisaa_virheilmoitus("Virhe metodissa 'testaa_lisavaltuuden" . "_vaikutus_ratkaisuun': ratkaisuolio ei ole oikea olio!");
     } else {
         // Näytetään ratkaisu eri valtuuksilla:
         $this->lisaa_kommentti("Testiratkaisun tulostus ilman " . "lisävaltuuksia tuntemattoman kannalta:");
         $id_kokon = -1;
         $id_teht = -1;
         $omaid = -1;
         // Tämä ei ole luoja, eikä tälle lisävaltuuksia!
         $id_ratk = $this->testiratkaisu->getId();
         $ratk = $this->testiratkaisu;
         $painikkeet = $ratkaisukontrolleri->luo_ratkaisupainikkeet($id_ratk);
         $this->lisaa_kommentti($ratkaisukontrolleri->tulosta_kaikki_ilmoitukset());
         $ratkaisukontrolleri->tyhjenna_kaikki_ilmoitukset();
         $this->lisaa_kommentti($ratkaisunakymat->tulosta_ratkaisu($id_kokon, $ratk, $omaid, $painikkeet));
         //======================================================================
         if ($this->testilisavaltuus_yleinen instanceof Lisavaltuudet) {
             $this->lisaa_kommentti("Lasketaan testilisavaltuus_yleinen-arvon" . " oikeutta muokkaus_ei_poisto-luokkaan.");
             $this->testilisavaltuus_yleinen->set_arvo(Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA, Lisavaltuudet::$sarakenimi_valtuus);
             $this->testilisavaltuus_yleinen->tallenna_muutokset();
             $this->lisaa_kommentti("Testiratkaisun tulostus testihenkilön kannalta " . "(ei olion luoja), " . "koska hänellä on lisävaltuuksia (" . $this->testilisavaltuus_yleinen->hae_lisavaltuuden_kuvaus($this->testilisavaltuus_yleinen->get_valtuusarvo()) . "):");
             // Tarkistetaan vielä tiedot ja hakumetodi:
             $lisavaltuusarvo = Lisavaltuudet::hae_lisavaltuus_static($this->testiratkaisu->getId(), Oliotyyppi::$RATKAISU, $this->testilisavaltuus->get_henkilo_id(), $this->testilisavaltuus->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);
             }
             $id_kokon = -1;
             $id_teht = -1;
             $omaid = $this->testihenkilo->get_id();
             // Ei luoja, mutta on lisävaltuuksia!
             // Pitää myös asettaa käyttäjä parametreihin, joista
             // ratkaisukontrolleri tarkistaa tiedon:
             $this->parametriolio->set_omaid($this->testihenkilo->get_id());
             $id_ratk = $this->testiratkaisu->getId();
             $ratk = $this->testiratkaisu;
             $painikkeet = $ratkaisukontrolleri->luo_ratkaisupainikkeet($id_ratk);
             $this->lisaa_kommentti($ratkaisukontrolleri->tulosta_kaikki_ilmoitukset());
             $ratkaisukontrolleri->tyhjenna_kaikki_ilmoitukset();
             $this->lisaa_kommentti($ratkaisunakymat->tulosta_ratkaisu($id_kokon, $ratk, $omaid, $painikkeet));
             //======================================================================
             $this->lisaa_kommentti("Testiratkaisun tulostus testihenkilön kannalta, " . "kun erityisen lisävaltuuden arvoa nostetaan arvoon\n                                        'saa_muokata_ja_poistaa' (muista yleinen lv = " . $this->testilisavaltuus_yleinen->hae_lisavaltuuden_kuvaus($this->testilisavaltuus_yleinen->get_valtuusarvo()) . "!):");
             $this->testilisavaltuus->set_arvo(Lisavaltuudet::$SAA_MUOKATA_JA_POISTAA, Lisavaltuudet::$sarakenimi_valtuus);
             if ($this->testilisavaltuus->tallenna_muutokset() == Malliluokkapohja::$OPERAATIO_ONNISTUI) {
                 if ($this->testilisavaltuus->get_valtuusarvo() == Lisavaltuudet::$SAA_MUOKATA_JA_POISTAA) {
                     // Tarkistetaan vielä tiedot ja hakumetodi:
                     $lisavaltuusarvo = Lisavaltuudet::hae_lisavaltuus_static($this->testiratkaisu->getId(), Oliotyyppi::$RATKAISU, $this->testilisavaltuus->get_henkilo_id(), $this->testiratkaisu->getHenkiloId(), $this->tietokantaolio);
                     // Alla ei saa olla "==="-juttua! (lukujen tyyppi muuttuu helposti)
                     if ($lisavaltuusarvo == $this->testilisavaltuus->get_valtuusarvo()) {
                         $this->lisaa_kommentti("Uuden lisävaltuuden haku tietokannasta ok!" . " Arvo on " . $this->testilisavaltuus->hae_lisavaltuuden_kuvaus($lisavaltuusarvo));
                     } else {
                         $this->lisaa_virheilmoitus("Virhe lisävaltuuden haussa!" . " Tarkista 'Lisavaltuudet::hae_lisavaltuus'-metodi!" . " Y.m. metodin palautusarvo=" . $lisavaltuusarvo);
                     }
                     $this->lisaa_kommentti("Lisävaltuusmuutos onnistui! Testiratkaisun tulostus:");
                     $id_kokon = -1;
                     $id_teht = -1;
                     $omaid = $this->testilisavaltuus->get_henkilo_id();
                     // Ei luoja, mutta on lisävaltuuksia!
                     $id_ratk = $this->testiratkaisu->getId();
                     $ratk = $this->testiratkaisu;
                     $painikkeet = $ratkaisukontrolleri->luo_ratkaisupainikkeet($id_ratk);
                     $this->lisaa_kommentti($ratkaisukontrolleri->tulosta_kaikki_ilmoitukset());
                     $ratkaisukontrolleri->tyhjenna_kaikki_ilmoitukset();
                     $this->lisaa_kommentti($ratkaisunakymat->tulosta_ratkaisu($id_kokon, $ratk, $omaid, $painikkeet));
                 } else {
                     $this->lisaa_virheilmoitus("Virhe: lisävaltuuden muutosta\n                            ei havaittu tietokannassa!<br/>" . $this->testilisavaltuus->tulosta_virheilmoitukset());
                 }
             } else {
                 $this->lisaa_virheilmoitus("Virhe lisävaltuuden muutoksen \n                                        tallennuksessa! <br/>" . $this->testilisavaltuus->tulosta_virheilmoitukset());
             }
             //======================================================================
             $this->lisaa_kommentti("Testiratkaisun tulostus testihenkilön kannalta, " . "kun yleisen lisävaltuuden arvoa nostetaan arvoon\n                                        'Kaikki_oikeudet', \n                                        jolloin erityisellä lisävaltuudella on voimassa\n                                        " . $this->testilisavaltuus->hae_lisavaltuuden_kuvaus($this->testilisavaltuus->get_valtuusarvo()));
             $this->testilisavaltuus_yleinen->set_arvo(Lisavaltuudet::$KAIKKI_OIKEUDET, Lisavaltuudet::$sarakenimi_valtuus);
             if ($this->testilisavaltuus_yleinen->tallenna_muutokset() == Malliluokkapohja::$OPERAATIO_ONNISTUI) {
                 $this->lisaa_kommentti("Lisävaltuusmuutos onnistui! Testiratkaisun tulostus:");
                 $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->get_henkilo_id(), $this->testilisavaltuus->get_omistaja_id(), $this->tietokantaolio);
                 // Alla ei saa olla "==="-juttua! (lukujen tyyppi muuttuu helposti)
                 if ($lisavaltuusarvo == Lisavaltuudet::$KAIKKI_OIKEUDET) {
                     $this->lisaa_kommentti("Uuden lisävaltuuden haku tietokannasta ok!" . " Arvo on " . $this->testilisavaltuus->hae_lisavaltuuden_kuvaus($lisavaltuusarvo));
                 } else {
                     $this->lisaa_virheilmoitus("Virhe lisävaltuuden haussa!" . " Tarkista 'Lisavaltuudet::hae_lisavaltuus'-metodi!" . " Y.m. metodin palautusarvo=" . $lisavaltuusarvo);
                 }
                 $id_kokon = -1;
                 $id_teht = -1;
                 $omaid = $this->testihenkilo->get_id();
                 // Ei luoja, mutta on lisävaltuuksia!
                 $id_ratk = $this->testiratkaisu->getId();
                 $ratk = $this->testiratkaisu;
                 $painikkeet = $ratkaisukontrolleri->luo_ratkaisupainikkeet($id_ratk);
                 $this->lisaa_kommentti($ratkaisukontrolleri->tulosta_kaikki_ilmoitukset());
                 $ratkaisukontrolleri->tyhjenna_kaikki_ilmoitukset();
                 $this->lisaa_kommentti($ratkaisunakymat->tulosta_ratkaisu($id_kokon, $ratk, $omaid, $painikkeet));
             } else {
                 $this->lisaa_virheilmoitus("Virhe lisävaltuuden muutoksen \n                                        tallennuksessa! <br/>" . $this->testilisavaltuus->tulosta_virheilmoitukset());
             }
         } else {
             $this->lisaa_virheilmoitus("this->testilisavaltuus_yleinen ei oikea olio!");
         }
     }
 }