/** * 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; }
/** * 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); }
/** * 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); }