Example #1
0
 /**
  * Tyhjentää tietokannasta testihenkilöt ja lisävaltuudet (jotka 
  * poistuvat cascade-ominaisuuden vuoksi testihenkilön mukana tietokannasta). 
  */
 public function tee_loppusiivous()
 {
     $this->lisaa_kommentti("======================== SIIVOUS ALKAA =======================");
     $poisto_lkm = $this->tietokantaolio->poista_kaikki_rivit("henkilot", Henkilo::$sarakenimi_syntymavuosi, Kayttajatestaus::$testi_svuosi);
     // Poistetaan testikokonaisuus, jonka poisto poistaa siihen liittyvät
     // tehtävät ja ratkaisut:
     if ($this->testikokonaisuus instanceof Kokonaisuusolio) {
         $poisto_kokon = $this->testikokonaisuus->poista();
         if ($poisto_kokon == Kokonaisuusolio::$OPERAATIO_ONNISTUI) {
             $poisto_kokon_lkm = 1;
         } else {
             $poisto_kokon_lkm = 0;
         }
     } else {
         $poisto_kokon_lkm = 0;
     }
     // Poistetaan testiratkaisut:
     $poisto_lkm_ratkaisut = $this->tietokantaolio->poista_kaikki_rivit("Ratkaisut", "ratkaisu", Kayttajatestaus::$testi_ratkaisu);
     if ($poisto_lkm_ratkaisut == 0) {
         $poisto_kommentti_ratkaisut = "";
         // Kaikki kunnossa:
     } else {
         $poisto_kommentti_ratkaisut = "Virhe: ratkaisuja poistettu" . $poisto_lkm_ratkaisut . " kpl, vaikka piti poistua itse!";
     }
     // Yritetään vielä poistaa testilisävaltuudet, joita ei pitäisi löytyä:
     $poisto_lkm_valtuudet = $this->tietokantaolio->poista_kaikki_rivit("Lisavaltuudet", Lisavaltuudet::$sarakenimi_henkilo_id, $this->testihenkilo->get_id());
     if ($poisto_lkm_valtuudet == 0) {
         $this->lisaa_kommentti("Siivous suoritettu onnistuneesti. \n                                Poistettu " . $poisto_lkm . " henkilöä" . " ja " . $poisto_kokon_lkm . " kokonaisuutta. " . " Lisävaltuudet poistettu automaattisesti. " . $poisto_kommentti_ratkaisut);
     } else {
         $this->lisaa_virheilmoitus("Virhe siivouksessa! \n                                Poistettu " . $poisto_lkm . " henkilöä" . " ja " . $poisto_lkm_ratkaisut . " ratkaisua, mutta " . "myös " . $poisto_lkm_ratkaisut . " lisävaltuutta," . " vaikka niiden pitäisi itsestään poistua!");
     }
     $this->lisaa_kommentti("======================== SIIVOUS TEHTY ========================");
 }
 /**
  * Palauttaa html-lomakkeen, jonka avulla voidaan tallentaa uuden
  * kokonaisuuden tiedot tietokantaan tai muokata vanhoja. Lomakkeen html-id on
  * 'kokonaisuuslomake'.
  *
  * @param <type> $id_kokon
  * @param <type> $omaid
  * @param <type> $uusi
  * @param <type> $ilmoitus_kokon
  * @param Tietokantaolio $tietokantaolio
  * @param <type> $oppiaine_kokon
  * @param <type> $otsikko_kokon
  * @param <type> $tiivis_kokon
  * @param <type> $selitys_kokon
  * @param <type> $taso_kokon
  * @param <type> $jarjestysnro_kokon
  * @param <type> $laajennetun_id_kokon
  * @param <type> $ylakokonaisuuden_id_kokon
  * @param <type> $kieli_id
  * @param <type> $toiminnan_name_arvo
  * @param Kokonaisuuskontrolleri $kokonaisuuskontrolleri Tämä vähän
  * suurellinen, mutten äkkiä parempaa keinoa keksinyt (15.1.2015)
  * @param int $kaavakieli viittaa käytettävään matematiikan kaavakieleen
  * (28.11.2015)
  * @param Elementti $elementti on Elementti-luokan olio, johon tämä
  * kokonaisuus kuuluu, tai sitten Elementti::$MUUTTUJAA_EI_MAARITELTY,
  * ellei tulla koosteesta.
  * (20.2.2016)
  * @return <type>
  */
 function nayta_kokonaisuuslomake($id_kokon, $omaid, $uusi, $ilmoitus_kokon, $tietokantaolio, &$oppiaine_kokon, &$otsikko_kokon, &$tiivis_kokon, &$selitys_kokon, &$taso_kokon, &$jarjestysnro_kokon, &$laajennetun_id_kokon, &$ylakokonaisuuden_id_kokon, &$kieli_id, &$nakyvyys_kokon, $toiminnan_name_arvo, $kokonaisuuskontrolleri, $kaavakieli, $elementti, $elemryhma)
 {
     $mj = "";
     // Lomakkeen html-koodi.
     $otsikon_maxpituus = 150;
     $submitnappi = "";
     $perunappi = "";
     $uusi_kuva_tiivis = "";
     $uusi_kuva_seli = "";
     $tulo_koosteesta = false;
     // True, if coming from Kooste (Package).
     $kokonaisuus = "";
     // Tämä haetaan tietokannasta.
     /*$uusi_kuva_tiivis = "";
       $uusi_kuva_seli = "";*/
     $submit_kesken_nappi = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$TALLENNA_KESKEN_KOKON_VALUE . "' " . "title='" . Painikkeet::$TALLENNA_KESKEN_KOKON_TITLE . "'/>";
     $esikatselunappi = "<button type='button' " . "onclick='nayta_kokonaisuuden_esikatselu(" . $id_kokon . ")'" . "title='" . Painikkeet::$ESIKATSELU_TITLE . "'/>" . Painikkeet::$ESIKATSELU_VALUE . "</button>";
     $elementtitiedot = "";
     // urliin lisättävät koosteen ja elementin idt
     if ($uusi) {
         $submitnappi = "<input type='submit'\n            name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$TALLENNA_UUSI_KOKON_VALUE . "'/>";
         $perunappi = "<input type='submit'\n                    name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$PERU_UUDEN_KOKON_TALLENNUS_VALUE . "'/>";
     } else {
         // Haetaan ajantasalla olevat tiedot tietokannasta. Aiemmin
         // tiedot tuotiin kiinteästi painikelomakkeeseen, mutta tällöin
         // tämän jälkeen olioon tehdyt muutokset eivät näkyneet, jos
         // alkoi tehdä muutoksia olioon.
         $kokonaisuus = new Kokonaisuusolio($id_kokon, $tietokantaolio);
         if ($kokonaisuus->olio_loytyi_tietokannasta) {
             $oppiaine_kokon = $kokonaisuus->getOppiaine();
             // Alla ovat tärkeitä, jotta esim. JS-koodi toimii, eikä
             // ala kehittämään mitään ylimääräistä muokatessa. Huom:
             // stripslash pilaa latex-koodin, eikä ilm tarpeellinen.
             $otsikko_kokon = htmlspecialchars($kokonaisuus->getOtsikko(), ENT_QUOTES, "UTF-8", true);
             $tiivis_kokon = htmlspecialchars($kokonaisuus->getTiivis(), ENT_QUOTES, "UTF-8", true);
             $selitys_kokon = htmlspecialchars($kokonaisuus->getSelitys(), ENT_QUOTES, "UTF-8", true);
             /*$otsikko_kokon = stripslashes($kokonaisuus->getOtsikko());
               $tiivis_kokon = stripslashes($kokonaisuus->getTiivis());
               $selitys_kokon = stripslashes($kokonaisuus->getSelitys());*/
             $taso_kokon = $kokonaisuus->getTaso();
             $jarjestysnro_kokon = $kokonaisuus->getJarjestysnro();
             $laajennetun_id_kokon = $kokonaisuus->getLaajennetun_id();
             $ylakokonaisuuden_id_kokon = $kokonaisuus->getYlakokonaisuuden_id();
             $nakyvyys_kokon = $kokonaisuus->getNakyvyys();
             $submitnappi = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$TALLENNA_MUOKKAUS_KOKON_VALUE . "'" . "title='" . Painikkeet::$TALLENNA_MUOKKAUS_KOKON_TITLE . "'/>";
             $perunappi = "<input type='submit'\n                    name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$PERU_KOKON_MUUTOSTEN_TALLENNUS_VALUE . "'/>";
             //==============================================================
             // Täällä katsotaan, onko käyttäjä tulossa koosteesta ja
             // mahdollistetaan kätevä paluu takaisin.=======================
             if ($elementti instanceof Elementti) {
                 $kooste_id = $elementti->get_arvo(Elementti::$sarakenimi_kooste_id);
                 $elem_id = $elementti->get_id();
                 //$koostenakymat = new Koostenakymat();
                 //$perunappi = $koostenakymat->
                 //        nayta_inputpainike_paluu_koosteeseen_no_form();
                 $elementtitiedot = "&" . Koostekontrolleri::$kooste_name_id . "=" . $kooste_id . "&" . Koostekontrolleri::$elementti_name_id . "=" . $elem_id;
                 $tulo_koosteesta = true;
             }
             if ($elemryhma instanceof Elementtiryhma) {
                 $elemryhma_id = $elemryhma->get_id();
                 $elementtitiedot .= "&" . Koostekontrolleri::$elemryhma_name_id . "=" . $elemryhma_id . "&";
                 $tulo_koosteesta = true;
             }
             //========= Kuvan lisäyspainikkeet: paluu vanhaan ideaan ===========
             /* Uuden kuvan lisäyspainike tiivistelmään*/
             $uusi_kuva_tiivis = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$LISAA_KUVA_MANUAALI_TIIVIS_KOKON_VALUE . "'" . "title='" . Painikkeet::$LISAA_KUVA_MANUAALI_TIIVIS_KOKON_TITLE . "'/>";
             /* Uuden kuvan lisäyspainike selitykseen:*/
             $uusi_kuva_seli = "<input type='submit'" . "name='{$toiminnan_name_arvo}'" . "value='" . Painikkeet::$LISAA_KUVA_MANUAALI_SELITYS_KOKON_VALUE . "'" . "title='" . Painikkeet::$LISAA_KUVA_MANUAALI_SELITYS_KOKON_TITLE . "'/>";
             //==================================================================
         } else {
             $this->lisaa_virheilmoitus(Tekstit::$ilm_kokon_ei_loytynyt);
             return $this->tulosta_virheilmoitukset() . $perunappi;
         }
     }
     // End of päivitetään vanhaa.
     // NÄkyvyysvalikko: ====================================================
     $oletusarvo = $nakyvyys_kokon;
     $nakyvyydet = new Nakyvyys();
     $select_maaritteet = array(Attr::name(Kokonaisuuskontrolleri::$kokon_name_nakyvyys), Attr::title(Tekstit::$nakyvyys_valikko_otsikko_title));
     $option_maaritteet = array();
     $nakyvyysvalikko = $nakyvyydet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $oletusarvo, Tekstit::$nakyvyys_valikko_otsikko);
     //======================================================================
     // Ilmoitus otetaan mukaan, jos ei tyhjä:
     if ($ilmoitus_kokon != "") {
         $ilmoitus_kokon = "<span class='kokonaisuuslomakeilmoitus'>" . $ilmoitus_kokon . "</span><br />";
     }
     $oppiainehtml = Tekstit::$oppiainevalikko_otsikko . ": <b>" . Oppiaineet::hae_oppiaineen_nimi($oppiaine_kokon) . "</b>";
     $koulutasohtml = Tekstit::$tasovalikko_otsikko . ": <b>" . Koulutasot::hae_koulutason_nimi($taso_kokon, false) . "</b>";
     // Kielivalintavalikko: VALINTA POISTETTU toimintavaikeuksien takia!
     //$kielivalintahtml = nayta_kielivalikko($kieli_id);
     $kielivalintahtml = Tekstit::$kielivalikko_otsikko . ": <b>" . Kielet::hae_kielen_nimi($kieli_id) . "</b>";
     // Ylempi kokonaisuustaso
     $ylakokonvalikko = $this->nayta_ylakokonaisuusvalikko($id_kokon, $tietokantaolio, $ylakokonaisuuden_id_kokon, $oppiaine_kokon, $kieli_id, $taso_kokon, $uusi, $omaid, $kokonaisuuskontrolleri);
     // Tekstinmuokkaus tiivistelmää varten:
     $muokattavan_elementin_id_tii = "tiivis_tekstiruutu";
     $alasvetovalikon_id = "merkit1_tiivis";
     $tekstityokaluolio = new Tekstityokalupalkki($muokattavan_elementin_id_tii, $alasvetovalikon_id);
     // Nykyään nämä toimii sekä tiivistelmälle että selitykselle.
     // Lomake osaa huomata, kunpaa ollaan muokkaamassa:
     $tekstimuokkauspainikkeet = $tekstityokaluolio->luo_painikkeet(Tekstityokalupalkki::$PERUSPAINIKKEET_JA_MATEMAATTISET, $kaavakieli);
     // Tekstinmuokkaus selitystä varten:
     $muokattavan_elementin_id_sel = "selitys_tekstiruutu";
     // Kaavakielivalikko:==================================================
     $kaavakielet = new Kaavakieli();
     $select_maaritteet = array(Attr::onchange("muuta_kaavakieli", array("this.value", Yleiset_arvot::$kaavakieli_name, $muokattavan_elementin_id_tii, $alasvetovalikon_id)));
     $option_maaritteet = array();
     $kaavakielivalikko = $kaavakielet->luo_pudotusvalikko($select_maaritteet, $option_maaritteet, $kaavakieli, Tekstit::$kaavakieli_otsikko);
     //=====================================================================
     if ($uusi) {
         // Ellei id-kokon-arvoa määritellä täällä, tulee sessiomuuttujasta vanha.
         $id_kokon = Kokonaisuusolio::$kokon_ei_maaritelty;
     }
     // Vanha ylakokon_id otetaan talteen, jotta lapsiasiat pysyvät
     // oikealla tolalla. Haetaan mahdollisimman tuoreet tiedot.
     $ylakokonaisuuden_id_vanha = $ylakokonaisuuden_id_kokon;
     if ($kokonaisuus instanceof Kokonaisuusolio) {
         $ylakokonaisuuden_id_vanha = $kokonaisuus->getYlakokonaisuuden_id();
     }
     /*lisaaTagit(elementin_id, elementin_tunnus, class_arvo, id_arvo*/
     // Sitten palat yhteen:
     $mj = "<form align='left' method='post' id='kokonaisuuslomake'" . "action='index.php?id_kokon=" . $id_kokon . "&ylakokonaisuuden_id_vanha=" . $ylakokonaisuuden_id_vanha . "&taso_kokon=" . $taso_kokon . "&kieli_id=" . $kieli_id . "&uusi=" . $uusi . $elementtitiedot . "'/>" . $ilmoitus_kokon . "<b>" . Tekstit::$kokonlomake_ohje . "</b>" . $esikatselunappi . "<table summary='uudet_tiedot'>" . "<tr><td>" . Tekstit::$kokonlomake_otsikko . ": </td><td><input type='text'\n            size='55' maxlength='{$otsikon_maxpituus}'" . "name='otsikko_kokon' value='{$otsikko_kokon}'" . "id='otsikkotekstikentta'" . "title='" . Tekstit::$kokonlomake_otsikkotitle . "'/>" . "</tr>" . "<tr><td></td>" . "<td>" . " " . $ylakokonvalikko . " " . $nakyvyysvalikko . "</td>" . "</tr>" . "<tr><td></td><td>" . $kaavakielivalikko . " " . $oppiainehtml . " " . $koulutasohtml . " " . $kielivalintahtml . "</td></tr>" . "<tr><td></td><td colspan='2'>" . $tekstimuokkauspainikkeet . "</td></tr>" . "<tr><td>" . Tekstit::$kokonlomake_tiivis . ":</td>" . "<td colspan='2'><textarea cols='80' rows='18' maxlength = '10000'\n            id='" . $muokattavan_elementin_id_tii . "' name='tiivis_kokon' \n            onfocus='kirjoituskentta_onfocus(\"tiivis_tekstiruutu\")'>" . $tiivis_kokon . "</textarea></td></tr>" . "<tr><td>" . Tekstit::$kokonlomake_selitys . ":</td>" . "<td colspan='2'><textarea cols='80' rows='9' maxlength = '10000'\n            id='" . $muokattavan_elementin_id_sel . "' name='selitys_kokon'\n            onfocus='kirjoituskentta_onfocus(\"selitys_tekstiruutu\")'>" . $selitys_kokon . "</textarea></td></tr>" . "<tr><td></td><td align='left'>" . $submitnappi . $submit_kesken_nappi . $uusi_kuva_tiivis . $uusi_kuva_seli . $perunappi . "</td></tr>" . "</table>" . "</form>";
     return $mj;
 }
Example #3
0
 /**
  * Metodi, joka tallentaa muokatun kokonaisuuden tiedot tietokantaan.
  * Palauttaa arvon Malliluokkapohja::$VIRHE, jos tallennus epäonnistuu,
  * muuten arvon Malliluokkapohja::$OPERAATIO_ONNISTUI.
  *
  * Ajaa Malliluokkapohjan vastaavan metodin yli.
  * 
  * Seuraavat arvot asetetaan täällä automaattisesti, joten niistä ei
  * tarvitse muualla huolehtia: 
  * 
  *   ed_muutos_sek
  * 
  * luomishetki_sek-arvoa ei ole syytä muuttaa, vaikka sitä ei estetä täällä.  
  * 
  * Huolehtii myös isikokonaisuuksien on_lapsia-arvojen päivittämisestä silloin, kun
  * isikokonaisuutta vaihdetaan. Tällöin sekä uuden että vanhan isi-
  * kokonaisuuden on_lapsia-arvot tarkistetaan ja päivitetään.
  * 
  * @return int Palauttaa normaalin Malliluokkapohja::$VIRHE tai 
  * Malliluokkapohja::$OPERAATIO_ONNISTUI -arvon.
  * */
 function tallenna_muutokset()
 {
     $this->set_arvo(time(), Kokonaisuusolio::$sarakenimi_ed_muutos_sek);
     // Haetaan tietokannassa olevan olion ylakokonaisuuden_id, koska tämän
     // olion arvoja on jo saatettu muuttaa:
     $vanha = new Kokonaisuusolio($this->get_id(), $this->tietokantaolio);
     $ylakokonaisuuden_id_vanha = $vanha->getYlakokonaisuuden_id();
     $tallennus = parent::tallenna_muutokset();
     if ($tallennus === Malliluokkapohja::$OPERAATIO_ONNISTUI) {
         // Päivitetään on_lapsia, jos kokonaisuus on linkitetty johonkin muuhun:
         $ylakokonaisuuden_id = $this->getYlakokonaisuuden_id();
         if ($ylakokonaisuuden_id != $ylakokonaisuuden_id_vanha) {
             // Jos uusi yläkokonaisuus on olemassaolevan kokonaisuus,
             // varmistetaan, että sillä on lapsia.
             if ($ylakokonaisuuden_id > 0) {
                 $ylakok = new Kokonaisuusolio($ylakokonaisuuden_id, $this->tietokantaolio);
                 if ($ylakok->olio_loytyi_tietokannasta) {
                     $on_lapsia = 1;
                     $onnistuminen = $ylakok->tallenna_on_lapsia_muutos_kokon($on_lapsia);
                     if ($onnistuminen === Kokonaisuusolio::$VIRHE) {
                         $this->lisaa_virheilmoitus(Tekstit::$virheilm_kokon_muutostallennus_lapsimuutos_eiok);
                     }
                 } else {
                     $this->lisaa_virheilmoitus(Tekstit::$ilm_kokon_ei_loytynyt);
                 }
             }
             // Mahdollinen entinen yläkokonaisuus pitää myös tarkistaa, onko
             // sillä vielä lapsia vai ei.  Mutta vain jos id > 0, koska
             // muuten kokonaisuudella ei ennen ollut yläkokonaisuuksia.
             if ($ylakokonaisuuden_id_vanha > 0) {
                 $ylakok_vanha = new Kokonaisuusolio($ylakokonaisuuden_id_vanha, $this->tietokantaolio);
                 if ($ylakok_vanha->olio_loytyi_tietokannasta) {
                     if ($ylakok_vanha->on_lapsia_kokon()) {
                         $on_lapsia = 1;
                     } else {
                         $on_lapsia = 0;
                     }
                     $onnistuminen = $ylakok_vanha->tallenna_on_lapsia_muutos_kokon($on_lapsia);
                     if ($onnistuminen === Kokonaisuusolio::$VIRHE) {
                         $this->lisaa_virheilmoitus(Tekstit::$virheilm_kokon_muutostallennus_lapsimuutos_eiok);
                     }
                 } else {
                     $this->lisaa_virheilmoitus(Tekstit::$ilm_kokon_ei_loytynyt);
                 }
             }
         }
     }
     return $tallennus;
 }
 /**
  * Hakee kaikki yhteen kokonaisuuteen liittyvät tehtävät ja palauttaa ne
  * kauniisti html-koodina palauteoliossa.
  *
  * @param Palaute $palauteolio
  */
 function toteuta_nayta_tehtavat(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $id_kokon = $parametriolio->id_kokon;
     $omaid = $parametriolio->get_omaid();
     $kayttajan_valtuudet = $parametriolio->get_valtuudet();
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $tehtava_html = "";
     $sisalto = "";
     $palaa_nappi = "";
     /* Paluu kokonaisuuksiin. */
     $uusi_teht_nappi = "";
     // Asetetaan kieli, taso ja oppiaine tehtävän perusteella, kun urlista
     // tullaan:
     if ($palauteolio->naytto_urlin_mukaan()) {
         $parametriolio->set_naytto_urlin_mukaan(true);
         // Isäntäkokonaisuus haetaan tietokannasta, jos teht_id kunnollinen:
         $teht = $this->get_olio();
         if ($teht instanceof Tehtava && $teht->olio_loytyi_tietokannasta) {
             $kokon_id = $teht->getKokon_id();
             $kokon = new Kokonaisuusolio($kokon_id, $tietokantaolio);
             // Jos löytyi, asetetaan kieli, taso ja oppiaine, jottei tarvita
             // urlissa:
             if ($kokon instanceof Kokonaisuusolio && $kokon->olio_loytyi_tietokannasta) {
                 // Asetetaan nämä, voipi olla tarvetta:
                 $parametriolio->id_kokon = $kokon_id;
                 aseta_kieli_taso_ja_oppiaine($kokon->getKieli(), $kokon->getOppiaine(), $kokon->getTaso(), $parametriolio);
                 // Tekstien käännös.
                 Kielet::kaanna($parametriolio->get_kieli_id());
             }
         }
     }
     /* Uusia tehtäviä voivat lisätä (valtuuksiltaan) vähintään muokkaajat.
      * Kannattaa kyllä olla varovainen, jos muuttaa valtuuksia..
      */
     if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) {
         try {
             $onsubmit_funktionimi = "nayta_tehtavalomake";
             $onsubmit_parametrit = array($id_kokon);
             /* */
             $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $id_kokon . "&" . "uusi=1");
             $input_maaritteet = array('name' => Toimintonimet::$tehtavatoiminto, 'value' => Painikkeet::$tehtava_uusi_value);
             $uusi_teht_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
         } catch (Exception $poikkeus) {
             $sisalto .= "Uusi teht&auml;v&auml; -painike: " . $poikkeus->getMessage();
         }
     }
     try {
         $onsubmit_funktionimi = "nayta_kokonaisuudet";
         $onsubmit_parametrit = "";
         /* Ei parametreja */
         $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon={$id_kokon}");
         $input_maaritteet = array('name' => Toimintonimet::$kokonaisuustoiminto, 'value' => Painikkeet::$palaa_kokonaisuuksiin);
         $palaa_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
     } catch (Exception $poikkeus) {
         $sisalto .= "Palaa-painike: " . $poikkeus->getMessage();
     }
     $sisalto .= $uusi_teht_nappi;
     // Haetaan tehtävät:
     $tehtavat = $this->hae_tehtavat();
     if (empty($tehtavat)) {
         $palauteolio->set_ilmoitus(Tekstit::$tehtava_ilm_ei_loytynyt);
         $palauteolio->set_linkkihtml($palaa_nappi);
     } else {
         $laskuri = 0;
         // Tehtävän nro
         foreach ($tehtavat as $tehtava) {
             if ($tehtava instanceof Tehtava) {
                 $laskuri++;
                 $tehtava->setNro($laskuri);
                 $painikkeet = $this->luo_tehtavapainikkeet($tehtava->getId());
                 // Jos on kirjautunut käyttäjä, näytetään väripallolla, onko
                 // yksityinen vai julkinen:
                 if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) {
                     if ($tehtava->getNakyvyys() + 0 === Nakyvyys::$YKSITYINEN) {
                         $tehtava->setNakyvyysmerkkiPrivate();
                     } else {
                         $tehtava->setNakyvyysmerkkiPublic();
                     }
                 }
                 $sisalto .= $this->tehtavanakymat->tulosta_tehtava($tehtava, $omaid, $painikkeet);
             }
         }
         // Haetaan tehtävälinkit, jos tehtäviä löytynyt. Lisätään
         // myös paluupainike linkkien eteen.
         $linkkihtml = $this->hae_tehtavalinkit($parametriolio);
         if ($linkkihtml === Tekstit::$tehtava_ilm_ei_loytynyt) {
             $palauteolio->set_linkkihtml($palaa_nappi);
         } else {
             $palauteolio->set_linkkihtml($palaa_nappi . $linkkihtml);
         }
     }
     /* Tämä ottaa palauteolion samalla käyttöön */
     $palauteolio->set_sisalto($sisalto);
     // Haetaan kokonaisuuden tiedot:
     $kokon = new Kokonaisuusolio($id_kokon, $tietokantaolio);
     if ($kokon->olio_loytyi_tietokannasta) {
         $kokon_otsikko = $kokon->getOtsikko();
     } else {
         $kokon_otsikko = "?";
     }
     /* Lisätään otsikkotieto: */
     $palauteolio->set_otsikkotarkennus($kokon_otsikko);
     $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA);
     // Kieli- yms valikot pois näkyvistä:
     $palauteolio->set_valikkonaytto(false);
     // Fixed linkit -näkymä:
     $palauteolio->set_nayttotapa(Html_koodi::$sisaltoelem_fixed);
     return $palauteolio;
 }
 /**
  * Toteuttaa kokonaisuuden poistotoiminnon ellei kokonaisuudella ole lapsia.
  * Jos on, käsketään poistamaan ensin lapset. Jos kokonaisuus poistetaan,
  * tarkistetaan sen mahdollisen yläkokonaisuuden lapsekkuus.
  *
  * HUOM! On_lapsia kenttä tietokannassa aiheutti tästä aika monimutkaisen.
  * Ajattelin sen kuitenkin kannattavan, koska se vähentää suuresti
  * tietokantahakuja usein toistuvissa hauissa. 
  * 
  * Yllä mainitusta syystä on olennaisen tärkeää käyttää tätä metodia
  * kokonaisuuden poistamiseen.
  *
  * @return Palaute $palauteolio
  */
 function toteuta_poista(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $onnistuminen = Palaute::$VIRHEKOODI_YLEINEN;
     $id_kokon = $parametriolio->get_id_kokon();
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $palauteolio = new Palaute();
     $palaute = "";
     // Tämä tulee palauteolion sisällöksi.
     $poistettava = new Kokonaisuusolio($id_kokon, $tietokantaolio);
     //================== Edellisen kokonaisuuden id_n haku =================
     // Kun kokonaisuus poistetaan, pitää sitä edeltävän kokonaisuuden id
     // hakea, jotta se näätetään ensi kerralla. Ellei edellistä ole,
     // näytetään seuraava.
     $ed_id = Kokonaisuusolio::$kokon_ei_maaritelty;
     $oppiaineindeksi = $parametriolio->oppiaine_kokon;
     $taso = $parametriolio->taso_kokon;
     $kieli_id = $parametriolio->kieli_id;
     $omaid = $parametriolio->get_omaid();
     $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ä:
     $kokonaisuusoliot = $this->hae_kokonaisuusoliopuu($kokonaisuustaulukko, $otsikkomerkinta_alussa, $otsikkotaso_alussa, $kieli_id, $oppiaineindeksi, $taso, $ylakokonaisuuden_id, $tietokantaolio, $omaid);
     // ASetetaan edellisten ja seuraavien kokonaisuuksien id:t:
     $this->aseta_ed_ja_seur_idt_kokonaisuuksiin($kokonaisuusoliot);
     if (!empty($kokonaisuusoliot)) {
         foreach ($kokonaisuusoliot as $kokonolio) {
             if ($kokonolio instanceof Kokonaisuusolio && $kokonolio->get_id() == $id_kokon) {
                 $ed_id = $kokonolio->getEdellisenId_kaikista();
                 if ($ed_id == Kokonaisuusolio::$kokon_edellista_ei_ole) {
                     $ed_id = $kokonolio->getSeuraavanId_kaikista();
                 }
             }
         }
     }
     //=========================================================================
     if ($poistettava->olio_loytyi_tietokannasta) {
         // Poistometodi tarkastaa, onko lapsia ja huolehtii on_lapsia-arvoista.
         $palaute = $poistettava->poista();
         if ($palaute === Malliluokkapohja::$OPERAATIO_ONNISTUI) {
             // Poistetaan mahdolliset tyhjään osoittavat kooste-elementit:
             if (Elementti::poista_elementit($tietokantaolio, Oliotyyppi::$KOKONAISUUS, $id_kokon) === Malliluokkapohja::$OPERAATIO_ONNISTUI) {
                 $palaute = Tekstit::$ilm_kokon_poisto_ok;
                 //Aktiivisuusmerkintä:
                 $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $tietokantaolio, time(), Aktiivisuus::$KOKONAISUUDEN_POISTO);
                 if (!$aktiivisuuspalaute) {
                     $this->lisaa_virheilmoitus(Tekstit::$virheilm_aktiivisuuden_tallennus_eiok);
                 } else {
                     $onnistuminen = Palaute::$VIRHEKOODI_KAIKKI_OK;
                 }
             } else {
                 $palaute = Tekstit::$kooste_virheilm_elementtien_poistosiivous_ei_ok;
             }
         } else {
             $palaute = Tekstit::$virheilm_kokonaisuuden_poisto;
         }
     } else {
         $palaute = Tekstit::$ilm_kokon_poisto_eiok_kokonaisuutta_ei_loytynyt;
     }
     $parametriolio->set_id_kokon($ed_id);
     // Jotta osaa näyttää edellisen.
     $this->toteuta_nayta($palauteolio);
     $palauteolio->set_ilmoitus($palaute);
     $palauteolio->set_virhekoodi($onnistuminen);
     $palauteolio->set_valikkonaytto(true);
     $palauteolio->nayta_kiintolinkit();
     return $palauteolio;
 }
Example #6
0
     } else {
         if ($type === Oliotyyppi::$KOKONAISUUS) {
             $kokon = new Kokonaisuusolio($id, $tietokantaolio);
             $html = $kokonnakymat->tulosta_esikatselu($kokon, $parametriolio);
         } else {
             $html = "Unknown type=" . $type . " and id=" . $id;
         }
     }
     //echo $output = str_replace(array("\r\n", "\r", "\n"), "", $html);
     return $html;
 }
 //==========================================================================
 //==========================================================================
 if ($kysymys == "nayta_kokonesikatselu") {
     // Luodaan uusi Kokonaisuusolio tietojen perusteella:
     $kokon = new Kokonaisuusolio(Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY, $tietokantaolio);
     $kokon->setOtsikkotaso(2);
     $kokon->set_id($parametriolio->id_kokon);
     $html = $kokonaisuusnakymat->tulosta_esikatselu($kokon, $parametriolio);
     echo $html;
 } else {
     if ($kysymys == "nayta_tehtavan_esikatselu") {
         $otsikko = $parametriolio->otsikko_teht;
         $tehtavananto = $parametriolio->tehtavananto_teht;
         $vaikeustaso = $parametriolio->vaikeustaso_teht;
         // Luodaan uusi Tehtäväolio tietojen perusteella:
         $kuvakansion_os = Kuvat::$latauskansion_osoite;
         $tk_tehtava = "";
         $teht = new Tehtava(Tehtava::$MUUTTUJAA_EI_MAARITELTY, $tietokantaolio);
         // HUOM! Normaali set_arvo-metodi aiheuttaa sitkeät \n -merkit esikatseluun!
         $teht->set_arvo_kevyt($otsikko, Tehtava::$sarakenimi_otsikko);
 /**
  * Palauttaa yhden koostelomakkeessa otsikon "valitut elementit" alla
  * olevan valinnan html-koodin. Valinnalle annetaan id arvoksi vastaavan
  * olion id, jonka eteen on lisatty teksti "elemval_kokon_", "elemval_teht_"
  * tai "elemval_ratk_", jotta oikea olio pystytään löytämään (id:t voivat
  * olla samoja eri olioilla).
  * 
  * HUOM! Jos parametri $divi_tagit_mukaan on arvoltaan false, ei
  * div-tageja liitetä sisällön ympärille. Tätä tarvitaan, kun ajaxin kautta
  * tuodaan koodia sisään.
  * 
  * 
  * @param type $oliotyyppi
  * @param type $id_olio
  * @param type $divi_tagit_mukaan
  * @param Tietokantaolio $tietokantaolio
  * @return type
  */
 public function luo_valitut_elem_divi($oliotyyppi, $id_olio, $divi_tagit_mukaan, $tietokantaolio)
 {
     // Every div containing a choice has this same class value:
     $class_name = "chosen_elements_div";
     if ($oliotyyppi + 0 === Oliotyyppi::$KOKONAISUUS) {
         $olio = new Kokonaisuusolio($id_olio, $tietokantaolio);
         $otsikko = Tekstit::$Kokonaisuus_short . " " . $olio->getOtsikko();
     } else {
         if ($oliotyyppi + 0 === Oliotyyppi::$TEHTAVA) {
             $olio = new Tehtava($id_olio, $tietokantaolio);
             $otsikko = Tekstit::$Tehtava_short . ": " . $olio->getOtsikko();
         } else {
             if ($oliotyyppi + 0 === Oliotyyppi::$RATKAISU) {
                 $olio = new Ratkaisu($id_olio, $tietokantaolio);
                 $otsikko = Tekstit::$Ratkaisu_short . " :" . $olio->getVastaus();
             } else {
                 $otsikko = Tekstit::$tuntematon;
                 $olio = null;
             }
         }
     }
     $valittuelem_id = $this->luo_valitun_elementin_id($olio);
     $valittuelem_valintaruutu = $this->luo_valittujen_elem_listan_valintaruutu($olio);
     if ($divi_tagit_mukaan) {
         $palaute = Html::luo_div($otsikko . $valittuelem_valintaruutu, array(Attr::id($valittuelem_id), Attr::classs($class_name), Attr::onclick("kooste_set_elem_place", array($valittuelem_id))));
     } else {
         $palaute = $otsikko . $valittuelem_valintaruutu;
     }
     return $palaute;
 }
Example #8
0
 /**
  * Etsii tietokannasta ja palauttaa olion näkyvyysarvon. Oletuspalautusarvo
  * on Nakyvyys::$YKSITYINEN. Muita arvoja tutkitaan vain, jos kyseinen
  * olio löytyy tietokannasta.
  * @param type $kohdeolio_id
  * @param type $kohdeoliotyyppi
  * @param type $tietokantaolio
  */
 public static function hae_nakyvyys($kohdeolio_id, $kohdeoliotyyppi, $tietokantaolio)
 {
     $nakyvyys = Nakyvyys::$YKSITYINEN;
     if ($kohdeoliotyyppi + 0 === Oliotyyppi::$KOKONAISUUS) {
         $kohde = new Kokonaisuusolio($kohdeolio_id, $tietokantaolio);
         if ($kohde->olio_loytyi_tietokannasta) {
             $nakyvyys = $kohde->getNakyvyys();
         }
     } else {
         if ($kohdeoliotyyppi + 0 === Oliotyyppi::$TEHTAVA) {
             $kohde = new Tehtava($kohdeolio_id, $tietokantaolio);
             if ($kohde->olio_loytyi_tietokannasta) {
                 $nakyvyys = $kohde->getNakyvyys();
             }
         } else {
             if ($kohdeoliotyyppi + 0 === Oliotyyppi::$RATKAISU) {
                 $kohde = new Ratkaisu($kohdeolio_id, $tietokantaolio);
                 if ($kohde->olio_loytyi_tietokannasta) {
                     $nakyvyys = $kohde->getNakyvyys();
                 }
             } else {
                 if ($kohdeoliotyyppi + 0 === Oliotyyppi::$KOOSTE) {
                     $kohde = new Kooste($kohdeolio_id, $tietokantaolio);
                     if ($kohde->olio_loytyi_tietokannasta) {
                         $nakyvyys = $kohde->get_arvo(Kooste::$sarakenimi_nakyvyys);
                     }
                 } else {
                     if ($kohdeoliotyyppi + 0 === Oliotyyppi::$ELEMENTTI) {
                         $kohde = new Elementti($kohdeolio_id, $tietokantaolio);
                         if ($kohde->olio_loytyi_tietokannasta) {
                             $nakyvyys = $kohde->get_arvo(Elementti::$sarakenimi_nakyvyys);
                         }
                     } else {
                     }
                 }
             }
         }
     }
     return $nakyvyys;
 }
 /**
  * Hakee kaikki yhteen tehtävään liittyvät ratkaisut ja palauttaa ne
  * kauniisti html-koodina palauteoliossa.
  *
  * @param Palaute $palauteolio
  */
 function toteuta_nayta(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $id_kokon = $parametriolio->id_kokon;
     $id_teht = $parametriolio->id_teht;
     $omaid = $parametriolio->get_omaid();
     $kayttajan_valtuudet = $parametriolio->get_valtuudet();
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $kuvakansion_os = Kuvat::$latauskansion_osoite;
     $paluunappi = "";
     /* Palauttaa käyttäjän tehtävänäkymään. */
     $ratkaisu_html = "";
     $uusi_ratkaisu_nappi = "";
     /*  */
     $tehtavanakymat = new Tehtavanakymat();
     /***************************************************************************/
     // Haetaan ensin tehtävä, jotta sen voi nähdä samalla: ********************/
     $tehtava_html = "";
     $teht = new Tehtava($id_teht, $tietokantaolio);
     if (!$teht->olio_loytyi_tietokannasta) {
         $tehtava_html = Tekstit::$tehtava_ilm_ei_loytynyt;
     } else {
         $tehtava_html .= $tehtavanakymat->tulosta_tehtava_ilman_painikkeita($omaid, $teht);
     }
     /**************************************************************************/
     // Asetetaan kieli, taso ja oppiaine kokonaisuuden perusteella, kun urlista
     // tullaan. Ratkaisun avulla löydetään tehtävä ja sen avulla kokonaisuus:
     if ($palauteolio->naytto_urlin_mukaan()) {
         $parametriolio->set_naytto_urlin_mukaan(true);
         // Isäntäkokonaisuus haetaan tietokannasta, jos ratk_id kunnollinen:
         $ratk = $this->get_olio();
         if ($ratk instanceof Ratkaisu && $ratk->olio_loytyi_tietokannasta) {
             $teht_id = $ratk->getTeht_id();
             $teht = new Tehtava($teht_id, $tietokantaolio);
             if ($teht->olio_loytyi_tietokannasta) {
                 $kokon_id = $teht->getKokon_id();
             }
             // Lopulta päästään käsiksi kokonaisuuteen:
             $kokon = new Kokonaisuusolio($kokon_id, $tietokantaolio);
             // Jos löytyi, asetetaan kieli, taso ja oppiaine, jottei tarvita
             // urlissa:
             if ($kokon instanceof Kokonaisuusolio && $kokon->olio_loytyi_tietokannasta) {
                 // Asetetaan nämä, voipi olla tarvetta:
                 $parametriolio->id_kokon = $kokon_id;
                 $parametriolio->id_teht = $teht_id;
                 aseta_kieli_taso_ja_oppiaine($kokon->getKieli(), $kokon->getOppiaine(), $kokon->getTaso(), $parametriolio);
                 // Tekstien käännös.
                 Kielet::kaanna($parametriolio->get_kieli_id());
             }
         }
     }
     //=====================================================================
     try {
         $paluunappi = $this->tehtavanakymat->button_gobackto_all_exercises($id_teht);
     } catch (Exception $poikkeus) {
         $tehtava_html .= "Palaa-painike: " . $poikkeus->getMessage();
     }
     // Uusia ratkaisuja saavat tehdä ne, jotka lisätä tehtäviäkin:
     if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) {
         // Uusi_ratkaisu_painike:
         $onsubmit_funktionimi = "nayta_ratkaisulomake";
         $onsubmit_parametrit = array($id_teht);
         /* Tehtävän id */
         $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_teht=" . $id_teht . "&id_kokon=" . $id_kokon . "&uusi=1");
         $input_maaritteet = array('name' => Toimintonimet::$tehtavatoiminto, 'value' => Painikkeet::$ratkaisu_uusi_value);
         $uusi_ratkaisu_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
     }
     $ratkaisu_html .= $paluunappi . $tehtava_html;
     $ratkaisu_html .= "<h3>" . Tekstit::$ratkaisu_ratkaisut_valiotsikko . "</h3>";
     $ratkaisu_html .= $uusi_ratkaisu_nappi;
     $ratkaisut = $this->hae_ratkaisut($id_teht);
     if (empty($ratkaisut)) {
         $palauteolio->set_ilmoitus(Tekstit::$ratkaisu_ilm_ei_loytynyt);
     } else {
         foreach ($ratkaisut as $ratkaisu) {
             if ($ratkaisu instanceof Ratkaisu) {
                 // Jos on kirjautunut käyttäjä, näytetään väripallolla, onko
                 // yksityinen vai julkinen:
                 if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) {
                     if ($ratkaisu->getNakyvyys() + 0 === Nakyvyys::$YKSITYINEN) {
                         $ratkaisu->setNakyvyysmerkkiPrivate();
                     } else {
                         $ratkaisu->setNakyvyysmerkkiPublic();
                     }
                 }
                 $painikkeet = $this->luo_ratkaisupainikkeet($ratkaisu->getId());
                 $ratkaisu_html .= $this->ratkaisunakymat->tulosta_ratkaisu($id_kokon, $ratkaisu, $omaid, $painikkeet);
             } else {
                 $this->lisaa_virheilmoitus(Tekstit::$ratkaisu_ilm_ei_loytynyt);
             }
         }
     }
     /* Tämä ottaa palauteolion samalla käyttöön */
     $palauteolio->set_sisalto($ratkaisu_html);
     $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_RATKAISU);
     // Kieli- yms valikot pois näkyvistä:
     $palauteolio->set_valikkonaytto(false);
     return $palauteolio;
 }
 /**
  * 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;
 }
Example #11
0
 static function hae_tehtavat_koostelomake($id_kokon, $tietokantaolio, $omaid)
 {
     $kokon = new Kokonaisuusolio($id_kokon, $tietokantaolio);
     $teht = array();
     $on_kirjautunut = false;
     if (Henkilo::on_kirjautunut($omaid, $tietokantaolio)) {
         $on_kirjautunut = true;
     }
     if (!$on_kirjautunut) {
         $teht = Tehtava::hae_kokonaisuuden_julkiset_tehtavat($id_kokon, $tietokantaolio);
     } else {
         $ehdokkaat = Tehtava::hae_kokonaisuuden_tehtavat($id_kokon, $tietokantaolio);
         foreach ($ehdokkaat as $tehtava) {
             if ($tehtava instanceof Tehtava) {
                 if ($tehtava->getNakyvyys() + 0 === Nakyvyys::$JULKINEN) {
                     array_push($teht, $tehtava);
                 } else {
                     if ($tehtava->getNakyvyys() + 0 === Nakyvyys::$VAIN_KOOSTEESSA || $tehtava->getNakyvyys() + 0 === Nakyvyys::$YKSITYINEN) {
                         // Jos näkyvyys ei ole julkinen, tarkistetaan olion
                         // kohdeoikeudet.
                         /*======================== käyttäjän oikeudet ====*/
                         $kohdeoikeudet = Henkilo::hae_kayttajan_kohdeoikeudet($kokon->getHenkiloId(), $omaid, Oliotyyppi::$TEHTAVA, $kokon->get_id(), $tietokantaolio);
                         /*===============================================*/
                         // Jos on vähintään muokkausoikeudet, näytetään
                         // linkki sopivasti muotoiltuna:
                         if ($kohdeoikeudet >= Lisavaltuudet::$SAA_NAHDA_EI_MUOKATA_EI_POISTAA) {
                             array_push($teht, $tehtava);
                         }
                     } else {
                         // Vain otsikkollisia ei näytetä, koska ei järkeä.
                     }
                 }
             }
         }
     }
     return $teht;
 }