/** * * Toteuttaa uuden ratkaisun tallentamisen. Välittää Palaute-luokan oliolle * tiedot sisällöstä yms. * * @param Palaute $palauteolio */ function toteuta_tallenna_uusi(&$palauteolio) { $parametriolio = $this->get_parametriolio(); $omaid = $parametriolio->get_omaid(); $vastaus_ratk = $parametriolio->vastaus_ratk; $ratkaisu_ratk = $parametriolio->ratkaisu_ratk; $nakyvyys = $parametriolio->nakyvyys_ratk; $id_teht = $parametriolio->id_teht; $elem_id = $parametriolio->elementti_id; $elemryhma_id = $parametriolio->elemryhma_id; /** * @var Tietokantaolio */ $tietokantaolio = $parametriolio->get_tietokantaolio(); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_TALLENNUS); $tallennettava = new Ratkaisu(Ratkaisu::$MUUTTUJAA_EI_MAARITELTY, $tietokantaolio); $tallennettava->set_arvo(time(), Ratkaisu::$sarakenimi_luomishetki_sek); $tallennettava->set_arvo(-1, Ratkaisu::$sarakenimi_ed_muutos_sek); $tallennettava->setRatkaisu($ratkaisu_ratk); $tallennettava->setVastaus($vastaus_ratk); $tallennettava->setNakyvyys($nakyvyys); $tallennettava->setHenkilo_id($omaid); $tallennettava->setTeht_id($id_teht); $palaute = $tallennettava->tallenna_uusi(); if ($palaute === Ratkaisu::$OPERAATIO_ONNISTUI) { // Aktiivisuusmerkintä: $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $tietokantaolio, time(), Aktiivisuus::$UUDEN_RATKAISUN_TALLENNUS); if (!$aktiivisuuspalaute) { $this->lisaa_virheilmoitus(Tekstit::$virheilm_aktiivisuuden_tallennus_eiok); } else { $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK); } // Tarkistetaan, mistä ollaan tulossa ja minne menossa: $koostekontrolleri = new Koostekontrolleri($tietokantaolio, $parametriolio); if ($elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) { $koostekontrolleri->toteuta_nayta_elementtiryhma($palauteolio); $palauteolio->set_muokatun_id($elem_id); } else { if ($elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) { $koostekontrolleri->toteuta_nayta($palauteolio); $palauteolio->set_muokatun_id($elem_id); } else { $this->toteuta_nayta($palauteolio); $palauteolio->set_muokatun_id($tallennettava->getId()); } } $palauteolio->set_ilmoitus(Tekstit::$ratkaisu_ilm_tallennus_uusi_ok . "<br/>" . $this->tulosta_virheilmoitukset()); } else { $palauteolio->set_ilmoitus(Tekstit::$ratkaisu_virheilm_tallennus_uusi_eiok . "<br/>" . $this->tulosta_virheilmoitukset() . "<br/>" . $tallennettava->tulosta_virheilmoitukset()); $lomake = $this->ratkaisunakymat->nayta_ratkaisulomake($parametriolio); $palauteolio->set_sisalto($lomake); } $palauteolio->set_valikkonaytto(false); }
/** * Palauttaa ratkaisun html-koodin ilman mitään muokkausmahdollisuuksia. * Tätä käytetään esimerkiksi esikatselussa. * @param int $id_kokon * @param Ratkaisu $ratkaisu */ function tulosta_ratkaisu_ilman_painikkeita($id_kokon, $ratkaisu) { $palaute = ""; /**************************************/ /* Muotoillaan ratkaisun merkit ja kaavat: */ $ratk = muotoile_merkit($ratkaisu->getRatkaisu()); $ratk = Kaavaeditori::muotoile_pikkukaavat($ratk); $ratk = Kaavaeditori::muotoile_kaavat($ratk); /* Sama otsikolle: */ $otsikko = muotoile_merkit($ratkaisu->getVastaus()); $otsikko = Kaavaeditori::muotoile_pikkukaavat($otsikko); $otsikko = Kaavaeditori::muotoile_kaavat($otsikko); $omaid = -1; // Varmistetaan, ettei sovi minkään kuvan omistajaksi. $kuvat = $ratkaisu->hae_kuvat($id_kokon, $omaid); //Kuvat ja tehtävät taulukkoon: $sisalto = $kuvat . $ratk; $otsikko = "<div class = 'ratkaisu'" . "id='ratkaisu" . $ratkaisu->getId() . "'>" . "<h2>" . $otsikko . "</h2>"; $palaute .= $otsikko; $palaute .= " " . $sisalto . "<br />"; $palaute .= "</div>"; return $palaute; }
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!"); } } }