/** * Poistaa tämän tietokantarivin. Palauttaa onnistumisen mukaan joko arvon * Malliluokkapohja::$VIRHE tai Malliluokkapohja::$OPERAATIO_ONNISTUI. * Virhetilanteessa voi lähettää ilmoituksiin viestin. * @return type */ public function poista() { $palaute = Malliluokkapohja::$VIRHE; $taulu = $this->tk_taulunimi; $tietokantasoluehto = $this->get_tietokantasolu(Malliluokkapohja::$SARAKENIMI_ID); if ($tietokantasoluehto instanceof Tietokantasolu) { $taulun_sarake = $tietokantasoluehto->get_sarakenimi(); $hakuarvo = $tietokantasoluehto->get_arvo(); $tallennuspalaute = $this->tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo); // Jos onnistui: if ($tallennuspalaute === Tietokantaolio::$HAKU_ONNISTUI) { $palaute = Malliluokkapohja::$OPERAATIO_ONNISTUI; } } else { // Testaajalle kommmentti: $this->lisaa_virheilmoitus("Virhe poistossa: " . "id-tietokantasolua ei löytynyt!"); } return $palaute; }
/** * Tämä metodi poistaa isäntäolion poiston yhteydessä isäntäolioon * linkitetyt pikakommentit ja palauttaa poistettujen olioiden lukumäärän. * @param Tietokantaolio $tietokantaolio (täällä, koska static!) * @param <type> $kohde_tyyppi * @param <type> $kohde_id */ public static function poista_pikakommentit($tietokantaolio, $kohde_tyyppi, $kohde_id) { $poistettujen_lkm = 0; // Haetaan ensin kyseiset rivit ja poistetaan ne sitten $hakulause = "SELECT id\n FROM pikakommentit\n WHERE kohde_id={$kohde_id}\n AND kohde_tyyppi={$kohde_tyyppi}"; $osumat = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause); foreach ($osumat as $pk_olio) { $taulu = "pikakommentit"; $taulun_sarake = "id"; $hakuarvo = $pk_olio->id; $palaute = $tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo); if ($palaute == Tietokantaolio::$HAKU_ONNISTUI) { $poistettujen_lkm++; } } return $poistettujen_lkm; }
/** * * @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; }