/** * Tallentaa kuvan tietokantaan. Kuvan tiedot on tarkistettu ennen tänne tuloa, * joten niitä ei tarkemmin tarkisteta täällä. * * Tallentaa kuvan ja palauttaa palauteolion, joka sisältää * palautteen tallennuksen onnistumisesta ('onnistui' tai virheilmoitus) ja * tallennetun kuvan id:n, jotta uusi kuva osataan näyttää heti. Kolmanneksi * palauteoliossa on tallennetun kuvan tiedosto-osoite. * * @param <type> $kohde * @param <type> $id_kokon * @param <type> $id_teht * @param <type> $id_ratk * @param <type> $omaid * @param <type> $ladattu_kuva $_FILES['ladattu_kuva'] * @param <type> $kuvaotsikko_kuva * @param <type> $kuvaselitys_kuva * @param <type> $vuosi_kuva * @param <type> $kk_kuva * @param <type> $paiva_kuva * @param <type> $nayttokokoindeksi_kuva * @param <type> $tietokantaolio * @param <type> $latauskansio Antaa sen kansion suhteellisen tiedostopolun, * jonne ladattu tiedosto on tarkoitus siirtää pysyvää sijoitusta varten. * @return Palaute $palauteolio */ function tallenna_kuva($kohde, $id_kokon, $id_teht, $id_ratk, $omaid, $ladattu_kuva, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $nayttokokoindeksi_kuva, $tietokantaolio, $latauskansio) { // Tallenna_kuva palauttaa olion, joka sisältää kolme // muuttujaa; palautteen (ilmoitus), tallennetun kuvan id:n (2), joka // voi olla tyhjä virheen sattuessa ja kuvaosoitteen (3) ($palauteolio::oma). $palauteolio = new Palaute(); $tallennetaan = true; /* Tallennetaanko kuvalinkki. */ $palaute = ""; $uuden_kuvan_id = -1; $kohdeosoite = ""; /* Tarkistetaan kohde: */ $taulu = "kuvat"; $sarakenimi_kuvataulukko = array('henkilo_id', 'kuvaotsikko', 'kuvaselitys', 'vuosi', 'kk', 'paiva', 'src', 'leveys', 'korkeus', 'tiedostokoko', 'tiedostotunnus', 'tiedostonimi', 'tallennushetki_sek', 'nayttokokoindeksi'); if ($ladattu_kuva['tmp_name'] == "") { $palaute = "\$ladattu_kuva['tmp_name'] on tyhjä!"; } else { $kuvatietotaulukko = getImageSize($ladattu_kuva['tmp_name']); $leveys = $kuvatietotaulukko[0]; $kork = $kuvatietotaulukko[1]; // Tiedostotunnisteet: $tunniste = $kuvatietotaulukko[2]; //gif = 1/jpg = 2/png = 3/... //$html_lev_ja_kork = $kuvatietotaulukko[3]; // "height='333' width='455'" $koko = $ladattu_kuva['size']; // Koko tavuina (ilm.) if (!(is_numeric($leveys) && is_numeric($kork) && is_numeric($tunniste))) { $palaute = "getImageSize(\$ladattu_kuva['tmp_name'])-\n palautearvotaulukossa lev, kork tai tunniste\n epälukuja! (lev: " . $leveys . ", kork: " . $kork . "\n ja tunniste: " . $tunniste . ")"; return $palaute; } // Kuvan nimeen lisätään tallennusaika sekunteina, jottei // duplikaatteja syntyisi. Samannimisiä kuvia voi muuten tulla. // Kuvan tiedostonimeä ei muuteta. $tiedostonimi = time() . "_" . $ladattu_kuva['name']; $kohdeosoite = $latauskansio . "/" . $tiedostonimi; $kuvatiedosto = $ladattu_kuva['tmp_name']; //******************************************************************* /* TÄSSÄ KUVAN KOKO TARKISTETAAN JA KUVA PIENENNETÄÄN, ETTEI * ÄLYTTÖMIÄ TULE. YLI 300 KT:N KUVAT PIENENNETÄÄN 1600 PIKSELIN * KOKOON, JOLLOIN MYÖS KUVAKOKO PIENENTYY. */ if ($koko > Kuvat::$KUVALATAUS_RAJAKOKO) { $max_mitta = Kuvat::$KUVATALLENNUS_PIENENNOSMITTA; if (muuta_kuvan_koko($ladattu_kuva['tmp_name'], $max_mitta, $kohdeosoite, 75)) { // Haetaan pienennetyn kuvan uudet tiedot: $kuvatietotaulukko = getImageSize($kohdeosoite); $leveys = $kuvatietotaulukko[0]; $kork = $kuvatietotaulukko[1]; // Tiedostotunnisteet: $tunniste = $kuvatietotaulukko[2]; //gif = 1/jpg = 2/png = 3/... $koko = filesize($kohdeosoite); // } else { // Ellei onnistu, tallennetaan alkuperäinen: $kuvatiedosto = $ladattu_kuva['tmp_name']; move_uploaded_file($kuvatiedosto, $kohdeosoite); } } else { // Ellei pienennöstarvetta ole. $kuvatiedosto = $ladattu_kuva['tmp_name']; move_uploaded_file($kuvatiedosto, $kohdeosoite); } //******************************************************************* $henkilo_id = $omaid; $tallennushetki_sek = time(); $arvotaulukko = array($henkilo_id, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $kohdeosoite, $leveys, $kork, $koko, $tunniste, $tiedostonimi, $tallennushetki_sek, $nayttokokoindeksi_kuva); // Palauttaa merkkijonon 'onnistui', jos tallennus onnistuu. $virheilm = Tekstit::$ilm_kuva_uusi_tallennus_eiok; $onnistuikos = $tietokantaolio->tallenna_uusi_rivi($taulu, $sarakenimi_kuvataulukko, $arvotaulukko, $virheilm); $palaute = $onnistuikos; if ($onnistuikos == Tietokantaolio::$HAKU_ONNISTUI) { $tallennetaan = true; $uuden_kuvan_id = mysql_insert_id(); $virheilm = Tekstit::$ilm_kuva_linkin_tallennus_eiok; /* * Linkki kuvan ja kohteen välille tehdään huolella oikein päin: */ if ($kohde === Kuvat::$kohde_kokonaisuus_tiivistelma) { $taulu = "kuva_linkit"; $sarakenimet = array("kokon_id", "kuva_id", "kohde"); $arvot = array($id_kokon, $uuden_kuvan_id, $kohde); $aktiivisuuslaji = Aktiivisuus::$KUVAN_TALLENNUS_KOKONAISUUTEEN; } else { if ($kohde === Kuvat::$kohde_kokonaisuus_selitys) { $taulu = "kuva_linkit"; $sarakenimet = array("kokon_id", "kuva_id", "kohde"); $arvot = array($id_kokon, $uuden_kuvan_id, $kohde); $aktiivisuuslaji = Aktiivisuus::$KUVAN_TALLENNUS_KOKONAISUUTEEN; } else { if ($kohde === Kuvat::$kohde_kokonaisuus_tiivis_manuaali || $kohde === Kuvat::$kohde_kokonaisuus_selitys_manuaali) { $taulu = "kuva_linkit"; $sarakenimet = array("kokon_id", "kuva_id", "kohde"); $arvot = array($id_kokon, $uuden_kuvan_id, $kohde); $aktiivisuuslaji = Aktiivisuus::$KUVAN_TALLENNUS_KOKONAISUUTEEN; } else { if ($kohde === Kuvat::$kohde_tehtava) { $taulu = "tehtavakuvalinkit"; $sarakenimet = array("tehtava_id", "kuva_id"); $arvot = array($id_teht, $uuden_kuvan_id); $aktiivisuuslaji = Aktiivisuus::$KUVAN_TALLENNUS_TEHTAVAAN; } else { if ($kohde === Kuvat::$kohde_ratkaisu) { $taulu = "ratkaisukuvalinkit"; $sarakenimet = array("ratkaisu_id", "kuva_id"); $arvot = array($id_ratk, $uuden_kuvan_id); $aktiivisuuslaji = Aktiivisuus::$KUVAN_TALLENNUS_RATKAISUUN; } else { $tallennetaan = false; $aktiivisuuslaji = ""; /* Tämän ei pitäisi tulla käyttäjälle, minkä takia ei käännetä. */ $onnistuiko_linkki = "Tuntematon kuvien kohdenimi! " . "(tallenna_kuva.php)" . "Tallennus peruttu!"; } } } } } /* Jos kaikki kunnossa, tallennetaan kuvalinkki */ if ($tallennetaan) { $onnistuiko_linkki = $tietokantaolio->tallenna_uusi_rivi($taulu, $sarakenimet, $arvot, $virheilm); } else { // Perutaan kuvan tallennus, koska sitä ei löydy ilman linkkiä! unlink($kohdeosoite); // Kuvan tod. poisto tiedostosta! /* Kuvatiedot poistetaan myös. */ $taulu = "kuvat"; $taulun_sarake = "id"; $hakuarvo = $uuden_kuvan_id; $poistopalaute = $tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo); $palaute .= "<br />" . $poistopalaute; } if ($onnistuiko_linkki != Tietokantaolio::$HAKU_ONNISTUI) { $uuden_kuvan_id = -1; // Uusi kuva ei kuitenkaan löydy. // Perutaan kuvan tallennus, koska sitä ei löydy ilman linkkiä! unlink($kohdeosoite); // Kuvan tod. poisto tiedostosta! /* Kuvatiedot poistetaan myös! */ $taulu = "kuvat"; $taulun_sarake = "id"; $hakuarvo = $uuden_kuvan_id; $poistopalaute = $tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo); $palaute = Tekstit::$ilm_kuva_linkin_tallennus_eiok; $palaute .= "<br />" . $poistopalaute; } else { /* Kun linkin tallennuskin onnistui: */ // Aktiivisuusmerkintä: $viimeksi_aktiivi = time(); paivita_aktiivisuus($omaid, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji); $palaute = Tietokantaolio::$HAKU_ONNISTUI; } } } $palauteolio->set_ilmoitus($palaute); $palauteolio->set_muokatun_id($uuden_kuvan_id); $palauteolio->set_oma($kohdeosoite); /* kansio-osoite+kuvan nimi! */ return $palauteolio; }
$tee = "SYOTA"; } elseif ($kukarow['yhtio'] == 'artr' and $toim == 'AUTOMANUAL' and $automanual_uutinen == '') { echo "<font class='error'>" . t("Uutisen näkyvyys on valittava!") . "</font><br><br>"; $rivi["kentta01"] = $otsikko; $rivi["kentta02"] = $uutinen; $rivi["kentta09"] = $kentta09; $rivi["konserni"] = $konserni; $rivi["kokopaiva"] = $kokopaiva; $tee = "SYOTA"; } elseif (strlen($otsikko) > 0 and strlen($uutinen) > 0 and count($lang) > 0) { $liitostunnus = 0; $retval = tarkasta_liite("userfile"); if ($retval !== true) { echo $retval; } else { $uusi_filu = muuta_kuvan_koko(0, 130, "thumb", "tmp", "userfile"); $kuva = tallenna_liite("userfile", "kalenteri", 0, $selite); if ($uusi_filu != "") { unlink($uusi_filu); } } $uutinen = nl2br(strip_tags($uutinen, '<a>')); $otsikko = nl2br(strip_tags($otsikko, '<a>')); $uutinen = mysql_real_escape_string($uutinen); // ollaanko valittu konsernitasoinen uutinen if ($konserni != '') { $konserni = $yhtiorow['konserni']; } $tapa = ""; if ($automanual_uutinen != '' and $extranet_uutinen != '' and $toim == 'EXTRANET') { $tapa = "automanual_ext_uutinen";