/** * Hakee koostelomakkeeseen valittavat elementit ja palauttaa tiedot xml-muodossa. */ function hae_elementit($parametriolio, $koostekontrolleri, $tietokantaolio, $koodaus) { $xml = ""; $kooste_kieli = $parametriolio->koostelomake_valittavat_kieli; $kooste_taso = $parametriolio->koostelomake_valittavat_taso; $kooste_oppiaine = $parametriolio->koostelomake_valittavat_oppiaine; $kokonaisuudet = $koostekontrolleri->hae_koostelomakkeen_kokonaisuudet($kooste_kieli, $kooste_taso, $kooste_oppiaine); // Jos kysymys on muokkauksesta, pitää koosteeseen kuuluvat kokonaisuudet // merkitä valituiksi ja sitä varten tarvitaan elementit: $kooste = new Kooste($parametriolio->kooste_id, $tietokantaolio); if ($kooste->olio_loytyi_tietokannasta) { $valitut_elementit = $kooste->hae_elementit(); $koostekontrolleri->merkitse_valitut($kokonaisuudet, $valitut_elementit); } $elem_html = $koostekontrolleri->hae_elementtilista($kokonaisuudet, false); $xml = '<?xml version="1.0" encoding="' . $koodaus . '"?>' . '<linkit>' . '<isannan_id>' . Koostekontrolleri::$koostelom_elemtaulukkoid . '</isannan_id>' . '<html>' . htmlspecialchars($elem_html) . '</html>' . '</linkit>'; return $xml; }
/** * Hakee elem_id:n koosteen ja viittausolion perusteella, eli siis jos * on olemassa elementti tällainen. Palauttaa id tai arvon * Elementti::MUUTTUJA_EI_MAARITELTY, ellei elementtiä ole. * @param Kooste $kooste * @param type $viittausolio */ public function hae_elem_id($kooste, $viittausolio) { $elem_id = Elementti::$MUUTTUJAA_EI_MAARITELTY; $elementit = $kooste->hae_elementit(); foreach ($elementit as $elem) { if ($elem instanceof Elementti && $viittausolio instanceof Kokonaisuusolio) { if ($elem->get_arvo(Elementti::$sarakenimi_olio_id) + 0 === $viittausolio->get_id() && $elem->get_arvo(Elementti::$sarakenimi_oliotyyppi) + 0 === Oliotyyppi::$KOKONAISUUS) { $elem_id = $elem->get_id(); } } else { if ($elem instanceof Elementti && $viittausolio instanceof Tehtava) { if ($elem->get_arvo(Elementti::$sarakenimi_olio_id) + 0 === $viittausolio->get_id() && $elem->get_arvo(Elementti::$sarakenimi_oliotyyppi) + 0 === Oliotyyppi::$TEHTAVA) { $elem_id = $elem->get_id(); } } else { if ($elem instanceof Elementti && $viittausolio instanceof Ratkaisu) { if ($elem->get_arvo(Elementti::$sarakenimi_olio_id) + 0 === $viittausolio->get_id() && $elem->get_arvo(Elementti::$sarakenimi_oliotyyppi) + 0 === Oliotyyppi::$RATKAISU) { $elem_id = $elem->get_id(); } } } } } return $elem_id; }