コード例 #1
0
/**
 * 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&auml;!";
    } 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&auml;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;
}
コード例 #2
0
ファイル: uutiset.php プロジェクト: Hermut/pupesoft
     $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";