/** * Tallentaa uuden elementtiryhmän linkkeineen. * @param Palaute $palauteolio */ public function toteuta_tallenna_uusi_elementtiryhma(&$palauteolio) { $param = $this->get_parametriolio(); $tietokantaolio = $this->get_tietokantaolio(); $id = Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY; $uusi = new Elementtiryhma($id, $this->get_tietokantaolio()); // Sijoitetaan saadut arvot oliolle: $uusi->set_arvo($this->get_parametriolio()->kooste_id, Elementtiryhma::$sarakenimi_kooste_id); $uusi->set_arvo($this->get_parametriolio()->elemryhma_nimi, Elementtiryhma::$sarakenimi_nimi); $uusi->set_arvo($this->get_parametriolio()->elemryhma_selitys, Elementtiryhma::$sarakenimi_selitys); $uusi->set_arvo($this->get_parametriolio()->elemryhma_tunnus, Elementtiryhma::$sarakenimi_tunnus); $tallennus = $uusi->tallenna_uusi(); if ($tallennus === Elementtiryhma::$OPERAATIO_ONNISTUI) { // Tallennetaan sitten elementit, jotka valittu tähän elementtiryhmään: $elem_valinnat = $param->elemryhma_elementtivalinnat; // $virheilm = ""; $laskuri = 0; foreach ($elem_valinnat as $id) { $ei_maar_id = Elementtiryhmalinkki::$MUUTTUJAA_EI_MAARITELTY; $uusilinkki = new Elementtiryhmalinkki($ei_maar_id, $tietokantaolio); $uusilinkki->set_arvo($id, Elementtiryhmalinkki::$sarakenimi_elementti_id); $uusilinkki->set_arvo($uusi->get_id(), Elementtiryhmalinkki::$sarakenimi_elementtiryhma_id); $tallennus_linkki = $uusilinkki->tallenna_uusi(); if ($tallennus_linkki === Elementtiryhmalinkki::$OPERAATIO_ONNISTUI) { $laskuri++; } else { $virheilm .= "<br/>" . $uusilinkki->tulosta_virheilmoitukset(); } } if ($laskuri === sizeof($elem_valinnat)) { $this->toteuta_nayta($palauteolio); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK); $palauteolio->set_ilmoitus(Tekstit::$elementtiryhma_ilm_tallennus_ok . " " . $laskuri . " " . Tekstit::$elementtiryhma_ilm_elemlinkkia_tallennettu); } else { $this->toteuta_nayta_ryhmittelylomake($palauteolio); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_TALLENNUS); $palauteolio->set_ilmoitus(Tekstit::$elementtiryhma_virheilm_elementtilinkkien_tallennus . $virheilm); } } else { // Elementtiryhmän tallennus ei onnistunut $this->toteuta_nayta_ryhmittelylomake($palauteolio); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_TALLENNUS); $palauteolio->set_ilmoitus(Tekstit::$elementtiryhma_virheilm_tallennus . $uusi->tulosta_virheilmoitukset()); } }
/** * Toteuttaa uuden tehtävän tallentamisen. Palaute-luokan olio toimii kuten * tavallista sisältäen lopuksi tarpeelliset tiedot toiminnon onnistumisesta yms. * * @param Palaute $palauteolio */ function toteuta_tallenna_uusi(&$palauteolio) { $parametriolio = $this->get_parametriolio(); $id_kokon = $parametriolio->id_kokon; $omaid = $parametriolio->get_omaid(); $otsikko_teht = $parametriolio->otsikko_teht; $tehtavananto_teht = $parametriolio->tehtavananto_teht; $vaikeustaso_teht = $parametriolio->vaikeustaso_teht; $nakyvyys = $parametriolio->nakyvyys_teht; $tietokantaolio = $parametriolio->get_tietokantaolio(); $onnistuminen = Palaute::$VIRHEKOODI_TALLENNUS; // Tarkistetaan tiedot: $tallennettava = new Tehtava(Tehtava::$MUUTTUJAA_EI_MAARITELTY, $tietokantaolio); // Asetetaan arvot paikalleen: $tallennettava->set_arvo($omaid, Tehtava::$sarakenimi_henkilo_id); $tallennettava->set_arvo(time(), Tehtava::$sarakenimi_luomishetki_sek); $tallennettava->set_arvo(-1, Tehtava::$sarakenimi_ed_muutos_sek); $tallennettava->setKokon_id($id_kokon); $tallennettava->setOtsikko($otsikko_teht); $tallennettava->setTehtavananto($tehtavananto_teht); $tallennettava->setVaikeustaso($vaikeustaso_teht); $tallennettava->setNakyvyys($nakyvyys); $palaute = $tallennettava->tallenna_uusi(); if ($palaute === Tehtava::$OPERAATIO_ONNISTUI) { //Aktiivisuusmerkintä: $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $tietokantaolio, time(), Aktiivisuus::$UUDEN_TEHTAVAN_TALLENNUS); if (!$aktiivisuuspalaute) { $this->lisaa_virheilmoitus(Tekstit::$virheilm_aktiivisuuden_tallennus_eiok); } else { $onnistuminen = Palaute::$VIRHEKOODI_KAIKKI_OK; } //================================================================== ////================================================================ // Jos tullaan koosteesta, lisätään tehtävä muös koosteeseen. // tässä tulee se hankaluus, että on hankala täältä käsin asettaa // elementtien järjestystä uusiksi. Hmm.. Elementti on siis sen // kokonaisuuden sisältävä elementti, johon tehtävä lisätty, ja // sen takia "rajaelementti", jotta sen jälkeen on paikka uudelle // tehtävälle. $elem_id = $parametriolio->elementti_id; if ($elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) { $rajaelem = new Elementti($elem_id, $this->get_tietokantaolio()); if ($rajaelem->olio_loytyi_tietokannasta) { $parametriolio->kooste_id = $rajaelem->get_arvo(Elementti::$sarakenimi_kooste_id); } $koostekontr = new Koostekontrolleri($this->get_tietokantaolio(), $parametriolio); $onni = $koostekontr->lisaa_elem_jalkeen($tallennettava, $rajaelem); if ($onni === Kooste::$OPERAATIO_ONNISTUI) { // Mahdollinen elementtiryhmälinkin lisäys, jos lisäys // tapahtuu sieltä käsin: $elemryhma_id = $parametriolio->elemryhma_id; if ($elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) { $kooste = $koostekontr->get_olio(); // Haetaan lisätyn elementin id: $uuden_elem_id = $koostekontr->hae_elem_id($kooste, $tallennettava); // Jos löytyi: if ($uuden_elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) { // Lisätään linkki: $linkki = new Elementtiryhmalinkki(Elementtiryhmalinkki::$MUUTTUJAA_EI_MAARITELTY, $tietokantaolio); $linkki->set_arvo($elemryhma_id, Elementtiryhmalinkki::$sarakenimi_elementtiryhma_id); $linkki->set_arvo($uuden_elem_id, Elementtiryhmalinkki::$sarakenimi_elementti_id); $linkki->tallenna_uusi(); $koostekontr->toteuta_nayta_elementtiryhma($palauteolio); } } else { $koostekontr->toteuta_nayta($palauteolio); } $onnistuminen = Palaute::$VIRHEKOODI_KAIKKI_OK; } else { $onnistuminen = Palaute::$VIRHEKOODI_YLEINEN; $this->lisaa_virheilmoitus($onni); $koostekontr->toteuta_nayta($palauteolio); } $palauteolio->set_ilmoitus($this->tulosta_virheilmoitukset()); // JOtta palataan varmasti samaan elementtiin: $palauteolio->set_muokatun_id($parametriolio->elementti_id); } else { $this->toteuta_nayta_tehtavat($palauteolio); $palauteolio->set_muokatun_id($tallennettava->getId()); $palauteolio->set_ilmoitus(Tekstit::$tehtava_ilm_tallennus_uusi_ok . $this->tulosta_virheilmoitukset()); } //====================================================================== //====================================================================== } else { $parametriolio->uusi = true; // Varmuuden vuoksi. $this->toteuta_tehtavalomakkeen_naytto($palauteolio); $palauteolio->set_ilmoitus($tallennettava->tulosta_virheilmoitukset()); } $palauteolio->set_virhekoodi($onnistuminen); }
/** * Tallentaa linkin parametrina annetun elem_id:n mukaisen elementin * ja elementtiryhmän välille, ellei sellaista jo ole. * Jos linkki on jo olemassa, ei tee muuta kuin palauttaa ilmoituksen (string). * * Onnistuessaa palauttaa viestin Elementtiryhmalinkki::$OPERAATIO_ONNISTUI, * muuten jonkinlaisen virheilmoituksen. * * Tarkistus elementin olemassaolosta tehdään vain, jos toinen parametri * on arvoltaan true. Jos kooste on uusi, ei tarkistusta luonnollisesti * kannata tehdä. * * @param type $elem_id Mahdollisen uuden elementin id. * @param type $tarkista Jos true, niin tehdään tarkistus olemassaolosta. */ function tallenna_elementti_elemryhmaan_jos_uusi($elem_id, $tarkista) { $palaute = Elementtiryhmalinkki::$VIRHE; // Luodaan mahdollisesti uusi linkki: $id = Elementtiryhmalinkki::$MUUTTUJAA_EI_MAARITELTY; $mahd_uusi_linkki = new Elementtiryhmalinkki($id, $this->tietokantaolio); $mahd_uusi_linkki->set_arvo($elem_id, Elementtiryhmalinkki::$sarakenimi_elementti_id); $mahd_uusi_linkki->set_arvo($this->get_id(), Elementtiryhmalinkki::$sarakenimi_elementtiryhma_id); // Tarkistus tehdään vain muokattavaan koosteeseen. Uudessa tallennetaan // kaikki. if ($tarkista) { $osumat = $this->hae_linkit_elementtiin($elem_id); // Elementti ei ole elementtiryhmässä: if (empty($osumat)) { $palaute = $mahd_uusi_linkki->tallenna_uusi(); if ($palaute != Elementtiryhmalinkki::$OPERAATIO_ONNISTUI) { $palaute = Tekstit::$elementtiryhma_virheilm_elementtilinkkien_tallennus . " " . $mahd_uusi_linkki->tulosta_virheilmoitukset(); } } else { // Kaikki hyvin, koska linkki jo olemassa: $palaute = Tekstit::$elementtiryhma_ilm_elem_jo_ryhmassa; } } else { $palaute = $mahd_uusi_linkki->tallenna_uusi(); if ($palaute != Elementtiryhmalinkki::$OPERAATIO_ONNISTUI) { $palaute = Tekstit::$elementtiryhma_virheilm_elementtilinkkien_tallennus . " " . $mahd_uusi_linkki->tulosta_virheilmoitukset(); } } return $palaute; }