/** * 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 kokonaisuudessaan uuden kokonaisuuden tallennuksen tietokantaan. * Palauttaa Palauteolio-luokan olion. * * Järjestysluvuksi kokonaisuus saa id:n. Järjestyslukua voi myöhemmin * muuttaa vaihtamalla jonkin toisen kokonaisuuden kanssa, jolloin ei pitäisi * tulla päällekkäisyyksiä. * * @return <type> */ function toteuta_tallenna_uusi(&$palauteolio) { $parametriolio = $this->get_parametriolio(); $tallennuskesken = $parametriolio->tallennuskesken; $omaid = $parametriolio->get_omaid(); $oppiaine_kokon = $parametriolio->get_oppiaine_kokon(); $otsikko_kokon = $parametriolio->get_otsikko_kokon(); $tiivis_kokon = $parametriolio->get_tiivis_kokon(); $selitys_kokon = $parametriolio->get_selitys_kokon(); $taso_kokon = $parametriolio->get_taso_kokon(); $laajennetun_id_kokon = $parametriolio->get_laajennetun_id_kokon(); $kieli_id = $parametriolio->get_kieli_id(); $ylakokonaisuuden_id_kokon = $parametriolio->get_ylakokonaisuuden_id_kokon(); $jarjestysnro_kokon = $parametriolio->get_jarjestysnro_kokon(); $nakyvyys_kokon = $parametriolio->nakyvyys_kokon; $tietokantaolio = $parametriolio->get_tietokantaolio(); $palauteolio = new Palaute(); $linkit = ""; // Kokonaisuuslinkit $sisalto = ""; $ilmoitus = ""; $tallennetun_id = ""; $valikot_nayta = true; $kokonaisuusoliot = array(); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_YLEINEN); // Tallennettava kokonaisuus: $kokonaisuus = new Kokonaisuusolio(Kokonaisuusolio::$MUUTTUJAA_EI_MAARITELTY, $this->get_tietokantaolio()); // Lisätään kokonaisuudelle saadut parametrit: $kokonaisuus->set_arvo($omaid, Kokonaisuusolio::$sarakenimi_henkilo_id); $kokonaisuus->set_arvo($otsikko_kokon, Kokonaisuusolio::$sarakenimi_otsikko); $kokonaisuus->set_arvo($tiivis_kokon, Kokonaisuusolio::$sarakenimi_tiivis); $kokonaisuus->set_arvo($selitys_kokon, Kokonaisuusolio::$sarakenimi_selitys); $kokonaisuus->set_arvo($taso_kokon, Kokonaisuusolio::$sarakenimi_taso); $kokonaisuus->set_arvo($oppiaine_kokon, Kokonaisuusolio::$sarakenimi_oppiaine); $kokonaisuus->set_arvo($laajennetun_id_kokon, Kokonaisuusolio::$sarakenimi_laajennetun_id); $kokonaisuus->set_arvo($kieli_id, Kokonaisuusolio::$sarakenimi_kieli); $kokonaisuus->set_arvo($ylakokonaisuuden_id_kokon, Kokonaisuusolio::$sarakenimi_ylakokonaisuuden_id); $kokonaisuus->set_arvo($nakyvyys_kokon, Kokonaisuusolio::$sarakenimi_nakyvyys); // Tallennus tietokantaan: $palaute = $kokonaisuus->tallenna_uusi(); // Jos tiedoissa on vikaa, esim. tyhjä otsikko: if ($palaute != Kokonaisuusolio::$OPERAATIO_ONNISTUI) { $valikot_nayta = false; $ilmoitus_kokon = $kokonaisuus->tulosta_virheilmoitukset(); $uusi = true; $id_kokon = -1; $sisalto = $this->kokonaisuusnakymat->nayta_kokonaisuuslomake($id_kokon, $omaid, $uusi, $ilmoitus_kokon, $tietokantaolio, $oppiaine_kokon, $otsikko_kokon, $tiivis_kokon, $selitys_kokon, $taso_kokon, $jarjestysnro_kokon, $laajennetun_id_kokon, $ylakokonaisuuden_id_kokon, $kieli_id, $nakyvyys_kokon, Toimintonimet::$kokonaisuustoiminto, $this, $parametriolio->kaavakieli, Elementti::$MUUTTUJAA_EI_MAARITELTY, Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY); $ilmoitus = $ilmoitus_kokon; } else { $tallennetun_id = $kokonaisuus->get_id_tietokanta(); /* Asetetaan järjestysluku samaksi kuin kokonaisuuden id. Näin * varmistetaan se, ettei tule samoja. */ $id = $kokonaisuus->get_id(); $kokonaisuus->set_arvo($id, Kokonaisuusolio::$sarakenimi_jarjestysnro); $onnistuiko = $kokonaisuus->tallenna_muutokset(); if ($onnistuiko == Kokonaisuusolio::$OPERAATIO_ONNISTUI) { $ilmoitus = Tekstit::$ilm_kokon_lisays_ok; //Aktiivisuusmerkintä: $aktiivisuuspalaute = paivita_aktiivisuus($omaid, $tietokantaolio, time(), Aktiivisuus::$UUDEN_KOKONAISUUDEN_TALLENNUS); if (!$aktiivisuuspalaute) { $this->lisaa_virheilmoitus(Tekstit::$virheilm_aktiivisuuden_tallennus_eiok); } else { $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK); } } else { $ilmoitus = Tekstit::$virheilm_kokon_tallennus_ok_jarjnro_eiok . " " . $kokonaisuus->tulosta_virheilmoitukset(); } //================================================================= // Asetetaan sessiomuuttujat oikein, jotta näkyy myös // luettelossa. Yläkokonaisuus auki (sillä on ainakin yksi lapsi, // tämä) ja tämä kiinni (tällä ei voi olla lapsia, koska juuri luotu). $muuttujanimi_ylakok = Parametrit::linkkisessiomuuttujan_nimi($ylakokonaisuuden_id_kokon); $_SESSION[$muuttujanimi_ylakok] = Kokonaisuusolio::$LINKKI_AUKI; $muuttujanimi = Parametrit::linkkisessiomuuttujan_nimi($tallennetun_id); $_SESSION[$muuttujanimi] = Kokonaisuusolio::$LINKKI_KIINNI; //================================================================= $parametriolio->id_kokon = $id; $palauteolio2 = new Palaute(); if ($tallennuskesken) { $parametriolio->uusi = false; $this->toteuta_nayta_kokonaisuuslomake($palauteolio2); } else { $palauteolio2 = $this->toteuta_nayta($palauteolio2); } $sisalto = $palauteolio2->get_sisalto(); $linkit = $palauteolio2->get_linkkihtml(); } $palauteolio->set_ilmoitus($ilmoitus); $palauteolio->set_sisalto($sisalto); $palauteolio->set_muokatun_id($tallennetun_id); $palauteolio->set_valikkonaytto($valikot_nayta); $palauteolio->set_kokonaisuudet($kokonaisuusoliot); $palauteolio->nayta_kiintolinkit(); $palauteolio->set_linkkihtml($linkit); $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_KOKONAISUUS); return $palauteolio; }
/** * Hakee kaikki yhteen kokonaisuuteen liittyvät tehtävät ja palauttaa ne * kauniisti html-koodina palauteoliossa. * * @param Palaute $palauteolio */ function toteuta_nayta_tehtavat(&$palauteolio) { $parametriolio = $this->get_parametriolio(); $id_kokon = $parametriolio->id_kokon; $omaid = $parametriolio->get_omaid(); $kayttajan_valtuudet = $parametriolio->get_valtuudet(); $tietokantaolio = $parametriolio->get_tietokantaolio(); $tehtava_html = ""; $sisalto = ""; $palaa_nappi = ""; /* Paluu kokonaisuuksiin. */ $uusi_teht_nappi = ""; // Asetetaan kieli, taso ja oppiaine tehtävän perusteella, kun urlista // tullaan: if ($palauteolio->naytto_urlin_mukaan()) { $parametriolio->set_naytto_urlin_mukaan(true); // Isäntäkokonaisuus haetaan tietokannasta, jos teht_id kunnollinen: $teht = $this->get_olio(); if ($teht instanceof Tehtava && $teht->olio_loytyi_tietokannasta) { $kokon_id = $teht->getKokon_id(); $kokon = new Kokonaisuusolio($kokon_id, $tietokantaolio); // Jos löytyi, asetetaan kieli, taso ja oppiaine, jottei tarvita // urlissa: if ($kokon instanceof Kokonaisuusolio && $kokon->olio_loytyi_tietokannasta) { // Asetetaan nämä, voipi olla tarvetta: $parametriolio->id_kokon = $kokon_id; aseta_kieli_taso_ja_oppiaine($kokon->getKieli(), $kokon->getOppiaine(), $kokon->getTaso(), $parametriolio); // Tekstien käännös. Kielet::kaanna($parametriolio->get_kieli_id()); } } } /* Uusia tehtäviä voivat lisätä (valtuuksiltaan) vähintään muokkaajat. * Kannattaa kyllä olla varovainen, jos muuttaa valtuuksia.. */ if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) { try { $onsubmit_funktionimi = "nayta_tehtavalomake"; $onsubmit_parametrit = array($id_kokon); /* */ $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon=" . $id_kokon . "&" . "uusi=1"); $input_maaritteet = array('name' => Toimintonimet::$tehtavatoiminto, 'value' => Painikkeet::$tehtava_uusi_value); $uusi_teht_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } catch (Exception $poikkeus) { $sisalto .= "Uusi tehtävä -painike: " . $poikkeus->getMessage(); } } try { $onsubmit_funktionimi = "nayta_kokonaisuudet"; $onsubmit_parametrit = ""; /* Ei parametreja */ $form_maaritteet = array('method' => 'post', 'class' => 'rinnakkain', 'action' => "{$_SERVER['PHP_SELF']}?" . "id_kokon={$id_kokon}"); $input_maaritteet = array('name' => Toimintonimet::$kokonaisuustoiminto, 'value' => Painikkeet::$palaa_kokonaisuuksiin); $palaa_nappi = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); } catch (Exception $poikkeus) { $sisalto .= "Palaa-painike: " . $poikkeus->getMessage(); } $sisalto .= $uusi_teht_nappi; // Haetaan tehtävät: $tehtavat = $this->hae_tehtavat(); if (empty($tehtavat)) { $palauteolio->set_ilmoitus(Tekstit::$tehtava_ilm_ei_loytynyt); $palauteolio->set_linkkihtml($palaa_nappi); } else { $laskuri = 0; // Tehtävän nro foreach ($tehtavat as $tehtava) { if ($tehtava instanceof Tehtava) { $laskuri++; $tehtava->setNro($laskuri); $painikkeet = $this->luo_tehtavapainikkeet($tehtava->getId()); // Jos on kirjautunut käyttäjä, näytetään väripallolla, onko // yksityinen vai julkinen: if ($kayttajan_valtuudet >= Valtuudet::$TEHTAVA_LISAYS) { if ($tehtava->getNakyvyys() + 0 === Nakyvyys::$YKSITYINEN) { $tehtava->setNakyvyysmerkkiPrivate(); } else { $tehtava->setNakyvyysmerkkiPublic(); } } $sisalto .= $this->tehtavanakymat->tulosta_tehtava($tehtava, $omaid, $painikkeet); } } // Haetaan tehtävälinkit, jos tehtäviä löytynyt. Lisätään // myös paluupainike linkkien eteen. $linkkihtml = $this->hae_tehtavalinkit($parametriolio); if ($linkkihtml === Tekstit::$tehtava_ilm_ei_loytynyt) { $palauteolio->set_linkkihtml($palaa_nappi); } else { $palauteolio->set_linkkihtml($palaa_nappi . $linkkihtml); } } /* Tämä ottaa palauteolion samalla käyttöön */ $palauteolio->set_sisalto($sisalto); // Haetaan kokonaisuuden tiedot: $kokon = new Kokonaisuusolio($id_kokon, $tietokantaolio); if ($kokon->olio_loytyi_tietokannasta) { $kokon_otsikko = $kokon->getOtsikko(); } else { $kokon_otsikko = "?"; } /* Lisätään otsikkotieto: */ $palauteolio->set_otsikkotarkennus($kokon_otsikko); $palauteolio->set_naytettava_oliotyyppi(Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA); // Kieli- yms valikot pois näkyvistä: $palauteolio->set_valikkonaytto(false); // Fixed linkit -näkymä: $palauteolio->set_nayttotapa(Html_koodi::$sisaltoelem_fixed); return $palauteolio; }
/** * Näyttää kaikkien nykyiseen kieleen (kaikki tasot ja oppiaineet) liittyvien * kokonaisuuksien otsikoiden, joista klikkaamalla pääsee tarkastelemaan * kokonaisuutta. * * Näytetään julkiset ja omat yksityiset kokonaisuudet. Tulevaisuudessa * voi lisätä tarvittaessa mahdollisuuden antaa oikeuksia muille. * * IDEA: toisen koosteen kloonaaminen voisi olla sallittavaa. Tällöin voi * kloonista tehdä omanlaisen, mutta toisen tekemä jää ennalleen. * * @param Palaute $palauteolio */ public function toteuta_nayta_koosteet(&$palauteolio) { $koosteet = array(); $omaid = $this->get_kayttaja()->get_id(); $kieli = $this->get_parametriolio()->kieli_id; $oppiaine = $this->get_parametriolio()->oppiaine_kokon; $taso = $this->get_parametriolio()->taso_kokon; // Järjestäminen ei oikein onnistu täällä erikoisen nimenrakennuksen // takia (kielien, tasojen ja oppiaineiden nimet mukana, joita ei ole // tietokannassa). $hakulause = "SELECT kt.id from " . Kooste::$taulunimi . " AS kt" . " JOIN " . Henkilo::$taulunimi . " AS hlot" . " ON kt." . Kooste::$sarakenimi_henkilo_id . "=hlot.id" . " WHERE kt." . Kooste::$sarakenimi_nakyvyys . "=" . Nakyvyys::$JULKINEN . " OR kt." . Kooste::$sarakenimi_henkilo_id . "=" . $omaid . " ORDER BY hlot." . Henkilo::$sarakenimi_sukunimi . "," . " kt." . Kooste::$sarakenimi_organisaatio; $osumat = $this->get_tietokantaolio()->tee_omahaku_oliotaulukkopalautteella($hakulause); foreach ($osumat as $kooste_tk_olio) { $kooste = new Kooste($kooste_tk_olio->id, $this->get_tietokantaolio()); // Jos löytyi tietokannasta, lisätään koosteisiin: if ($kooste->olio_loytyi_tietokannasta) { array_push($koosteet, $kooste); } } //============ luodaan koosterivit (yksi rivi - yksi kooste): ========== $rivit = array(); foreach ($koosteet as $kooste) { if ($kooste instanceof Kooste) { $nayttopainike = ""; $muokkauspainike = ""; $poistopainike = ""; $tekija_id = $kooste->get_arvo(Kooste::$sarakenimi_henkilo_id); $tekija = new Henkilo($tekija_id, $this->get_tietokantaolio()); $org = $kooste->get_arvo(Kooste::$sarakenimi_organisaatio); if (!empty($org)) { $org .= "_"; } $nimike = $tekija->get_arvo(Henkilo::$sarakenimi_sukunimi) . "_" . $org . Kielet::hae_kielen_nimi_lyhennos($kooste->get_arvo(Kooste::$sarakenimi_kieli)) . "_" . strtoupper(Oppiaineet::hae_oppiaineen_nimi2($kooste->get_arvo(Kooste::$sarakenimi_oppiaine))) . "_" . Koulutasot::hae_koulutason_nimi($kooste->get_arvo(Kooste::$sarakenimi_taso), false) . "_" . $kooste->get_arvo(Kooste::$sarakenimi_nimi) . " "; //========= Näyttöpainike ==================================== $nayttopainike = $this->koostenakymat->luo_koosteen_nayttopainike($kooste); //========= Muokkauspainike ja Poistopainike vain tietyille ==== // Täällä tarkistetaan oikeudet eka: $user = $this->get_kayttaja(); if ($user->olio_loytyi_tietokannasta) { if ($tekija_id + 0 === $user->get_id() + 0 || $user->get_arvo(Henkilo::$sarakenimi_valtuudet) + 0 === Valtuudet::$HALLINTA) { $muokkauspainike = $this->koostenakymat->luo_koosteen_muokkauspainike($kooste); $poistopainike = $this->koostenakymat->luo_koosteen_poistopainike($kooste); } } if ($kooste->getNakyvyys() + 0 === Nakyvyys::$JULKINEN) { $on_julkinen = true; } else { $on_julkinen = false; } $rivi = $this->koostenakymat->luo_koosterivi($nimike, $nayttopainike, $muokkauspainike, $poistopainike, $on_julkinen); array_push($rivit, $rivi); //============================================================== } } $tuloste = $this->koostenakymat->nayta_koosteet($rivit); //====================================================================== // Luodaan paluu-painike: $paluupainike = $this->koostenakymat->create_button_gobacktoarticles(); // Luodaan Uusi kooste -painike, jos käyttäjä kirjautunut ja hänellä // koostevaltuudet: $uusikoostepainike = ""; if (Henkilo::on_kirjautunut($omaid, $this->get_tietokantaolio())) { if ($this->get_kayttaja()->get_arvo(Henkilo::$sarakenimi_valtuudet) >= Valtuudet::$KOOSTE_LISAYS) { $uusikoostepainike = $this->koostenakymat->create_button_new_summary(); } } $palauteolio->set_sisalto($tuloste); $palauteolio->set_linkkihtml($paluupainike . $uusikoostepainike); $palauteolio->set_nayttotapa(Html_koodi::$sidenav_fixed); $palauteolio->set_valikkonaytto(false); }