/**
  * Toteuttaa kokonaisuuden poistotoiminnon ellei kokonaisuudella ole lapsia.
  * Jos on, käsketään poistamaan ensin lapset. Jos kokonaisuus poistetaan,
  * tarkistetaan sen mahdollisen yläkokonaisuuden lapsekkuus.
  *
  * HUOM! On_lapsia kenttä tietokannassa aiheutti tästä aika monimutkaisen.
  * Ajattelin sen kuitenkin kannattavan, koska se vähentää suuresti
  * tietokantahakuja usein toistuvissa hauissa. 
  * 
  * Yllä mainitusta syystä on olennaisen tärkeää käyttää tätä metodia
  * kokonaisuuden poistamiseen.
  *
  * @return Palaute $palauteolio
  */
 function toteuta_poista(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $onnistuminen = Palaute::$VIRHEKOODI_YLEINEN;
     $id_kokon = $parametriolio->get_id_kokon();
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $palauteolio = new Palaute();
     $palaute = "";
     // Tämä tulee palauteolion sisällöksi.
     $poistettava = new Kokonaisuusolio($id_kokon, $tietokantaolio);
     //================== Edellisen kokonaisuuden id_n haku =================
     // Kun kokonaisuus poistetaan, pitää sitä edeltävän kokonaisuuden id
     // hakea, jotta se näätetään ensi kerralla. Ellei edellistä ole,
     // näytetään seuraava.
     $ed_id = Kokonaisuusolio::$kokon_ei_maaritelty;
     $oppiaineindeksi = $parametriolio->oppiaine_kokon;
     $taso = $parametriolio->taso_kokon;
     $kieli_id = $parametriolio->kieli_id;
     $omaid = $parametriolio->get_omaid();
     $ylakokonaisuuden_id = -1;
     // 1. tason kokonaisuudet - ei yläkokonaisuutta.
     $otsikkomerkinta_alussa = "";
     $otsikkotaso_alussa = Kokonaisuusolio::$otsikkotaso_oletus;
     $kokonaisuustaulukko = array();
     // Seuraava on aina taulukko (array), joka voi olla tyhjä:
     $kokonaisuusoliot = $this->hae_kokonaisuusoliopuu($kokonaisuustaulukko, $otsikkomerkinta_alussa, $otsikkotaso_alussa, $kieli_id, $oppiaineindeksi, $taso, $ylakokonaisuuden_id, $tietokantaolio, $omaid);
     // ASetetaan edellisten ja seuraavien kokonaisuuksien id:t:
     $this->aseta_ed_ja_seur_idt_kokonaisuuksiin($kokonaisuusoliot);
     if (!empty($kokonaisuusoliot)) {
         foreach ($kokonaisuusoliot as $kokonolio) {
             if ($kokonolio instanceof Kokonaisuusolio && $kokonolio->get_id() == $id_kokon) {
                 $ed_id = $kokonolio->getEdellisenId_kaikista();
                 if ($ed_id == Kokonaisuusolio::$kokon_edellista_ei_ole) {
                     $ed_id = $kokonolio->getSeuraavanId_kaikista();
                 }
             }
         }
     }
     //=========================================================================
     if ($poistettava->olio_loytyi_tietokannasta) {
         // Poistometodi tarkastaa, onko lapsia ja huolehtii on_lapsia-arvoista.
         $palaute = $poistettava->poista();
         if ($palaute === Malliluokkapohja::$OPERAATIO_ONNISTUI) {
             // Poistetaan mahdolliset tyhjään osoittavat kooste-elementit:
             if (Elementti::poista_elementit($tietokantaolio, Oliotyyppi::$KOKONAISUUS, $id_kokon) === Malliluokkapohja::$OPERAATIO_ONNISTUI) {
                 $palaute = Tekstit::$ilm_kokon_poisto_ok;
                 //Aktiivisuusmerkintä:
                 $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $tietokantaolio, time(), Aktiivisuus::$KOKONAISUUDEN_POISTO);
                 if (!$aktiivisuuspalaute) {
                     $this->lisaa_virheilmoitus(Tekstit::$virheilm_aktiivisuuden_tallennus_eiok);
                 } else {
                     $onnistuminen = Palaute::$VIRHEKOODI_KAIKKI_OK;
                 }
             } else {
                 $palaute = Tekstit::$kooste_virheilm_elementtien_poistosiivous_ei_ok;
             }
         } else {
             $palaute = Tekstit::$virheilm_kokonaisuuden_poisto;
         }
     } else {
         $palaute = Tekstit::$ilm_kokon_poisto_eiok_kokonaisuutta_ei_loytynyt;
     }
     $parametriolio->set_id_kokon($ed_id);
     // Jotta osaa näyttää edellisen.
     $this->toteuta_nayta($palauteolio);
     $palauteolio->set_ilmoitus($palaute);
     $palauteolio->set_virhekoodi($onnistuminen);
     $palauteolio->set_valikkonaytto(true);
     $palauteolio->nayta_kiintolinkit();
     return $palauteolio;
 }
Exemplo n.º 2
0
 /**
  * Toteuttaa tehtävän poiston. HUOM! Tehtävään liittyvät ratkaisut poistetaan
  * automaattisesti tietokantatasolla samoin kuin kuvalinkit tehtävään ja
  * ratkaisuihin.
  * 
  * HUOM! Täällä ei oikeuksia enää tarkasteta. Voisi olla ihan hyvä ajatus
  * tarkistaa poisto-oikeus täälläkin vielä. En tiedä, mutta saattaa olla
  * mahdollista jossakin tilanteissa, että tähän metodiin pääsisi käsiksi väärä
  * henkilö(?).
  *
  * @param Palaute $palauteolio
  */
 function toteuta_poista(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $id_kokon = $parametriolio->id_kokon;
     $id_teht = $parametriolio->id_teht;
     $omaid = $parametriolio->get_omaid();
     $kayttajan_valtuudet = $parametriolio->get_valtuudet();
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $palaute = "";
     /* Ilmoitus. */
     $palautesisalto = "";
     $poistettava = new Tehtava($id_teht, $tietokantaolio);
     if ($poistettava->olio_loytyi_tietokannasta) {
         $palaute = $poistettava->poista();
         if ($palaute === Tehtava::$OPERAATIO_ONNISTUI) {
             // Poistetaan mahdolliset tyhjään osoittavat kooste-elementit:
             if (Elementti::poista_elementit($tietokantaolio, Oliotyyppi::$TEHTAVA, $id_teht) === Malliluokkapohja::$OPERAATIO_ONNISTUI) {
                 $palaute = Tekstit::$tehtava_ilm_poisto_ok;
             } else {
                 $palaute = Tekstit::$kooste_virheilm_elementtien_poistosiivous_ei_ok;
                 $this->lisaa_virheilmoitus($palaute);
             }
         } else {
             $palaute = Tekstit::$tehtava_virheilm_poisto_eiok;
             $this->lisaa_virheilmoitus($palaute);
         }
     } else {
         $palaute = Tekstit::$tehtava_virheilm_poistettavaa_ei_loytynyt;
         $this->lisaa_virheilmoitus($palaute);
     }
     $this->toteuta_nayta_tehtavat($palauteolio);
     $palauteolio->set_ilmoitus($palaute);
     $palauteolio->set_valikkonaytto(false);
 }
Exemplo n.º 3
0
 /**
  * Toteuttaa ratkaisun poiston. Linkit kuviin poistetaan automaattisesti
  * tietokantatasolla.
  * @param Palaute $palauteolio
  */
 function toteuta_poista(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $id_kokon = $parametriolio->id_kokon;
     $id_teht = $parametriolio->id_teht;
     $id_ratk = $parametriolio->id_ratk;
     $omaid = $parametriolio->get_omaid();
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $onnistuminen = Palaute::$VIRHEKOODI_POISTO;
     $palaute = "";
     /* Ilmoitus. */
     $palautesisalto = "";
     $palauteolio = new Palaute();
     $poistettava = new Ratkaisu($id_ratk, $tietokantaolio);
     if ($poistettava->olio_loytyi_tietokannasta) {
         $palaute = $poistettava->poista();
         if ($palaute === Ratkaisu::$OPERAATIO_ONNISTUI) {
             // Poistetaan mahdolliset tyhjään osoittavat kooste-elementit:
             if (Elementti::poista_elementit($tietokantaolio, Oliotyyppi::$RATKAISU, $id_ratk) === Malliluokkapohja::$OPERAATIO_ONNISTUI) {
                 // Aktiivisuusmerkintä:
                 $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $tietokantaolio, time(), Aktiivisuus::$RATKAISUN_POISTO);
                 if (!$aktiivisuuspalaute) {
                     $this->lisaa_virheilmoitus(Tekstit::$virheilm_aktiivisuuden_tallennus_eiok);
                 } else {
                     // Onnistuminen:
                     $onnistuminen = Palaute::$VIRHEKOODI_KAIKKI_OK;
                 }
                 $palaute = Tekstit::$ratkaisu_ilm_poisto_ok;
             } else {
                 $palaute = Tekstit::$kooste_virheilm_elementtien_poistosiivous_ei_ok;
             }
         } else {
             $palaute = Tekstit::$ratkaisu_virheilm_poisto_eiok;
         }
     } else {
         $palaute = Tekstit::$ratkaisu_virheilm_poistettavaa_ei_loytynyt;
     }
     $this->toteuta_nayta($palauteolio);
     $palauteolio->set_ilmoitus($palaute);
     $palauteolio->set_virhekoodi($onnistuminen);
     $palauteolio->set_valikkonaytto(false);
 }