/** * Toteuttaa poiston ja palauttaa taulukon, jossa ilmoitus ja havaintojen haku. * @param Parametrit $parametriolio * @return Palaute $palauteolio */ function toteuta_poisto_hav($parametriolio) { $omaid = $parametriolio->omaid; $id_hav = $parametriolio->id_hav; $ylaluokka_id = $parametriolio->ylaluokka_id_lj; $tietokantaolio = $parametriolio->tietokantaolio; $palauteolio = new Palaute(); $taulu = "bhavainnot"; $taulun_sarake = "id"; $hakuarvo = $id_hav; $poistopalaute = $tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo); if ($poistopalaute == Bongausasetuksia::$tietokantahaku_onnistui) { $ilmoitus = Bongaustekstit::$ilm_havainnon_poisto_ok; //=============== PIkakommenttien poisto ======================= // Luodaan Kontrolleri_pikakommentit-olio, joka huolehtii // orpojen pikakommenttien poistosta $kontrolleri = new Kontrolleri_pikakommentit($tietokantaolio, $parametriolio, ""); $kohde_tyyppi = Pikakommentti::$KOHDE_BONGAUS; $kohde_id = $id_hav; $poistettu_lkm = $kontrolleri->poista_pikakommentit($tietokantaolio, $kohde_tyyppi, $kohde_id); $ilmoitus .= Pikakommenttitekstit::ilmoitus_pikakommentit_poistettu($poistettu_lkm); //============================================================== } else { $ilmoitus = Bongaustekstit::$ilm_havainnon_poisto_eiok; } $sis = hae_havainnot($parametriolio); $palauteolio->set_sisalto($sis); $palauteolio->set_ilmoitus($ilmoitus); $palauteolio->set_oikean_palkin_naytto(true); return $palauteolio; }
/** * Poistaa poistettuun havaintoon osoittavat pikakommentit ja asettaa * havaintoon osoittavien bkuvalinkkien havainto_id:n arvoksi -1. Vie * muuttujiin tiedot tehdyistä operaatioista. */ public function siivoa_tietokanta_poiston_jalkeen() { $this->poistetut_pikakommentit_lkm = Kontrolleri_pikakommentit::poista_pikakommentit($this->tietokantaolio, Pikakommentti::$KOHDE_BONGAUS, $this->get_id()); // Muutetaan kuvalinkkien havainto_id niin, ettei osoita olemattomaan: $palaute = $this->tietokantaolio->tee_UPDATEhaku(Tietokannan_taulunimet::$bkuvalinkit, array("havainto_id"), array(-1), "havainto_id", $this->get_id(), 1000000); if ($palaute != Tietokantaolio::$HAKUVIRHE) { $this->muutetut_bkuvalinkit_lkm = $palaute; } }
/** * * @param <type> $valinnat * @param Tietokantaolio $tietokantaolio * @param int $omaid * @return <string> Palauttaa viestin suorituksen onnistumisesta, joka * näytetään käyttäjälle. */ function poista_suoritukset(&$valinnat, $tietokantaolio, $omaid) { $vastaus = ''; $lkm = 0; if (!isset($valinnat)) { $vastaus = "Poisto epäonnistui!\n Valintataulukko on määrittelemätön"; } else { if ($valinnat == "" || sizeof($valinnat) == 0) { $vastaus = "Poisto epäonnistui!\n Yhtään valittua riviä ei löytynyt!"; } else { $ilmoitus = ""; $poistettu_lkm = 0; // PIkakommentitt! foreach ($valinnat as $id) { $poisto = $tietokantaolio->poista_rivi("suoritukset", "id", $id); if ($poisto == "onnistui") { $lkm++; //=============== PIkakommenttien poisto ======================= // Luodaan Kontrolleri_pikakommentit-olio, joka huolehtii //orpojen pikakommenttien poistosta (parametriolio tarvitaan siihen): $kokoelmanimi = ""; //Ei tarvetta $paraolio = new Parametrit($kokoelmanimi, $omaid, $tietokantaolio); $kontrolleri = new Kontrolleri_pikakommentit($tietokantaolio, $paraolio, ""); $kohde_tyyppi = Pikakommentti::$KOHDE_LIIKUNTASUORITUS; $kohde_id = $id; $poistettu_lkm += $kontrolleri->poista_pikakommentit($tietokantaolio, $kohde_tyyppi, $kohde_id); //============================================================== } } if ($poistettu_lkm == 0) { $ilmoitus = "<br /> Poistettavia pikakommentteja ei löytynyt."; } else { $ilmoitus .= "<br /> Pikakommentit (yht. " . $poistettu_lkm . " kpl) poistettu."; } $vastaus = "Suorituksia poistettiin onnistuneesti " . $lkm . " kpl. " . $ilmoitus; } } return $vastaus; }
/** * Poistaa yhden kuvan, sen pikkukuvat ja siihen liittyvät kuva_albumi_linkit * tai bkuvalinkit. * * Lisäys 15.1.2012: Poistaa myös kuvaan liittyvät pikakommentit! * * Palauttaa viestin onnistumisesta. * * @param <type> $oma_id * @param <type> $id_kuva * @param Tietokantaolio $tietokantaolio * @param <type> $kokoelmanimi * @return string Palauteviesti */ function poista_kuva($oma_id, $id_kuva, $tietokantaolio, $kokoelmanimi) { // Haetaan kuvan src poistoa varten: $hakulause = "SELECT src, tiedostonimi, henkilo_id\n FROM kuvat\n WHERE id = {$id_kuva}"; $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause); $osumataulukko = $tietokantaolio->hae_osumarivit_olioina($hakutulos); if (sizeof($osumataulukko) == 0) { $src = ""; $tiedostonimi = ""; $henkilo_id = ""; } else { $src = $osumataulukko[0]->src; $tiedostonimi = $osumataulukko[0]->tiedostonimi; $henkilo_id = $osumataulukko[0]->henkilo_id; } // Varmistus: kuvan poistoon pitää olla kuvan tallentaja tai hallitsija- //valtuudet: $taulunimi = "henkilot"; $sarakenimi = "id"; $hakuarvo = $oma_id; $henkilo_olio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo); if ($henkilo_olio != Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) { $valtuus = $henkilo_olio->valtuudet; } else { $valtuus = Valtuudet::$RAJOITETTU; } if ($oma_id == $henkilo_id || $valtuus == Valtuudet::$HALLINTA) { // POistetaan kuvatiedot tietokannasta: $taulu = "kuvat"; $taulun_sarake = "id"; $hakuarvo = $id_kuva; $ilmoitus = $tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo); // Määritellään pikkukuvien kansio-osoite: $pikkukuvien_kansio = Kuva::$kansion_os_kuvat_pikkukuvat; if ($kokoelmanimi == Kuva::$KUVAT_BONGAUS) { $pikkukuvien_kansio = Kuva::$kansion_os_bongauskuvat_pikkukuvat; } // Jos kuvan poisto onnistui, poistetaan myös orvoiksi jääneet linkit: if ($ilmoitus == "onnistui") { $osoite_minikuva1 = $pikkukuvien_kansio . "/" . Kuva::$pikkukuva1_nimen_osa . $tiedostonimi; $osoite_minikuva2 = $pikkukuvien_kansio . "/" . Kuva::$pikkukuva2_nimen_osa . $tiedostonimi; $osoite_minikuva3 = $pikkukuvien_kansio . "/" . Kuva::$pikkukuva3_nimen_osa . $tiedostonimi; // Tämä tuhoaa tiedoston lopullisesti: $todellinen_poisto = unlink($src); $todellinen_poistomini1 = unlink($osoite_minikuva1); $todellinen_poistomini2 = unlink($osoite_minikuva2); $todellinen_poistomini3 = unlink($osoite_minikuva3); // Aktiivisuusmerkintä: $viimeksi_aktiivi = time(); $aktiivisuuslaji = Aktiivisuus::$KUVAN_POISTO; paivita_aktiivisuus($oma_id, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji); // Varmistetaan poistot: if ($todellinen_poisto) { $ilmoitus = "Kuvan poisto ok!"; } else { $ilmoitus = "Virhe kuvan poistossa! Kuvan tiedot poistettu\n tietokannasta, mutta kuvatiedoston poisto ei onnistunut. "; } if ($todellinen_poistomini1) { $ilmoitus .= " Poistettu: minikuva1"; } else { $ilmoitus .= " Virhe: minikuvan1 poisto epäonnistui!"; } if ($todellinen_poistomini2) { $ilmoitus .= " minikuva2"; } else { $ilmoitus .= " Virhe: minikuvan2 poisto epäonnistui!"; } if ($todellinen_poistomini3) { $ilmoitus .= " ja minikuva3 JESS!"; } else { $ilmoitus .= " Virhe: minikuvan3 poisto epäonnistui!"; } //=============== PIkakommenttien poisto =========================== // Luodaan Kontrolleri_pikakommentit-olio, joka huolehtii //orpojen pikakommenttien poistosta (parametriolio tarvitaan siihen): $paraolio = new Parametrit($kokoelmanimi, $oma_id, $tietokantaolio); $kontrolleri = new Kontrolleri_pikakommentit($tietokantaolio, $paraolio, ""); if ($kokoelmanimi == Kuva::$KUVAT_ALBUMIT) { $kohde_tyyppi = Pikakommentti::$KOHDE_KUVA_TAVIS; $kohde_id = $id_kuva; } else { if ($kokoelmanimi == Kuva::$KUVAT_BONGAUS) { $kohde_tyyppi = Pikakommentti::$KOHDE_KUVA_BONGAUS; $kohde_id = $id_kuva; } } $poistettu_lkm = $kontrolleri->poista_pikakommentit($tietokantaolio, $kohde_tyyppi, $kohde_id); if ($poistettu_lkm == 0) { $ilmoitus .= "<br /> Poistettavia pikakommentteja ei löytynyt."; } else { $ilmoitus .= "<br /> Pikakommentit (" . $poistettu_lkm . " kpl) poistettu."; } //================================================================== // Haetaan ja poistetaan linkit. Kerrallakin voisi poistaa delete- // lauseella, mutta se tuntuu vähän uskaliaalta. Näin ainakin poisto // pysyy hanskassa, eikä nopeudella lie tässä niin väliä. if ($kokoelmanimi == Kuva::$KUVAT_ALBUMIT) { $taulunimi = "kuva_albumi_linkit"; } else { if ($kokoelmanimi == Kuva::$KUVAT_BONGAUS) { $taulunimi = "bkuvalinkit"; } else { $taulunimi = "tuntematon"; $ilmoitus .= " VIRHE linkkien poistossa! Kokoelmanimi '" . $kokoelmanimi . "' tuntematon!"; } } if ($taulunimi != "tuntematon") { $hakulause = "SELECT id\n FROM {$taulunimi}\n WHERE kuva_id = {$id_kuva}"; $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause); $linkit = $tietokantaolio->hae_osumarivit_olioina($hakutulos); $poistetut_linkit_lkm = 0; foreach ($linkit as $linkki) { $taulu = $taulunimi; $taulun_sarake = "id"; $hakuarvo = $linkki->id; $ilm = $tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo); if ($ilm == "onnistui") { $poistetut_linkit_lkm++; } } $ilmoitus .= "<br /> Linkit (" . $poistetut_linkit_lkm . " kpl) poistettu."; } } else { $ilmoitus = " Virhe kuvan poistossa! Yritä uudelleen!"; } } else { $ilmoitus = "Ei valtuuksia kuvan poistoon!"; } return $ilmoitus; }