/**
  * Toteuttaa elementtiryhmän muokkaustallennuksen.
  * @param Palaute $palauteolio
  */
 public function toteuta_tallenna_elementtiryhman_muokkaus(&$palauteolio)
 {
     $jluku = 0;
     // ekan elementin järjestysluku.
     $param = $this->get_parametriolio();
     $tietokantaolio = $this->get_tietokantaolio();
     $id = $param->elemryhma_id;
     $muokattava = new Elementtiryhma($id, $this->get_tietokantaolio());
     // Sijoitetaan saadut (muutettavat) arvot oliolle:
     $muokattava->set_arvo($param->elemryhma_nimi, Elementtiryhma::$sarakenimi_nimi);
     $muokattava->set_arvo($param->elemryhma_selitys, Elementtiryhma::$sarakenimi_selitys);
     $muokattava->set_arvo($param->elemryhma_tunnus, Elementtiryhma::$sarakenimi_tunnus);
     $tallennus = $muokattava->tallenna_muutokset();
     // Jos tallennus ok tai sitten elementtiryhmaen perustietoja ei muutettu, käydään
     // läpi mahdolliset muutokset elementeissä.
     if ($tallennus === Elementtiryhma::$OPERAATIO_ONNISTUI || $muokattava->tulosta_viimeisin_virheilmoitus() === Perustustekstit::$ilm_tiedoissa_ei_muutoksia) {
         // Tallennetaan sitten elementit, jotka valittu tähän elementtiryhmään ja
         // jotka eivät ennestään siihen kuulu. Toisaalta pitää myös
         // poistaa ne elementit, joiden valinta on poistettu, ja jotka aiemmin
         // ovat kuuluneet tähän elementtiryhmään.
         // Tämä ei tarkista oikeuksia, mutta taidan luottaa siihen, että
         // vain luoja tai vastaava muuttaa elementtiryhmää, jolloin
         // ei väliä niin oikeuksilla kai.
         $entiset_elem = $muokattava->hae_elementit();
         $elem_valinnat = $param->elemryhma_elementtivalinnat;
         $virheilm = "";
         $laskuri = 0;
         // Uusien elementtien määrä.
         $muokkauslaskuri = 0;
         // Laskee vanhojen elem lkm:n.
         foreach ($elem_valinnat as $id) {
             $tallennus_elem = $muokattava->tallenna_elementti_elemryhmaan_jos_uusi($id, true);
             if ($tallennus_elem === Elementti::$OPERAATIO_ONNISTUI) {
                 $laskuri++;
             } else {
                 if ($tallennus_elem === Tekstit::$elementtiryhma_ilm_elem_jo_ryhmassa) {
                     $muokkauslaskuri++;
                 } else {
                     if ($tallennus_elem != Tekstit::$elementtiryhma_ilm_elem_jo_ryhmassa) {
                         $virheilm .= "<br/>" . $tallennus_elem;
                     }
                 }
             }
         }
         // Poistetaan ryhmästä elementit, joiden valinta poistettu. Toisin
         // sanoen poistetaan vain linkit ryhmän ja elementin väliltä.
         $poistettujen_lkm = $muokattava->poista_elementtilinkit_joiden_valinta_poistettu($elem_valinnat);
         // Tarkistus: vanhat - poistetut + tallennetut =? valinnat
         // ja toisaalta uudet+muokatut=?valitut
         if (sizeof($entiset_elem) + $laskuri - $poistettujen_lkm + 0 === sizeof($elem_valinnat) && $laskuri + $muokkauslaskuri === sizeof($elem_valinnat)) {
             $this->toteuta_nayta_elementtiryhma($palauteolio);
             $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK);
             $palauteolio->set_ilmoitus(Tekstit::$elementtiryhma_ilm_muokkaustallennus_ok . "<br/>" . $laskuri . " " . Tekstit::$elementtiryhma_ilm_elemlinkkia_tallennettu . " ja " . $poistettujen_lkm . " " . Tekstit::$elementtiryhma_ilm_elem_poistettu . "<br/> " . Tekstit::$elementtiryhma_ilm_Elementteja_yhteensa . sizeof($elem_valinnat));
         } else {
             $this->toteuta_nayta_ryhmittelylomake($palauteolio);
             $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_TALLENNUS);
             $virheilm .= " " . $laskuri . " " . Tekstit::$elementtiryhma_ilm_elemlinkkia_tallennettu . " " . Tekstit::$ja . " " . $poistettujen_lkm . " " . Tekstit::$elementtiryhma_ilm_elem_poistettu . " " . "<br/> " . Tekstit::$elementtiryhma_ilm_Elementteja_yhteensa . sizeof($elem_valinnat) . "<br/> " . $muokkauslaskuri . " " . Tekstit::$elementtiryhma_ilm_elementtia_oli_ryhmassa_ennestaan . $muokattava->tulosta_virheilmoitukset();
             $palauteolio->set_ilmoitus(Tekstit::$elementtiryhma_virheilm_elementtilinkkien_tallennus . $virheilm);
         }
     } else {
         // Koosteen tallennus ei onnistunut
         $this->toteuta_nayta_ryhmittelylomake($palauteolio);
         $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_TALLENNUS);
         $palauteolio->set_ilmoitus(Tekstit::$elementtiryhma_virheilm_tallennus . $muokattava->tulosta_virheilmoitukset());
     }
 }