/** * * @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); } } } } } } }