/**
 * @param Parametrit $parametriolio
 * @return Palaute $palauteolio
 */
function toteuta_kuvan_tallennus($parametriolio)
{
    $uusi = true;
    $palauteolio = new Palaute();
    $palauteolio_apu = new Palaute();
    $parametriolio->set_uusi_kuva(true);
    if (!array_key_exists('ladattu_kuva', $_FILES)) {
        $ilmoitus_kuva = 'Ei latauksia havaittu!';
        if ($parametriolio->kokoelmanimi == Kuva::$KUVAT_BONGAUS) {
            $havaintokontrolli = new Havaintokontrolleri($parametriolio->tietokantaolio, $parametriolio);
            $palauteolio = $havaintokontrolli->toteuta_nayta_kuvalomake_havaintoihin();
        } else {
            $palauteolio = toteuta_nayta_kuvalomake($parametriolio);
        }
        $palauteolio->set_ilmoitus($ilmoitus_kuva);
    } else {
        $ladattu_kuva = $_FILES['ladattu_kuva'];
        // Ilmeisesti koko on valmiiksi tavuina (täsmää kuvan omin. kans):
        //$info = getImageSize($ladattu_kuva['tmp_name']);
        $ilmoitus = "Tiedoston nimi: " . $ladattu_kuva['name'] . " (" . round($ladattu_kuva['size'] / 1024) . " kt)" . "<br/> Tyyppi: " . $ladattu_kuva['type'];
        //"<br/> Tmp-nimi: ".$ladattu_kuva['tmp_name'].
        //"<br/> Virheviesti: ".$ladattu_kuva['error'].
        //"<br/> Kuvan tyyppi: ".$info[2];
        $palauteolio->set_ilmoitus($ilmoitus);
        $tarkistus = tarkista_kuvatiedot($ladattu_kuva, $parametriolio->kuvaotsikko_kuva, $parametriolio->kuvaselitys_kuva, $parametriolio->vuosi_kuva, $parametriolio->kk_kuva, $parametriolio->paiva_kuva, $uusi);
        // Jos korjaamista, näytetään lomake uudelleen:
        if ($tarkistus != 'tiedot_ok') {
            $parametriolio->ilmoitus_kuva = $tarkistus;
            if ($parametriolio->kokoelmanimi == Kuva::$KUVAT_BONGAUS) {
                $havaintokontrolli = new Havaintokontrolleri($parametriolio->tietokantaolio, $parametriolio);
                $palauteolio = $havaintokontrolli->toteuta_nayta_kuvalomake_havaintoihin();
            } else {
                $palauteolio = toteuta_nayta_kuvalomake($parametriolio);
            }
            $palauteolio->set_ilmoitus($tarkistus);
        } else {
            // Tarkistus meni läpi.
            $latauskansio = $parametriolio->get_kuvien_kansio_osoite();
            $pikkukuvakansio = $parametriolio->get_pikkukuvien_kansio_osoite();
            // Tallenna_kuva palauttaa taulukon, joka sisältää
            // palautteen ja tallennetun kuvan id:n, joka
            // voi olla tyhjä virheen sattuessa.
            $palaute = Kuva::tallenna_kuva($parametriolio);
            if ($palaute[0] == Tietokantaolio::$HAKU_ONNISTUI) {
                $ilmoitus = "Kuvan tallennus onnistui! <br/>" . $ilmoitus;
                $id_kuva = $palaute[1];
                $palauteolio->set_muokatun_id($id_kuva);
                if ($parametriolio->kokoelmanimi == Kuva::$KUVAT_ALBUMIT) {
                    /*$sisaltoteksti = nayta_albumi($omaid,$id_alb, $id_kuva,
                      $muokkaa_kuva,
                      $uusi_kuva,
                      $takaisin_albumilistaan_alb,
                      $ed_kuva_alb, $seur_kuva_alb,
                      $tauko_alb, $jatka_esitysta_alb,
                      $poista_kuva,$tietokantaolio,
                      $valtuudet);*/
                    // Uudempi ajaxin kera (joustava kuvakoko ikkunan mukaan)
                    $sisaltoteksti = "<script type='text/javascript'>" . "hae_kuva_ja_tiedot('" . $parametriolio->id_alb . "','" . $id_kuva . "','" . $parametriolio->kokoelmanimi . "')</script>";
                } else {
                    if ($parametriolio->kokoelmanimi == Kuva::$KUVAT_BONGAUS) {
                        // Asetetaan id_kuva uuden kuvan vastaavaksi:
                        $parametriolio->id_kuva = $id_kuva;
                        $palauteolio_apu = toteuta_bongaus_nayta_albumin_yksi_kuva($parametriolio);
                        $sisaltoteksti = $palauteolio_apu->get_sisalto();
                    } else {
                        $sisaltoteksti = "Virhe: tuntematon kokoelmanimi";
                    }
                }
                unset($_FILES['ladattu_kuva']);
                //Poistetaan entiset.
            } else {
                $ilmoitus = "Virhe kuvan tallennuksessa ({$palaute['0']})!\n                            Yrit&auml; uudestaan!";
                $parametriolio->ilmoitus_kuva = $ilmoitus;
                if ($parametriolio->kokoelmanimi == Kuva::$KUVAT_BONGAUS) {
                    $havaintokontrolli = new Havaintokontrolleri($parametriolio->tietokantaolio, $parametriolio);
                    $palauteolio_apu = $havaintokontrolli->toteuta_nayta_kuvalomake_havaintoihin();
                } else {
                    $palauteolio_apu = toteuta_nayta_kuvalomake($parametriolio);
                }
                $sisaltoteksti = $palauteolio_apu->get_sisalto();
            }
            $palauteolio->set_sisalto($sisaltoteksti);
            $palauteolio->set_ilmoitus($ilmoitus);
        }
    }
    return $palauteolio;
}
/**
 * Toteuttaa kuvan tietojen tallennuksen tietokantaan ja kuvan tallennuksen
 * tallennuskansioon. Kuvan tiedot tarkistetaan.
 *
 * Tallentaa kuvan ja palauttaa taulukon, jonka ensimmäinen alkio on
 * palautte tallennuksen onnistumisesta ('onnistui' tai virheilmoitus) ja toinen
 * tallennetun kuvan id:n, jotta uusi kuva osataan näyttää heti. Kolmas alkio
 * taulukossa on tallennetun kuvan tiedosto-osoite.
 *
 * @param Parametrit $parametriolio
 * @return Palaute $palauteolio
 */
function toteuta_tallenna_kuva($parametriolio)
{
    $id_kokon = $parametriolio->id_kokon;
    $id_teht = $parametriolio->id_teht;
    $id_ratk = $parametriolio->id_ratk;
    $omaid = $parametriolio->get_omaid();
    $kuvaotsikko_kuva = $parametriolio->kuvaotsikko_kuva;
    $kuvaselitys_kuva = $parametriolio->kuvaselitys_kuva;
    $vuosi_kuva = $parametriolio->vuosi_kuva;
    $kk_kuva = $parametriolio->kk_kuva;
    $paiva_kuva = $parametriolio->paiva_kuva;
    $nayttokokoindeksi_kuva = $parametriolio->nayttokokoindeksi_kuva;
    $tietokantaolio = $parametriolio->get_tietokantaolio();
    $kokonaisuuskontrolleri = new Kokonaisuuskontrolleri($tietokantaolio, $parametriolio);
    $tehtavakontrolleri = new Tehtavakontrolleri($tietokantaolio, $parametriolio);
    $ratkaisukontrolleri = new Ratkaisukontrolleri($tietokantaolio, $parametriolio);
    //$latauskansio_os Antaa sen kansion suhteellisen tiedostopolun,
    // jonne ladattu tiedosto on tarkoitus siirtää pysyvää sijoitusta varten.
    $latauskansio_os = $parametriolio->latauskansio_os;
    //"selitys"/"tiivis"/"manuaali"/"tehtava"/"ratkaisu"
    $kohde_kuva = $parametriolio->kohde_kuva;
    $palauteolio = new Palaute();
    $palauteolio2 = new Palaute();
    /* tallenna_kuva-metodin palaute */
    $palauteolio_kokon = new Palaute();
    $pal_olio = new Palaute();
    $palauteolio_tehtavat = new Palaute();
    $sisalto = "";
    $id_kuva = "";
    /* Tallennetun kuvan tunniste. */
    $uusi = true;
    $linkit = "";
    // Liittyy tehtäviin esim.
    // Huom! alla olevaan ei tulekaan kuvan id, vaan isäntäolion id!
    $muokatun_id = Kokonaisuusolio::$kokon_ei_maaritelty;
    /* Tarkistetaan, onko latauksia tullut palvelimelle: */
    if (!array_key_exists(Kuvat::$kuvalatauksen_name, $_FILES)) {
        $ilmoitus_kuva = 'Ei latauksia havaittu!';
        $sisalto = nayta_kuvalomake_uusi($kohde_kuva, $omaid, $uusi, $ilmoitus_kuva, $tietokantaolio, $id_kuva, $id_kokon, $id_teht, $id_ratk, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $nayttokokoindeksi_kuva);
        $palauteolio->set_ilmoitus($ilmoitus_kuva);
        $palauteolio->set_sisalto($sisalto);
    } else {
        $ladattu_kuva = $_FILES[Kuvat::$kuvalatauksen_name];
        // Ilmeisesti koko on valmiiksi tavuina (täsmää kuvan omin. kans):
        //$info = getImageSize($ladattu_kuva['tmp_name']);
        $ilmoitus = "Tiedoston nimi: " . $ladattu_kuva['name'] . " (" . round($ladattu_kuva['size'] / 1024) . " kt)" . "<br/> Tyyppi: " . $ladattu_kuva['type'] . "<br />";
        //"<br/> Tmp-nimi: ".$ladattu_kuva['tmp_name'].
        //"<br/> Virheviesti: ".$ladattu_kuva['error'].
        //"<br/> Kuvan tyyppi: ".$info[2];
        $tarkistus = tarkista_kuvatiedot($ladattu_kuva, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $uusi);
        // Jos korjaamista, näytetään lomake uudelleen:
        if ($tarkistus != Palautteita::$lomaketiedot_ok) {
            $ilmoitus_kuva = $tarkistus;
            $sisalto = nayta_kuvalomake_uusi($kohde_kuva, $omaid, $uusi, $ilmoitus_kuva, $tietokantaolio, $id_kuva, $id_kokon, $id_teht, $id_ratk, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $nayttokokoindeksi_kuva);
        } else {
            // Tallenna_kuva palauttaa olion, joka sisältää kolme
            // tietoa; palautteen (ilmoitus), tallennetun kuvan id:n (2), joka
            // voi olla tyhjä virheen sattuessa ja kuvaosoitteen (3).
            $palauteolio2 = tallenna_kuva($kohde_kuva, $id_kokon, $id_teht, $id_ratk, $omaid, $ladattu_kuva, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $nayttokokoindeksi_kuva, $tietokantaolio, $latauskansio_os);
            if ($palauteolio2->get_ilmoitus() == Tietokantaolio::$HAKU_ONNISTUI) {
                $ilmoitus = Tekstit::$ilm_kuva_uusi_tallennus_ok;
                $id_kuva = $palauteolio2->get_muokatun_id();
                $linkit = "";
                // Lisälinkkejä, esim. tehtävissä.
                /* Palautetaan se näkymä, jonka parissa on tehty töitä: */
                if ($kohde_kuva === Kuvat::$kohde_kokonaisuus_tiivistelma || $kohde_kuva === Kuvat::$kohde_kokonaisuus_selitys) {
                    if ($kohde_kuva == Kuvat::$kohde_kokonaisuus_selitys) {
                        $selitys_auki_id = $id_kokon;
                    } else {
                        $selitys_auki_id = "";
                    }
                    $parametriolio->selitys_auki_id = $selitys_auki_id;
                    $kokonaisuuskontrolleri->toteuta_nayta($palauteolio_kokon);
                    $sisalto = $palauteolio_kokon->get_sisalto();
                    $linkit = $palauteolio_kokon->get_linkkihtml();
                    $muokatun_id = $id_kokon;
                } else {
                    if ($kohde_kuva === Kuvat::$kohde_kokonaisuus_tiivis_manuaali || $kohde_kuva === Kuvat::$kohde_kokonaisuus_selitys_manuaali) {
                        $kohteena_tiivis = $kohde_kuva === Kuvat::$kohde_kokonaisuus_tiivis_manuaali;
                        if ($kohteena_tiivis) {
                            $sarakenimi = "tiivis";
                        } else {
                            $sarakenimi = "selitys";
                        }
                        // Haetaan ajantasalla olevat tiedot tietokannasta.
                        /* Muutettavat tiedot alla, jotka siis pitää asettaa:
                           * $muutosarvot = array(time(),
                                  $oppiaine_kokon,
                                  $otsikko_kokon,
                                  $tiivis_kokon,
                                  $selitys_kokon,
                                  $taso_kokon,
                                  $jarjestysnro,
                                  $laajennetun_id_kokon,
                                  $kieli_id,
                                  $ylakokonaisuuden_id);
                           */
                        $taulunimi = "kokonaisuudet";
                        $sarakenimi = "id";
                        $hakuarvo = $id_kokon;
                        $kokonaisuus = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
                        if ($kokonaisuus != Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
                            $parametriolio->oppiaine_kokon = $kokonaisuus->oppiaine;
                            $parametriolio->otsikko_kokon = $kokonaisuus->otsikko;
                            $parametriolio->tiivis_kokon = $kokonaisuus->tiivis;
                            $parametriolio->selitys_kokon = $kokonaisuus->selitys;
                            $parametriolio->taso_kokon = $kokonaisuus->taso;
                            $parametriolio->jarjestysnro_kokon = $kokonaisuus->jarjestysnro;
                            $parametriolio->laajennetun_id_kokon = $kokonaisuus->laajennetun_id;
                            $parametriolio->ylakokonaisuuden_id_kokon = $kokonaisuus->ylakokonaisuuden_id;
                        }
                        // Haetaan kokonaisuuden tiivistelmä/selitys:
                        if ($kohteena_tiivis) {
                            $vanha = $parametriolio->tiivis_kokon;
                        } else {
                            $vanha = $parametriolio->selitys_kokon;
                        }
                        // Haetaan tallennettu kuva tietokannasta:
                        if ($tietokantaolio instanceof Tietokantaolio) {
                            $taulunimi = "kuvat";
                            $sarakenimi = "id";
                            $hakuarvo = $id_kuva;
                            $tk_olio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
                            if ($tk_olio != Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
                                $kuva = new Kuva($tk_olio, $tietokantaolio);
                            }
                            $kuvahtml = $kuva->nayta_pelkka_kuva($latauskansio_os);
                            // Uusi on vanha + kuvahtml:
                            $uusi = $vanha . "\n" . $kuvahtml;
                            if ($kohteena_tiivis) {
                                $parametriolio->tiivis_kokon = $uusi;
                            } else {
                                $parametriolio->selitys_kokon = $uusi;
                            }
                            $kokonaisuuskontrolleri->toteuta_tallenna_muokkaus($palauteolio_kokon);
                        }
                        $sisalto = $palauteolio_kokon->get_sisalto();
                        $muokatun_id = $id_kokon;
                    } else {
                        if ($kohde_kuva === Kuvat::$kohde_tehtava) {
                            $tehtavakontrolleri->toteuta_nayta_tehtavat($palauteolio_tehtavat);
                            $linkit = $palauteolio_tehtavat->get_linkkihtml();
                            $sisalto = $palauteolio_tehtavat->get_sisalto();
                            $muokatun_id = $id_teht;
                        } else {
                            if ($kohde_kuva === Kuvat::$kohde_ratkaisu) {
                                $ratkaisukontrolleri->toteuta_nayta($pal_olio);
                                $sisalto = $pal_olio->get_sisalto();
                                $muokatun_id = $id_ratk;
                            } else {
                                $sisalto = "kohde_kuva?? (toteuta_tallenna_kuva)";
                            }
                        }
                    }
                }
            } else {
                $ilmoitus .= $palauteolio2->get_ilmoitus() . " ja " . $palauteolio_kokon->get_ilmoitus();
                $ilmoitus_kuva = $palauteolio2->get_ilmoitus();
                $sisalto = nayta_kuvalomake_uusi($kohde_kuva, $omaid, $uusi, $ilmoitus_kuva, $tietokantaolio, $id_kuva, $id_kokon, $id_teht, $id_ratk, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $nayttokokoindeksi_kuva);
            }
        }
    }
    $palauteolio->set_ilmoitus($ilmoitus);
    $palauteolio->set_sisalto($sisalto);
    $palauteolio->set_muokatun_id($muokatun_id);
    /* Kuvan suhteellinen osoite (kutsuvasta ohjelmanosasta). */
    $palauteolio->set_oma($palauteolio2->get_oma());
    /* Linkit (esim. tehtävät) */
    $palauteolio->set_linkkihtml($linkit);
    return $palauteolio;
}
Beispiel #3
0
     $sisaltoteksti = "<script type='text/javascript'>" . "hae_kuva_ja_tiedot('" . $id_alb . "','" . $id_kuva . "','" . $kokoelmanimi . "')" . "</script>";
     break;
     /********************** KUVAN MUOKKAUS *********************************/
 /********************** KUVAN MUOKKAUS *********************************/
 case $muokkaa_kuva:
     $parametriolio->set_uusi_kuva(false);
     $palauteolio = toteuta_nayta_kuvalomake($parametriolio);
     break;
     /********************** TALLENNA KUVAN MUOKKAUS  **********************/
 /********************** TALLENNA KUVAN MUOKKAUS  **********************/
 case $tallenna_muokkaus_kuva:
     $parametriolio->set_uusi_kuva(false);
     $ladattu_kuva = "";
     // Tätä ei tarkisteta eikä muuteta.
     $uusi = false;
     $tarkistus = tarkista_kuvatiedot($ladattu_kuva, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $uusi);
     // Jos korjaamista, näytetään lomake uudelleen:
     if ($tarkistus != 'tiedot_ok') {
         $parametriolio->set_ilmoitus($tarkistus);
         $palauteolio = toteuta_nayta_kuvalomake($parametriolio);
     } else {
         // Tarkistus meni läpi.
         $palaute = tallenna_kuvan_muutokset($parametriolio);
         if ($palaute == 'onnistui') {
             $ilmoitus = "Kuvatietojen muutos onnistui!";
             // Vanha ilman ajaxia:
             /*$sisaltoteksti = nayta_albumi($omaid,$id_alb,
               $id_kuva, $muokkaa_kuva,
               $uusi_kuva,
               $takaisin_albumilistaan_alb,
               $ed_kuva_alb, $seur_kuva_alb,