Ejemplo n.º 1
0
                 // Haetaan yleisten lukemattomien viestien lkm täällä, koska
                 // muuten uusien lkm häviää automaattisen viestien
                 // näyttämisen takia.
                 $omaid = $_SESSION['tiedot']->id;
                 $teema = 1;
                 // Yleinen-luokan tunnus.
                 $uusien_yleisten_lkm = hae_uusien_viestien_lkm($omaid, $teema, $tietokantaolio, $viimeksi_ulos);
                 $tervehdysnimi = $_SESSION['tiedot']->lempinimi;
                 if (!isset($tervehdysnimi) || $tervehdysnimi == "") {
                     $tervehdysnimi = $_SESSION['tiedot']->etunimi;
                 }
                 $teksti = "<h2>Tervetuloa, " . $tervehdysnimi . "!</h2><a href=\"index.php?uusien_yl_lkm =\n                                    " . $uusien_yleisten_lkm . "\">Jatka</a>";
                 // Aktiivisuusmerkintä:
                 $viimeksi_aktiivi = time();
                 $aktiivisuuslaji = Aktiivisuus::$SISAANKIRJAUTUMINEN;
                 $paivitys = paivita_aktiivisuus($omaid, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji);
                 // TEsti:
                 if ($paivitys == Tekstit::$aktiivisuustallennus_virheilm_tallennus_eiok) {
                     $viesti = $paivitys . " (tunnistus.php) TIEDOT: " . "viimeksi_aktiivi= " . $viimeksi_aktiivi . ", aktiivisuuslaji= " . $aktiivisuuslaji . " ja omaid=" . $omaid;
                 } else {
                     // Kirjoitetaan tervehdys ja siirrytään varsinaiselle sivulle.
                     $viesti = $teksti . "<script type='text/javascript'>" . "siirra_hitaasti('index.php?uusien_yl_lkm=" . $uusien_yleisten_lkm . "', 500);</script>";
                 }
             }
         }
     }
 } else {
     if ($ktunnus == "" && $toiminta == 'Kirjaudu') {
         $viesti = "K&auml;ytt&auml;j&auml;tunnus ei voi olla tyhj&auml;!";
         $sisalto = nayta_kirjautuminen($ktunnus, $hamynimi);
     }
Ejemplo n.º 2
0
/**
 * Poistaa yhden kuvatiedoston ja siihen liittyvät kuvatiedot ja kuvalinkit
 * tietokannasta (tietokanta hoitaa viimeksimainitut - cascade-määritykset ok).
 *
 * @param Parametrit $parametriolio
 * @return Palaute $palauteolio
 */
function toteuta_poista_kuva($parametriolio)
{
    $kohde = $parametriolio->kohde_kuva;
    $id_kuva = $parametriolio->id_kuva;
    $id_kokon = $parametriolio->id_kokon;
    $oppiaine_kokon = $parametriolio->oppiaine_kokon;
    $taso_kokon = $parametriolio->taso_kokon;
    $id_teht = $parametriolio->id_teht;
    $tietokantaolio = $parametriolio->get_tietokantaolio();
    $kayttajan_valtuudet = $parametriolio->get_valtuudet();
    $kieli_id = $parametriolio->kieli_id;
    $omaid = $parametriolio->get_omaid();
    $palauteolio = new Palaute();
    // Haetaan kuvan src poistoa varten:
    $hakulause = "SELECT src\n                FROM kuvat\n                WHERE id = {$id_kuva}";
    $taulunimi = "kuvat";
    $sarakenimi = "id";
    $hakuarvo = $id_kuva;
    $kuvaolio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
    if ($kuvaolio == Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
        $src = "";
    } else {
        $src = $kuvaolio->src;
    }
    // POistetaan kuvatiedot tietokannasta:
    $taulu = "kuvat";
    $taulun_sarake = "id";
    $hakuarvo = $id_kuva;
    $ilmoitus = $tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo);
    // Jos kuvan poisto onnistui, poistetaan myös orvoiksi jääneet linkit:
    if ($ilmoitus == Tietokantaolio::$HAKU_ONNISTUI) {
        // Tämä tuhoaa tiedoston lopullisesti (ellei jo tuhottu):
        if (file_exists($src)) {
            $todellinen_poisto = unlink($src);
        } else {
            $todellinen_poisto = true;
        }
        // Aktiivisuusmerkintä:
        /* Valitaan oikea aktiivisuusmerkintä: */
        if ($kohde === Kuvat::$kohde_kokonaisuus_tiivistelma || $kohde === Kuvat::$kohde_kokonaisuus_selitys) {
            $aktiivisuuslaji = Aktiivisuus::$KUVAN_POISTO_KOKONAISUUS;
        } else {
            if ($kohde === Kuvat::$kohde_tehtava) {
                $aktiivisuuslaji = Aktiivisuus::$KUVAN_POISTO_TEHTAVA;
            } else {
                if ($kohde === Kuvat::$kohde_ratkaisu) {
                    $aktiivisuuslaji = Aktiivisuus::$KUVAN_POISTO_RATKAISU;
                } else {
                    $aktiivisuuslaji = Aktiivisuus::$TUNTEMATON_KUVA_AKTIIVISUUS;
                }
            }
        }
        $viimeksi_aktiivi = time();
        paivita_aktiivisuus($omaid, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji);
        if ($todellinen_poisto) {
            $ilmoitus = Tekstit::$ilm_kuva_poisto_ok;
        } else {
            $ilmoitus = Tekstit::$virheilm_kuvan_poisto_tiedosto_ei_tuhottu . " SRC: '" . $src . "'";
        }
    } else {
        $ilmoitus = Tekstit::$virheilm_kuvan_poisto;
    }
    $palauteolio = toteuta_nayta_oliot($parametriolio);
    $palauteolio->set_ilmoitus($ilmoitus);
    return $palauteolio;
}
Ejemplo n.º 3
0
 /**
  * Uuden lajiluokan tallennus!
  * @return Palaute
  */
 public function toteuta_tallenna_uusi()
 {
     $pal = $this->palauteolio;
     $uusi = new Lajiluokka($this->tietokantaolio, Lajiluokka::$PARAMETRI_EI_KAYTOSSA);
     // Lajiluokka:
     $ylaluokka_id = $this->parametriolio->ylaluokka_id_lj;
     $nimi_latina = $this->parametriolio->nimi_latina_lj;
     // Kuvaus:
     // Nykyään kieli on tuossa aina suomi. Voi muuttaa tarvittaessa.
     $kieli_kuv = Kielet::$SUOMI;
     $kuv_kuv = $this->parametriolio->kuv_kuv;
     $nimi_kuv = $this->parametriolio->nimi_kuv;
     // Asetetaan arvot kohdalleen:
     $uusi->set_ylaluokka_id($ylaluokka_id);
     $uusi->set_nimi_latina($nimi_latina);
     // Kokeillaan tallentaa:
     $tallennus = $uusi->tallenna_uusi();
     // Jos kaikki hyvin, tallennetaan myös kuvaus lajiluokalle:
     if ($tallennus === Lajiluokka::$OPERAATIO_ONNISTUI) {
         // tallennetaan aktiivisuus:
         paivita_aktiivisuus($this->parametriolio->omaid, $this->tietokantaolio, time(), Aktiivisuus::$LAJILUOKKA_UUDEN_TALLENNUS);
         $uusi_kuv = new Kuvaus($this->tietokantaolio, Kuvaus::$PARAMETRI_EI_KAYTOSSA);
         // Asetetaan arvot:
         $uusi_kuv->set_kieli($kieli_kuv);
         $uusi_kuv->set_kuvaus($kuv_kuv);
         $uusi_kuv->set_lajiluokka($uusi->get_id());
         $uusi_kuv->set_nimi($nimi_kuv);
         // Kokeillaan tallentaa:
         $tallennus_kuv = $uusi_kuv->tallenna_uusi();
         // Jos kaikki hyvin:
         if ($tallennus_kuv === Kuvaus::$OPERAATIO_ONNISTUI) {
             // tallennetaan aktiivisuus:
             paivita_aktiivisuus($this->parametriolio->omaid, $this->tietokantaolio, time(), Aktiivisuus::$LAJILUOKKAKUVAUS_UUDEN_TALLENNUS);
             $pal->set_operaatio_onnistui(true);
             $pal->set_ilmoitus(Bongaustekstit::$lajiluokka_ja_kuvaus_tallennus_ok);
             // Asetetaan kuitenkin palautusolioon luodun lajiluokan id:
             $pal->set_muokatun_id($uusi->get_id());
             $pal->set_sisalto($this->nayta_havainnot());
         } else {
             $pal->set_operaatio_onnistui(false);
             $pal->set_ilmoitus(Bongaustekstit::$kuvaus_virheilm_tallennus_eiok . Html::luo_br() . $uusi_kuv->tulosta_virheilmoitukset());
             $pal->set_sisalto($this->toteuta_nayta_lajiluokkalomake()->get_sisalto());
         }
     } else {
         $pal->set_operaatio_onnistui(false);
         $pal->set_ilmoitus(Bongaustekstit::$lajiluokka_virheilm_tallennus_eiok . Html::luo_br() . $uusi->tulosta_virheilmoitukset());
         $pal->set_sisalto($this->toteuta_nayta_lajiluokkalomake()->get_sisalto());
     }
     return $pal;
 }
/**
 * Kirjaa käyttäjän ulos eli lopettaa session ja poistaa tiedot muisteista.
 * @param <type> $omaid
 * @param <type> $tietokantaolio 
 */
function kirjaudu_ulos($omaid, $tietokantaolio)
{
    if (isset($_SESSION['tiedot'])) {
        $kayttaja = $_SESSION['tiedot']->etunimi . " " . $_SESSION['tiedot']->sukunimi;
        aseta_online(false, $_SESSION['tiedot']->id, $tietokantaolio);
        // Aktiivisuusmerkintä:
        $viimeksi_aktiivi = time();
        $aktiivisuuslaji = Aktiivisuus::$ULOSKIRJAUTUMINEN;
        paivita_aktiivisuus($omaid, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji);
        // Nämä ovat tärkeitä. Tiedot tahtovat jäädä muuten jonnekin muistin
        // perukoille kummittelemaan.
        unset($_SESSION['tiedot']);
        // Vapauttaa muuttujan
        unset($_SESSION['tunnistus']);
        // Vapauttaa muuttujan
        //Ohjaa turvallisesti ja nopeasti kirjautumissivulle.
        header("Location: index.php?id=" . time() . "&ilmoitus_kokon=" . $kayttaja . " " . Tekstit::$ilm_kirjautui_ulos);
        $tietokantaolio->sulje_tietokanta();
        exit;
    } else {
        return Tekstit::$virheilm_uloskirjaustoisto;
    }
}
Ejemplo n.º 5
0
 /**
  * Toteuttaa uuden tehtävän tallentamisen. Palauttaa Palaute-luokan olion,
  * joka sisältää tarpeelliset tiedot toiminnon onnistumisesta yms.
  *
  *
  * @param Palaute $palauteolio
  */
 function toteuta_tallenna_muokkaus(&$palauteolio)
 {
     $parametriolio = $this->get_parametriolio();
     $id_teht = $parametriolio->id_teht;
     $omaid = $parametriolio->get_omaid();
     $otsikko_teht = $parametriolio->otsikko_teht;
     $tehtavananto_teht = $parametriolio->tehtavananto_teht;
     $vaikeustaso_teht = $parametriolio->vaikeustaso_teht;
     $nakyvyys = $parametriolio->nakyvyys_teht;
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $onnistuminen = Palaute::$VIRHEKOODI_TALLENNUS;
     // TArkistetaan, onko käyttäjä kirjautunut. Ellei ole, keskeytetään:
     if (Henkilo::on_kirjautunut($omaid, $tietokantaolio)) {
         // Tarkistetaan tiedot:
         $tallennettava = new Tehtava($id_teht, $tietokantaolio);
         if ($tallennettava->olio_loytyi_tietokannasta) {
             // Asetetaan arvot paikalleen:
             $tallennettava->set_arvo(time(), Tehtava::$sarakenimi_ed_muutos_sek);
             $tallennettava->setOtsikko($otsikko_teht);
             $tallennettava->setTehtavananto($tehtavananto_teht);
             $tallennettava->setVaikeustaso($vaikeustaso_teht);
             $tallennettava->setNakyvyys($nakyvyys);
             $palaute = $tallennettava->tallenna_muutokset();
             if ($palaute === Tehtava::$OPERAATIO_ONNISTUI) {
                 //Aktiivisuusmerkintä:
                 $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $tietokantaolio, time(), Aktiivisuus::$TEHTAVAN_MUUTOSTEN_TALLENNUS);
                 if (!$aktiivisuuspalaute) {
                     $this->lisaa_virheilmoitus(Tekstit::$virheilm_aktiivisuuden_tallennus_eiok);
                 } else {
                     $onnistuminen = Palaute::$VIRHEKOODI_KAIKKI_OK;
                 }
                 // Otetaan selville, tuleekö käyttäjä koosteesta vai
                 // kokonaisuuksista ja näytetään vastaava juttu:
                 $elem_id = $parametriolio->elementti_id;
                 if ($elem_id != Elementti::$MUUTTUJAA_EI_MAARITELTY) {
                     $elem = new Elementti($elem_id, $tietokantaolio);
                     if ($elem->olio_loytyi_tietokannasta) {
                         $parametriolio->kooste_id = $elem->get_arvo(Elementti::$sarakenimi_kooste_id);
                     }
                     $koostekontr = new Koostekontrolleri($this->get_tietokantaolio(), $parametriolio);
                     $koostekontr->toteuta_nayta($palauteolio);
                     // JOtta palataan varmasti samaan elementtiin:
                     $palauteolio->set_muokatun_id($parametriolio->elementti_id);
                 } else {
                     $this->toteuta_nayta_tehtavat($palauteolio);
                     // JOtta palataan varmasti samaan kokonaisuuteen:
                     $palauteolio->set_muokatun_id($tallennettava->getId());
                 }
                 $palauteolio->set_ilmoitus(Tekstit::$tehtava_ilm_tallennus_muok_ok . $this->tulosta_virheilmoitukset());
             } else {
                 $parametriolio->uusi = true;
                 // Varmuuden vuoksi.
                 $this->toteuta_tehtavalomakkeen_naytto($palauteolio);
                 $palauteolio->set_ilmoitus(Tekstit::$tehtava_virheilm_tallennus_muok_eiok . $tallennettava->tulosta_virheilmoitukset());
             }
         } else {
             $this->lisaa_virheilmoitus(Tekstit::$tehtava_virheilm_muokattavaa_ei_loytynyt);
             $this->toteuta_nayta_tehtavat($palauteolio);
             $palauteolio->set_ilmoitus($this->tulosta_virheilmoitukset());
         }
     } else {
         // Täällä sessio on vanhentunut:
         $this->lisaa_virheilmoitus(Kayttajatekstit::$ilmoitus_sessio_vanhentunut);
         $this->toteuta_nayta_tehtavat($palauteolio);
         $palauteolio->set_ilmoitus($this->tulosta_virheilmoitukset());
     }
     $palauteolio->set_virhekoodi($onnistuminen);
     $palauteolio->set_valikkonaytto(false);
 }
Ejemplo n.º 6
0
 /**
  * Toteuttaa monen uuden havainnon tallennuksen.
  * @return \Palaute
  */
 public function toteuta_tallenna_monta_uutta()
 {
     $tietokantaolio = $this->get_tietokantaolio();
     $palauteolio = $this->get_palauteolio();
     // Sisältää valittujen lajiluokkien id:t.
     $valinnat = $this->get_parametriolio()->lajivalinnat_hav;
     $laskuri = 0;
     $tallennusten_lkm = 0;
     $virheiden_lkm = 0;
     $tallennetut_lajit = "";
     // Nimet kerätään tähän.
     foreach ($valinnat as $id_lj) {
         $uusi = new Havainto($this->tietokantaolio(), Havainto::$PARAMETRI_EI_KAYTOSSA);
         $uusi->set_henkilo_id($this->get_parametriolio()->omaid);
         $uusi->set_lajiluokka_id($id_lj);
         $uusi->set_paiva($this->get_parametriolio()->paiva_hav);
         $uusi->set_kk($this->get_parametriolio()->kk_hav);
         $uusi->set_vuosi($this->get_parametriolio()->vuosi_hav);
         $uusi->set_paikka($this->get_parametriolio()->paikka_hav);
         $uusi->set_kommentti($this->get_parametriolio()->kommentti_hav);
         $uusi->set_maa($this->get_parametriolio()->maa_hav);
         $uusi->set_varmuus($this->get_parametriolio()->varmuus_hav);
         if ($uusi->tallenna_uusi() === Havainto::$OPERAATIO_ONNISTUI) {
             $tallennusten_lkm++;
             // Haetaan nimi tallennetulle:
             $nimi = Bongaustekstit::$nimi_tuntematon;
             $lajiluokka = new Lajiluokka($tietokantaolio, $id_lj);
             if ($lajiluokka->olio_loytyi_tietokannasta) {
                 $kuvaus = $lajiluokka->hae_kuvaus($this->get_parametriolio()->kieli_id);
                 if ($kuvaus instanceof Kuvaus) {
                     if ($laskuri == 0) {
                         $nimi = $kuvaus->get_nimi();
                     } else {
                         $nimi = ", " . $kuvaus->get_nimi();
                     }
                 }
             }
             $tallennetut_lajit .= $nimi;
         } else {
             $virheiden_lkm++;
         }
         $laskuri++;
     }
     // Aktiivisuusmerkintä (vain kerran):
     $viimeksi_aktiivi = time();
     $aktiivisuuslaji = Aktiivisuus::$HAVAINTO_UUDEN_TALLENNUS;
     paivita_aktiivisuus($this->get_parametriolio()->omaid, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji);
     // Palautteet:
     if ($tallennusten_lkm == sizeof($valinnat)) {
         $kommentti = $tallennusten_lkm . " " . Bongaustekstit::$ilm_havaintojen_lisays_ok . " (" . $tallennetut_lajit . ")";
     } else {
         $kommentti = $virheiden_lkm . " " . Bongaustekstit::$ilm_havaintojen_lisays_eiok;
     }
     $palauteolio->set_ilmoitus($kommentti);
     // Avataan havainnot.
     $palauteolio->set_sisalto($this->toteuta_nayta()->get_sisalto());
     return $palauteolio;
 }
Ejemplo n.º 7
0
/**
 * Toteuttaa alusta loppuun uuden lajiluokan tallennuksen.
 * @param Parametrit $parametriolio
 * @return Palaute $palauteolio
 */
function toteuta_uuden_lajiluokan_tallennus($parametriolio)
{
    $omaid = $parametriolio->omaid;
    $ylaluokka_id_lj = $parametriolio->ylaluokka_id_lj;
    $nimi_latina_lj = $parametriolio->nimi_latina_lj;
    $nimi_kuv = $parametriolio->nimi_kuv;
    $kuv_kuv = $parametriolio->kuv_kuv;
    $kieli_kuv = $parametriolio->kieli_kuv;
    $tietokantaolio = $parametriolio->tietokantaolio;
    $paiva_hav = $parametriolio->paiva_hav;
    $kk_hav = $parametriolio->kk_hav;
    $vuosi_hav = $parametriolio->vuosi_hav;
    // Määritellään kaksialkioinen taulukko, jonka metodi palauttaa:
    $palautetaulukko = array();
    $palautetaulukko[0] = "Ilmoitus";
    $palautetaulukko[1] = "Sisalto";
    $palauteolio = new Palaute();
    // Tarkistetaan tiedot:
    $uusi = true;
    $tarkistustulos = tarkista_lajiluokkatiedot($tietokantaolio, $ylaluokka_id_lj, $nimi_latina_lj, $nimi_kuv, $kuv_kuv, $uusi);
    // Ellei tiedot ole kunnossa, palautetaan virheilmoitus ja näytetään
    // lomake:
    if ($tarkistustulos != Bongausasetuksia::$lomaketiedot_kunnossa) {
        $palautetaulukko[0] = $tarkistustulos;
        $id_jl = "tuntematon";
        // Tätä ei vielä tiedetä!
        $palautetaulukko[1] = nayta_lajiluokkalomake($ylaluokka_id_lj, $nimi_latina_lj, $nimi_kuv, $kuv_kuv, $kieli_kuv, $uusi, $tietokantaolio);
    } else {
        $kyselylause = "INSERT INTO blajiluokat (ylaluokka_id, nimi_latina)\n                        VALUES ('{$ylaluokka_id_lj}', '{$nimi_latina_lj}')";
        mysql_query($kyselylause) or die(Bongaustekstit::$lajiluokka_virheilm_tallennus_eiok);
        $lajiluokan_id = mysql_insert_id();
        // Hakee viimeksi lisätyn rivin id:n.
        // Jos rivi tallentui, tallennetaan sitä vastaava uusi kuvaustaulun rivi:
        if (mysql_affected_rows() == 1) {
            // Aktiivisuusmerkintä:
            $viimeksi_aktiivi = time();
            $aktiivisuuslaji = Aktiivisuus::$LAJILUOKKA_UUDEN_TALLENNUS;
            paivita_aktiivisuus($omaid, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji);
            $taulu = "bkuvaukset";
            $sarakenimitaulukko = array("lajiluokka_id", "nimi", "kuvaus", "kieli");
            $arvotaulukko = array($lajiluokan_id, $nimi_kuv, $kuv_kuv, $kieli_kuv);
            $kuvaustallennuspalaute = $tietokantaolio->tallenna_uusi_rivi($taulu, $sarakenimitaulukko, $arvotaulukko, Bongaustekstit::$kuvaus_virheilm_tallennus_eiok);
            if ($kuvaustallennuspalaute != Bongausasetuksia::$tietokantahaku_onnistui) {
                $palautetaulukko[0] = $kuvaustallennuspalaute;
                $palautetaulukko[1] = nayta_lajiluokkalomake($id_lj, $ylaluokka_id_lj, $nimi_latina_lj, $nimi_kuv, $kuv_kuv, $kieli_kuv, $uusi, $tietokantaolio);
            } else {
                // Aktiivisuusmerkintä:
                $viimeksi_aktiivi = time();
                $aktiivisuuslaji = Aktiivisuus::$LAJILUOKKAKUVAUS_UUDEN_TALLENNUS;
                paivita_aktiivisuus($omaid, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji);
                $palautetaulukko[0] = Bongaustekstit::$lajiluokka_ja_kuvaus_tallennus_ok;
                /*$palautetaulukko[1] = "";
                  //hae_havainnot($tietokantaolio, $ylaluokka_id_lj);*/
                $lajiluokka_id_hav = $lajiluokan_id;
                //Lisätty lajiluokka
                $kuvalinkki_id_hav = -1;
                // Kun lisätty ei ole luokka, näytetään suoraan havaintolomake:
                $parametriolio->id_hav = false;
                // Tätä ei vielä tiedetä.
                if ($ylaluokka_id_lj != -1) {
                    $parametriolio->set_uusi_hav(true);
                    $palautetaulukko[1] = nayta_havaintolomake($parametriolio);
                } else {
                    $palautetaulukko[1] = hae_havainnot($parametriolio);
                }
            }
        }
    }
    $palauteolio->set_sisalto($palautetaulukko[1]);
    $palauteolio->set_ilmoitus($palautetaulukko[0]);
    $palauteolio->set_oikean_palkin_naytto(true);
    return $palauteolio;
}
Ejemplo n.º 8
0
 /**
  * Poistaa yhden kuvan (kuvatiedoston ja tietokannan kuvatiedot). Linkit
  * poistuvat automaattisesti, kun kuvalinkkitaulussa on
  * FOREIGN KEY (kuva_id) REFERENCES kuvat (id) ON DELETE CASCADE -määrittely.
  * 
  * @param <type> $id_kuva
  * @param <type> $tietokantaolio
  */
 function poista_kuva($oma_id, $id_kuva, $tietokantaolio)
 {
     // Haetaan kuvan src poistoa varten:
     $hakulause = "SELECT src\n                    FROM kuvat\n                    WHERE id = {$id_kuva}";
     $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause);
     $osumataulukko = $tietokantaolio->hae_osumarivit_olioina($hakutulos);
     if (sizeof($osumataulukko) == 0) {
         $src = "";
     } else {
         $src = $osumataulukko[0]->src;
     }
     // POistetaan kuvatiedot tietokannasta:
     $taulu = "kuvat";
     $taulun_sarake = "id";
     $hakuarvo = $id_kuva;
     $ilmoitus = $tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo);
     // Jos kuvantietojen poisto tietokannasta onnistui, poistetaan
     // myös orvoksi jäänyt kuvatiedosto:
     if ($ilmoitus == "onnistui") {
         // Tämä tuhoaa tiedoston lopullisesti:
         $todellinen_poisto = unlink($src);
         // Aktiivisuusmerkintä:
         $viimeksi_aktiivi = time();
         $aktiivisuuslaji = Aktiivisuus::$KUVAN_POISTO;
         paivita_aktiivisuus($oma_id, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji);
         if ($todellinen_poisto) {
             $ilmoitus = "Kuvan poisto onnistui! Kuva tuhottu lopullisesti. ";
         } else {
             $ilmoitus = "Virhe kuvan poistossa! Kuvan tiedot poistettu\n                    tietokannasta, mutta kuvatiedoston poisto ei onnistunut. ";
         }
     } else {
         $ilmoitus = "Virhe kuvan poistossa! Yrit&auml; uudelleen!";
     }
     return $ilmoitus;
 }
Ejemplo n.º 9
0
 /**
  * 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;
 }
Ejemplo n.º 10
0
                } else {
                    $_SESSION['tunnistus'] = 'kunnossa';
                    // Otetaan kirjautumisaika muistiin.
                    $_SESSION['kirjautumisaika'] = time();
                    $_SESSION['tiedot'] = $tiedot;
                    aseta_online(true, $_SESSION['tiedot']->id, $tietokantaolio);
                    $omaid = $_SESSION['tiedot']->id;
                    $tervehdysnimi = $_SESSION['tiedot']->lempinimi;
                    if (!isset($tervehdysnimi) || $tervehdysnimi == "") {
                        $tervehdysnimi = $_SESSION['tiedot']->etunimi;
                    }
                    $teksti = "<h2>" . Tekstit::$tunnistussivu_Tervetuloa . ", " . $tervehdysnimi . "!</h2><a href=" . $url . ">" . Tekstit::$tunnistussivu_Jatka . "</a>";
                    // Kirjoitetaan tervehdys ja siirrytään varsinaiselle sivulle.
                    $viesti = $teksti . "<script type='text/javascript'>" . "siirra_hitaasti('" . $url . "', 500);</script>";
                    //Aktiivisuusmerkintä:
                    $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $tietokantaolio, time(), Aktiivisuus::$SISAANKIRJAUTUMINEN);
                    if (!$aktiivisuuspalaute) {
                        $viesti .= "<br/>" . Tekstit::$virheilm_aktiivisuuden_tallennus_eiok;
                    }
                }
            }
        }
    } else {
        if ($ktunnus == "" && $toiminta == Painikkeet::$tunnistus_kirjaudu_value) {
            $viesti = Tekstit::$tunnistussivu_kayttajatunnus_ei_saa_olla_tyhja;
            $sisalto = nayta_kirjautuminen($ktunnus, $hamynimi, $url, $target);
        } else {
        }
    }
}
$tietokantaolio->sulje_tietokanta($dbnimi);
Ejemplo n.º 11
0
/** Metodi, joka tallentaa MUOKATUN viestin tiedot MySQL:aan. Siis vanhaa
 * viestiä muutetaan, ei luoda uutta. Metodi palauttaa
 * merkkijonon "onnistui", jos
 * tallennus onnistuu.*/
function tallenna_viestin_muutos($oma_id, $tietokantaolio, $viesti_id, $teema_id, $aihe, $viesti)
{
    $onnistu = false;
    // Kyselyparametrit:
    $taulu = "viestit";
    $muutossarakkeet = array("teema_id", "aihe", "viesti");
    $muutosarvot = array($teema_id, $aihe, $viesti);
    $ehtosarake = "id";
    $ehtoarvo = $viesti_id;
    $max_muutosrivilkm = 1;
    // Muutetaan max yht&auml; rivi&auml;.
    $muokattujen_lkm = $tietokantaolio->tee_UPDATEhaku($taulu, $muutossarakkeet, $muutosarvot, $ehtosarake, $ehtoarvo, $max_muutosrivilkm);
    if (mysql_affected_rows() == 1) {
        $onnistu = "onnistui";
        // Aktiivisuusmerkintä:
        $viimeksi_aktiivi = time();
        $aktiivisuuslaji = Aktiivisuus::$VIESTIN_MUUTOSTEN_TALLENNUS;
        paivita_aktiivisuus($oma_id, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji);
    } else {
        $onnistu = "Tiedoissa ei havaittu muutoksia!";
    }
    return $onnistu;
}
Ejemplo n.º 12
0
 /**
  * Poistaa yhden kuvan ja siihen liittyvät kuva_albumi_linkit.
  * @param <type> $id_kuva
  * @param <type> $tietokantaolio
  */
 function poista_kuva($oma_id, $id_kuva, $tietokantaolio)
 {
     // Haetaan kuvan src poistoa varten:
     $hakulause = "SELECT src\n                    FROM kuvat\n                    WHERE id = {$id_kuva}";
     $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause);
     $osumataulukko = $tietokantaolio->hae_osumarivit_olioina($hakutulos);
     if (sizeof($osumataulukko) == 0) {
         $src = "";
     } else {
         $src = $osumataulukko[0]->src;
     }
     // POistetaan kuvatiedot tietokannasta:
     $taulu = "kuvat";
     $taulun_sarake = "id";
     $hakuarvo = $id_kuva;
     $ilmoitus = $tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo);
     // Jos kuvan poisto onnistui, poistetaan myös orvoiksi jääneet linkit:
     if ($ilmoitus == "onnistui") {
         // Tämä tuhoaa tiedoston lopullisesti:
         $todellinen_poisto = unlink($src);
         // Aktiivisuusmerkintä:
         $viimeksi_aktiivi = time();
         $aktiivisuuslaji = Aktiivisuus::$KUVAN_POISTO;
         paivita_aktiivisuus($oma_id, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji);
         if ($todellinen_poisto) {
             $ilmoitus = "Kuvan poisto onnistui! Kuva tuhottu lopullisesti. ";
         } else {
             $ilmoitus = "Virhe kuvan poistossa! Kuvan tiedot poistettu\n                    tietokannasta, mutta kuvatiedoston poisto ei onnistunut. ";
         }
         // 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ä.
         $hakulause = "SELECT id\n                    FROM kuva_albumi_linkit\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 = "kuva_albumi_linkit";
             $taulun_sarake = "id";
             $hakuarvo = $linkki->id;
             $ilm = $tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo);
             if ($ilm == "onnistui") {
                 $poistetut_linkit_lkm++;
             }
         }
         $ilmoitus .= "Linkit (" . $poistetut_linkit_lkm . " kpl) poistettu.";
     } else {
         $ilmoitus = "Virhe kuvan poistossa! Yrit&auml; uudelleen!";
     }
     return $ilmoitus;
 }
Ejemplo n.º 13
0
/**
 * Poistaa albumin tietokannasta kuvineen ja kuvalinkkeineen.
 * Muuten albumin sisältämät kuvat ja kuva_albumi_linkit jäävät orvoiksi.
 * jäävät orvoiksi. Siispä kuvat poistetaan samalla! Aika vaarallinen komento,
 * joten varoitus pitää olla!
 * @param <type> $albumi_id
 * @param <type> $tietokantaolio
 * @return <type> Palauttaa merkkijonon, joka kertoo poiston onnistumisen.
 */
function poista_albumi($oma_id, $albumi_id, $tietokantaolio)
{
    // Haetaan ensin poistettavan albumin nimi:
    $hakulause = "SELECT nimi\n                FROM albumit\n                WHERE id = {$albumi_id}";
    $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause);
    $nimitaulukko = $tietokantaolio->hae_osumarivit_olioina($hakutulos);
    if (sizeof($nimitaulukko) == 0) {
        $nimi = "tuntematon";
    } else {
        $nimi = $nimitaulukko[0]->nimi;
    }
    // Haetaan poistettavan albumin sisältämät kuvat (pitää hakea ennen
    // albumin poistoa!):
    $hakulause = "SELECT kuvat.id, kuvat.src\n                FROM albumit\n                JOIN kuva_albumi_linkit AS linkit\n                ON linkit.albumi_id = albumit.id\n                JOIN kuvat\n                ON kuvat.id = linkit.kuva_id\n                WHERE albumit.id = {$albumi_id}";
    $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause);
    $kuvat = $tietokantaolio->hae_osumarivit_olioina($hakutulos);
    // Poistetaan albumi:
    $taulu = "albumit";
    $taulun_sarake = "id";
    $hakuarvo = $albumi_id;
    $ilmoitus = $tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo);
    // Jos albumin poisto onnistui, poistetaan myös orvoiksi jääneet linkit ja kuvat:
    if ($ilmoitus == "onnistui") {
        // 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ä.
        $hakulause = "SELECT id\n                FROM kuva_albumi_linkit\n                WHERE albumi_id = {$albumi_id}";
        $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause);
        $linkit = $tietokantaolio->hae_osumarivit_olioina($hakutulos);
        $poistetut_linkit_lkm = 0;
        foreach ($linkit as $linkki) {
            $taulu = "kuva_albumi_linkit";
            $taulun_sarake = "id";
            $hakuarvo = $linkki->id;
            $ilm = $tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo);
            if ($ilm == "onnistui") {
                $poistetut_linkit_lkm++;
            }
        }
        // Poistetaan kuvat:
        $kuvalaskuri = 0;
        $tosituholaskuri = 0;
        //Todella tuhotut kuvatiedostot:
        foreach ($kuvat as $kuva) {
            $src = $kuva->src;
            $taulu = "kuvat";
            $taulun_sarake = "id";
            $hakuarvo = $kuva->id;
            $ilm = $tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo);
            if ($ilm == "onnistui") {
                $kuvalaskuri++;
            }
            // Tämä tuhoaa tiedoston lopullisesti:
            $todellinen_poisto = unlink($src);
            if ($todellinen_poisto) {
                $tosituholaskuri++;
            }
        }
        // Aktiivisuusmerkintä:
        $viimeksi_aktiivi = time();
        $aktiivisuuslaji = Aktiivisuus::$ALBUMIN_POISTO;
        paivita_aktiivisuus($oma_id, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji);
        if (sizeof($kuvat) == $kuvalaskuri && $kuvalaskuri == $tosituholaskuri) {
            $ilmoitus = "Albumi '" . $nimi . "' poistettu onnistuneesti.\n                    Samalla poistettu {$kuvalaskuri} kuvaa ja\n                    {$poistetut_linkit_lkm} linkki&auml;!";
        } else {
            $ilmoitus = "Albumi '" . $nimi . "' poistettu, mutta kuvien poistossa\n                    tuli virhe. " . sizeof($kuvat) . " kuvasta poistettu \n                    tietokannasta {$kuvalaskuri} kuvaa, tiedostosta\n                    {$tosituholaskuri} kuvaa ja {$poistetut_linkit_lkm}\n                    linkki&auml;!";
        }
    } else {
        $ilmoitus = "Albumin poisto ep&auml;onnistui!\n                    Mit&auml;&auml;n ei ole poistettu. Yrit&auml; uudelleen!";
    }
    return $ilmoitus;
}
Ejemplo n.º 14
0
 /**
  * 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);
 }
/**
 * Kirjaa käyttäjän ulos hänen niin halutessaan tai pakolla kun
 * aikaa on kulunut laiskasti tietyn ajan verran. Ei aseta headeria ts.
 * ohjaa kirjautumissivulle.
 *
 *
 * @param <type> $online
 */
function kirjaa_ulos($tietokantaolio)
{
    $omaid = $_SESSION['tiedot']->id;
    kirjaa_vierailutiedot($omaid, $_SESSION['kirjautumisaika'], $tietokantaolio);
    aseta_online(false, $omaid, $tietokantaolio);
    // Aktiivisuusmerkintä:
    $viimeksi_aktiivi = time();
    $aktiivisuuslaji = Aktiivisuus::$ULOSKIRJAUTUMINEN;
    paivita_aktiivisuus($omaid, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji);
    unset($_SESSION['tiedot']);
    // Vapauttaa muuttujan
    unset($_SESSION['tunnistus']);
    // Vapauttaa muuttujan
    unset($_SESSION['kuvat_katsottu_viimeksi']);
    unset($_SESSION['ylaluokka_id_lj']);
    //$tietokantaolio->sulje_tietokanta(); Ei tarpeen ja aiheuttaa varoituksia lokiin.
}