示例#1
0
 /**
  * Tallentaa linkin kuvan ja albumin/havainnon&lajin välille. Palauttaa
  * onnistuessaan arvon Kuva::OPERAATIO_ONNISTUI tai sitten virheilmoituksen.
  * 
  * <p>Huom! Parametriolion id_kuva-muuttujan pitää olla määritelty,
  * muuten ei tehdä mittään!</p>
  * 
  * HUOM! MENEEKÖ JÄRJESTYSLUKU-JUTTU SEKAISIN, JOS SAMALLE KUVALLE MONTA
  * LINKKIÄ?! 
  * 
  * @param \Parametrit $parametriolio & edessä on siksi, että saadaan
  * välitettyä tietoa parametriolion avulla kutsuvaan ohjelmaan. 
  */
 public static function tallenna_kuvalinkit(&$parametriolio)
 {
     $tietokantaolio = $parametriolio->tietokantaolio;
     $uuden_kuvan_id = $parametriolio->id_kuva;
     $palaute = Kuva::$VIRHE;
     // Onnistumisen tarkastelu:
     $onnistumiset_lkm = 0;
     $linkitettavat_lkm = 0;
     // Näille pitäisi luoda linkit.
     // Tämän avulla osataan näyttää bongausalbumi tallennuksen jälkeen.
     $vika_id_lj = Lajiluokka::$MUUTTUJAA_EI_MAARITELTY;
     if ($uuden_kuvan_id == Parametrit::$EI_MAARITELTY) {
         $palaute = "Uuden kuvan id ei ole m&auml;&auml;ritelty!";
     } else {
         $taulu = $parametriolio->get_kuvalinkkitaulunimi();
         $sarakenimet = $parametriolio->get_kuvalinkkitaulun_sarakenimitaulukko();
         // Jarjestysluvuksi laitetaan uuden kuvan id.
         $jarjestysluku = $uuden_kuvan_id;
         // tapaus: monen havainnon valinta:
         if ($parametriolio->kokoelmanimi == Kuva::$KUVAT_BONGAUS && !empty($parametriolio->havaintovalinnat)) {
             $valitut_hav_idt = $parametriolio->havaintovalinnat;
             $linkitettavat_lkm = sizeof($valitut_hav_idt);
             // Tallennetaan yksi kerrallaan linkit. Huom! Ainut keksimäni
             // järkevä tapa täällä on tallentaa kuvalinkki samaan lajiluokkaan
             // kuin havaintokin on. Näin sama kuva saatetaan linkittää eri
             // lajeihin, mutta tämähän on käyttäjän tyhmyyttä.. Toki se
             // korjaantuu havainnon lajiluokkaa korjaamalla.
             foreach ($valitut_hav_idt as $id_hav) {
                 //Pitää laji_id hakea kustakin havainnosta erike
                 $hav = new Havainto($tietokantaolio, $id_hav);
                 if ($hav->olio_loytyi_tietokannasta) {
                     $id_lj = $hav->get_lajiluokka_id();
                     $vika_id_lj = $id_lj;
                     $arvot = array($uuden_kuvan_id, $id_lj, $id_hav, $jarjestysluku);
                     $virheilmoitus = "";
                     $onnistuiko_linkki = $parametriolio->tietokantaolio->tallenna_uusi_rivi($taulu, $sarakenimet, $arvot, $virheilmoitus);
                     if ($onnistuiko_linkki == Tietokantaolio::$HAKU_ONNISTUI) {
                         $onnistumiset_lkm++;
                     }
                 }
             }
             // Albumin näyttöä varten (joka lajille on oma albumi):
             $parametriolio->id_lj = $vika_id_lj;
         } else {
             // Vain yksi tallennetaan:
             $linkitettavat_lkm = 1;
             // Yksi on bongaus:
             if ($parametriolio->kokoelmanimi == Kuva::$KUVAT_BONGAUS) {
                 $arvot = array($uuden_kuvan_id, $parametriolio->id_lj, $parametriolio->id_hav, $jarjestysluku);
             } else {
                 $arvot = array($uuden_kuvan_id, $parametriolio->id_alb, $jarjestysluku);
             }
             $virheilmoitus = "";
             $onnistuiko_linkki = $parametriolio->tietokantaolio->tallenna_uusi_rivi($taulu, $sarakenimet, $arvot, $virheilmoitus);
             if ($onnistuiko_linkki == Tietokantaolio::$HAKU_ONNISTUI) {
                 $onnistumiset_lkm++;
             }
         }
         if ($onnistumiset_lkm > 0 && $onnistumiset_lkm === $linkitettavat_lkm) {
             $palaute = Kuva::$OPERAATIO_ONNISTUI;
         } else {
             if ($linkitettavat_lkm == 0) {
                 $palaute = "Virhe! Yht&auml;&auml; linkki&auml; ei tallennettu, " . " koska valintoja ei havaittu!";
             } else {
                 $palaute = "Virhe! Vain " . $onnistumiset_lkm . " linkki&auml; " . "tallennettiin! Piti tallentaa " . $linkitettavat_lkm . " kpl.";
             }
         }
     }
     return $palaute;
 }