/** * * @param Palaute $palauteolio */ public function toteuta_tallenna_uusi(&$palauteolio) { $param = $this->get_parametriolio(); $tietokantaolio = $this->get_tietokantaolio(); $id = Kooste::$MUUTTUJAA_EI_MAARITELTY; $uusi = new Kooste($id, $this->get_tietokantaolio()); // Sijoitetaan saadut arvot oliolle: $uusi->set_arvo($this->get_parametriolio()->get_omaid(), Kooste::$sarakenimi_henkilo_id); $uusi->set_arvo($this->get_parametriolio()->kieli_id, Kooste::$sarakenimi_kieli); $uusi->set_arvo($this->get_parametriolio()->oppiaine_kokon, Kooste::$sarakenimi_oppiaine); $uusi->set_arvo($this->get_parametriolio()->taso_kokon, Kooste::$sarakenimi_taso); $uusi->set_arvo($this->get_parametriolio()->kooste_nakyvyys, Kooste::$sarakenimi_nakyvyys); $uusi->set_arvo($this->get_parametriolio()->kooste_nimi, Kooste::$sarakenimi_nimi); $uusi->set_arvo($this->get_parametriolio()->kooste_otsikko, Kooste::$sarakenimi_otsikko); $uusi->set_arvo($this->get_parametriolio()->kooste_selitys, Kooste::$sarakenimi_selitys); $uusi->set_arvo($this->get_parametriolio()->kooste_tyyppi, Kooste::$sarakenimi_tyyppi); // Organisaatiotunnus jätetään tyhjäksi, ellei määritelty (ei pakollinen): if ($this->get_parametriolio()->kooste_org === Kooste::$MUUTTUJAA_EI_MAARITELTY) { $this->get_parametriolio()->kooste_org = ""; } $uusi->set_arvo($this->get_parametriolio()->kooste_org, Kooste::$sarakenimi_organisaatio); $tallennus = $uusi->tallenna_uusi(); if ($tallennus === Kooste::$OPERAATIO_ONNISTUI) { // Tallennetaan sitten elementit, jotka valittu tähän koosteeseen: $elem_valinnat = $param->kooste_elementtivalinnat; // Pitää muistaa, että tehtävillä valinta-arvo on "teht_X", missä // X viittaa id-arvoon. Kokonaisuuksilla pelkkä id. $virheilm = ""; $laskuri = 0; foreach ($elem_valinnat as $id) { $tallennus_elem = $uusi->tallenna_elementti_jos_uusi($id, false); if ($tallennus_elem === Elementti::$OPERAATIO_ONNISTUI) { $laskuri++; } else { $virheilm .= "<br/>" . $tallennus_elem; } } if ($laskuri === sizeof($elem_valinnat)) { $this->toteuta_nayta_koosteet($palauteolio); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK); $palauteolio->set_ilmoitus(Tekstit::$kooste_ilm_tallennus_ok . " " . $laskuri . " " . Tekstit::$kooste_ilm_elem_tallennettu); } else { $this->toteuta_nayta_koostelomake($palauteolio); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_TALLENNUS); $palauteolio->set_ilmoitus(Tekstit::$kooste_virheilm_elementtien_tallennus . $virheilm); } } else { // Koosteen tallennus ei onnistunut $this->toteuta_nayta_koostelomake($palauteolio); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_TALLENNUS); $palauteolio->set_ilmoitus(Tekstit::$kooste_virheilm_tallennus . $uusi->tulosta_virheilmoitukset()); } }