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