Ejemplo n.º 1
0
 // Otetaan kirjautumisaika muistiin.
 $_SESSION['kirjautumisaika'] = time();
 $_SESSION['tiedot'] = $tiedot;
 aseta_online(true, $_SESSION['tiedot']->id, $tietokantaolio);
 // Haetaan viimeinen uloskirjautumisaika:
 $viimeksi_ulos = hae_vika_ulosaika($_SESSION['tiedot']->id, $tietokantaolio);
 // Tallennetaan viimeinen uloskirjautumisaika sessiomuuttujaan:
 // (tarvitaan esim. uusien pikakommenttien selvittämisessä)
 $_SESSION['edellinen_uloskirjausaika_sek'] = $viimeksi_ulos;
 // Haetaan ikä
 $alaikainen = true;
 if (!on_alaikainen_tai_elakkeella($_SESSION['tiedot']->id, $tietokantaolio)) {
     $alaikainen = false;
 }
 /* Luodaan teemat-olio alaikäisyyden huomioon ottoa yms. varten: */
 $teemat = new Teemat($alaikainen);
 // Asetetaan hakuajat sessiomuuttujaan ensimmäisellä kerralla:
 $teema_idt = $teemat->get_teema_arvot();
 // Seuraavassa trim, koska joskus tuli ongelmaa tyhjistä
 // välimerkeistä
 for ($i = 0; $i < sizeof($teema_idt); $i++) {
     $aikamuuttuja = trim("hakuaika_teema" . $teema_idt[$i]);
     $_SESSION[$aikamuuttuja] = $viimeksi_ulos;
 }
 // Haetaan yleisten lukemattomien viestien lkm täällä, koska
 // muuten uusien lkm häviää automaattisen viestien
 // näyttämisen takia.
 $omaid = $_SESSION['tiedot']->id;
 $teema = 1;
 // Yleinen-luokan tunnus.
 $uusien_yleisten_lkm = hae_uusien_viestien_lkm($omaid, $teema, $tietokantaolio, $viimeksi_ulos);
Ejemplo n.º 2
0
/**
 * Hakee tietokannasta tiettyä aikaa uudemmat viestit
 * ja palauttaa ne tekstinä. Jos samassa keskustelussa on myös vanhempia
 * viestejä, näyttää niistä korkeintaan haluttu määrä.
 *
 * @param Teemat $teemat
 * @param Tietokantaolio $tietokantaolio olio,
 * joka sisältää yhteystiedot tietokantaan.
 * @param int $oma_id Käyttäjän id, jonka avulla voi valita esim. muokattavat.
 * @param bool $kuningas true, jos käyttäjä on verkon haltija, muuten false.
 * @param int $teema_id viestiluokan nro (ks hae_teema()).
 * @param int $aikaraja vanhimman haettavan viestin ikä (timestamp sek).
 * @param int $vika_viesti_id Viimeksi muokatun viestin id. Esimerkiksi
 * jos käyttäjä on muokannut viestiä tai laittanut uuden ja haluaa päivittää
 * sivun, niin on mahdollista tulla aina samaan kohtaan.
 * @param int $kiinni_lkm näin monta vanhempaa viestiä näytetään yhdessä
 * keskustelussa korkeintaan. Lisäksi näytetään luonnollisesti uudet.
 * @return <type> Palauttaa viestit merkkijonona,
 * jota muokattu html:n avulla.
 */
function hae_viestit($teemat, $tietokantaolio, $oma_id, $kuningas, &$teema_id, $aikaraja, $vika_viesti_id, $kiinni_lkm)
{
    if (!isset($kiinni_lkm)) {
        $kiinni_lkm = 2;
        //oletusarvo
    }
    $viestihtml = '';
    $alaikainen = true;
    // VArmistetaan, ettei ala- tai yli-ikäiset näe k-18 viestejä:
    if (on_alaikainen_tai_elakkeella($oma_id, $tietokantaolio)) {
        if ($teema_id == 2) {
            $teema_id = 1;
            // Ei k-18!
        }
    } else {
        $alaikainen = false;
    }
    /* Luodaan etsintätekstikenttä */
    $etsin = "<input type='text' id=" . Yleisarvoja::$ETSINTAKENTAN_ID . " onkeyup='etsi(this.value)' title='Kirjoita hakusana(t)'/>";
    $etsin_selitys = "Yleishaku: ";
    $etsin = "";
    $etsin_selitys = "";
    // Haetaan ensin kaikki viestit, jotka ovat uudempia kuin
    // aikaraja kyseisestä luokasta:
    $hakulause = "SELECT * FROM viestit\n                    WHERE teema_id ='{$teema_id}'\n                    AND tallennushetki_sek > '{$aikaraja}'\n                    ORDER by tallennushetki_sek DESC";
    $viestihaku = $tietokantaolio->tee_OMAhaku($hakulause);
    // Viestitaulua voisi suodattaa, jos jaksaa. Ei suurta merkitystä.
    $viestitaulu = $tietokantaolio->hae_osumarivit_olioina($viestihaku);
    $teemavalinnat = $teemat->get_teemavalinnat();
    $teemaarvot = $teemat->get_teema_arvot();
    /* Huomaa teema_id:n välitys: */
    $teemavalintahtml = "<select id='teemavalinta' name='teema_id'" . "onChange='hae_viestit(" . $oma_id . "," . $vika_viesti_id . "," . "1" . ",this.options[this.selectedIndex].value)'>";
    //Oletusviestiluokka on yleinen:
    if (!isset($teema_id)) {
        $teema_id = 1;
    }
    // Käydään läpi arvot ja verrataan teema_id:n. Osuma laitetaan valituksi.
    for ($i = 0; $i < sizeof($teemaarvot); $i++) {
        if ($teemaarvot[$i] == $teema_id) {
            $teemavalintahtml .= "<option value='{$teemaarvot[$i]}'" . "selected='selected'>" . $teemavalinnat[$i] . "</option>";
        } else {
            $teemavalintahtml .= "<option value='{$teemaarvot[$i]}'>" . $teemavalinnat[$i] . "</option>";
        }
    }
    $teemavalintahtml .= "</select>";
    /* Lisätään submitpainike kuitenkin (ellei JS käytössä): */
    $teemavalintahtml .= "<input id='viestihaku' type='submit' name='toiminta'" . "value='->'/>";
    if (sizeof($viestitaulu) == 0) {
        $viestihtml = "Yht&auml;&auml;n " . $teemat->hae_viestien_tuoreusaikakuvaus($teema_id) . " p&auml;iv&auml;&auml;" . " nuorempaa " . "viesti&auml; ei l&ouml;ytynyt!" . "<form method='post'" . "action='index.php?teema_id=" . $teema_id . "'>" . "<input id='uusi' type='submit' name='toiminta'" . "value='Uusi viesti'/>" . "Viestiluokka: " . $teemavalintahtml . $etsin_selitys . $etsin . "</form> ";
    } else {
        //Muotoillaan tiedot kauniisti;
        // Huom. action-arvo pitää olla noin, koska ajaxin kanssa
        // php-self ohjasi väärälle sivulle .
        // HUOM! Submit-painikkeiden täytyy olla saman lomakkeen sisällä, jos
        // halutaan tietoa lomakkeesta ulos (kuten valinnat).
        $mj = "<form method='post' action='index.php" . "?teema_id=" . $teema_id . "&vika_viesti_id=" . $vika_viesti_id . "'>" . "<div id='napit1'>" . "<input id='uusi' type='submit' name='toiminta'" . "value='Uusi viesti'/><br />" . "<input id='poistonappi' type='submit' name='toiminta'" . "value='Poista valitut'/></div>" . "Viestiluokka: " . $teemavalintahtml . $etsin_selitys . $etsin;
        $mj .= "<div id='viestitaulu' class='viestitaulu'>";
        //"<div id='uusi_viesti'></div>";
        // Käydään läpi löytyneet viestit ja haetaan niistä toiseen
        // taulukkoon niiden keskustelujen id:t (aloitusviestin id /
        // kommentin emoid), joihin löytyneet viestit kuuluvat. Sitten
        // haetaan keskustelut järjestyksessä.
        //
        // Keskustelut esitetään uusimman viestin mukaisessa järjestyksessä
        // (riippumatta esim. aloitusviestin lähetysajasta).
        $keskustelu_id_taulukko = array();
        foreach ($viestitaulu as $nyk_olio) {
            // Haetaan keskusteluid:
            $k_id = -1;
            if ($nyk_olio->taso == 1) {
                $k_id = $nyk_olio->id;
            } else {
                // kommentti:
                $k_id = $nyk_olio->emo_id;
            }
            // Hyväksytään vain kunnollinen id:
            if (isset($k_id) && $k_id > -1) {
                // Ellei id jo ole $keskustelu_id_taulukossa,
                // asetetaan se vikaksi. Muuten ei tehdä mitään.
                $on_jo = false;
                foreach ($keskustelu_id_taulukko as $id) {
                    if ($id == $k_id) {
                        $on_jo = true;
                    }
                }
                if (!$on_jo) {
                    array_push($keskustelu_id_taulukko, $k_id);
                }
            }
        }
        // Haetaan sitten keskustelut oikeassa järjestyksessä:
        foreach ($keskustelu_id_taulukko as $kid) {
            $khtml = hae_keskustelu($kid, false, $kiinni_lkm, $aikaraja, $tietokantaolio, $kuningas, $oma_id);
            // Jos haku näyttää onnistuneen, lisätään se palautettavaan
            // merkkijonoon:
            if ($khtml != "ei_onnistunut") {
                // Lisätään myös tagit keskustelun ympärille:
                $mj .= "<div id='" . $kid . "' class='keskustelu'>";
                $mj .= $khtml;
                $mj .= "</div>";
                // End of keskustelu
                $mj .= "<div id='vali" . $kid . "'></div>";
                // Välitila,
                // mm. kommenttilomaketta varten. Ei Käytös!!
            }
        }
        $mj .= "</div>" . "</form>";
        $viestihtml = $mj;
    }
    // Aika nykyistetään aina, kun uudet viestit on haettu. Trimmaus poistaa
    // mahdolliset tyhjät merkit.
    $aikamuuttuja = trim("hakuaika_teema" . $teema_id);
    $_SESSION[$aikamuuttuja] = time();
    // Päivitetään myös teema_id sessiomuuttujaan:
    $_SESSION['teema_id'] = trim($teema_id);
    // Aktiivisuusmerkintä:
    $viimeksi_aktiivi = time();
    $aktiivisuuslaji = Aktiivisuus::$VIESTIEN_KATSELU;
    paivita_aktiivisuus($oma_id, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji);
    return $viestihtml;
}
Ejemplo n.º 3
0
 $ilmoitus = "";
 $linkkipalkkiteksti = "";
 $viestitieto = "";
 $muokkauslaatikko = "";
 // Tarkastetaan käyttäjän ikä:
 $alaikainen = true;
 if (!on_alaikainen_tai_elakkeella($omaid, $tietokantaolio)) {
     $alaikainen = false;
 }
 // Varmistetaan, ettei alayli-ikäinen pääse K_18-osioon:
 if ($alaikainen && $teema_id == Teemat::$K_18_arvo) {
     $teema_id = Teemat::$YLEINEN_arvo;
     $_SESSION['teema_id'] = Teemat::$YLEINEN_arvo;
 }
 /* Luodaan teemat-olio alaikäisyyden huomioon ottoa yms. varten: */
 $teemat = new Teemat($alaikainen);
 // Haetaan aikaraja näytettäville viesteille (teemat.php):
 $aikaraja = $teemat->hae_viestien_tuoreusaika($parametriolio->teema_id);
 // Linkkipalkkiin tiedot viestiluokista ja uusista viesteistä.
 // true/false -arvot eivät tunnu kulkevan, joten muunnetaan luvuiksi:
 if ($alaikainen) {
     $alaikaindeksi = 1;
 } else {
     $alaikaindeksi = 0;
 }
 $viestiluokat = "";
 $luokat = $teemat->get_teemavalinnat();
 $arvot = $teemat->get_teema_arvot();
 for ($i = 0; $i < sizeof($luokat); $i++) {
     $viestiluokat .= "<a onClick = 'aseta_luokka(" . $alaikaindeksi . "," . $omaid . "," . $parametriolio->vika_viesti_id . ",\n                                                    1," . $arvot[$i] . ")'>" . $luokat[$i] . " (<span id='uudet" . $arvot[$i] . "'>\n                            0 </span>)</a>";
 }
Ejemplo n.º 4
0
 // tapahtuvaksi.
 if (!online($_SESSION['tiedot']->id, $tietokantaolio)) {
     $kansiotaso = 2;
     toteuta_passiivinen_ulos_toiminto($kansiotaso);
     echo Yleisarvoja::$istunto_vanhentunut;
     exit;
 }
 /******************************************************************/
 // Ikätarkistus:
 if (!on_alaikainen_tai_elakkeella($omaid, $tietokantaolio)) {
     $alaikainen = false;
 } else {
     $alaikainen = true;
 }
 /* Luodaan teemat-olio alaikäisyyden huomioon ottoa yms. varten: */
 $teemat = new Teemat($alaikainen);
 if ($teema_id == 2 || $_SESSION['teema_id'] == Teemat::$K_18_arvo) {
     if ($alaikainen) {
         $teema_id = Teemat::$YLEINEN_arvo;
         $_SESSION['teema_id'] = Teemat::$YLEINEN_arvo;
     }
 }
 // Joillekin luokille pitempi näkyvyys:
 if ($oletusaikaraja) {
     // Haetaan aikaraja näytettäville viesteille (teemat.php):
     $aikaraja = $teemat->hae_viestien_tuoreusaika($teema_id);
 }
 $omat_valtuudet = $_SESSION['tiedot']->valtuudet;
 $kuningas = on_kuningas_pika($omat_valtuudet);
 /********************* KOMMENTTILOMAKE ********************************/
 // Palauttaa kommentinkirjoituslomakkeen eli viestilomakkeen.