示例#1
0
 /**
  * Palauttaa poistovahvistus-html:n, joka sisältää pikakommentin tiedot
  * ja poiston vahvistus- ja perumispainikkeet.
  */
 public function nayta_poistovahvistuskysely()
 {
     // Tämä perumista varten (ENT_QUOTES->muuttaa sekä yksöis- että
     // kaksoislainausmerkit). Eka parametri varmistaa, että painikkeet
     // tulevat näkyviin perumisen jälkeenkin. Sikälihän poistamispainikekin
     // näkyy vain, jos käyttäjällä on oikeus poistoon.
     /*$sisalto_html =
       htmlspecialchars($this->
                   nayta_pikakommentti($this->henkilo_id, Valtuudet::$NORMAALI),
                   ENT_QUOTES);*/
     $sisalto_html = htmlspecialchars($this->nayta_pikakommentti(-1, Valtuudet::$NORMAALI), ENT_QUOTES);
     $html = "";
     // Jos on tallennuskelpoinen, on myös löytänyt tiedot
     // tietokannasta. $uusi=true, koska muuten valittaa, ellei
     // tietoja muutettu. Nyt id:tä ei tarkisteta, mutta ei sillä
     // väliä. Idea on vain katsoa, ettei pikakommentti tyhjä.
     if ($this->on_tallennuskelpoinen(true)) {
         $aika = anna_pvm_ja_aika($this->get_tallennushetki_sek());
         // true on muuttujan 'vain_etunimi' arvo.
         $lahettaja = hae_henkilon_nimi($this->get_henkilo_id(), true, $this->tietokantaolio);
         $sisalto = $this->get_kommentti();
         $elem_id = "pk" . $this->get_id();
         // Luodaan vahvistus- ja perumispainikkeet
         $painikkeet = "<button type='button' onclick=" . "'pk_poista(" . $this->get_id() . "," . $this->kohde_id . ")'" . "title='" . Pikakommenttitekstit::$poistovahvistus_pikakommentti_title . "'>" . Pikakommenttitekstit::$poistovahvistus_pikakommentti_value . "</button>" . "<button type='button' onclick=" . "'peru_poisto(\"" . $sisalto_html . "\",\"" . $elem_id . "\")'title='" . Pikakommenttitekstit::$peruminen_pikakommentti_title . "'>" . Pikakommenttitekstit::$peru_poisto_pikakommentti_value . "</button>";
         $html = Nakyma_pikakommentit::nayta_poistovahvistus($aika, $lahettaja, $sisalto, $painikkeet, $this->get_id());
     } else {
         $html = Pikakommenttitekstit::$virheilmoitus_ei_tallennuskelpoinen;
     }
     return $html;
 }
示例#2
0
/**
 * Palauttaa suoritustilaston taulukkoon muotoiltuna.
 * @param Parametrit $parametriolio
 * @return Palaute Palauttaa Palaute-luokan esiintymän. /
 */
function hae_suoritustilasto($parametriolio)
{
    $tietokantaolio = $parametriolio->tietokantaolio;
    $omaid = $parametriolio->omaid;
    $palauteolio = new Palaute();
    // Painikkeita:
    $muokkausnappi = "";
    // Määritellään myöhemmin
    $poistonappi = "";
    // Määritellään myöhemmin
    $paluunappi = "";
    // Paluunappi perusnäkymään:
    $class = "rinnakkain";
    $id = "paluunappi";
    $action = "muistio.php";
    $name = Muistiotoimintonimet::$perustoiminto;
    $value = Muistiopainikkeet::$paluu_perussuoritusnakymaan;
    $paluunappi = Html::luo_painikelomake($class, $id, $action, $name, $value);
    // Paluunappi lajitarkennusnäkymään:
    $class = "rinnakkain";
    $id = "paluunappi";
    $action = "muistio.php";
    $name = Muistiotoimintonimet::$perustoiminto;
    $value = Muistiopainikkeet::$paluu_tilastot_lajeittain_nakymaan;
    $paluunappi2 = Html::luo_painikelomake($class, $id, $action, $name, $value);
    $otsikko = "";
    if ($parametriolio->vain_omat_suoritukset) {
        $otsikko = $_SESSION['tiedot']->etunimi . " " . $_SESSION['tiedot']->sukunimi . ", ";
    }
    $otsikko .= Lajitarkennukset::hae_lajitarkennuksen_kuvaus($parametriolio->lajitarkennus);
    $otsikko .= $paluunappi2 . $paluunappi;
    if ($parametriolio->vain_omat_suoritukset) {
        $mj = "<table id = 'tulostaulu'>\n            <tr><td id='kuukm' colspan='4'>{$otsikko}</td></tr>\n            <tr>\n                <th>Aika</th>\n                <th>Kuvaus</th>\n                <th>Pvm</th>\n                <th>Toiminnot</th>\n            </tr>";
    } else {
        $mj = "<table id = 'tulostaulu'>\n            <tr><td id='kuukm' colspan='5'>{$otsikko}</td></tr>\n            <tr>\n                <th>Aika</th>\n                <th>Kuvaus</th>\n                <th>Pvm</th>\n                <th>Nimi</th>\n                <th>Toiminnot</th>\n            </tr>";
    }
    // Tarkistetaan, haetaanko kaikki vaiko vain omat:
    if ($parametriolio->vain_omat_suoritukset) {
        $hakulause = "SELECT * FROM suoritukset\n                WHERE (lajitarkennus= " . $parametriolio->lajitarkennus . " AND henkilo_id = " . $omaid . ")\n                ORDER by kestotunnit, kestomin, kestosek;";
    } else {
        $hakulause = "SELECT * FROM suoritukset\n                WHERE lajitarkennus= '" . $parametriolio->lajitarkennus . "' " . "ORDER by kestotunnit, kestomin, kestosek;";
        //ORDER by henkilo_id, kestotunnit, kestomin, kestosek;"
    }
    $osumaoliot = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause);
    if (empty($osumaoliot)) {
        $mj .= "<tr><td colspan=5>" . Muistiotekstit::$suorituksia_ei_loytynyt . "</td></tr>";
    } else {
        $laskuri = 0;
        foreach ($osumaoliot as $suoritus) {
            // Painikkeet:
            $class = "rinnakkain";
            $id = "muokkausnappi";
            $action = "muistio.php?" . URL_muuttujat::$suoritus_id . "=" . $suoritus->id . "&" . URL_muuttujat::$valinnat . "=" . $suoritus->id . "&" . URL_muuttujat::$lajitarkennus . "=" . $suoritus->lajitarkennus . "&" . URL_muuttujat::$paluunakyma . "=" . Muistio_yleisia_arvoja::$nakyma_tulostilasto;
            $name = Muistiotoimintonimet::$perustoiminto;
            $value = Muistiopainikkeet::$muokkausnappikomento_lyhyt;
            $muokkausnappi = Html::luo_painikelomake($class, $id, $action, $name, $value);
            $id = "poistonappi";
            $value = Muistiopainikkeet::$poistonappikomento_lyhyt;
            $poistonappi = Html::luo_painikelomake($class, $id, $action, $name, $value);
            // Haetaan henkilön nimi:
            $nimi = hae_henkilon_nimi($suoritus->henkilo_id, false, $parametriolio->tietokantaolio);
            // Muotoillaan aika:
            $aika = muotoile_suorituksen_kesto($suoritus->kestotunnit, $suoritus->kestomin, $suoritus->kestosek, $suoritus->kesto);
            if ($laskuri % 2 != 0) {
                $mj .= "<tr class='parillinen_rivi'>";
            } else {
                $mj .= "<tr>";
            }
            // Nämä tulevat kaikkiin:
            $mj .= "<td>{$aika}</td>" . "<td>{$suoritus->kuvaus}</td>" . "<td class='aikasolu'>" . anna_viikonp_suomeksi($suoritus->paiva, $suoritus->kk, $suoritus->vuosi, true) . " " . $suoritus->paiva . "." . $suoritus->kk . "." . $suoritus->vuosi . "</td>";
            // Lisätään nimi, jos näytetään kaikki:
            if ($parametriolio->vain_omat_suoritukset == false) {
                $mj .= "<td>{$nimi}</td>";
            }
            // Toiminnot tulevat kaikkiin omiin ja adminille:
            if ($suoritus->henkilo_id == $parametriolio->omaid || $parametriolio->get_kayttajan_valtuudet() == Valtuudet::$HALLINTA) {
                $mj .= "<td>" . $muokkausnappi . $poistonappi . "</td>";
            } else {
                $mj .= "<td></td>";
            }
            // Lopuksi suljetaan taulukon rivi:
            $mj .= "</tr>";
            $laskuri++;
        }
    }
    $mj .= "</table>";
    $palauteolio->set_sisalto($mj);
    $palauteolio->set_nayta_kiintolinkit(false);
    return $palauteolio;
}
/**
 * Palauttaa taulukon, joka sisältää nimet niistä sessiomuuttujassa 
 * säilytettävän (siksi ei tarvitse täällä välittää) yläluokan lajeista,
 * jotka annettu henkilö on havainnut kyseisenä puolivuotiskautena. Taulukko
 * ei sisällä muuta tietoa havainnoista, eli kyseessä on pelkkä lajinimien
 * luettelo.
 * @param Parametrit $parametriolio
 * @param <type> $puolivuotiskauden_nro: 1->kevät 2010, 2-> syksy2010, 3->kevät2011 jne.
 * Jos tämä on ei-numeerinen, haetaan kaikki.
 *
 * Palauttaa taulukon, joka voi olla tyhjä.
 *
 */
function hae_henkilon_bongatut_lajit($parametriolio, $puolivuotiskauden_nro)
{
    $tietokantaolio = $parametriolio->tietokantaolio;
    $henkilo_id = $parametriolio->henkilo_id;
    $ylaluokka_id = $parametriolio->ylaluokka_id_lj;
    $aluerajoitus = $parametriolio->havaintoalue_hav;
    // "suomi" tai jotakin muuta.
    $henkilon_nimi = hae_henkilon_nimi($henkilo_id, true, $tietokantaolio);
    // muotoillaan kausi:
    if (!is_numeric($puolivuotiskauden_nro) || $puolivuotiskauden_nro < -200) {
        $kausi = Bongaustekstit::$havainnot_elikset;
    } else {
        if ($puolivuotiskauden_nro % 2 == 0) {
            $kausi = Bongaustekstit::$havainnot_syksy . " ";
        } else {
            $kausi = Bongaustekstit::$havainnot_kevat . " ";
        }
        $kausi .= floor(2010 + ($puolivuotiskauden_nro - 1) / 2);
    }
    // Ilmoitetaan, onko havainnot Suomesta vai kaikkialta:
    $havainnot = Bongaustekstit::$havainnot_kaikkialla;
    if ($parametriolio->havaintoalue_hav == Bongausasetuksia::$nayta_vain_suomessa_havaitut) {
        $havainnot = Bongaustekstit::$havainnot_suomessa;
    }
    // Painikkeita:
    $sulkemisnappi = "<button type='button' onclick='sulje_ruutu(\"" . Bongausasetuksia::$havaintotietotaulu_leftin_id . "\")'>" . Bongauspainikkeet::$HAVAINNOT_SULJE_HENKILON_HAVAINNOT_VALUE . "</button>";
    // Muotoillaan yläluokan lause:
    if (isset($ylaluokka_id) && is_numeric($ylaluokka_id) && $ylaluokka_id > 0) {
        $ylaluokkaehto = "blajiluokat.ylaluokka_id = {$ylaluokka_id}";
    } else {
        $ylaluokkaehto = "blajiluokat.ylaluokka_id <> -1";
    }
    // Muotoillaan puolivuotiskauden valinta. Vanhin kausi on siis noin sata vuotta
    // sitten vuosi 1910. Vanhemmat tulkitaan niin, että kaikki kaudet haetaan.
    if (is_numeric($puolivuotiskauden_nro) && $puolivuotiskauden_nro > -200) {
        $vuosi = floor(2010 + ($puolivuotiskauden_nro - 1) / 2);
        $kk_alaraja = 0;
        $kk_ylaraja = 7;
        if ($puolivuotiskauden_nro % 2 == 0) {
            $kk_alaraja = 6;
            $kk_ylaraja = 13;
        }
        $jaksoaikaehto = "AND bhavainnot.vuosi = {$vuosi}\n                        AND bhavainnot.kk > {$kk_alaraja}\n                        AND bhavainnot.kk < {$kk_ylaraja}";
    } else {
        $jaksoaikaehto = "";
        /* Haetaan kaikki! */
    }
    // Muotoillaan varmuusehto:
    $varmuusehto = "AND bhavainnot.varmuus >= " . Varmuus::$melkoisen_varma;
    // Tutkitaan, haetaan vain Suomesta vai kaikkialta:
    if ($aluerajoitus == Bongausasetuksia::$nayta_vain_suomessa_havaitut) {
        $alue_ehto = "AND bhavainnot.maa = " . Maat::$suomi;
    } else {
        $alue_ehto = "";
    }
    $hakulause = "SELECT bhavainnot.lajiluokka_id AS laji_id,\n                        bkuvaukset.nimi AS nimi\n                FROM bhavainnot\n                JOIN henkilot\n                ON bhavainnot.henkilo_id = henkilot.id\n                JOIN blajiluokat\n                ON bhavainnot.lajiluokka_id = blajiluokat.id\n                JOIN bkuvaukset\n                ON (bhavainnot.lajiluokka_id = bkuvaukset.lajiluokka_id\n                AND bkuvaukset.kieli=" . Kielet::$SUOMI . ")\n                WHERE henkilot.id = {$henkilo_id}\n                AND {$ylaluokkaehto}\n                {$jaksoaikaehto}\n                {$varmuusehto}\n                {$alue_ehto}\n                GROUP BY laji_id\n                ORDER BY nimi\n               ";
    $havaintotaulu = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause);
    if (empty($havaintotaulu)) {
        $tulos = "<div class=" . Bongausasetuksia::$tietotauluotsikko_class . ">" . $sulkemisnappi . "</div>";
        $tulos .= "<table class = " . Bongausasetuksia::$tietotaulun_class . ">\n                <tr>\n                <th>" . Bongaustekstit::$ilm_ei_havaintoja . "</th></tr></table>";
    } else {
        // Muotoillaan tiedot nätisti:
        $tulos = "<div class=" . Bongausasetuksia::$tietotauluotsikko_class . ">" . $havainnot . $sulkemisnappi . "<br />" . "(" . $henkilon_nimi . ", " . $kausi . ")</div>";
        $tulos .= "<table class = " . Bongausasetuksia::$tietotaulun_class . ">\n            <tr>\n                <th>Nro</th>\n                <th>Laji</th>\n            </tr>";
        $laskuri = 1;
        // Auttaa joka toisen rivin eri väriseksi.
        foreach ($havaintotaulu as $havainto) {
            if ($laskuri % 2 == 0) {
                $tulos .= "<tr class =" . Bongausasetuksia::$tietotaulu_parillinenrivi_class . ">";
            } else {
                $tulos .= "<tr>";
            }
            $tulos .= "<td>" . $laskuri . "</td>";
            $tulos .= "<td>" . $havainto->nimi . "</td>";
            $tulos .= "</tr>";
            $laskuri++;
        }
        $tulos .= "</table>";
    }
    return $tulos;
}
示例#4
0
 /**
  * Palauttaa yhden olion tiedot taulukkoriviin pakattuna (tr-elementti).
  * Huomaa huolehtia muista taulukkotageista!
  * @param \Havainto $hav
  * @param int $rivinro Taulukon rivin juokseva nro alkaen yhdestä.
  * @param bool $erikoisvarustelu TRUE -> sopii poistovahvistukseen jne.
  * @return type
  */
 public function luo_taulukkorivi($hav, $rivinro, $erikoisvarustelu)
 {
     $rivi_class = "";
     if ($rivinro % 2 == 0) {
         $rivi_class = Bongausasetuksia::$havaintotaulu_parillinenrivi_class;
     }
     $rivi_id = "havainto" . $hav->get_id();
     // Haetaan sitten lajiluokan nimi (kieli saadaan parametrioliosta:
     $lj = new Lajiluokka($this->tietokantaolio, $hav->get_lajiluokka_id());
     $kuvaus = $lj->hae_kuvaus($this->parametriolio->kieli_id);
     if ($kuvaus === Lajiluokka::$MUUTTUJAA_EI_MAARITELTY) {
         $nimi = $lj->get_nimi_latina();
     } else {
         $nimi = $kuvaus->get_nimi();
     }
     $bongaajan_nimi = hae_henkilon_nimi($hav->get_henkilo_id(), true, $this->tietokantaolio);
     //========================== PIkakommentit =========================
     // Toiminnot on tässä vaiheessa valintaruutu. Hakasulut pitää lisätä!
     $maar_array_valinnat = array(Maarite::name(Bongausasetuksia::$havaintovalinta_id_taulukko_name . "[]"), Maarite::value($hav->get_id()));
     $toimintasolu = Html::luo_tablesolu(Html::luo_checkbox($maar_array_valinnat), array());
     // Esim. poistovahvistuksessa valinta oletuksena päällä (koska nämä
     // on valittu):
     if ($erikoisvarustelu) {
         Maarite::lisaa_maarite(Maarite::checked(), $maar_array_valinnat);
         $toimintasolu = Html::luo_tablesolu(Html::luo_checkbox($maar_array_valinnat), array());
     }
     //========================== PIkakommentit =========================
     $pikakommenttisolu = "";
     $kommenttien_lkm = 0;
     $on_uusia_pk = false;
     $pikakommentit = Pikakommentti::hae_pikakommentit($this->parametriolio->omaid, Pikakommentti::$KOHDE_BONGAUS, $hav->get_id(), $this->tietokantaolio);
     // Jos viimeistä katseluaikaa ei ole asetettu, asetetaan 0:
     if (!isset($_SESSION['edellinen_uloskirjausaika_sek'])) {
         $_SESSION['edellinen_uloskirjausaika_sek'] = 0;
     }
     // Korostetaan solu, jos uusin on riittävän uusi eikä oma:
     if (!empty($pikakommentit)) {
         $kommenttien_lkm = sizeof($pikakommentit);
         if ($pikakommentit[0]->get_tallennushetki_sek() > $_SESSION['edellinen_uloskirjausaika_sek'] && $pikakommentit[0]->get_henkilo_id() != $this->parametriolio->omaid) {
             $on_uusia_pk = true;
         }
     }
     // Taulukon solun muotoilu:
     $onclick = Maarite::onclick("hae_pikakommentit", array(Pikakommentti::$KOHDE_BONGAUS, $hav->get_id()));
     $pk_class = "";
     if ($on_uusia_pk) {
         $pk_class = "on_uusia";
     }
     $pikakommenttisolu = Html::luo_tablesolu(Html::luo_span($kommenttien_lkm, array(Maarite::id("id" . $hav->get_id()))), array(Maarite::classs($pk_class), Maarite::title(Bongaustekstit::$ilm_pikakommentit_nakyviin), Maarite::onclick("hae_pikakommentit", array(Pikakommentti::$KOHDE_BONGAUS, $hav->get_id()))));
     //============= PIkakommentit loppu ================================
     // Muokataan varmuus- ja maamerkinnät:
     // Maa merkitään, ellei Suomi:
     if ($hav->get_maa() == Maat::$suomi) {
         $maa = "";
     } else {
         $maa = " (" . Maat::hae_maan_kuvaus($hav->get_maa()) . ")";
     }
     // Vain epävarmuus näytetään
     $varmuus = "";
     if ($hav->get_varmuus() == Varmuus::$epavarma) {
         $varmuus = " (?)";
     }
     // Haetaan kuva_id ja koodi:
     $kuvaolio = $hav->hae_kuva();
     if ($kuvaolio instanceof Kuva) {
         $kuvakoodi = $kuvaolio->nayta_pelkka_kuva($this->parametriolio->kuvien_kansio_osoite);
         $kuva_id = $kuvaolio->getId();
     } else {
         $kuvakoodi = "";
         $kuva_id = -1;
     }
     // Mahdollistetaan kuvan näyttö klikkaamalla:
     // Kuvaa klikkaamalla saadaan se isoksi:
     $klikkaus = "";
     // Tyhjä, ellei kuvakoodi ok.
     $title = "";
     if ($kuvakoodi != "") {
         $klikkaus = Maarite::onclick("hae_kuva_ja_tiedot", array($hav->get_lajiluokka_id(), $kuva_id, Kuva::$KUVAT_BONGAUS));
         $title = Bongaustekstit::$havtaulkuvan_klikkausohje;
     }
     return Html::luo_tablerivi(Html::luo_tablesolu($rivinro, array()) . Html::luo_tablesolu($nimi . $varmuus, array(Maarite::classs("huomio"), Maarite::title(Bongauspainikkeet::$HAVAINNOT_NAYTA_LAJIHAVAINNOT_TITLE), Maarite::onclick("hae_lajihavainnot", array($hav->get_lajiluokka_id())))) . Html::luo_tablesolu($hav->hae_pvm(), array()) . Html::luo_tablesolu($hav->get_paikka() . $maa, array()) . Html::luo_tablesolu(Html::luo_table(Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_span($hav->get_kommentti(), array(Maarite::classs(Bongausasetuksia::$havaintokuvakommentti_class))), array(Maarite::classs("rajaton"))) . Html::luo_tablesolu($kuvakoodi, array(Maarite::classs("rajaton"), $klikkaus, Maarite::title($title))), array()), array()), array(Maarite::name(Bongausasetuksia::$havaintotaulukon_kommenttisolun_name_arvo))) . Html::luo_tablesolu($bongaajan_nimi, array(Maarite::classs("huomio"), Maarite::title(Bongauspainikkeet::$HAVAINNOT_NAYTA_HENKILON_HAVAINNOT_TITLE), Maarite::onclick("hae_henkilon_havainnot", array($hav->get_henkilo_id(), $hav->get_lajiluokka_id())))) . $toimintasolu . $pikakommenttisolu, array(Maarite::classs($rivi_class), Maarite::id($rivi_id)));
 }