/** * Palauttaa yhdestä lajista tehdyt havainnot taulukkoon muotoiltuna. * @param Parametrit $parametriolio * @return <type> */ function hae_lajiluokan_havainnot($parametriolio) { $tietokantaolio = $parametriolio->tietokantaolio; $henkilo_id = $parametriolio->henkilo_id; // Painikkeita: $muokkausnappi = ""; // Määritellään myöhemmin $poistonappi = ""; // Määritellään myöhemmin $sulkemisnappi = "<button type='button' onclick='sulje_ruutu(\"" . Bongausasetuksia::$havaintotietotaulun_id . "\")'>" . Bongauspainikkeet::$HAVAINNOT_SULJE_HENKILON_HAVAINNOT_VALUE . "</button>"; $tulos = ""; // Tässäpä lausetta kerrakseen. $hakulause = "SELECT \n bhavainnot.id AS hav_id,\n henkilot.etunimi AS nimi,\n henkilot.id AS henk_id,\n henkilot.valtuudet AS henk_valtuudet,\n bkuvaukset.nimi AS laji,\n bhavainnot.paikka AS paikka,\n bhavainnot.kommentti AS kommentti,\n bhavainnot.vuosi AS vuosi,\n bhavainnot.kk AS kk,\n bhavainnot.paiva AS paiva,\n bhavainnot.maa AS maa,\n bhavainnot.varmuus AS varmuus\n FROM blajiluokat\n JOIN bkuvaukset\n ON bkuvaukset.lajiluokka_id = blajiluokat.id\n JOIN bhavainnot\n ON bhavainnot.lajiluokka_id = blajiluokat.id\n JOIN henkilot\n ON bhavainnot.henkilo_id = henkilot.id\n WHERE (bkuvaukset.kieli= " . $parametriolio->kieli_kuv . " AND blajiluokat.id = " . $parametriolio->id_lj . ")\n ORDER by vuosi DESC, kk DESC, paiva DESC, laji;\n "; $havaintohaku = $tietokantaolio->tee_OMAhaku($hakulause); $havaintotaulu = $tietokantaolio->hae_osumarivit_olioina($havaintohaku); 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 (" . $havaintotaulu[0]->laji . ")" . $sulkemisnappi . "</div>"; $omaid = $parametriolio->omaid; $tulos .= "<table class = " . Bongausasetuksia::$tietotaulun_class . ">\n <tr>\n <th>Nro</th>\n <th>Havaitsija</th>\n <th>Aika</th>\n <th>Paikka</th>\n <th>Tunnistus</th>\n <th>Toiminnot</th>\n </tr>"; $laskuri = 1; // Auttaa joka toisen rivin eri väriseksi. foreach ($havaintotaulu as $havainto) { // Määritellään omille havainnoille muokkaus- ja poistopainikkeet: // painike, josta saa näkyviin havaintolomakkeen: $muokkausnappi = ""; // Nollataan, ettei kummittele! $poistonappi = ""; $toimintopainikkeet = "<td></td>"; // Omistajalle ja hallitsijalle ei-tyhjä. // Omiin havaintoihin ja hallitsijan oikeuksilla saa muokata ja // poistaa if ($havainto->henk_id == $omaid || $omaid == Valtuudet::$HALLINTA) { $class = "rinnakkain"; $id = ""; $action = "index.php?id_hav=" . $havainto->hav_id . "&id_lj=" . $parametriolio->id_lj; $name = Bongaustoimintonimet::$havaintotoiminto; $value = Bongauspainikkeet::$MUOKKAA_HAVAINTO_VALUE; $muokkausnappi = Html::luo_painikelomake($class, $id, $action, $name, $value); $name = Bongaustoimintonimet::$havaintotoiminto; $value = Bongauspainikkeet::$POISTA_HAVAINTO_VALUE; $poistonappi = Html::luo_painikelomake($class, $id, $action, $name, $value); $toimintopainikkeet = "<td>" . $muokkausnappi . $poistonappi . "</td>"; } // Maa : $maa = " (" . Maat::hae_maan_kuvaus($havainto->maa) . ")"; // Vain epävarmuus näytetään $varmuus = "Ok"; if ($havainto->varmuus == Varmuus::$epavarma) { $varmuus = "?"; } // Muokataan aika: $aika = anna_viikonp_suomeksi($havainto->paiva, $havainto->kk, $havainto->vuosi, true) . " " . $havainto->paiva . "." . $havainto->kk . "." . $havainto->vuosi; $henk_tiedot = $havainto->nimi; if ($laskuri % 2 == 0) { $tulos .= "<tr class =" . Bongausasetuksia::$tietotaulu_parillinenrivi_class . ">"; } else { $tulos .= "<tr>"; } $tulos .= "<td>" . $laskuri . "</td>"; $tulos .= "<td>" . $havainto->nimi . "</td>"; $tulos .= "<td>" . $aika . "</td>"; $tulos .= "<td>" . $havainto->paikka . $maa . "</td>"; $tulos .= "<td>" . $varmuus . "</td>"; $tulos .= $toimintopainikkeet; $tulos .= "</tr>"; $laskuri++; } $tulos .= "</table>"; } return $tulos; }
/** * 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))); }