/**
  * Asettaa elementin elem_id-parametrin osoittaman elementin jälkeen.
  * 
  * Palauttaa arvon Kooste::$OPERAATIO_ONNISTUI tai virheilmoituksen.
  * 
  * @param type $uusi_viittausolio Kokonaisuus tai Tehtävä
  * @param Elementti $rajaelem
  */
 public function lisaa_elem_jalkeen($uusi_viittausolio, $rajaelem)
 {
     $parametriolio = $this->get_parametriolio();
     $palaute = Kooste::$VIRHE;
     // Haetaan ensin kooste, johon uusi elementti sijoitetaan:
     $kooste = new Kooste($rajaelem->get_arvo(Elementti::$sarakenimi_kooste_id), $this->get_tietokantaolio());
     // Kun kysymys muokkaamisesta, haetaan koosteeseen kuuluvat elementit:
     $elementtitunnisteet = array();
     if ($kooste instanceof Kooste && $kooste->olio_loytyi_tietokannasta) {
         $vanhat_elementit = $kooste->hae_elementit();
         // Haetaan koosteen vanhojen elementtien tiedot myös, jotta
         // voidaan käyttää jo olemassaolevia toimintoja. Samalla
         // sujautetaan uusi mukaan oikeaan paikkaan eli rajaelementin taakse:
         foreach ($vanhat_elementit as $elementti) {
             if ($elementti instanceof Elementti) {
                 $viittausolio = $elementti->hae_viittausolio();
                 $tunniste = $this->luo_valittulistan_valintaruudun_value($viittausolio);
                 array_push($elementtitunnisteet, $tunniste);
                 // Jos elementti on rajaelem, lisätään uusi tänne:
                 if ($elementti->get_id() + 0 === $rajaelem->get_id() + 0) {
                     $tunniste = $this->luo_valittulistan_valintaruudun_value($uusi_viittausolio);
                     array_push($elementtitunnisteet, $tunniste);
                 }
             }
         }
         // Asetetaan parametriolioon uusi lista tunnisteista ja tallennetaan.
         $parametriolio->kooste_elementtivalinnat = $elementtitunnisteet;
         $parametriolio->kooste_id = $kooste->get_id();
         $entiset_elem = $vanhat_elementit;
         $elem_valinnat = $elementtitunnisteet;
         $virheilm = "";
         $jluku = 0;
         $laskuri = 0;
         $muokkauslaskuri = 0;
         // Laskee vanhojen elem järjestyslukumuokkaukset.
         foreach ($elem_valinnat as $id) {
             $jluku++;
             $tarkista = true;
             $tallennus_elem = $kooste->aseta_jluku_ja_tallenna_elementti_jos_uusi($id, $tarkista, $jluku);
             if ($tallennus_elem === Elementti::$OPERAATIO_ONNISTUI) {
                 $laskuri++;
             } else {
                 if ($tallennus_elem === Tekstit::$kooste_ilm_elem_jo_koosteessa) {
                     $muokkauslaskuri++;
                 } else {
                     if ($tallennus_elem != Tekstit::$kooste_ilm_elem_jo_koosteessa) {
                         $virheilm .= "<br/>" . $tallennus_elem;
                     }
                 }
             }
         }
         // Tarkistus: vanhat + tallennetut =? valinnat
         // ja toisaalta uudet+muokatut=?valitut
         if (sizeof($entiset_elem) + $laskuri === sizeof($elem_valinnat) && $laskuri + $muokkauslaskuri === sizeof($elem_valinnat)) {
             $this->lisaa_kommentti(Tekstit::$kooste_ilm_muokkaustallennus_ok . ": " . $laskuri . " " . Tekstit::$kooste_ilm_elem_tallennettu . "<br/> " . Tekstit::$kooste_ilm_Elementteja_yhteensa . sizeof($elem_valinnat));
             $palaute = Kooste::$OPERAATIO_ONNISTUI;
         } else {
             $this->lisaa_virheilmoitus($virheilm .= " " . $laskuri . " " . Tekstit::$kooste_ilm_elem_tallennettu . "<br/> " . Tekstit::$kooste_ilm_Valintoja_yhteensa . sizeof($elem_valinnat) . "<br/> " . $muokkauslaskuri . " " . Tekstit::$kooste_ilm_elem_jlukua_muokattu . $kooste->tulosta_virheilmoitukset());
             $palaute = $this->tulosta_virheilmoitukset();
         }
     }
     return $palaute;
 }