/** * 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ää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ää linkkiä ei tallennettu, " . " koska valintoja ei havaittu!"; } else { $palaute = "Virhe! Vain " . $onnistumiset_lkm . " linkkiä " . "tallennettiin! Piti tallentaa " . $linkitettavat_lkm . " kpl."; } } } return $palaute; }