/** * Hakee testikokonaisuudet tietokannasta ja palauttaa niiden muotoillun * html:n. Ylimmän tason testin id on $testiylakokon_id ja se otetaan mukaan * näytettäviin kokonaisuuksiin. * @param <type> $testiylakokon_id * @param Parametrit $parametriolio * @param $parametriolio * @param Parametrit $parametriolio * @return string palauttaa kokonaisuus-html:n. */ function nayta_testikokonaisuudet($testiylakokon_id) { $parametriolio = $this->parametriolio; $tietokantaolio = $this->tietokantaolio; // Haetaan ylin kokonaisuus (joka ei tule automaattisesti: $hakulause = "SELECT * FROM kokonaisuudet\n WHERE (id=" . $testiylakokon_id . ")"; $osumat = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause); $omaid = $parametriolio->get_omaid(); $kokonaisuustaulukko = array(); $ekakokonaisuus = ""; if (!empty($osumat)) { // Haetaan tiedot tietokannasta ja luodaan Kokonaisuusluokan olio $kokon = new Kokonaisuusolio($osumat[0]->id, $tietokantaolio); $otsikkomerkinta = "Testi"; $otsikkotaso = 1; $ed_id = -1; $seur_id = -1; if (!$kokon->olio_loytyi_tietokannasta) { $this->lisaa_virheilmoitus("Metodi nayta_testikokonaisuudet: " . " Kokonaisuuden haku tietokannasta " . " ja Kokonaisuusolion luominen ei onnistunut"); } else { // Asetetaan tarvittavat tiedot: $kokon->setOtsikkomerkinta($otsikkomerkinta); $kokon->setOtsikkotaso($otsikkotaso); $kokon->setEdellisenId_taso($ed_id); $kokon->setSeuraavanId_taso($seur_id); $this->lisaa_kommentti("Kokonaisuuden haku tietokannasta " . " ja Kokonaisuusolion luominen OK."); // Lisätään juurikokonaisuus eli ylin taulukon alkuun: array_push($kokonaisuustaulukko, $ekakokonaisuus); } } $sisalto = ""; $otsikkomerkinta_alussa = "1"; $otsikkotaso_alussa = 1; // Seuraava on aina taulukko (array), joka voi olla tyhjä: $this->kokonaisuuskontrolleri->hae_kokonaisuusoliopuu($kokonaisuustaulukko, $otsikkomerkinta_alussa, $otsikkotaso_alussa, $parametriolio->kieli_id, $parametriolio->oppiaine_kokon, $parametriolio->taso_kokon, $parametriolio->ylakokonaisuuden_id_kokon, $parametriolio->get_tietokantaolio(), $omaid); if (empty($kokonaisuustaulukko)) { $sisalto .= "Testikokonaisuuksia ei loytynyt!<br/>"; } foreach ($kokonaisuustaulukko as $kok) { $selitys_auki_id = $parametriolio->get_selitys_auki_id(); if ($kok instanceof Kokonaisuusolio) { /* Tarkistetaan mahdollinen näytettävä selitys: */ if (is_numeric($selitys_auki_id) && $selitys_auki_id != Kokonaisuusolio::$SELITYS_KIINNI_ID) { if ($selitys_auki_id == $kok->get_id()) { $selitys_auki = true; } else { $selitys_auki = false; } } else { $selitys_auki = false; } $sisalto .= $this->kokonaisuusnakymat->tulosta_kokonaisuus($kok, $parametriolio, $parametriolio->selitys_auki_id); } else { $sisalto .= "Virhe oliotyypissa (metodi: nayta_testikokonaisuudet)! <br/>"; } } return $sisalto; }
/** * 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; }
/** * Palauttaa valikon html:n. * HUOM! Listasta jätetään muokatessa pois kokonaisuudet, jotka on * kyseisen luokan aliluokkia (muuten tulee tosi jänniä sotkuja). * Lisäksi myös kokonaisuus itse pitää poistaa listasta. (Nämä koskevat * muokkausta. Uuden luomisessa näitä ongelmia ei ole. Kaikki käyvät uudelle * yläkokonaisuuksiksi) * * * @param <type> $id_kokon * @param Tietokantaolio $tietokantaolio * @param <type> $ylakokonaisuuden_id_kokon * @param <type> $oppiaine * @param <type> $kieli_id * @param <type> $taso * @param <type> $uusi * @param <type> $omaid tarvitaan oliopuun hakua varten (muutos 13.12.2011) * @param Kokonaisuuskontrolleri $kokonaisuuskontrolleri tarvitaan oliopuun * haussa myös. * @return <type> */ function nayta_ylakokonaisuusvalikko($id_kokon, $tietokantaolio, &$ylakokonaisuuden_id_kokon, $oppiaine, $kieli_id, $taso, $uusi, $omaid, $kokonaisuuskontrolleri) { // Haetaan otsikot ja id:t: $hakulause = "SELECT id,otsikko\n FROM kokonaisuudet\n WHERE oppiaine={$oppiaine}\n AND taso = {$taso}\n AND kieli = {$kieli_id}\n ORDER BY otsikko"; /* AND (nakyvyys = ".Nakyvyys::$JULKINEN. " OR henkilo_id = $omaid)";*/ $osumat = $tietokantaolio->tee_omahaku_oliotaulukkopalautteella($hakulause); $sallitut = array(); // Sallitut valintaarvot // Muokkaustilassa poistetaan osumista kokonaisuusalipuu, ettei // viittaukset mene sekaisin: if (!$uusi) { $ekan_otsikko = ""; $kokonaisuudet = array(); $otsikkotaso = Kokonaisuusolio::$otsikkotaso_oletus; /* Ei tarvita */ $alipuu = $kokonaisuuskontrolleri->hae_kokonaisuusoliopuu($kokonaisuudet, $ekan_otsikko, $otsikkotaso, $kieli_id, $oppiaine, $taso, $id_kokon, $tietokantaolio, $omaid); foreach ($osumat as $ehdokas) { $ehdokas_sallittu = true; foreach ($alipuu as $kielletty) { if ($ehdokas->id == $kielletty->get_id()) { $ehdokas_sallittu = false; } } /* Tarkistetaan vielä, ettei itse juurikokonaisuus ole mukana * (tehdyn muutoksen jälkeen juurikok. ei ole enää mukana * alipuussa): */ if ($ehdokas->id == $id_kokon) { $ehdokas_sallittu = false; } /* Ellei löytynyt kiellettyjen listalta, lisätään valikkoon: */ if ($ehdokas_sallittu) { array_push($sallitut, $ehdokas); } } } else { // Uudelle kokonaisuudelle yläkokonaisuuden valinta on vapaa! $sallitut = $osumat; } // Luodaan taulukot tyhjine vaihtoehtoineen (jolloin ei yläkokonaisuutta): $arvot = array(-1); $nimet = array(Tekstit::$kokonlomake_ei_ylatasoa); // Viedään otsikot ja vastaavat arvot taulukoihin: if (sizeof($sallitut) != 0) { foreach ($sallitut as $kokonaisuus) { array_push($arvot, $kokonaisuus->id); array_push($nimet, $kokonaisuus->otsikko); } } $valikkohtml = ""; try { $name_arvo = "ylakokonaisuuden_id_kokon"; if ($uusi) { // Oletuksena viimeksi aktiivisen kokonaisuuden alle: $oletusvalinta_arvo = $id_kokon; } else { $oletusvalinta_arvo = $ylakokonaisuuden_id_kokon; } $otsikko = Tekstit::$ylakokonaisuusvalikko_otsikko; $valikkohtml .= Html::luo_pudotusvalikko($arvot, $nimet, $name_arvo, $oletusvalinta_arvo, $otsikko); } catch (Exception $poikkeus) { $valikkohtml = Tekstit::$virheilm_ylakokonaisuusvalikko . " (" . $poikkeus->getMessage() . ")"; } return $valikkohtml; }
load_files("ajax"); // Muutama kysely liittyen vain ajaxiin (vois sijoittaa kyllä parametriolioon): $aukaisu = isset($_REQUEST['aukaisu']) ? $_REQUEST['aukaisu'] : 0; $id_raaka = isset($_REQUEST['id_raaka']) ? $_REQUEST['id_raaka'] : Malliluokkapohja::$MUUTTUJAA_EI_MAARITELTY; $id_nappi = isset($_REQUEST['id_nappi']) ? $_REQUEST['id_nappi'] : -1; // Kohde liittyy siihen, missä otsikot näytetään (kokonaisuusnäkymä vai // koostelomake lähinnä). $kohde = isset($_REQUEST['kohde']) ? $_REQUEST['kohde'] : 'kokonaisuudet'; //-------------------- // Yhdistetään tietokantaan: $tietokantaolio = new Tietokantaolio($dbtyyppi, $dbhost, $dbuser, $dbsalis); $tietokantaolio->yhdista_tietokantaan($dbnimi); // Tee parametriolio ja palauteolio! $parametriolio = new Parametrit($tietokantaolio); $palauteolio = new Palaute(); $kokonaisuuskontrolleri = new Kokonaisuuskontrolleri($tietokantaolio, $parametriolio); $tehtavakontrolleri = new Tehtavakontrolleri($tietokantaolio, $parametriolio); $ratkaisukontrolleri = new Ratkaisukontrolleri($tietokantaolio, $parametriolio); $koostekontrolleri = new Koostekontrolleri($tietokantaolio, $parametriolio); $kokonaisuusnakymat = new Kokonaisuusnakymat(); $tehtavanakymat = new Tehtavanakymat(); $ratkaisunakymat = new Ratkaisunakymat(); $koostenakymat = new Koostenakymat(); $omaid = $parametriolio->get_omaid(); $id_kokon = $parametriolio->id_kokon; /** * Hakee koostelomakkeeseen valittavat elementit ja palauttaa tiedot xml-muodossa. */ function hae_elementit($parametriolio, $koostekontrolleri, $tietokantaolio, $koodaus) { $xml = "";
/** * * @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; }