/** * 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; }
/** * 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; }
/** * 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))); }