/** * Palauttaa arvon True, jos joku toinen on muokkaamassa kokonaisuutta, eli * jos se on lukittu. Muuten palauttaa false, jolloin voi rauhassa mennä * muokkaamaan kokonaisuutta. * * Lukitusvirhetapauksessa tämä palauttaa kuitenkin arvon true, koska näin * tilanne korjaantuu. Lukitusvirhe ei kuitenkaan viittaa siihen, * että joku toinen käsittelisi samaa kokonaisuutta, vaan pikemminkin, * että joku on yrittänyt tallentaa muutoksia session vanhentumisen * jälkeen. * * @param Kokonaisuusolio $kokonaisuus * @param type $omaid */ private function lukitus_estaa_muokkauksen($kokonaisuus, $omaid) { $stop = true; // Näissä tapauksissa muokkaus on ok: if ($kokonaisuus->getLukitus() + 0 === Kokonaisuusolio::$LUKITUS_OFF || $kokonaisuus->getLukitus() + 0 === Kokonaisuusolio::$VIRHELUKITUS || $kokonaisuus->getLukitus() + 0 === $omaid) { $stop = false; } return $stop; }
/** * Toteuttaa lomakkeen näytön sekä muokkausta että uuden luomista varten. * @return Palaute $palauteolio */ function toteuta_nayta_kokonaisuuslomake(&$palauteolio) { $parametriolio = $this->get_parametriolio(); $palauteolio = new Palaute(); $lomakkeen_naytto_ok = false; // Näytetäänkö lomaketta vai ei. $ilmoitus = ""; $sisalto = ""; // Tulossa koosteesta? Tarkistetaan: $elem_id = $parametriolio->elementti_id; $elem = Elementti::$MUUTTUJAA_EI_MAARITELTY; $elem_kandi = new Elementti($elem_id, $this->get_tietokantaolio()); if ($elem_kandi->olio_loytyi_tietokannasta) { $elem = $elem_kandi; } $elemryhma_id = $parametriolio->elemryhma_id; $elemryhma = Elementtiryhma::$MUUTTUJAA_EI_MAARITELTY; $elemryhma_kandi = new Elementtiryhma($elemryhma_id, $this->get_tietokantaolio()); if ($elemryhma_kandi->olio_loytyi_tietokannasta) { $elemryhma = $elemryhma_kandi; } // Tätä tarvitaan, ellei muokkauslomakkeeseen syystä tai toisesta mennä: $perunappi = Html::luo_forminput_painike(array(), array(Attr::name(Toimintonimet::$kokonaisuustoiminto), Attr::value(Painikkeet::$PERU_KOKON_MUUTOSTEN_TALLENNUS_VALUE))); /* Näytetään lomake, jonka avulla voi luoda uuden kokonaisuuden: */ $omaid = $parametriolio->get_omaid(); if ($parametriolio->get_uusi()) { $ilmoitus = ""; $palauteolio->set_valikkonaytto(false); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK); $lomakkeen_naytto_ok = true; } else { // Vanhan muokkaus: tällöin lukitus on tärkeä! $id_muokattava = $parametriolio->id_kokon; $muokattava = new Kokonaisuusolio($id_muokattava, $this->get_tietokantaolio()); if ($muokattava->olio_loytyi_tietokannasta) { $lukitusarvo = $muokattava->getLukitus(); //===================== LUKITUS ================================ // Jos lukitus päällä, ei päästetä muokkaamaan! if (is_numeric($lukitusarvo) && $lukitusarvo != Kokonaisuusolio::$LUKITUS_OFF && $lukitusarvo != $omaid) { $ilmoitus = Tekstit::$virheilm_kokonaisuus_lukittu_muokkaus_eiok; $sisalto = Tekstit::$virheilm_kokonaisuus_lukittu_muokkaus_eiok; $sisalto .= $perunappi; } else { // Kun ei lukittu vieraalle: // Lukitaan kokonaisuus, ettei kukaan muu pääse samaan aikaan // muokkaamaan samaa kokonaisuutta: $lukon_tila = Kokonaisuusolio::$LUKITUS_ON; $lukitus = $muokattava->aseta_kokonaisuuden_lukitus($omaid, $lukon_tila); /* Ilmoitus, ellei lukitus jostakin syystä onnistunut: */ if ($lukitus != Kokonaisuusolio::$OPERAATIO_ONNISTUI) { $ilmoitus = " " . Tekstit::$virheilm_kokonaisuuden_lukitus_eiok; $sisalto = " " . Tekstit::$virheilm_kokonaisuuden_lukitus_eiok . "<br/>" . $muokattava->tulosta_virheilmoitukset() . "<br/> omaid=" . $omaid . ", nyk lukon tila=" . $lukitusarvo . " ja haluttu_lukon_tila=" . $lukon_tila; $sisalto .= "<br/>" . $perunappi; } else { $lomakkeen_naytto_ok = true; } } $sisalto = $sisalto . "<br/> " . $muokattava->tulosta_kaikki_ilmoitukset() . "<br/>"; } else { // Oliota ei löytynyt tietokannasta: $sisalto = Tekstit::$ilm_kokon_ei_loytynyt . $perunappi; } } //====================================================================== if ($lomakkeen_naytto_ok) { $sisalto = $this->kokonaisuusnakymat->nayta_kokonaisuuslomake($parametriolio->id_kokon, $omaid, $parametriolio->uusi, $parametriolio->ilmoitus_kokon, $parametriolio->get_tietokantaolio(), $parametriolio->oppiaine_kokon, $parametriolio->otsikko_kokon, $parametriolio->tiivis_kokon, $parametriolio->selitys_kokon, $parametriolio->taso_kokon, $parametriolio->jarjestysnro_kokon, $parametriolio->laajennetun_id_kokon, $parametriolio->ylakokonaisuuden_id_kokon, $parametriolio->kieli_id, $parametriolio->nakyvyys_kokon, Toimintonimet::$kokonaisuustoiminto, $this, $parametriolio->kaavakieli, $elem, $elemryhma); } $palauteolio->set_sisalto($sisalto); $palauteolio->set_valikkonaytto(false); $palauteolio->set_virhekoodi(Palaute::$VIRHEKOODI_KAIKKI_OK); $palauteolio->set_ilmoitus($ilmoitus); $palauteolio->set_nayttotapa(Html_koodi::$sisaltoelem_levea); return $palauteolio; }