/** * Toteuttaa tehtävän muokkauksen perumisen. * @param Palaute $palauteolio */ function toteuta_peru_tehtavan_muokkaus(&$palauteolio) { // Otetaan selville, tuleekö käyttäjä koosteesta vai // kokonaisuuksista ja näytetään vastaava juttu: $parametriolio = $this->get_parametriolio(); $tietokantaolio = $this->get_tietokantaolio(); $muokattavan_id = $this->get_olio()->get_id(); $elem_id = $parametriolio->elementti_id; $elemryhma_id = $parametriolio->elemryhma_id; // Tarkistetaan, mistä ollaan tulossa ja minne menossa: $koostekontrolleri = new Koostekontrolleri($tietokantaolio, $parametriolio); if ($elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) { $koostekontrolleri->toteuta_nayta_elementtiryhma($palauteolio); // JOtta palataan varmasti samaan elementtiin: $palauteolio->set_muokatun_id($parametriolio->elementti_id); } else { if ($elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) { $koostekontrolleri->toteuta_nayta($palauteolio); } else { $this->toteuta_nayta_tehtavat($palauteolio); $palauteolio->set_muokatun_id($muokattavan_id); } } $palauteolio->set_ilmoitus(Tekstit::$tehtava_ilm_muokkaus_peruttu); }
/** * Toteuttaa kokonaisuuden muokkauksen tallentamisen. Erityisesti käyttäjän * tekemät muutokset kokonaisuuteen kulkevat aina tämän metodin kautta, * lukuunottamatta näkyvyyttä ja lukitusta. * * Huomaa, ettei lukitusta tai käyttöoikeuksia tarkisteta täällä. Ne * tarkistetaan Kayttajakontrolleri-luokan metodeilla kokonaisuuden * tulostuksen (ruudulle) yhteydessä, jolloin vain asianmukaisille * käyttäjille annetaan painikkeet muokkausta tai poistoa varten. * * Joitakin ominaisuuksia ei voi muuttaa täällä: * luomishetki_sek - ei muuteta * ed_muutos_sek - automaattinen * näkyvyys - arvoja ei aseteta täällä (oma metodi Kokonaisuusoliossa) * on_lapsia - arvoja ei aseteta täällä (oma metodi Kokonaisuusoliossa) * lukitus - arvoja ei aseteta täällä (oma metodi Kokonaisuusoliossa) * jarjestysluku - arvoja ei aseteta täällä (oma metodi Kokonaisuuskontrollerissa) * kieli_id - arvoa ei aseteta täällä. * taso - ei muuteta * oppiaine - ei muuteta. * * Lukitus poistetaan oliolta onnistuneen operaation päätteeksi. * * @param Palaute $palauteolio */ function toteuta_tallenna_muokkaus(&$palauteolio) { $parametriolio = $this->get_parametriolio(); $ilmoitus = ""; // Tarkistuksessa putsataan vain riskimerkit. $parametriolio->set_uusi(false); $omaid = $parametriolio->get_omaid(); $otsikko_kokon = $parametriolio->get_otsikko_kokon(); $tiivis_kokon = $parametriolio->get_tiivis_kokon(); $selitys_kokon = $parametriolio->get_selitys_kokon(); $laajennetun_id_kokon = $parametriolio->get_laajennetun_id_kokon(); $ylakokonaisuuden_id_kokon = $parametriolio->get_ylakokonaisuuden_id_kokon(); $nakyvyys_kokon = $parametriolio->nakyvyys_kokon; $muutettavan_kokon_id = $parametriolio->id_kokon; $virhekoodi = Palaute::$VIRHEKOODI_KAIKKI_OK; // Haetaan kokonaisuuden omistaja, jotta voidaan tarkistaa: $vanha_kokon = $this->get_olio(); if ($vanha_kokon instanceof Kokonaisuusolio && $vanha_kokon->olio_loytyi_tietokannasta) { $muutettavan_kokon_luojan_id = $vanha_kokon->getHenkiloId(); } else { $muutettavan_kokon_luojan_id = Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY; } //============== Tarkistetaan, onko käyttäjä vielä oikeasti online // ja valtuudet kunnossa: ====== $kohdeoikeudet = Henkilo::hae_kayttajan_kohdeoikeudet($muutettavan_kokon_luojan_id, $omaid, Oliotyyppi::$KOKONAISUUS, $muutettavan_kokon_id, $this->get_tietokantaolio()); /*====================================================================*/ //====================================================================== // Muokattava aolio: $muokattava = new Kokonaisuusolio($muutettavan_kokon_id, $this->get_tietokantaolio()); if ($kohdeoikeudet >= Lisavaltuudet::$SAA_MUOKATA_EI_POISTAA) { if ($muokattava->olio_loytyi_tietokannasta) { $palauteolio->set_virhekoodi($virhekoodi); // Lisätään kokonaisuudelle saadut mahdollisesti muutettavat parametrit // (vain ne, joita ylipäätään voidaan muuttaa): $muokattava->set_arvo($otsikko_kokon, Kokonaisuusolio::$sarakenimi_otsikko); $muokattava->set_arvo($tiivis_kokon, Kokonaisuusolio::$sarakenimi_tiivis); $muokattava->set_arvo($selitys_kokon, Kokonaisuusolio::$sarakenimi_selitys); $muokattava->set_arvo($laajennetun_id_kokon, Kokonaisuusolio::$sarakenimi_laajennetun_id); $muokattava->set_arvo($ylakokonaisuuden_id_kokon, Kokonaisuusolio::$sarakenimi_ylakokonaisuuden_id); $muokattava->set_arvo($nakyvyys_kokon, Kokonaisuusolio::$sarakenimi_nakyvyys); // Tallennus tietokantaan: $palaute = $muokattava->tallenna_muutokset(); // Jos tiedoissa on vikaa, esim. tyhjä otsikko: if ($palaute != Kokonaisuusolio::$OPERAATIO_ONNISTUI) { $this->get_parametriolio()->set_ilmoitus_kokon($muokattava->tulosta_virheilmoitukset()); $this->lisaa_virheilmoitus($muokattava->tulosta_virheilmoitukset()); $this->toteuta_nayta_kokonaisuuslomake($palauteolio); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_YLEINEN); $ilmoitus .= Tekstit::$ilm_kokon_muokkaustallennus_eiok; } else { // Kaikki kunnossa. $ilmoitus = " "; /* Poistetaan kokonaisuuden lukitus: */ $lukon_tila = Kokonaisuusolio::$LUKITUS_OFF; $lukituksen_avaus = $muokattava->aseta_kokonaisuuden_lukitus($parametriolio->get_omaid(), $lukon_tila); /* Ilmoitus, ellei lukitus jostakin syystä onnistunut: */ if ($lukituksen_avaus != Kokonaisuusolio::$OPERAATIO_ONNISTUI) { $ilmoitus .= " " . Tekstit::$virheilm_kokonaisuuden_lukituksen_avaus_eiok . $muokattava->tulosta_virheilmoitukset(); $virhekoodi = Palaute::$VIRHEKOODI_LUKITUS_KOKONAISUUDET; } else { $ilmoitus = Tekstit::$ilm_kokon_muokkaustallennus_ok; //Aktiivisuusmerkintä: $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $this->get_tietokantaolio(), time(), Aktiivisuus::$KOKONAISUUDEN_MUUTOSTEN_TALLENNUS); if (!$aktiivisuuspalaute) { $this->lisaa_virheilmoitus(Tekstit::$virheilm_aktiivisuuden_tallennus_eiok); } else { $onnistuminen = Palaute::$VIRHEKOODI_KAIKKI_OK; } } // Huom: täällä hämäävästi käyttöön tulee uusi palauteolio, jolloin // esim aiemmat virhekoodin asetukset eivät voimassa. if ($parametriolio->tallennuskesken) { $parametriolio->uusi = false; $this->toteuta_nayta_kokonaisuuslomake($palauteolio); } else { // Otetaan selville, tuleekö käyttäjä koosteesta vai // kokonaisuuksista ja näytetään vastaava juttu: $parametriolio = $this->get_parametriolio(); $elem_id = $parametriolio->elementti_id; $elemryhma_id = $parametriolio->elemryhma_id; // Tarkistetaan, mistä ollaan tulossa ja minne menossa: $koostekontrolleri = new Koostekontrolleri($this->get_tietokantaolio(), $parametriolio); if ($elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) { $koostekontrolleri->toteuta_nayta_elementtiryhma($palauteolio); $palauteolio->set_muokatun_id($elem_id); } else { if ($elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) { $koostekontrolleri->toteuta_nayta($palauteolio); $palauteolio->set_muokatun_id($elem_id); } else { $this->toteuta_nayta($palauteolio); $palauteolio->set_muokatun_id($muutettavan_kokon_id); } } } // Tämän pitää olla vasta täällä (ks. ylempi kommentti). $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK); // Lisätään mahdollinen lukitusvirhekoodi if ($virhekoodi != Palaute::$VIRHEKOODI_KAIKKI_OK) { $palauteolio->set_virhekoodi($virhekoodi); $ilmoitus .= Tekstit::$ilm_kokon_muokkaustallennus_eiok . ": " . $virhekoodi; } } } else { $this->lisaa_virheilmoitus(Tekstit::$ilm_kokon_ei_loytynyt); } } else { // Kun sessio loppunut tai muuten väärä muokkaaja: $this->lisaa_virheilmoitus(Tekstit::$virheilm_kokon_muok_ei_valtuuksia); $this->toteuta_nayta($palauteolio); } $palauteolio->set_ilmoitus($ilmoitus . "<br/>" . $this->tulosta_virheilmoitukset()); return $palauteolio; }
/** * * @param Palaute $palauteolio * @param Parametrit $parametriolio * @param Koostekontrolleri $koostekontrolleri * @param Tehtavakontrolleri $tehtavakontrolleri * @param Ratkaisukontrolleri $ratkaisukontrolleri * @param Kokonaisuuskontrolleri $kokonaisuuskontrolleri */ function nayta_urlin_mukaan(&$palauteolio, &$parametriolio, &$koostekontrolleri, &$tehtavakontrolleri, &$ratkaisukontrolleri, &$kokonaisuuskontrolleri) { $palauteolio->set_oma(Yleiset_arvot::$toimintaa_ei_maaritelty); $palauteolio->set_naytto_urlin_mukaan(true); // Mietittävää: kielen, oppiaineen ja tason määritykset voisi laittaa // toteuta-metodeiden sisälle, jottei niitä tarvita roskaamaan urlia. // Lähinnä koosteiden kohdalla pitää // miettiä, koska tällä hetkellä kaikki näkyy kaikille, eli siis // niiden näkyvyyttä ei ole rajoitettu kielen, oppiaineen tai tason // perusteella. Mahdollisesti kielen perusteella näin voisi tehdäkin, // vaikka muut jättäisi ennalleen. // Huomaa myös, että urlissa voi olla pelkästään kielen, aineen ja // tason arvot, jolloin pitäisi osata näyttää ensimmäinen vastaava // kokonaisuus. // Otetaan kuitenkin parametrinolion arvo mukaan [, jos se on jokin muu // oletus "kokonaisuus"] (esim kun urlin perusteella tullaan): //if($parametriolio->naytettava != Palaute::$NAYTETTAVA_OLIOTYYPPI_KOKONAISUUS){ $palauteolio->set_naytettava_oliotyyppi(Oliotyyppi::muunna_palauteolion_arvoksi($parametriolio->naytettava)); //} // Alla pitäisi riittää palauteolion arvo. Se ohjaa nykyisin // näytettävää oliota. Muu-arvo (vähän kuin ei-määr) viittaa siihen, // ettei url määritä näytettävää oliota, joten pitää "arvata" se muuten. if ($palauteolio->get_naytettava_oliotyyppi() != Palaute::$NAYTETTAVA_OLIOTYYPPI_MUU) { if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA) { $tehtavakontrolleri->toteuta_nayta_tehtavat($palauteolio); } else { if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_RATKAISU) { $ratkaisukontrolleri->toteuta_nayta($palauteolio); } else { if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE) { // Haetaan kooste kieltä, tasoa ja oppiainetta varten: $kooste = $koostekontrolleri->get_olio(); if ($kooste->olio_loytyi_tietokannasta) { $kieli = $kooste->get_arvo(Kooste::$sarakenimi_kieli); $oppiaine = $kooste->get_arvo(Kooste::$sarakenimi_oppiaine); $taso = $kooste->get_arvo(Kooste::$sarakenimi_taso); // Kokonaisuusarvot ohjaavat eniten sovellusta: aseta_kieli_taso_ja_oppiaine($kieli, $oppiaine, $taso, $parametriolio); Kielet::kaanna($kieli); $koostekontrolleri->toteuta_nayta($palauteolio); } else { $koostekontrolleri->toteuta_nayta_koosteet($palauteolio); $palauteolio->set_ilmoitus(Tekstit::$kooste_koostetta_ei_ole_tai_ei_voida_nayttaa); } } else { if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE_TULOSTUS) { $koostekontrolleri->toteuta_nayta_tulostus($palauteolio); } else { if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE_ELEMRYHMA) { // Haetaan kooste kieltä, tasoa ja oppiainetta varten: $kooste = $koostekontrolleri->get_olio(); if ($kooste->olio_loytyi_tietokannasta) { $kieli = $kooste->get_arvo(Kooste::$sarakenimi_kieli); $oppiaine = $kooste->get_arvo(Kooste::$sarakenimi_oppiaine); $taso = $kooste->get_arvo(Kooste::$sarakenimi_taso); // Kokonaisuusarvot ohjaavat eniten sovellusta: aseta_kieli_taso_ja_oppiaine($kieli, $oppiaine, $taso, $parametriolio); Kielet::kaanna($kieli); $koostekontrolleri->toteuta_nayta($palauteolio); } else { $koostekontrolleri->toteuta_nayta_koosteet($palauteolio); $palauteolio->set_ilmoitus(Tekstit::$kooste_koostetta_ei_ole_tai_ei_voida_nayttaa); } } else { // default: $kokonaisuuskontrolleri->toteuta_nayta($palauteolio); } } } } } //====================================================================== //====================================================================== // Kun näytettävää oliota ei urlissa, tarkistetaan mahdolliset // id-arvot. Jos jokin määritelty, mennään sinne sitten! } else { // Tarkistetaan, onko kooste-id:tä: if ($parametriolio->kooste_id != Kooste::$MUUTTUJAA_EI_MAARITELTY || $parametriolio->elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) { $nayta_kooste = true; if ($parametriolio->elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) { $nayta_kooste = false; } // Haetaan kooste kieltä, tasoa ja oppiainetta varten: // Huomaa, että ei välttämättä Kooste-olio! $kooste = $koostekontrolleri->get_olio(); if ($kooste instanceof Kooste && $kooste->olio_loytyi_tietokannasta) { $kieli = $kooste->get_arvo(Kooste::$sarakenimi_kieli); $oppiaine = $kooste->get_arvo(Kooste::$sarakenimi_oppiaine); $taso = $kooste->get_arvo(Kooste::$sarakenimi_taso); // Kokonaisuusarvot ohjaavat eniten sovellusta: aseta_kieli_taso_ja_oppiaine($kieli, $oppiaine, $taso, $parametriolio); Kielet::kaanna($kieli); // NÄytetään joko kooste tai elementtiryhmä: if ($nayta_kooste) { $koostekontrolleri->toteuta_nayta($palauteolio); } else { $koostekontrolleri->toteuta_nayta_elementtiryhma($palauteolio); } } else { $koostekontrolleri->toteuta_nayta_koosteet($palauteolio); $palauteolio->set_ilmoitus(Tekstit::$kooste_koostetta_ei_ole_tai_ei_voida_nayttaa); } // Huomaa järjestys: ensin tarkistetaan ratkaisu, sitten teht ja // vasta lopuksi kokonaisuus (jonka id tahtoo kummitella muistissa). } else { if ($parametriolio->id_teht != Tehtava::$MUUTTUJAA_EI_MAARITELTY) { // Näytetään yksi tehtävä: $tehtavakontrolleri->toteuta_nayta($palauteolio); } else { if ($parametriolio->id_ratk != Ratkaisu::$MUUTTUJAA_EI_MAARITELTY) { $ratkaisukontrolleri->toteuta_nayta($palauteolio); } else { if ($parametriolio->id_kokon != Kokonaisuusolio::$kokon_ei_maaritelty) { $kokonaisuuskontrolleri->toteuta_nayta($palauteolio); // Ellei näytettävää oliota, viedään oppiaineen mukaisesti: } else { if ($parametriolio->oppiaine_kokon != Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY) { $kokonaisuuskontrolleri->toteuta_nayta($palauteolio); } else { $kokonaisuuskontrolleri->toteuta_nayta($palauteolio); } } } } } } }
/** * 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 ratkaisun muokkauksen perumisen. * @param Palaute $palauteolio */ function toteuta_peru_ratkaisun_muokkaus(&$palauteolio) { // Otetaan selville, tuleekö käyttäjä koosteesta vai // kokonaisuuksista ja näytetään vastaava juttu: $parametriolio = $this->get_parametriolio(); $tietokantaolio = $this->get_tietokantaolio(); $elem_id = $parametriolio->elementti_id; if ($elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) { $elem = new Elementti($elem_id, $tietokantaolio); if ($elem->olio_loytyi_tietokannasta) { $parametriolio->kooste_id = $elem->get_arvo(Elementti::$sarakenimi_kooste_id); } $koostekontr = new Koostekontrolleri($this->get_tietokantaolio(), $parametriolio); $koostekontr->toteuta_nayta($palauteolio); // JOtta palataan varmasti samaan elementtiin: $palauteolio->set_muokatun_id($parametriolio->elementti_id); } else { $this->toteuta_nayta($palauteolio); // JOtta palataan varmasti samaan : $palauteolio->set_muokatun_id($parametriolio->id_ratk); } $palauteolio->set_ilmoitus(Tekstit::$ratkaisu_ilm_muokkaus_peruttu); }