/** * Toteuttaa kuvan tietojen tallennuksen tietokantaan ja kuvan tallennuksen * tallennuskansioon. Kuvan tiedot tarkistetaan. * * Tallentaa kuvan ja palauttaa taulukon, jonka ensimmäinen alkio on * palautte tallennuksen onnistumisesta ('onnistui' tai virheilmoitus) ja toinen * tallennetun kuvan id:n, jotta uusi kuva osataan näyttää heti. Kolmas alkio * taulukossa on tallennetun kuvan tiedosto-osoite. * * @param Parametrit $parametriolio * @return Palaute $palauteolio */ function toteuta_tallenna_kuva($parametriolio) { $id_kokon = $parametriolio->id_kokon; $id_teht = $parametriolio->id_teht; $id_ratk = $parametriolio->id_ratk; $omaid = $parametriolio->get_omaid(); $kuvaotsikko_kuva = $parametriolio->kuvaotsikko_kuva; $kuvaselitys_kuva = $parametriolio->kuvaselitys_kuva; $vuosi_kuva = $parametriolio->vuosi_kuva; $kk_kuva = $parametriolio->kk_kuva; $paiva_kuva = $parametriolio->paiva_kuva; $nayttokokoindeksi_kuva = $parametriolio->nayttokokoindeksi_kuva; $tietokantaolio = $parametriolio->get_tietokantaolio(); $kokonaisuuskontrolleri = new Kokonaisuuskontrolleri($tietokantaolio, $parametriolio); $tehtavakontrolleri = new Tehtavakontrolleri($tietokantaolio, $parametriolio); $ratkaisukontrolleri = new Ratkaisukontrolleri($tietokantaolio, $parametriolio); //$latauskansio_os Antaa sen kansion suhteellisen tiedostopolun, // jonne ladattu tiedosto on tarkoitus siirtää pysyvää sijoitusta varten. $latauskansio_os = $parametriolio->latauskansio_os; //"selitys"/"tiivis"/"manuaali"/"tehtava"/"ratkaisu" $kohde_kuva = $parametriolio->kohde_kuva; $palauteolio = new Palaute(); $palauteolio2 = new Palaute(); /* tallenna_kuva-metodin palaute */ $palauteolio_kokon = new Palaute(); $pal_olio = new Palaute(); $palauteolio_tehtavat = new Palaute(); $sisalto = ""; $id_kuva = ""; /* Tallennetun kuvan tunniste. */ $uusi = true; $linkit = ""; // Liittyy tehtäviin esim. // Huom! alla olevaan ei tulekaan kuvan id, vaan isäntäolion id! $muokatun_id = Kokonaisuusolio::$kokon_ei_maaritelty; /* Tarkistetaan, onko latauksia tullut palvelimelle: */ if (!array_key_exists(Kuvat::$kuvalatauksen_name, $_FILES)) { $ilmoitus_kuva = 'Ei latauksia havaittu!'; $sisalto = nayta_kuvalomake_uusi($kohde_kuva, $omaid, $uusi, $ilmoitus_kuva, $tietokantaolio, $id_kuva, $id_kokon, $id_teht, $id_ratk, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $nayttokokoindeksi_kuva); $palauteolio->set_ilmoitus($ilmoitus_kuva); $palauteolio->set_sisalto($sisalto); } else { $ladattu_kuva = $_FILES[Kuvat::$kuvalatauksen_name]; // Ilmeisesti koko on valmiiksi tavuina (täsmää kuvan omin. kans): //$info = getImageSize($ladattu_kuva['tmp_name']); $ilmoitus = "Tiedoston nimi: " . $ladattu_kuva['name'] . " (" . round($ladattu_kuva['size'] / 1024) . " kt)" . "<br/> Tyyppi: " . $ladattu_kuva['type'] . "<br />"; //"<br/> Tmp-nimi: ".$ladattu_kuva['tmp_name']. //"<br/> Virheviesti: ".$ladattu_kuva['error']. //"<br/> Kuvan tyyppi: ".$info[2]; $tarkistus = tarkista_kuvatiedot($ladattu_kuva, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $uusi); // Jos korjaamista, näytetään lomake uudelleen: if ($tarkistus != Palautteita::$lomaketiedot_ok) { $ilmoitus_kuva = $tarkistus; $sisalto = nayta_kuvalomake_uusi($kohde_kuva, $omaid, $uusi, $ilmoitus_kuva, $tietokantaolio, $id_kuva, $id_kokon, $id_teht, $id_ratk, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $nayttokokoindeksi_kuva); } else { // Tallenna_kuva palauttaa olion, joka sisältää kolme // tietoa; palautteen (ilmoitus), tallennetun kuvan id:n (2), joka // voi olla tyhjä virheen sattuessa ja kuvaosoitteen (3). $palauteolio2 = tallenna_kuva($kohde_kuva, $id_kokon, $id_teht, $id_ratk, $omaid, $ladattu_kuva, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $nayttokokoindeksi_kuva, $tietokantaolio, $latauskansio_os); if ($palauteolio2->get_ilmoitus() == Tietokantaolio::$HAKU_ONNISTUI) { $ilmoitus = Tekstit::$ilm_kuva_uusi_tallennus_ok; $id_kuva = $palauteolio2->get_muokatun_id(); $linkit = ""; // Lisälinkkejä, esim. tehtävissä. /* Palautetaan se näkymä, jonka parissa on tehty töitä: */ if ($kohde_kuva === Kuvat::$kohde_kokonaisuus_tiivistelma || $kohde_kuva === Kuvat::$kohde_kokonaisuus_selitys) { if ($kohde_kuva == Kuvat::$kohde_kokonaisuus_selitys) { $selitys_auki_id = $id_kokon; } else { $selitys_auki_id = ""; } $parametriolio->selitys_auki_id = $selitys_auki_id; $kokonaisuuskontrolleri->toteuta_nayta($palauteolio_kokon); $sisalto = $palauteolio_kokon->get_sisalto(); $linkit = $palauteolio_kokon->get_linkkihtml(); $muokatun_id = $id_kokon; } else { if ($kohde_kuva === Kuvat::$kohde_kokonaisuus_tiivis_manuaali || $kohde_kuva === Kuvat::$kohde_kokonaisuus_selitys_manuaali) { $kohteena_tiivis = $kohde_kuva === Kuvat::$kohde_kokonaisuus_tiivis_manuaali; if ($kohteena_tiivis) { $sarakenimi = "tiivis"; } else { $sarakenimi = "selitys"; } // Haetaan ajantasalla olevat tiedot tietokannasta. /* Muutettavat tiedot alla, jotka siis pitää asettaa: * $muutosarvot = array(time(), $oppiaine_kokon, $otsikko_kokon, $tiivis_kokon, $selitys_kokon, $taso_kokon, $jarjestysnro, $laajennetun_id_kokon, $kieli_id, $ylakokonaisuuden_id); */ $taulunimi = "kokonaisuudet"; $sarakenimi = "id"; $hakuarvo = $id_kokon; $kokonaisuus = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo); if ($kokonaisuus != Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) { $parametriolio->oppiaine_kokon = $kokonaisuus->oppiaine; $parametriolio->otsikko_kokon = $kokonaisuus->otsikko; $parametriolio->tiivis_kokon = $kokonaisuus->tiivis; $parametriolio->selitys_kokon = $kokonaisuus->selitys; $parametriolio->taso_kokon = $kokonaisuus->taso; $parametriolio->jarjestysnro_kokon = $kokonaisuus->jarjestysnro; $parametriolio->laajennetun_id_kokon = $kokonaisuus->laajennetun_id; $parametriolio->ylakokonaisuuden_id_kokon = $kokonaisuus->ylakokonaisuuden_id; } // Haetaan kokonaisuuden tiivistelmä/selitys: if ($kohteena_tiivis) { $vanha = $parametriolio->tiivis_kokon; } else { $vanha = $parametriolio->selitys_kokon; } // Haetaan tallennettu kuva tietokannasta: if ($tietokantaolio instanceof Tietokantaolio) { $taulunimi = "kuvat"; $sarakenimi = "id"; $hakuarvo = $id_kuva; $tk_olio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo); if ($tk_olio != Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) { $kuva = new Kuva($tk_olio, $tietokantaolio); } $kuvahtml = $kuva->nayta_pelkka_kuva($latauskansio_os); // Uusi on vanha + kuvahtml: $uusi = $vanha . "\n" . $kuvahtml; if ($kohteena_tiivis) { $parametriolio->tiivis_kokon = $uusi; } else { $parametriolio->selitys_kokon = $uusi; } $kokonaisuuskontrolleri->toteuta_tallenna_muokkaus($palauteolio_kokon); } $sisalto = $palauteolio_kokon->get_sisalto(); $muokatun_id = $id_kokon; } else { if ($kohde_kuva === Kuvat::$kohde_tehtava) { $tehtavakontrolleri->toteuta_nayta_tehtavat($palauteolio_tehtavat); $linkit = $palauteolio_tehtavat->get_linkkihtml(); $sisalto = $palauteolio_tehtavat->get_sisalto(); $muokatun_id = $id_teht; } else { if ($kohde_kuva === Kuvat::$kohde_ratkaisu) { $ratkaisukontrolleri->toteuta_nayta($pal_olio); $sisalto = $pal_olio->get_sisalto(); $muokatun_id = $id_ratk; } else { $sisalto = "kohde_kuva?? (toteuta_tallenna_kuva)"; } } } } } else { $ilmoitus .= $palauteolio2->get_ilmoitus() . " ja " . $palauteolio_kokon->get_ilmoitus(); $ilmoitus_kuva = $palauteolio2->get_ilmoitus(); $sisalto = nayta_kuvalomake_uusi($kohde_kuva, $omaid, $uusi, $ilmoitus_kuva, $tietokantaolio, $id_kuva, $id_kokon, $id_teht, $id_ratk, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $nayttokokoindeksi_kuva); } } } $palauteolio->set_ilmoitus($ilmoitus); $palauteolio->set_sisalto($sisalto); $palauteolio->set_muokatun_id($muokatun_id); /* Kuvan suhteellinen osoite (kutsuvasta ohjelmanosasta). */ $palauteolio->set_oma($palauteolio2->get_oma()); /* Linkit (esim. tehtävät) */ $palauteolio->set_linkkihtml($linkit); return $palauteolio; }
/** * Toteuttaa uuden henkilon tallentamisen tietokantaan: * @param Parametrit $parametriolio * @return Palaute $palauteolio */ function toteuta_tallenna_henkilo($parametriolio) { $palauteolio = new Palaute(); $palauteolio2 = new Palaute(); $kelpoisuus = tarkista_henkilotiedot($parametriolio); $tietokantaolio = $parametriolio->get_tietokantaolio(); $kokonkontrolleri = new Kokonaisuuskontrolleri($tietokantaolio, $parametriolio); $kokonkontrolleri->toteuta_nayta($palauteolio); // HUOM! ALLA EI ARVO TRUE TOIMINUT! ILMEISESTI STRINGI ARVIOIDAAN // TODEKSI, ELLEI SE OLE NIMENOMAAN FALSE TAI 0. if ($kelpoisuus == "kunnossa") { $parametriolio->set_uussalasana(md5($parametriolio->uussalasana)); $tallennusOk = tallenna_henkilo($parametriolio); if ($tallennusOk == true) { $viesti = Tekstit::$ilm_henkilon_tiedot_tallennettu; // Puhdistus ja etsintä: $tiedot = tarkista_tunnukset($parametriolio->uusktunnus, $parametriolio->uussalasana); if ($tiedot == false) { $viesti = Tekstit::$virheilm_tunnusten_tarkistus_eiok; $sisalto = nayta_kirjautuminen($parametriolio->uusktunnus); } else { $viesti = Tekstit::$ilm_henkilon_tunnukset_toimivat; $kokonkontrolleri->toteuta_nayta($palauteolio2); $palauteolio2->set_ilmoitus($viesti); } } else { // Jos tallennus epäonnistui: $viesti = Tekstit::$virheilm_henkilon_tallennus_eiok; $sisalto = nayta_tietolomake($parametriolio); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_TALLENNUS); } } else { //Jos tiedoissa jokin virhe: $viesti = $kelpoisuus; //Virheilmoitus $sisalto = nayta_tietolomake($parametriolio); } $ilmoitus = $viesti; if ($palauteolio2 === "") { // Ellei kaikki mennyt putkeen: $palauteolio->set_sisalto($sisalto); $palauteolio->set_ilmoitus($ilmoitus); } else { // Jos kaikki on hyvin: $palauteolio = $palauteolio2; } return $palauteolio; }
function testaa_toteuta_metodeita() { /*********** Testataan "toteuta"-kokonaisuustoiminnot tarkemmin ************/ $this->lisaa_lihava_kommentti("Testataan kaikki 'toteuta'-toiminnot, jotka liittyvät\n kokonaisuuksiin:"); $tallennetun_id = Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY; if ($this->testihenkilo1 instanceof Henkilo) { $this->parametriolio->set_omaid($this->testihenkilo1->get_id()); } else { $this->parametriolio->set_omaid(1); // Arvataan vain.. $this->lisaa_kommentti("Testihenkiloa nro 1 ei loytynyt, omaid on 1," . " mikä voi onnistua tai sitten ei.."); } $kokon2_id = Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY; $kokon3_id = Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY; $this->lisaa_lihava_kommentti("toteuta_uuden_kokon_tallennus:"); // Järjestysluku on pantu -1:ksi, jotta korjauskin testataan. Asetetaan // nämä kokonaisuudet yllä luodun kokonaisuuden alle, jotta testausidea // toimii paremmin. if ($this->kokon1 instanceof Kokonaisuusolio) { //========================== $this->parametriolio->set_oppiaine_kokon(Oppiaineet::$FY); $this->parametriolio->set_otsikko_kokon("Kokon 1.1"); $this->parametriolio->set_tiivis_kokon("Tämä on ihan uusi testitiivistelmä"); $this->parametriolio->set_selitys_kokon(KokonTehtRatkTestaus::$testikokon_selitys); $this->parametriolio->set_taso_kokon(Koulutasot::$PERUSKOULU); $this->parametriolio->set_jarjestysnro_kokon(-1); $this->parametriolio->set_laajennetun_id_kokon(-1); $this->parametriolio->set_kieli_id(Kielet::$SUOMI); $this->parametriolio->set_ylakokonaisuuden_id_kokon($this->kokon1->get_id()); $this->parametriolio->set_valtuudet(Valtuudet::$HALLINTA); //========================= $palauteolio = new Palaute(); $this->kokonaisuuskontrolleri->toteuta_tallenna_uusi($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("Uuden kokon tallennus 1: VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus()); } else { $this->lisaa_kommentti("Virheita ei havaittu!"); } $kokon2_id = $palauteolio->get_muokatun_id(); $tallennetun_id = $kokon2_id; } else { $this->lisaa_virheilmoitus("Virhe: kokon1 ei olio!"); } /*============================= 2 ======================================*/ if ($this->kokon1 instanceof Kokonaisuusolio) { $this->lisaa_kommentti("<b>Luodaan toinen uusi kokonaisuus\n (toteuta_uuden_kokon_tallennus):</b><br />"); $this->parametriolio->set_otsikko_kokon("Ja taas uusi testikokonaisuus"); $this->parametriolio->set_tiivis_kokon("Tämä on jotakin hassua!"); $this->parametriolio->set_selitys_kokon(KokonTehtRatkTestaus::$testikokon_selitys); $this->kokonaisuuskontrolleri->toteuta_tallenna_uusi($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("Kohta 2: VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus()); } else { $this->lisaa_kommentti("Virheita ei havaittu! Testikokonaisuudet:"); } $kokon3_id = $palauteolio->get_muokatun_id(); $this->lisaa_kommentti($this->nayta_testikokonaisuudet($tallennetun_id)); } else { $this->lisaa_virheilmoitus("Virhe: kokon2 ei olio!"); } /*=================================3===================================*/ $this->lisaa_kommentti("<b>toteuta_korjaa_jarjestysnro:</b>"); $this->kokonaisuuskontrolleri->toteuta_korjaa_jarjestysnro($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("Kohta 3: VIRHEKOODI (toteuta_korjaa_jarjestysnro)=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus()); } else { $this->lisaa_kommentti("Virheita ei havaittu!"); } /*=================================3===================================*/ $this->lisaa_kommentti("<b>toteuta_nayta_selitys:</b><br />"); $this->parametriolio->set_id_kokon($kokon2_id); $this->kokonaisuuskontrolleri->toteuta_nayta_selitys($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("VIRHEKOODI (toteuta_nayta_selitys)=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus()); } else { $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>"); } /*=================================3===================================*/ $this->lisaa_kommentti("<b>toteuta_sulje_selity:</b><br />"); $this->kokonaisuuskontrolleri->toteuta_sulje_selitys($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("VIRHEKOODI (toteuta_sulje_selitys)=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus()); } else { $this->lisaa_kommentti("Virheita ei havaittu!"); } /*=================================3===================================*/ $this->lisaa_kommentti("<b>toteuta_nayta_kokonaisuuslomake:</b><br />"); $this->parametriolio->set_uusi(true); $this->kokonaisuuskontrolleri->toteuta_nayta_kokonaisuuslomake($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>"); } else { $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>"); } /*=================================3===================================*/ $this->lisaa_kommentti("<b>toteuta_peru_uuden_kokonaisuuden_tallennus:</b><br />"); $this->kokonaisuuskontrolleri->toteuta_peru_uuden_kokonaisuuden_tallennus($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>"); } else { $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>"); } //$this->lisaa_kommentti($palauteolio->get_sisalto()); /*=================================3===================================*/ $this->lisaa_kommentti("<b>toteuta_nayta_kokonaisuuden_poistovarmistus:</b><br />"); $this->kokonaisuuskontrolleri->toteuta_nayta_poistovarmistus($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>"); } else { $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>"); } //$this->lisaa_kommentti($palauteolio->get_sisalto()); /*=================================3===================================*/ $this->lisaa_kommentti("<b>toteuta_peru_kokonaisuuden_poisto:</b><br />"); $this->kokonaisuuskontrolleri->toteuta_peru_kokonaisuuden_poisto($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>"); } else { $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>"); } /*=================================3===================================*/ // Luodaan poistettava kokonaisuus: $this->lisaa_kommentti("<b>Luodaan uusi kokonaisuus, joka sitten poistetaan:\n :</b><br />"); $this->parametriolio->set_otsikko_kokon("Poistettava testikokonaisuus"); $this->parametriolio->set_tiivis_kokon("Puhdasta roskaa!"); $this->kokonaisuuskontrolleri->toteuta_tallenna_uusi($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>"); } else { $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>"); } $kokon4_id = $palauteolio->get_muokatun_id(); /*=================================3===================================*/ $this->lisaa_kommentti("<b>\$this->kokonaisuuskontrolleri->toteuta_kokon_poisto:</b><br />"); $this->parametriolio->set_id_kokon($kokon4_id); $this->kokonaisuuskontrolleri->toteuta_poista($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>"); } else { $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>"); } //========================================================================== $this->lisaa_kommentti("<b>toteuta_nayta_kokonaisuuslomake (uusi kokon):</b><br />"); $this->parametriolio->set_uusi(true); $this->kokonaisuuskontrolleri->toteuta_nayta_kokonaisuuslomake($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>"); $this->lisaa_kommentti($palauteolio->get_sisalto()); } else { $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>"); } //========================================================================= // HUOM tämä suorittaa myös kokonaisuuden lukitsemisen muokkausta varten: $this->lisaa_kommentti("<b>toteuta_nayta_kokonaisuuslomake (muokkaus):</b>"); $this->parametriolio->set_uusi(false); $this->kokonaisuuskontrolleri->toteuta_nayta_kokonaisuuslomake($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus()); } else { $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>"); } //========================================================================= $this->lisaa_kommentti("<b>toteuta_tallenna_kokonaisuuden_muokkaus:</b>"); // Haetaan vanha selitys, jotta nähdään, muuttuuko: $kokon_alkup = new Kokonaisuusolio($tallennetun_id, $this->tietokantaolio); $tii_alkup = $kokon_alkup->getTiivis(); $this->lisaa_kommentti("Tiivis alkup: " . $tii_alkup . ". Tarkoitus" . " on muuttaa muotoon 'Muutettu on tätä hieman!'"); // Muutetaan vähän: $this->parametriolio->id_kokon = $tallennetun_id; $this->parametriolio->set_tiivis_kokon("Muutettu on tätä hieman!"); $this->kokonaisuuskontrolleri->toteuta_tallenna_muokkaus($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("VIRHEKOODI (toteuta_tallenna_kokonaisuuden_muokkaus) =" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus()); $this->lisaa_kommentti($this->nayta_testikokonaisuudet($tallennetun_id)); } else { $this->lisaa_kommentti("Virheita ei havaittu!"); } $kokon_muok = new Kokonaisuusolio($tallennetun_id, $this->tietokantaolio); $tii_muok = $kokon_muok->getTiivis(); $this->lisaa_kommentti("Muokkauksen jälkeen tiivistelmä on seuraava: " . $tii_muok); // //=========================================================================§ // Lukitaan kokonaisuus käsin muokkausta varten. Tämä tehdään oikeasti //lomakkeen näytön yhteydessä, mikä testattiin edellisessä kohdassa. $id_kokon = $this->parametriolio->get_id_kokon(); $muokattava = new Kokonaisuusolio($id_kokon, $this->tietokantaolio); $lukon_tila = Kokonaisuusolio::$LUKITUS_ON; $lukitus = $muokattava->aseta_kokonaisuuden_lukitus($this->parametriolio->get_omaid(), $lukon_tila); //=========================================================================§ $this->lisaa_kommentti("<b>toteuta_peru_kokon_muokkausten_tallennus:</b><br />"); $this->kokonaisuuskontrolleri->toteuta_peru_kokon_muokkausten_tallennus($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("VIRHEKOODI (toteuta_peru_kokon_muokkausten_tallennus) =" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus()); $this->lisaa_kommentti($this->nayta_testikokonaisuudet($tallennetun_id)); } else { $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>"); } //$this->lisaa_kommentti( $palauteolio->get_sisalto()); //=========================================================================§ $this->lisaa_kommentti("<b>toteuta_vaihda_kokonaisuuksien_jarjestys:</b><br />"); $this->parametriolio->set_ed_id_kokon($kokon2_id); $this->parametriolio->set_id_kokon($kokon3_id); $this->kokonaisuuskontrolleri->toteuta_vaihda_kokonaisuuksien_jarjestys($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>"); } else { $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>"); } //=========================================================================§ $this->lisaa_kommentti("<b>toteuta_nayta_kuvalomake_kokon_tiivistelma</b><br />"); $this->kokonaisuuskontrolleri->toteuta_nayta_kuvalomake_kokon($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>"); } else { $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>"); } //$this->lisaa_kommentti( $palauteolio->get_sisalto()); //=========================================================================§ $this->lisaa_kommentti("<b>toteuta_nayta_kuvalomake_kokon_selitys:</b><br />"); $this->kokonaisuuskontrolleri->toteuta_nayta_kuvalomake_kokon($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>"); } else { $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>"); } //$this->lisaa_kommentti( $palauteolio->get_sisalto()); //=========================================================================§ $this->lisaa_kommentti("<b>toteuta_nayta_kokonaisuudet:</b><br />"); $this->kokonaisuuskontrolleri->toteuta_nayta($palauteolio); if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) { $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>"); } else { $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>"); } //$this->lisaa_kommentti( $palauteolio->get_sisalto()); //=========================================================================§ $this->testaa_uloskirjaus(); $this->lisaa_kommentti("<b>****************************TOTEUTA-METODIT LOPPU*********</b>"); }
/** * * @param Palaute $palauteolio * @param Parametrit $parametriolio * @param Koostekontrolleri $koostekontrolleri * @param Tehtavakontrolleri $tehtavakontrolleri * @param Ratkaisukontrolleri $ratkaisukontrolleri * @param Kokonaisuuskontrolleri $kokonaisuuskontrolleri */ function nayta_urlin_mukaan(&$palauteolio, &$parametriolio, &$koostekontrolleri, &$tehtavakontrolleri, &$ratkaisukontrolleri, &$kokonaisuuskontrolleri) { $palauteolio->set_oma(Yleiset_arvot::$toimintaa_ei_maaritelty); $palauteolio->set_naytto_urlin_mukaan(true); // Mietittävää: kielen, oppiaineen ja tason määritykset voisi laittaa // toteuta-metodeiden sisälle, jottei niitä tarvita roskaamaan urlia. // Lähinnä koosteiden kohdalla pitää // miettiä, koska tällä hetkellä kaikki näkyy kaikille, eli siis // niiden näkyvyyttä ei ole rajoitettu kielen, oppiaineen tai tason // perusteella. Mahdollisesti kielen perusteella näin voisi tehdäkin, // vaikka muut jättäisi ennalleen. // Huomaa myös, että urlissa voi olla pelkästään kielen, aineen ja // tason arvot, jolloin pitäisi osata näyttää ensimmäinen vastaava // kokonaisuus. // Otetaan kuitenkin parametrinolion arvo mukaan [, jos se on jokin muu // oletus "kokonaisuus"] (esim kun urlin perusteella tullaan): //if($parametriolio->naytettava != Palaute::$NAYTETTAVA_OLIOTYYPPI_KOKONAISUUS){ $palauteolio->set_naytettava_oliotyyppi(Oliotyyppi::muunna_palauteolion_arvoksi($parametriolio->naytettava)); //} // Alla pitäisi riittää palauteolion arvo. Se ohjaa nykyisin // näytettävää oliota. Muu-arvo (vähän kuin ei-määr) viittaa siihen, // ettei url määritä näytettävää oliota, joten pitää "arvata" se muuten. if ($palauteolio->get_naytettava_oliotyyppi() != Palaute::$NAYTETTAVA_OLIOTYYPPI_MUU) { if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA) { $tehtavakontrolleri->toteuta_nayta_tehtavat($palauteolio); } else { if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_RATKAISU) { $ratkaisukontrolleri->toteuta_nayta($palauteolio); } else { if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE) { // Haetaan kooste kieltä, tasoa ja oppiainetta varten: $kooste = $koostekontrolleri->get_olio(); if ($kooste->olio_loytyi_tietokannasta) { $kieli = $kooste->get_arvo(Kooste::$sarakenimi_kieli); $oppiaine = $kooste->get_arvo(Kooste::$sarakenimi_oppiaine); $taso = $kooste->get_arvo(Kooste::$sarakenimi_taso); // Kokonaisuusarvot ohjaavat eniten sovellusta: aseta_kieli_taso_ja_oppiaine($kieli, $oppiaine, $taso, $parametriolio); Kielet::kaanna($kieli); $koostekontrolleri->toteuta_nayta($palauteolio); } else { $koostekontrolleri->toteuta_nayta_koosteet($palauteolio); $palauteolio->set_ilmoitus(Tekstit::$kooste_koostetta_ei_ole_tai_ei_voida_nayttaa); } } else { if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE_TULOSTUS) { $koostekontrolleri->toteuta_nayta_tulostus($palauteolio); } else { if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE_ELEMRYHMA) { // Haetaan kooste kieltä, tasoa ja oppiainetta varten: $kooste = $koostekontrolleri->get_olio(); if ($kooste->olio_loytyi_tietokannasta) { $kieli = $kooste->get_arvo(Kooste::$sarakenimi_kieli); $oppiaine = $kooste->get_arvo(Kooste::$sarakenimi_oppiaine); $taso = $kooste->get_arvo(Kooste::$sarakenimi_taso); // Kokonaisuusarvot ohjaavat eniten sovellusta: aseta_kieli_taso_ja_oppiaine($kieli, $oppiaine, $taso, $parametriolio); Kielet::kaanna($kieli); $koostekontrolleri->toteuta_nayta($palauteolio); } else { $koostekontrolleri->toteuta_nayta_koosteet($palauteolio); $palauteolio->set_ilmoitus(Tekstit::$kooste_koostetta_ei_ole_tai_ei_voida_nayttaa); } } else { // default: $kokonaisuuskontrolleri->toteuta_nayta($palauteolio); } } } } } //====================================================================== //====================================================================== // Kun näytettävää oliota ei urlissa, tarkistetaan mahdolliset // id-arvot. Jos jokin määritelty, mennään sinne sitten! } else { // Tarkistetaan, onko kooste-id:tä: if ($parametriolio->kooste_id != Kooste::$MUUTTUJAA_EI_MAARITELTY || $parametriolio->elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) { $nayta_kooste = true; if ($parametriolio->elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) { $nayta_kooste = false; } // Haetaan kooste kieltä, tasoa ja oppiainetta varten: // Huomaa, että ei välttämättä Kooste-olio! $kooste = $koostekontrolleri->get_olio(); if ($kooste instanceof Kooste && $kooste->olio_loytyi_tietokannasta) { $kieli = $kooste->get_arvo(Kooste::$sarakenimi_kieli); $oppiaine = $kooste->get_arvo(Kooste::$sarakenimi_oppiaine); $taso = $kooste->get_arvo(Kooste::$sarakenimi_taso); // Kokonaisuusarvot ohjaavat eniten sovellusta: aseta_kieli_taso_ja_oppiaine($kieli, $oppiaine, $taso, $parametriolio); Kielet::kaanna($kieli); // NÄytetään joko kooste tai elementtiryhmä: if ($nayta_kooste) { $koostekontrolleri->toteuta_nayta($palauteolio); } else { $koostekontrolleri->toteuta_nayta_elementtiryhma($palauteolio); } } else { $koostekontrolleri->toteuta_nayta_koosteet($palauteolio); $palauteolio->set_ilmoitus(Tekstit::$kooste_koostetta_ei_ole_tai_ei_voida_nayttaa); } // Huomaa järjestys: ensin tarkistetaan ratkaisu, sitten teht ja // vasta lopuksi kokonaisuus (jonka id tahtoo kummitella muistissa). } else { if ($parametriolio->id_teht != Tehtava::$MUUTTUJAA_EI_MAARITELTY) { // Näytetään yksi tehtävä: $tehtavakontrolleri->toteuta_nayta($palauteolio); } else { if ($parametriolio->id_ratk != Ratkaisu::$MUUTTUJAA_EI_MAARITELTY) { $ratkaisukontrolleri->toteuta_nayta($palauteolio); } else { if ($parametriolio->id_kokon != Kokonaisuusolio::$kokon_ei_maaritelty) { $kokonaisuuskontrolleri->toteuta_nayta($palauteolio); // Ellei näytettävää oliota, viedään oppiaineen mukaisesti: } else { if ($parametriolio->oppiaine_kokon != Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY) { $kokonaisuuskontrolleri->toteuta_nayta($palauteolio); } else { $kokonaisuuskontrolleri->toteuta_nayta($palauteolio); } } } } } } }
/** * Edellisen yleistetty ja hiukan muokattu versio. * Palauttaa Palaute-olion, jonka sisältönä on ne oliot (kokonaisuudet/ * tehtävät/ratkaisut/tms), johon parametri 'naytettava' viittaa (Oliotyyppi- * luokan arvoja). * * @param Parametrit $parametriolio * @return Palaute $palauteolio */ function toteuta_nayta_oliot2($parametriolio) { $kohde = $parametriolio->naytettava; $id_kokon = $parametriolio->id_kokon; $oppiaine_kokon = $parametriolio->oppiaine_kokon; $taso_kokon = $parametriolio->taso_kokon; $id_teht = $parametriolio->id_teht; $tietokantaolio = $parametriolio->get_tietokantaolio(); $kayttajan_valtuudet = $parametriolio->get_valtuudet(); $kieli_id = $parametriolio->kieli_id; $omaid = $parametriolio->get_omaid(); $kokonaisuuskontrolleri = new Kokonaisuuskontrolleri($tietokantaolio, $parametriolio); $tehtavakontrolleri = new Tehtavakontrolleri($tietokantaolio, $parametriolio); $ratkaisukontrolleri = new Ratkaisukontrolleri($tietokantaolio, $parametriolio); $palauteolio = new Palaute(); $nayta_valikot = false; $selitys_auki = Kokonaisuusolio::$SELITYS_KIINNI_ID; /* Palautetaan kohteen mukainen näkymä: */ if ($kohde == Oliotyyppi::$KOKONAISUUS) { // Selityksen näyttämisen voisi jotenkin mahdollistaa tarvittaessa. $kokonaisuuskontrolleri->toteuta_nayta($palauteolio); $nayta_valikot = true; $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_KOKONAISUUS); } else { if ($kohde == Oliotyyppi::$TEHTAVA) { $tehtavakontrolleri->toteuta_nayta_tehtavat($palauteolio); $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA); } else { if ($kohde == Oliotyyppi::$RATKAISU) { $ratkaisukontrolleri->toteuta_nayta($palauteolio); $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_RATKAISU); } else { $kokonaisuuskontrolleri->toteuta_nayta($palauteolio); $nayta_valikot = true; $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_KOKONAISUUS); $palauteolio->set_ilmoitus("Tuntematon kohde (parametriolio->naytettava)!"); } } } $palauteolio->set_valikkonaytto($nayta_valikot); return $palauteolio; }