/**
 * Näyttää ylläpitäjälle lomakkeen, josta käyttäjien valtuuksia voidaan
 * muuttaa.
 * @param Tietokantaolio $tietokantaolio
 */
function nayta_valtuuslomake($tietokantaolio)
{
    // Haetaan tarvittavat henkilötiedot:
    $hakulause = "SELECT id, etunimi, sukunimi, valtuudet FROM henkilot";
    $valtuustaulu = $tietokantaolio->tee_omahaku_oliotaulukkopalautteella($hakulause);
    $lomakehtml = "<div class='tietolomake'>" . "<p class='keskitys'><b>K&auml;ytt&auml;j&auml;tiedot</b></p>" . "<table summary='uudet_tiedot' align='center'>" . "<tr><th>Nimi</th><th>K&auml;ytt&ouml;oikeus</th>" . "<th>Toimenpide</th></tr>";
    if (sizeof($valtuustaulu) > 0) {
        foreach ($valtuustaulu as $henkilotiedot) {
            $lomakehtml .= "<tr>";
            $lomakehtml .= "<td>" . $henkilotiedot->etunimi;
            $lomakehtml .= " " . $henkilotiedot->sukunimi . "</td>";
            $lomakehtml .= "<td>" . Valtuudet::hae_valtuuden_kuvaus($henkilotiedot->valtuudet) . "</td>";
            $lomakehtml .= "<td><form method='post'" . "action='{$_SERVER['PHP_SELF']}?henkilo_id={$henkilotiedot->id}'>" . "<input type='submit' name='erikoistoiminta'" . "value='" . Painikkeet::$muokkaa_valtuudet_value . "'/></form></td></tr>";
        }
        $lomakehtml .= "<tr><td></td><td><form method='post'" . "action='{$_SERVER['PHP_SELF']}'>" . "<input type='submit' name='erikoistoiminta'" . "value='" . Painikkeet::$poistu_valtuuksista_value . "'/></form></td><td></td></tr>";
        $lomakehtml .= "</table></div>";
    } else {
        $lomakehtml = "Yht&auml;&auml;n henkil&ouml;&auml; ei l&ouml;ytynyt!";
    }
    return $lomakehtml;
}
 /**
  * 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;
 }