/** * Palauttaa lukua eli oppiaineen indeksiä vastaavan oppiaineen nimen, tai * tekstin "Tuntematon", jos parametri on sopimaton. * @param <type> $arvo * @return <type> */ public static function hae_albumisuojauskuvaus($arvo) { $kuvaus = "Tuntematon"; // Jos parametri on ok, haetaan oppiaineen nimi. Jos huomataan // jotakin outoa, palautetaan virheviesti. if ($arvo > -1 && $arvo < sizeof(Albumisuojaus::hae_suojauskuvaukset())) { try { $kuvaukset = Albumisuojaus::hae_suojauskuvaukset(); $kuvaus = $kuvaukset[$arvo]; } catch (Exception $poikkeus) { $kuvaus = $poikkeus->getMessage(); } } return $kuvaus; }
/** * Hakee albumit tietokannasta: * @param <type> $poista_alb Poistonapin arvo (teksti) * @param <type> $uusi_kuva_komento Lisäysnapin arvo (teksti) * @param <type> $omaid * @param <type> $tietokantaolio * @param <type> $valtuudet käyttöoikeudet: tämä voi rajoittaa * katsottavia albumeita. * @return <type> */ function hae_albumit($katso_alb, $poista_alb, $uusi_kuva_komento, $omaid, $tietokantaolio, $valtuudet, $uusi_kuva_komento, $takaisin_albumilistaan_alb) { $albumiHTML = "Ei tallennettuja albumeita!"; //========================== PIkakommentit ========================= // Haetaan kaikkien uusien kuviin kohdistuvien pikakommenttien tiedot // (ei omien): $kommenttien_lkm = 0; $on_uusia_pk = false; // Jos viimeistä katseluaikaa ei ole asetettu, asetetaan 0: $viimeksi_katsottu = $_SESSION['edellinen_uloskirjausaika_sek']; if (!isset($viimeksi_katsottu)) { $viimeksi_katsottu = 0; } $hakulause = "SELECT kohde_id, henkilo_id\n FROM pikakommentit\n WHERE kohde_tyyppi =" . Pikakommentti::$KOHDE_KUVA_TAVIS . " AND tallennushetki_sek > " . $viimeksi_katsottu . " AND henkilo_id <> " . $omaid . " ORDER BY tallennushetki_sek DESC"; $uudet_pikakommentit_kaikki = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause); //============= SUODATUS ALKU ====================================== $uudet_pikakommentit = array(); $suodattimet = Suodatin::hae_suodattimet($omaid, $tietokantaolio); foreach ($uudet_pikakommentit_kaikki as $osuma) { $henkilo_id = $osuma->henkilo_id; if (!Suodatin::henkilo_suodatetaan_kevyt($henkilo_id, $omaid, $suodattimet)) { array_push($uudet_pikakommentit, $osuma); } } //============= SUODATUS LOPPU ===================================== //================================================================== $hakulause = "SELECT * FROM albumit"; // Käsitellään mahdollinen rajoitettu katseluoikeus: $rajoitettu = false; if ($valtuudet == Valtuudet::$RAJOITETTU_KUVIEN_KATSELU) { $rajoitettu = true; $hakulause = "SELECT * FROM albumit\n WHERE suojaus = " . Albumisuojaus::$SUURI_YLEISO; } // Järjestetään ensimmäisen vuosiluvun mukaan laskevasti: $hakulause .= " ORDER BY albumit.vuosi_eka DESC, albumit.id DESC"; $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause); $tulosoliot_kaikki = $tietokantaolio->hae_osumarivit_olioina($hakutulos); //============= SUODATUS ALKU ====================================== $tulosoliot = array(); foreach ($tulosoliot_kaikki as $osuma) { $henkilo_id = $osuma->henkilo_id; if (!Suodatin::henkilo_suodatetaan_kevyt($henkilo_id, $omaid, $suodattimet)) { array_push($tulosoliot, $osuma); } } //============= SUODATUS LOPPU ===================================== if (sizeof($tulosoliot) > 0) { $albumiHTML = "<table id='albumitaulu'>\n <tr class='otsikkorivi'><th>Albumi</th><th>Tekijä</th>\n <th>Vuodet</th><th>Kuvien lkm</th>\n <th>Näkyvyys</th>\n <th colspan=4>Toimenpiteet</th></tr>\n "; $laskuri = 0; foreach ($tulosoliot as $alb) { /******************************************************************/ /* Tarkistetaan ensin, onko albumissa uusia kuvia, eli * edellisen uloskirjautumisen jälkeen lisättyjä: */ $uudet_lkm = 0; // Kertoo uusien lkm:n // Jos viimeistä katseluaikaa ei ole asetettu, asetetaan 0: if (!isset($_SESSION['kuvat_katsottu_viimeksi'])) { $_SESSION['kuvat_katsottu_viimeksi'] = 0; } $hakulause = "SELECT kuvat.id, kuvat.henkilo_id AS henkilo_id\n FROM kuvat\n JOIN kuva_albumi_linkit AS linkit\n ON kuvat.id = linkit.kuva_id\n JOIN albumit\n ON albumit.id = linkit.albumi_id\n WHERE (kuvat.nakyvyys = " . Nakyvyys_kuva::$JULKINEN . "\n OR kuvat.henkilo_id = " . $omaid . ")\n AND (kuvat.tallennusaika_sek > " . $_SESSION['kuvat_katsottu_viimeksi'] . "\n AND albumit.id = " . $alb->id . ")"; $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause); if ($hakutulos != false) { $kuvataulukko_kaikki = $tietokantaolio->hae_osumarivit_olioina($hakutulos); //============= SUODATUS ALKU ====================================== $kuvataulukko = array(); foreach ($kuvataulukko_kaikki as $osuma) { $henkilo_id = $osuma->henkilo_id; if (!Suodatin::henkilo_suodatetaan_kevyt($henkilo_id, $omaid, $suodattimet)) { array_push($kuvataulukko, $osuma); } } //============= SUODATUS LOPPU ===================================== $uudet_lkm = sizeof($kuvataulukko); } /******************************************************************/ if ($laskuri % 2 == 1) { $rivi_class = "class='parillinen_rivi_albumit'"; } else { $rivi_class = ""; } // Pitää muokkausta varten lähettää muokattavat tiedot urlin kautta. $url_safe_nimi = rawurlencode($alb->nimi); $url_safe_kuvaus = rawurlencode($alb->kuvaus); $url_safe_vuosi_eka = rawurlencode($alb->vuosi_eka); $url_safe_vuosi_vika = rawurlencode($alb->vuosi_vika); $url_safe_suojaus = rawurlencode($alb->suojaus); $muokkausnappi = "<form method='post'id='muokkaa_alb' " . "action='{$_SERVER['PHP_SELF']}" . "?id_alb={$alb->id}" . "&nimi_alb={$url_safe_nimi}" . "&kuvaus_alb={$url_safe_kuvaus}" . "&vuosi_eka_alb={$url_safe_vuosi_eka}" . "&vuosi_vika_alb={$url_safe_vuosi_vika}" . "&suojaus_alb={$url_safe_suojaus}'>" . "<input type='submit' name='toiminta'\n value='Muokkaa'/>" . "</form>"; $poistonappi = ""; $kuvan_lisaysnappi = "<form method='post'id='lisaa_kuvia_alb' " . "action='{$_SERVER['PHP_SELF']}" . "?id_alb={$alb->id}'>" . "<input type='submit' name='toiminta'\n value='{$uusi_kuva_komento}'/>" . "</form>"; /*************************************************** if($valtuudet==Valtuudet::$HALLINTA){ $pikkukuvanappi = "<form method='post'id='luo_pikkukuvat_alb' ". "action='{$_SERVER['PHP_SELF']}". "?id_alb=$alb->id'>". "<input type='submit' name='toiminta' value='Luo pikkukuvat'/>". "</form>"; } else{ $pikkukuvanappi = ""; } /***************************************************/ // Albumin näyttöpainike: Yhdistetään submit (toissijainen) // ja ajax (ensisijainen) -toiminnot samaan painikkeeseen: $katso_alb = Painikkeet::$KATSO_ALB_VALUE; $onsubmit_funktionimi = "hae_esikatselukuvat"; $onsubmit_parametrit = array($alb->id, Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_OLETUS, "\"" . Kuva::$KUVAT_ALBUMIT . "\""); $form_maaritteet = array("method" => "post", "id" => "nayta_kuvat_alb", "action" => "{$_SERVER['PHP_SELF']}?id_alb={$alb->id}", "title" => Painikkeet::$KATSO_ALB_TITLE); $input_maaritteet = array('name' => 'toiminta', 'value' => $katso_alb); try { $albumin_katselunappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } catch (Exception $poikkeus) { $albumin_katselunappi = $poikkeus->getMessage(); } // Haetaan albumin luoja: $hakulause = "SELECT etunimi, sukunimi\n FROM henkilot\n WHERE id = {$alb->henkilo_id}\n LIMIT 1"; $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause); $osumat = $tietokantaolio->hae_osumarivit_olioina($hakutulos); $luoja = ""; // Ellei löytynyt, palautetaan 'tuntematon' if (sizeof($osumat) == 0) { $luoja = "tuntematon"; } else { $luoja = $osumat[0]->etunimi; } // Haetaan albumin kuvien tiedot: $hakulause = "SELECT kuvat.id, kuvat.henkilo_id AS henkilo_id\n FROM kuvat\n JOIN kuva_albumi_linkit AS linkit\n ON kuvat.id = linkit.kuva_id\n JOIN albumit\n ON albumit.id = linkit.albumi_id\n WHERE (kuvat.nakyvyys = " . Nakyvyys_kuva::$JULKINEN . "\n OR kuvat.henkilo_id = " . $omaid . ")\n AND albumit.id = {$alb->id}"; $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause); $osumat_kaikki = $tietokantaolio->hae_osumarivit_olioina($hakutulos); //============= SUODATUS ALKU ====================================== $osumat = array(); foreach ($osumat_kaikki as $osuma) { $henkilo_id = $osuma->henkilo_id; if (!Suodatin::henkilo_suodatetaan_kevyt($henkilo_id, $omaid, $suodattimet)) { array_push($osumat, $osuma); } } //============= SUODATUS LOPPU ===================================== $lkm = sizeof($osumat); // Käydään läpi uudet pikakommentit ja tarkistetaan, onko tähän // albumiin uusia. $uusien_pikojen_lkm = 0; foreach ($uudet_pikakommentit as $pikakommentti_tk) { $pikakommentin_kohde_id = $pikakommentti_tk->kohde_id; foreach ($osumat as $kuva_olio) { if ($pikakommentin_kohde_id == $kuva_olio->id) { $uusien_pikojen_lkm++; } } } /******************************************************************/ // Poistonappi laitetaan vain, jos albumi tyhjä: if ($lkm == 0) { $poistonappi = "<form method='post'id='poista_alb' " . "action='{$_SERVER['PHP_SELF']}" . "?id_alb={$alb->id}'>" . "<input type='submit' name='toiminta'\n value='{$poista_alb}'/>" . "</form>"; } /******************************************************************/ // Muotoillaan suojauskuvaus: $suojaus = "tuntematon"; $arvot = Albumisuojaus::hae_suojausarvot(); $kuvaukset = Albumisuojaus::hae_suojauskuvaukset(); for ($i = 0; $i < sizeof($arvot); $i++) { if ($alb->suojaus == $arvot[$i]) { $suojaus = $kuvaukset[$i]; } } // Muotoillaan vuosiluvut: if ($alb->vuosi_eka == -1) { $aika = "Ei määritelty"; } else { if ($alb->vuosi_vika == -1) { $aika = $alb->vuosi_eka; } else { $aika = $alb->vuosi_eka . " - " . $alb->vuosi_vika; } } // Muotoillaan kuvien määrä niin, että uudet kuvat ja // pikakommentit huomataan: if ($uusien_pikojen_lkm > 0) { $title_pikat = "Uusia pikakommentteja " . $uusien_pikojen_lkm . " kpl."; $uusien_pikojen_lkm_merkinta = "<span class='uusien_pikakommenttien_lkm'>\n ({$uusien_pikojen_lkm}*)</span>"; } else { $uusien_pikojen_lkm_merkinta = ""; $title_pikat = ""; } $kuvien_lkm = "<td align='center' title='" . $title_pikat . "'>" . $lkm . $uusien_pikojen_lkm_merkinta . "</td>"; if ($uudet_lkm > 0) { // Muotoillaan mahdollisten uusien pikakommenttien lkmtitle: $title_pikat = ""; if ($uusien_pikojen_lkm > 0) { $title_pikat = " ja uusia pikakommentteja " . $uusien_pikojen_lkm . " kpl."; } $kuvien_lkm = "<td align='center' class='uusia_kuvia'" . "title='Uusia kuvia " . $uudet_lkm . " kpl " . $title_pikat . "'>" . $lkm . $uusien_pikojen_lkm_merkinta . "</td>"; } // Muiden yksityisiä ei näytetä! if ($alb->suojaus == Albumisuojaus::$YKSITYINEN && $alb->henkilo_id != $omaid) { // Ei tehdä mitään. } else { if ($alb->suojaus == Albumisuojaus::$JULKINEN || $alb->suojaus == Albumisuojaus::$YKSITYINEN && $alb->henkilo_id == $omaid) { $laskuri++; // Laskuria kasvatetaan vain, kun albumi näytetään. $albumiHTML .= "<tr " . $rivi_class . ">"; $albumiHTML .= "<td>{$laskuri} {$alb->nimi}</td>"; $albumiHTML .= "<td>{$luoja}</td>"; $albumiHTML .= "<td>{$aika}</td>"; $albumiHTML .= $kuvien_lkm; $albumiHTML .= "<td>{$suojaus}</td>"; // Muokkaus, lisäys ja poisto yksityisiin vain tekijälle! if ($alb->henkilo_id == $omaid) { $albumiHTML .= "<td>{$albumin_katselunappi}</td>"; $albumiHTML .= "<td>{$kuvan_lisaysnappi}</td>"; $albumiHTML .= "<td>{$muokkausnappi}</td>"; $albumiHTML .= "<td>{$poistonappi}</td>"; } else { if ($alb->suojaus == Albumisuojaus::$JULKINEN && $valtuudet == Valtuudet::$HALLINTA) { $albumiHTML .= "<td>{$albumin_katselunappi}</td>"; $albumiHTML .= "<td>{$kuvan_lisaysnappi}</td>"; $albumiHTML .= "<td>{$muokkausnappi}</td>"; $albumiHTML .= "<td>{$poistonappi}</td>"; } else { // ei-omat julkiset albumit: $albumiHTML .= "<td>{$albumin_katselunappi}</td>"; } } $albumiHTML .= "</tr>"; } else { //yhteinen tai suuri yleisö: kuvia saavat kaikki lisätä, // paitsi jos käyttöoikeus on rajoitettu. $laskuri++; $albumiHTML .= "<tr " . $rivi_class . ">"; $albumiHTML .= "<td>{$laskuri} {$alb->nimi}</td>"; $albumiHTML .= "<td>{$luoja}</td>"; $albumiHTML .= "<td>{$aika}</td>"; $albumiHTML .= $kuvien_lkm; $albumiHTML .= "<td>{$suojaus}</td>"; // Muokkaus ja poisto vain omiin! if ($alb->henkilo_id == $omaid) { $albumiHTML .= "<td>{$albumin_katselunappi}</td>"; $albumiHTML .= "<td>{$kuvan_lisaysnappi}</td>"; $albumiHTML .= "<td>{$muokkausnappi}</td>"; $albumiHTML .= "<td>{$poistonappi}</td>"; } else { if ($valtuudet == Valtuudet::$HALLINTA) { $albumiHTML .= "<td>{$albumin_katselunappi}</td>"; $albumiHTML .= "<td>{$kuvan_lisaysnappi}</td>"; $albumiHTML .= "<td>{$muokkausnappi}</td>"; $albumiHTML .= "<td>{$poistonappi}</td>"; } else { // ei-omat julkiset albumit: $albumiHTML .= "<td>{$albumin_katselunappi}</td>"; if (!$rajoitettu) { $albumiHTML .= "<td>{$kuvan_lisaysnappi}</td>"; } } } $albumiHTML .= "</tr>"; } } } $albumiHTML .= "</table>"; } return $albumiHTML; }