/**
  * Luo uuden lajiluokan annetuilla arvoilla, tallentaa sen tietokantaan
  * ja palauttaa tallennetun id:n tai arvon
  * Lajiluokka::$MUUTTUJAA_EI_MAARITELTY, jos jokin menee vikaan.
  *
  * @param type $ylaluokka_id
  * @param type $nimi_latina
  * @return type 
  */
 public function luo_ja_tallenna_lajiluokka($ylaluokka_id, $nimi_latina)
 {
     $tallennetun_id = Lajiluokka::$MUUTTUJAA_EI_MAARITELTY;
     $id = Lajiluokka::$PARAMETRI_EI_KAYTOSSA;
     $lajiluokka = new Lajiluokka($this->tietokantaolio, $id);
     $this->lisaa_testikommentti("Uusi tyhja lajiluokka luotu!", false);
     // Ei pitäisi olla tallennuskelpoinen:
     if ($lajiluokka->on_tallennuskelpoinen(true)) {
         $this->lisaa_virheilmoitus("Ei pitaisi olla tallennuskelpoinen!");
     } else {
         /*$this->lisaa_testikommentti("Muuttujia ei ole asetettu, joten".
           " saatiin aivan oikein seuraava palaute: ".
           $lajiluokka->tulosta_virheilmoitukset(),false);*/
     }
     /*$this->lisaa_testikommentti("Asetetaan lajiluokan ylaluokka_id,
       ja nimi_latina. Testataan
       uudelleen, onko nyt tallennuskelpoinen:",false);*/
     $lajiluokka->set_ylaluokka_id($ylaluokka_id);
     $lajiluokka->set_nimi_latina($nimi_latina);
     // Tässä vaiheessa ongelmaksi voi tulla myös se, että nimi_latina on
     // jo olemassa. Siitä annetaan erillinen ilmoitus.
     if ($lajiluokka->on_tallennuskelpoinen(true)) {
         $this->lisaa_testikommentti("Lajiluokka on tallennuskelpoinen", false);
         $onnistuminen = $lajiluokka->tallenna_uusi();
         if ($onnistuminen === Lajiluokka::$OPERAATIO_ONNISTUI) {
             $tallennetun_id = mysql_insert_id();
             $this->lisaa_testikommentti("Lajiluokan tallennus onnistui!", false);
         } else {
             $this->lisaa_testikommentti($onnistuminen . " Virhe tallennuksessa (luo_\n                    ja_tallenna_lajiluokka())!" . " Arvot: ylaluokka_id=" . $lajiluokka->get_ylaluokka_id() . ", nimi_latina=" . $lajiluokka->get_nimi_latina(), true);
         }
     } else {
         // Tämä ei aina ole vastoin toivomuksia!
         $this->lisaa_testikommentti($lajiluokka->tulosta_virheilmoitukset(), false);
     }
     return $tallennetun_id;
 }
Example #2
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;
 }
 /**
  * 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;
 }
/**
 * Palauttaa havaintolomakkeen html-koodina.
 *
 * @param <type> $tallennuskommentti kertoo mikä laji tallennettiin viimeksi.
 * @param bool $onKopio auttaa siihen, että luotuun havaintoon osataan palata
 * sekä kopioinnin että tavallisen uuden luonnin yhteydessä.
 * @param Parametrit $parametriolio
 * @return <type>
 */
function nayta_havaintolomake_kaikki_lajit(&$parametriolio)
{
    $paiva_hav = $parametriolio->paiva_hav;
    $kk_hav = $parametriolio->kk_hav;
    $vuosi_hav = $parametriolio->vuosi_hav;
    $paikka_hav = $parametriolio->paikka_hav;
    $kommentti_hav = $parametriolio->kommentti_hav;
    $tietokantaolio = $parametriolio->get_tietokantaolio();
    // $tallennuskommentti kertoo mikä laji tallennettiin viimeksi.
    $tallennuskommentti = $parametriolio->get_tallennuspalaute();
    $submitnappi = "";
    $poistunappi = "";
    $type = "submit";
    $class = "rinnakkain";
    $id = "";
    $onclick = "";
    $name = Bongaustoimintonimet::$havaintotoiminto;
    $value = Bongauspainikkeet::$PERUMINEN_HAVAINTO_VALUE;
    $poistunappi = Html::luo_painike_ilman_formia($type, $class, $id, $name, $value, $onclick);
    $suurin_havaintoid = hae_suurin_id($tietokantaolio, "bhavainnot");
    // Seuraava liittyy siihen, että tallennetut näytetään taulukossa:
    // Luotavan (ekan) id on todennäköisesti yhtä suurempi kuin äsken laskettu:
    $uuden_id = $suurin_havaintoid + 1;
    // Otetaan arvo ylös:
    $parametriolio->set_naytettavan_id_hav($uuden_id);
    $url_jatke_seur = "?id_hav=" . $uuden_id . "#havainto" . $uuden_id;
    if ($suurin_havaintoid == -1) {
        $url_jatke_seur = "";
    }
    $url_id = $url_jatke_seur;
    //
    // Submit-painike:
    $maar_array = array(Maarite::type("submit"), Maarite::classs("rinnakkain"), Maarite::name(Bongaustoimintonimet::$havaintotoiminto), Maarite::value(Bongauspainikkeet::$TALLENNA_MONTA_HAV_KERRALLA_VALUE), Maarite::title(Bongauspainikkeet::$TALLENNA_MONTA_HAV_KERRALLA_TITLE));
    $submitnappi = Html::luo_input($maar_array);
    /*************************************************************************/
    $maavalikkohtml = "";
    try {
        $arvot = Maat::hae_maa_arvot();
        $nimet = Maat::hae_maakuvaukset();
        $name_arvo = Maat::$tietokannan_sarakenimi;
        $oletusvalinta_arvo = $parametriolio->maa_hav;
        $otsikko = Maat::$valikko_otsikko;
        $onchange_metodinimi = "kirjoita_maa";
        $onchange_metodiparametrit_array = array();
        $maavalikkohtml .= Html::luo_pudotusvalikko_onChange($arvot, $nimet, $name_arvo, $oletusvalinta_arvo, $otsikko, $onchange_metodinimi, $onchange_metodiparametrit_array);
    } catch (Exception $poikkeus) {
        $maavalikkohtml = "Virhe maavalikossa! (" . $poikkeus->getMessage() . ")";
    }
    /*************************************************************************/
    $naytettava_valinta = $parametriolio->varmuus_hav;
    $varmuusvalikko = Varmuus::muodosta_valikkohtml(false, $naytettava_valinta);
    // kommentin muotoilu:
    if (!empty($tallennuskommentti)) {
        $tallennuskommentti = $tallennuskommentti . "<br/>";
    }
    //=========================================================================
    //Muotoillaan lajivalinnat:
    $lajioliot = Lajiluokka::hae_kaikki_lajiluokat($parametriolio->kieli_id, $parametriolio->ylaluokka_id_lj, $parametriolio->tietokantaolio);
    $laskuri = 1;
    $rivin_pituus = 10;
    // Näin monta rivissä.
    $rivi = "";
    $taulukko = "";
    foreach ($lajioliot as $lajiolio) {
        if ($lajiolio instanceof Lajiluokka) {
            // Haetaan lajinimi:
            $kuvaus = $lajiolio->hae_kuvaus($parametriolio->kieli_id);
            if ($kuvaus === Lajiluokka::$MUUTTUJAA_EI_MAARITELTY) {
                $kuvaus = $lajiolio->hae_kuvaus(Kielet::$SUOMI);
            }
            $lajinimi = $kuvaus->get_nimi();
            // Tarkistetaan, onko tämä ollut valittu (esim. muokkaus):
            $checked = "";
            foreach ($parametriolio->lajivalinnat_hav as $valitun_id) {
                if ($lajiolio->get_id() === $valitun_id) {
                    $checked = "checked";
                }
            }
            if (empty($checked)) {
                $solusis = Html::luo_labeled_checkbox($lajinimi, array(Maarite::name(Bongausasetuksia::$monen_lajin_valinta_id_taulukko_name . "[]"), Maarite::value($lajiolio->get_id())));
            } else {
                $solusis = Html::luo_labeled_checkbox($lajinimi, array(Maarite::name(Bongausasetuksia::$monen_lajin_valinta_id_taulukko_name . "[]"), Maarite::value($lajiolio->get_id()), Maarite::checked($checked)));
            }
            $rivi .= Html::luo_tablesolu($solusis, array(Maarite::classs("valintasolu")));
            // Jos rivi täynnä tai ollaan vikassa lajissa,
            // suljetaan se ja tyhjennetään rivimuuttuja:
            if ($laskuri % $rivin_pituus == 0 || $laskuri == sizeof($lajioliot)) {
                $taulukko .= Html::luo_tablerivi($rivi, array());
                $rivi = "";
            }
            $laskuri++;
        }
    }
    $taulukko = Html::luo_table($taulukko, array(Maarite::classs("tietotaulu_ulkorajaton"), Maarite::align("center")));
    //========================================================================
    // Luodaan form-elementin sisältö:
    $mj = Html::luo_div(Html::luo_span($tallennuskommentti, array(Maarite::id(Bongausasetuksia::$havaintolomake_tallennustiedote_id))) . Bongaustekstit::$havaintolomake_uusien_tallennus_ohje, array(Maarite::style("font-weight:bold"))) . Html::luo_button(Bongauspainikkeet::$ed_vko, array(Maarite::id("b1"), Maarite::type("button"), Maarite::onclick("nayta_ed_vko", ""))) . Html::luo_button(Bongauspainikkeet::$ed_paiva, array(Maarite::id("b2"), Maarite::type("button"), Maarite::onclick("nayta_ed", ""))) . " *" . Bongaustekstit::$paiva . ": " . Html::luo_input(array(Maarite::type("text"), Maarite::id("paiva"), Maarite::name("paiva_hav"), Maarite::value($paiva_hav), Maarite::size(2), Maarite::max_length(2), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . " *" . Bongaustekstit::$kk . ": " . Html::luo_input(array(Maarite::type("text"), Maarite::id("kk"), Maarite::name("kk_hav"), Maarite::value($kk_hav), Maarite::size(2), Maarite::max_length(2), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . " *" . Bongaustekstit::$vuosi . ": " . Html::luo_input(array(Maarite::type("text"), Maarite::id("vuosi"), Maarite::name("vuosi_hav"), Maarite::value($vuosi_hav), Maarite::size(4), Maarite::max_length(4), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . Html::luo_span("", array(Maarite::id("pvm_naytto"))) . Html::luo_button(Bongauspainikkeet::$seur_paiva, array(Maarite::id("b3"), Maarite::type("button"), Maarite::onclick("nayta_seur", ""))) . Html::luo_button(Bongauspainikkeet::$seur_vko, array(Maarite::id("b4"), Maarite::type("button"), Maarite::onclick("nayta_seur_vko", ""))) . Html::luo_br() . " *" . Bongaustekstit::$paikka . ": " . Html::luo_input(array(Maarite::type("text"), Maarite::name("paikka_hav"), Maarite::value($paikka_hav), Maarite::size(43))) . $maavalikkohtml . Varmuus::$valikko_otsikko . ": " . $varmuusvalikko . Bongaustekstit::$kommentti . ": " . Html::luo_input(array(Maarite::type("text"), Maarite::name("kommentti_hav"), Maarite::value($kommentti_hav), Maarite::size(43))) . $taulukko . $submitnappi . $poistunappi;
    // Sullotaan sisältö form-tagien sisään:
    $mj = Html::luo_form($mj, array(Maarite::align("center"), Maarite::method("post"), Maarite::action("index.php" . $url_id), Maarite::id(Bongausasetuksia::$havaintolomake_kaikki_lajit_id)));
    // Palautetaan lomake ja näytetään js-päivämäärä;.
    return $mj . Html::luo_script_js("nayta_pvm();");
    //return $mj."<script type='text/javascript'>nayta_pvm();</script>";
}
Example #5
0
 /**
  * Näyttää lomakkeen, jonka avulla saadaan luotua uusia ja muokattua vanhoja
  * lajiluokkia.
  *
  * @param <type> $id_lj
  * @param <type> $ylaluokka_id_lj
  * @param <type> $nimi_latina_lj
  * @param <type> $lajiluokka_id_kuv
  * @param <type> $nimi_kuv
  * @param <type> $kuv_kuv
  * @param <type> $kieli_kuv
  * @return <type>
  */
 public static function nayta_lajiluokkalomake(&$ylaluokka_id_lj, &$nimi_latina_lj, &$nimi_kuv, &$kuv_kuv, &$kieli_kuv, $uusi, $tietokantaolio)
 {
     $submitnappi = "";
     $poistunappi = "";
     $class = "rinnakkain";
     $id = "";
     $action = "oletus";
     $name = Bongaustoimintonimet::$lajiluokkatoiminto;
     $value = Bongauspainikkeet::$PERUMINEN_LAJILUOKKA_VALUE;
     $poistunappi = Html::luo_painikelomake($class, $id, $action, $name, $value);
     if ($uusi) {
         $class = "rinnakkain";
         $id = "";
         $action = "oletus";
         $name = Bongaustoimintonimet::$lajiluokkatoiminto;
         $value = Bongauspainikkeet::$TALLENNA_UUSI_LAJILUOKKA_VALUE;
         $submitnappi = Html::luo_painikelomake($class, $id, $action, $name, $value);
     } else {
         $class = "";
         $id = "";
         $action = "oletus";
         $name = Bongaustoimintonimet::$lajiluokkatoiminto;
         $value = Bongauspainikkeet::$TALLENNA_MUOKKAUS_LAJILUOKKA_VALUE;
         $submitnappi = Html::luo_painikelomake($class, $id, $action, $name, $value);
     }
     // Valikot:
     /*$kielivalikko = nayta_kielivalikko($kieli_kuv,"");*/
     $kielivalikko = "suomi";
     // Jos yläluokkaa ei ola määritelty (=-1), etsitään sen luokan id, jonka
     // suomenkielisen kuvauksen nimi on "Linnut":
     if ($ylaluokka_id_lj == -1) {
         $taulunimi = "bkuvaukset";
         $sarakenimi = "nimi";
         $hakuarvo = "Linnut";
         $kuvausolio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
         if ($kuvausolio != Bongausasetuksia::$tietokantahaku_ei_loytynyt) {
             $ylaluokka_id_lj = $kuvausolio->lajiluokka_id;
         }
     }
     $otsikko = "";
     // Otsikko laitetaan eri paikkaan.
     $js_metodinimi = "";
     $js_param_array = "";
     $nayta_tyhja = Bongaustekstit::$lajiluokkalomake_ei_ylatasoa;
     //=true
     $ylaluokkavalikko = Lajiluokka::nayta_ylaluokkavalikko($nayta_tyhja, $tietokantaolio, $ylaluokka_id_lj, $kieli_kuv, $otsikko, $js_metodinimi, $js_param_array);
     $mj = "<form align='center' method='post' action='index.php'>" . "<table summary='uudet_tiedot' id=" . Bongausasetuksia::$lajiluokkalomakkeen_id . ">" . "<tr><td colspan=2><b>" . Bongaustekstit::$lajiluokkalomake_ohje . "</b></td></tr>" . "<tr>" . "<td align='left'>*" . Bongaustekstit::$lajiluokkalomake_ylaluokka . ":</td>\n           <td align='left'> " . $ylaluokkavalikko . " " . Bongaustekstit::$lajiluokkalomake_ylaluokkaohje . "</td>\n           </tr>" . "<tr>" . "<td align='left'>*" . Bongaustekstit::$lajiluokkalomake_nimi_latina . ":\n           </td><td align='left'>\n           <input type='text' name='nimi_latina_lj' value='" . $nimi_latina_lj . "'/></td>\n           </tr>" . "<tr>" . "<td align='left'>*" . Bongaustekstit::$lajiluokkalomake_nimi_omakieli . " (" . $kielivalikko . "):\n           </td><td align='left'>\n           <input type='text' name='nimi_kuv' value='{$nimi_kuv}'/>\n           </td>\n           </tr>" . "<tr><td align='left'>" . Bongaustekstit::$lajiluokkalomake_kuvaus . ":</td>\n           <td align='left'><textarea cols='50'\n           rows='6'name='kuv_kuv'>{$kuv_kuv}" . "</textarea></td></tr>" . "<tr><td></td><td align='left'>" . $submitnappi . $poistunappi . "</td></tr>" . "</table>" . "</form>";
     // Palautetaan lomake.
     return $mj;
 }
 /**
  *  Testaa lajiluokan muokkausta:
  */
 public function testaa_lajiluokan_muokkaus()
 {
     $this->lisaa_testikommentti("<h4>Lajiluokan muokkaustesti alkaa</h4>", false);
     $this->lisaa_testikommentti("Otetaan muokattavaksi viimeksi luotu\n            lajiluokka", false);
     $this->muokattava = $this->lajiluokat[1];
     //======================================================================
     // Testataan ennen muutoksia onTallennuskelpoinen-metodi, jonka
     // pitäisi valittaa:
     $this->lisaa_testikommentti("Testataan ennen muutoksia\n            onTallennuskelpoinen-metodi, jonka pitaisi valittaa:", false);
     $uusi = false;
     if ($this->muokattava->on_tallennuskelpoinen(false)) {
         $this->lisaa_testikommentti("Virhe: samoja tietoja ei pida\n                paastaa muokkaamaan!", true);
     } else {
         $this->lisaa_testikommentti("Oikein:  samoja tietoja ei pida\n                paastaa muokkaamaan! Kommentit: " . $this->muokattava->tulosta_virheilmoitukset(), false);
     }
     //======================================================================
     // ASetetaan pikakommentille tahallaan vääriä arvoja:
     $this->muokattava->set_nimi_latina("");
     // Yritetään muuttaa ylaluokka_id:tä:
     $onnistumispalaute = $this->muokattava->set_ylaluokka_id(345);
     //ylaluokka_id:tä ei pitäisi pystyä muokkaamaan:
     if ($onnistumispalaute == false) {
         $this->lisaa_testikommentti("Ylaluokka_id:n muutos ei\n                onnistunut (OIKEIN)", false);
     } else {
         $this->lisaa_testikommentti("Virhe: Ylaluokka_id:n muutos\n                meni lapi!", true);
     }
     $this->lisaa_testikommentti("Asetetaan nimi_latinaksi tyhj&auml;." . " Talloin onTallennuskelpoinen-metodin pitaisi valittaa.", false);
     if (!$this->muokattava->on_tallennuskelpoinen(false)) {
         $this->lisaa_testikommentti("Tyhj&auml; latina ei mennyt l&auml;pi (OIKEIN)." . " Saatiin seuraava ilmoitus:" . $this->muokattava->tulosta_virheilmoitukset(), false);
     } else {
         $this->lisaa_testikommentti("Virhe: Tyhj&auml; latina meni l&auml;pi!", true);
     }
     //======================================================================
     $this->lisaa_testikommentti("Asetetaan nimi_latinaksi jo kaytossa oleva." . " Talloin onTallennuskelpoinen-metodin pitaisi valittaa.", false);
     $this->muokattava->set_nimi_latina(Lajiluokkatestaus::$lj1_nimi_latina);
     $palaute = $this->muokattava->tallenna_muutokset();
     if ($palaute != Lajiluokka::$OPERAATIO_ONNISTUI) {
         $this->lisaa_testikommentti("Tuplalatina ei mennyt l&auml;pi (OIKEIN)." . " Saatiin seuraava ilmoitus:" . $this->muokattava->tulosta_virheilmoitukset(), false);
     } else {
         $this->lisaa_testikommentti("Virhe: Tuplalatina meni l&auml;pi!", true);
     }
     //======================================================================
     // ASetetaan nyt muutettavaksi hyviä arvoja:
     $this->muokattava->set_nimi_latina(Lajiluokkatestaus::$lj2_nimi_latina_muutettu);
     $this->lisaa_testikommentti("Muutetaan latinaa laillisesti.", false);
     // Virheilmoituksia ei pitäisi tulla:
     if ($this->muokattava->on_tallennuskelpoinen(false)) {
         $this->lisaa_testikommentti("Oikein! ARvot puhtaita!", false);
     } else {
         $this->lisaa_testikommentti("Virhe:  Tiedoissa olevinaan virheita:<br/>" . $this->muokattava->tulosta_virheilmoitukset(), false);
     }
     //======================================================================
     // Kokeillaan sitten tallentaa muuttuneet tiedot:
     $this->lisaa_testikommentti("Kokeillaan tallentaa muutokset:", false);
     $tallennuspalaute = $this->muokattava->tallenna_muutokset();
     if ($tallennuspalaute == Lajiluokka::$OPERAATIO_ONNISTUI) {
         $this->lisaa_testikommentti("Muutosten tallennus onnistui!", false);
         // Kokeillaan hakea sama tietokannasta ja varmistetaan, että
         // muutettu kommentti on todella muuttunut:
         $testi = new Lajiluokka($this->tietokantaolio, $this->muokattava->get_id());
         if ($testi->get_nimi_latina() == Lajiluokkatestaus::$lj2_nimi_latina_muutettu) {
             $this->lisaa_testikommentti("Muutokset oikein tietokannassa!\n                     Nimi_latina on nykyaan: " . $testi->get_nimi_latina(), false);
         } else {
             $this->lisaa_testikommentti("Muutokset vaarin tietokannassa!\n                     Nimi_latina on tietokannassa: " . $testi->get_nimi_latina(), true);
         }
     } else {
         $this->lisaa_testikommentti($tallennuspalaute, true);
     }
     //======================================================================
     $this->lisaa_testikommentti("<h4>Lajiluokan muokkaustesti loppui</h4>", false);
 }
Example #7
0
 /**
  * Palauttaa lajiluokan nimen halutulla kielellä tai arvon
  * Bongaustekstit::$tuntematon.
  * @param type $id_lj
  * @param type $tietokantaolio
  * @param type $kieli_id 
  */
 public static function hae_lajiluokan_nimi($id_lj, $tietokantaolio, $kieli_id)
 {
     $nimi = Bongaustekstit::$tuntematon;
     $lajiluokka = new Lajiluokka($tietokantaolio, $id_lj);
     if ($lajiluokka->olio_loytyi_tietokannasta) {
         $kuvaus = $lajiluokka->hae_kuvaus($kieli_id);
         if ($kuvaus->olio_loytyi_tietokannasta) {
             $nimi = $kuvaus->get_nimi();
         }
     }
     return $nimi;
 }
 /**
  * Palauttaa uuden yksittäisen havainnon tietojen syöttöön tarkoitetun
  * lomakkeen.
  * 
  * <p>Riippuvuudet: yhteiset/php_yhteiset.php</p>
  * 
  * @return string
  */
 function nayta_uusi_havaintolomake()
 {
     $ylaluokka_id_lj = $this->parametriolio->ylaluokka_id_lj;
     $kieli_kuv = $this->parametriolio->kieli_kuv;
     $tietokantaolio = $this->parametriolio->get_tietokantaolio();
     // $tallennuskommentti kertoo mikä laji tallennettiin viimeksi.
     $tallennuskommentti = $this->parametriolio->get_tallennuspalaute();
     // Mahdolliset arvot voivat olla epätyhjiä puutteellisen yrityksen
     // jälkeen (ei tartte uudestaan naputella):
     $id_hav = $this->parametriolio->id_hav;
     $lajiluokka_id_hav = $this->parametriolio->lajiluokka_id_hav;
     $paiva_hav = $this->parametriolio->paiva_hav;
     $kk_hav = $this->parametriolio->kk_hav;
     $vuosi_hav = $this->parametriolio->vuosi_hav;
     $paikka_hav = $this->parametriolio->paikka_hav;
     $kommentti_hav = $this->parametriolio->kommentti_hav;
     $maa_hav = $this->parametriolio->maa_hav;
     $varmuus_hav = $this->parametriolio->varmuus_hav;
     //=============================================================
     $poistunappi = Html::luo_input(array(Maarite::type("submit"), Maarite::classs("rinnakkain"), Maarite::name(Bongaustoimintonimet::$havaintotoiminto), Maarite::value(Bongauspainikkeet::$PERUMINEN_HAVAINTO_VALUE)));
     $uusi_laji_nappi = Html::luo_input(array(Maarite::type("submit"), Maarite::classs("rinnakkain"), Maarite::name(Bongaustoimintonimet::$lajiluokkatoiminto), Maarite::value(Bongauspainikkeet::$UUSI_LAJILUOKKA_VALUE)));
     $havaintolomakeohje = Bongaustekstit::$havaintolomake_uusi_ohje;
     $submitnappi = Html::luo_input(array(Maarite::type("submit"), Maarite::classs("rinnakkain"), Maarite::name(Bongaustoimintonimet::$havaintotoiminto), Maarite::value(Bongauspainikkeet::$TALLENNA_UUSI_HAVAINTO_VALUE)));
     // Lajivalikko (kun vain yksi valittu)
     $otsikko = "";
     $lajivalikko = Lajiluokka::nayta_lajivalikko($lajiluokka_id_hav, $tietokantaolio, $ylaluokka_id_lj, $kieli_kuv, $otsikko);
     /*************************************************************************/
     $maavalikkohtml = "";
     try {
         $arvot = Maat::hae_maa_arvot();
         $nimet = Maat::hae_maakuvaukset();
         $name_arvo = Maat::$tietokannan_sarakenimi;
         $oletusvalinta_arvo = $maa_hav;
         $otsikko = Maat::$valikko_otsikko;
         $onchange_metodinimi = "kirjoita_maa";
         $onchange_metodiparametrit_array = array();
         $maavalikkohtml .= Html::luo_pudotusvalikko_onChange($arvot, $nimet, $name_arvo, $oletusvalinta_arvo, $otsikko, $onchange_metodinimi, $onchange_metodiparametrit_array);
     } catch (Exception $poikkeus) {
         $maavalikkohtml = "Virhe maavalikossa! (" . $poikkeus->getMessage() . ")";
     }
     /*************************************************************************/
     $naytettava_valinta = $varmuus_hav;
     $varmuusvalikko = Varmuus::muodosta_valikkohtml(false, $naytettava_valinta);
     // kommentin muotoilu:
     if (!empty($tallennuskommentti)) {
         $tallennuskommentti = $tallennuskommentti . Html::luo_br();
     }
     // Tallennetun näyttö tallennuksen jälkeen. Nyt pitää arvata eli
     // katsoa tietokannasta suurin id ja sillä perusteella asettaa
     // arvoksi sitä yksi isompi.
     $id_hav_uusi = hae_suurin_id($this->tietokantaolio, Tietokannan_taulunimet::$bhavainnot) + 1;
     $url_jatke_nyk = "#havainto" . $id_hav_uusi;
     $url_id = "?id_hav=" . $id_hav_uusi . $url_jatke_nyk;
     // Näin löytyy päivitettävä havainto!
     $maar_array = array();
     // Rivi1: ohjeita
     $rivi1 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_b(Html::luo_span($tallennuskommentti, array(Maarite::id(Bongausasetuksia::$havaintolomake_tallennustiedote_id))) . $havaintolomakeohje, $maar_array), array(Maarite::colspan(2))), $maar_array);
     // taulukkorivi
     // Toinen rivi: pvm-painikkeet
     $rivi2 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_button(Bongauspainikkeet::$ed_vko, array(Maarite::id("b1"), Maarite::onclick("nayta_ed_vko", ""))) . Html::luo_button(Bongauspainikkeet::$ed_paiva, array(Maarite::id("b2"), Maarite::onclick("nayta_ed", ""))) . Html::luo_button(Bongauspainikkeet::$seur_paiva, array(Maarite::id("b3"), Maarite::onclick("nayta_seur()", ""))) . Html::luo_button(Bongauspainikkeet::$seur_vko, array(Maarite::id("b4"), Maarite::onclick("nayta_seur_vko()", ""))), array(Maarite::colspan(2), Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // Rivi3: pvm-kentät
     $rivi3 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("paiva", "*" . Bongaustekstit::$paiva . ":", ""), array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_input(array(Maarite::type("text"), Maarite::id("paiva"), Maarite::name("paiva_hav"), Maarite::value($paiva_hav), Maarite::size("4"), Maarite::max_length("2"), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . Html::luo_label_for("kk", "*" . Bongaustekstit::$kk . ":", "") . Html::luo_input(array(Maarite::type("text"), Maarite::id("kk"), Maarite::name("kk_hav"), Maarite::value($kk_hav), Maarite::size("4"), Maarite::max_length("2"), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . Html::luo_label_for("vuosi", "*" . Bongaustekstit::$vuosi . ":", "") . Html::luo_input(array(Maarite::type("text"), Maarite::id("vuosi"), Maarite::name("vuosi_hav"), Maarite::value($vuosi_hav), Maarite::size("4"), Maarite::max_length("4"), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . Html::luo_span("", array(Maarite::id("pvm_naytto"))), array(Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // painike, josta saadaan näkyviin monta lajia kerralla:
     $rivi4 = Html::luo_tablerivi(Html::luo_tablesolu("", array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_input(array(Maarite::type("submit"), Maarite::value(Bongauspainikkeet::$NAYTA_MONEN_HAVAINNON_VALINTA_VALUE), Maarite::title(Bongauspainikkeet::$NAYTA_MONEN_HAVAINNON_VALINTA_TITLE), Maarite::name(Bongaustoimintonimet::$havaintotoiminto))), array(Maarite::align("left"))), $maar_array);
     // rivi5: Lajivalinta
     $rivi5 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("lisaa_myohemmin", "*" . Bongaustekstit::$laji . ": ", ""), array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_span($lajivalikko, array(Maarite::id(Bongausasetuksia::$havaintolomake_lajivalikko_id))) . Html::luo_span($uusi_laji_nappi, array(Maarite::id(Bongausasetuksia::$havaintolomake_lajivalikkopainike_id))) . Html::luo_span("(" . Bongaustekstit::$havaintolomake_laji_puuttuu_ohje . ")", array(Maarite::id(Bongausasetuksia::$havaintolomake_lajivalintaohje_id))), array(Maarite::align("left"), Maarite::id(Bongausasetuksia::$havaintolomake_lajivalintarivi_id))), $maar_array);
     // taulukkorivi
     // rivi6: Paikka ja maa:
     $rivi6 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("lisaa myohemmin", "*" . Bongaustekstit::$paikka . ": ", ""), array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_input(array(Maarite::type("text"), Maarite::name("paikka_hav"), Maarite::value($paikka_hav))) . $maavalikkohtml, array(Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // rivi7: Havainnon varmuus:
     $rivi7 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("lisaa myohemmin", Varmuus::$valikko_otsikko, ""), array(Maarite::align("left"))) . Html::luo_tablesolu($varmuusvalikko, array(Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // rivi8: Havaintokommentti:
     $rivi8 = Html::luo_tablerivi(Html::luo_tablesolu(Bongaustekstit::$kommentti, array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_textarea($kommentti_hav, array(Maarite::cols(50), Maarite::rows(6), Maarite::name("kommentti_hav"))), array(Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // rivi9: Painikkeet:
     $rivi9 = Html::luo_tablerivi(Html::luo_tablesolu("", array(Maarite::align("left"))) . Html::luo_tablesolu($submitnappi . $poistunappi, array(Maarite::align("left"))), $maar_array);
     // taulukkorivi
     // Rivit taulukon sisään:
     $taulukko = Html::luo_table($rivi1 . $rivi2 . $rivi3 . $rivi4 . $rivi5 . $rivi6 . $rivi7 . $rivi8 . $rivi9, array(Maarite::summary("uudet_tiedot"), Maarite::id(Bongausasetuksia::$havaintolomakkeen_id)));
     // Taulukko lomakkeen sisään:
     $html = Html::luo_form($taulukko, array(Maarite::align("center"), Maarite::method("post"), Maarite::action("index.php" . $url_id)));
     // näytetään js-päivämäärä
     $html .= Html::luo_script_js("nayta_pvm();");
     return $html;
 }
/**
 * Palauttaa html:n albumin katselua varten, jossa näkyy kaikki albumin
 * kuvat pikkukuvina (1-8 rinnakkain).Kuvaa klikkaamalla saa sen näkyviin isona.
 *
 * Painike, josta palataan takaisin havaintolistaan.
 *
 * @param <type> $omaid
 * @param <type> $id_lj
 * @param <type> $tietokantaolio
 * @param <type> $valtuudet
 * @param <type> $kuvia_rinnakkain rivillä olevien kuvien lukumäärä
 * (mitä pienempi sitä isommat kuvat)
 * @param <type> $ikkunan_leveys
 * @param <type> $kuvahakumoodi Miten kuvat haetaan: pikkukuvat tietokannasta,
 * pikkukuvat tiedostosta vaiko isot kuvat tiedostosta (vanha tapa)
 * @return <type> Palauttaa albumihtml:n
 */
function bongaus_nayta_albumin_esikatselu($omaid, $id_lj, $tietokantaolio, $valtuudet, $kuvia_rinnakkain, $ikkunan_leveys, $kuvahakumoodi)
{
    // Tarkistetaan kuvamäärän parametrin sopivuus:
    if (!isset($kuvia_rinnakkain) || !is_numeric($kuvia_rinnakkain) || $kuvia_rinnakkain < 1 || $kuvia_rinnakkain > Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_MAX) {
        $kuvia_rinnakkain = 4;
    }
    // Pakotetaan nopein. Oli vähän ongelmaa muuten.
    $kuvahakumoodi = Kuvat::$KUVAHAKUMOODI_pikkukuvat_tiedosto;
    // Tämä muuttuja kertoo, onko kyseessä lajin vai yläluokan id_lj. Myöhemmin
    // tarkistetaan asia.
    $on_ylaluokka = true;
    // Lasketaan ensin kuvien koot.
    $kuvateksti = false;
    // kuvatekstiä ei näytetä.
    // Bongauksessa on kolme palstaa, joten pitää leveyttä
    // säätää, jotta kuvat mahtuvat olemaan:
    $on_kaksipalsta = false;
    $MAX_LEV_KUVA = laske_kuvan_maksimileveys($kuvia_rinnakkain, $ikkunan_leveys, $kuvateksti, $on_kaksipalsta);
    $MAX_KORK_KUVA = laske_kuvan_maksimikorkeus($MAX_LEV_KUVA);
    $mj = "";
    //Metodin palauttama merkkijono.
    // Tätä tarvitaan, jotta koon muutos ikkunan kokoa muutettaessa löytää
    // oikean albumin ($id_alb ei päivity, jos albumi tuodaan ajaxin kautta).
    $piilo_id = "<span id ='piilo_id'>" . $id_lj . "</span>";
    $kuvan_lisaysnappi = "";
    // painike, josta saa näkyviin albumit:
    $onsubmit_funktionimi = "bongaus_nayta_albumit";
    $onsubmit_parametrit = array();
    $form_maaritteet = array("method" => "post", "class" => "rinnakkain", "action" => "../bongaus/index.php");
    $input_maaritteet = array("name" => Bongaustoimintonimet::$kuvatoiminto, "value" => Bongauspainikkeet::$NAYTA_KUVA_ALBUMIT_VALUE, "title" => Bongauspainikkeet::$NAYTA_KUVA_ALBUMIT_TITLE);
    $albuminaytto = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
    // Nämä painikkeet tulevat aina näkyviin:
    $takaisin_nappi = "<form method='post' id='takaisin_nappi' " . "action='../bongaus/index.php'>" . "<input type='submit' name='" . Bongaustoimintonimet::$havaintotoiminto . "' value='" . Bongauspainikkeet::$TAKAISIN_HAVAINTOIHIN_VALUE . "'/>" . "</form>";
    // Nämä painikkeet tulevat aina näkyviin:
    $diaesitysnappi = "<button type='button' title='" . Painikkeet::$NAYTA_DIAESITYS_TITLE . "' onClick=" . "'kaynnista_diaesitys(" . $id_lj . ", 1, " . bongaus_hae_albumin_kuvien_lkm($id_lj, $tietokantaolio, $omaid) . ",\"" . Kuva::$KUVAT_BONGAUS . "\")'>" . Painikkeet::$NAYTA_DIAESITYS_VALUE . "</button>";
    // Tämä sisältää pikkukuvien kokohallinnan:
    $esikatselukoko = " Koon s&auml;&auml;t&ouml;: " . "<input type='button' class='button_alas'" . "onclick=\"pienenna_pikkukuvat(" . $id_lj . "," . Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_MAX . ",'" . Kuva::$KUVAT_BONGAUS . "')\"" . "value='" . Painikkeet::$PIENEMMAT_ESIKATSELUKUVAT_ALB_VALUE . "'/>" . " Kuvia rivill&auml;: <span id='kuvia_rinnakkain'>" . $kuvia_rinnakkain . "</span> " . "<input type='button' class='button_alas'" . "onclick=\"suurenna_pikkukuvat(" . $id_lj . "," . Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_MAX . ",'" . Kuva::$KUVAT_BONGAUS . "')\"" . "value='" . Painikkeet::$SUUREMMAT_ESIKATSELUKUVAT_ALB_VALUE . "'/>";
    // Selvitetään ensin, onko lajiluokka laji vai yläluokka. Tämä ratkaisee
    // ainakin sen, voiko lisätä uusia kuvia:
    $lajiluokkaolio = "";
    if (isset($id_lj) && $id_lj != "") {
        $taulunimi = "blajiluokat";
        $sarakenimi = "id";
        $hakuarvo = $id_lj;
        $lajiluokkaolio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
        // Lajilla on aina nollaa suurempi ylaluokka-tunniste:
        if ($lajiluokkaolio->ylaluokka_id > -1) {
            $on_ylaluokka = false;
        } else {
            $on_ylaluokka = true;
        }
    } else {
        // Muuten lopetetaan tykkänään tähän:
        return 'Albumia ei m&auml;&auml;ritelty!';
        exit;
    }
    // Haetaan lajiluokan nimi (suomeksi vain tällä hetkellä):
    $kielen_nro = Kielet::$SUOMI;
    $nimi = Lajiluokka::hae_lajiluokan_nimi($id_lj, $tietokantaolio, $kielen_nro);
    // Kuvia voi lisätä vain lajiin, ei yläluokkaan, jotta laji
    // saadaan muistiin.
    if (!$on_ylaluokka) {
        $kuvan_lisaysnappi = "<form method='post'id='lisaa_kuvia_bong' " . "action='../bongaus/index.php?id_lj={$id_lj}'>" . "<input type='submit' name='" . Bongaustoimintonimet::$kuvatoiminto . "'" . "value='" . Bongauspainikkeet::$UUSI_KUVA_VALUE . "'/>" . "</form>";
    }
    $kuva_alt = "";
    // Html-img-elementin alt-määritteen arvo.
    $aika = "";
    // Kuvan ottoaika
    // Haetaan kaikki albumin kuvat (sopivalla where-ehdolla):
    $where_ehto = "blajiluokat.id = {$id_lj}";
    if ($on_ylaluokka) {
        $where_ehto = "blajiluokat.ylaluokka_id = {$id_lj}";
    }
    // Haetaan albumin kuvien tiedot:
    $hakulause = "SELECT DISTINCT kuvat.id AS kuva_id, tiedostonimi, tiedostokoko,\n                    leveys, korkeus, src, kuvaotsikko, kuvaselitys\n                    FROM kuvat\n                    JOIN bkuvalinkit AS linkit\n                    ON kuvat.id = linkit.kuva_id\n                    JOIN blajiluokat\n                    ON blajiluokat.id = linkit.lajiluokka_id\n                    WHERE {$where_ehto}\n                    AND (kuvat.nakyvyys = " . Nakyvyys_kuva::$JULKINEN . "\n                        OR kuvat.henkilo_id = " . $omaid . ")\n                    ORDER BY linkit.jarjestysluku DESC";
    $osumat = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause);
    $lkm = sizeof($osumat);
    $kuvamj = "<table id='esikatselukuvat'><tr>";
    if ($lkm > 0) {
        $laskuri = 0;
        // Laskee kuvien määrän.
        foreach ($osumat as $kuvatiedot) {
            $laskuri++;
            $kuva_alt = $kuvatiedot->tiedostonimi . " (" . round($kuvatiedot->tiedostokoko / 1000) . " kt)";
            // Muokataan kuvan koko sopivaksi eli pienennetään, jos leveys on yli
            // $MAX_LEV_KUVA. Leveyden ja korkeuden suhde säilytetään.
            $lev = $kuvatiedot->leveys;
            $kork = $kuvatiedot->korkeus;
            $nayttolev = $kuvatiedot->leveys;
            $nayttokork = $kuvatiedot->korkeus;
            // Kuvan suurin mitta tulee siis samaksi. Leveä kuva on yhtä leveä
            // kuin korkea kuva on korkea.
            if ($kork != 0 && $lev != 0) {
                $suhde = $kork / $lev;
                // Vaakasuora kuva:
                if ($suhde < 1 && $lev > $MAX_LEV_KUVA) {
                    $nayttolev = $MAX_LEV_KUVA;
                    $nayttokork = round($MAX_LEV_KUVA * $suhde);
                }
                // Pystysuora kuva:
                if ($suhde >= 1 && $kork > $MAX_KORK_KUVA) {
                    $nayttokork = $MAX_KORK_KUVA;
                    $nayttolev = round($MAX_KORK_KUVA / $suhde);
                }
            }
            // Otetaan pienin mahdollinen kuva tietokannasta tai ellei
            // siellä ole tarpeeksi isoa, niin tiedostosta sitten:
            $kuva_id = $kuvatiedot->kuva_id;
            $maxmitta = max(array($nayttokork, $nayttolev));
            // Haku tietokannasta:
            if ($kuvahakumoodi == Kuvat::$KUVAHAKUMOODI_pikkukuvat_tietokanta) {
                if ($maxmitta <= Kuva::$TIETOKANTAKUVA_PIENI_MITTA) {
                    $src = "'kuvatus.php?kuva_id=" . $kuva_id . "&koko=pieni'";
                } else {
                    if ($maxmitta <= Kuva::$TIETOKANTAKUVA_ISO_MITTA) {
                        $src = "'kuvatus.php?kuva_id=" . $kuva_id . "&koko=iso'";
                    } else {
                        $src = "'" . $kuvatiedot->src . "'";
                    }
                }
            } else {
                if ($kuvahakumoodi == Kuvat::$KUVAHAKUMOODI_pikkukuvat_tiedosto) {
                    if ($maxmitta <= Kuva::$TIETOKANTAKUVA_PIENI_MITTA) {
                        $osoite_mini1 = Kuva::$kansion_os_bongauskuvat_pikkukuvat . "/" . Kuva::$pikkukuva1_nimen_osa . $kuvatiedot->tiedostonimi;
                        $src = "'" . $osoite_mini1 . "'";
                    } else {
                        if ($maxmitta <= Kuva::$TIETOKANTAKUVA_ISO_MITTA) {
                            $osoite_mini2 = Kuva::$kansion_os_bongauskuvat_pikkukuvat . "/" . Kuva::$pikkukuva2_nimen_osa . $kuvatiedot->tiedostonimi;
                            $src = "'" . $osoite_mini2 . "'";
                        } else {
                            if ($maxmitta <= Kuva::$TIETOKANTAKUVA_ISO2_MITTA) {
                                $osoite_mini3 = Kuva::$kansion_os_bongauskuvat_pikkukuvat . "/" . Kuva::$pikkukuva3_nimen_osa . $kuvatiedot->tiedostonimi;
                                $src = "'" . $osoite_mini3 . "'";
                            } else {
                                $src = "'" . $kuvatiedot->src . "'";
                            }
                        }
                    }
                } else {
                    $src = "'" . $kuvatiedot->src . "'";
                }
            }
            // Kuvaa klikkaamalla saadaan se isoksi:
            $klikkaus = "onclick=\"hae_kuva_ja_tiedot('" . $id_lj . "','" . $kuva_id . "','" . Kuva::$KUVAT_BONGAUS . "')\"";
            $kuvamj .= "<td class='kuva'>" . "<img src=" . $src . " " . $klikkaus . "width='" . $nayttolev . "' height='" . $nayttokork . "' " . "alt='" . $kuva_alt . "' title='" . $kuvatiedot->kuvaotsikko . " " . $kuvatiedot->kuvaselitys . "'/>" . "</td>";
            // Rivinvaihto aina sopivaan paikkaan:
            if ($laskuri % $kuvia_rinnakkain == 0) {
                $kuvamj .= "</tr><tr>";
            }
        }
        $kuvamj .= "</tr></table>";
    } else {
        $kuvamj = "<h3/>Kansiossa ei ole kuvia!</h3>";
    }
    $mj = "<div id='albumi'>" . "<h2>Bongauskuvia: " . $nimi . " (" . $piilo_id . $lkm . " kuvaa)</h2>";
    $mj .= "<div id='nappirivi'>" . $albuminaytto . $takaisin_nappi . $kuvan_lisaysnappi . $esikatselukoko . $diaesitysnappi . "</div>";
    $mj .= "<div id='kuvaruutu'>" . $kuvamj . "</div>";
    $mj .= "</div>";
    //Albumin loppu.
    return $mj;
}