Пример #1
0
/**
 * Poistaa yhden kuvatiedoston ja siihen liittyvät kuvatiedot ja kuvalinkit
 * tietokannasta (tietokanta hoitaa viimeksimainitut - cascade-määritykset ok).
 *
 * @param Parametrit $parametriolio
 * @return Palaute $palauteolio
 */
function toteuta_poista_kuva($parametriolio)
{
    $kohde = $parametriolio->kohde_kuva;
    $id_kuva = $parametriolio->id_kuva;
    $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();
    $palauteolio = new Palaute();
    // Haetaan kuvan src poistoa varten:
    $hakulause = "SELECT src\n                FROM kuvat\n                WHERE id = {$id_kuva}";
    $taulunimi = "kuvat";
    $sarakenimi = "id";
    $hakuarvo = $id_kuva;
    $kuvaolio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
    if ($kuvaolio == Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
        $src = "";
    } else {
        $src = $kuvaolio->src;
    }
    // POistetaan kuvatiedot tietokannasta:
    $taulu = "kuvat";
    $taulun_sarake = "id";
    $hakuarvo = $id_kuva;
    $ilmoitus = $tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo);
    // Jos kuvan poisto onnistui, poistetaan myös orvoiksi jääneet linkit:
    if ($ilmoitus == Tietokantaolio::$HAKU_ONNISTUI) {
        // Tämä tuhoaa tiedoston lopullisesti (ellei jo tuhottu):
        if (file_exists($src)) {
            $todellinen_poisto = unlink($src);
        } else {
            $todellinen_poisto = true;
        }
        // Aktiivisuusmerkintä:
        /* Valitaan oikea aktiivisuusmerkintä: */
        if ($kohde === Kuvat::$kohde_kokonaisuus_tiivistelma || $kohde === Kuvat::$kohde_kokonaisuus_selitys) {
            $aktiivisuuslaji = Aktiivisuus::$KUVAN_POISTO_KOKONAISUUS;
        } else {
            if ($kohde === Kuvat::$kohde_tehtava) {
                $aktiivisuuslaji = Aktiivisuus::$KUVAN_POISTO_TEHTAVA;
            } else {
                if ($kohde === Kuvat::$kohde_ratkaisu) {
                    $aktiivisuuslaji = Aktiivisuus::$KUVAN_POISTO_RATKAISU;
                } else {
                    $aktiivisuuslaji = Aktiivisuus::$TUNTEMATON_KUVA_AKTIIVISUUS;
                }
            }
        }
        $viimeksi_aktiivi = time();
        paivita_aktiivisuus($omaid, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji);
        if ($todellinen_poisto) {
            $ilmoitus = Tekstit::$ilm_kuva_poisto_ok;
        } else {
            $ilmoitus = Tekstit::$virheilm_kuvan_poisto_tiedosto_ei_tuhottu . " SRC: '" . $src . "'";
        }
    } else {
        $ilmoitus = Tekstit::$virheilm_kuvan_poisto;
    }
    $palauteolio = toteuta_nayta_oliot($parametriolio);
    $palauteolio->set_ilmoitus($ilmoitus);
    return $palauteolio;
}
Пример #2
0
 /**
  * Palauttaa koosteessa näytettävän kokonaisuuden tulostusta varten optimoidun
  * html-koodin.
  *
  * @param Elementti $elementti Olio, joka viittaa kokonaisuuteen, jonka
  * näkymää parhaillaan puuhaillaan.
  * @param Kokonaisuusolio $kokonaisuus
  * @param Parametrit $parametriolio
  * @param int $kohdeoikeudet Käyttäjän oikeudet tähän olioon.
  * @param <type> $selitys_auki jos true, niin selitys näytetään, muuten ei.
  * @return <type>
  */
 function luo_koostenakyma_tulostus($elementti, $kokonaisuus, $parametriolio, $selitys_auki, $kohdeoikeudet)
 {
     $omaid = $parametriolio->get_omaid();
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $kayttajan_valtuudet = $parametriolio->get_valtuudet();
     $palaute = "";
     $selitys = "";
     $nayta_selitys_nappi = "";
     /* Näyttää selityksen. */
     $siirra_ylemmaksi_nappi = "";
     $siirra_alemmaksi_nappi = "";
     // Alla jostakin syystä !empty($kokonaisuus->getSelitys()) ei toiminut!
     if ($kokonaisuus->getSelitys() != "") {
         $onsubmit_parametrit = array($kokonaisuus->get_id());
         /* Tämän avulla löytyvät */
         $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $kokonaisuus->get_id());
         if ($selitys_auki) {
             $title = Painikkeet::$SULJE_SELITYS_title;
             $onsubmit_funktionimi = "sulje_selitys";
             $input_maaritteet = array('name' => Toimintonimet::$kokonaisuustoiminto, 'value' => Painikkeet::$SULJE_SELITYS_value, 'title' => $title);
         } else {
             $title = Painikkeet::$NAYTA_SELITYS_title;
             $onsubmit_funktionimi = "nayta_selitys";
             $input_maaritteet = array('name' => Toimintonimet::$kokonaisuustoiminto, 'value' => Painikkeet::$NAYTA_SELITYS_value, 'title' => $title);
         }
         $nayta_selitys_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
     }
     if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) {
         // Järjestyksen muutosnapit (jos mielekästä):
         /*$siirra_ylemmaksi_nappi = "";
                     if($kokonaisuus->getEdellisenId_taso() != Kokonaisuusolio::$kokon_edellista_ei_ole){
                         $onsubmit_funktionimi = ""; // Tulevaa varten.
                         $onsubmit_parametrit = "";  // Ei ole vielä.
                         $form_maaritteet =
                             array("class" => "rinnakkain",
                                 "method"=>"post",
                                "action"=>"{$_SERVER['PHP_SELF']}?id_kokon=".$kokonaisuus->get_id().
                                             "&oppiaine_kokon=".$kokonaisuus->getOppiaine().
                                             "&kieli_id=".$kokonaisuus->getKieli().
                                             "&ed_id_kokon=".$kokonaisuus->getEdellisenId_taso().
                                             "&siirto_ylos=true");
                         $input_maaritteet =
                             array("value" => Painikkeet::$SIIRRA_YLEMMAKSI_KOKON_value,
                                 "title" => Painikkeet::$SIIRRA_YLEMMAKSI_KOKON_title,
                                 "name"=>Toimintonimet::$kokonaisuustoiminto);
         
                         try{
                             $siirra_ylemmaksi_nappi =
                             Html::luo_submit_painike_onsubmit_toiminnolla(
                                                         $onsubmit_funktionimi,
                                                         $onsubmit_parametrit,
                                                         $form_maaritteet,
                                                         $input_maaritteet);
                         }
                         catch (Exception $poikkeus){
                             $siirra_ylemmaksi_nappi = $poikkeus->getMessage();
                         }
                     }
         
         
                     // Alaspäin siirto:
                     $siirra_alemmaksi_nappi = "";
                     if($kokonaisuus->getSeuraavanId_taso() != Kokonaisuusolio::$kokon_seuraavaa_ei_ole){
                         $onsubmit_funktionimi = ""; // Tulevaa varten.
                         $onsubmit_parametrit = "";  // Ei ole vielä.
                         $form_maaritteet =
                             array("class" => "rinnakkain",
                                 "method"=>"post",
                                "action"=>"{$_SERVER['PHP_SELF']}?id_kokon=".$kokonaisuus->get_id().
                                             "&oppiaine_kokon=".$kokonaisuus->getOppiaine().
                                             "&kieli_id=".$kokonaisuus->getKieli().
                                             "&seur_id_kokon=".$kokonaisuus->getSeuraavanId_taso().
                                             "&siirto_ylos=0");
                         $input_maaritteet =
                             array("value" => Painikkeet::$SIIRRA_ALEMMAKSI_KOKON_value,
                                 "title" => Painikkeet::$SIIRRA_ALEMMAKSI_KOKON_title,
                                 "name"=>Toimintonimet::$kokonaisuustoiminto,);
         
                         try{
                             $siirra_alemmaksi_nappi =
                             Html::luo_submit_painike_onsubmit_toiminnolla(
                                                         $onsubmit_funktionimi,
                                                         $onsubmit_parametrit,
                                                         $form_maaritteet,
                                                         $input_maaritteet);
                         }
                         catch (Exception $poikkeus){
                             $siirra_alemmaksi_nappi = $poikkeus->getMessage();
                         }
                     }*/
     }
     // Tehtävien lisääminen sopivasti oikeutetuille:
     if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) {
         /* Uuden tehtävän luontipainike *
                     $onsubmit_funktionimi= "nayta_tehtavalomake";
                     $onsubmit_parametrit = array($kokonaisuus->get_id());    /* Tarpeen?*
         
                     $form_maaritteet = array('method'=>'post',
                                             'class'=>'rinnakkain',
                                               'action'=>"{$_SERVER['PHP_SELF']}?".
                                               "id_kokon=".$kokonaisuus->get_id().
                                               "&uusi=true");
         
                     $input_maaritteet = array('name'=>Toimintonimet::$tehtavatoiminto,
                                         'value'=>Painikkeet::$tehtava_uusi_value);
         
                     try{
                         $uusi_teht_nappi =
                             Html::luo_submit_painike_onsubmit_toiminnolla(
                                                             $onsubmit_funktionimi,
                                                             $onsubmit_parametrit,
                                                             $form_maaritteet,
                                                             $input_maaritteet);
                     }
                     catch (Exception $poikkeus){
                         $palaute .= "Virhe tehtavanapin luomisessa: ".
                                         $poikkeus->getMessage();
                     }*/
     }
     // TEhtävien lisäyspainikekoodi loppuu.
     /* haetaan mahdolliset kuvat */
     $kuvahtml_tiivis = $kokonaisuus->hae_kuvat(Kuvat::$kohde_kokonaisuus_tiivistelma, $omaid, $tietokantaolio, false);
     /* Kaikki kokonaisuudet ovat samanlaisia tasosta riippumatta */
     $class_arvo = "elementti_kokon";
     $otsikko = "<div class = " . $class_arvo . " id='elem" . $elementti->get_id() . "'>" . "<h3>" . $kokonaisuus->getOtsikkomerkinta() . $kokonaisuus->getOtsikko() . " " . $siirra_ylemmaksi_nappi . $siirra_alemmaksi_nappi . "</h3>";
     /* Haetaan vielä tarvittaessa selitys: */
     if ($selitys_auki && $kokonaisuus->getSelitys() != "") {
         /* haetaan mahdolliset kuvat */
         $kuvahtml_selitys = $kokonaisuus->hae_kuvat(Kuvat::$kohde_kokonaisuus_selitys, $omaid, $tietokantaolio, false);
         $selitysotsikko = "<div class='selitysotsikko'>" . Tekstit::$otsikko_selitys . "</div>";
         /* Muotoillaan selitys: */
         $selitys_muokattu = muotoile_merkit($kokonaisuus->getSelitys());
         // Pikkukaavat ensin, jotta kursiivin poisto onnistuu ennen
         // sulkujen käsittelyä.
         $selitys_muokattu = Kaavaeditori::muotoile_pikkukaavat($selitys_muokattu);
         // Sitten normaalikaavat:
         $selitys_muokattu = Kaavaeditori::muotoile_kaavat($selitys_muokattu);
         $selitys = $selitysotsikko . $kuvahtml_selitys . $selitys_muokattu;
     }
     /* Muotoillaan tiivistelmän merkit ja kaavat: */
     $tiivistelma = muotoile_merkit($kokonaisuus->getTiivis());
     $tiivistelma = Kaavaeditori::muotoile_pikkukaavat($tiivistelma);
     $tiivistelma = Kaavaeditori::muotoile_kaavat($tiivistelma);
     $tiivistelma = $kuvahtml_tiivis . $tiivistelma . "<br />";
     /* Ja sitten vain palaset pakettiin: HUOM! Täällä katsotaan, ettei
      * piilotetun sisältö näy. 
      */
     $piilotushuomautus = "<div class='piilotushuomautus'>" . Tekstit::$ilm_kokon_piilotettu_paitsi_ots . "</div>";
     $yksityisilmoitus = "<div class='yksityisilmoitus'>" . Tekstit::$ilm_kokon_yksityinen . "</div>";
     $vainkoosteilmoitus = "<div class='koosteilmoitus'>" . Tekstit::$ilm_kokon_vain_kooste . "</div>";
     /**
      * Tänne mennään, kun kokonaisuus näytetään,
      * oli se sitten piilossa tahi ei.
      */
     if ($kokonaisuus->getNakyvyys() + 0 === Nakyvyys::$VAIN_KOOSTEESSA || $kohdeoikeudet >= Lisavaltuudet::$SAA_NAHDA_EI_MUOKATA_EI_POISTAA) {
         $normaali_kokonaisuus = $otsikko;
         // Jos kokonaisuus on muilta piilossa, lisätään viesti:
         if ($kokonaisuus->getNakyvyys() + 0 === Nakyvyys::$VAIN_OTSIKKO) {
             $normaali_kokonaisuus .= $piilotushuomautus . $tiivistelma;
         } else {
             if ($kokonaisuus->getNakyvyys() + 0 === Nakyvyys::$YKSITYINEN) {
                 $normaali_kokonaisuus .= $tiivistelma;
             } else {
                 if ($kokonaisuus->getNakyvyys() + 0 === Nakyvyys::$VAIN_KOOSTEESSA) {
                     $normaali_kokonaisuus .= $tiivistelma;
                 } else {
                     $normaali_kokonaisuus .= $tiivistelma;
                 }
             }
         }
         /* $normaali_kokonaisuus .=
            " ".$nayta_selitys_nappi;*/
         /* Lisätään vielä div selitystä varten: */
         if ($selitys_auki && $kokonaisuus->getSelitys() != "") {
             $normaali_kokonaisuus .= "<div class='selitys' id='selitys" . $kokonaisuus->get_id() . "'>" . $selitys . "</div>";
         }
         $normaali_kokonaisuus .= "</div>";
         /* Kokonaisuus loppuu. */
         $palaute = $normaali_kokonaisuus;
     } else {
         if ($kokonaisuus->getNakyvyys() + 0 === Nakyvyys::$VAIN_OTSIKKO) {
             $class_arvo = "elementti_kokon";
             $otsikko = "<div class = " . $class_arvo . " id='elem" . $elementti->get_id() . "'>" . "<h3>" . $kokonaisuus->getOtsikko() . " " . $siirra_ylemmaksi_nappi . $siirra_alemmaksi_nappi . "</h3>";
             $palaute = $otsikko;
             $palaute .= $piilotushuomautus;
             $palaute .= "</div>";
             /* Kokonaisuus loppuu. */
         } else {
             // Kun jonkun toisen yksityinen / vain koosteessa, eikä hallintavaltuuksia:
             $palaute = "";
         }
     }
     return $palaute;
 }
Пример #3
0
require_once '../kokonaisuudet/yhteiset/php_yhteismetodit.php';
load_files("submit");
// 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();
// Kontrollerit ja näkymät:
$palautuskontrolleri = new Palautuskontrolleri($tietokantaolio, $parametriolio);
$palautusnakymat = new Palautusnakymat();
/*********************** TOIMINTA-TOIMINNOT *******************************/
$toiminta = $parametriolio->get_toiminta();
$palautustoiminta = $parametriolio->get_palautustoiminto();
$lang_id = $parametriolio->kieli_id;
$kayttajan_valtuudet = $parametriolio->get_valtuudet();
// Käsitellään tilanne "$toiminta on määritelty" eli lähinnä
// kokonaisuuksiin liittyvät toiminnot sekä yleisiä toimintoja:
if ($parametriolio->get_toiminta() != "") {
    // Kirjautuminen ulos:
    if ($toiminta == Painikkeet::$KIRJAUDU_ULOS_VALUE) {
        $palauteolio = toteuta_uloskirjautuminen($parametriolio);
    }
} else {
    if ($palautustoiminta != "") {
        if ($palautustoiminta === Palautustekstit::button_new_course_value($lang_id)) {
            $palautuskontrolleri->toteuta_nayta_kurssitietolomake($palauteolio);
        } else {
            $palautuskontrolleri->toteuta_nayta($palauteolio);
        }
    } else {
 /**
  * Hakee tietyn oppiaineen kokonaisuudet tietokannasta. Palauttaa
  * kokonaisuuksien html:n, eli siis kaikki kokonaisuudet kerralla.
  *
  * @param Parametrit $parametriolio
  */
 function hae_kokonaisuudet(&$parametriolio)
 {
     $oppiaineindeksi = $parametriolio->oppiaine_kokon;
     $taso = $parametriolio->taso_kokon;
     $tietokantaolio = $this->get_tietokantaolio();
     $kayttajan_valtuudet = $parametriolio->get_valtuudet();
     $kieli_id = $parametriolio->kieli_id;
     $omaid = $parametriolio->get_omaid();
     $selitys_auki_id = $parametriolio->selitys_auki_id;
     $ylakokonaisuuden_id = -1;
     // 1. tason kokonaisuudet - ei yläkokonaisuutta.
     $otsikkomerkinta_alussa = "";
     $otsikkotaso_alussa = Kokonaisuusolio::$otsikkotaso_oletus;
     $kokonaisuustaulukko = array();
     // Seuraava on aina taulukko (array), joka voi olla tyhjä:
     $kokonaisuusoliopuu = $this->hae_kokonaisuusoliopuu($kokonaisuustaulukko, $otsikkomerkinta_alussa, $otsikkotaso_alussa, $kieli_id, $oppiaineindeksi, $taso, $ylakokonaisuuden_id, $tietokantaolio, $omaid);
     // ASetetaan edellisten ja seuraavien kokonaisuuksien id:t:
     $kokonaisuusoliot = $this->aseta_ed_ja_seur_idt_kokonaisuuksiin($kokonaisuusoliopuu);
     // Jotta kokonaisuudet menevät kutsujan suuntaankin (linkkien näyttö)
     $parametriolio->kokonaisuusoliot = $kokonaisuusoliot;
     $palaute = "";
     // Palautettava html
     if (sizeof($kokonaisuusoliot) == 0) {
         $palaute = Tekstit::$ilm_kokon_yhtaan_kokon_ei_loytynyt;
     } else {
         foreach ($kokonaisuusoliot as $kok) {
             /* 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;
             }
             if ($kok instanceof Kokonaisuusolio) {
                 $palaute .= $this->kokonaisuusnakymat->tulosta_kokonaisuus($kok, $this->get_parametriolio(), $selitys_auki, $kok->getEdellisenId_kaikista(), $kok->getSeuraavanId_kaikista());
             }
         }
     }
     return $palaute;
 }
Пример #5
0
 /**
  * @param Parametrit $parametriolio
  * @param Palaute $palauteolio
  * @return html Palauttaa sivun täydellisen html:n.
  */
 function nayta_etusivu($parametriolio, $palauteolio, $nayttotapa)
 {
     $valtuudet = $parametriolio->get_valtuudet();
     $ylapalkkipainikkeet = $palauteolio->get_ylapalkkipainikkeet();
     $sisalto = $palauteolio->get_sisalto();
     $ilmoitus = $palauteolio->get_ilmoitus();
     $linkit = $palauteolio->get_linkkihtml();
     $aika = Aika::anna_nyk_viikonp_suomeksi() . " " . date("d.m.Y");
     $aikailmoitus = "Tänään on " . $aika . " ";
     // Kieli:
     $lang_id = $parametriolio->kieli_id;
     // Tulostetaan etusivun html-koodi:
     $otsikkoteksti = Palautustekstit::heading1($lang_id);
     // Vain katselu on mahdollista ilman kirjautumista:
     if ($valtuudet > Valtuudet::$KATSELU) {
         $kirjautuminen = Html::span(array(Attr::style("font-size:70%")), " " . $_SESSION['tiedot']->etunimi . " ") . Html::luo_forminput_painike(array(Attr::classs("navbar-form inline-block")), array(Attr::classs("btn btn-default btn-md"), Attr::name("toiminta"), Attr::value(Painikkeet::$KIRJAUDU_ULOS_VALUE)));
     } else {
         $kirjautuminen = Html::a(array(Attr::title(Tekstit::$linkit_tunnistautuminen)), Html::span(array(Attr::classs("glyphicon glyphicon-log-in login-painike")), ""), "../kokonaisuudet/tunnistus.php?target=submit");
     }
     $ylapalkkipainikkeet .= $kirjautuminen;
     // Näyttötavan vaikutus:
     if ($nayttotapa === Palautusnakymat::$show_1col) {
         $number_of_col = 1;
     } else {
         if ($nayttotapa === Palautusnakymat::$show_2col) {
             $number_of_col = 2;
         } else {
             $number_of_col = 1;
         }
     }
     $links = $linkit;
     $content = $sisalto;
     $header_content = $otsikkoteksti;
     $etusivu = '<!DOCTYPE html>' . '<html>' . $this->create_head() . '<body onload="kaynnista_metodit(2)">
         <div id="ilmoitus">' . $ilmoitus . '</div>
         ' . $this->create_nav($header_content, $ylapalkkipainikkeet) . '
         ' . $this->create_sidenavs_and_content_row($links, $content, $number_of_col) . '
         ' . $this->create_footer($aikailmoitus, "") . '
         </body>
         </html>';
     return $etusivu;
 }
Пример #6
0
/**
 * 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;
}