Example #1
0
 /**
  * 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;
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
/**
 *
 * @param <type> $valinnat
 * @param Tietokantaolio $tietokantaolio
 * @param int $omaid
 * @return <string> Palauttaa viestin suorituksen onnistumisesta, joka
 * n&auml;ytet&auml;&auml;n k&auml;ytt&auml;j&auml;lle.
 */
function poista_suoritukset(&$valinnat, $tietokantaolio, $omaid)
{
    $vastaus = '';
    $lkm = 0;
    if (!isset($valinnat)) {
        $vastaus = "Poisto ep&auml;onnistui!\n                    Valintataulukko on m&auml;&auml;rittelem&auml;t&ouml;n";
    } else {
        if ($valinnat == "" || sizeof($valinnat) == 0) {
            $vastaus = "Poisto ep&auml;onnistui!\n                    Yht&auml;&auml;n valittua rivi&auml; ei l&ouml;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&ouml;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&auml;onnistui!";
            }
            if ($todellinen_poistomini2) {
                $ilmoitus .= " minikuva2";
            } else {
                $ilmoitus .= " Virhe: minikuvan2 poisto ep&auml;onnistui!";
            }
            if ($todellinen_poistomini3) {
                $ilmoitus .= " ja minikuva3 JESS!";
            } else {
                $ilmoitus .= " Virhe: minikuvan3 poisto ep&auml;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&ouml;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&auml; uudelleen!";
        }
    } else {
        $ilmoitus = "Ei valtuuksia kuvan poistoon!";
    }
    return $ilmoitus;
}