/** * Toteuttaa nimenmukaisen toiminnon, johon sisältyy tarkistukset. Palauttaa * Palauteolio-luokan olion, joka sisältää palautteen onnistumisesta ja * virhetapauksessa virheilmoituksen. * * @return Palauteolio $palauteolio */ public function toteuta_tallenna_uusi_kuvaus() { $id = Kuvaus::$MUUTTUJAA_EI_MAARITELTY; $uusi = new Kuvaus($this->tietokantaolio, $id); $uusi->set_lajiluokka($this->parametriolio->id_lj); $uusi->set_kieli($this->parametriolio->kieli_id); $uusi->set_nimi($this->parametriolio->nimi_kuv); $uusi->set_kuvaus($this->parametriolio->kuv_kuv); $palaute = $uusi->tallenna_uusi(); $this->palauteolio->set_muokatun_id(mysql_insert_id()); if ($palaute == Kuvaus::$OPERAATIO_ONNISTUI) { $palaute = Bongaustekstit::$kuvaus_tallennus_uusi_ok; $this->palauteolio->set_operaatio_onnistui(true); } else { $this->palauteolio->set_operaatio_onnistui(false); } $this->palauteolio->set_ilmoitus($palaute); return $this->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; }
/** * Toteuttaa kokonaisuudessaan uuden kokonaisuuden tallennuksen tietokantaan. * Palauttaa Palauteolio-luokan olion. * * Järjestysluvuksi kokonaisuus saa id:n. Järjestyslukua voi myöhemmin * muuttaa vaihtamalla jonkin toisen kokonaisuuden kanssa, jolloin ei pitäisi * tulla päällekkäisyyksiä. * * @return <type> */ function toteuta_tallenna_uusi(&$palauteolio) { $parametriolio = $this->get_parametriolio(); $tallennuskesken = $parametriolio->tallennuskesken; $omaid = $parametriolio->get_omaid(); $oppiaine_kokon = $parametriolio->get_oppiaine_kokon(); $otsikko_kokon = $parametriolio->get_otsikko_kokon(); $tiivis_kokon = $parametriolio->get_tiivis_kokon(); $selitys_kokon = $parametriolio->get_selitys_kokon(); $taso_kokon = $parametriolio->get_taso_kokon(); $laajennetun_id_kokon = $parametriolio->get_laajennetun_id_kokon(); $kieli_id = $parametriolio->get_kieli_id(); $ylakokonaisuuden_id_kokon = $parametriolio->get_ylakokonaisuuden_id_kokon(); $jarjestysnro_kokon = $parametriolio->get_jarjestysnro_kokon(); $nakyvyys_kokon = $parametriolio->nakyvyys_kokon; $tietokantaolio = $parametriolio->get_tietokantaolio(); $palauteolio = new Palaute(); $linkit = ""; // Kokonaisuuslinkit $sisalto = ""; $ilmoitus = ""; $tallennetun_id = ""; $valikot_nayta = true; $kokonaisuusoliot = array(); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_YLEINEN); // Tallennettava kokonaisuus: $kokonaisuus = new Kokonaisuusolio(Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY, $this->get_tietokantaolio()); // Lisätään kokonaisuudelle saadut parametrit: $kokonaisuus->set_arvo($omaid, Kokonaisuusolio::$sarakenimi_henkilo_id); $kokonaisuus->set_arvo($otsikko_kokon, Kokonaisuusolio::$sarakenimi_otsikko); $kokonaisuus->set_arvo($tiivis_kokon, Kokonaisuusolio::$sarakenimi_tiivis); $kokonaisuus->set_arvo($selitys_kokon, Kokonaisuusolio::$sarakenimi_selitys); $kokonaisuus->set_arvo($taso_kokon, Kokonaisuusolio::$sarakenimi_taso); $kokonaisuus->set_arvo($oppiaine_kokon, Kokonaisuusolio::$sarakenimi_oppiaine); $kokonaisuus->set_arvo($laajennetun_id_kokon, Kokonaisuusolio::$sarakenimi_laajennetun_id); $kokonaisuus->set_arvo($kieli_id, Kokonaisuusolio::$sarakenimi_kieli); $kokonaisuus->set_arvo($ylakokonaisuuden_id_kokon, Kokonaisuusolio::$sarakenimi_ylakokonaisuuden_id); $kokonaisuus->set_arvo($nakyvyys_kokon, Kokonaisuusolio::$sarakenimi_nakyvyys); // Tallennus tietokantaan: $palaute = $kokonaisuus->tallenna_uusi(); // Jos tiedoissa on vikaa, esim. tyhjä otsikko: if ($palaute != Kokonaisuusolio::$OPERAATIO_ONNISTUI) { $valikot_nayta = false; $ilmoitus_kokon = $kokonaisuus->tulosta_virheilmoitukset(); $uusi = true; $id_kokon = -1; $sisalto = $this->kokonaisuusnakymat->nayta_kokonaisuuslomake($id_kokon, $omaid, $uusi, $ilmoitus_kokon, $tietokantaolio, $oppiaine_kokon, $otsikko_kokon, $tiivis_kokon, $selitys_kokon, $taso_kokon, $jarjestysnro_kokon, $laajennetun_id_kokon, $ylakokonaisuuden_id_kokon, $kieli_id, $nakyvyys_kokon, Toimintonimet::$kokonaisuustoiminto, $this, $parametriolio->kaavakieli, Elementti::$MUUTTUJAA_EI_MAARITELTY, Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY); $ilmoitus = $ilmoitus_kokon; } else { $tallennetun_id = $kokonaisuus->get_id_tietokanta(); /* Asetetaan järjestysluku samaksi kuin kokonaisuuden id. Näin * varmistetaan se, ettei tule samoja. */ $id = $kokonaisuus->get_id(); $kokonaisuus->set_arvo($id, Kokonaisuusolio::$sarakenimi_jarjestysnro); $onnistuiko = $kokonaisuus->tallenna_muutokset(); if ($onnistuiko == Kokonaisuusolio::$OPERAATIO_ONNISTUI) { $ilmoitus = Tekstit::$ilm_kokon_lisays_ok; //Aktiivisuusmerkintä: $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $tietokantaolio, time(), Aktiivisuus::$UUDEN_KOKONAISUUDEN_TALLENNUS); if (!$aktiivisuuspalaute) { $this->lisaa_virheilmoitus(Tekstit::$virheilm_aktiivisuuden_tallennus_eiok); } else { $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK); } } else { $ilmoitus = Tekstit::$virheilm_kokon_tallennus_ok_jarjnro_eiok . " " . $kokonaisuus->tulosta_virheilmoitukset(); } //================================================================= // Asetetaan sessiomuuttujat oikein, jotta näkyy myös // luettelossa. Yläkokonaisuus auki (sillä on ainakin yksi lapsi, // tämä) ja tämä kiinni (tällä ei voi olla lapsia, koska juuri luotu). $muuttujanimi_ylakok = Parametrit::linkkisessiomuuttujan_nimi($ylakokonaisuuden_id_kokon); $_SESSION[$muuttujanimi_ylakok] = Kokonaisuusolio::$LINKKI_AUKI; $muuttujanimi = Parametrit::linkkisessiomuuttujan_nimi($tallennetun_id); $_SESSION[$muuttujanimi] = Kokonaisuusolio::$LINKKI_KIINNI; //================================================================= $parametriolio->id_kokon = $id; $palauteolio2 = new Palaute(); if ($tallennuskesken) { $parametriolio->uusi = false; $this->toteuta_nayta_kokonaisuuslomake($palauteolio2); } else { $palauteolio2 = $this->toteuta_nayta($palauteolio2); } $sisalto = $palauteolio2->get_sisalto(); $linkit = $palauteolio2->get_linkkihtml(); } $palauteolio->set_ilmoitus($ilmoitus); $palauteolio->set_sisalto($sisalto); $palauteolio->set_muokatun_id($tallennetun_id); $palauteolio->set_valikkonaytto($valikot_nayta); $palauteolio->set_kokonaisuudet($kokonaisuusoliot); $palauteolio->nayta_kiintolinkit(); $palauteolio->set_linkkihtml($linkit); $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_KOKONAISUUS); return $palauteolio; }