/** * Hakee elementtiryhmän elementit ja palauttaa ne xml-muodossa. * @param type $omaid * @param Koostekontrolleri $koostekontrolleri */ function hae_elementtiryhman_elementit($omaid, $koostekontrolleri, $koodaus) { $nyk_kooste = $koostekontrolleri->get_olio(); $parametriolio = $koostekontrolleri->get_parametriolio(); $tietokantaolio = $koostekontrolleri->get_tietokantaolio(); // Haetaan elementtiryhmä: $elemryhma = new Elementtiryhma($parametriolio->elemryhma_id, $tietokantaolio); if ($elemryhma->olio_loytyi_tietokannasta) { $elementit = $elemryhma->hae_elementit(); $viittausoliot_ok = array(); $elementit_ok = array(); $divi_mukaan = false; $all_elements = false; return muotoile_elemryhmaelem_xml($elemryhma, $koostekontrolleri, $nyk_kooste, $omaid, $elementit, $divi_mukaan, $all_elements, $viittausoliot_ok, $elementit_ok, $koodaus); } else { return "Error in ajax_kyselyt.php/hae_elementtiryhman_elementit()"; } }
/** * 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()); } }