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