/**
  * 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);
 }
Example #3
0
 /**
  * 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;
 }