/** * 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); }