public function testaa_ratkaisun_luominen() { $this->lisaa_lihava_kommentti("Luodaan testiratkaisu (testiomistajalle):"); $ratkaisukontrolleri = new Ratkaisukontrolleri($this->tietokantaolio, $this->parametriolio); $ratkaisunakymat = new Ratkaisunakymat(); $ratk = $this->luo_testiratkaisu(); if ($ratk instanceof Ratkaisu) { $this->lisaa_kommentti("Testiratkaisun luominen onnistui"); // Näytetään ratkaisu eri valtuuksilla: $this->lisaa_kommentti("Testiratkaisun tulostus tehtävän lisäys " . "-valtuuksilla:"); $id_kokon = -1; $id_teht = -1; // Muutetaan valtuudet: $this->testiapuhenkilo->set_arvo(Valtuudet::$TEHTAVA_LISAYS, Henkilo::$sarakenimi_valtuudet); $this->testiapuhenkilo->tallenna_muutokset(); $this->lisaa_kommentti("Apuhenkilön valtuudet (pitäs olla 5)= " . $this->testiapuhenkilo->get_arvo(Henkilo::$sarakenimi_valtuudet)); /*$this->lisaa_kommentti("Muutetaan ratkaisun omistajaksi testiapuhenkilö"); $ratk->setHenkilo_id($this->testiapuhenkilo->get_id()); $ratk->tallenna_muutokset();*/ // Tämä vaaditaan, jotta valtuudet menevät läpi: $omaid = $this->testiapuhenkilo->get_id(); $id_ratk = $ratk->getId(); $this->parametriolio->set_omaid($this->testiapuhenkilo->get_id()); $painikkeet = $ratkaisukontrolleri->luo_ratkaisupainikkeet($id_ratk); $this->lisaa_kommentti($ratkaisukontrolleri->tulosta_kaikki_ilmoitukset()); $ratkaisukontrolleri->tyhjenna_kaikki_ilmoitukset(); $this->lisaa_kommentti($ratkaisunakymat->tulosta_ratkaisu($id_kokon, $ratk, $omaid, $painikkeet)); $this->testiapuhenkilo->tyhjenna_virheilmoitukset(); $this->lisaa_kommentti("Testiratkaisun tulostus hallinta-valtuuksilla:"); $id_kokon = -1; $id_teht = -1; // Muutetaan testiapuhenkilön valtuudet: if ($this->testiapuhenkilo->set_arvo(Valtuudet::$HALLINTA, Henkilo::$sarakenimi_valtuudet) == Pohja::$OPERAATIO_ONNISTUI) { if ($this->testiapuhenkilo->tallenna_muutokset() === Henkilo::$OPERAATIO_ONNISTUI) { // Tässä === aiheutti virheen. if ($this->testiapuhenkilo->get_arvo(Henkilo::$sarakenimi_valtuudet) == Valtuudet::$HALLINTA) { $omaid = $this->testiapuhenkilo->get_id(); $id_ratk = $ratk->getId(); $painikkeet = $ratkaisukontrolleri->luo_ratkaisupainikkeet($id_ratk); $this->lisaa_kommentti($ratkaisukontrolleri->tulosta_kaikki_ilmoitukset()); $this->lisaa_kommentti($ratkaisunakymat->tulosta_ratkaisu($id_kokon, $ratk, $omaid, $painikkeet)); } else { $this->lisaa_virheilmoitus("Virhe: apuhenkilön " . " valtuusmuutostallennus ok, mutta arvo ei! <br/>" . "Valtuuden arvo = " . $this->testiapuhenkilo->get_arvo(Henkilo::$sarakenimi_valtuudet)); } } else { $this->lisaa_virheilmoitus("Virhe apuhenkilön " . " valtuusmuutoksen tallennuksessa! <br/>" . $this->testiapuhenkilo->tulosta_virheilmoitukset()); } } else { $this->lisaa_virheilmoitus("Virhe apuhenkilön " . " valtuusmuutoksen asetuksessa! <br/>" . $this->testiapuhenkilo->tulosta_virheilmoitukset()); } // Muutetaan valtuudet takaisin tehtävien lisäykseen: $this->testiapuhenkilo->set_arvo(Valtuudet::$TEHTAVA_LISAYS, Henkilo::$sarakenimi_valtuudet); $this->testiapuhenkilo->tallenna_muutokset(); $this->testiratkaisu = $ratk; } else { $this->lisaa_virheilmoitus("Virhe testiratkaisun luomisessa"); } }
/** * Näyttää kaikkien nykyiseen kieleen (kaikki tasot ja oppiaineet) liittyvien * kokonaisuuksien otsikoiden, joista klikkaamalla pääsee tarkastelemaan * kokonaisuutta. * * Näytetään julkiset ja omat yksityiset kokonaisuudet. Tulevaisuudessa * voi lisätä tarvittaessa mahdollisuuden antaa oikeuksia muille. * * IDEA: toisen koosteen kloonaaminen voisi olla sallittavaa. Tällöin voi * kloonista tehdä omanlaisen, mutta toisen tekemä jää ennalleen. * * @param Palaute $palauteolio */ public function toteuta_nayta_koosteet(&$palauteolio) { $koosteet = array(); $omaid = $this->get_kayttaja()->get_id(); $kieli = $this->get_parametriolio()->kieli_id; $oppiaine = $this->get_parametriolio()->oppiaine_kokon; $taso = $this->get_parametriolio()->taso_kokon; // Järjestäminen ei oikein onnistu täällä erikoisen nimenrakennuksen // takia (kielien, tasojen ja oppiaineiden nimet mukana, joita ei ole // tietokannassa). $hakulause = "SELECT kt.id from " . Kooste::$taulunimi . " AS kt" . " JOIN " . Henkilo::$taulunimi . " AS hlot" . " ON kt." . Kooste::$sarakenimi_henkilo_id . "=hlot.id" . " WHERE kt." . Kooste::$sarakenimi_nakyvyys . "=" . Nakyvyys::$JULKINEN . " OR kt." . Kooste::$sarakenimi_henkilo_id . "=" . $omaid . " ORDER BY hlot." . Henkilo::$sarakenimi_sukunimi . "," . " kt." . Kooste::$sarakenimi_organisaatio; $osumat = $this->get_tietokantaolio()->tee_omahaku_oliotaulukkopalautteella($hakulause); foreach ($osumat as $kooste_tk_olio) { $kooste = new Kooste($kooste_tk_olio->id, $this->get_tietokantaolio()); // Jos löytyi tietokannasta, lisätään koosteisiin: if ($kooste->olio_loytyi_tietokannasta) { array_push($koosteet, $kooste); } } //============ luodaan koosterivit (yksi rivi - yksi kooste): ========== $rivit = array(); foreach ($koosteet as $kooste) { if ($kooste instanceof Kooste) { $nayttopainike = ""; $muokkauspainike = ""; $poistopainike = ""; $tekija_id = $kooste->get_arvo(Kooste::$sarakenimi_henkilo_id); $tekija = new Henkilo($tekija_id, $this->get_tietokantaolio()); $org = $kooste->get_arvo(Kooste::$sarakenimi_organisaatio); if (!empty($org)) { $org .= "_"; } $nimike = $tekija->get_arvo(Henkilo::$sarakenimi_sukunimi) . "_" . $org . Kielet::hae_kielen_nimi_lyhennos($kooste->get_arvo(Kooste::$sarakenimi_kieli)) . "_" . strtoupper(Oppiaineet::hae_oppiaineen_nimi2($kooste->get_arvo(Kooste::$sarakenimi_oppiaine))) . "_" . Koulutasot::hae_koulutason_nimi($kooste->get_arvo(Kooste::$sarakenimi_taso), false) . "_" . $kooste->get_arvo(Kooste::$sarakenimi_nimi) . " "; //========= Näyttöpainike ==================================== $nayttopainike = $this->koostenakymat->luo_koosteen_nayttopainike($kooste); //========= Muokkauspainike ja Poistopainike vain tietyille ==== // Täällä tarkistetaan oikeudet eka: $user = $this->get_kayttaja(); if ($user->olio_loytyi_tietokannasta) { if ($tekija_id + 0 === $user->get_id() + 0 || $user->get_arvo(Henkilo::$sarakenimi_valtuudet) + 0 === Valtuudet::$HALLINTA) { $muokkauspainike = $this->koostenakymat->luo_koosteen_muokkauspainike($kooste); $poistopainike = $this->koostenakymat->luo_koosteen_poistopainike($kooste); } } if ($kooste->getNakyvyys() + 0 === Nakyvyys::$JULKINEN) { $on_julkinen = true; } else { $on_julkinen = false; } $rivi = $this->koostenakymat->luo_koosterivi($nimike, $nayttopainike, $muokkauspainike, $poistopainike, $on_julkinen); array_push($rivit, $rivi); //============================================================== } } $tuloste = $this->koostenakymat->nayta_koosteet($rivit); //====================================================================== // Luodaan paluu-painike: $paluupainike = $this->koostenakymat->create_button_gobacktoarticles(); // Luodaan Uusi kooste -painike, jos käyttäjä kirjautunut ja hänellä // koostevaltuudet: $uusikoostepainike = ""; if (Henkilo::on_kirjautunut($omaid, $this->get_tietokantaolio())) { if ($this->get_kayttaja()->get_arvo(Henkilo::$sarakenimi_valtuudet) >= Valtuudet::$KOOSTE_LISAYS) { $uusikoostepainike = $this->koostenakymat->create_button_new_summary(); } } $palauteolio->set_sisalto($tuloste); $palauteolio->set_linkkihtml($paluupainike . $uusikoostepainike); $palauteolio->set_nayttotapa(Html_koodi::$sidenav_fixed); $palauteolio->set_valikkonaytto(false); }
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; }
/** * 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; }
/** * 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; }
/** * 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; }