/** * Metodi, joka puhdistaa ja tarkastaa uuden lajiluokan tiedot. * Palauttaa "tiedot_ok" (=Bongausasetuksia::$lomaketiedot_kunnossa), * ellei korjattavaa, muuten virheviestin. * * MySQL-erikoismerkit puhdistetaan aina. Html puhdistetaan vain tietyissä * tapauksissa. * * * @param <type> $tietokantaolio * @param <type> $ylaluokka_id * @param <type> $nimi_latina_lj * @param <type> $nimi_kuv * @param <type> $kuv_kuv * @param <type> $uusi * @return <type> */ function tarkista_lajiluokkatiedot($tietokantaolio, $ylaluokka_id, $nimi_latina_lj, &$nimi_kuv, $kuv_kuv, $uusi) { $tarkistuksen_tulos = false; // TArkistetaan ihan aluksi, ettei nimi ole jo käytössä: $taulunimi = "bkuvaukset"; $sarakenimi = "nimi"; $hakuarvo = $nimi_kuv; $nimihaku = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo); if ($nimihaku != Bongausasetuksia::$tietokantahaku_ei_loytynyt) { $tarkistuksen_tulos = Bongaustekstit::$havainto_nimi_kaytossa_virheilm; } else { // Rivinvaihdot: if ($uusi) { $kuv_kuv = tee_rivinvaihdot($kuv_kuv); } // Putsataan: $nimi_latina_lj = tarkista_syote($nimi_latina_lj, false); $nimi_kuv = tarkista_syote($nimi_kuv, false); $kuv_kuv = tarkista_syote($kuv_kuv, false); // Nimitiedot tarvitaan! if (empty($nimi_kuv) || empty($nimi_latina_lj)) { $tarkistuksen_tulos = Bongaustekstit::$ilm_lomaketietoja_puuttuu; } else { // Luokissa eka kirjain isolla, muissa pienellä: if ($ylaluokka_id != -1) { $nimi_kuv = eka_kirjain_pieneksi($nimi_kuv); } else { $nimi_kuv = eka_kirjain_isoksi($nimi_kuv); } $tarkistuksen_tulos = Bongausasetuksia::$lomaketiedot_kunnossa; } } return $tarkistuksen_tulos; }
/** * Tutkii, onko $omaid:n avulla tunnistettava käyttäjä linjoilla. Tätä tarvitaan * sen tarkistamiseen, onko aikakatkaisu poistanut käyttäjän. * Palauttaa true, jos käyttäjä on linjoilla, muuten false. * * @param <type> $omaid * @param <type> $tietokantaolio */ function online($omaid, $tietokantaolio) { $online = false; // käyttäjä ei ole verkon hallitsija. // Kuninkaan haku: $vastausolio = $tietokantaolio->hae_eka_osuma_oliona("henkilot", "id", $omaid); if ($vastausolio != "tuntematon") { if ($vastausolio->online == 0 || $vastausolio->online == 1) { // True, jos online-arvo on 1 eli linjoilla: $online = $vastausolio->online == 1; } } return $online; }
/** * Palauttaa html:n albumin katselua varten, jossa näkyy yksi kuva kerrallaan. * Kuvia voi selata painikkeilla. Ikkunan leveys haetaan ajaxin avulla niin, * että kuva sopii ikkunaan. * * Painike, josta palataan takaisin albumilistaan. * Painike, josta päästään muokkaamaan kuvatietoja. * * @param <type> $omaid * @param <type> $id_lj * @param <type> $id_kuva * @param <type> $tietokantaolio * @param <type> $valtuudet * @param <type> $ikkunan_leveys * @param <type> $pikkukuvakansio_osoite * @return <type> */ function bongaus_nayta_albumin_yksi_kuva($omaid, $id_lj, $id_kuva, $tietokantaolio, $valtuudet, $ikkunan_leveys, $pikkukuvakansio_osoite) { // Nro 1 viittaa siihen, että rivillä on vain yksi kuva. $kuvateksti = true; $on_ylaluokka = true; // 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 != Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) { if ($lajiluokkaolio->ylaluokka_id > -1) { $on_ylaluokka = false; } else { $on_ylaluokka = true; } } else { $on_ylaluokka = true; } } else { // Muuten lopetetaan tykkänään tähän: return 'Lajiluokka-id:tä ei määritelty!'; exit; } // Pohjan leveys on rajoitettu, mikä pitää ottaa huomioon: if ($ikkunan_leveys > Kuvat::$POHJA_LEVEA_MAXLEV) { $ikkunan_leveys = Kuvat::$POHJA_LEVEA_MAXLEV; } // Vapaa leveys on pienempi kuin kuva-albumissa (kolmepalstarakenne), // joten kuvalle varataan täällä vähemmän tilaa: $on_kaksipalsta = false; $max_lev_kuva = laske_kuvan_maksimileveys(1, $ikkunan_leveys, $kuvateksti, $on_kaksipalsta); $max_kork_kuva = laske_kuvan_maksimikorkeus($max_lev_kuva); // Haetaan kuvien id:t: $kuva_idt = bongaus_hae_kuvien_idt($id_lj, $tietokantaolio, $omaid); $mj = ""; //Metodin palauttama merkkijono. $lkm = sizeof($kuva_idt); $kuvan_jarjluku = 1; // Jos id_kuva on tyhjä, asetetaan se osoittamaan // ensimmäiseen kuvaan if (sizeof($kuva_idt) > 0 && (!isset($id_kuva) || $id_kuva == "")) { $id_kuva = $kuva_idt[0]; $kuvan_jarjluku = 1; } else { // Muuten etsitään kuvan järjestysluku: for ($i = 0; $i < $lkm; $i++) { if ($kuva_idt[$i] == $id_kuva) { $kuvan_jarjluku = 1 + $i; } } } // Jos albumissa on korkeintaan yksi kuva, ei selauspainikkeita näytetä: if ($lkm < 2) { $ed_nappi = ""; $seur_nappi = ""; } else { // Kun on vähintään kaksi kuvaa: $seur_id = 0; $ed_id = 0; // Haetaan seuraavan ja edellisen kuvan id: for ($i = 0; $i < $lkm; $i++) { if ($id_kuva == $kuva_idt[$i]) { // kuva_idt-taulukon viimeisen alkion indeksi: $vika_indeksi = $lkm - 1; // Jos ollaan ekassa kuvassa, siirrytään (<) viimeiseen: if ($i == 0) { $seur_id = $kuva_idt[1]; $ed_id = $kuva_idt[$vika_indeksi]; } else { if ($i == $vika_indeksi) { $seur_id = $kuva_idt[0]; $ed_id = $kuva_idt[$i - 1]; } else { $seur_id = $kuva_idt[$i + 1]; $ed_id = $kuva_idt[$i - 1]; } } } } /*$ed_nappi = "<form method='post'id='ed_kuva' ". "action='../kuvatoiminnot/kuvat.php". "?id_alb=$id_alb". "&id_kuva=$ed_id#nappirivi'>". "<input type='submit' name='toiminta' value='$ed_kuva_alb' title='Edellinen kuva'/>". "</form>";*/ /*$seur_nappi = "<form method='post'id='seur_kuva' ". "action='../kuvatoiminnot/kuvat.php". "?id_alb=$id_alb". "&id_kuva=$seur_id#nappirivi'>". "<input type='submit' name='toiminta' value='$seur_kuva_alb' title='Seuraava kuva'/>". "</form>";*/ $ed_nappi = "<input type='button' class='button_alas'" . "onclick=\"hae_kuva_ja_tiedot('" . $id_lj . "','{$ed_id}','" . Kuva::$KUVAT_BONGAUS . "')\"" . "value='" . Painikkeet::$ED_KUVA_ALB_VALUE . "'/>"; $seur_nappi = "<input type='button' class='button_alas'" . "onclick=\"hae_kuva_ja_tiedot('" . $id_lj . "','{$seur_id}','" . Kuva::$KUVAT_BONGAUS . "')\"" . "value='" . Painikkeet::$SEUR_KUVA_ALB_VALUE . "'/>"; } // Kuvan muokkausnappi tehdään myöhemmin, jos kuva löytyy. $kuvan_muokkausnappi = ""; $kuvan_poistonappi = ""; $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: if (isset($_SESSION['naytettavan_id_hav'])) { $url_jatke = "#havainto" . $_SESSION['naytettavan_id_hav']; } else { $url_jatke = ""; } $takaisin_nappi = "<form method='post' id='takaisin_nappi' " . "action='../bongaus/index.php{$url_jatke}'>" . "<input type='submit' name='" . Bongaustoimintonimet::$havaintotoiminto . "' value='" . Bongauspainikkeet::$TAKAISIN_HAVAINTOIHIN_VALUE . "'/>" . "</form>"; /* Esikatseluun: */ $albumin_esikatselunappi = ""; $katso_pikkukuvat = Bongauspainikkeet::$NAYTA_ESIKATSELUKUVAT_VALUE; $onsubmit_funktionimi = "hae_esikatselukuvat"; $onsubmit_parametrit = array($id_lj, Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_OLETUS, "\"" . Kuva::$KUVAT_BONGAUS . "\""); $form_maaritteet = array("method" => "post", "id" => "nayta_kuvat_bong", "action" => "../bongaus/index.php?id_lj={$id_lj}"); $input_maaritteet = array('name' => Bongaustoimintonimet::$kuvatoiminto, 'value' => $katso_pikkukuvat, "title" => Bongauspainikkeet::$NAYTA_ESIKATSELUKUVAT_TITLE); try { $albumin_esikatselunappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } catch (Exception $poikkeus) { $albumin_esikatselunappi = $poikkeus->getMessage(); } // Lisäyspainike luodaan, jos on yhden lajin kuvista kysymys: if (!$on_ylaluokka) { /*$kuvan_lisaysnappi ="<form method='post' id='lisaa_kuvia_alb' ". "action='../kuvatoiminnot/kuvat.php". "?id_alb=$id_alb'>". "<input type='submit' name='toiminta' value='$uusi_kuva'/>". "</form>";*/ /* Tämän tarkoitus on avata suoraan kuvan valinta ilman * turhaa kuvalomakkeen näyttämistä: */ $kuvan_lisaysnappi = "<form align='left' method='post' id='kuvanlisays_pika_bongaus'\n action='../bongaus/index.php" . "?id_lj={$id_lj}'" . "enctype='multipart/form-data'/>" . "Lataa uusi kuva: " . "<input type='hidden' name='MAX_FILE_SIZE' " . "value='" . Kuva::$MAX_FILE_SIZE . "' />" . "<input type='file' name='ladattu_kuva' size='40'/>" . "<input type='submit' name='" . Bongaustoimintonimet::$kuvatoiminto . "'" . "value='" . Bongauspainikkeet::$TALLENNA_UUSI_KUVA_VALUE . "'/>" . "</form>"; } // Kuvan tietojen haku. Jos id-taulukko on tyhjä, ei kuvia ole, jolloin // kuvaa ei kannata edes yrittää hakea: if ($lkm == 0 || sizeof($kuva_idt) == 0) { $kuvamj = "<h3>Albumissa ei ole kuvia!</h3>"; $kuvan_jarjluku = 0; } else { $kuvatiedot = ""; $kuvatietomj = ""; // Kuvan tiedot html:n avulla. $kuva_alt = ""; // Html-img-elementin alt-määritteen arvo. $aika = ""; // Kuvan ottoaika if ($id_kuva > -1 && $lkm > 0) { $hakulause = "SELECT kuvat.id AS kuva_id, henkilo_id, tiedostonimi,\n tiedostokoko,\n leveys, korkeus, src, kuvaotsikko, kuvaselitys,\n paiva,kk,vuosi\n FROM kuvat\n WHERE kuvat.id = {$id_kuva}"; $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause); $osumat = $tietokantaolio->hae_osumarivit_olioina($hakutulos); if (sizeof($osumat) == 1) { $kuvatiedot = $osumat[0]; // Muotoillaan aika: if ($kuvatiedot->vuosi == -1) { $aika = ""; } else { if ($kuvatiedot->kk == -1) { $aika = $kuvatiedot->vuosi; } else { if ($kuvatiedot->paiva == -1) { $aika = $kuvatiedot->kk . "/" . $kuvatiedot->vuosi; } else { $aika = $kuvatiedot->paiva . "." . $kuvatiedot->kk . "." . $kuvatiedot->vuosi; } } } // Haetaan kuvan lähettäjän nimi: $taulunimi = "henkilot"; $sarakenimi = "id"; $hakuarvo = $kuvatiedot->henkilo_id; $lahettaja = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo); if ($lahettaja != "tuntematon") { $lahettaja = $lahettaja->etunimi; } $kuvatietomj = "<div class='korostus'>" . $kuvatiedot->kuvaotsikko . "</div>"; $kuvatietomj .= "<p>" . $aika . "</p>"; $kuvatietomj .= "<p>" . $kuvatiedot->kuvaselitys . "</p>"; $kuvatietomj .= "<p>Lähettäjä: " . $lahettaja . "</p>"; $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; $src = $kuvatiedot->src; 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); } } $maxmitta = max(array($nayttokork, $nayttolev)); // Haku: if ($maxmitta <= Kuva::$TIETOKANTAKUVA_PIENI_MITTA) { $osoite_mini1 = $pikkukuvakansio_osoite . "/" . Kuva::$pikkukuva1_nimen_osa . $kuvatiedot->tiedostonimi; $src = "'" . $osoite_mini1 . "'"; } else { if ($maxmitta <= Kuva::$TIETOKANTAKUVA_ISO_MITTA) { $osoite_mini2 = $pikkukuvakansio_osoite . "/" . Kuva::$pikkukuva2_nimen_osa . $kuvatiedot->tiedostonimi; $src = "'" . $osoite_mini2 . "'"; } else { if ($maxmitta <= Kuva::$TIETOKANTAKUVA_ISO2_MITTA) { $osoite_mini3 = $pikkukuvakansio_osoite . "/" . Kuva::$pikkukuva3_nimen_osa . $kuvatiedot->tiedostonimi; $src = "'" . $osoite_mini3 . "'"; } else { $src = "'" . $kuvatiedot->src . "'"; } } } // kuvan koonti: $kuvamj = "<div class='kuvatiedot'>" . $kuvatietomj . "</div>"; $kuvamj .= "<div class='kuva'>"; $kuvamj .= "<img src=" . $src . " "; $kuvamj .= "width='" . $nayttolev . "' height='" . $nayttokork . "' "; $kuvamj .= "alt='" . $kuva_alt . "'/>"; $kuvamj .= "</div>"; // Muokata ja poistaa saa vain omia kuvia! if ($kuvatiedot->henkilo_id == $omaid) { // Pitää muokkausta varten lähettää muokattavat tiedot // urlin kautta. $url_safe_otsikko = rawurlencode($kuvatiedot->kuvaotsikko); $url_safe_selitys = rawurlencode($kuvatiedot->kuvaselitys); $url_safe_vuosi = rawurlencode($kuvatiedot->vuosi); $url_safe_kk = rawurlencode($kuvatiedot->kk); $url_safe_paiva = rawurlencode($kuvatiedot->paiva); $kuvan_muokkausnappi = "<form method='post'id='muokkaa_kuva' " . "action='../bongaus/index.php" . "?id_lj={$id_lj}" . "&id_kuva={$id_kuva}" . "&kuvaotsikko_kuva={$url_safe_otsikko}" . "&kuvaselitys_kuva={$url_safe_selitys}" . "&vuosi_kuva={$url_safe_vuosi}" . "&kk_kuva={$url_safe_kk}" . "&paiva_kuva={$url_safe_paiva}'>" . "<input type='submit' name='" . Bongaustoimintonimet::$kuvatoiminto . "' value='" . Bongauspainikkeet::$MUOKKAA_KUVA_VALUE . "'/>" . "</form>"; $kuvan_poistonappi = "<form method='post'id='poista_kuva' " . "action='../bongaus/index.php" . "?id_kuva={$id_kuva}" . "&id_lj={$id_lj}'>" . "<input type='submit' name='" . Bongaustoimintonimet::$kuvatoiminto . "' value='" . Bongauspainikkeet::$POISTA_KUVA_VALUE . "' title='Poistaa kuvan lopullisesti'/>" . "</form>"; } } else { $kuvamj = "<h3/>Kuvaa ei löytynyt!\n (id_kuva = " . $id_kuva . ", id_lj = " . $id_lj . ")</h3>"; } } } // Haetaan lajiluokan nimi: $hakulause = "SELECT bkuvaukset.nimi AS nimi\n FROM bkuvaukset\n JOIN blajiluokat AS lj\n ON lj.id = bkuvaukset.lajiluokka_id\n WHERE lj.id = {$id_lj}"; $nimitaulu = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause); if (!empty($nimitaulu)) { $nimi = $nimitaulu[0]->nimi; } else { $nimi = "tuntematon"; } $mj .= "<div id='albumi'>"; //Albumin alku. $mj .= "<h2>Bongauskuvia: " . $nimi . "</h2>"; $mj .= "<div id='nappirivi'>" . $ed_nappi . " (kuva nro " . $kuvan_jarjluku . "/" . $lkm . ") " . $seur_nappi . " " . $albumin_esikatselunappi . $albuminaytto . $takaisin_nappi . $kuvan_muokkausnappi . $kuvan_poistonappi . "</div>"; $mj .= "<div id='kuvaruutu'>" . $kuvamj . "</div>"; $mj .= $kuvan_lisaysnappi; $mj .= "</div>"; //Albumin loppu. return $mj; }