Example #1
0
 /**
  * Hakee tietokannasta henkilön nimen ja palauttaa sen. Ellei löydy,
  * palauttaa merkkijonon "tuntematon".
  * @param <type> $id
  */
 public function hae_henkilon_nimi($id)
 {
     $nimi = "Tuntematon";
     $tk_henkilo_olio = $this->tietokantaolio->hae_eka_osuma_oliona("henkilot", "id", $id);
     if ($tk_henkilo_olio !== Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
         $nimi = $tk_henkilo_olio->etunimi . " " . $tk_henkilo_olio->sukunimi;
         $this->lisaa_kommentti("Henkil&ouml;n nimi tietokannassa: " . $nimi);
     } else {
         $this->lisaa_kommentti("Henkil&ouml;n nimen haku tietokannasta ei onnistunut!");
         $this->lisaa_virheilmoitus("Henkil&ouml;n nimen haku tietokannasta ei onnistunut!");
     }
     return $nimi;
 }
Example #2
0
 /**
  * Palauttaa true, jos tietokannasta löytyy yksi useampi sellainen rivi,
  * joka vastaa kaikkia parametrina annettuja sarakenimiä vastaavia
  * tietokantasoluja. Ellei yhtään sellaista riviä löydy, palauttaa arvon
  * false.
  * 
  * Virhetapauksessa, esimerkiksi jos jokin tietokantasoluarvoista on
  * virheellinen, metodi palauttaa arvon true.
  * 
  * Tästä on hyötyä, kun ennen uuden olion tai muutoksen tallennusta
  * halutaan tarkistaa, onko tietyn ehdot täyttävä olio jo tallennettu
  * tietokantaan.
  */
 public function on_jo_olemassa($taulunimi, $sarakenimet)
 {
     $palaute = true;
     $ehtotietokantasolut = array();
     foreach ($sarakenimet as $snimi) {
         array_push($ehtotietokantasolut, $this->get_tietokantasolu($snimi));
     }
     $osumat = $this->tietokantaolio->hae_tk_oliot($taulunimi, $ehtotietokantasolut);
     // Ellei osumia löydy, ei linkkiä ilmeisesti ole vielä luotu.
     if (empty($osumat)) {
         $palaute = false;
     }
     return $palaute;
 }
Example #3
0
 /**
  * Konstruktorin "overloading" eli eri konstruktorit eri parametreille
  * ei ole tuettu PHP:ssä. Kierrän tämän antamalla parametreille, joita
  * ei käytetä, vakioarvon, joka tarkoittaa, ettei parametri käytössä.
  *
  * @param Tietokantaolio $tietokantaolio
  * @param <type> $tk_pikakommenttiolio Tietokantahausta saatava yksi rivi
  * oliona.
  */
 function __construct($tietokantaolio, $id)
 {
     $this->TAULUNIMI_PIKAKOMMENTIT = Tietokannan_taulunimet::$pikakommentit;
     $this->virheilmot = array();
     $this->tietokantaolio = $tietokantaolio;
     if ($id == Pikakommentti::$PARAMETRI_EI_KAYTOSSA) {
         $this->id = Pikakommentti::$MUUTTUJAA_EI_MAARITELTY;
     } else {
         $this->id = $id;
     }
     $this->henkilo_id = Pikakommentti::$MUUTTUJAA_EI_MAARITELTY;
     $this->tallennushetki_sek = Pikakommentti::$MUUTTUJAA_EI_MAARITELTY;
     $this->muokkaushetki_sek = Pikakommentti::$MUUTTUJAA_EI_MAARITELTY;
     $this->kohde_id = Pikakommentti::$MUUTTUJAA_EI_MAARITELTY;
     $this->kohde_tyyppi = Pikakommentti::$MUUTTUJAA_EI_MAARITELTY;
     $this->kommentti = Pikakommentti::$MUUTTUJAA_EI_MAARITELTY;
     $this->tk_pikakommenttiolio = Pikakommentti::$MUUTTUJAA_EI_MAARITELTY;
     // Haetaan ja sijoitetaan tietokantarivin arvot, jos se on
     // olemassa eli parametri käytössä.
     if ($id != Pikakommentti::$PARAMETRI_EI_KAYTOSSA) {
         // Haetaan pikakommentin tiedot tietokannasta:
         try {
             $taulunimi = "pikakommentit";
             $sarakenimi = "id";
             $hakuarvo = $id;
             $tk_pikakommenttiolio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
             // Kun olio löytyy, asetetaan tiedot paikalleen:
             if ($tk_pikakommenttiolio != Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
                 $this->henkilo_id = $tk_pikakommenttiolio->henkilo_id;
                 $this->tallennushetki_sek = $tk_pikakommenttiolio->tallennushetki_sek;
                 $this->muokkaushetki_sek = $tk_pikakommenttiolio->muokkaushetki_sek;
                 $this->kohde_id = $tk_pikakommenttiolio->kohde_id;
                 $this->kohde_tyyppi = $tk_pikakommenttiolio->kohde_tyyppi;
                 $this->kommentti = $tk_pikakommenttiolio->kommentti;
                 $this->olio_loytyi_tietokannasta = true;
             } else {
                 // Jos mitään ei löydy, muutetaan ei-määritellyksi:
                 $tk_pikakommenttiolio = Pikakommentti::$MUUTTUJAA_EI_MAARITELTY;
                 $this->id = Pikakommentti::$MUUTTUJAA_EI_MAARITELTY;
                 $this->olio_loytyi_tietokannasta = false;
             }
             // Otetaan ylös tiedot luokan muuttujaaan.
             $this->tk_pikakommenttiolio = $tk_pikakommenttiolio;
         } catch (Exception $virhe) {
             nollaa_muuttujat();
         }
     }
 }
 /**
  * Tämä palauttaa onnistuessaa uuden Tietokantarivi-luokan olion, jossa on 
  * samanlaiset solut kuin tämän luokan tietokantarivillä ja jonka 
  * id-tunnisteen arvo on $id.
  * Solujen arvoiksi syötetään tietokannan arvot. Metodi luo siis uuden 
  * tietokantarivin, <i>eikä tee muutoksia this->tietokantarivi-olioon</i>.
  * 
  * <p>
  * Tätä voidaan hyödyntää esimerkiksi ennen muutosten tallennusta niin, että
  * tämän avulla voidaan tarkistaa, onko yhtään tietoa muutettu.
  * </p>
  * 
  * Ellei tunnistetta vastaavaa riviä löydy tietokannasta, palautetaan arvo
  * Malliluokkapohja2::$EI_LOYTYNYT_TIETOKANNASTA. 
  * Palautteen arvioinnissa kannattaa käyttää instanceof-metodia.
  * 
  * @param type $id 
  */
 public function hae_tietokantarivi_tietokannasta($id)
 {
     $palaute = Malliluokkapohja2::$EI_LOYTYNYT_TIETOKANNASTA;
     $tietokantasolut_array = array();
     foreach ($this->get_tietokantasolut() as $solu) {
         if ($solu instanceof Tietokantasolu) {
             array_push($tietokantasolut_array, new Tietokantasolu($solu->get_sarakenimi(), $solu->get_arvo_on_luku()));
         }
     }
     // Haetaan arvot tietokannasta:
     $osumataulukko = $this->tietokantaolio->hae_eka_osuma_taulukkona($this->tk_taulunimi, Malliluokkapohja2::$SARAKENIMI_ID, $this->id_tietokanta);
     // Huom! Alla osumataulukko sisältää kaikki tiedot kahteen kertaan
     // (indeksin ja sarakenimen avulla haettaviksi)!
     if (!empty($osumataulukko) && sizeof($osumataulukko) == 2 * sizeof($tietokantasolut_array)) {
         foreach ($tietokantasolut_array as $solu) {
             $solu->set_arvo_kevyt($osumataulukko[$solu->get_sarakenimi()]);
         }
         $palaute = new Tietokantarivi($this->tk_taulunimi, $tietokantasolut_array);
     } else {
         $this->lisaa_virheilmoitus("Virhe metodissa 'hae_tietokantarivi" . "_tietokannasta'. Osumataulukon koko =" . sizeof($osumataulukko) . " ja tietokantasolut_arrayn koko=" . sizeof($tietokantasolut_array));
     }
     return $palaute;
 }
/**
 * Hakee suurimmän parametrina annettavan tietokantataulun id-kentän arvoista.
 * Ellei mitään löydy, palauttaa arvon -1.
 * @param Tietokantaolio $tietokantaolio
 * @param <type> $taulunimi
 */
function hae_suurin_id($tietokantaolio, $taulunimi)
{
    // Haetaan suurin olemassaolevista havainto-id:eistä, jotta
    // mahdollisen kopioitavan/uuden havainnon id voidaan "arvata"
    // (=yhtä isompi). Tämä ei välttämättä pidä paikkaansa esimerkiksi
    // tapauksessa, jossa joku toinen ehtii tallentamaan välissä.
    $hakulause = "SELECT MAX(id) AS suurin FROM {$taulunimi}";
    $osumataulukko = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause);
    $suurin_id = -1;
    if (!empty($osumataulukko) && is_numeric($osumataulukko[0]->suurin)) {
        $suurin_id = $osumataulukko[0]->suurin;
    }
    return $suurin_id;
}
Example #6
0
/**
 *
 * @param <type> $valinnat
 * @param Tietokantaolio $tietokantaolio
 * @param int $omaid
 * @return <string> Palauttaa viestin suorituksen onnistumisesta, joka
 * n&auml;ytet&auml;&auml;n k&auml;ytt&auml;j&auml;lle.
 */
function poista_suoritukset(&$valinnat, $tietokantaolio, $omaid)
{
    $vastaus = '';
    $lkm = 0;
    if (!isset($valinnat)) {
        $vastaus = "Poisto ep&auml;onnistui!\n                    Valintataulukko on m&auml;&auml;rittelem&auml;t&ouml;n";
    } else {
        if ($valinnat == "" || sizeof($valinnat) == 0) {
            $vastaus = "Poisto ep&auml;onnistui!\n                    Yht&auml;&auml;n valittua rivi&auml; ei l&ouml;ytynyt!";
        } else {
            $ilmoitus = "";
            $poistettu_lkm = 0;
            // PIkakommentitt!
            foreach ($valinnat as $id) {
                $poisto = $tietokantaolio->poista_rivi("suoritukset", "id", $id);
                if ($poisto == "onnistui") {
                    $lkm++;
                    //=============== PIkakommenttien poisto =======================
                    // Luodaan Kontrolleri_pikakommentit-olio, joka huolehtii
                    //orpojen pikakommenttien poistosta (parametriolio tarvitaan siihen):
                    $kokoelmanimi = "";
                    //Ei tarvetta
                    $paraolio = new Parametrit($kokoelmanimi, $omaid, $tietokantaolio);
                    $kontrolleri = new Kontrolleri_pikakommentit($tietokantaolio, $paraolio, "");
                    $kohde_tyyppi = Pikakommentti::$KOHDE_LIIKUNTASUORITUS;
                    $kohde_id = $id;
                    $poistettu_lkm += $kontrolleri->poista_pikakommentit($tietokantaolio, $kohde_tyyppi, $kohde_id);
                    //==============================================================
                }
            }
            if ($poistettu_lkm == 0) {
                $ilmoitus = "<br /> Poistettavia pikakommentteja ei l&ouml;ytynyt.";
            } else {
                $ilmoitus .= "<br /> Pikakommentit (yht. " . $poistettu_lkm . " kpl) poistettu.";
            }
            $vastaus = "Suorituksia poistettiin onnistuneesti " . $lkm . " kpl. " . $ilmoitus;
        }
    }
    return $vastaus;
}
Example #7
0
<?php

session_start();
// Aloitetaan istunto.
require_once '../kokonaisuudet/asetukset/tietokantayhteys.php';
require_once '../kokonaisuudet/yhteiset/php_yhteismetodit.php';
load_files("submit");
// Yhdistetään tietokantaan:
$tietokantaolio = new Tietokantaolio($dbtyyppi, $dbhost, $dbuser, $dbsalis);
$tietokantaolio->yhdista_tietokantaan($dbnimi);
// Tee parametriolio ja palauteolio!
$parametriolio = new Parametrit($tietokantaolio);
$palauteolio = new Palaute();
// Kontrollerit ja näkymät:
$palautuskontrolleri = new Palautuskontrolleri($tietokantaolio, $parametriolio);
$palautusnakymat = new Palautusnakymat();
/*********************** TOIMINTA-TOIMINNOT *******************************/
$toiminta = $parametriolio->get_toiminta();
$palautustoiminta = $parametriolio->get_palautustoiminto();
$lang_id = $parametriolio->kieli_id;
$kayttajan_valtuudet = $parametriolio->get_valtuudet();
// Käsitellään tilanne "$toiminta on määritelty" eli lähinnä
// kokonaisuuksiin liittyvät toiminnot sekä yleisiä toimintoja:
if ($parametriolio->get_toiminta() != "") {
    // Kirjautuminen ulos:
    if ($toiminta == Painikkeet::$KIRJAUDU_ULOS_VALUE) {
        $palauteolio = toteuta_uloskirjautuminen($parametriolio);
    }
} else {
    if ($palautustoiminta != "") {
        if ($palautustoiminta === Palautustekstit::button_new_course_value($lang_id)) {
Example #8
0
 require_once 'kayttajahallinta/Kayttajatekstit.php';
 require_once 'kayttajahallinta/Henkilo.php';
 require_once 'kayttajahallinta/Suodatin.php';
 require_once 'kayttajahallinta/Kayttajanakymat.php';
 require_once 'kayttajahallinta/Kayttajakontrolleri.php';
 require_once 'yhteiset/php_yhteiset.php';
 require_once 'yhteiset/Parametrit.php';
 require_once 'yhteiset/Palaute.php';
 $kirjautumistieto = '';
 if (isset($_SESSION['tiedot'])) {
     $kirjautumistieto = "Kirjautunut: " . $_SESSION['tiedot']->etunimi;
 }
 $aika = anna_nyk_viikonp_suomeksi() . " " . date("d.m.Y");
 $aikailmoitus = "T&auml;n&auml;&auml;n on {$aika}";
 // Yhdistetään tietokantaan:
 $tietokantaolio = new Tietokantaolio($dbtyyppi, $dbhost, $dbuser, $dbsalis);
 $tietokantaolio->yhdista_tietokantaan($dbnimi);
 $omaid = $_SESSION['tiedot']->id;
 // Tarkistetaan, ettei käyttäjää ole potkaistu ulos (sessiotiedot
 // voivat olla vanhentuneita tai kopioituja):
 if (!online($omaid, $tietokantaolio)) {
     $kansiotaso = 1;
     toteuta_kirjaudu_ulos($tietokantaolio, $dbnimi, $kansiotaso);
     exit;
 }
 // Verkkosivujen hallitsijan totuusarvo:
 $omat_valtuudet = $_SESSION['tiedot']->valtuudet;
 $kuningas = on_kuningas_pika($omat_valtuudet);
 // Luodaan parametri- ja palautusolio:
 $kokoelmanimi = "";
 // Tämä koskee kuvia. Ei tarvinne täällä, ellei
/**
 * Hakee bongauskuva_albumit tietokannasta. Kaikki albumit ovat yhteisiä ja
 * albumit luodaan aina lennossa niin, että jokaiselle lajiluokalle, josta on
 * kuvia, näytetään oma albumi. Lisäksi näytetään kullekin yläluokalle oma
 * yhteinen albumi, jossa on esimerkiksi kaikki linnut.
 *
 * Kuvien muokkaukseen ja poistoon tulee kuvakohtaiset rajoitukset niin, että
 * itse ladatun kuvan saa poistaa/muokata normaali jäsen ja ylläpitäjä saa
 * poistaa/muokata minkä tahansa kuvan. Lisätä saa kuka vain.
 * 
 * @param <type> $omaid
 * @param Tietokantaolio $tietokantaolio
 * @return <type>
 */
function bongaus_hae_albumit($omaid, $tietokantaolio)
{
    // Paluu havaintoihin -painike:
    $paluu = Bongauspainikkeet::$TAKAISIN_HAVAINTOIHIN_VALUE;
    $onsubmit_funktionimi = "hae_havainnot_bongaus";
    $onsubmit_parametrit = array();
    $form_maaritteet = array("method" => "post", "id" => "nayta_havainnot_bong", "action" => "{$_SERVER['PHP_SELF']}");
    $input_maaritteet = array('name' => Bongaustoimintonimet::$havaintotoiminto, 'value' => $paluu);
    try {
        $paluunappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
    } catch (Exception $poikkeus) {
        $paluunappi = $poikkeus->getMessage();
    }
    $albumiHTML = "<table id='albumitaulu'>\n                    <tr class='otsikkorivi'><th>Laji tai luokka</th>\n                    <th>Kuvien lkm</th>\n                    <th colspan=2>{$paluunappi}</th>\n                    </tr>\n                    ";
    // Haetaan bongauskuvien yläluokkien id:t:
    $hakulause = "SELECT blajiluokat.id AS yla_id\n                FROM blajiluokat\n                WHERE ylaluokka_id = -1\n                ORDER BY yla_id";
    $ylaluokka_id_oliotaulu = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause);
    // Käydään läpi yläluokat:
    $rivilaskuri = 0;
    foreach ($ylaluokka_id_oliotaulu as $ylaluokka_id_olio) {
        $ylaluokkaid = $ylaluokka_id_olio->yla_id;
        // Haetaan sitten kuvien lukumäärät yläluokittain. Ensin haetaan kaikki
        // kyseisen yläluokan kuvat (siis lkm), sitten kuvat lajeittain.
        // Kaikki yläluokan kuvat:
        /*$hakulause = "SELECT DISTINCT kuvat.id
                                FROM kuvat
                                JOIN bkuvalinkit AS linkit
                                ON kuvat.id = linkit.kuva_id
                                JOIN blajiluokat
                                ON blajiluokat.id = linkit.lajiluokka_id
                                WHERE blajiluokat.ylaluokka_id = $ylaluokkaid";
        
                $kuva_lkm_taulu =
                        $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause);
        
                $kuvien_lkm = sizeof($kuva_lkm_taulu);*/
        $kuvien_lkm = bongaus_hae_albumin_kuvien_lkm($ylaluokkaid, $tietokantaolio, $omaid);
        // Haetaan lajiluokan nimi:
        $nimi = Lajiluokka::hae_lajiluokan_nimi($ylaluokkaid, $tietokantaolio, Kielet::$SUOMI);
        // Jos kuvia löytyi, jatketaan eteenpäin:
        if ($kuvien_lkm > 0) {
            // Albumin näyttöpainike: Yhdistetään submit (toissijainen)
            // ja ajax (ensisijainen) -toiminnot samaan painikkeeseen:
            $katso_pikkukuvat = Bongauspainikkeet::$NAYTA_ESIKATSELUKUVAT_VALUE;
            $onsubmit_funktionimi = "hae_esikatselukuvat";
            $onsubmit_parametrit = array($ylaluokkaid, Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_OLETUS, "\"" . Kuva::$KUVAT_BONGAUS . "\"");
            $form_maaritteet = array("method" => "post", "id" => "nayta_kuvat_bong", "action" => "{$_SERVER['PHP_SELF']}?id_lj={$ylaluokkaid}");
            $input_maaritteet = array('name' => Bongaustoimintonimet::$kuvatoiminto, 'value' => $katso_pikkukuvat, "title" => Bongauspainikkeet::$NAYTA_ESIKATSELUKUVAT_TITLE);
            try {
                $albumin_katselunappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet);
            } catch (Exception $poikkeus) {
                $albumin_katselunappi = $poikkeus->getMessage();
            }
            // Muotoillaan kuvien määrä niin, että uudet kuvat huomataan:
            /*$kuvien_lkm = "<td align='center'>$lkm</td>";
              if($uudet_lkm > 0){
                  $kuvien_lkm = "<td align='center' class='uusia_kuvia'".
                      "title='Uusia kuvia ".$uudet_lkm." kpl'>$lkm</td>";
              }*/
            $albumiHTML .= "<tr class='ylaluokkarivi'>";
            $albumiHTML .= "<td>{$nimi}</td>";
            $albumiHTML .= "<td>{$kuvien_lkm}</td>";
            $albumiHTML .= "<td colspan=2>{$albumin_katselunappi}</td>";
            $albumiHTML .= "</tr>";
            /******************************************************************/
            // Haetaan sitten lajeittain kyseiseen yläluokkaan kuuluvat kuvaat:
            // Haetaan lajiluokkien id:t:
            // KIELI PITÄÄ MYÖHEMMIN OTTAA MUKAAN!
            $kieli_id = Kielet::$SUOMI;
            $hakulause = "SELECT blajiluokat.id AS lj_id\n                        FROM blajiluokat\n                        JOIN bkuvaukset\n                        ON bkuvaukset.lajiluokka_id = blajiluokat.id\n                        WHERE blajiluokat.ylaluokka_id = {$ylaluokkaid}\n                        AND bkuvaukset.kieli = {$kieli_id}\n                        ORDER BY bkuvaukset.nimi";
            $lj_id_oliot = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause);
            // Käydään läpi jokainen yläluokan laji ja tehdään albumi jokaisesta
            // lajista (vaikka ei olisi kuvia?).
            foreach ($lj_id_oliot as $lj_id_olio) {
                $id_lj = $lj_id_olio->lj_id;
                // Kuvia voi lisätä vain lajiin, ei yläluokkaan, jotta laji
                // saadaan muistiin.
                $kuvan_lisaysnappi = "<form method='post'id='lisaa_kuvia_bong' " . "action='../bongaus/index.php?id_lj={$id_lj}'>" . "<input type='submit' name='" . Bongaustoimintonimet::$kuvatoiminto . "'" . "value='" . Bongauspainikkeet::$UUSI_KUVA_VALUE . "'/>" . "</form>";
                // Albumin näyttöpainike: Yhdistetään submit (toissijainen)
                // ja ajax (ensisijainen) -toiminnot samaan painikkeeseen:
                $katso_pikkukuvat = Bongauspainikkeet::$NAYTA_ESIKATSELUKUVAT_VALUE;
                $onsubmit_funktionimi = "hae_esikatselukuvat";
                $onsubmit_parametrit = array($id_lj, Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_OLETUS, "\"" . Kuva::$KUVAT_BONGAUS . "\"");
                $form_maaritteet = array("method" => "post", "id" => "nayta_kuvat_bong", "action" => "../bongaus/index.php?id_lj={$id_lj}");
                $input_maaritteet = array('name' => Bongaustoimintonimet::$kuvatoiminto, 'value' => $katso_pikkukuvat, "title" => Bongauspainikkeet::$NAYTA_ESIKATSELUKUVAT_TITLE);
                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 lajiluokan nimi:
                $nimi = Lajiluokka::hae_lajiluokan_nimi($id_lj, $tietokantaolio, Kielet::$SUOMI);
                // Haetaan albumin kuvien lkm:
                /*$hakulause = "SELECT DISTINCT kuvat.id
                                                FROM kuvat
                                                JOIN bkuvalinkit AS linkit
                                                ON kuvat.id = linkit.kuva_id
                                                JOIN blajiluokat
                                                ON blajiluokat.id = linkit.lajiluokka_id
                                                WHERE blajiluokat.id = $id_lj";
                
                                $kuva_lkm_taulu =
                                        $tietokantaolio->
                                            tee_OMAhaku_oliotaulukkopalautteella($hakulause);
                                $kuvien_lkm = sizeof($kuva_lkm_taulu);*/
                $kuvien_lkm = bongaus_hae_albumin_kuvien_lkm($id_lj, $tietokantaolio, $omaid);
                if ($rivilaskuri % 2 == 1) {
                    $rivi_class = "class='bongausalbumi_parillinen_rivi'";
                } else {
                    $rivi_class = "";
                }
                $albumiHTML .= "<tr " . $rivi_class . ">";
                $albumiHTML .= "<td>{$nimi}</td>";
                $albumiHTML .= "<td>{$kuvien_lkm}</td>";
                $albumiHTML .= "<td>{$albumin_katselunappi}</td>";
                $albumiHTML .= "<td>{$kuvan_lisaysnappi}</td>";
                $albumiHTML .= "</tr>";
                $rivilaskuri++;
            }
        } else {
            // Ellei kuvia ole:
            $albumiHTML .= "<tr class='ylaluokkarivi'><td>{$nimi}</td>";
            $albumiHTML .= "<td colspan=3>" . Bongaustekstit::$ilm_kuvia_ei_loytynyt . "</td></tr>";
        }
        /******************************************************************/
        /* 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 COUNT(*) AS uudet_lkm
                            FROM kuvat
                            JOIN kuva_albumi_linkit AS linkit
                            ON kuvat.id = linkit.kuva_id
                            JOIN albumit
                            ON albumit.id = linkit.albumi_id
                            WHERE (kuvat.tallennusaika_sek > ".
                                    $_SESSION['kuvat_katsottu_viimeksi']."
                            AND albumit.id = ".$alb->id.")";
        
                $hakutulos = $tietokantaolio->tee_OMAhaku($hakulause);
                if($hakutulos != false){
                    $lkmtaulukko =
                            $tietokantaolio->hae_osumarivit_olioina($hakutulos);
        
                    // Kai taulukossa aina vähintään nolla on, joten
                    // tämä tarkistus lienee tarpeeton.
                    if(sizeof($lkmtaulukko)>0){
                        $uudet_lkm = $lkmtaulukko[0]->uudet_lkm;
                    }
                }*/
        /******************************************************************/
    }
    $albumiHTML .= "</table>";
    return $albumiHTML;
}
Example #10
0
 /**
  * Tämä metodi poistaa isäntäolion poiston yhteydessä isäntäolioon
  * linkitetyt pikakommentit ja palauttaa poistettujen olioiden lukumäärän.
  * @param Tietokantaolio $tietokantaolio (täällä, koska static!)
  * @param <type> $kohde_tyyppi
  * @param <type> $kohde_id 
  */
 public static function poista_pikakommentit($tietokantaolio, $kohde_tyyppi, $kohde_id)
 {
     $poistettujen_lkm = 0;
     // Haetaan ensin kyseiset rivit ja poistetaan ne sitten
     $hakulause = "SELECT id\n                        FROM pikakommentit\n                        WHERE kohde_id={$kohde_id}\n                        AND kohde_tyyppi={$kohde_tyyppi}";
     $osumat = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause);
     foreach ($osumat as $pk_olio) {
         $taulu = "pikakommentit";
         $taulun_sarake = "id";
         $hakuarvo = $pk_olio->id;
         $palaute = $tietokantaolio->poista_rivi($taulu, $taulun_sarake, $hakuarvo);
         if ($palaute == Tietokantaolio::$HAKU_ONNISTUI) {
             $poistettujen_lkm++;
         }
     }
     return $poistettujen_lkm;
 }
 /**
  * Palauttaa valikon html:n.
  * HUOM! Listasta jätetään muokatessa pois kokonaisuudet, jotka on
  * kyseisen luokan aliluokkia (muuten tulee tosi jänniä sotkuja).
  * Lisäksi myös kokonaisuus itse pitää poistaa listasta. (Nämä koskevat
  * muokkausta. Uuden luomisessa näitä ongelmia ei ole. Kaikki käyvät uudelle
  * yläkokonaisuuksiksi)
  *
  *
  * @param <type> $id_kokon
  * @param Tietokantaolio $tietokantaolio
  * @param <type> $ylakokonaisuuden_id_kokon
  * @param <type> $oppiaine
  * @param <type> $kieli_id
  * @param <type> $taso
  * @param <type> $uusi
  * @param <type> $omaid tarvitaan oliopuun hakua varten (muutos 13.12.2011)
  * @param Kokonaisuuskontrolleri $kokonaisuuskontrolleri tarvitaan oliopuun 
  * haussa myös.
  * @return <type>
  */
 function nayta_ylakokonaisuusvalikko($id_kokon, $tietokantaolio, &$ylakokonaisuuden_id_kokon, $oppiaine, $kieli_id, $taso, $uusi, $omaid, $kokonaisuuskontrolleri)
 {
     // Haetaan otsikot ja id:t:
     $hakulause = "SELECT id,otsikko\n                    FROM kokonaisuudet\n                    WHERE oppiaine={$oppiaine}\n                    AND taso = {$taso}\n                    AND kieli = {$kieli_id}\n                    ORDER BY otsikko";
     /*
                         AND (nakyvyys = ".Nakyvyys::$JULKINEN.
                                 " OR henkilo_id = $omaid)";*/
     $osumat = $tietokantaolio->tee_omahaku_oliotaulukkopalautteella($hakulause);
     $sallitut = array();
     // Sallitut valintaarvot
     // Muokkaustilassa poistetaan osumista kokonaisuusalipuu, ettei
     // viittaukset mene sekaisin:
     if (!$uusi) {
         $ekan_otsikko = "";
         $kokonaisuudet = array();
         $otsikkotaso = Kokonaisuusolio::$otsikkotaso_oletus;
         /* Ei tarvita  */
         $alipuu = $kokonaisuuskontrolleri->hae_kokonaisuusoliopuu($kokonaisuudet, $ekan_otsikko, $otsikkotaso, $kieli_id, $oppiaine, $taso, $id_kokon, $tietokantaolio, $omaid);
         foreach ($osumat as $ehdokas) {
             $ehdokas_sallittu = true;
             foreach ($alipuu as $kielletty) {
                 if ($ehdokas->id == $kielletty->get_id()) {
                     $ehdokas_sallittu = false;
                 }
             }
             /* Tarkistetaan vielä, ettei itse juurikokonaisuus ole mukana
              * (tehdyn muutoksen jälkeen juurikok. ei ole enää mukana
              * alipuussa): */
             if ($ehdokas->id == $id_kokon) {
                 $ehdokas_sallittu = false;
             }
             /* Ellei löytynyt kiellettyjen listalta, lisätään valikkoon: */
             if ($ehdokas_sallittu) {
                 array_push($sallitut, $ehdokas);
             }
         }
     } else {
         // Uudelle kokonaisuudelle yläkokonaisuuden valinta on vapaa!
         $sallitut = $osumat;
     }
     // Luodaan taulukot tyhjine vaihtoehtoineen (jolloin ei yläkokonaisuutta):
     $arvot = array(-1);
     $nimet = array(Tekstit::$kokonlomake_ei_ylatasoa);
     // Viedään otsikot ja vastaavat arvot taulukoihin:
     if (sizeof($sallitut) != 0) {
         foreach ($sallitut as $kokonaisuus) {
             array_push($arvot, $kokonaisuus->id);
             array_push($nimet, $kokonaisuus->otsikko);
         }
     }
     $valikkohtml = "";
     try {
         $name_arvo = "ylakokonaisuuden_id_kokon";
         if ($uusi) {
             // Oletuksena viimeksi aktiivisen kokonaisuuden alle:
             $oletusvalinta_arvo = $id_kokon;
         } else {
             $oletusvalinta_arvo = $ylakokonaisuuden_id_kokon;
         }
         $otsikko = Tekstit::$ylakokonaisuusvalikko_otsikko;
         $valikkohtml .= Html::luo_pudotusvalikko($arvot, $nimet, $name_arvo, $oletusvalinta_arvo, $otsikko);
     } catch (Exception $poikkeus) {
         $valikkohtml = Tekstit::$virheilm_ylakokonaisuusvalikko . " (" . $poikkeus->getMessage() . ")";
     }
     return $valikkohtml;
 }
Example #12
0
 /**
  * Tutkii, onko parametrin mukaisessa tietokantataulussa kyseistä arvoa
  * kyseisessä sarakkeessa. Jos on vähintää yksi, palauttaa arvon true, 
  * muuten false.
  * 
  * Tätä käytetään muun muassa unique-arvojen tarkistamiseen ennen
  * tietokantaan tallentamista (esim. kayttajatunnus).
  * 
  * @param type $taulunimi
  * @param type $sarakenimi
  * @param type $arvo    // ARvo, jonka olemassaoloa tutkitaan.
  * @param Tietokantaolio $tietokantaolio
  */
 static function arvo_jo_kaytossa($taulunimi, $sarakenimi, $arvo, $tietokantaolio)
 {
     $palaute = true;
     $tulos = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $arvo);
     if ($tulos == Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
         $palaute = false;
     }
     return $palaute;
 }
Example #13
0
/**
 * Palauttaa true, jos henkilö on alaikäinen tai yli-ikäinen (!), muuten false.
 * @param <type> $id Kysyttävän henkilön tunniste.
 * @param Tietokantaolio $tietokantaolio
 */
function on_alaikainen_tai_elakkeella($id, $tietokantaolio)
{
    $alaikainen = true;
    $kayttaja = $tietokantaolio->hae_eka_osuma_oliona("henkilot", "id", $id);
    if ($kayttaja !== Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
        $svuosi = $kayttaja->syntymavuosi;
        $skk = $kayttaja->syntymakk;
        $spaiva = $kayttaja->syntymapaiva;
        if (on_ialtaan_vahintaan(18, $spaiva, $skk, $svuosi) && !on_ialtaan_vahintaan(65, $spaiva, $skk, $svuosi)) {
            $alaikainen = false;
        }
    }
    return $alaikainen;
}
Example #14
0
 /**
  * Tarkistetaan varsinaisen lisävaltuuden olemassaolo
  * henkilo_id:n, oliotyypin ja olio_id:n perusteella (staattinen metodi).
  * <p>
  * Huomaa, että tallennettaessa uutta lisävaltuutta käytetään
  * ei-staattista metodia <p>tarkista_lisavaltuuden_olemassaolo()</p>! Metodit ovat
  * hiukan erilaisia! 
  * </p> 
  * 
  * <p>
  * Palauttaa lisävaltuuden löytyessä Lisävaltuus-luokan olion. Muussa 
  * tapauksessa palauttaa arvon Lisavaltuudet::$EI_LISAVALTUUKSIA (kun
  * arvot ovat kunnolla määriteltyjä). Jos vähintään yksi arvoista
  * henkilo_id, oliotyyppi ja olio_id on $MUUTTUJAA_EI_MAARITELTY,
  * palautetaan arvo Lisavaltuudet::$VIRHE.
  * </p> 
  * 
  * <p>
  * Tietokannasta saa löytyä korkeintaan kaksi lisävaltuutta: yleinen ja 
  * kohdetta koskeva. Tässä tapauksessa <i>korkeampi valtuustaso</i> palautetaan.
  * </p> 
  * 
  * @param type $olio_id
  * @param type $oliotyyppi
  * @param type $henkilo_id Jolle lisävaltuus myönnetään.
  * @param type $omistaja_id Olion omistaja
  * @param Tietokantaolio $tietokantaolio
  * 
  * @return Palauttaa joko olemassaolevan Lisavaltuus-luokan olion tai
  * joko arvon $EI_LISAVALTUUKSIA tai $VIRHE. Viimeksi mainittu ei kerro
  * mitään siitä, onko lisävaltuutta jo olemassa!
  */
 public static function tarkista_lisavaltuudet_tietokannasta($olio_id, $oliotyyppi, $henkilo_id, $omistaja_id, $tietokantaolio)
 {
     $palaute = Lisavaltuudet::$VIRHE;
     $valtuusolio_yl = "";
     $valtuusolio_erit = "";
     $valtuus_yl = Lisavaltuudet::$EI_LISAVALTUUKSIA;
     $valtuus_erit = Lisavaltuudet::$EI_LISAVALTUUKSIA;
     // HUOM! Valtuuksia ei saa olla kuin yksi yhtä
     // käyttäjä-olio -paria kohti! Sitä ei estetä tietokantatasolla!
     if ($olio_id != Lisavaltuudet::$MUUTTUJAA_EI_MAARITELTY && $henkilo_id != Lisavaltuudet::$MUUTTUJAA_EI_MAARITELTY && $oliotyyppi != Lisavaltuudet::$MUUTTUJAA_EI_MAARITELTY) {
         // Tarkistetaan ensin globaalin (omistajan kaikki oliot) lisäoikeuden
         // olemassaolo. Täällä tarvitaan linkki omistajaan, jottei lisä-
         // oikeuksia ihan kaikkiin olioihin myönnetä.
         $hakulause = "SELECT id FROM " . Lisavaltuudet::$taulunimi . " WHERE " . Lisavaltuudet::$sarakenimi_oliotyyppi . "=" . Lisavaltuudet::$kaikki_omistajan_oliot . " AND " . Lisavaltuudet::$sarakenimi_olio_id . "=" . Lisavaltuudet::$kaikki_omistajan_oliot . " AND " . Lisavaltuudet::$sarakenimi_omistaja_id . "=" . $omistaja_id . " AND " . Lisavaltuudet::$sarakenimi_henkilo_id . "=" . $henkilo_id;
         $osumaoliot = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause);
         // Jos lisävaltuus löytyi:
         if (sizeof($osumaoliot) > 0) {
             $valtuusolio_yl = new Lisavaltuudet($osumaoliot[0]->id, $tietokantaolio);
             $valtuus_yl = $valtuusolio_yl->get_valtuusarvo();
         }
         // Sitten etsitään tarkasti olioon viittaavaa lisäoikeutta:
         $hakulause = "SELECT id FROM " . Lisavaltuudet::$taulunimi . " WHERE " . Lisavaltuudet::$sarakenimi_oliotyyppi . "=" . $oliotyyppi . " AND " . Lisavaltuudet::$sarakenimi_olio_id . "=" . $olio_id . " AND " . Lisavaltuudet::$sarakenimi_henkilo_id . "=" . $henkilo_id;
         $osumaoliot = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause);
         // Jos lisävaltuus löytyi:
         if (sizeof($osumaoliot) > 0) {
             $valtuusolio_erit = new Lisavaltuudet($osumaoliot[0]->id, $tietokantaolio);
             $valtuus_erit = $valtuusolio_erit->get_valtuusarvo();
         }
         // Palaute tarkasti:
         if ($valtuus_erit > $valtuus_yl) {
             $palaute = $valtuusolio_erit;
         } else {
             if ($valtuusolio_yl instanceof Lisavaltuudet) {
                 $palaute = $valtuusolio_yl;
             } else {
                 $palaute = Lisavaltuudet::$EI_LISAVALTUUKSIA;
             }
         }
     }
     return $palaute;
 }
 require_once '../kayttajahallinta/Kayttajanakymat.php';
 require_once '../kayttajahallinta/Kayttajakontrolleri.php';
 require_once '../asetukset/tietokantayhteys.php';
 require_once '../yhteiset/php_yhteiset.php';
 require_once '../kuvatoiminnot/php_kuvametodit.php';
 require_once '../php_yleinen/Tietokantaolio.php';
 require_once '../php_yleinen/html.php';
 require_once '../viestit/Viesti.php';
 require_once '../yhteiset/Parametrit.php';
 require_once '../yhteiset/Palaute.php';
 require_once '../pikakommentointi/Pikakommenttitekstit.php';
 require_once '../pikakommentointi/Pikakommentti.php';
 require_once '../bongaus/lajiluokat/Kuvaus.php';
 require_once '../bongaus/lajiluokat/Lajiluokka.php';
 // Yhdistetään tietokantaan:
 $tietokantaolio = new Tietokantaolio($dbtyyppi, $dbhost, $dbuser, $dbsalis);
 //$tietokantaolio->yhdista_tietokantaan($dbnimi);
 $tietokantaolio->yhdista_tietokantaan_uusi_yhteys($dbnimi);
 /********************************************************************/
 // Tarkistetaan, ettei käyttäjää ole potkaistu tai itse kirjautunut ulos:
 // Tämä voisi olla aiemmin, mutta en halunnut rasittaa liian usein
 // 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)) {
/**
 * Palauttaa yhden keskustelun html-koodin halutulla tavalla, eli joko
 * näytetään kaikki kommentit tai vain osa ($kiinni = true).
 *
 * @param int $kesk_id Keskustelun id eli aloitusviestin id = kommenttien
 * emo_id.
 * @param bool $auki totuusarvo true, jos kaikki kommentit näytetään, false -
 * vain osa ($kiinni_lkm kappaletta vanhoja + uudet).
 * @param int $kiinni_lkm näin monta vanhaa viestiä näytetään korkeintaan,
 * kun keskustelu on "kiinni"-tilassa.
 * @param int $aikaraja uusien viestien alkuaika sekunteina. Tätä vanhempia
 * näytetään vain $kiinni_lkm kpl.
 * @param Tietokantaolio $tietokantaolio
 * @param bool $kuningas
 *  @param int $oma_id Käyttäjän om id.
 * @return string Palauttaa keskustelun html:n ilman alku- ja päätedivtageja
 * (helpottaa näyttötyylin muuttamista ajaxin avulla).
 */
function hae_keskusteluVANHA($kesk_id, $auki, $kiinni_lkm, $aikaraja, $tietokantaolio, $kuningas, $oma_id)
{
    $palaute = "ei_onnistunut";
    $mj = "";
    // html-koodi
    $on_piilotettavia = false;
    // Näytetäänkö kaikki kommentit?
    // Haetaan ensin keskustelun aloitusviesti:
    $aloitusviesti = $tietokantaolio->hae_eka_osuma_oliona("viestit", "id", $kesk_id);
    // Ellei tämä onnistunut, ei tehdä mitään. Muuten jatketaan.
    if ($aloitusviesti != "tuntematon") {
        // Haetaan kaikki kommentit (joista vain osa näytetään, mutta
        // on hyvä tietää kommenttien kokonaislkm):
        $hakulause1 = "SELECT viestit.*\n                    FROM viestit\n                    WHERE emo_id = '" . $kesk_id . "'\n                    ORDER by tallennushetki_sek ASC";
        $viestihaku1 = $tietokantaolio->tee_OMAhaku($hakulause1);
        $viestitaulu1 = $tietokantaolio->hae_osumarivit_olioina($viestihaku1);
        $kommenttien_lkm = sizeof($viestitaulu1);
        // Muodostetaan uusi taulukko, johon kopioidaan aloitusviesti ja
        // sopiva määrä kommentteja oikeassa järjestyksessä:
        $kesk_viestit = array();
        array_push($kesk_viestit, $aloitusviesti);
        // Jos näytetään kaikki, kopsataan kaikki. Muuten vain sopiva osa.
        if ($auki) {
            foreach ($viestitaulu1 as $v) {
                array_push($kesk_viestit, $v);
            }
        } else {
            // Ei näytetä kaikkia:
            // Haetaan ensin ensimmäisen uuden viestin sijainnin indeksin:
            $eka_uusi_taulukkoid = -1;
            for ($i = 0; $i < sizeof($viestitaulu1); $i++) {
                $v = $viestitaulu1[$i];
                // Otetaan id ylös vain 1. kerran:
                if ($v->tallennushetki_sek > $aikaraja && $eka_uusi_taulukkoid == -1) {
                    $eka_uusi_taulukkoid = $i;
                }
            }
            // Sitten päästään kopioimaan kommentteja:
            $alkuindeksi = 0;
            // Jos vanhoja enemmän kuin näytetään:
            if ($eka_uusi_taulukkoid > $kiinni_lkm) {
                $alkuindeksi = $eka_uusi_taulukkoid - $kiinni_lkm;
                $on_piilotettavia = true;
            }
            for ($i = $alkuindeksi; $i < sizeof($viestitaulu1); $i++) {
                $v2 = $viestitaulu1[$i];
                array_push($kesk_viestit, $v2);
            }
        }
        // Nyt meillä on aloitusviesti ja kommentit samassa taulukossa
        // oikeassa järjestyksessä ja päästään muotoilemaan viestien html:ää.
        for ($i = 0; $i < sizeof($kesk_viestit); $i++) {
            $nyk_olio = $kesk_viestit[$i];
            // Haetaan lähettäjän tiedot:
            $lahettaja = $tietokantaolio->hae_eka_osuma_oliona("henkilot", "id", $nyk_olio->henkilo_id);
            $on_valintaruutu = false;
            // Muokkauksen/poiston salliminen. Kuninkaalla kaikki valta.
            if ($lahettaja !== "tuntematon" && $lahettaja->id === $oma_id && $nyk_olio->kommenttien_lkm < '1' || $kuningas) {
                // Valintaruutu sisältää vastaavan
                // tietokantarivin id:n, jotta se valittu rivi löydetään.
                $on_valintaruutu = true;
            }
            // Muotoillaan lähettäjä mahdollistaen sen, että sitä ei löytynyt.
            if ($lahettaja !== "tuntematon") {
                $lahettaja = $lahettaja->etunimi;
            }
            // Luodaan uusi viestiolio (=taulukon eka viesti)):
            if ($i == 0) {
                $viesti = new Viesti($nyk_olio, false);
            } else {
                $viesti = new Viesti($nyk_olio, true);
            }
            $mj .= $viesti->palauta_html($on_valintaruutu, $lahettaja, $kommenttien_lkm, $on_piilotettavia, $auki);
        }
        $palaute = $mj;
    }
    return $palaute;
}
/**
 * Kirjaa käyttäjän ulos hänen niin halutessaan tai pakolla kun
 * aikaa on kulunut laiskasti tietyn ajan verran. Sopii koodin alkuun, koska
 * lukee tarvitsemansa kirjastot. Yhdistää tietokantaan ja kutsuu sitten
 * kirjaa_ulos()-metodia. Palauttaa merkkijonon "Istunto aikakatkaistu".
 *
 * @param int $kansiotaso Ilmoittaa kutsuvan ohjelmanosan kansiotason eli
 * esim. luku 1 tarkoittaa, että kutsuva ohjelmanosa on ylimmällä tasolla eli
 * samalla kuin vaikkapa alku.php. Mitä syvemmällä kansioissa ollaan, sitä
 * suurempi on tason nro. Tämän avulla osataan hakea tarvittavat tiedostot
 * toimintoja varten.
 */
function toteuta_passiivinen_ulos_toiminto($kansiotaso)
{
    // Muokataan tiedosto-osoitteet:
    $alku = "";
    if (is_numeric($kansiotaso) && $kansiotaso > 1) {
        for ($i = 0; $i < $kansiotaso - 1; $i++) {
            $alku .= "../";
        }
    }
    require_once $alku . 'php_yleinen/php_yleismetodit.php';
    require_once $alku . 'asetukset/tietokantayhteys.php';
    require_once $alku . 'yhteiset/php_yhteiset.php';
    require_once $alku . 'asetukset/valtuudet.php';
    require_once $alku . 'asetukset/yleinen.php';
    require_once $alku . 'kayttajahallinta/php_kayttajahallintametodit.php';
    require_once $alku . 'php_yleinen/Tietokantaolio.php';
    // Yhdistetään tietokantaan:
    $tietokantaolio = new Tietokantaolio($dbtyyppi, $dbhost, $dbuser, $dbsalis);
    $tietokantaolio->yhdista_tietokantaan($dbnimi);
    // Tämä sulkeen tietokannan myös:
    kirjaa_ulos($tietokantaolio);
    return "Istunto vanhentunut!";
    exit;
}
Example #18
0
 /**
  * Hakee tietyn kauden havainnot tietokannasta ja palauttaa ne 
  * (Havainto-luokan oliot) taulukossa.
  * Yläluokka ja kieli ja näyttötapa saadaan parametrioliosta.
  * 
  * <p>Vaativuus: Yleisen haun jälkeen jokaisen havainnon luonnin yhteydessä
  * tehdään tietokantahaku. Jos havaintoja on esim. tuhansia, voi tämä
  * viedä resurssia aika paljon. Tämä ei oikeastaan olisi tarpeellista, koska
  * havainto-olion tiedot on jo kertaalleen haettu. Pitäisikö havainnon
  * luomiseen tehdä vaihtoehto "älä koske tietokantaan?". Ainakin jos alkaa
  * tökkimään.</p>
  * 
  * @param \Tietokantaolio $tietokantaolio 
  * @param \Parametrit $parametriolio 
  */
 public static function hae_soveliaat($tietokantaolio, $parametriolio)
 {
     // Muotoillaan yläluokan lause:
     $ylaluokka_id = $parametriolio->ylaluokka_id_lj;
     if (isset($ylaluokka_id) && is_numeric($ylaluokka_id) && $ylaluokka_id > 0) {
         $ylaluokkaehto = "blajiluokat.ylaluokka_id = {$ylaluokka_id}";
     } else {
         $ylaluokkaehto = "blajiluokat.ylaluokka_id <> -1";
     }
     // Tarkistetaan, haetaanko vuoden, määrän tai jonkin muun ehdon mukaan:
     $max_lkm = $parametriolio->max_lkm_hav;
     if ($parametriolio->havaintojen_nayttomoodi == Havaintojen_nayttomoodi::$nayta_uusimmat) {
         $ehtolause = "WHERE (bkuvaukset.kieli= " . Kielet::$SUOMI . "\n                        AND {$ylaluokkaehto})\n                        ORDER by vuosi DESC, kk DESC, paiva DESC, laji\n                        LIMIT " . $max_lkm;
         $nayttoilmoitus = $parametriolio->max_lkm_hav . Bongaustekstit::$max_nayttoilm_bongaussivu1;
     } else {
         if ($parametriolio->havaintojen_nayttomoodi == Havaintojen_nayttomoodi::$nayta_vuoden_mukaan) {
             $ehtolause = "WHERE (bkuvaukset.kieli= " . Kielet::$SUOMI . "\n                        AND {$ylaluokkaehto}\n                        AND vuosi = {$parametriolio->nayttovuosi_hav})\n                        ORDER by vuosi DESC, kk DESC, paiva DESC, laji";
             $nayttoilmoitus = $parametriolio->nayttovuosi_hav;
         } else {
             $ehtolause = "WHERE (bkuvaukset.kieli= " . Kielet::$SUOMI . "\n                        AND {$ylaluokkaehto})\n                        ORDER by vuosi DESC, kk DESC, paiva DESC, laji\n                        LIMIT 10";
             $nayttoilmoitus = "???";
         }
     }
     $hakulause = "SELECT \n                        bhavainnot.id AS hav_id,\n                        bkuvaukset.nimi AS laji,\n                        bhavainnot.vuosi AS vuosi,\n                        bhavainnot.kk AS kk,\n                        bhavainnot.paiva AS paiva,\n                        bhavainnot.henkilo_id AS henkilo_id\n                FROM blajiluokat\n                JOIN bkuvaukset\n                ON bkuvaukset.lajiluokka_id = blajiluokat.id\n                JOIN bhavainnot\n                ON bhavainnot.lajiluokka_id = blajiluokat.id\n                {$ehtolause}\n               ";
     $havaintohaku = $tietokantaolio->tee_OMAhaku($hakulause);
     $havaintotaulu_kaikki = $tietokantaolio->hae_osumarivit_olioina($havaintohaku);
     //============= SUODATUS ALKU ======================================
     $havaintotaulu = array();
     $suodattimet = Suodatin::hae_suodattimet($parametriolio->omaid, $tietokantaolio);
     foreach ($havaintotaulu_kaikki as $osuma) {
         $henkilo_id = $osuma->henkilo_id;
         if (!Suodatin::henkilo_suodatetaan_kevyt($henkilo_id, $parametriolio->omaid, $suodattimet)) {
             array_push($havaintotaulu, $osuma);
         }
     }
     //============= SUODATUS LOPPU =====================================
     $oliotaulu = array();
     // Tämä sisältää Havainto-oliot.
     if (!empty($havaintotaulu)) {
         foreach ($havaintotaulu as $tk_hav) {
             $uusi = new Havainto($tietokantaolio, $tk_hav->hav_id);
             if ($uusi->olio_loytyi_tietokannasta) {
                 array_push($oliotaulu, $uusi);
             }
         }
     }
     return $oliotaulu;
 }
Example #19
0
 /**
  * Hakee sen olion tietokannasta, johon parametrina annettu arvo (raaka-id) 
  * viittaa ja palauttaa sen oikeantyyppisen luokan oliona 
  * (Kokonaisuus, Tehtava, Ratkaisu,...).
  * 
  * Palauttaa yllä mainitun tyyppisen olion, jonka tietojen löytymisen 
  * tietokannasta tarkistetaan muuttujan "olio_loytyi_tietokannasta"-muuttujan 
  * avulla. Ellei parametri ole hyvä, palautetaan arvo
  * $MUUTTUJAA_EI_MAARITELTY.
  * 
  * 
  * @param type $id_raaka
  * @param type
  * @param Tietokantaolio $tietokantaolio
  * @return \Ratkaisu
  */
 public static function hae_viittausolio_id_raaka($id_raaka, $tietokantaolio)
 {
     $olio_id = Elementti::irrota_elem_olion_id($id_raaka);
     $oliotyyppi = Elementti::irrota_elem_olion_tyyppi($id_raaka);
     if ($oliotyyppi === Oliotyyppi::$KOKONAISUUS) {
         $taulunimi = Kokonaisuusolio::$taulunimi;
         $sarakenimi = Kokonaisuusolio::$SARAKENIMI_ID;
         $hakuarvo = $olio_id;
         $osuma = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
         if ($osuma == Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
             $id = Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY;
         } else {
             $id = $osuma->id;
         }
         $palautettava = new Kokonaisuusolio($id, $tietokantaolio);
     } else {
         if ($oliotyyppi === Oliotyyppi::$TEHTAVA) {
             $taulunimi = Tehtava::$taulunimi;
             $sarakenimi = Tehtava::$SARAKENIMI_ID;
             $hakuarvo = $olio_id;
             $osuma = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
             if ($osuma == Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
                 $id = Tehtava::$MUUTTUJAA_EI_MAARITELTY;
             } else {
                 $id = $osuma->id;
             }
             $palautettava = new Tehtava($id, $tietokantaolio);
         } else {
             if ($oliotyyppi === Oliotyyppi::$RATKAISU) {
                 $taulunimi = Ratkaisu::$taulunimi;
                 $sarakenimi = Ratkaisu::$SARAKENIMI_ID;
                 $hakuarvo = $olio_id;
                 $osuma = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
                 if ($osuma == Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
                     $id = Ratkaisu::$MUUTTUJAA_EI_MAARITELTY;
                 } else {
                     $id = $osuma->id;
                 }
                 $palautettava = new Ratkaisu($id, $tietokantaolio);
             } else {
                 $palautettava = Elementti::$MUUTTUJAA_EI_MAARITELTY;
             }
         }
     }
     return $palautettava;
 }
Example #20
0
 /**
  * Palauttaa henkilön valtuusarvon tai arvon $EI_LOYTYNYT_TIETOKANNASTA,
  * ellei mitään löydy.
  * @param type $id
  * @param Tietokantaolio $tietokantaolio 
  */
 public static function hae_henkilon_valtuusarvo($id, $tietokantaolio)
 {
     $palaute = Henkilo::$EI_LOYTYNYT_TIETOKANNASTA;
     $osuma = $tietokantaolio->hae_eka_osuma_taulukkona(Henkilo::$taulunimi, Henkilo::$SARAKENIMI_ID, $id);
     if (!empty($osuma)) {
         $palaute = $osuma[Henkilo::$sarakenimi_valtuudet];
     }
     return $palaute;
 }
Example #21
0
require_once '../../kayttajahallinta/Kayttajakontrolleri.php';
require_once '../../kayttajahallinta/Kayttajanakymat.php';
require_once '../../kayttajahallinta/php_kayttajahallintametodit.php';
require_once '../../kayttajahallinta/testaus/Kayttajatestaus.php';
require_once '../../kayttajahallinta/Kayttajatekstit.php';
require_once '../../sivukoodit.php';
require_once '../Kuva.php';
require_once '../Kuvakontrolleri.php';
require_once '../Kuvalinkki.php';
require_once '../Kuvanakymat.php';
require_once '../Tekstit.php';
require_once 'testikooste_kuvat.php';
require_once 'Testiapu_kuvat.php';
require_once '../Kuva.php';
// Valmistellaan tietokantayhteys testejä varten:
$tietokantaolio = new Tietokantaolio($dbtyyppi, $dbhost, $dbuser, $dbsalis);
$tietokantaolio->yhdista_tietokantaan($dbnimi);
//=============================================================================
// Kaikki testit yhteen:
$palautteet = array();
array_push($palautteet, toteuta_kuvatestit($tietokantaolio));
// Kootaan virheilmoitukset peräkkäin omaan muuttujaan ja toiseen muuttujaan
// otsikot ja sisällöt niin, että otsikko aina edeltää sisältöä.
$virheilmoitukset = "";
$sisalto = "";
foreach ($palautteet as $testipalaute) {
    $virheilmoitukset .= $testipalaute->get_virheilmoitukset() . "<br />";
    $sisalto .= "============================================================================<br />" . "============================================================================" . "<h2 style='color:blue'>" . $testipalaute->get_otsikko() . "</h2>" . $testipalaute->get_sisalto();
}
//$otsikko = $tulokset[0];
$paaotsikko = "<h1>Testataan opinnot.net-sivuston kuvatoimintoihin\n                liittyvi&auml;luokkia ja metodeita</h1>";
    } else {
        $kayttajaid = $_REQUEST['kayttajaid'];
    }
    /*$suoritukset = <<<POSSU
      <form align='center' method='post' action='{$_SERVER['PHP_SELF']}'>
      Liikkujan $etunimi $sukunimi suoritukset:
      <input type="submit" name="toiminta"
      value="N&auml;yt&auml;a omat suoritukset" /></form>
      POSSU;*/
    $suoritukset = '';
    // Jos näytetään omat suoritukset:
    if ($nayta_omat) {
        $suoritukset .= "Omat suoritukset:<br />";
    } else {
        $painike = <<<HASSUTAPA
                    <button type='button'
                    onclick="toteutaAJAX('suoritus_kyselyt.php',
                    'omaid={$omaid}','reagoi','post', 'text')">
                    N&auml;yt&auml; omat suoritukset
                    </button>
HASSUTAPA;
        $suoritukset .= $painike . " K&auml;ytt&auml;j&auml;n {$etunimi} {$sukunimi} suoritukset: ";
    }
    // Yhdistetään tietokantaan:
    $tietokantaolio = new Tietokantaolio($dbtyyppi, $dbhost, $dbuser, $dbsalis);
    // Avataan uusi yhteys:
    $tietokantaolio->yhdista_tietokantaan_uusi_yhteys($dbnimi);
    $suoritukset .= hae_suoritukset($tietokantaolio, $kayttajaid, $nayta_omat, $omaid);
    echo $kuvaus = $suoritukset;
    $tietokantaolio->sulje_tietokanta($dbnimi);
}
Example #23
0
 /**
  * Tietokannasta etsitään kaikki suodattimet, joiden omistaja_id TAI 
  * vastapuoli_id on parametrina annettu käyttäjän id. Palautetaan
  * taulukko, jossa löydetyt Suodatin-luokan oliot. Taulukko on tyhjä, ellei
  * yhtään suodatinta löydy.
  * 
  * @param type $omaid
  * @param Tietokantaolio $tietokantaolio
  * @return boolean
  */
 public static function hae_suodattimet($omaid, $tietokantaolio)
 {
     $suodattimet = array();
     $hakulause = "SELECT id FROM " . Suodatin::$taulunimi . " WHERE " . Suodatin::$sarakenimi_omistaja_id . "=" . $omaid . " OR " . Suodatin::$sarakenimi_vastapuoli_id . "=" . $omaid;
     $osumaoliot = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause);
     // Taulukkoon löydetyt:
     $laskuri = 0;
     foreach ($osumaoliot as $osuma) {
         $osuma = new Suodatin($osumaoliot[$laskuri]->id, $tietokantaolio);
         if ($osuma->olio_loytyi_tietokannasta) {
             array_push($suodattimet, $osuma);
         }
         $laskuri++;
     }
     return $suodattimet;
 }
Example #24
0
 /**
  * 
  * Hakee yhteen kokonaisuuteen (id_kokon) liittyvät julkiset tehtävät 
  * Tehtava-luokan olioina tietokannasta. Palauttaa aina taulukon, joka voi olla
  * tyhjä.
  * 
  * Huom: täällä haetaan vain julkiset tehtävät ja tätä kannattaa lähinnä
  * käyttää silloin, kun käyttäjä ei ole kirjautunut.
  * 
  * Tietokannasta tehdään haku jokaisen tehtävän kohdalla. Jos tuntuu
  * aiheuttavan hitautta, voi tiedot hakea kerralla ja poimia
  * olioille tiedot tietokantaosumataulukosta.
  * 
  * @param type $id_kokon Sen kokonaisuuden id, johon tehtävät kuuluvat.
  * @param Tietokantaolio $tietokantaolio
  * @return array
  */
 static function hae_kokonaisuuden_julkiset_tehtavat($id_kokon, $tietokantaolio)
 {
     $tehtavat = array();
     /* Haetaan tehtävät: */
     $hakulause = "SELECT " . Tehtava::$SARAKENIMI_ID . " " . " FROM " . Tehtava::$taulunimi . " " . " WHERE " . Tehtava::$sarakenimi_kokon_id . " = " . $id_kokon . " AND " . Tehtava::$sarakenimi_nakyvyys . "=" . Nakyvyys::$JULKINEN . " ORDER BY vaikeustaso, otsikko";
     /* Palauttaa taulukon, joka on tyhjä, ellei mitään löytynyt: */
     $osumat = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause);
     foreach ($osumat as $osuma) {
         $id = $osuma->id;
         $teht = new Tehtava($id, $tietokantaolio);
         if ($teht->olio_loytyi_tietokannasta) {
             array_push($tehtavat, $teht);
         }
     }
     return $tehtavat;
 }
/**
 * Tallentaa valtuusmuutoksen ja antaa onnistumista kuvaavan palautteen, joka
 * on "onnistui", jos tallennus onnistui.
 *
 * @param int $henkilo_id
 * @param int $valtuudet
 * @param Tietokantaolio $tietokantaolio
 */
function tallenna_valtuusmuutos($henkilo_id, $valtuudet, $tietokantaolio)
{
    $onnistu = false;
    $muutossarakkeet = array("valtuudet");
    $muutosarvot = array($valtuudet);
    $taulu = "henkilot";
    $ehtosarake = "id";
    $ehtoarvo = $henkilo_id;
    $max_muutosrivilkm = 1;
    $tietokantaolio->tee_UPDATEhaku($taulu, $muutossarakkeet, $muutosarvot, $ehtosarake, $ehtoarvo, $max_muutosrivilkm);
    // Tarkistetaan muutettujen rivien lkm:
    if (mysql_affected_rows() == 1) {
        $onnistu = "onnistui";
    } else {
        $onnistu = "Muutoksia ei tallennettu! Joko tietoja ei ole\n            muutettu tai tapahtui jokin virhe (esim. nettiyhteydess&auml;).";
    }
    return $onnistu;
}
/**
 * Poistaa yhden tai useamman tietueen tietokannasta. Poistettavien
 * tunnisteet (esim. id) annetaan parametritaulukossa.
 *
 * @param string $tunnistesarakenimi Sarakkeen nimi, jota vastaavasta
 * tietokantasarakkeesta tunnistetta etsitään.
 * @param array $valinnat
 * @param Tietokantaolio $tietokantaolio
 * @param string $taulun_nimi Sen taulun nimi, josta tietueet poistetaan.
 * @return string Palauttaa viestin suorituksen onnistumisesta, joka
 * näytetään käyttäjälle.
 */
function poista_tietueet($tunnistesarakenimi, &$valinnat, $tietokantaolio, $taulun_nimi)
{
    $vastaus = '';
    $lkm = 0;
    if (!isset($valinnat)) {
        $vastaus = "Poisto ep&auml;onnistui!\n                    Valintataulukko on m&auml;&auml;rittelem&auml;t&ouml;n";
    } else {
        if ($valinnat == "" || sizeof($valinnat) == 0) {
            $vastaus = "Poisto ep&auml;onnistui!\n                    Yht&auml;&auml;n valintaa ei l&ouml;ytynyt!";
        } else {
            foreach ($valinnat as $id) {
                /********************kerkkasten erikoistoiminto********************/
                $emoidkysely = "SELECT emo_id\n                            FROM viestit\n                            WHERE id = '" . $id . "'\n                            AND taso = '2'";
                $emoidhaku = $tietokantaolio->tee_OMAhaku($emoidkysely);
                $emooliotaulu = $tietokantaolio->hae_osumarivit_olioina($emoidhaku);
                if (sizeof($emooliotaulu) > 0) {
                    $emoid = $emooliotaulu[0]->emo_id;
                    if (isset($emoid)) {
                        muuta_kommenttien_lkm(-1, $emoid, $tietokantaolio);
                    }
                }
                /******************************************************************/
                // poista_rivi poistaa korkeintaan yhden tietueen (rajoitettu).
                $poisto = $tietokantaolio->poista_rivi($taulun_nimi, $tunnistesarakenimi, $id);
                if ($poisto == "onnistui") {
                    $lkm++;
                }
            }
            $vastaus = "Tietueita poistettiin onnistuneesti " . $lkm . " kpl.";
        }
    }
    return $vastaus;
}
Example #27
0
require_once 'yhteiset/php_yhteiset.php';
require_once 'php_yleinen/perustus/Perustustekstit.php';
require_once 'php_yleinen/perustus/Ilmoitus2.php';
require_once 'php_yleinen/perustus/Tietokantarivi.php';
require_once 'php_yleinen/perustus/Tietokantasolu.php';
require_once 'php_yleinen/perustus/Pohja.php';
require_once 'php_yleinen/perustus/Kontrolleripohja2.php';
require_once 'php_yleinen/perustus/Malliluokkapohja2.php';
require_once 'php_yleinen/perustus/Nakymapohja2.php';
require_once 'kayttajahallinta/Kayttajatekstit.php';
require_once 'kayttajahallinta/Henkilo.php';
require_once 'kayttajahallinta/Suodatin.php';
require_once 'kayttajahallinta/Kayttajanakymat.php';
require_once 'kayttajahallinta/Kayttajakontrolleri.php';
// Yhdistetään tietokantaan:
$tietokantaolio = new Tietokantaolio($dbtyyppi, $dbhost, $dbuser, $dbsalis);
$tietokantaolio->yhdista_tietokantaan($dbnimi);
$ktunnus = isset($_POST['ktunnus']) ? $_POST['ktunnus'] : "";
// Onko alla oleva iso turvallisuusriski?
$salasana = isset($_POST['salasana']) ? $_POST['salasana'] : "";
$toiminta = isset($_POST['toiminta']) ? $_POST['toiminta'] : "";
$hamy = isset($_GET['piip']) ? $_GET['piip'] : "kelvoton";
$viesti = isset($_GET['viesti']) ? $_GET['viesti'] : "";
// Viesti käyttäjälle.
$sisalto = '';
// Varsinainen sisältö.
$hamynimi = 'piip';
// urliin liitettävän aikamuuttujan nimi.
if ($toiminta == "") {
    $viesti .= " Kirjoita tunnukset tekstikenttiin ja klikkaa nappia!";
    $sisalto = nayta_kirjautuminen($ktunnus, $hamynimi);
Example #28
0
// Haetaan asetukset ja avataan yhteys tietokantaan. Täällä ei sessioita
// jne tarvita? Ei kai tätä pystyne väärinkäyttämään, ehkä..
// KORJAUS! Pääsee kuviin suoraan ilman salasanaa, ellei tarkistusta ole,
// joten korjataan asia!
session_start();
// Aloitetaan istunto.
require_once '../php_yleinen/Asetuspohja.php';
require_once '../asetukset/yleinen.php';
if (!isset($_SESSION['tunnistus']) || $_SESSION['tunnistus'] != 'kunnossa') {
    header("Location: ../tunnistus.php?piip=" . time());
    exit;
} else {
    require_once '../asetukset/tietokantayhteys.php';
    require_once '../php_yleinen/Tietokantaolio.php';
    // Yhdistetään tietokantaan:
    $tietokantaolio = new Tietokantaolio($dbtyyppi, $dbhost, $dbuser, $dbsalis);
    $tietokantaolio->yhdista_tietokantaan($dbnimi);
    $kuva_id = isset($_REQUEST['kuva_id']) ? (int) $_REQUEST['kuva_id'] : -1;
    // Koko määrittelee sen, mikä tietokannan kuvista haetaan:
    $koko = isset($_REQUEST['koko']) ? $_REQUEST['koko'] : "";
    if ($kuva_id > 0) {
        $taulunimi = "kuvat";
        $sarakenimi = "id";
        $hakuarvo = $kuva_id;
        $kuva_dbolio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
        if ($kuva_dbolio != Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
            header('Content-type: ' . $kuva_dbolio->tiedostotunnus);
            header('Content-length: ' . $kuva_dbolio->tiedostokoko);
            $kuva = $kuva_dbolio->minikuva2;
            if ($koko == "pieni") {
                $kuva = $kuva_dbolio->minikuva1;
Example #29
0
require_once 'yhteiset/Parametrit.php';
require_once 'yhteiset/Palaute.php';
require_once 'bongaus/bongausasetukset.php';
require_once 'bongaus/testaus/testikooste_bongaus.php';
require_once 'bongaus/lajiluokat/Kontrolleri_lj.php';
require_once 'bongaus/lajiluokat/Kuvaus.php';
require_once 'bongaus/lajiluokat/Lajiluokka.php';
require_once 'bongaus/lajiluokat/Nakymat_lj.php';
require_once 'bongaus/havainnot/Havainto.php';
require_once 'pikakommentointi/Pikakommentti.php';
require_once 'pikakommentointi/Kontrolleri_pikakommentit.php';
require_once 'pikakommentointi/Nakyma_pikakommentit.php';
require_once 'pikakommentointi/Pikakommenttitekstit.php';
require_once 'pikakommentointi/testaus/testikooste_pikakommentit.php';
// Valmistellaan tietokantayhteys testejä varten:
$tietokantaolio = new Tietokantaolio($dbtyyppi, $dbhost, $dbuser, $dbsalis);
$tietokantaolio->yhdista_tietokantaan($dbnimi);
// Ainakin käyttäjätestaus tarvitsee parametreja:
$kayttajan_id = 1;
$kokoelmanimi = Kuva::$KUVAT_ALBUMIT;
$parametriolio = new Parametrit($kokoelmanimi, $kayttajan_id, $tietokantaolio);
//=============================================================================
// Luodaan uusi Käyttäjätestaus-olio:
$kayttajatestaus = new Kayttajatestaus($tietokantaolio, $parametriolio);
// Luodaan uusi Suodatintestaus-olio:
$suodatintestaus = new Suodatintestaus($tietokantaolio, $parametriolio);
// Kaikki testit yhteen:
$palautteet = array();
array_push($palautteet, $suodatintestaus->toteuta_suodatintestit());
array_push($palautteet, $kayttajatestaus->toteuta_kayttajatestit());
array_push($palautteet, toteuta_pikakommentointitestit($tietokantaolio));
Example #30
0
    echo date("\\k\\l\\o H:i:s");
} else {
    // Haetaan asetukset ja avataan yhteys tietokantaan:
    require_once '../asetukset/tietokantayhteys.php';
    require_once '../yhteiset/php_yhteismetodit.php';
    load_files("ajax");
    // Muutama kysely liittyen vain ajaxiin (vois sijoittaa kyllä parametriolioon):
    $aukaisu = isset($_REQUEST['aukaisu']) ? $_REQUEST['aukaisu'] : 0;
    $id_raaka = isset($_REQUEST['id_raaka']) ? $_REQUEST['id_raaka'] : Malliluokkapohja::$MUUTTUJAA_EI_MAARITELTY;
    $id_nappi = isset($_REQUEST['id_nappi']) ? $_REQUEST['id_nappi'] : -1;
    // Kohde liittyy siihen, missä otsikot näytetään (kokonaisuusnäkymä vai
    // koostelomake lähinnä).
    $kohde = isset($_REQUEST['kohde']) ? $_REQUEST['kohde'] : 'kokonaisuudet';
    //--------------------
    // Yhdistetään tietokantaan:
    $tietokantaolio = new Tietokantaolio($dbtyyppi, $dbhost, $dbuser, $dbsalis);
    $tietokantaolio->yhdista_tietokantaan($dbnimi);
    // Tee parametriolio ja palauteolio!
    $parametriolio = new Parametrit($tietokantaolio);
    $palauteolio = new Palaute();
    $kokonaisuuskontrolleri = new Kokonaisuuskontrolleri($tietokantaolio, $parametriolio);
    $tehtavakontrolleri = new Tehtavakontrolleri($tietokantaolio, $parametriolio);
    $ratkaisukontrolleri = new Ratkaisukontrolleri($tietokantaolio, $parametriolio);
    $koostekontrolleri = new Koostekontrolleri($tietokantaolio, $parametriolio);
    $kokonaisuusnakymat = new Kokonaisuusnakymat();
    $tehtavanakymat = new Tehtavanakymat();
    $ratkaisunakymat = new Ratkaisunakymat();
    $koostenakymat = new Koostenakymat();
    $omaid = $parametriolio->get_omaid();
    $id_kokon = $parametriolio->id_kokon;
    /**