Пример #1
0
 /**
  * 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;
 }
Пример #2
0
/**
 * 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&auml;</th>\n                        <th>Vuodet</th><th>Kuvien lkm</th>\n                        <th>N&auml;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&auml;&auml;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;
}