/** * Palauttaa taulukossa Henkilo-luokan olioina kaikki käyttäjät, * joiden valtuusarvo on vähintään $minimivaltuus. * @param type $minimivaltuus * @param type $taulunimi * @param type $tietokantaolio */ public static function hae_valtuutetut_henkilot($minimivaltuus, $taulunimi, $tietokantaolio) { $henkilot = Henkilo::hae_kaikki_henkilot($taulunimi, $tietokantaolio); $valtuutetut = array(); foreach ($henkilot as $ehdokas) { if ($ehdokas instanceof Henkilo) { if ($ehdokas->get_arvo(Henkilo::$sarakenimi_valtuudet) >= $minimivaltuus) { array_push($valtuutetut, $ehdokas); } } } return $valtuutetut; }
/** * Palauttaa suodatinlomakkeen koodin. Vähän täällä on turhan * paljon logiikkaa mukana, mutta välillä sitä on kyllä vaikea * välttää, tai sitten pitäisi tehdä osittain myös html * valmiiksi muualla. */ public function toteuta_nayta_suodatinlomake() { // Henkilöt: =========================================================== $name_arvo = Kayttajakontrolleri::$suodatin_name_omistaja_id; $taulunimi = Henkilo::$taulunimi; $omistaja = ""; // Täällä on myös omistaja, mutta se poistetaan myöhemmin. $kaikki_henkilot = Henkilo::hae_kaikki_henkilot($this->get_tietokantaolio()); $kohdehenkilot = array(); // Erotetaan omistaja & admin ja kohdehenkilöt: foreach ($kaikki_henkilot as $henkilo) { if ($henkilo instanceof Henkilo) { if ($henkilo->get_id() == $this->get_parametriolio()->omaid) { $omistaja = $henkilo; } else { if ($henkilo->get_arvo(Henkilo::$sarakenimi_valtuudet) == Valtuudet::$HALLINTA) { // Ei tehdä mitään. Hallitsijaa ei voi suodattaa :) } else { array_push($kohdehenkilot, $henkilo); } } } } // Tarkistetaan suodattimet ja lisätään suodatustiedot henkilo-olioihin: foreach ($kohdehenkilot as $henkilo) { if (Suodatin::on_jo_olemassa($omistaja->get_id(), $henkilo->get_id(), $this->get_tietokantaolio())) { $henkilo->setSuodatus_kohde(Henkilo::$suodatus_ON); } // Ja toisin päin: if (Suodatin::on_jo_olemassa($henkilo->get_id(), $omistaja->get_id(), $this->get_tietokantaolio())) { $henkilo->setSuodatus_lahde(Henkilo::$suodatus_ON); } } $paluupainike = Html::luo_button(Kayttajatekstit::$suodattimet_lomaketeksti_painike_takaisin, array(Maarite::onclick("piilota_suodatuslomake", array()))); $this->get_palauteolio()->set_sisalto($this->kayttajanakymat->nayta_suodatinlomake($omistaja, $kohdehenkilot, $paluupainike)); return $this->get_palauteolio(); }