示例#1
0
/**
 * Toteuttaa kuvan tietojen tallennuksen tietokantaan ja kuvan tallennuksen
 * tallennuskansioon. Kuvan tiedot tarkistetaan.
 *
 * Tallentaa kuvan ja palauttaa taulukon, jonka ensimmäinen alkio on
 * palautte tallennuksen onnistumisesta ('onnistui' tai virheilmoitus) ja toinen
 * tallennetun kuvan id:n, jotta uusi kuva osataan näyttää heti. Kolmas alkio
 * taulukossa on tallennetun kuvan tiedosto-osoite.
 *
 * @param Parametrit $parametriolio
 * @return Palaute $palauteolio
 */
function toteuta_tallenna_kuva($parametriolio)
{
    $id_kokon = $parametriolio->id_kokon;
    $id_teht = $parametriolio->id_teht;
    $id_ratk = $parametriolio->id_ratk;
    $omaid = $parametriolio->get_omaid();
    $kuvaotsikko_kuva = $parametriolio->kuvaotsikko_kuva;
    $kuvaselitys_kuva = $parametriolio->kuvaselitys_kuva;
    $vuosi_kuva = $parametriolio->vuosi_kuva;
    $kk_kuva = $parametriolio->kk_kuva;
    $paiva_kuva = $parametriolio->paiva_kuva;
    $nayttokokoindeksi_kuva = $parametriolio->nayttokokoindeksi_kuva;
    $tietokantaolio = $parametriolio->get_tietokantaolio();
    $kokonaisuuskontrolleri = new Kokonaisuuskontrolleri($tietokantaolio, $parametriolio);
    $tehtavakontrolleri = new Tehtavakontrolleri($tietokantaolio, $parametriolio);
    $ratkaisukontrolleri = new Ratkaisukontrolleri($tietokantaolio, $parametriolio);
    //$latauskansio_os Antaa sen kansion suhteellisen tiedostopolun,
    // jonne ladattu tiedosto on tarkoitus siirtää pysyvää sijoitusta varten.
    $latauskansio_os = $parametriolio->latauskansio_os;
    //"selitys"/"tiivis"/"manuaali"/"tehtava"/"ratkaisu"
    $kohde_kuva = $parametriolio->kohde_kuva;
    $palauteolio = new Palaute();
    $palauteolio2 = new Palaute();
    /* tallenna_kuva-metodin palaute */
    $palauteolio_kokon = new Palaute();
    $pal_olio = new Palaute();
    $palauteolio_tehtavat = new Palaute();
    $sisalto = "";
    $id_kuva = "";
    /* Tallennetun kuvan tunniste. */
    $uusi = true;
    $linkit = "";
    // Liittyy tehtäviin esim.
    // Huom! alla olevaan ei tulekaan kuvan id, vaan isäntäolion id!
    $muokatun_id = Kokonaisuusolio::$kokon_ei_maaritelty;
    /* Tarkistetaan, onko latauksia tullut palvelimelle: */
    if (!array_key_exists(Kuvat::$kuvalatauksen_name, $_FILES)) {
        $ilmoitus_kuva = 'Ei latauksia havaittu!';
        $sisalto = nayta_kuvalomake_uusi($kohde_kuva, $omaid, $uusi, $ilmoitus_kuva, $tietokantaolio, $id_kuva, $id_kokon, $id_teht, $id_ratk, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $nayttokokoindeksi_kuva);
        $palauteolio->set_ilmoitus($ilmoitus_kuva);
        $palauteolio->set_sisalto($sisalto);
    } else {
        $ladattu_kuva = $_FILES[Kuvat::$kuvalatauksen_name];
        // Ilmeisesti koko on valmiiksi tavuina (täsmää kuvan omin. kans):
        //$info = getImageSize($ladattu_kuva['tmp_name']);
        $ilmoitus = "Tiedoston nimi: " . $ladattu_kuva['name'] . " (" . round($ladattu_kuva['size'] / 1024) . " kt)" . "<br/> Tyyppi: " . $ladattu_kuva['type'] . "<br />";
        //"<br/> Tmp-nimi: ".$ladattu_kuva['tmp_name'].
        //"<br/> Virheviesti: ".$ladattu_kuva['error'].
        //"<br/> Kuvan tyyppi: ".$info[2];
        $tarkistus = tarkista_kuvatiedot($ladattu_kuva, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $uusi);
        // Jos korjaamista, näytetään lomake uudelleen:
        if ($tarkistus != Palautteita::$lomaketiedot_ok) {
            $ilmoitus_kuva = $tarkistus;
            $sisalto = nayta_kuvalomake_uusi($kohde_kuva, $omaid, $uusi, $ilmoitus_kuva, $tietokantaolio, $id_kuva, $id_kokon, $id_teht, $id_ratk, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $nayttokokoindeksi_kuva);
        } else {
            // Tallenna_kuva palauttaa olion, joka sisältää kolme
            // tietoa; palautteen (ilmoitus), tallennetun kuvan id:n (2), joka
            // voi olla tyhjä virheen sattuessa ja kuvaosoitteen (3).
            $palauteolio2 = tallenna_kuva($kohde_kuva, $id_kokon, $id_teht, $id_ratk, $omaid, $ladattu_kuva, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $nayttokokoindeksi_kuva, $tietokantaolio, $latauskansio_os);
            if ($palauteolio2->get_ilmoitus() == Tietokantaolio::$HAKU_ONNISTUI) {
                $ilmoitus = Tekstit::$ilm_kuva_uusi_tallennus_ok;
                $id_kuva = $palauteolio2->get_muokatun_id();
                $linkit = "";
                // Lisälinkkejä, esim. tehtävissä.
                /* Palautetaan se näkymä, jonka parissa on tehty töitä: */
                if ($kohde_kuva === Kuvat::$kohde_kokonaisuus_tiivistelma || $kohde_kuva === Kuvat::$kohde_kokonaisuus_selitys) {
                    if ($kohde_kuva == Kuvat::$kohde_kokonaisuus_selitys) {
                        $selitys_auki_id = $id_kokon;
                    } else {
                        $selitys_auki_id = "";
                    }
                    $parametriolio->selitys_auki_id = $selitys_auki_id;
                    $kokonaisuuskontrolleri->toteuta_nayta($palauteolio_kokon);
                    $sisalto = $palauteolio_kokon->get_sisalto();
                    $linkit = $palauteolio_kokon->get_linkkihtml();
                    $muokatun_id = $id_kokon;
                } else {
                    if ($kohde_kuva === Kuvat::$kohde_kokonaisuus_tiivis_manuaali || $kohde_kuva === Kuvat::$kohde_kokonaisuus_selitys_manuaali) {
                        $kohteena_tiivis = $kohde_kuva === Kuvat::$kohde_kokonaisuus_tiivis_manuaali;
                        if ($kohteena_tiivis) {
                            $sarakenimi = "tiivis";
                        } else {
                            $sarakenimi = "selitys";
                        }
                        // Haetaan ajantasalla olevat tiedot tietokannasta.
                        /* Muutettavat tiedot alla, jotka siis pitää asettaa:
                           * $muutosarvot = array(time(),
                                  $oppiaine_kokon,
                                  $otsikko_kokon,
                                  $tiivis_kokon,
                                  $selitys_kokon,
                                  $taso_kokon,
                                  $jarjestysnro,
                                  $laajennetun_id_kokon,
                                  $kieli_id,
                                  $ylakokonaisuuden_id);
                           */
                        $taulunimi = "kokonaisuudet";
                        $sarakenimi = "id";
                        $hakuarvo = $id_kokon;
                        $kokonaisuus = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
                        if ($kokonaisuus != Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
                            $parametriolio->oppiaine_kokon = $kokonaisuus->oppiaine;
                            $parametriolio->otsikko_kokon = $kokonaisuus->otsikko;
                            $parametriolio->tiivis_kokon = $kokonaisuus->tiivis;
                            $parametriolio->selitys_kokon = $kokonaisuus->selitys;
                            $parametriolio->taso_kokon = $kokonaisuus->taso;
                            $parametriolio->jarjestysnro_kokon = $kokonaisuus->jarjestysnro;
                            $parametriolio->laajennetun_id_kokon = $kokonaisuus->laajennetun_id;
                            $parametriolio->ylakokonaisuuden_id_kokon = $kokonaisuus->ylakokonaisuuden_id;
                        }
                        // Haetaan kokonaisuuden tiivistelmä/selitys:
                        if ($kohteena_tiivis) {
                            $vanha = $parametriolio->tiivis_kokon;
                        } else {
                            $vanha = $parametriolio->selitys_kokon;
                        }
                        // Haetaan tallennettu kuva tietokannasta:
                        if ($tietokantaolio instanceof Tietokantaolio) {
                            $taulunimi = "kuvat";
                            $sarakenimi = "id";
                            $hakuarvo = $id_kuva;
                            $tk_olio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo);
                            if ($tk_olio != Tietokantaolio::$HAKU_PALAUTTI_TYHJAN) {
                                $kuva = new Kuva($tk_olio, $tietokantaolio);
                            }
                            $kuvahtml = $kuva->nayta_pelkka_kuva($latauskansio_os);
                            // Uusi on vanha + kuvahtml:
                            $uusi = $vanha . "\n" . $kuvahtml;
                            if ($kohteena_tiivis) {
                                $parametriolio->tiivis_kokon = $uusi;
                            } else {
                                $parametriolio->selitys_kokon = $uusi;
                            }
                            $kokonaisuuskontrolleri->toteuta_tallenna_muokkaus($palauteolio_kokon);
                        }
                        $sisalto = $palauteolio_kokon->get_sisalto();
                        $muokatun_id = $id_kokon;
                    } else {
                        if ($kohde_kuva === Kuvat::$kohde_tehtava) {
                            $tehtavakontrolleri->toteuta_nayta_tehtavat($palauteolio_tehtavat);
                            $linkit = $palauteolio_tehtavat->get_linkkihtml();
                            $sisalto = $palauteolio_tehtavat->get_sisalto();
                            $muokatun_id = $id_teht;
                        } else {
                            if ($kohde_kuva === Kuvat::$kohde_ratkaisu) {
                                $ratkaisukontrolleri->toteuta_nayta($pal_olio);
                                $sisalto = $pal_olio->get_sisalto();
                                $muokatun_id = $id_ratk;
                            } else {
                                $sisalto = "kohde_kuva?? (toteuta_tallenna_kuva)";
                            }
                        }
                    }
                }
            } else {
                $ilmoitus .= $palauteolio2->get_ilmoitus() . " ja " . $palauteolio_kokon->get_ilmoitus();
                $ilmoitus_kuva = $palauteolio2->get_ilmoitus();
                $sisalto = nayta_kuvalomake_uusi($kohde_kuva, $omaid, $uusi, $ilmoitus_kuva, $tietokantaolio, $id_kuva, $id_kokon, $id_teht, $id_ratk, $kuvaotsikko_kuva, $kuvaselitys_kuva, $vuosi_kuva, $kk_kuva, $paiva_kuva, $nayttokokoindeksi_kuva);
            }
        }
    }
    $palauteolio->set_ilmoitus($ilmoitus);
    $palauteolio->set_sisalto($sisalto);
    $palauteolio->set_muokatun_id($muokatun_id);
    /* Kuvan suhteellinen osoite (kutsuvasta ohjelmanosasta). */
    $palauteolio->set_oma($palauteolio2->get_oma());
    /* Linkit (esim. tehtävät) */
    $palauteolio->set_linkkihtml($linkit);
    return $palauteolio;
}
/**
 * Toteuttaa uuden henkilon tallentamisen tietokantaan:
 * @param Parametrit $parametriolio
 * @return Palaute $palauteolio
 */
function toteuta_tallenna_henkilo($parametriolio)
{
    $palauteolio = new Palaute();
    $palauteolio2 = new Palaute();
    $kelpoisuus = tarkista_henkilotiedot($parametriolio);
    $tietokantaolio = $parametriolio->get_tietokantaolio();
    $kokonkontrolleri = new Kokonaisuuskontrolleri($tietokantaolio, $parametriolio);
    $kokonkontrolleri->toteuta_nayta($palauteolio);
    // HUOM! ALLA EI ARVO TRUE TOIMINUT! ILMEISESTI STRINGI ARVIOIDAAN
    // TODEKSI, ELLEI SE OLE NIMENOMAAN FALSE TAI 0.
    if ($kelpoisuus == "kunnossa") {
        $parametriolio->set_uussalasana(md5($parametriolio->uussalasana));
        $tallennusOk = tallenna_henkilo($parametriolio);
        if ($tallennusOk == true) {
            $viesti = Tekstit::$ilm_henkilon_tiedot_tallennettu;
            // Puhdistus ja etsint&auml;:
            $tiedot = tarkista_tunnukset($parametriolio->uusktunnus, $parametriolio->uussalasana);
            if ($tiedot == false) {
                $viesti = Tekstit::$virheilm_tunnusten_tarkistus_eiok;
                $sisalto = nayta_kirjautuminen($parametriolio->uusktunnus);
            } else {
                $viesti = Tekstit::$ilm_henkilon_tunnukset_toimivat;
                $kokonkontrolleri->toteuta_nayta($palauteolio2);
                $palauteolio2->set_ilmoitus($viesti);
            }
        } else {
            // Jos tallennus ep&auml;onnistui:
            $viesti = Tekstit::$virheilm_henkilon_tallennus_eiok;
            $sisalto = nayta_tietolomake($parametriolio);
            $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_TALLENNUS);
        }
    } else {
        //Jos tiedoissa jokin virhe:
        $viesti = $kelpoisuus;
        //Virheilmoitus
        $sisalto = nayta_tietolomake($parametriolio);
    }
    $ilmoitus = $viesti;
    if ($palauteolio2 === "") {
        // Ellei kaikki mennyt putkeen:
        $palauteolio->set_sisalto($sisalto);
        $palauteolio->set_ilmoitus($ilmoitus);
    } else {
        // Jos kaikki on hyvin:
        $palauteolio = $palauteolio2;
    }
    return $palauteolio;
}
 function testaa_toteuta_metodeita()
 {
     /*********** Testataan "toteuta"-kokonaisuustoiminnot tarkemmin  ************/
     $this->lisaa_lihava_kommentti("Testataan kaikki 'toteuta'-toiminnot, jotka liittyvät\n                    kokonaisuuksiin:");
     $tallennetun_id = Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY;
     if ($this->testihenkilo1 instanceof Henkilo) {
         $this->parametriolio->set_omaid($this->testihenkilo1->get_id());
     } else {
         $this->parametriolio->set_omaid(1);
         // Arvataan vain..
         $this->lisaa_kommentti("Testihenkiloa nro 1 ei loytynyt, omaid on 1," . " mikä voi onnistua tai sitten ei..");
     }
     $kokon2_id = Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY;
     $kokon3_id = Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY;
     $this->lisaa_lihava_kommentti("toteuta_uuden_kokon_tallennus:");
     // Järjestysluku on pantu -1:ksi, jotta korjauskin testataan. Asetetaan
     // nämä kokonaisuudet yllä luodun kokonaisuuden alle, jotta testausidea
     // toimii paremmin.
     if ($this->kokon1 instanceof Kokonaisuusolio) {
         //==========================
         $this->parametriolio->set_oppiaine_kokon(Oppiaineet::$FY);
         $this->parametriolio->set_otsikko_kokon("Kokon 1.1");
         $this->parametriolio->set_tiivis_kokon("Tämä on ihan uusi testitiivistelmä");
         $this->parametriolio->set_selitys_kokon(KokonTehtRatkTestaus::$testikokon_selitys);
         $this->parametriolio->set_taso_kokon(Koulutasot::$PERUSKOULU);
         $this->parametriolio->set_jarjestysnro_kokon(-1);
         $this->parametriolio->set_laajennetun_id_kokon(-1);
         $this->parametriolio->set_kieli_id(Kielet::$SUOMI);
         $this->parametriolio->set_ylakokonaisuuden_id_kokon($this->kokon1->get_id());
         $this->parametriolio->set_valtuudet(Valtuudet::$HALLINTA);
         //=========================
         $palauteolio = new Palaute();
         $this->kokonaisuuskontrolleri->toteuta_tallenna_uusi($palauteolio);
         if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
             $this->lisaa_virheilmoitus("Uuden kokon tallennus 1: VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
         } else {
             $this->lisaa_kommentti("Virheita ei havaittu!");
         }
         $kokon2_id = $palauteolio->get_muokatun_id();
         $tallennetun_id = $kokon2_id;
     } else {
         $this->lisaa_virheilmoitus("Virhe: kokon1 ei olio!");
     }
     /*============================= 2 ======================================*/
     if ($this->kokon1 instanceof Kokonaisuusolio) {
         $this->lisaa_kommentti("<b>Luodaan toinen uusi kokonaisuus\n                    (toteuta_uuden_kokon_tallennus):</b><br />");
         $this->parametriolio->set_otsikko_kokon("Ja taas uusi testikokonaisuus");
         $this->parametriolio->set_tiivis_kokon("Tämä on jotakin hassua!");
         $this->parametriolio->set_selitys_kokon(KokonTehtRatkTestaus::$testikokon_selitys);
         $this->kokonaisuuskontrolleri->toteuta_tallenna_uusi($palauteolio);
         if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
             $this->lisaa_virheilmoitus("Kohta 2: VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
         } else {
             $this->lisaa_kommentti("Virheita ei havaittu! Testikokonaisuudet:");
         }
         $kokon3_id = $palauteolio->get_muokatun_id();
         $this->lisaa_kommentti($this->nayta_testikokonaisuudet($tallennetun_id));
     } else {
         $this->lisaa_virheilmoitus("Virhe: kokon2 ei olio!");
     }
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>toteuta_korjaa_jarjestysnro:</b>");
     $this->kokonaisuuskontrolleri->toteuta_korjaa_jarjestysnro($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("Kohta 3: VIRHEKOODI (toteuta_korjaa_jarjestysnro)=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
     } else {
         $this->lisaa_kommentti("Virheita ei havaittu!");
     }
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>toteuta_nayta_selitys:</b><br />");
     $this->parametriolio->set_id_kokon($kokon2_id);
     $this->kokonaisuuskontrolleri->toteuta_nayta_selitys($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("VIRHEKOODI (toteuta_nayta_selitys)=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>toteuta_sulje_selity:</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_sulje_selitys($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("VIRHEKOODI (toteuta_sulje_selitys)=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
     } else {
         $this->lisaa_kommentti("Virheita ei havaittu!");
     }
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>toteuta_nayta_kokonaisuuslomake:</b><br />");
     $this->parametriolio->set_uusi(true);
     $this->kokonaisuuskontrolleri->toteuta_nayta_kokonaisuuslomake($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>toteuta_peru_uuden_kokonaisuuden_tallennus:</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_peru_uuden_kokonaisuuden_tallennus($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //$this->lisaa_kommentti($palauteolio->get_sisalto());
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>toteuta_nayta_kokonaisuuden_poistovarmistus:</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_nayta_poistovarmistus($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //$this->lisaa_kommentti($palauteolio->get_sisalto());
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>toteuta_peru_kokonaisuuden_poisto:</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_peru_kokonaisuuden_poisto($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     /*=================================3===================================*/
     // Luodaan poistettava kokonaisuus:
     $this->lisaa_kommentti("<b>Luodaan uusi kokonaisuus, joka sitten poistetaan:\n               :</b><br />");
     $this->parametriolio->set_otsikko_kokon("Poistettava testikokonaisuus");
     $this->parametriolio->set_tiivis_kokon("Puhdasta roskaa!");
     $this->kokonaisuuskontrolleri->toteuta_tallenna_uusi($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     $kokon4_id = $palauteolio->get_muokatun_id();
     /*=================================3===================================*/
     $this->lisaa_kommentti("<b>\$this->kokonaisuuskontrolleri->toteuta_kokon_poisto:</b><br />");
     $this->parametriolio->set_id_kokon($kokon4_id);
     $this->kokonaisuuskontrolleri->toteuta_poista($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //==========================================================================
     $this->lisaa_kommentti("<b>toteuta_nayta_kokonaisuuslomake (uusi kokon):</b><br />");
     $this->parametriolio->set_uusi(true);
     $this->kokonaisuuskontrolleri->toteuta_nayta_kokonaisuuslomake($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
         $this->lisaa_kommentti($palauteolio->get_sisalto());
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //=========================================================================
     // HUOM tämä suorittaa myös kokonaisuuden lukitsemisen muokkausta varten:
     $this->lisaa_kommentti("<b>toteuta_nayta_kokonaisuuslomake (muokkaus):</b>");
     $this->parametriolio->set_uusi(false);
     $this->kokonaisuuskontrolleri->toteuta_nayta_kokonaisuuslomake($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //=========================================================================
     $this->lisaa_kommentti("<b>toteuta_tallenna_kokonaisuuden_muokkaus:</b>");
     // Haetaan vanha selitys, jotta nähdään, muuttuuko:
     $kokon_alkup = new Kokonaisuusolio($tallennetun_id, $this->tietokantaolio);
     $tii_alkup = $kokon_alkup->getTiivis();
     $this->lisaa_kommentti("Tiivis alkup: " . $tii_alkup . ". Tarkoitus" . " on muuttaa muotoon 'Muutettu on tätä hieman!'");
     // Muutetaan vähän:
     $this->parametriolio->id_kokon = $tallennetun_id;
     $this->parametriolio->set_tiivis_kokon("Muutettu on tätä hieman!");
     $this->kokonaisuuskontrolleri->toteuta_tallenna_muokkaus($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("VIRHEKOODI (toteuta_tallenna_kokonaisuuden_muokkaus) =" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
         $this->lisaa_kommentti($this->nayta_testikokonaisuudet($tallennetun_id));
     } else {
         $this->lisaa_kommentti("Virheita ei havaittu!");
     }
     $kokon_muok = new Kokonaisuusolio($tallennetun_id, $this->tietokantaolio);
     $tii_muok = $kokon_muok->getTiivis();
     $this->lisaa_kommentti("Muokkauksen jälkeen tiivistelmä on seuraava: " . $tii_muok);
     //
     //=========================================================================§
     // Lukitaan kokonaisuus käsin muokkausta varten. Tämä tehdään oikeasti
     //lomakkeen näytön yhteydessä, mikä testattiin edellisessä kohdassa.
     $id_kokon = $this->parametriolio->get_id_kokon();
     $muokattava = new Kokonaisuusolio($id_kokon, $this->tietokantaolio);
     $lukon_tila = Kokonaisuusolio::$LUKITUS_ON;
     $lukitus = $muokattava->aseta_kokonaisuuden_lukitus($this->parametriolio->get_omaid(), $lukon_tila);
     //=========================================================================§
     $this->lisaa_kommentti("<b>toteuta_peru_kokon_muokkausten_tallennus:</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_peru_kokon_muokkausten_tallennus($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("VIRHEKOODI (toteuta_peru_kokon_muokkausten_tallennus) =" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus());
         $this->lisaa_kommentti($this->nayta_testikokonaisuudet($tallennetun_id));
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //$this->lisaa_kommentti( $palauteolio->get_sisalto());
     //=========================================================================§
     $this->lisaa_kommentti("<b>toteuta_vaihda_kokonaisuuksien_jarjestys:</b><br />");
     $this->parametriolio->set_ed_id_kokon($kokon2_id);
     $this->parametriolio->set_id_kokon($kokon3_id);
     $this->kokonaisuuskontrolleri->toteuta_vaihda_kokonaisuuksien_jarjestys($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //=========================================================================§
     $this->lisaa_kommentti("<b>toteuta_nayta_kuvalomake_kokon_tiivistelma</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_nayta_kuvalomake_kokon($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //$this->lisaa_kommentti( $palauteolio->get_sisalto());
     //=========================================================================§
     $this->lisaa_kommentti("<b>toteuta_nayta_kuvalomake_kokon_selitys:</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_nayta_kuvalomake_kokon($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //$this->lisaa_kommentti( $palauteolio->get_sisalto());
     //=========================================================================§
     $this->lisaa_kommentti("<b>toteuta_nayta_kokonaisuudet:</b><br />");
     $this->kokonaisuuskontrolleri->toteuta_nayta($palauteolio);
     if ($palauteolio->get_virhekoodi() != Palaute::$VIRHEKOODI_KAIKKI_OK) {
         $this->lisaa_virheilmoitus("<div class='virhe'>VIRHEKOODI=" . $palauteolio->get_virhekoodi() . "! " . $palauteolio->get_ilmoitus() . "</div>");
     } else {
         $this->lisaa_kommentti("<div>Virheita ei havaittu!</div>");
     }
     //$this->lisaa_kommentti( $palauteolio->get_sisalto());
     //=========================================================================§
     $this->testaa_uloskirjaus();
     $this->lisaa_kommentti("<b>****************************TOTEUTA-METODIT LOPPU*********</b>");
 }
示例#4
0
/**
 * 
 * @param Palaute $palauteolio
 * @param Parametrit $parametriolio
 * @param Koostekontrolleri $koostekontrolleri
 * @param Tehtavakontrolleri $tehtavakontrolleri
 * @param Ratkaisukontrolleri $ratkaisukontrolleri
 * @param Kokonaisuuskontrolleri $kokonaisuuskontrolleri
 */
function nayta_urlin_mukaan(&$palauteolio, &$parametriolio, &$koostekontrolleri, &$tehtavakontrolleri, &$ratkaisukontrolleri, &$kokonaisuuskontrolleri)
{
    $palauteolio->set_oma(Yleiset_arvot::$toimintaa_ei_maaritelty);
    $palauteolio->set_naytto_urlin_mukaan(true);
    // Mietittävää: kielen, oppiaineen ja tason määritykset voisi laittaa
    // toteuta-metodeiden sisälle, jottei niitä tarvita roskaamaan urlia.
    // Lähinnä koosteiden kohdalla pitää
    // miettiä, koska tällä hetkellä kaikki näkyy kaikille, eli siis
    // niiden näkyvyyttä ei ole rajoitettu kielen, oppiaineen tai tason
    // perusteella. Mahdollisesti kielen perusteella näin voisi tehdäkin,
    // vaikka muut jättäisi ennalleen.
    // Huomaa myös, että urlissa voi olla pelkästään kielen, aineen ja
    // tason arvot, jolloin pitäisi osata näyttää ensimmäinen vastaava
    // kokonaisuus.
    // Otetaan kuitenkin parametrinolion arvo mukaan [, jos se on jokin muu
    // oletus "kokonaisuus"] (esim kun urlin perusteella tullaan):
    //if($parametriolio->naytettava != Palaute::$NAYTETTAVA_OLIOTYYPPI_KOKONAISUUS){
    $palauteolio->set_naytettava_oliotyyppi(Oliotyyppi::muunna_palauteolion_arvoksi($parametriolio->naytettava));
    //}
    // Alla pitäisi riittää palauteolion arvo. Se ohjaa nykyisin
    // näytettävää oliota. Muu-arvo (vähän kuin ei-määr) viittaa siihen,
    // ettei url määritä näytettävää oliota, joten pitää "arvata" se muuten.
    if ($palauteolio->get_naytettava_oliotyyppi() != Palaute::$NAYTETTAVA_OLIOTYYPPI_MUU) {
        if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA) {
            $tehtavakontrolleri->toteuta_nayta_tehtavat($palauteolio);
        } else {
            if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_RATKAISU) {
                $ratkaisukontrolleri->toteuta_nayta($palauteolio);
            } else {
                if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE) {
                    // Haetaan kooste kieltä, tasoa ja oppiainetta varten:
                    $kooste = $koostekontrolleri->get_olio();
                    if ($kooste->olio_loytyi_tietokannasta) {
                        $kieli = $kooste->get_arvo(Kooste::$sarakenimi_kieli);
                        $oppiaine = $kooste->get_arvo(Kooste::$sarakenimi_oppiaine);
                        $taso = $kooste->get_arvo(Kooste::$sarakenimi_taso);
                        // Kokonaisuusarvot ohjaavat eniten sovellusta:
                        aseta_kieli_taso_ja_oppiaine($kieli, $oppiaine, $taso, $parametriolio);
                        Kielet::kaanna($kieli);
                        $koostekontrolleri->toteuta_nayta($palauteolio);
                    } else {
                        $koostekontrolleri->toteuta_nayta_koosteet($palauteolio);
                        $palauteolio->set_ilmoitus(Tekstit::$kooste_koostetta_ei_ole_tai_ei_voida_nayttaa);
                    }
                } else {
                    if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE_TULOSTUS) {
                        $koostekontrolleri->toteuta_nayta_tulostus($palauteolio);
                    } else {
                        if ($palauteolio->get_naytettava_oliotyyppi() === Palaute::$NAYTETTAVA_OLIOTYYPPI_KOOSTE_ELEMRYHMA) {
                            // Haetaan kooste kieltä, tasoa ja oppiainetta varten:
                            $kooste = $koostekontrolleri->get_olio();
                            if ($kooste->olio_loytyi_tietokannasta) {
                                $kieli = $kooste->get_arvo(Kooste::$sarakenimi_kieli);
                                $oppiaine = $kooste->get_arvo(Kooste::$sarakenimi_oppiaine);
                                $taso = $kooste->get_arvo(Kooste::$sarakenimi_taso);
                                // Kokonaisuusarvot ohjaavat eniten sovellusta:
                                aseta_kieli_taso_ja_oppiaine($kieli, $oppiaine, $taso, $parametriolio);
                                Kielet::kaanna($kieli);
                                $koostekontrolleri->toteuta_nayta($palauteolio);
                            } else {
                                $koostekontrolleri->toteuta_nayta_koosteet($palauteolio);
                                $palauteolio->set_ilmoitus(Tekstit::$kooste_koostetta_ei_ole_tai_ei_voida_nayttaa);
                            }
                        } else {
                            // default:
                            $kokonaisuuskontrolleri->toteuta_nayta($palauteolio);
                        }
                    }
                }
            }
        }
        //======================================================================
        //======================================================================
        // Kun näytettävää oliota ei urlissa, tarkistetaan mahdolliset
        // id-arvot. Jos jokin määritelty, mennään sinne sitten!
    } else {
        // Tarkistetaan, onko kooste-id:tä:
        if ($parametriolio->kooste_id != Kooste::$MUUTTUJAA_EI_MAARITELTY || $parametriolio->elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) {
            $nayta_kooste = true;
            if ($parametriolio->elemryhma_id != Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY) {
                $nayta_kooste = false;
            }
            // Haetaan kooste kieltä, tasoa ja oppiainetta varten:
            // Huomaa, että ei välttämättä Kooste-olio!
            $kooste = $koostekontrolleri->get_olio();
            if ($kooste instanceof Kooste && $kooste->olio_loytyi_tietokannasta) {
                $kieli = $kooste->get_arvo(Kooste::$sarakenimi_kieli);
                $oppiaine = $kooste->get_arvo(Kooste::$sarakenimi_oppiaine);
                $taso = $kooste->get_arvo(Kooste::$sarakenimi_taso);
                // Kokonaisuusarvot ohjaavat eniten sovellusta:
                aseta_kieli_taso_ja_oppiaine($kieli, $oppiaine, $taso, $parametriolio);
                Kielet::kaanna($kieli);
                // NÄytetään joko kooste tai elementtiryhmä:
                if ($nayta_kooste) {
                    $koostekontrolleri->toteuta_nayta($palauteolio);
                } else {
                    $koostekontrolleri->toteuta_nayta_elementtiryhma($palauteolio);
                }
            } else {
                $koostekontrolleri->toteuta_nayta_koosteet($palauteolio);
                $palauteolio->set_ilmoitus(Tekstit::$kooste_koostetta_ei_ole_tai_ei_voida_nayttaa);
            }
            // Huomaa järjestys: ensin tarkistetaan ratkaisu, sitten teht ja
            // vasta lopuksi kokonaisuus (jonka id tahtoo kummitella muistissa).
        } else {
            if ($parametriolio->id_teht != Tehtava::$MUUTTUJAA_EI_MAARITELTY) {
                // Näytetään yksi tehtävä:
                $tehtavakontrolleri->toteuta_nayta($palauteolio);
            } else {
                if ($parametriolio->id_ratk != Ratkaisu::$MUUTTUJAA_EI_MAARITELTY) {
                    $ratkaisukontrolleri->toteuta_nayta($palauteolio);
                } else {
                    if ($parametriolio->id_kokon != Kokonaisuusolio::$kokon_ei_maaritelty) {
                        $kokonaisuuskontrolleri->toteuta_nayta($palauteolio);
                        // Ellei näytettävää oliota, viedään oppiaineen mukaisesti:
                    } else {
                        if ($parametriolio->oppiaine_kokon != Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY) {
                            $kokonaisuuskontrolleri->toteuta_nayta($palauteolio);
                        } else {
                            $kokonaisuuskontrolleri->toteuta_nayta($palauteolio);
                        }
                    }
                }
            }
        }
    }
}
示例#5
0
/**
 * Edellisen yleistetty ja hiukan muokattu versio.
 * Palauttaa Palaute-olion, jonka sisältönä on ne oliot (kokonaisuudet/
 * tehtävät/ratkaisut/tms), johon parametri 'naytettava' viittaa (Oliotyyppi-
 * luokan arvoja). 
 * 
 * @param Parametrit $parametriolio
 * @return Palaute $palauteolio
 */
function toteuta_nayta_oliot2($parametriolio)
{
    $kohde = $parametriolio->naytettava;
    $id_kokon = $parametriolio->id_kokon;
    $oppiaine_kokon = $parametriolio->oppiaine_kokon;
    $taso_kokon = $parametriolio->taso_kokon;
    $id_teht = $parametriolio->id_teht;
    $tietokantaolio = $parametriolio->get_tietokantaolio();
    $kayttajan_valtuudet = $parametriolio->get_valtuudet();
    $kieli_id = $parametriolio->kieli_id;
    $omaid = $parametriolio->get_omaid();
    $kokonaisuuskontrolleri = new Kokonaisuuskontrolleri($tietokantaolio, $parametriolio);
    $tehtavakontrolleri = new Tehtavakontrolleri($tietokantaolio, $parametriolio);
    $ratkaisukontrolleri = new Ratkaisukontrolleri($tietokantaolio, $parametriolio);
    $palauteolio = new Palaute();
    $nayta_valikot = false;
    $selitys_auki = Kokonaisuusolio::$SELITYS_KIINNI_ID;
    /* Palautetaan kohteen mukainen näkymä: */
    if ($kohde == Oliotyyppi::$KOKONAISUUS) {
        // Selityksen näyttämisen voisi jotenkin mahdollistaa tarvittaessa.
        $kokonaisuuskontrolleri->toteuta_nayta($palauteolio);
        $nayta_valikot = true;
        $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_KOKONAISUUS);
    } else {
        if ($kohde == Oliotyyppi::$TEHTAVA) {
            $tehtavakontrolleri->toteuta_nayta_tehtavat($palauteolio);
            $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA);
        } else {
            if ($kohde == Oliotyyppi::$RATKAISU) {
                $ratkaisukontrolleri->toteuta_nayta($palauteolio);
                $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_RATKAISU);
            } else {
                $kokonaisuuskontrolleri->toteuta_nayta($palauteolio);
                $nayta_valikot = true;
                $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_KOKONAISUUS);
                $palauteolio->set_ilmoitus("Tuntematon kohde (parametriolio->naytettava)!");
            }
        }
    }
    $palauteolio->set_valikkonaytto($nayta_valikot);
    return $palauteolio;
}