/**
  * Palauttaa taulukon, jonka avulla henkilöitä voidaan suodattaa tai
  * suodatuksia poistaa. 
  * 
  * @param Henkilo $omistaja
  * @param type $kohdehenkilo
  * @param type $paluupainike
  * @return type
  */
 public function nayta_suodatinlomake($omistaja, $kohdehenkilot, $paluupainike)
 {
     $maar_array = array();
     // Kun ei määritteitä tarvita.
     //======================================================================
     // Sitten taulukko kasaan, Rivi 1:
     $sisalto = Html::luo_tablerivi(Html::luo_tablesolu_otsikko(Kayttajatekstit::$suodattimet_lomaketeksti_otsikko, array(Maarite::colspan(2))), $maar_array);
     // Rivi 2:
     $sisalto .= Html::luo_tablerivi(Html::luo_tablesolu_otsikko(Kayttajatekstit::$suodattimet_lomaketeksti_omat_suodattimet, array()) . Html::luo_tablesolu_otsikko(Kayttajatekstit::$suodattimet_lomaketeksti_kohdehenkilo, array()), $maar_array);
     // Suodatinrivit (käyttäjä itse ei ole mukana):
     foreach ($kohdehenkilot as $henkilo) {
         if ($henkilo instanceof Henkilo) {
             // Katsotaan, onko kohde jo suodatettu:
             if ($henkilo->getSuodatus_kohde() == Henkilo::$suodatus_ON) {
                 $valittu = Maarite::checked();
             } else {
                 $valittu = "";
             }
             // Katsotaan, suodattaako kohde jo käyttäjän:
             if ($henkilo->getSuodatus_lahde() == Henkilo::$suodatus_ON) {
                 $vari = Html::luo_img(array(Maarite::src("kuvat/ympyra_pun.png"), Maarite::alt("Red circle"), Maarite::title(Kayttajatekstit::$suodattimet_lomaketeksti_punapallo_title)));
             } else {
                 $vari = Html::luo_img(array(Maarite::src("kuvat/ympyra_vihr.png"), Maarite::alt("Green circle"), Maarite::title(Kayttajatekstit::$suodattimet_lomaketeksti_viherpallo_title)));
             }
             $sisalto .= Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_checkbox(array($valittu, Maarite::id("suodatus" . $henkilo->get_id()), Maarite::onclick("suodata", array($omistaja->get_id(), $henkilo->get_id(), Maarite::js_this_juttu("this.piip"))))), array(Maarite::style("text-align:center"))) . Html::luo_tablesolu(Html::luo_span($henkilo->get_arvo(Henkilo::$sarakenimi_etunimi) . " " . $vari, array(Maarite::style("white-space:nowrap"))), array(Maarite::style("text-align:left"))), $maar_array);
         }
     }
     // Lisätään vielä paluupainike:
     $sisalto .= Html::luo_tablerivi(Html::luo_tablesolu_otsikko($paluupainike, array(Maarite::colspan(2))), $maar_array);
     $taulukkohtml = Html::luo_table($sisalto, array(Maarite::id("suodatuslomake")));
     return $taulukkohtml;
 }
 public function testaa_suodattimen_muokkaus_ja_poisto()
 {
     //==================== Suodattimen muokkaus ============================
     $this->lisaa_lihava_kommentti("Testataan muokkausta. Kokeillaan ensin" . " normaalimuokkausta ja sitten sellaista, jossa tulisi " . "tuplasuodatin.");
     // Haetaan tietokannasta ihmisen id, joka muutetaan suodattimelle.
     // Oletus on että tietokannassa on jp!
     $taulunimi = "henkilot";
     $sarakenimi = "kayttajatunnus";
     $hakuarvo = "jp";
     $haku = $this->tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
     if ($haku != Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
         $uusi = $haku->id;
     }
     $this->suodatin1->set_arvo($uusi, Suodatin::$sarakenimi_vastapuoli_id);
     $muutos = $this->suodatin1->tallenna_muutokset();
     if ($muutos == Suodatin::$OPERAATIO_ONNISTUI) {
         $this->lisaa_kommentti("Muutos ok!");
     } else {
         $this->lisaa_virheilmoitus("Virhe muutoksen tallennuksessa! <br/>" . $this->suodatin1->tulosta_virheilmoitukset());
     }
     $this->lisaa_kommentti("Kokeillaan muuttaa jo olemassaolevaksi");
     $this->suodatin1->set_arvo($this->henkilo2->get_id(), Suodatin::$sarakenimi_omistaja_id);
     $this->suodatin1->set_arvo($this->henkilo1->get_id(), Suodatin::$sarakenimi_vastapuoli_id);
     $muutos = $this->suodatin1->tallenna_muutokset();
     if ($muutos == Suodatin::$OPERAATIO_ONNISTUI) {
         $this->lisaa_virheilmoitus("Virhe: muutoksen tallennuksessa!");
     } else {
         $this->lisaa_kommentti("Oikein! Huono muutos ei onnistunut! <br/>" . "Ilmoitukset: " . $this->suodatin1->tulosta_virheilmoitukset());
     }
     //======================= Poisto ===================================
     $this->lisaa_lihava_kommentti("Testataan poistoa. Yritan poistaa" . " suodatin2:n");
     $poisto = $this->suodatin2->poista();
     if ($poisto == Suodatin::$OPERAATIO_ONNISTUI) {
         // Tarkistetaan tietokanta:
         $taulunimi = Suodatin::$taulunimi;
         $sarakenimi = Suodatin::$SARAKENIMI_ID;
         $hakuarvo = $this->suodatin2->get_id();
         $haku = $this->tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
         if ($haku == Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
             $this->lisaa_kommentti("Suodattimen poisto ok!");
         } else {
             $this->lisaa_virheilmoitus("Suodattimen poisto ei onnistunut!");
         }
     } else {
         $this->lisaa_virheilmoitus("Suodattimen poisto ei onnistunut!");
     }
 }
Example #3
0
 /**
  * Rakentajametodi luokalle. Parametreina annetaan käyttäjän id
  * ja tietokantaolio.
  * 
  * Täällä tarkistetaan vielä se, että käyttäjä on olion luoja (tai admin), 
  * koska vain hänellä on oikeus muuttaa oliota koskevia lisävaltuuksia.
  * 
  * @param int $id Lisavaltuus-luokan olion tunniste. Ellei ole tiedossa,
  * syötetään arvo Lisavaltuudet::$MUUTTUJA_EI_KAYTOSSA.
  * @param Tietokantaolio $tietokantaolio 
  */
 function __construct($id, $tietokantaolio)
 {
     $tietokantasolut = array(new Tietokantasolu(Lisavaltuudet::$SARAKENIMI_ID, true), new Tietokantasolu(Lisavaltuudet::$sarakenimi_henkilo_id, true), new Tietokantasolu(Lisavaltuudet::$sarakenimi_olio_id, true), new Tietokantasolu(Lisavaltuudet::$sarakenimi_omistaja_id, true), new Tietokantasolu(Lisavaltuudet::$sarakenimi_oliotyyppi, true), new Tietokantasolu(Lisavaltuudet::$sarakenimi_valtuus, true));
     $taulunimi = Lisavaltuudet::$taulunimi;
     parent::__construct($tietokantaolio, $id, $taulunimi, $tietokantasolut);
     // TArkistetaan, että käyttäjän yleisvaltuustaso on vähintään
     // tehtävien lisäys, jos lisävaltuus löytynyt tietokannasta:
     if ($this->olio_loytyi_tietokannasta) {
         if (Henkilo::hae_henkilon_valtuusarvo($this->get_omistaja_id(), $this->tietokantaolio) >= Valtuudet::$TEHTAVA_LISAYS) {
             $this->omistajan_valtuustaso_ok = true;
         } else {
             $this->omistajan_valtuustaso_ok = false;
         }
     } else {
         $this->omistajan_valtuustaso_ok = false;
     }
 }
Example #4
0
 /**
  * Hakee käyttäjän kaikki mahdolliset oikeudet (myös lisäoikeudet tarkistetaan)
  * tähän olioon. Palauttaa Lisävaltuusarvon
  * (esim. Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA).
  * 
  * Virheen tai muun poikkeavuuden sattuessa palauttaa arvon
  * Lisavaltuudet::$EI_LISAVALTUUKSIA, joka vastaa kirjautumattoman
  * käyttäjän oikeuksia silloin, kun olio ei ole julkinen.
  * 
  * HUOM: samanniminen metodi on (ja pitää olla) kaikissa luokissa,
  * joiden sisältöä näytetään käyttäjälle. Kaikissa on myös sama parametri. 
  * Tällöin voidaan metodia kutsua, vaikka ei tiedetä, mitä näistä luokista 
  * olio edustaa.
  * 
  */
 public function hae_kayttajan_oikeudet($omaid)
 {
     $kohdeoikeudet = Lisavaltuudet::$EI_LISAVALTUUKSIA;
     // Kirjautumaton käyttäjä.
     // Tarkistetaan näkyvyys-asetys. Jos sen arvo on julkinen, annetaan
     // katseluoikeus jo heti kättelyssä.
     $nakyvyysoikeudet = Lisavaltuudet::$EI_LISAVALTUUKSIA;
     $nakyvyys = $this->getNakyvyys() + 0;
     if ($nakyvyys === Nakyvyys::$JULKINEN) {
         $nakyvyysoikeudet = Lisavaltuudet::$SAA_NAHDA_EI_MUOKATA_EI_POISTAA;
     }
     // Tarkistetaan ensin, onko käyttäjä kirjautunut:
     if (Henkilo::on_kirjautunut($omaid, $this->tietokantaolio)) {
         $tietokantaolio = $this->tietokantaolio;
         $oliotyyppi = Oliotyyppi::$KURSSITIETO;
         $olion_id = $this->get_id();
         $omistaja_id = $this->get_arvo(Kurssitieto::$sarakenimi_henkilo_id);
         // Jos kaikki näyttää olevan kunnossa, haetaan oikeuksia.
         if ($olion_id != Kurssitieto::$MUUTTUJAA_EI_MAARITELTY) {
             $kohdeoikeudet = Henkilo::hae_kayttajan_kohdeoikeudet($omistaja_id, $omaid, $oliotyyppi, $olion_id, $tietokantaolio);
         }
     }
     return max(array($kohdeoikeudet, $nakyvyysoikeudet));
 }
 /**
  * Palauttaa tiettyihin (tietyn tehtävän) ratkaisujen html-koodin, joka
  * sisältää tarvittavat rakenteet ratkaisujen piilottamista ja näyttämistä
  * varten.
  * @param type $ratkaisut
  * @param boolean $tulostus True, jos halutaan tulostushtml. Muuten normi.
  * @param int $omaid Käyttäjän tunniste.
  * @param Elementti $tehtavaelem Elementti-luokan olio. Ratkaisuja ei
  * käsitellä kiinteinä elementteinä, vaan pikemminkin tehtävä-elementin
  * ominaisuutena, joka haetaan dynaamisesti tietokannasta tarvittaessa.
  */
 public function luo_tehtavan_ratkaisut_koodi($ratkaisut, $tulostus, $omaid, $tehtavaelem)
 {
     $id_teht = "_tuntematon";
     $class_arvo = "";
     $lask = 0;
     $pal = "";
     foreach ($ratkaisut as $ratk) {
         if ($ratk instanceof Ratkaisu) {
             $painikkeet = array();
             // Ei painikkeita nyt.
             // Haetaan käyttäjän oikeudet:
             $kohdeoikeudet = Henkilo::hae_kayttajan_kohdeoikeudet($ratk->getHenkiloId(), $omaid, Oliotyyppi::$RATKAISU, $ratk->getId(), $this->get_tietokantaolio());
             // Lisätään muutospainike vain, jos oikeudet sallivat eikä tulostus:
             if (!$tulostus) {
                 if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) {
                     if ($ratk->getNakyvyys() + 0 === Nakyvyys::$JULKINEN) {
                         $ratk->setNakyvyysmerkkiPublic();
                     } else {
                         $ratk->setNakyvyysmerkkiPrivate();
                     }
                     $muokkausnappi = $this->ratkaisunakymat->luo_muokkauspainike($ratk, $tehtavaelem);
                     array_push($painikkeet, $muokkausnappi);
                 }
             }
             if ($lask === 0) {
                 $id_teht = $ratk->getTeht_id();
             }
             if ($tulostus) {
                 $pal .= $this->ratkaisunakymat->luo_koostenakyma_tulostus($ratk, $painikkeet);
                 $class_arvo = "elemtehtavan_ratkaisut_tulostus";
             } else {
                 $pal .= $this->ratkaisunakymat->luo_koostenakyma($ratk, $painikkeet);
                 $class_arvo = "elemtehtavan_ratkaisut";
             }
         }
     }
     $palaute = Html::luo_div($pal, array(Attr::classs($class_arvo), Attr::style("display:none"), Attr::id("ratkaisut_teht" . $id_teht)));
     return $palaute;
 }
 /**
  * Näyttää perusnäkymän sekä kirjautuneelle että kirjautumattomalle käyttäjälle.
  * Opettajalle näkymä on erilainen sisältäen enemmän toimintoja.
  * @param Palaute $palauteolio Vakio palauteolio näkymätietojen säilyttämiseen.
  */
 public function toteuta_nayta(&$palauteolio)
 {
     $sisalto = "";
     $param = $this->get_parametriolio();
     $lang_id = $param->kieli_id;
     if (Henkilo::on_kirjautunut($param->get_omaid(), $this->get_tietokantaolio())) {
         $teacher = new Henkilo($param->get_omaid(), $this->get_tietokantaolio());
         $myCourseInfos = $this->get_all_her_courses($teacher->get_id());
         $sisalto = $this->palautusnakymat->show_teacher_view($teacher, $myCourseInfos, $lang_id);
     } else {
         $sisalto = $this->palautusnakymat->show_submit_form($lang_id, $this->public_courses_found());
     }
     $palauteolio->set_sisalto($sisalto);
 }
 public function toteuta_nayta_lisavaltuuslomake(&$palaute)
 {
     $tietokantaolio = $this->get_tietokantaolio();
     $parametriolio = $this->get_parametriolio();
     $omistaja = new Henkilo($parametriolio->lv_omistaja_id, $tietokantaolio);
     $omistajan_nimi = $omistaja->get_arvo(Henkilo::$sarakenimi_etunimi) . " " . $omistaja->get_arvo(Henkilo::$sarakenimi_sukunimi);
     // Luodaan ensin valikot:
     // Henkilövalikko: =====================================================
     $name_arvo = Kayttajakontrolleri::$lv_name_kohdehenkilo_id;
     $minimivaltuus = Valtuudet::$TEHTAVA_LISAYS;
     $taulunimi = Henkilo::$taulunimi;
     $henkilot = Henkilo::hae_valtuutetut_henkilot($minimivaltuus, $taulunimi, $tietokantaolio);
     $arvot = array();
     // Henkilön id-arvot.
     $nimet = array();
     // Henkilöiden nimet
     // haetaan arvot ja nimet henkilöiltä, muttei omistajalta:
     foreach ($henkilot as $henkilo) {
         if ($henkilo instanceof Henkilo && $henkilo->get_id() != $omistaja->get_id()) {
             $nimi = $henkilo->get_arvo(Henkilo::$sarakenimi_etunimi) . " " . $henkilo->get_arvo(Henkilo::$sarakenimi_sukunimi);
             array_push($nimet, $nimi);
             array_push($arvot, $henkilo->get_arvo(Henkilo::$SARAKENIMI_ID));
         }
     }
     $select_maaritteet = array(Attr::name($name_arvo));
     $option_maaritteet = array();
     $oletusvalinta_arvo = "";
     $otsikko = "";
     $henkilovalikko = Html::luo_pudotusvalikko_uusi($arvot, $nimet, $select_maaritteet, $option_maaritteet, $oletusvalinta_arvo, $otsikko);
     //======================================================================
     // Kohdevalikko:
     $name_arvo = Kayttajakontrolleri::$lv_name_vaikutusalue;
     $arvot = Lisavaltuudet::hae_vaikutusaluearvot();
     $nimet = Lisavaltuudet::hae_vaikutusaluekuvaukset();
     $select_maaritteet = array(Attr::name($name_arvo));
     $option_maaritteet = array();
     $oletusvalinta_arvo = Lisavaltuudet::$vain_nykyinen_olio;
     $otsikko = "";
     $kohdevalikko = Html::luo_pudotusvalikko_uusi($arvot, $nimet, $select_maaritteet, $option_maaritteet, $oletusvalinta_arvo, $otsikko);
     //======================================================================
     // Oikeusvalikko:
     $name_arvo = Kayttajakontrolleri::$lv_name_oikeudet;
     $arvot = Lisavaltuudet::hae_lisavaltuusarvot();
     $nimet = Lisavaltuudet::hae_lisavaltuuskuvaukset();
     $select_maaritteet = array(Attr::name($name_arvo));
     $option_maaritteet = array();
     $oletusvalinta_arvo = Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA;
     $otsikko = "";
     $oikeusvalikko = Html::luo_pudotusvalikko_uusi($arvot, $nimet, $select_maaritteet, $option_maaritteet, $oletusvalinta_arvo, $otsikko);
     //===================== painikkeet ====================================
     $submit_painike = Html::luo_input(array(Attr::type("submit"), Attr::name(Toimintonimet::$lv_toiminto), Attr::value(Kayttajatekstit::$lisavaltuudet_lomaketeksti_painike_tallenna)));
     $paluupainike = Html::luo_input(array(Attr::type("submit"), Attr::name(Toimintonimet::$lv_toiminto), Attr::value(Kayttajatekstit::$lisavaltuudet_lomaketeksti_painike_takaisin)));
     //===================== painikkeet ====================================
     // Actionkyselymuuttujien arvot. Näin saadaan tiedot kulkemaan
     // lomakkeeseen ja siitä eteenpäin.
     $actionkyselyarvot = array($parametriolio->id_kokon, $parametriolio->oppiaine_kokon, $parametriolio->kieli_id, $parametriolio->lv_kohde_id, $parametriolio->lv_kohdetyyppi, $parametriolio->lv_omistaja_id);
     $palaute->set_sisalto($this->kayttajanakymat->nayta_lisavaltuuslomake($omistajan_nimi, $henkilovalikko, $kohdevalikko, $oikeusvalikko, $submit_painike, $paluupainike, $actionkyselyarvot));
     return $palaute;
 }
Example #8
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;
 }
 /**
  * Toteuttaa uuden tehtävän tallentamisen. Palauttaa Palaute-luokan olion,
  * joka sisältää tarpeelliset tiedot toiminnon onnistumisesta yms.
  *
  *
  * @param Palaute $palauteolio
  */
 function toteuta_tallenna_muokkaus(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $id_teht = $parametriolio->id_teht;
     $omaid = $parametriolio->get_omaid();
     $otsikko_teht = $parametriolio->otsikko_teht;
     $tehtavananto_teht = $parametriolio->tehtavananto_teht;
     $vaikeustaso_teht = $parametriolio->vaikeustaso_teht;
     $nakyvyys = $parametriolio->nakyvyys_teht;
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $onnistuminen = Palaute::$VIRHEKOODI_TALLENNUS;
     // TArkistetaan, onko käyttäjä kirjautunut. Ellei ole, keskeytetään:
     if (Henkilo::on_kirjautunut($omaid, $tietokantaolio)) {
         // Tarkistetaan tiedot:
         $tallennettava = new Tehtava($id_teht, $tietokantaolio);
         if ($tallennettava->olio_loytyi_tietokannasta) {
             // Asetetaan arvot paikalleen:
             $tallennettava->set_arvo(time(), Tehtava::$sarakenimi_ed_muutos_sek);
             $tallennettava->setOtsikko($otsikko_teht);
             $tallennettava->setTehtavananto($tehtavananto_teht);
             $tallennettava->setVaikeustaso($vaikeustaso_teht);
             $tallennettava->setNakyvyys($nakyvyys);
             $palaute = $tallennettava->tallenna_muutokset();
             if ($palaute === Tehtava::$OPERAATIO_ONNISTUI) {
                 //Aktiivisuusmerkintä:
                 $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $tietokantaolio, time(), Aktiivisuus::$TEHTAVAN_MUUTOSTEN_TALLENNUS);
                 if (!$aktiivisuuspalaute) {
                     $this->lisaa_virheilmoitus(Tekstit::$virheilm_aktiivisuuden_tallennus_eiok);
                 } else {
                     $onnistuminen = Palaute::$VIRHEKOODI_KAIKKI_OK;
                 }
                 // Otetaan selville, tuleekö käyttäjä koosteesta vai
                 // kokonaisuuksista ja näytetään vastaava juttu:
                 $elem_id = $parametriolio->elementti_id;
                 if ($elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) {
                     $elem = new Elementti($elem_id, $tietokantaolio);
                     if ($elem->olio_loytyi_tietokannasta) {
                         $parametriolio->kooste_id = $elem->get_arvo(Elementti::$sarakenimi_kooste_id);
                     }
                     $koostekontr = new Koostekontrolleri($this->get_tietokantaolio(), $parametriolio);
                     $koostekontr->toteuta_nayta($palauteolio);
                     // JOtta palataan varmasti samaan elementtiin:
                     $palauteolio->set_muokatun_id($parametriolio->elementti_id);
                 } else {
                     $this->toteuta_nayta_tehtavat($palauteolio);
                     // JOtta palataan varmasti samaan kokonaisuuteen:
                     $palauteolio->set_muokatun_id($tallennettava->getId());
                 }
                 $palauteolio->set_ilmoitus(Tekstit::$tehtava_ilm_tallennus_muok_ok . $this->tulosta_virheilmoitukset());
             } else {
                 $parametriolio->uusi = true;
                 // Varmuuden vuoksi.
                 $this->toteuta_tehtavalomakkeen_naytto($palauteolio);
                 $palauteolio->set_ilmoitus(Tekstit::$tehtava_virheilm_tallennus_muok_eiok . $tallennettava->tulosta_virheilmoitukset());
             }
         } else {
             $this->lisaa_virheilmoitus(Tekstit::$tehtava_virheilm_muokattavaa_ei_loytynyt);
             $this->toteuta_nayta_tehtavat($palauteolio);
             $palauteolio->set_ilmoitus($this->tulosta_virheilmoitukset());
         }
     } else {
         // Täällä sessio on vanhentunut:
         $this->lisaa_virheilmoitus(Kayttajatekstit::$ilmoitus_sessio_vanhentunut);
         $this->toteuta_nayta_tehtavat($palauteolio);
         $palauteolio->set_ilmoitus($this->tulosta_virheilmoitukset());
     }
     $palauteolio->set_virhekoodi($onnistuminen);
     $palauteolio->set_valikkonaytto(false);
 }
Example #10
0
 /**
  * Returns the content of teacher's view.
  * 
  * @param Henkilo $teacher Logged in user
  * @param array $myCourseInfos array containing Kurssitieto objects.
  * @param int $lang_id Language id
  */
 function show_teacher_view($teacher, $myCourseInfos, $lang_id)
 {
     $html = Html::div(array(Attr::id("submit_greeting")), Palautustekstit::teacher_greeting($lang_id) . " " . $teacher->get_arvo(Henkilo::$sarakenimi_etunimi) . "!");
     if (empty($myCourseInfos)) {
         $text = Palautustekstit::teacher_no_course_found($lang_id);
     } else {
         $text = Palautustekstit::teacher_my_courses($lang_id);
     }
     $html .= Html::div(array(Attr::id("submit_pikkuotsikko")), $text . " " . $this->create_button_new_course($lang_id));
     foreach ($myCourseInfos as $course) {
         $html .= $this->show_course_mini_teacher($course, $lang_id);
     }
     return $html;
 }
 /**
  * Toteuttaa ratkaisun muokkauksen tallentamisen. Parametrina annettavan 
  * Palaute-luokan olion kautta välitetään myös tulokset (&-merkki!),
  * tarpeelliset tiedot toiminnon onnistumisesta yms.
  *
  * @param Palaute $palauteolio
  */
 function toteuta_tallenna_muokkaus(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $id_kokon = $parametriolio->id_kokon;
     $id_teht = $parametriolio->id_teht;
     $id_ratk = $parametriolio->id_ratk;
     $omaid = $parametriolio->get_omaid();
     $vastaus_ratk = $parametriolio->vastaus_ratk;
     $ratkaisu_ratk = $parametriolio->ratkaisu_ratk;
     $nakyvyys = $parametriolio->nakyvyys_ratk;
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $kayttajan_valtuudet = $parametriolio->get_valtuudet();
     if (Henkilo::on_kirjautunut($omaid, $tietokantaolio)) {
         $muokattava = new Ratkaisu($id_ratk, $tietokantaolio);
         if ($muokattava->olio_loytyi_tietokannasta) {
             $muokattava->set_arvo(time(), Ratkaisu::$sarakenimi_ed_muutos_sek);
             $muokattava->setRatkaisu($ratkaisu_ratk);
             $muokattava->setVastaus($vastaus_ratk);
             $muokattava->setNakyvyys($nakyvyys);
             $palaute = $muokattava->tallenna_muutokset();
             if ($palaute === Ratkaisu::$OPERAATIO_ONNISTUI) {
                 // Aktiivisuusmerkintä:
                 $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $tietokantaolio, time(), Aktiivisuus::$RATKAISUN_MUUTOSTEN_TALLENNUS);
                 if (!$aktiivisuuspalaute) {
                     $this->lisaa_virheilmoitus(Tekstit::$virheilm_aktiivisuuden_tallennus_eiok);
                 } else {
                     $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK);
                 }
                 // Otetaan selville, tuleekö käyttäjä koosteesta vai
                 // kokonaisuuksista ja näytetään vastaava juttu:
                 $elem_id = $parametriolio->elementti_id;
                 if ($elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) {
                     $elem = new Elementti($elem_id, $tietokantaolio);
                     if ($elem->olio_loytyi_tietokannasta) {
                         $parametriolio->kooste_id = $elem->get_arvo(Elementti::$sarakenimi_kooste_id);
                     }
                     $koostekontr = new Koostekontrolleri($this->get_tietokantaolio(), $parametriolio);
                     $koostekontr->toteuta_nayta($palauteolio);
                     // JOtta palataan varmasti samaan elementtiin:
                     $palauteolio->set_muokatun_id($parametriolio->elementti_id);
                 } else {
                     $this->toteuta_nayta($palauteolio);
                     $palauteolio->set_muokatun_id($id_ratk);
                 }
                 $palauteolio->set_ilmoitus(Tekstit::$ratkaisu_ilm_tallennus_uusi_ok . "<br/>" . $this->tulosta_virheilmoitukset());
             } else {
                 $palauteolio->set_ilmoitus(Tekstit::$ratkaisu_virheilm_tallennus_uusi_eiok . "<br/>" . $this->tulosta_virheilmoitukset() . "<br/>" . $muokattava->tulosta_virheilmoitukset());
                 $lomake = $this->ratkaisunakymat->nayta_ratkaisulomake($parametriolio);
                 $palauteolio->set_sisalto($lomake);
             }
         } else {
             // Ellei muokattavaa löytynyt:
             $this->toteuta_nayta($palauteolio);
             $this->lisaa_virheilmoitus(Tekstit::$ratkaisu_virheilm_muokattavaa_ei_loytynyt);
             $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_TALLENNUS);
             $palauteolio->set_ilmoitus($this->tulosta_virheilmoitukset());
         }
     } else {
         // Täällä sessio on vanhentunut:
         $this->lisaa_virheilmoitus(Kayttajatekstit::$ilmoitus_sessio_vanhentunut);
         $this->toteuta_nayta($palauteolio);
         $palauteolio->set_ilmoitus($this->tulosta_virheilmoitukset());
     }
     $palauteolio->set_valikkonaytto(false);
     return $palauteolio;
 }
Example #12
0
 /**
  * Luo Henkilo-luokan olion annetuilla ja oletusarvoilla. 
  * Huomaa: Ei tallenna tietokantaan!
  * 
  * Palauttaa Henkilo-luokan olion tai vaihtoehtoisesti virhetapauksessa
  * arvon Henkilo::VIRHE.
  * 
  * Oletusarvoisesti henkilölle annetaan valtuudet tasolla 
  * Valtuudet::$TEHTAVA_LISAYS.
  * 
  * @param type $etun
  * @param type $sukun
  * @param type $ktunnus
  * @param type $salasana Selväkielisessä muodossa. Koodataan sitten
  * tallennettaessa.
  * @param Tietokantaolio $tietokantaolio Tätä tarvitaan oliota luodessa,
  * vaikka sitä ei heti tallennetakaan.
  * @return \Henkilo Palauttaa Henkilo-luokan olion. Jos arvojen asetuksissa 
  * tuli virheitä, viedään ilmoituksiin virhekommentti.
  */
 public static function luo_testihenkilo($etun, $sukun, $ktunnus, $salasana, $tietokantaolio)
 {
     $testihenki = new Henkilo(Henkilo::$MUUTTUJAA_EI_MAARITELTY, $tietokantaolio);
     $svuosi = Kayttajatestaus::$testi_svuosi;
     $skk = 1;
     $spaiva = 1;
     $lempin = "Testilemppari";
     $komm = "Testikommentti";
     $eosoite = Kayttajatestaus::$testi_email;
     $valtuudet = Valtuudet::$TEHTAVA_LISAYS;
     $online = 0;
     $testihenki->set_arvo_kevyt($svuosi, Henkilo::$sarakenimi_syntymavuosi);
     $testihenki->set_arvo_kevyt($skk, Henkilo::$sarakenimi_syntymakk);
     $testihenki->set_arvo_kevyt($spaiva, Henkilo::$sarakenimi_syntymapaiva);
     $testihenki->set_arvo_kevyt($etun, Henkilo::$sarakenimi_etunimi);
     $testihenki->set_arvo_kevyt($sukun, Henkilo::$sarakenimi_sukunimi);
     $testihenki->set_arvo_kevyt($ktunnus, Henkilo::$sarakenimi_kayttajatunnus);
     $testihenki->set_arvo_kevyt($salasana, Henkilo::$sarakenimi_salasana);
     $testihenki->set_arvo_kevyt($lempin, Henkilo::$sarakenimi_lempinimi);
     $testihenki->set_arvo_kevyt($komm, Henkilo::$sarakenimi_kommentti);
     $testihenki->set_arvo_kevyt($online, Henkilo::$sarakenimi_online);
     $testihenki->set_arvo_kevyt($eosoite, Henkilo::$sarakenimi_eosoite);
     $testihenki->set_arvo_kevyt($valtuudet, Henkilo::$sarakenimi_valtuudet);
     // Salasanan vahvistus tarvitaan myös jos tallennetaan:
     $testihenki->set_salavahvistus($salasana);
     return $testihenki;
 }
Example #13
0
 public function nayta_kuva($omaid, $id_kokon, $id_teht, $kohde, $kohde_id, $kuvakansion_os)
 {
     $kork = $this->korkeus;
     $lev = $this->leveys;
     $ind = $this->nayttokokoindeksi;
     $nayttolev = laske_kuvan_maksimileveys($ind);
     $nayttokork = laske_kuvan_maksimikorkeus($nayttolev, $lev, $kork);
     //======================================================================
     $kohdeoikeudet = Henkilo::hae_kayttajan_kohdeoikeudet($this->getHenkiloId(), $omaid, Oliotyyppi::$KUVA, $this->getId(), $this->tietokantaolio);
     //======================================================================
     /* Poisto- ja muokkauspainike */
     $poista_kuva_painike = "";
     $muokkaa_kuva_painike = "";
     /* Haetaan oikean (kohde, eli missä kuva on) olion id-name. Nämä
      * ovat yhteisiä molemmille painikkeille: */
     $id_name = "";
     if ($kohde == Kuvat::$kohde_kokonaisuus_tiivistelma || $kohde == Kuvat::$kohde_kokonaisuus_selitys) {
         $id_name = "id_kokon";
     } else {
         if ($kohde == Kuvat::$kohde_tehtava) {
             $id_name = "id_teht";
         } else {
             if ($kohde == Kuvat::$kohde_ratkaisu) {
                 $id_name = "id_ratk";
             } else {
                 $id_name = "id_tuntematon";
             }
         }
     }
     $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}" . "?id_kuva=" . $this->id . "&id_kokon=" . $id_kokon . "&id_teht=" . $id_teht . "&kohde_kuva=" . $kohde . "&" . $id_name . "=" . $kohde_id . "&id_kohde_kuva=" . $kohde_id);
     // Sallitaan paitse hallitsijalle, myös kuvan tallentajalle.
     if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_JA_POISTAA) {
         /* Poistopainike */
         $onsubmit_funktionimi = "nayta_kuvan_poistovahvistus";
         $onsubmit_parametrit = array($this->id);
         /* Kuvan id*/
         $input_maaritteet = array('name' => Toimintonimet::$kuvatoiminto, 'value' => Painikkeet::$POISTA_KUVA_VALUE);
         try {
             $poista_kuva_painike = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
         } catch (Exception $poikkeus) {
             $palaute .= "Virhe poistopainikkeen luomisessa: " . $poikkeus->getMessage();
         }
     }
     if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) {
         // MUOKKAUSPAINIKE: TArkistetaan urliin menevät tiedot:
         $kuvaotsikko_turv = urlencode($this->kuvaotsikko);
         $kuvaselitys_turv = urlencode($this->kuvaselitys);
         $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}" . "?id_kuva=" . $this->id . "&id_kokon=" . $id_kokon . "&id_teht=" . $id_teht . "&kuvaotsikko_kuva=" . $kuvaotsikko_turv . "&kuvaselitys_kuva=" . $kuvaselitys_turv . "&vuosi_kuva=" . $this->vuosi . "&kk_kuva=" . $this->kk . "&paiva_kuva=" . $this->paiva . "&nayttokokoindeksi_kuva=" . $this->nayttokokoindeksi . "&kohde_kuva=" . $kohde . "&" . $id_name . "=" . $kohde_id . "&id_kohde_kuva=" . $kohde_id . "&uusi_kuva=0");
         // false ei toimi (true toimii)!
         /* Muokkauspainike: */
         $onsubmit_funktionimi = "nayta_kuvan_muokkauslomake";
         $onsubmit_parametrit = array($this->id);
         /* Kuvan id*/
         $input_maaritteet = array('name' => Toimintonimet::$kuvatoiminto, 'value' => Painikkeet::$MUOKKAA_KUVA_VALUE);
         try {
             $muokkaa_kuva_painike = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
         } catch (Exception $poikkeus) {
             $palaute .= "Virhe poistopainikkeen luomisessa: " . $poikkeus->getMessage();
         }
     }
     /* Kuvan osoite */
     $kuvaosoite = $kuvakansion_os . "/" . $this->tiedostonimi;
     $kuva_html = "<table class='kuvaraamit'>" . "<tr>" . "<th>" . $this->kuvaotsikko . $muokkaa_kuva_painike . $poista_kuva_painike . "</th>" . "</tr>" . "<tr>" . "<td>" . " <!-- KUVAKOODI ALKAA: ÄLÄ MUOKKAA!-->" . "<img id=kuva_" . $this->id . " title='" . $this->kuvaselitys . "' src='" . $kuvaosoite . "' width='" . $nayttolev . "'" . "height='" . $nayttokork . "' class='img-responsive'" . "'/>" . "<!-- KUVAKOODIN LOPPU-->" . "</td>" . "</tr>" . "</table>";
     return $kuva_html;
 }
Example #14
0
 /**
  * Palauttaa koodi, joka luo lomakkeen, jonka avulla voi muokata omaa
  * salasanaa ja muita tietoja. 
  * 
  * @param Parametrit $parametriolio 
  * @param type $uusi jos true, niin kyseessä uuden henkilön luominen.
  * @return type
  */
 function nayta_henkilotietolomake(&$parametriolio, $uusi)
 {
     /*$puh = $parametriolio->puhelin;
       $os = $parametriolio->osoite;
       $asuinmaa = $parametriolio->asuinmaa;
       $kieli = $parametriolio->kieli_henkilo;*/
     $tahti_molemmissa = "*";
     $tahti_vain_uudessa = "";
     $otsikko = Html::luo_b(Kayttajatekstit::henkilolomakeotsikko_muokkaus(), array());
     $tallennuspainike = Html::luo_input(array(Attr::type("submit"), Attr::name(Toimintonimet::$henkilotietotoiminto), Attr::value(Kayttajatekstit::$nappi_tallenna_tietomuutokset_value), Attr::title(Kayttajatekstit::$nappi_tallenna_tietomuutokset_title), Attr::classs("rinnakkain")));
     if ($uusi) {
         $etun = $parametriolio->etun;
         $sukun = $parametriolio->sukun;
         $lempin = $parametriolio->lempin;
         $komm = $parametriolio->komm;
         $uusktunnus = $parametriolio->uusktunnus;
         $eosoite = $parametriolio->eosoite;
         $name = Toimintonimet::$henkilotietotoiminto;
         $tahti_vain_uudessa = "*";
         $tallennuspainike = Html::luo_input(array(Attr::type("submit"), Attr::name(Toimintonimet::$henkilotietotoiminto), Attr::value(Kayttajatekstit::$nappi_henkilo_tallenna_uusi_value), Attr::title(Kayttajatekstit::$nappi_henkilo_tallenna_uusi_title), Attr::classs("rinnakkain")));
         $otsikko = Kayttajatekstit::henkilolomakeotsikko_uusi();
     } else {
         // Haetaan tiedot tietokannasta:
         $user = new Henkilo($parametriolio->get_omaid(), $parametriolio->get_tietokantaolio());
         if ($user->olio_loytyi_tietokannasta) {
             $etun = $user->get_arvo(Henkilo::$sarakenimi_etunimi);
             $sukun = $user->get_arvo(Henkilo::$sarakenimi_sukunimi);
             $lempin = $user->get_arvo(Henkilo::$sarakenimi_lempinimi);
             $komm = $user->get_arvo(Henkilo::$sarakenimi_kommentti);
             $uusktunnus = $parametriolio->uusktunnus;
             $eosoite = $user->get_arvo(Henkilo::$sarakenimi_eosoite);
             $name = Toimintonimet::$henkilotietotoiminto;
         } else {
             $this->lisaa_virheilmoitus(Tekstit::$virheilm_henkiloa_ei_loytynyt);
         }
     }
     $otsikko .= Html::luo_p(Kayttajatekstit::henkilolomake_nakyvyysselitys(), array(Attr::style("font-size: 80%")));
     $mj = $otsikko;
     // Ilmoitukset:
     $mj .= Html::luo_div($parametriolio->ilmoitus_kokon, array(Attr::id(Kayttajanakymat::$id_henkilotietolomakeilmoitukset), Attr::classs("korostus")));
     $mj .= Html::luo_table(Html::luo_tablerivi(Html::luo_tablesolu("*" . Kayttajatekstit::$lomakekentta_etunimi, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_etunimi), Attr::value($etun), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu("*" . Kayttajatekstit::$lomakekentta_sukunimi, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_sukunimi), Attr::value($sukun), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu(Kayttajatekstit::$lomakekentta_lempinimi, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_lempinimi), Attr::value($lempin), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu(Kayttajatekstit::$lomakekentta_kuvaus_itsesta, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_kommentti), Attr::value($komm), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu("*" . Kayttajatekstit::$lomakekentta_email, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_eosoite), Attr::value($eosoite), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu($tahti_vain_uudessa . Kayttajatekstit::$lomakekentta_kayttajatunnus, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("text"), Attr::name(Kayttajakontrolleri::$name_uusikayttajatunnus), Attr::value(""), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu($tahti_vain_uudessa . Kayttajatekstit::$lomakekentta_salasana, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("password"), Attr::name(Kayttajakontrolleri::$name_uusisalasana), Attr::value(""), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu($tahti_vain_uudessa . Kayttajatekstit::$lomakekentta_salasana_vahvistus, array()) . Html::luo_tablesolu(Html::luo_input(array(Attr::type("password"), Attr::name(Kayttajakontrolleri::$name_salasanavahvistus), Attr::value(""), Attr::size(40))), array()), array()) . Html::luo_tablerivi(Html::luo_tablesolu("", array()) . Html::luo_tablesolu($tallennuspainike . Html::luo_input(array(Attr::type("submit"), Attr::name(Toimintonimet::$henkilotietotoiminto), Attr::value(Kayttajatekstit::$nappi_poistu_tiedoista_value), Attr::title(Kayttajatekstit::$nappi_poistu_tiedoista_title), Attr::classs("rinnakkain"))), array()), array()), array(Attr::summary("Muokkaustiedot"), Attr::align("center")));
     $lomake = Html::luo_form($mj, array(Attr::action("index.php"), Attr::method("post"), Attr::classs("tietolomake_rajaton")));
     return $lomake;
 }
Example #15
0
 /**
  * Palauttaa taulukossa Henkilo-luokan olioina kaikki tietokannassa olevat
  * ihmiset. Haku on optimoitu niin, että tietokantaan tehdään vain yksi haku.
  * @param type $tietokantaolio
  * @return array 
  */
 public static function hae_kaikki_henkilot($tietokantaolio)
 {
     $henkilot = array();
     $taulunimi = Henkilo::$taulunimi;
     $henkilotaulukot = $tietokantaolio->hae_kaikki_rivit_taulukoina($taulunimi);
     foreach ($henkilotaulukot as $henkilotaulukko) {
         $henkilo = new Henkilo(Henkilo::$MUUTTUJAA_EI_MAARITELTY, $tietokantaolio);
         $henkilo->nouki_arvot_tk_osumataulukosta($henkilotaulukko);
         if ($henkilo->olio_loytyi_tietokannasta) {
             array_push($henkilot, $henkilo);
         }
     }
     return $henkilot;
 }
Example #16
0
 /**
  * Luo testiä varten henkilön tietokantaan. Huomaa, että syntymävuosi
  * Testialusta::$testi_svuosi
  * pidetään aina samana, jotta sen perusteella saadaan siivous tehtyä!
  * 
  * <p>Palauttaa onnistuessaan Henkilo-luokan olion ja muuten
  * Pohja::$VIRHE-arvon.</p>
  */
 public function luo_testihenkilo($etun, $sukun, $ktunnus, $salis)
 {
     $palaute = Pohja::$VIRHE;
     $lempin = "Sepi";
     $svuosi = Testialusta::$testi_svuosi;
     $skk = 4;
     $spaiva = 5;
     $komm = "Ei hassumpi kaveri";
     $sala = md5($salis);
     $eosoite = "Enpä jaksa syöttää";
     $valtuudet = Valtuudet::$NORMAALI;
     $kirjautumisaika = 0;
     $online = 0;
     $id = Henkilo::$MUUTTUJAA_EI_MAARITELTY;
     $henki = new Henkilo($id, $this->tietokantaolio);
     $henki->set_arvo_kevyt($etun, Henkilo::$sarakenimi_etunimi);
     $henki->set_arvo_kevyt($sukun, Henkilo::$sarakenimi_sukunimi);
     $henki->set_arvo_kevyt($lempin, Henkilo::$sarakenimi_lempinimi);
     $henki->set_arvo_kevyt($svuosi, Henkilo::$sarakenimi_syntymavuosi);
     $henki->set_arvo_kevyt($skk, Henkilo::$sarakenimi_syntymakk);
     $henki->set_arvo_kevyt($spaiva, Henkilo::$sarakenimi_syntymapaiva);
     $henki->set_arvo_kevyt($komm, Henkilo::$sarakenimi_kommentti);
     $henki->set_arvo_kevyt($ktunnus, Henkilo::$sarakenimi_kayttajatunnus);
     $henki->set_arvo_kevyt($sala, Henkilo::$sarakenimi_salasana);
     $henki->set_arvo_kevyt($eosoite, Henkilo::$sarakenimi_eosoite);
     $henki->set_arvo_kevyt($online, Henkilo::$sarakenimi_online);
     $henki->set_arvo_kevyt($valtuudet, Henkilo::$sarakenimi_valtuudet);
     $henki->set_arvo_kevyt($kirjautumisaika, Henkilo::$sarakenimi_kirjautumisaika);
     // Tallennetaan tietokantaan.
     $tallennus = $henki->tallenna_uusi();
     if ($henki instanceof Henkilo && $tallennus == Malliluokkapohja2::$OPERAATIO_ONNISTUI) {
         $palaute = $henki;
     }
     return $palaute;
 }
 /**
  * Toteuttaa kokonaisuuden muokkauksen tallentamisen. Erityisesti käyttäjän
  * tekemät muutokset kokonaisuuteen kulkevat aina tämän metodin kautta, 
  * lukuunottamatta näkyvyyttä ja lukitusta.
  * 
  * Huomaa, ettei lukitusta tai käyttöoikeuksia tarkisteta täällä. Ne
  * tarkistetaan Kayttajakontrolleri-luokan metodeilla kokonaisuuden
  * tulostuksen (ruudulle) yhteydessä, jolloin vain asianmukaisille
  * käyttäjille annetaan painikkeet muokkausta tai poistoa varten.
  * 
  * Joitakin ominaisuuksia ei voi muuttaa täällä:
  *   luomishetki_sek - ei muuteta
  *   ed_muutos_sek - automaattinen
  *   näkyvyys - arvoja ei aseteta täällä (oma metodi Kokonaisuusoliossa)
  *   on_lapsia - arvoja ei aseteta täällä (oma metodi Kokonaisuusoliossa)
  *   lukitus - arvoja ei aseteta täällä (oma metodi Kokonaisuusoliossa)
  *   jarjestysluku - arvoja ei aseteta täällä (oma metodi Kokonaisuuskontrollerissa)
  *   kieli_id - arvoa ei aseteta täällä.
  *   taso - ei muuteta
  *   oppiaine - ei muuteta.
  * 
  * Lukitus poistetaan oliolta onnistuneen operaation päätteeksi.
  * 
  * @param Palaute $palauteolio
  */
 function toteuta_tallenna_muokkaus(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $ilmoitus = "";
     // Tarkistuksessa putsataan vain riskimerkit.
     $parametriolio->set_uusi(false);
     $omaid = $parametriolio->get_omaid();
     $otsikko_kokon = $parametriolio->get_otsikko_kokon();
     $tiivis_kokon = $parametriolio->get_tiivis_kokon();
     $selitys_kokon = $parametriolio->get_selitys_kokon();
     $laajennetun_id_kokon = $parametriolio->get_laajennetun_id_kokon();
     $ylakokonaisuuden_id_kokon = $parametriolio->get_ylakokonaisuuden_id_kokon();
     $nakyvyys_kokon = $parametriolio->nakyvyys_kokon;
     $muutettavan_kokon_id = $parametriolio->id_kokon;
     $virhekoodi = Palaute::$VIRHEKOODI_KAIKKI_OK;
     // Haetaan kokonaisuuden omistaja, jotta voidaan tarkistaa:
     $vanha_kokon = $this->get_olio();
     if ($vanha_kokon instanceof Kokonaisuusolio && $vanha_kokon->olio_loytyi_tietokannasta) {
         $muutettavan_kokon_luojan_id = $vanha_kokon->getHenkiloId();
     } else {
         $muutettavan_kokon_luojan_id = Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY;
     }
     //============== Tarkistetaan, onko käyttäjä vielä oikeasti online
     // ja valtuudet kunnossa: ======
     $kohdeoikeudet = Henkilo::hae_kayttajan_kohdeoikeudet($muutettavan_kokon_luojan_id, $omaid, Oliotyyppi::$KOKONAISUUS, $muutettavan_kokon_id, $this->get_tietokantaolio());
     /*====================================================================*/
     //======================================================================
     // Muokattava aolio:
     $muokattava = new Kokonaisuusolio($muutettavan_kokon_id, $this->get_tietokantaolio());
     if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) {
         if ($muokattava->olio_loytyi_tietokannasta) {
             $palauteolio->set_virhekoodi($virhekoodi);
             // Lisätään kokonaisuudelle saadut mahdollisesti muutettavat parametrit
             // (vain ne, joita ylipäätään voidaan muuttaa):
             $muokattava->set_arvo($otsikko_kokon, Kokonaisuusolio::$sarakenimi_otsikko);
             $muokattava->set_arvo($tiivis_kokon, Kokonaisuusolio::$sarakenimi_tiivis);
             $muokattava->set_arvo($selitys_kokon, Kokonaisuusolio::$sarakenimi_selitys);
             $muokattava->set_arvo($laajennetun_id_kokon, Kokonaisuusolio::$sarakenimi_laajennetun_id);
             $muokattava->set_arvo($ylakokonaisuuden_id_kokon, Kokonaisuusolio::$sarakenimi_ylakokonaisuuden_id);
             $muokattava->set_arvo($nakyvyys_kokon, Kokonaisuusolio::$sarakenimi_nakyvyys);
             // Tallennus tietokantaan:
             $palaute = $muokattava->tallenna_muutokset();
             // Jos tiedoissa on vikaa, esim. tyhjä otsikko:
             if ($palaute != Kokonaisuusolio::$OPERAATIO_ONNISTUI) {
                 $this->get_parametriolio()->set_ilmoitus_kokon($muokattava->tulosta_virheilmoitukset());
                 $this->lisaa_virheilmoitus($muokattava->tulosta_virheilmoitukset());
                 $this->toteuta_nayta_kokonaisuuslomake($palauteolio);
                 $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_YLEINEN);
                 $ilmoitus .= Tekstit::$ilm_kokon_muokkaustallennus_eiok;
             } else {
                 // Kaikki kunnossa.
                 $ilmoitus = " ";
                 /* Poistetaan kokonaisuuden lukitus: */
                 $lukon_tila = Kokonaisuusolio::$LUKITUS_OFF;
                 $lukituksen_avaus = $muokattava->aseta_kokonaisuuden_lukitus($parametriolio->get_omaid(), $lukon_tila);
                 /* Ilmoitus, ellei lukitus jostakin syystä onnistunut: */
                 if ($lukituksen_avaus != Kokonaisuusolio::$OPERAATIO_ONNISTUI) {
                     $ilmoitus .= " " . Tekstit::$virheilm_kokonaisuuden_lukituksen_avaus_eiok . $muokattava->tulosta_virheilmoitukset();
                     $virhekoodi = Palaute::$VIRHEKOODI_LUKITUS_KOKONAISUUDET;
                 } else {
                     $ilmoitus = Tekstit::$ilm_kokon_muokkaustallennus_ok;
                     //Aktiivisuusmerkintä:
                     $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $this->get_tietokantaolio(), time(), Aktiivisuus::$KOKONAISUUDEN_MUUTOSTEN_TALLENNUS);
                     if (!$aktiivisuuspalaute) {
                         $this->lisaa_virheilmoitus(Tekstit::$virheilm_aktiivisuuden_tallennus_eiok);
                     } else {
                         $onnistuminen = Palaute::$VIRHEKOODI_KAIKKI_OK;
                     }
                 }
                 // Huom: täällä hämäävästi käyttöön tulee uusi palauteolio, jolloin
                 // esim aiemmat virhekoodin asetukset eivät voimassa.
                 if ($parametriolio->tallennuskesken) {
                     $parametriolio->uusi = false;
                     $this->toteuta_nayta_kokonaisuuslomake($palauteolio);
                 } else {
                     // Otetaan selville, tuleekö käyttäjä koosteesta vai
                     // kokonaisuuksista ja näytetään vastaava juttu:
                     $parametriolio = $this->get_parametriolio();
                     $elem_id = $parametriolio->elementti_id;
                     $elemryhma_id = $parametriolio->elemryhma_id;
                     // Tarkistetaan, mistä ollaan tulossa ja minne menossa:
                     $koostekontrolleri = new Koostekontrolleri($this->get_tietokantaolio(), $parametriolio);
                     if ($elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) {
                         $koostekontrolleri->toteuta_nayta_elementtiryhma($palauteolio);
                         $palauteolio->set_muokatun_id($elem_id);
                     } else {
                         if ($elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) {
                             $koostekontrolleri->toteuta_nayta($palauteolio);
                             $palauteolio->set_muokatun_id($elem_id);
                         } else {
                             $this->toteuta_nayta($palauteolio);
                             $palauteolio->set_muokatun_id($muutettavan_kokon_id);
                         }
                     }
                 }
                 // Tämän pitää olla vasta täällä (ks. ylempi kommentti).
                 $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK);
                 // Lisätään mahdollinen lukitusvirhekoodi
                 if ($virhekoodi != Palaute::$VIRHEKOODI_KAIKKI_OK) {
                     $palauteolio->set_virhekoodi($virhekoodi);
                     $ilmoitus .= Tekstit::$ilm_kokon_muokkaustallennus_eiok . ": " . $virhekoodi;
                 }
             }
         } else {
             $this->lisaa_virheilmoitus(Tekstit::$ilm_kokon_ei_loytynyt);
         }
     } else {
         // Kun sessio loppunut tai muuten väärä muokkaaja:
         $this->lisaa_virheilmoitus(Tekstit::$virheilm_kokon_muok_ei_valtuuksia);
         $this->toteuta_nayta($palauteolio);
     }
     $palauteolio->set_ilmoitus($ilmoitus . "<br/>" . $this->tulosta_virheilmoitukset());
     return $palauteolio;
 }
Example #18
0
 /**
  * TÄRKEÄ! HUOLEHTII PÄÄASIALLISESTI KÄYTÄNNÖN OIKEUKSISTA KOHTEILLE!
  * Tätä metodia kutsutaan esim. eri olioiden tulostusmetodeissa, kun halutaan
  * selvittää, mitä oikeuksia käyttäjällä on kaiken kaikkiaan suhteessa 
  * <i>tiettyyn olioon</i>. Tässä otetaan huomioon myös lisävaltuudet! 
  * 
  * HUOM! Täällä ei kuitenkaan oteta huomioon olion näkyvyysasetuksen
  * vaikutusta, koska ne ovat oliokohtaisia. Ne siis täytyy määritellä
  * olion sisällä.
  * 
  * <p>Palautearvo on jokin Lisavaltuudet-luokan
  * <b>lisävaltuusarvoista<b> (Valtuudet-luokan arvot viittaavat aina kaikkiin
  * olioihin, joten lisävaltuusarvot ovat tarkempia tässä)</p>
  * 
  * <p>
  * Palautearvo Lisavaltuudet::$EI_LISAVALTUUKSIA kannattaa tulkita niin, 
  * ettei henkilöllä ole lisävaltuuksien lisäksi muitakaan 
  * muokkausoikeuksia kohteeseen, eli samat
  * oikeudet kuin <i>kirjautumattomalla käyttäjällä</i>. 
  * </p>
  * 
  * @param int $omistaja_id Tunniste henkilölle, joka on luonut olion.
  * @param int $omaid Sovelluksen tämänhetkisen käyttäjän tunniste.
  * @param int $kohdeoliotyyppi Olion tyyppi.
  * @param int $kohdeolio_id Olion id.
  * @param Tietokantaolio $tietokantaolio
  */
 public static function hae_kayttajan_kohdeoikeudet($omistaja_id, $omaid, $kohdeoliotyyppi, $kohdeolio_id, $tietokantaolio)
 {
     $oikeudet = Lisavaltuudet::$EI_LISAVALTUUKSIA;
     $yleiset_valtuudet = Lisavaltuudet::$EI_LISAVALTUUKSIA;
     $kayttaja = new Henkilo($omaid, $tietokantaolio);
     if ($kayttaja->olio_loytyi_tietokannasta) {
         $kayttajan_valtuudet = $kayttaja->get_arvo(Henkilo::$sarakenimi_valtuudet);
         // Yleinen valtuustaso pitää olla vähintään tehtävän lisäys!
         if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) {
             // Käyttäjä on admin tai omistaja. Nollan lisäys tekee stringistä
             // luvun.
             if ($kayttajan_valtuudet + 0 === Valtuudet::$HALLINTA + 0 || $omaid + 0 === $omistaja_id + 0) {
                 $oikeudet = Lisavaltuudet::$KAIKKI_OIKEUDET;
             } else {
                 // Tällöin kaikkia saa muokata ja poistaa. Muut saa muokata
                 // vain omia olioitaan, mikä tulee yläpuolella hoidetuksi.
                 if ($kayttajan_valtuudet + 0 === Valtuudet::$MUOKKAUS_YLEINEN + 0) {
                     $yleiset_valtuudet = Lisavaltuudet::$SAA_MUOKATA_JA_POISTAA;
                 }
                 // Tarkistetaan sitten oliokohtaiset mahdolliset
                 // lisävaltuudet:
                 $lisavaltuudet = Lisavaltuudet::hae_lisavaltuus_static($kohdeolio_id, $kohdeoliotyyppi, $omaid, $omistaja_id, $tietokantaolio);
                 if ($lisavaltuudet != Lisavaltuudet::$VIRHE) {
                     $oikeudet = max(array($lisavaltuudet, $yleiset_valtuudet));
                 } else {
                     $oikeudet = $yleiset_valtuudet;
                 }
             }
         }
     }
     return $oikeudet;
 }
 /**
  * Palauttaa kokonaisuuden html-koodin.
  * 
  * Huomaa, että täällä käsitellään aika paljon turvallisuusarkoja aiheita,
  * kuten esimerkiksi kokonaisuuden lukitus. Ois parempi ehkä sellaisen
  * olla aiemmin, mutta en vielä ole jaksanut muuttaa..
  *
  * @param Parametrit $parametriolio
  * @param Kokonaisuusolio $kokonaisuus
  * @param <type> $selitys_auki jos true, niin selitys näytetään, muuten ei.
  * @param type $id_prev Edellisen kokonaisuuden id.
  * @param type $id_next Seuraavan kokonaisuuden id.
  * @return string|\<type>
  */
 function tulosta_kokonaisuus($kokonaisuus, $parametriolio, $selitys_auki, $id_prev, $id_next)
 {
     $btn_type = Kokonaisuusnakymat::$btn_type_article;
     $btn_size = Kokonaisuusnakymat::$btn_size_article;
     $omaid = $parametriolio->get_omaid() + 0;
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $kayttajan_valtuudet = $parametriolio->get_valtuudet();
     // Luodaan tämä tehtävien lkm:n hakua varten. Vähän raskasta, mutta olkoon.
     $tehtavakontrolleri = new Tehtavakontrolleri($tietokantaolio, $parametriolio);
     $palaute = "";
     $selitys = "";
     $poistonappi = "";
     $muokkausnappi = "";
     $tehtavanappi = "";
     /* Tehtävien näyttö */
     $uusi_teht_nappi = "";
     /* Tästä luodaan uusi tehtävä. */
     $nayta_selitys_nappi = "";
     /* Näyttää selityksen. */
     $siirra_ylemmaksi_nappi = "";
     $siirra_alemmaksi_nappi = "";
     $jaa_oikeuksia_nappi = "";
     $nayta_jarj_luku = "";
     $korjausnappi = "";
     // Tämän avulla järjestysluvun voi korjata
     $nakyvyysmuutosnappi = "";
     $nayta_ed_nappi = $this->create_button_show_prev($id_prev);
     $nayta_seur_nappi = $this->create_button_show_next($id_next);
     /*======================== käyttäjän oikeudet ========================*/
     $kohdeoikeudet = Henkilo::hae_kayttajan_kohdeoikeudet($kokonaisuus->getHenkiloId(), $omaid, Oliotyyppi::$KOKONAISUUS, $kokonaisuus->get_id(), $tietokantaolio);
     /*====================================================================*/
     // Koodia voivat kaikki vilkaista, ellei ole piilotettu:
     if ($kohdeoikeudet >= Lisavaltuudet::$SAA_NAHDA_EI_MUOKATA_EI_POISTAA || $kokonaisuus->getNakyvyys() + 0 === Nakyvyys::$JULKINEN) {
         $nayta_koodi_nappi = Html::luo_button(Painikkeet::$NAYTA_KOODI_value, array(Attr::title(Painikkeet::$NAYTA_KOODI_title), Attr::onclick("hae_koodi", array($kokonaisuus->get_id(), Oliotyyppi::$KOKONAISUUS)), Attr::classs("btn btn-" . $btn_type . " btn-" . $btn_size . " article")));
     } else {
         $nayta_koodi_nappi = "";
     }
     /* Kuvan lisäyspainikkeet: */
     $uusi_kuva_tiivis = "";
     $uusi_kuva_seli = "";
     // 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, 'class' => "btn btn-" . $btn_type . " btn-" . $btn_size . " article");
         } else {
             $title = Painikkeet::$NAYTA_SELITYS_title;
             $onsubmit_funktionimi = "nayta_selitys";
             $input_maaritteet = array('name' => Toimintonimet::$kokonaisuustoiminto, 'value' => Painikkeet::$NAYTA_SELITYS_value, 'title' => $title, 'class' => "btn btn-" . $btn_type . " btn-" . $btn_size . " article");
         }
         $nayta_selitys_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
     }
     // Haetaan kokonaisuuden tehtävien lkm:
     $teht_lkm = sizeof($tehtavakontrolleri->hae_tehtavat());
     // Tehtävät näkyvät kaikille, jos niitä on:
     if ($teht_lkm > 0) {
         $onsubmit_funktionimi = "nayta_tehtavat";
         $onsubmit_parametrit = array($kokonaisuus->get_id());
         /* Tämän avulla löytyvät */
         $form_maaritteet = array('method' => 'post', 'class' => 'article', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $kokonaisuus->get_id() . "&" . Oliotyyppi::$naytettava_name . "=" . Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA);
         $title = Painikkeet::$tehtava_nayta_tehtavat_title . " (" . $teht_lkm . ")";
         $input_maaritteet = array('name' => Toimintonimet::$tehtavatoiminto, 'value' => Painikkeet::$tehtava_nayta_tehtavat_value, 'title' => $title, 'class' => "btn btn-" . $btn_type . " btn-" . $btn_size);
         $tehtavanappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
     }
     /** 
      * Muokkaus ja poisto tietysti kunkulle ja kokonaisuuden tekijälle. 
      * Vain heille on myös luvallista jakaa lisäoikeuksia olioon.
      
      <p>Jos kokonaisuus lukittu toisen toimesta, ei sitä voida poistaa
      eikä muokata. Uusia tehtäviä voi kuitenkin lisätä,
      koska siinä mahdollinen samanaikaisuus ei haittaa.</p>
     
      <p>Uusia tehtäviä voi lisätä valtuusarvot >= "tehtävien_lisäys".</p>
     
      Kokonaisuuksien poisto sallitaan turvallisuussyistä vain
      lapsettomille kokonaisuuksille.
     */
     if ($kohdeoikeudet == Lisavaltuudet::$KAIKKI_OIKEUDET) {
         // Oikeuksien eli lisävaltuuksien jakopainike:======================
         $action_os = "oLetUs";
         // Testaan samalla kirjainkoon vaikutusta.
         $action_kyselymuuttujat = array("id_kokon", "oppiaine_kokon", "kieli_id", Kayttajakontrolleri::$lv_name_kohdeolio_id, Kayttajakontrolleri::$lv_name_kohdeoliotyyppi, Kayttajakontrolleri::$lv_name_omistaja_id);
         $action_kyselyarvot = array($kokonaisuus->get_id(), $kokonaisuus->getOppiaine(), $kokonaisuus->getKieli(), $kokonaisuus->get_id(), Oliotyyppi::$KOKONAISUUS, $kokonaisuus->getHenkiloId());
         $jaa_oikeuksia_nappi = Kayttajanakymat::luo_jaa_lisaoikeuksia_painike($action_os, $action_kyselymuuttujat, $action_kyselyarvot);
         //==================================================================
     }
     if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) {
         //====================== LUKITUKSEN HUOMIOINTI =====================
         // Muokkaus- ja poistonapit lukitsemattomalle tai omalle.
         if (!$this->lukitus_estaa_muokkauksen($kokonaisuus, $omaid)) {
             // Muokkauspainike:
             $elementti = Elementti::$MUUTTUJAA_EI_MAARITELTY;
             $elemryhma = Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY;
             $muokkausnappi = $this->luo_muokkauspainike($kokonaisuus, $elementti, $elemryhma);
             //=============================================================
             if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_JA_POISTAA) {
                 // Poisto vain lapsettomille ja tehtävättömille:
                 if ($kokonaisuus->getOn_lapsia() == 0) {
                     $tehtavat = Tehtava::hae_kokonaisuuden_tehtavat($kokonaisuus->get_id(), $parametriolio->get_tietokantaolio());
                     // Ellei tehtäviä löydy, voidaan poistaa:
                     if (empty($tehtavat)) {
                         // POistopainike:
                         $poistonappi = Html::luo_forminput_painike(array(Attr::classs("article"), Attr::action("{$_SERVER['PHP_SELF']}?id_kokon=" . $kokonaisuus->get_id())), array(Attr::classs("btn btn-" . $btn_type . " btn-" . $btn_size), Attr::name("toiminta"), Attr::value(Painikkeet::$POISTA_KOKON_VALUE)));
                         if ($kokonaisuus->getLukitus() == $omaid) {
                             $poistonappi .= "<span style='color: green; font-weight:bold'>" . Tekstit::$ilm_kokon_omalukitus_paalla . "<br/></span>";
                         }
                     }
                 }
             }
             //=============================================================
             // Julkista/piilota-painike:
             if ($kokonaisuus->getNakyvyys() + 0 === Nakyvyys::$JULKINEN) {
                 $value = Painikkeet::$PIILOTA_KOKON_value;
                 $title = Painikkeet::$PIILOTA_KOKON_title;
             } else {
                 $value = Painikkeet::$JULKISTA_KOKON_value;
                 $title = Painikkeet::$JULKISTA_KOKON_title;
             }
             $onsubmit_funktionimi = "";
             // Tulevaa varten.
             $onsubmit_parametrit = "";
             // Ei ole vielä.
             $form_maaritteet = array("class" => "article", "method" => "post", "action" => "{$_SERVER['PHP_SELF']}?id_kokon=" . $kokonaisuus->get_id() . "&oppiaine_kokon=" . $kokonaisuus->getOppiaine() . "&kieli_id=" . $kokonaisuus->getKieli());
             $input_maaritteet = array("class" => "btn btn-" . $btn_type . " btn-" . $btn_size, "value" => $value, "title" => $title, "name" => Toimintonimet::$kokonaisuustoiminto);
             try {
                 $nakyvyysmuutosnappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
             } catch (Exception $poikkeus) {
                 $nakyvyysmuutosnappi = $poikkeus->getMessage();
             }
             //=============================================================
             // 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" => "article", "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, "class" => "btn btn-" . $btn_type . " btn-" . $btn_size);
                 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" => "article", "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, "class" => "btn btn-" . $btn_type . " btn-" . $btn_size);
                 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();
                 }
             }
             // Tämä liittyy vanhan järjestysnumeron korjaukseen (kun monilla
             // kokonaisuuksilla oli sama järjestysnumero -1). Nykyään
             // tekniikka on muuttunut, eikä sitä yleensä tarvita.
             if ($kokonaisuus->getJarjestysnro() == -1) {
                 $nayta_jarj_luku = " jarjestysnro: " . $kokonaisuus->getJarjestysnro();
                 $class = "rinnakkain";
                 $id = "";
                 $action = "{$_SERVER['PHP_SELF']}?id_kokon=" . $kokonaisuus->get_id() . "&oppiaine_kokon=" . $kokonaisuus->getOppiaine() . "&kieli_id=" . $kokonaisuus->getKieli();
                 $name = Toimintonimet::$kokonaisuustoiminto;
                 $value = "Korjaa jarjestysnro";
                 $korjausnappi = Html::luo_painikelomake($class, $id, $action, $name, $value);
             }
             /**************************************************************/
         } else {
             if ($kokonaisuus->lukitus != Kokonaisuusolio::$LUKITUS_OFF) {
                 $poistonappi = "<span style='color: red; font-weight:bold'>" . Tekstit::$ilm_kokon_lukitus_paalla . "<br/></span>";
             }
         }
         /* Uuden kuvan lisäyspainike tiivistelmään*/
         $onsubmit_funktionimi = "nayta_kuvalomake";
         $onsubmit_parametrit = array($kokonaisuus->get_id());
         /* Kokonaisuuden id*/
         $form_maaritteet = array('method' => 'post', 'class' => 'article', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $kokonaisuus->get_id() . "&" . "kohde_kuva=" . Kuvat::$kohde_kokonaisuus_tiivistelma);
         $input_maaritteet = array('name' => Toimintonimet::$kokonaisuustoiminto, 'value' => Painikkeet::$LISAA_KUVA_TIIVIS_KOKON_VALUE, 'title' => Painikkeet::$LISAA_KUVA_TIIVIS_KOKON_TITLE, "class" => "btn btn-" . $btn_type . " btn-" . $btn_size);
         try {
             $uusi_kuva_tiivis = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
         } catch (Exception $poikkeus) {
             $palaute .= "Virhe kuvanapin luomisessa: " . $poikkeus->getMessage();
         }
         /* Uuden kuvan lisäyspainike selitykseen:*/
         $onsubmit_funktionimi = "nayta_kuvalomake";
         $onsubmit_parametrit = array($kokonaisuus->get_id());
         /* Kokonaisuuden id*/
         $form_maaritteet = array('method' => 'post', 'class' => 'article', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $kokonaisuus->get_id() . "&" . "kohde_kuva=" . Kuvat::$kohde_kokonaisuus_selitys);
         $input_maaritteet = array('name' => Toimintonimet::$kokonaisuustoiminto, 'value' => Painikkeet::$LISAA_KUVA_SELITYS_KOKON_VALUE, 'title' => Painikkeet::$LISAA_KUVA_SELITYS_KOKON_TITLE, "class" => "btn btn-" . $btn_type . " btn-" . $btn_size);
         try {
             $uusi_kuva_seli = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
         } catch (Exception $poikkeus) {
             $palaute .= "Virhe kuvanapin luomisessa: " . $poikkeus->getMessage();
         }
     }
     // Hallinnan / muokkaaajan / luojan osuus päättyy
     // Tehtävien lisääminen sopivasti oikeutetuille:
     if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) {
         $elementti = Elementti::$MUUTTUJAA_EI_MAARITELTY;
         $elemryhma = Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY;
         $uusi_teht_nappi = $this->luo_uusi_teht_painike($kokonaisuus, $elementti, $elemryhma);
     }
     // TEhtävien lisäyspainikekoodi loppuu.
     /* haetaan mahdolliset kuvat */
     $kuvahtml_tiivis = $kokonaisuus->hae_kuvat(Kuvat::$kohde_kokonaisuus_tiivistelma, $omaid, $tietokantaolio, false);
     /* kokolaisuuksien hierarkia: html-otsikkotasot. */
     $class_arvo = "kokonaisuus";
     $painikkeet_ylla = $nayta_ed_nappi . $siirra_ylemmaksi_nappi . $siirra_alemmaksi_nappi . $tehtavanappi . $uusi_teht_nappi . $muokkausnappi . $korjausnappi . $nakyvyysmuutosnappi . $jaa_oikeuksia_nappi . $nayta_seur_nappi;
     $painikkeet_alla = $nayta_koodi_nappi . $uusi_kuva_tiivis . $uusi_kuva_seli . $nayta_selitys_nappi . $poistonappi;
     $otsikko = "<div class = " . $class_arvo . " id=" . $kokonaisuus->get_id() . ">" . "<h" . ($kokonaisuus->getOtsikkotaso() + 1) . ">" . $kokonaisuus->getOtsikkomerkinta() . " " . $kokonaisuus->getOtsikko() . " " . "</h" . ($kokonaisuus->getOtsikkotaso() + 1) . ">";
     /* Haetaan vielä tarvittaessa selitys: */
     if ($selitys_auki) {
         /* 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::$JULKINEN || $kokonaisuus->getHenkiloId() == $omaid || $kayttajan_valtuudet + 0 === Valtuudet::$HALLINTA) {
         $normaali_kokonaisuus = Html::div(array(Attr::classs("kokon_ylanapit")), $painikkeet_ylla) . $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 .= $yksityisilmoitus . $tiivistelma;
             } else {
                 if ($kokonaisuus->getNakyvyys() + 0 === Nakyvyys::$VAIN_KOOSTEESSA) {
                     $normaali_kokonaisuus .= $vainkoosteilmoitus . $tiivistelma;
                 } else {
                     $normaali_kokonaisuus .= $tiivistelma;
                 }
             }
         }
         $normaali_kokonaisuus .= Html::div(array(Attr::classs("kokon_alanapit")), $painikkeet_alla);
         /* Lisätään vielä div selitystä varten: */
         if ($selitys_auki) {
             $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 = "kokonaisuus";
             $otsikko = "<div class = " . $class_arvo . " id=" . $kokonaisuus->get_id() . ">" . "<h" . ($kokonaisuus->getOtsikkotaso() + 1) . ">" . $kokonaisuus->getOtsikkomerkinta() . " " . $kokonaisuus->getOtsikko() . " " . "</h" . ($kokonaisuus->getOtsikkotaso() + 1) . ">";
             $palaute = $nayta_ed_nappi . $siirra_ylemmaksi_nappi . $siirra_alemmaksi_nappi . $nayta_koodi_nappi . $nakyvyysmuutosnappi . $nayta_seur_nappi . $otsikko;
             $palaute .= $piilotushuomautus;
             $palaute .= "</div>";
             /* Kokonaisuus loppuu. */
         } else {
             // Kun jonkun toisen yksityinen / vain koosteessa, eikä hallintavaltuuksia:
             $palaute = "";
         }
     }
     return $palaute;
 }
Example #20
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getHenkilo()
 {
     return $this->hasOne(Henkilo::className(), ['id' => 'henkilo_id']);
 }