/** * 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!"); } }
/** * 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; } }
/** * 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; }
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); }
/** * 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; }
/** * 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; }
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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * @return \yii\db\ActiveQuery */ public function getHenkilo() { return $this->hasOne(Henkilo::className(), ['id' => 'henkilo_id']); }