/** * Toteuttaa nimenmukaisen toiminnon. * @return Palauteolio $palauteolio */ public function toteuta_poista_PK() { $uusi = true; // false aiheutti vaikeasti huomattavan virheen. Ei // ollut tallennuskelpoinen.. if ($this->nyk_pikakommentti->on_tallennuskelpoinen($uusi)) { $palaute = $this->nyk_pikakommentti->poista(); if ($palaute == Pikakommentti::$OPERAATIO_ONNISTUI) { $ilmoitus = Pikakommenttitekstit::$ilmoitus_pikakommentin_poisto_ok; } else { $ilmoitus = Pikakommenttitekstit::$virheilmoitus_pikakommentin_poisto_eiok; } } else { $ilmoitus = $this->nyk_pikakommentti->tulosta_virheilmoitukset(); } $this->palauteolio->set_ilmoitus($ilmoitus); return $this->palauteolio; }
/** * Toteuttaa nimenmukaisen toiminnon. * @return Palauteolio $palauteolio */ public function toteuta_poista_lajiluokka() { $poistettava = new Lajiluokka($this->tietokantaolio, $this->parametriolio->id_lj); if ($poistettava instanceof Lajiluokka) { if ($poistettava->olio_loytyi_tietokannasta) { $palaute = $poistettava->poista(); if ($palaute === Lajiluokka::$OPERAATIO_ONNISTUI) { $ilmoitus = Bongaustekstit::$lajiluokan_poisto_ok; $this->palauteolio->set_operaatio_onnistui(true); } else { $ilmoitus = Bongaustekstit::$lajiluokka_virheilmoitus_poisto_eiok . " " . $palaute; $this->palauteolio->set_operaatio_onnistui(false); } } else { $ilmoitus = Bongaustekstit::$lajiluokka_virheilmoitus_poisto_eiok . " " . $poistettava->tulosta_virheilmoitukset(); $this->palauteolio->set_operaatio_onnistui(false); } } else { $ilmoitus = Bongaustekstit::$lajiluokka_virheilmoitus_poisto_eiok_lajiluokkaa_ei_loyt; $this->palauteolio->set_operaatio_onnistui(false); } $this->palauteolio->set_ilmoitus($ilmoitus); return $this->palauteolio; }
/** * Toteuttaa kuvan poistovahvistuksen näyttämisen. Mukaan haetaan ja näytetään * poistettava kuva. * * @param Parametrit $parametriolio * @return Palaute $palauteolio */ function toteuta_nayta_poistovahvistus($parametriolio) { $id_kokon = $parametriolio->id_kokon; $id_teht = $parametriolio->id_teht; $kohde = $parametriolio->kohde_kuva; $kohde_id = $parametriolio->id_kohde_kuva; $kuva_id = $parametriolio->id_kuva; $tietokantaolio = $parametriolio->get_tietokantaolio(); $html = ""; /* Palautettava koodi */ $palauteolio = new Palaute(); $ilmoitus = ""; /******************** Painikkeet *****************************/ $peru_nappi = ""; $poistovahvistus_nappi = ""; /* Uuden kuvan lisäyspainike tehtävään*/ $onsubmit_funktionimi = "nayta_kuvan_poistovahvistus"; $onsubmit_parametrit = array($kohde, $kuva_id); /* Kuvan id*/ /* Muotoillaan muuttujan name-arvo kohteen mukaan: */ $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=" . $kuva_id . "&id_kokon=" . $id_kokon . "&id_teht=" . $id_teht . "&" . $id_name . "=" . $kohde_id . "&kohde_kuva=" . $kohde); $input_maaritteet = array('name' => Toimintonimet::$kuvatoiminto, 'value' => Painikkeet::$PERU_POISTO_KUVA_VALUE); try { $peru_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } catch (Exception $poikkeus) { $ilmoitus = "Virhe poiston perumisnapin luomisessa: " . $poikkeus->getMessage(); } /* Poiston vahvistusnappi menee melkein samoilla muuttujilla: */ $input_maaritteet = array('name' => Toimintonimet::$kuvatoiminto, 'value' => Painikkeet::$POISTOVAHVISTUS_KUVA_VALUE); try { $poistovahvistus_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } catch (Exception $poikkeus) { $ilmoitus .= "Virhe poistonapin luomisessa: " . $poikkeus->getMessage(); } /******************** Painikkeet *****************************/ /* Haetaan poistettava kuva: */ $taulunimi = "kuvat"; $sarakenimi = "id"; $hakuarvo = $kuva_id; $hakutulosolio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo); if ($hakutulosolio == Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) { $ilmoitus .= "<br/>" . Tekstit::$ilm_kuva_poisto_kuvaa_ei_loytynyt; $html .= Tekstit::$ilm_kuva_poisto_kuvaa_ei_loytynyt; $html .= "<br/>" . $peru_nappi; } else { $kuva = new Kuva($hakutulosolio, $tietokantaolio); $html .= "<h2>" . Tekstit::$ilm_kuva_poistovahvistus . "</h2>"; $html .= $kuva->nayta_pelkka_kuva(Kuvat::$latauskansion_osoite); $html .= $poistovahvistus_nappi . $peru_nappi; } $palauteolio->set_sisalto($html); $palauteolio->set_ilmoitus($ilmoitus); return $palauteolio; }
/** * Toteuttaa : * @param Parametrit $parametriolio * @return Palaute $palauteolio */ function toteuta_($parametriolio) { $palauteolio = new Palaute(); $palauteolio->set_valikkonaytto(false); $palauteolio->set_sisalto($sisalto); $palauteolio->set_ilmoitus($ilmoitus); return $palauteolio; }
/** * Toteuttaa bongauskuva-albumeiden näyttämisen. * @param Parametrit $parametriolio * @return Palaute $palauteolio */ static function toteuta_bongausalbumeiden_naytto($parametriolio) { $palauteolio = new Palaute(); $sisalto = bongaus_hae_albumit($parametriolio->omaid, $parametriolio->tietokantaolio); $palauteolio->set_sisalto($sisalto); $palauteolio->set_ilmoitus(""); return $palauteolio; }
/** * Hakee kaikki yhteen kokonaisuuteen liittyvät tehtävät ja palauttaa ne * kauniisti html-koodina palauteoliossa. * * @param Palaute $palauteolio */ function toteuta_nayta_tehtavat(&$palauteolio) { $parametriolio = $this->get_parametriolio(); $id_kokon = $parametriolio->id_kokon; $omaid = $parametriolio->get_omaid(); $kayttajan_valtuudet = $parametriolio->get_valtuudet(); $tietokantaolio = $parametriolio->get_tietokantaolio(); $tehtava_html = ""; $sisalto = ""; $palaa_nappi = ""; /* Paluu kokonaisuuksiin. */ $uusi_teht_nappi = ""; // Asetetaan kieli, taso ja oppiaine tehtävän perusteella, kun urlista // tullaan: if ($palauteolio->naytto_urlin_mukaan()) { $parametriolio->set_naytto_urlin_mukaan(true); // Isäntäkokonaisuus haetaan tietokannasta, jos teht_id kunnollinen: $teht = $this->get_olio(); if ($teht instanceof Tehtava && $teht->olio_loytyi_tietokannasta) { $kokon_id = $teht->getKokon_id(); $kokon = new Kokonaisuusolio($kokon_id, $tietokantaolio); // Jos löytyi, asetetaan kieli, taso ja oppiaine, jottei tarvita // urlissa: if ($kokon instanceof Kokonaisuusolio && $kokon->olio_loytyi_tietokannasta) { // Asetetaan nämä, voipi olla tarvetta: $parametriolio->id_kokon = $kokon_id; aseta_kieli_taso_ja_oppiaine($kokon->getKieli(), $kokon->getOppiaine(), $kokon->getTaso(), $parametriolio); // Tekstien käännös. Kielet::kaanna($parametriolio->get_kieli_id()); } } } /* Uusia tehtäviä voivat lisätä (valtuuksiltaan) vähintään muokkaajat. * Kannattaa kyllä olla varovainen, jos muuttaa valtuuksia.. */ if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) { try { $onsubmit_funktionimi = "nayta_tehtavalomake"; $onsubmit_parametrit = array($id_kokon); /* */ $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $id_kokon . "&" . "uusi=1"); $input_maaritteet = array('name' => Toimintonimet::$tehtavatoiminto, 'value' => Painikkeet::$tehtava_uusi_value); $uusi_teht_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } catch (Exception $poikkeus) { $sisalto .= "Uusi tehtävä -painike: " . $poikkeus->getMessage(); } } try { $onsubmit_funktionimi = "nayta_kokonaisuudet"; $onsubmit_parametrit = ""; /* Ei parametreja */ $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon={$id_kokon}"); $input_maaritteet = array('name' => Toimintonimet::$kokonaisuustoiminto, 'value' => Painikkeet::$palaa_kokonaisuuksiin); $palaa_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } catch (Exception $poikkeus) { $sisalto .= "Palaa-painike: " . $poikkeus->getMessage(); } $sisalto .= $uusi_teht_nappi; // Haetaan tehtävät: $tehtavat = $this->hae_tehtavat(); if (empty($tehtavat)) { $palauteolio->set_ilmoitus(Tekstit::$tehtava_ilm_ei_loytynyt); $palauteolio->set_linkkihtml($palaa_nappi); } else { $laskuri = 0; // Tehtävän nro foreach ($tehtavat as $tehtava) { if ($tehtava instanceof Tehtava) { $laskuri++; $tehtava->setNro($laskuri); $painikkeet = $this->luo_tehtavapainikkeet($tehtava->getId()); // Jos on kirjautunut käyttäjä, näytetään väripallolla, onko // yksityinen vai julkinen: if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) { if ($tehtava->getNakyvyys() + 0 === Nakyvyys::$YKSITYINEN) { $tehtava->setNakyvyysmerkkiPrivate(); } else { $tehtava->setNakyvyysmerkkiPublic(); } } $sisalto .= $this->tehtavanakymat->tulosta_tehtava($tehtava, $omaid, $painikkeet); } } // Haetaan tehtävälinkit, jos tehtäviä löytynyt. Lisätään // myös paluupainike linkkien eteen. $linkkihtml = $this->hae_tehtavalinkit($parametriolio); if ($linkkihtml === Tekstit::$tehtava_ilm_ei_loytynyt) { $palauteolio->set_linkkihtml($palaa_nappi); } else { $palauteolio->set_linkkihtml($palaa_nappi . $linkkihtml); } } /* Tämä ottaa palauteolion samalla käyttöön */ $palauteolio->set_sisalto($sisalto); // Haetaan kokonaisuuden tiedot: $kokon = new Kokonaisuusolio($id_kokon, $tietokantaolio); if ($kokon->olio_loytyi_tietokannasta) { $kokon_otsikko = $kokon->getOtsikko(); } else { $kokon_otsikko = "?"; } /* Lisätään otsikkotieto: */ $palauteolio->set_otsikkotarkennus($kokon_otsikko); $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA); // Kieli- yms valikot pois näkyvistä: $palauteolio->set_valikkonaytto(false); // Fixed linkit -näkymä: $palauteolio->set_nayttotapa(Html_koodi::$sisaltoelem_fixed); return $palauteolio; }
/** * Toteuttaa lomakkeen näytön sekä muokkausta että uuden luomista varten. * @return Palaute $palauteolio */ function toteuta_nayta_kokonaisuuslomake(&$palauteolio) { $parametriolio = $this->get_parametriolio(); $palauteolio = new Palaute(); $lomakkeen_naytto_ok = false; // Näytetäänkö lomaketta vai ei. $ilmoitus = ""; $sisalto = ""; // Tulossa koosteesta? Tarkistetaan: $elem_id = $parametriolio->elementti_id; $elem = Elementti::$MUUTTUJAA_EI_MAARITELTY; $elem_kandi = new Elementti($elem_id, $this->get_tietokantaolio()); if ($elem_kandi->olio_loytyi_tietokannasta) { $elem = $elem_kandi; } $elemryhma_id = $parametriolio->elemryhma_id; $elemryhma = Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY; $elemryhma_kandi = new Elementtiryhma($elemryhma_id, $this->get_tietokantaolio()); if ($elemryhma_kandi->olio_loytyi_tietokannasta) { $elemryhma = $elemryhma_kandi; } // Tätä tarvitaan, ellei muokkauslomakkeeseen syystä tai toisesta mennä: $perunappi = Html::luo_forminput_painike(array(), array(Attr::name(Toimintonimet::$kokonaisuustoiminto), Attr::value(Painikkeet::$PERU_KOKON_MUUTOSTEN_TALLENNUS_VALUE))); /* Näytetään lomake, jonka avulla voi luoda uuden kokonaisuuden: */ $omaid = $parametriolio->get_omaid(); if ($parametriolio->get_uusi()) { $ilmoitus = ""; $palauteolio->set_valikkonaytto(false); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK); $lomakkeen_naytto_ok = true; } else { // Vanhan muokkaus: tällöin lukitus on tärkeä! $id_muokattava = $parametriolio->id_kokon; $muokattava = new Kokonaisuusolio($id_muokattava, $this->get_tietokantaolio()); if ($muokattava->olio_loytyi_tietokannasta) { $lukitusarvo = $muokattava->getLukitus(); //===================== LUKITUS ================================ // Jos lukitus päällä, ei päästetä muokkaamaan! if (is_numeric($lukitusarvo) && $lukitusarvo != Kokonaisuusolio::$LUKITUS_OFF && $lukitusarvo != $omaid) { $ilmoitus = Tekstit::$virheilm_kokonaisuus_lukittu_muokkaus_eiok; $sisalto = Tekstit::$virheilm_kokonaisuus_lukittu_muokkaus_eiok; $sisalto .= $perunappi; } else { // Kun ei lukittu vieraalle: // Lukitaan kokonaisuus, ettei kukaan muu pääse samaan aikaan // muokkaamaan samaa kokonaisuutta: $lukon_tila = Kokonaisuusolio::$LUKITUS_ON; $lukitus = $muokattava->aseta_kokonaisuuden_lukitus($omaid, $lukon_tila); /* Ilmoitus, ellei lukitus jostakin syystä onnistunut: */ if ($lukitus != Kokonaisuusolio::$OPERAATIO_ONNISTUI) { $ilmoitus = " " . Tekstit::$virheilm_kokonaisuuden_lukitus_eiok; $sisalto = " " . Tekstit::$virheilm_kokonaisuuden_lukitus_eiok . "<br/>" . $muokattava->tulosta_virheilmoitukset() . "<br/> omaid=" . $omaid . ", nyk lukon tila=" . $lukitusarvo . " ja haluttu_lukon_tila=" . $lukon_tila; $sisalto .= "<br/>" . $perunappi; } else { $lomakkeen_naytto_ok = true; } } $sisalto = $sisalto . "<br/> " . $muokattava->tulosta_kaikki_ilmoitukset() . "<br/>"; } else { // Oliota ei löytynyt tietokannasta: $sisalto = Tekstit::$ilm_kokon_ei_loytynyt . $perunappi; } } //====================================================================== if ($lomakkeen_naytto_ok) { $sisalto = $this->kokonaisuusnakymat->nayta_kokonaisuuslomake($parametriolio->id_kokon, $omaid, $parametriolio->uusi, $parametriolio->ilmoitus_kokon, $parametriolio->get_tietokantaolio(), $parametriolio->oppiaine_kokon, $parametriolio->otsikko_kokon, $parametriolio->tiivis_kokon, $parametriolio->selitys_kokon, $parametriolio->taso_kokon, $parametriolio->jarjestysnro_kokon, $parametriolio->laajennetun_id_kokon, $parametriolio->ylakokonaisuuden_id_kokon, $parametriolio->kieli_id, $parametriolio->nakyvyys_kokon, Toimintonimet::$kokonaisuustoiminto, $this, $parametriolio->kaavakieli, $elem, $elemryhma); } $palauteolio->set_sisalto($sisalto); $palauteolio->set_valikkonaytto(false); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK); $palauteolio->set_ilmoitus($ilmoitus); $palauteolio->set_nayttotapa(Html_koodi::$sisaltoelem_levea); return $palauteolio; }
/** * Toteuttaa koosteen elementtiryhmän näyttämisen sekä normaalisti että * tulostusnäkymässä. Näkymätyylin päättää parametrina annettavan * palauteolion naytettava_oliotyyppi-muuttujan arvo. * * Näytössä noudatetaan koosteen näkyvyyttä, eli jos oikeus on nähdä * kooste, voi samalla nähdä elementtiryhmänkin (tai ainakin ne elementit, * joihin katseluoikeus vähintään). * * HUOM: Elementin näkyvyysasetuksen vaikutusta ei ole otettu täällä huomioon. * Se pitää korjata esim. niin, että yksityinen elementti ei näy muille * kuin tekijälle. Lisävaltuuksiahan ei koosteelle tai elementille voi * antaa (mikä lienee tässä vaiheessa selkeämpää erityisesti elementin * kohdalla). Koosteissa lienee järkevämpi kloonata kuin antaa mahdollisuus * monen muokata. Voi miettiä toki. * * @param Palaute $palauteolio */ public function toteuta_nayta_elementtiryhma(&$palauteolio) { // Tarkistetaan ja asetetaan naytettävä oliotyyppi: if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE_ELEMRYHMA_TULOSTUS) { $tulostusnaytto = true; } else { $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE_ELEMRYHMA); $tulostusnaytto = false; } $html = ""; $nakymapainikkeet = ""; // tulostusnäkymä ja ratkaisujen näyttö $muokkauspainike = ""; $paluu_koosteeseen_painike = ""; $muokkauspainikedivi = ""; $elemryhmapainikkeet = ""; $linkit = ""; $painikkeet = ""; $koostekoodi = ""; $omaid = $this->get_parametriolio()->get_omaid() + 0; $param = $this->get_parametriolio(); $tietokantaolio = $this->get_tietokantaolio(); // Haetaan ensin elementtiryhmä ja sen avulla kooste: $elemryhma = new Elementtiryhma($param->elemryhma_id, $tietokantaolio); $kooste_id = $elemryhma->get_arvo(Elementtiryhma::$sarakenimi_kooste_id); $kooste = new Kooste($kooste_id, $tietokantaolio); if ($kooste->olio_loytyi_tietokannasta && $elemryhma->olio_loytyi_tietokannasta) { $viittausoliot_ok = array(); $elementit_ok = array(); // Tarkistetaan, onko käyttäjällä edes oikeuksia nähdä koostetta: /*======================== käyttäjän oikeudet ========*/ $kohdeoikeudet_kooste = $kooste->hae_kayttajan_oikeudet($omaid); /*====================================================*/ // Luodaan muokkauspainikkeet, jos käyttäjällä on muokkausoikeudet: if ($kohdeoikeudet_kooste >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) { $muokkauspainike = $this->koostenakymat->luo_elemryhman_muokkauspainike($elemryhma); } // Jos riittävät oikeudet, näytetään ja muuten ei. if ($kohdeoikeudet_kooste >= Lisavaltuudet::$SAA_NAHDA_EI_MUOKATA_EI_POISTAA) { $nakymapainikkeet = " " . $this->koostenakymat->luo_tulostusnayttopainike($kooste, $elemryhma) . " " . $this->koostenakymat->luo_koosteen_ratkaisunayttopainikkeet("elemtehtavan_ratkaisut"); $paluu_koosteeseen_painike = " " . $this->koostenakymat->luo_paluu_koosteeseen_nayttopainike($kooste); // Luodaan sitten mahdolliset elementtiryhmäpainikkeet // toiminnon mukaisin oikeustarkistuksin (koostenäkymissä..): // Harkitaan, tarvitaanko! /*$elemryhmat = $kooste->hae_elementtiryhmat(); $elemryhma_current = $elemryhma; $elemryhmapainikkeet = $this->koostenakymat-> luo_elemryhmapainiketaulukko($elemryhmat, $elemryhma_current, $kooste, $kohdeoikeudet_kooste);*/ //============================================================= // Kerätään ne elementit ja oliot, jotka näytetään käyttäjälle. // Sisältö saadaan metodista "luo_koosteen_elementtiosa". $elementit = $elemryhma->hae_elementit(); $divi_mukaan = true; $all_elements = false; $html = $this->luo_koosteen_elementtiosa($kooste, $omaid, $elementit, $divi_mukaan, $all_elements, $viittausoliot_ok, $elementit_ok); $muokkauspainikedivi = Html::luo_div($muokkauspainike . $paluu_koosteeseen_painike, array(Attr::classs("keskitys"), Attr::id("koostepainikerivi"))); } else { // Ellei oikeuksia koosteen (ei myöskään eryhmän) katselemiseen. $html = Html::luo_otsikko(Tekstit::$kooste_ilm_nayttoon_ei_oikeuksia, array(), 4); } $koostekoodi = $this->koostenakymat->nayta_elementtiryhma($muokkauspainikedivi . $elemryhmapainikkeet . $html, $elemryhma); $kooste_id = $kooste->get_id(); // Nykyinen kooste. // Linkit: $wrapped = true; $linkit = $this->luo_koostelinkit($kooste, $elementit_ok, $viittausoliot_ok, $wrapped); } else { $palauteolio->set_ilmoitus(Tekstit::$elementtiryhma_ei_loytynyt . " " . Tekstit::$or . " " . Tekstit::$kooste_koostetta_ei_loytynyt); } $painikkeet = $this->get_koostenakymat()->nayta_painike_paluu_kokonaisuuksiin() . $this->get_koostenakymat()->nayta_painike_paluu_koosteisiin($kooste_id) . $nakymapainikkeet; $palauteolio->set_sisalto($koostekoodi); $palauteolio->set_linkkihtml($painikkeet . "<br/><br/>" . $linkit); /*$palauteolio->set_nayttotapa(Html_koodi::$sisaltoelem_fixed);*/ $palauteolio->set_nayttotapa(Html_koodi::$sidenav_fixed); $palauteolio->set_valikkonaytto(false); }
if ($tehtavatoiminto == Painikkeet::$tehtava_poista_kuva_value) { $palauteolio = new Palaute(); $palauteolio->set_ilmoitus(Tekstit::$ilm_toimintoa_ei_toteutettu); } else { if ($tehtavatoiminto == Painikkeet::$tehtava_peru_uuden_tallennus_value) { $tehtavakontrolleri->toteuta_uuden_tehtavan_peruutus($palauteolio); } else { if ($tehtavatoiminto == Painikkeet::$tehtava_peruminen_value) { $tehtavakontrolleri->toteuta_peru_tehtavan_muokkaus($palauteolio); } else { if ($tehtavatoiminto == Painikkeet::$tehtava_peru_poisto_value) { $tehtavakontrolleri->toteuta_peru_tehtavan_poisto($palauteolio); } else { if ($tehtavatoiminto == Painikkeet::$tehtava_muokkaa_kuva_value) { $palauteolio = new Palaute(); $palauteolio->set_ilmoitus(Tekstit::$ilm_toimintoa_ei_toteutettu); } else { if ($tehtavatoiminto == Painikkeet::$tehtava_lisaa_kuva_value) { $palauteolio = toteuta_nayta_kuvalomake($parametriolio); } else { if ($tehtavatoiminto == Painikkeet::$palaa_tehtaviin_value) { $tehtavakontrolleri->toteuta_nayta_tehtavat($palauteolio); } else { if ($tehtavatoiminto == Painikkeet::$ratkaisu_nayta_ratkaisut_value) { $ratkaisukontrolleri->toteuta_nayta($palauteolio); } else { if ($tehtavatoiminto == Painikkeet::$ratkaisu_uusi_value) { $ratkaisukontrolleri->toteuta_ratkaisulomakkeen_naytto($palauteolio); } else { if ($tehtavatoiminto == Painikkeet::$ratkaisu_muokkaa_value) { $ratkaisukontrolleri->toteuta_ratkaisulomakkeen_naytto($palauteolio);
/** * Hakee kaikki yhteen tehtävään liittyvät ratkaisut ja palauttaa ne * kauniisti html-koodina palauteoliossa. * * @param Palaute $palauteolio */ function toteuta_nayta(&$palauteolio) { $parametriolio = $this->get_parametriolio(); $id_kokon = $parametriolio->id_kokon; $id_teht = $parametriolio->id_teht; $omaid = $parametriolio->get_omaid(); $kayttajan_valtuudet = $parametriolio->get_valtuudet(); $tietokantaolio = $parametriolio->get_tietokantaolio(); $kuvakansion_os = Kuvat::$latauskansion_osoite; $paluunappi = ""; /* Palauttaa käyttäjän tehtävänäkymään. */ $ratkaisu_html = ""; $uusi_ratkaisu_nappi = ""; /* */ $tehtavanakymat = new Tehtavanakymat(); /***************************************************************************/ // Haetaan ensin tehtävä, jotta sen voi nähdä samalla: ********************/ $tehtava_html = ""; $teht = new Tehtava($id_teht, $tietokantaolio); if (!$teht->olio_loytyi_tietokannasta) { $tehtava_html = Tekstit::$tehtava_ilm_ei_loytynyt; } else { $tehtava_html .= $tehtavanakymat->tulosta_tehtava_ilman_painikkeita($omaid, $teht); } /**************************************************************************/ // Asetetaan kieli, taso ja oppiaine kokonaisuuden perusteella, kun urlista // tullaan. Ratkaisun avulla löydetään tehtävä ja sen avulla kokonaisuus: if ($palauteolio->naytto_urlin_mukaan()) { $parametriolio->set_naytto_urlin_mukaan(true); // Isäntäkokonaisuus haetaan tietokannasta, jos ratk_id kunnollinen: $ratk = $this->get_olio(); if ($ratk instanceof Ratkaisu && $ratk->olio_loytyi_tietokannasta) { $teht_id = $ratk->getTeht_id(); $teht = new Tehtava($teht_id, $tietokantaolio); if ($teht->olio_loytyi_tietokannasta) { $kokon_id = $teht->getKokon_id(); } // Lopulta päästään käsiksi kokonaisuuteen: $kokon = new Kokonaisuusolio($kokon_id, $tietokantaolio); // Jos löytyi, asetetaan kieli, taso ja oppiaine, jottei tarvita // urlissa: if ($kokon instanceof Kokonaisuusolio && $kokon->olio_loytyi_tietokannasta) { // Asetetaan nämä, voipi olla tarvetta: $parametriolio->id_kokon = $kokon_id; $parametriolio->id_teht = $teht_id; aseta_kieli_taso_ja_oppiaine($kokon->getKieli(), $kokon->getOppiaine(), $kokon->getTaso(), $parametriolio); // Tekstien käännös. Kielet::kaanna($parametriolio->get_kieli_id()); } } } //===================================================================== try { $paluunappi = $this->tehtavanakymat->button_gobackto_all_exercises($id_teht); } catch (Exception $poikkeus) { $tehtava_html .= "Palaa-painike: " . $poikkeus->getMessage(); } // Uusia ratkaisuja saavat tehdä ne, jotka lisätä tehtäviäkin: if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) { // Uusi_ratkaisu_painike: $onsubmit_funktionimi = "nayta_ratkaisulomake"; $onsubmit_parametrit = array($id_teht); /* Tehtävän id */ $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_teht=" . $id_teht . "&id_kokon=" . $id_kokon . "&uusi=1"); $input_maaritteet = array('name' => Toimintonimet::$tehtavatoiminto, 'value' => Painikkeet::$ratkaisu_uusi_value); $uusi_ratkaisu_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } $ratkaisu_html .= $paluunappi . $tehtava_html; $ratkaisu_html .= "<h3>" . Tekstit::$ratkaisu_ratkaisut_valiotsikko . "</h3>"; $ratkaisu_html .= $uusi_ratkaisu_nappi; $ratkaisut = $this->hae_ratkaisut($id_teht); if (empty($ratkaisut)) { $palauteolio->set_ilmoitus(Tekstit::$ratkaisu_ilm_ei_loytynyt); } else { foreach ($ratkaisut as $ratkaisu) { if ($ratkaisu instanceof Ratkaisu) { // Jos on kirjautunut käyttäjä, näytetään väripallolla, onko // yksityinen vai julkinen: if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) { if ($ratkaisu->getNakyvyys() + 0 === Nakyvyys::$YKSITYINEN) { $ratkaisu->setNakyvyysmerkkiPrivate(); } else { $ratkaisu->setNakyvyysmerkkiPublic(); } } $painikkeet = $this->luo_ratkaisupainikkeet($ratkaisu->getId()); $ratkaisu_html .= $this->ratkaisunakymat->tulosta_ratkaisu($id_kokon, $ratkaisu, $omaid, $painikkeet); } else { $this->lisaa_virheilmoitus(Tekstit::$ratkaisu_ilm_ei_loytynyt); } } } /* Tämä ottaa palauteolion samalla käyttöön */ $palauteolio->set_sisalto($ratkaisu_html); $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_RATKAISU); // Kieli- yms valikot pois näkyvistä: $palauteolio->set_valikkonaytto(false); return $palauteolio; }
/** * * @param Parametrit $parametriolio * @return Palaute $palauteolio */ function toteuta_salasanan_vaihto($parametriolio) { $palauteolio = new Palaute(); $uussalasana = $parametriolio->uussalasana; $salavahvistus = $parametriolio->salavahvistus; $tietokantaolio = $parametriolio->tietokantaolio; $henkilo_id = $parametriolio->henkilo_id; $poistu_valtuuksista = Painikkeet::$poistu_valtuuksista; $muuta_valtuuksia_value = Painikkeet::$muuta_valtuuksia; $muuta_salasana_value = Painikkeet::$muuta_sanasana_value; $kelpoisuus = tarkista_uusi_salasana($uussalasana, $salavahvistus); if ($kelpoisuus == Yleisarvoja::$tarkistetut_tiedot_ok) { $uussalasana = md5($uussalasana); $tallennus = tallenna_salasanamuutos($parametriolio->henkilo_id, $uussalasana, $tietokantaolio); if ($tallennus == Tietokantaolio::$HAKU_ONNISTUI) { //paivita_sessiohenkilotiedot($omaid, $tietokantaolio); $ilmoitus = Tekstit::$kuningastoiminnot_salasana_vaihdettu; $sisaltoteksti = nayta_valtuuslomake($tietokantaolio, $muuta_valtuuksia_value, $muuta_salasana_value, $poistu_valtuuksista); } else { // Jos tallennus epäonnistui: $ilmoitus = "Tietojen lähetys ei onnistunut tai " . "kirjoitit vanhan salasanan!\n Yritä uudestaan!"; $sisaltoteksti = nayta_salasanalomake($henkilo_id, $ilmoitus); } } else { //Jos tiedoissa jokin virhe: $ilmoitus = $kelpoisuus; //Virheilmoitus $sisaltoteksti = nayta_salasanalomake($henkilo_id, $ilmoitus); } $palauteolio->set_ilmoitus($ilmoitus); $palauteolio->set_sisalto($sisaltoteksti); return $palauteolio; }