/** Metodi, joka puhdistaa ja tarkastaa omien tietojen muutokset tiedot.
* Palauttaa merkkijonon "kunnossa", ellei korjattavaa, muuten virheviestin.
 *
 * Huom: Salasanaa ei voida tuoda sen säilytystavan takia, vaan kentät jätetään
 * tyhjiksi. Ellei mitään ilmesty niihin, vanhat tunnukset jäävät voimaan.
 * Samoin käyttäjätunnusta ei tuoda, koska muuten tarkistuksessa sen todetaan
 * olevan jo käytössä.
 *
 * @param Parametrit $parametriolio
 * @return <type>
 */
function tarkista_henkilotietojen_muutokset(&$parametriolio)
{
    $etun = $parametriolio->etun;
    $sukun = $parametriolio->sukun;
    $lempin = $parametriolio->lempin;
    $komm = $parametriolio->komm;
    $ktunnus = $parametriolio->uusktunnus;
    $sala = $parametriolio->uussalasana;
    $salavahvistus = $parametriolio->salavahvistus;
    $eosoite = $parametriolio->eosoite;
    $palaute = "kunnossa";
    $etun = Yleismetodit::tarkista_syote($etun, true);
    $sukun = Yleismetodit::tarkista_syote($sukun, true);
    $lempin = Yleismetodit::tarkista_syote($lempin, true);
    $komm = Yleismetodit::tarkista_syote($komm, true);
    $eosoite = Yleismetodit::tarkista_syote($eosoite, true);
    // Tarkistetaan, etteivät tunnukset muutu puhdistuksessa:
    if ($ktunnus != Yleismetodit::tarkista_syote($ktunnus, true) || $sala != Yleismetodit::tarkista_syote($sala, true) || $salavahvistus != Yleismetodit::tarkista_syote($salavahvistus, true)) {
        $palaute = "K&auml;ytt&auml;j&auml;tunnuksessa tai salasanassa on\n                    sopimattomia merkkej&auml; tai tyhj&auml;&auml;\n                    p&auml;iss&auml;! Korjaa ne!";
    } else {
        if ($eosoite == '' || $etun == '' || $sukun == '') {
            $palaute = "Jokin pakollisista kentist&auml; on tyhj&auml;!\n                    (Salasana ja k&auml;ytt&auml;j&auml;tunnus saavat olla\n                    tyhji&auml; -> eiv&auml;t vaihdu)\n                    Kokeile uudestaan!";
        } else {
            if ($ktunnus != "" && Yleismetodit::arvo_kaytetty("henkilot", "kayttajatunnus", $ktunnus)) {
                $palaute = "K&auml;ytt&auml;j&auml;tunnus on jo k&auml;yt&auml;ss&auml;!\n                     Valitse toinen!";
            } else {
                if ($sala != $salavahvistus) {
                    $palaute = "Salasana ja sen vahvistus eiv&auml;t t&auml;sm&auml;&auml;!\n                    Kirjoita ne uudelleen!";
                }
            }
        }
    }
    return $palaute;
}
Esempio n. 2
0
/**
 * Tarkistaa kuvan tiedot ja ladatun tiedoston ominaisuudet
 * @param <type> $ladattu_kuva Palvelimelle ladattu kuvatiedosto.
 * @param <type> $kuvaotsikko_kuva
 * @param <type> $kuvaselitys_kuva
 * @param <type> $vuosi_kuva
 * @param <type> $kk_kuva
 * @param <type> $paiva_kuva
 * @param <type> $uusi
 * @param <type> $lataustiedosto_kuva
 * @return <type>
 */
function tarkista_kuvatiedot($ladattu_kuva, &$kuvaotsikko_kuva, &$kuvaselitys_kuva, &$vuosi_kuva, &$kk_kuva, &$paiva_kuva, $uusi)
{
    $tarkistuksen_tulos = "ok";
    $tyhjatunnus = -1;
    // Tietokantaan tallennetaan -1, kun halutaan tyhjä.
    /* Tehdään rivinvaihdot html:ksi. */
    $kuvaselitys_kuva = Yleismetodit::huolehdi_rivinvaihdoista($kuvaselitys_kuva);
    // Seuraava tehdään vain uudelle. Muokkauksessa kuvaa ei pysty
    // toistaiseksi vaihtamaan.
    if ($uusi) {
        // lataustarkistusmetodi heittää virheen sattuessa poikkeuksen:
        try {
            lataustarkistus_kuva($ladattu_kuva);
        } catch (Exception $poikkeus) {
            $tarkistuksen_tulos = $poikkeus->getMessage();
        }
    }
    // Ellei virheitä havaittu, mennään tarkistuksessa eteenpäin:
    if ($tarkistuksen_tulos == 'ok') {
        // Putsataan:
        $kuvaotsikko_kuva = Yleismetodit::tarkista_syote($kuvaotsikko_kuva, false);
        $kuvaselitys_kuva = Yleismetodit::tarkista_syote($kuvaselitys_kuva, false);
        if ($vuosi_kuva == "") {
            $vuosi_kuva = $tyhjatunnus;
        }
        if ($kk_kuva == "") {
            $kk_kuva = $tyhjatunnus;
        }
        if ($paiva_kuva == "") {
            $paiva_kuva = $tyhjatunnus;
        }
        // Vuosiluku saa olla tyhjä tai muuten pitää olla 4 numeroa.
        if (preg_match('/^\\d\\d\\d\\d$/', $vuosi_kuva) == 0 && $vuosi_kuva != $tyhjatunnus) {
            $tarkistuksen_tulos = "Vuosiluvun pit&auml;&auml; olla 4-numeroinen\n                                    luku (esim. 1999) tai tyhj&auml;!";
        } else {
            if (preg_match('/^\\d\\d$/', $kk_kuva) == 0 && preg_match('/\\d/', $kk_kuva) == 0 && $kk_kuva != $tyhjatunnus || $kk_kuva < -1 || $kk_kuva == 0 || $kk_kuva > 12) {
                $tarkistuksen_tulos = "Kuukauden pit&auml;&auml; olla\n                                luku v&auml;lilt&auml; 1-12 tai tyhj&auml;!";
            } else {
                if (preg_match('/^\\d\\d$/', $paiva_kuva) == 0 && preg_match('/\\d/', $paiva_kuva) == 0 && $paiva_kuva != $tyhjatunnus || $paiva_kuva < -1 || $paiva_kuva == 0 || $paiva_kuva > 31) {
                    $tarkistuksen_tulos = "P&auml;iv&auml;n pit&auml;&auml; olla\n                                luku v&auml;lilt&auml; 1-31 tai tyhj&auml;!";
                } else {
                    $tarkistuksen_tulos = Palautteita::$lomaketiedot_ok;
                }
            }
        }
    }
    return $tarkistuksen_tulos;
}
Esempio n. 3
0
 /**
  * Palauttaa html-linkkejä, jotka vievät kyseiseen tehtävään. Nämä
  * on tarkoitus sijoittaa tehtäväsivulle, jotta tehtävien selaaminen helpottuu.
  * 
  * @param Parametrit $parametriolio
  * @return <type>
  */
 function hae_tehtavalinkit($parametriolio)
 {
     $tehtavalinkki_html = "";
     $id_kokon = $parametriolio->id_kokon;
     /* Haetaan tehtävät: */
     $tietokantaolio = $parametriolio->get_tietokantaolio();
     $tehtavat = $this->hae_tehtavat();
     if (empty($tehtavat)) {
         // Jos muutat tätä, ota huomioon myös vastaanottava metodi.
         $tehtavalinkki_html = Tekstit::$tehtava_ilm_ei_loytynyt;
     } else {
         $laskuri = 1;
         // Kertoo tehtävän juoksevan numeron (juokseva nro).
         $pituus = 25;
         // Linkin suurin pituus (ylimenevä osa katkaistaan)
         foreach ($tehtavat as $tehtava) {
             /*$tehtavalinkki_html .= "<a href='index.php".
                   "?id_kokon=".$id_kokon.
                   "&kieli_id=".$parametriolio->kieli_id.
                   "&taso_kokon=".$parametriolio->taso_kokon.
                   "&oppiaine_kokon=".$parametriolio->oppiaine_kokon.
                   "&id_teht=".$tehtava->getId().
                   "&".Oliotyyppi::$naytettava_name."=".
                   Palaute::$NAYTETTAVA_OLIOTYYPPI_TEHTAVA.
                   "#tehtava".$tehtava->getId()."' ".
               "title='".$tehtava->getOtsikko()."'>".
               $laskuri.". ".
                   Yleismetodit::leikkaa_merkkijono($tehtava->getOtsikko(), $pituus).
               "</a>";*/
             $tehtavalinkki_html .= "<a href='index.php" . "?id_teht=" . $tehtava->getId() . "#tehtava" . $tehtava->getId() . "' " . "title='" . $tehtava->getOtsikko() . "'>" . $laskuri . ". " . Yleismetodit::leikkaa_merkkijono($tehtava->getOtsikko(), $pituus) . "</a>";
             $laskuri++;
         }
     }
     return $tehtavalinkki_html;
 }
Esempio n. 4
0
 /**
  * Palauttaa koostelinkit ja toimintapainikkeet html-koodina. Huomaa:
  * Parametrina annetaan vain sellaiset elementit, joihin käyttäjällä
  * ainakin katsomisoikeudet. Tosin muokkausoikeudet pitää täällä vielä
  * erikseen selvittää (jos mahd muokata). Viittausolioissa on valmiina 
  * numerointi, jolloin tulee samat kuin varsinaisessa sisällössä.
  * 
  * @param Kooste $kooste Kooste-luokan olio
  * @param array $elementit Elementti-luokan oliot
  * @param array $viittausoliot Oliot, joihin elementit viittaavat.
  * @param bool $wrapped Jos true, niin palautteen ympärille lisätään div,
  * muuten ei.
  * @return type
  */
 public function luo_koostelinkit($kooste, $elementit, $viittausoliot, $wrapped)
 {
     $html = "";
     $maxpituus = 22;
     // Linkin kirjainten maksimimäärä. Muu leikataan.
     /*======================== käyttäjän oikeudet ( ========*/
     //$koosteoikeudet = $kooste->hae_kayttajan_oikeudet($omaid);
     /*====================================================*/
     // Varmistetaan, että elementtejä ja olioita on yhtä paljon:
     if (sizeof($elementit) === sizeof($viittausoliot)) {
         for ($i = 0; $i < sizeof($elementit); $i++) {
             $painike_alas = "";
             $painike_ylos = "";
             $olio = $viittausoliot[$i];
             $elementti = $elementit[$i];
             $html_raaka = $olio->getOtsikkomerkinta() . " ";
             if ($olio instanceof Kokonaisuusolio) {
                 $html_raaka .= Yleismetodit::leikkaa_merkkijono($olio->getOtsikko(), $maxpituus);
             } else {
                 if ($olio instanceof Tehtava) {
                     $html_raaka .= Yleismetodit::leikkaa_merkkijono($olio->getOtsikko(), $maxpituus);
                 } else {
                     if ($olio instanceof Ratkaisu) {
                         $html_raaka .= Yleismetodit::leikkaa_merkkijono($olio->getVastaus(), $maxpituus);
                     }
                 }
             }
             $linkki = Html::luo_a_linkto("#elem" . $elementti->get_id(), $html_raaka . " " . $painike_alas . $painike_ylos, array(Attr::classs("koostelinkki")));
             $html .= Html::luo_div($linkki, array(Attr::title($elementti->hae_otsikko())));
         }
     } else {
         $html = Tekstit::$kooste_virheilm_linkeissa_erimaara_elem_ja_olioita;
     }
     if ($wrapped) {
         $html_wrapped = Html::luo_div($html, array(Attr::id(Koostenakymat::$kooste_otsikkolinkit_id)));
     } else {
         // Not wrapped..
         $html_wrapped = $html;
     }
     return $html_wrapped;
 }
Esempio n. 5
0
 function tunnukset_ok($uusi_olio)
 {
     $ok = true;
     $muokkaustapa = $this->get_tunnusten_muokkaus();
     $salavahvistus = $this->get_salavahvistus();
     $sala = $this->get_arvo(Henkilo::$sarakenimi_salasana);
     // Mihin tahansa if-lauseeseen joutuminen merkitsee virhettä.
     // Käyttäjätunnus jo käytössä? Muokatessa tarkistetaan vain, jos
     // sitä on tarkoitus muuttaa.
     if ($uusi_olio || $muokkaustapa === Tunnukset::$kumpikin || $muokkaustapa === Tunnukset::$vain_kayttis) {
         $taulunimi = Henkilo::$taulunimi;
         $sarakenimi = Henkilo::$sarakenimi_kayttajatunnus;
         $ktunnus = $this->get_arvo(Henkilo::$sarakenimi_kayttajatunnus);
         if (Yleismetodit::arvo_jo_kaytossa($taulunimi, $sarakenimi, $ktunnus, $this->tietokantaolio)) {
             $this->lisaa_virheilmoitus(Kayttajatekstit::$tunnus_jo_kaytossa);
             $ok = false;
         }
         // Käyttäjätunnuksen merkit ja pituus:
         if (!Tunnukset::kayttajatunnus_ok($ktunnus)) {
             $this->lisaa_virheilmoitus(Kayttajatekstit::$tunnus_kayttajatunnus_pituus_tai_merkkivirhe . "<br/>" . Kayttajatekstit::$tunnus_kayttajatunnuksen_min_pituus_on . " " . Tunnukset::$pituus_min_kayttajatunnus . ". " . Kayttajatekstit::$tunnus_kayttajatunnuksen_max_pituus_on . " " . Tunnukset::$pituus_max_kayttajatunnus . ".<br/>" . Kayttajatekstit::$tunnus_vain_seuraavat_merkit_sopivat . ": " . Tunnukset::$sallitut_merkit);
             $ok = false;
         }
     }
     // Salasana tarkistetaan vain uudelle oliolle tai muokattaessa:
     if ($uusi_olio || $muokkaustapa === Tunnukset::$kumpikin || $muokkaustapa === Tunnukset::$vain_salis) {
         // Salasana ja vahvistus täsmäävät?
         if ($salavahvistus !== $sala) {
             $this->lisaa_virheilmoitus(Kayttajatekstit::$tunnus_vahvistus_ei_tasmaa);
             $ok = false;
         }
         // Salasanan merkit ja pituus:
         if (!Tunnukset::salasana_ok($sala)) {
             $this->lisaa_virheilmoitus(Kayttajatekstit::$tunnus_salasana_pituus_tai_merkkivirhe . "<br/>" . Kayttajatekstit::$tunnus_salasanan_min_pituus_on . " " . Tunnukset::$pituus_min_salasana . ". " . Kayttajatekstit::$tunnus_salasanan_max_pituus_on . " " . Tunnukset::$pituus_max_salasana . ".<br/>" . Kayttajatekstit::$tunnus_vain_seuraavat_merkit_sopivat . ": " . Tunnukset::$sallitut_merkit);
             $ok = false;
         }
     }
     return $ok;
 }
 function testaa_merkkijonometodeita()
 {
     /* Testataan merkkijonometodia "php_yleinen/Yleismetodit.php.
      * yleismetodit::hae_merkkijonot($teksti, $alkumj, $loppumj, $hae_kaikki)":*/
     $this->lisaa_kommentti("<h2>Testataan merkkijonometodia 'hae_merkkijonot'</h2>");
     $this->lisaa_kommentti("Testataan merkkijonometodia 'hae_merkkijonot'<br/>");
     $teksti = "Auto ajoi (200 km/h) kaarteeseen. Olipa (siinä) vauhtia.";
     $alkumj = "(";
     $loppumj = ")";
     $hae_kaikki = true;
     $this->lisaa_kommentti("Yritetään etsiä merkkijonosta <br/>");
     $this->lisaa_kommentti("'<b>" . $teksti . "</b>'<br/>");
     $this->lisaa_kommentti("kaikki sulkujen väliin jäävät merkkijonot eli '200 km/h' " . "ja 'siinä'<br/>");
     $tulostaulukko = Yleismetodit::hae_merkkijonot($teksti, $alkumj, $loppumj, $hae_kaikki);
     if (sizeof($tulostaulukko) == 2 && $tulostaulukko[0] == "200 km/h" && $tulostaulukko[1] == "siinä") {
         $this->lisaa_kommentti("OIKEIN! Loytyi merkkijonot '" . $tulostaulukko[0] . "' ja '" . $tulostaulukko[1] . "'");
         $this->lisaa_kommentti("<br/><br/>");
     } else {
         if (empty($tulostaulukko)) {
             $this->lisaa_virheilmoitus("<div class='virhe'>Virhe! Mitään ei löytynyt!</div>");
             $virheiden_lkm++;
         } else {
             $taul = "<div class='virhe'>Virhe! Taulukon sisältö:<br/>";
             for ($i = 0; $i < sizeof($tulostaulukko); $i++) {
                 $taul .= $i + 1 . ". merkkijono: " . $tulostaulukko[$i] . "<br/>";
             }
             $taul .= "</div>";
             $this->lisaa_virheilmoitus($taul);
             $virheiden_lkm++;
         }
     }
     /********************************/
     $teksti = "Auto ajoi (200 km/h) kaarteeseen. Olipa (siinä) vauhtia.";
     $alkumj = "(";
     $loppumj = ")";
     $hae_kaikki = false;
     $this->lisaa_kommentti("Yritetään etsiä merkkijonosta <br/>");
     $this->lisaa_kommentti("'<b>" . $teksti . "</b>'<br/>");
     $this->lisaa_kommentti("1. sulkujen väliin jäävä merkkijono eli '200 km/h'<br/>");
     $tulostaulukko = Yleismetodit::hae_merkkijonot($teksti, $alkumj, $loppumj, $hae_kaikki);
     if (sizeof($tulostaulukko) == 1 && $tulostaulukko[0] == "200 km/h") {
         $this->lisaa_kommentti("OIKEIN! Loytyi merkkijono '" . $tulostaulukko[0] . "'");
         $this->lisaa_kommentti("<br/><br/>");
     } else {
         if (empty($tulostaulukko)) {
             $this->lisaa_virheilmoitus("<div class='virhe'>Virhe! Mitään ei löytynyt!</div>");
             $virheiden_lkm++;
         } else {
             $taul = "<div class='virhe'>Virhe! Taulukon sisältö:<br/>";
             for ($i = 0; $i < sizeof($tulostaulukko); $i++) {
                 $taul .= $i + 1 . ". merkkijono: " . $tulostaulukko[$i] . "<br/>";
             }
             $taul .= "</div>";
             $this->lisaa_virheilmoitus($taul);
         }
     }
     /********************************/
     $teksti = "Auto ajoi (200 km/h) kaarteeseen. Olipa (siinä) vauhtia.";
     $alkumj = "Auto";
     $loppumj = "Oli";
     $hae_kaikki = true;
     $this->lisaa_kommentti("Yritetään etsiä merkkijonosta <br/>");
     $this->lisaa_kommentti("'<b>" . $teksti . "</b>'<br/>");
     $this->lisaa_kommentti("sanojen 'Auto' ja 'Oli' väliin jäävä merkkijono " . "eli ' ajoi (200 km/h) kaarteeseen. '<br/>");
     $tulostaulukko = yleismetodit::hae_merkkijonot($teksti, $alkumj, $loppumj, $hae_kaikki);
     if (sizeof($tulostaulukko) == 1 && $tulostaulukko[0] == " ajoi (200 km/h) kaarteeseen. ") {
         $this->lisaa_kommentti("OIKEIN! Loytyi merkkijono '" . $tulostaulukko[0] . "'");
         $this->lisaa_kommentti("<br/><br/>");
     } else {
         if (empty($tulostaulukko)) {
             $this->lisaa_virheilmoitus("<div class='virhe'>Virhe! Mitään ei löytynyt!</div>");
             $virheiden_lkm++;
         } else {
             $taul = "<div class='virhe'>Virhe! Taulukon sisältö:<br/>";
             for ($i = 0; $i < sizeof($tulostaulukko); $i++) {
                 $taul .= $i + 1 . ". merkkijono: " . $tulostaulukko[$i] . "<br/>";
             }
             $taul .= "</div>";
             $this->lisaa_virheilmoitus($taul);
         }
     }
     /*****************/
     /* Haetaan a-kirjainten välistä. Kolme peräkkäistä aata pitäisi mennä
      * niin, että eka on lopetus, toka aloitus ja kolmas lopetus ja väliin
      * jäävää tyhjää ei palauteta. */
     $teksti = "Auto ajoi (200 km/h) kaaarteeseen. Olipa (siinä) vauhtia.";
     $alkumj = "a";
     $loppumj = "a";
     $hae_kaikki = true;
     $this->lisaa_kommentti("Yritetään sitten etsiä merkkijonosta (huom 3 a-kirjainta) <br/>");
     $this->lisaa_kommentti("'<b>" . $teksti . "</b>'<br/>");
     $this->lisaa_kommentti("'a'-kirjainten (pienten) väliin jäävät merkkijonot.<br/>");
     $this->lisaa_kommentti("<br/>");
     $tulostaulukko = yleismetodit::hae_merkkijonot($teksti, $alkumj, $loppumj, $hae_kaikki);
     if (sizeof($tulostaulukko) == 2 && $tulostaulukko[0] == "joi (200 km/h) k" && $tulostaulukko[1] == " (siinä) v") {
         $this->lisaa_kommentti("OIKEIN! Loytyi seuraavat merkkijonot:<br/>");
         for ($i = 0; $i < sizeof($tulostaulukko); $i++) {
             $this->lisaa_kommentti($i + 1 . ". merkkijono: " . $tulostaulukko[$i] . "<br/>");
         }
         $this->lisaa_kommentti("<br/><br/>");
     } else {
         if (empty($tulostaulukko)) {
             $this->lisaa_virheilmoitus("<div class='virhe'>Virhe! Mitään ei löytynyt!</div>");
             $virheiden_lkm++;
         } else {
             $taul = "<div class='virhe'>Virhe! Taulukon sisältö:<br/>";
             for ($i = 0; $i < sizeof($tulostaulukko); $i++) {
                 $taul .= $i + 1 . ". merkkijono: " . $tulostaulukko[$i] . "<br/>";
             }
             $taul .= "</div>";
             $this->lisaa_virheilmoitus($taul);
         }
     }
     /*****************/
     $teksti = "Auto ajoi (200 km/h) kaarteeseen. Olipa (siinä) vauhti.";
     $alkumj = "a";
     $loppumj = "a";
     $hae_kaikki = true;
     $this->lisaa_kommentti("Yritetään sitten etsiä merkkijonosta <br/>");
     $this->lisaa_kommentti("'<b>" . $teksti . "</b>'<br/>");
     $this->lisaa_kommentti("'a'-kirjainten (pienten) väliin jäävät merkkijonot:<br/>");
     $this->lisaa_kommentti("<br/>");
     $tulostaulukko = yleismetodit::hae_merkkijonot($teksti, $alkumj, $loppumj, $hae_kaikki);
     if (sizeof($tulostaulukko) == 2 && $tulostaulukko[0] == "joi (200 km/h) k" && $tulostaulukko[1] == "rteeseen. Olip") {
         $this->lisaa_kommentti("OIKEIN! Loytyi seuraavat merkkijonot:<br/>");
         for ($i = 0; $i < sizeof($tulostaulukko); $i++) {
             $this->lisaa_kommentti($i + 1 . ". merkkijono: " . $tulostaulukko[$i] . "<br/>");
         }
         $this->lisaa_kommentti("<br/><br/>");
     } else {
         if (empty($tulostaulukko)) {
             $this->lisaa_virheilmoitus("<div class='virhe'>Virhe! Mitään ei löytynyt!</div>");
             $virheiden_lkm++;
         } else {
             $taul = "<div class='virhe'>Virhe! Taulukon sisältö:<br/>";
             for ($i = 0; $i < sizeof($tulostaulukko); $i++) {
                 $taul .= $i + 1 . ". merkkijono: " . $tulostaulukko[$i] . "<br/>";
             }
             $taul .= "</div>";
             $this->lisaa_virheilmoitus($taul);
         }
     }
     /*****************/
     $this->lisaa_kommentti("Yritetään sitten etsiä merkkijonosta <br/>");
     $this->lisaa_kommentti("'<b>" . $teksti . "</b>'<br/>");
     $this->lisaa_kommentti("vain 1. a-kirjainten väliin jäävä merkkijonot.<br/>");
     $this->lisaa_kommentti("<br/>");
     $hae_kaikki = false;
     $tulostaulukko = yleismetodit::hae_merkkijonot($teksti, $alkumj, $loppumj, $hae_kaikki);
     if (sizeof($tulostaulukko) == 1 && $tulostaulukko[0] == "joi (200 km/h) k") {
         $this->lisaa_kommentti("OIKEIN! Loytyi seuraavat merkkijonot:<br/>");
         for ($i = 0; $i < sizeof($tulostaulukko); $i++) {
             $this->lisaa_kommentti($i + 1 . ". merkkijono: " . $tulostaulukko[$i] . "<br/>");
         }
         $this->lisaa_kommentti("<br/><br/>");
     } else {
         if (empty($tulostaulukko)) {
             $this->lisaa_virheilmoitus("<div class='virhe'>Virhe! Mitään ei löytynyt!</div>");
             $virheiden_lkm++;
         } else {
             $taul = "<div class='virhe'>Virhe! Taulukon sisältö:<br/>";
             for ($i = 0; $i < sizeof($tulostaulukko); $i++) {
                 $taul .= $i + 1 . ". merkkijono: " . $tulostaulukko[$i] . "<br/>";
             }
             $taul .= "</div>";
             $this->lisaa_virheilmoitus($taul);
         }
     }
     $this->lisaa_kommentti("<h2>Merkkijonometodin 'yleismetodit::hae_merkkijonot' testaus loppu!</h2>");
     /***************************************************************************/
     $this->lisaa_kommentti("<h2>Testataan luokan Kaavaeditori metodia\n                       'muotoile_kaavat(teksti)'</h2>");
     $this->lisaa_kommentti("Syötetään metodiin merkkijono '{@4⋅[@4##6@]=5@}'\n                   ja katsotaan, näyttääkö tulos hyvältä. Alla tulos:<br/><br/>");
     $teksti = '{@4⋅[@4##6@]=5@}';
     $tulos = Kaavaeditori::muotoile_kaavat($teksti);
     $this->lisaa_kommentti($tulos);
     $this->lisaa_kommentti("<a href='../php_yleinen/matematiikka/murtolukutesti.php'>" . "Murtolukutesti</a><br/>");
     $this->lisaa_kommentti("<br/>");
     "<h2>Loppu luokan Kaavaeditori metodin 'muotoile_kaavat(teksti)' testi LOPPU</h2>";
     $this->lisaa_kommentti("******************************************************************<br/>");
 }
Esempio n. 7
0
 /**
  * Hakee annetusta tekstistä pikkukaavat eli merkkijonot, jotka ovat
  * merkkijonojen $pikkukaavan_alku ja $pikkukaavan_loppu välissä, ja 
  * muotoilee kaavat samantyylisiksi kuin varsinaiset kaavat.
  *
  * Hyödyntää metodia php_yleinen/php_yleismetodit.php:
  * 'hae_merkkijonot($teksti, $alkumj, $loppumj, $hae_kaikki)'
  *
  * Jos tekstistä löytyy $kaavan_alku mutta ei $kaavan_loppu, ei kyseistä
  * merkkijonoa muokata.
  *
  * Ellei mitään kaavaa löydy, tai tapahtuu muuta kummaa, palautetaan sama teksti.
  * Muuten palautetaan saatu teksti, jossa kaavamerkinnät on korvattu html-
  * muotoiluilla.
  * 
  * Pikkukaavoissa ei voi käyttää neliöjuuria tai murtolukumuotoja, vaan
  * kyse on lähinnä fonttittyyleistä, koosta, joidenkin merkkien muotoilusta
  * yms. Pikkukaavat ovat useimmiten rivien osia, joten niitä ei aseteta 
  * taulukon sisään.
  *
  * @param <type> $teksti
  * @param <type> $kaavan_alku
  * @param <type> $kaavan_loppu
  * @param <type> $jako_alku
  * @param <type> $jako_loppu
  * @return string muotoiltu html-koodi
  */
 static function muotoile_pikkukaavat($teksti)
 {
     $palautus = $teksti;
     // Haetaan tekstistä kaavat taulukkoon:
     $alkumj = Kaavaeditori::$pikkukaavan_alku;
     $loppumj = Kaavaeditori::$pikkukaavan_loppu;
     $hae_kaikki = true;
     $raakakaavat = Yleismetodit::hae_merkkijonot($teksti, $alkumj, $loppumj, $hae_kaikki);
     /* Tarkempaan työhön aletaan vain, jos kaavoja löytyy */
     if (!empty($raakakaavat)) {
         $valmiit_kaavat = array();
         // Käydään läpi jokainen raakakaava: HUOM katso metodi
         // muotoile_merkit() tiedostossa yhteiset/php_yhteismetodit.php!
         foreach ($raakakaavat as $kaava) {
             // Muotoillaan merkkejä hiukan. Miinusmerkit on kiva olla
             // pitkiä (ja hiukan tekstistä erillään). Yhdysviivat kaavoissa
             // merkitsevät käytännössä aina miinusmerkkiä, joten muutetaan ne
             // oikeiksi. Tehdään se täällä, koska
             // tekstissä väliviivaa tarvitaan kuitenkin.
             // NÄIN EI TOIMI MIKSI?? $kaava = str_replace("-",Merkit::$miinusmerkki,$kaava);
             $kaava = str_replace("-", "−", $kaava);
             // Näin taas toimii!
             $kaava = str_replace("+", "<span class='erillaan'>+</span>", $kaava);
             // Seuraava estää merkinnän z^*, jota käytetään kompleksiluvuissa.
             //$kaava = str_replace("*","<span class='erillaan'>⋅</span>", $kaava);
             // Tämäkin aiheuttaa taas sen ongelman, ettei kaavaan voi lisätä
             // esimerkiksi css-määrettä font-style väliviivan takia..
             //$kaava = str_replace("−","<span class='erillaan'>−</span>", $kaava);
             $kaava = str_replace("−", " − ", $kaava);
             // Tämä täällä, koska muualla pitää olla mahis laittaa
             // esim. merkki => (ohjelmointi tms.)
             // Huom! =-merkkiin ei voi lisätä yleensä html-koodia, koska merkkiä käytetään
             // html:n sisällä (attribuutit)"
             $kaava = str_replace("=", " = ", $kaava);
             // Sama kuin yllä:
             $kaava = str_replace(":", " : ", $kaava);
             // Nää oli ennen muotoile_kaavat yhteismetodissa:
             //================ Kokeillaan toimiiko 1.12.2015 ===============
             $kaava = str_replace("⋅", "<span class='erillaan'>⋅</span>", $kaava);
             $kaava = str_replace("≈", "<span class='erillaan'>≈</span>", $kaava);
             $kaava = str_replace("≠", "<span class='erillaan'>≠</span>", $kaava);
             $kaava = str_replace("║", "<span class='erillaan'>║</span>", $kaava);
             //================ Kokeillaan toimiiko loppu ===================
             // Tehdään kursivoinnin poisto ennen varsinaista kaavamuotoilua.
             $kaava = str_replace("(ioff_b)", "<span class='ital_off'>", $kaava);
             $kaava = str_replace("(ioff_e)", "</span>", $kaava);
             $kaavahtml = Html::luo_span($kaava, array(Attr::classs(Kaavaeditori::$pikkukaava_class)));
             array_push($valmiit_kaavat, $kaavahtml);
         }
         // Lisätään jokaiseen raakakaavaan alku- ja
         // loppumerkit, jotta myös kyseiset merkit poistuvat.
         $kaavojen_lkm = sizeof($raakakaavat);
         for ($i = 0; $i < $kaavojen_lkm; $i++) {
             $raakakaavat[$i] = Kaavaeditori::$pikkukaavan_alku . $raakakaavat[$i] . Kaavaeditori::$pikkukaavan_loppu;
             // Käydään vielä läpi valmiit kaavat ja suoristetaan vielä sulut.
             // Huomaa, ettei tätä voi tehdä aiemmin, koska sulut ovat osa
             // monia erikoismerkintöjä.
             $valmiit_kaavat[$i] = str_replace("(", "<span class='ital_off'>(</span>", $valmiit_kaavat[$i]);
             $valmiit_kaavat[$i] = str_replace(")", "<span class='ital_off'>)</span>", $valmiit_kaavat[$i]);
         }
         // Korvataan tekstin raakakaavat valmiilla kaavoilla:
         $palautus = str_replace($raakakaavat, $valmiit_kaavat, $teksti);
     }
     return $palautus;
 }