// Luodaan tarvittavat oliot: $kayttajakontrolleri = new Kayttajakontrolleri($tietokantaolio, $parametriolio); $kayttajanakymat = new kayttajanakymat(); // Suodattimien näyttö, jossa samalla voi muokata myös: if ($parametriolio->kayttajatoiminto == Kayttajatekstit::$suodattimet_painike_nayta_suodatinlomake_value) { $palauteolio = $kayttajakontrolleri->toteuta_nayta_suodatinlomake(); } } else { $sisaltoteksti = hae_viestit($teemat, $tietokantaolio, $omaid, $kuningas, $teema_id, $aikaraja, $parametriolio->vika_viesti_id, $parametriolio->kiinni_lkm); $ilmoitus = muotoile_uusien_yleisten_viestien_lkm($parametriolio->uusien_yl_lkm); } } // Haetaan vielä uusien kommenttien lukumäärät: $uuskomm_lkm_liikunta = Kontrolleri_pikakommentit::hae_uusien_pikakomm_lkm(Pikakommentti::$KOHDE_LIIKUNTASUORITUS, $omaid, $tietokantaolio); $uuskomm_lkm_kuvat = Kontrolleri_pikakommentit::hae_uusien_pikakomm_lkm(Pikakommentti::$KOHDE_KUVA_TAVIS, $omaid, $tietokantaolio); $uuskomm_lkm_bongaus = Kontrolleri_pikakommentit::hae_uusien_pikakomm_lkm(Pikakommentti::$KOHDE_BONGAUS, $omaid, $tietokantaolio); // Suljetaan yhteys tietokantaan: $tietokantaolio->sulje_tietokanta(); if ($palauteolio->kaytossa()) { $ilmoitus = $palauteolio->get_ilmoitus(); $sisaltoteksti = $palauteolio->get_sisalto(); } } //end of outer else (end) ?> <!DOCTYPE html> <html> <head>
/** * 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; }
/** * Hakee tietokannasta liikkujien nimet ja palauttaa ne tekstinä. * @param <type> $tietokantaolio olio, joka sisältää yhteystiedot tietokantaan. * @return <type> Palauttaa merkkijonon, jota muokattu html: */ function hae_liikkujat($tietokantaolio, $omaid) { $hakulause = "SELECT id, etunimi, sukunimi\n FROM henkilot\n WHERE id != '{$omaid}'"; $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause); $nimet_taulukko_all = $tietokantaolio->hae_osumarivit_olioina($hakutulos); //============= SUODATUS ALKU ====================== $nimet_taulukko = array(); $suodattimet = Suodatin::hae_suodattimet($omaid, $tietokantaolio); foreach ($nimet_taulukko_all as $osuma) { $henkilo_id = $osuma->id; if (!Suodatin::henkilo_suodatetaan_kevyt($henkilo_id, $omaid, $suodattimet)) { array_push($nimet_taulukko, $osuma); } } //============= SUODATUS LOPPU ===================== $nimet = ''; //kirjoita_elementtiin("nimet","Eka liikkuja on ".$nimet_taulukko[0]->etunimi); foreach ($nimet_taulukko as $nyk_olio) { // Otetaan mukaan vain sellaiset henkilöt, joilla on suorituksia: $tulos = $tietokantaolio->hae_eka_osuma_oliona("suoritukset", "henkilo_id", $nyk_olio->id); if ($tulos != "tuntematon") { // Haetaan uusien pikakommenttien lkm: $uusien_pk_lkm = Kontrolleri_pikakommentit::hae_henkilon_uusien_suorituspikakomm_lkm($omaid, $tietokantaolio, $nyk_olio->id); // Siivotaan mahdollinen URL:n kautta kulkeva liikenne. $kayt_ind = rawurlencode($nyk_olio->id); $omaind = rawurlencode($omaid); $etu = rawurlencode($nyk_olio->etunimi); $suku = rawurlencode($nyk_olio->sukunimi); $kysely = "kayttajaid={$kayt_ind}&enimi={$etu}&snimi={$suku}&omaid={$omaind}"; // Alla huomaa, että kysely pitää olla lainausmerkeissä! Muuten ei toimi. $mj = <<<HASSUTAPA <a onclick="toteutaAJAX('suoritus_kyselyt.php', '{$kysely}', 'reagoi','post', 'text')"> {$nyk_olio->etunimi} {$nyk_olio->sukunimi} {$uusien_pk_lkm} </a> HASSUTAPA; $nimet .= $mj; } } return $nimet; }
/** * 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; } }
/** * 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; }
$nykyinen_pikakommentti = new Pikakommentti($tietokantaolio, $pikakommentin_id); // Sijoitetaan tiedot tarvittaessa: if ($kysymys == "tallenna_uusi_pikakommentti") { $nykyinen_pikakommentti->set_henkilo_id($omaid); $nykyinen_pikakommentti->set_kohde_id($kohde_id); $nykyinen_pikakommentti->set_kohde_tyyppi($kohde_tyyppi); $nykyinen_pikakommentti->set_kommentti($kommenttiteksti); } else { if ($kysymys == "tallenna_pikakommentin_muutos") { $nykyinen_pikakommentti->set_kohde_id($kohde_id); $nykyinen_pikakommentti->set_kohde_tyyppi($kohde_tyyppi); $nykyinen_pikakommentti->set_kommentti($kommenttiteksti); } else { } } $kontrolleri_pikakommentit = new Kontrolleri_pikakommentit($tietokantaolio, $parametriolio, $nykyinen_pikakommentti); /********************************************************************/ // Tarkistetaan, ettei käyttäjää ole potkaistu tai itse kirjautunut ulos: // Tämä voisi olla aiemmin, mutta en halunnut rasittaa liian usein // tapahtuvaksi. if (!online($_SESSION['tiedot']->id, $tietokantaolio)) { $kansiotaso = 2; toteuta_passiivinen_ulos_toiminto($kansiotaso); echo Yleisarvoja::$istunto_vanhentunut; exit; } /******************************************************************/ // Ikätarkistus: if (!on_alaikainen_tai_elakkeella($omaid, $tietokantaolio)) { $alaikainen = false; } else {