/**
  * 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;
 }
Esempio n. 2
0
 /**
  * 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;
 }
Esempio n. 3
0
 // Ei väliä
 // Tälläkään ei liene väliä, kunhan jokin on.
 $otsikkotaso_alussa = Kokonaisuusolio::$otsikkotaso_oletus;
 $kokonaisuustaulukko = array();
 // Haetaan kieli, oppiaine ja taso oikeasta paikasta:
 $kieli_id = $parametriolio->kieli_id;
 $oppiaineindeksi = $parametriolio->oppiaine_kokon;
 $taso = $parametriolio->taso_kokon;
 if ($kohde === "koostelomake") {
     $kieli_id = $parametriolio->koostelomake_valittavat_kieli;
     $oppiaineindeksi = $parametriolio->koostelomake_valittavat_oppiaine;
     $taso = $parametriolio->koostelomake_valittavat_taso;
 }
 // Seuraava on aina taulukko (array), joka voi olla tyhjä.
 // Muuten sisältää klikatun lapsikokonaisuudet:
 $alikokonaisuudet = $kokonaisuuskontrolleri->hae_kokonaisuusoliopuu($kokonaisuustaulukko, $otsikkomerkinta_alussa, $otsikkotaso_alussa, $kieli_id, $oppiaineindeksi, $taso, $ylakokonaisuuden_id, $tietokantaolio, $omaid);
 $sessiomuuttujan_nimi = Parametrit::linkkisessiomuuttujan_nimi($id_kokon);
 // Avattaessa tehdään huolella aiempien valintojen mukaan.
 if ($aukaisu == 1) {
     // Avataan klikattu linkki, jos sillä lapsia:
     if (sizeof($alikokonaisuudet) > 0) {
         $sessiomuuttujan_nimi = Parametrit::linkkisessiomuuttujan_nimi($id_kokon);
         $_SESSION[$sessiomuuttujan_nimi] = Kokonaisuusolio::$LINKKI_AUKI;
     }
     // Otetaan ylös näytettävien linkkien id:t.
     $rajataso = 0;
     $piilotus_kaynnissa = false;
     // Näytetäänkö linkit vai ei.
     foreach ($alikokonaisuudet as $kokolio) {
         if ($kokolio instanceof Kokonaisuusolio) {
             $naytettavan_id = $kokolio->get_id();