/**
 * Poistaa yhden tai useamman tietueen tietokannasta. Poistettavien
 * tunnisteet (esim. id) annetaan parametritaulukossa.
 *
 * @param string $tunnistesarakenimi Sarakkeen nimi, jota vastaavasta
 * tietokantasarakkeesta tunnistetta etsitään.
 * @param array $valinnat
 * @param Tietokantaolio $tietokantaolio
 * @param string $taulun_nimi Sen taulun nimi, josta tietueet poistetaan.
 * @return string Palauttaa viestin suorituksen onnistumisesta, joka
 * näytetään käyttäjälle.
 */
function poista_tietueet($tunnistesarakenimi, &$valinnat, $tietokantaolio, $taulun_nimi)
{
    $vastaus = '';
    $lkm = 0;
    if (!isset($valinnat)) {
        $vastaus = "Poisto epäonnistui!\n                    Valintataulukko on määrittelemätön";
    } else {
        if ($valinnat == "" || sizeof($valinnat) == 0) {
            $vastaus = "Poisto epäonnistui!\n                    Yhtään valintaa ei löytynyt!";
        } else {
            foreach ($valinnat as $id) {
                /********************kerkkasten erikoistoiminto********************/
                $emoidkysely = "SELECT emo_id\n                            FROM viestit\n                            WHERE id = '" . $id . "'\n                            AND taso = '2'";
                $emoidhaku = $tietokantaolio->tee_OMAhaku($emoidkysely);
                $emooliotaulu = $tietokantaolio->hae_osumarivit_olioina($emoidhaku);
                if (sizeof($emooliotaulu) > 0) {
                    $emoid = $emooliotaulu[0]->emo_id;
                    if (isset($emoid)) {
                        muuta_kommenttien_lkm(-1, $emoid, $tietokantaolio);
                    }
                }
                /******************************************************************/
                // poista_rivi poistaa korkeintaan yhden tietueen (rajoitettu).
                $poisto = $tietokantaolio->poista_rivi($taulun_nimi, $tunnistesarakenimi, $id);
                if ($poisto == "onnistui") {
                    $lkm++;
                }
            }
            $vastaus = "Tietueita poistettiin onnistuneesti " . $lkm . " kpl.";
        }
    }
    return $vastaus;
}
/** Metodi, joka tallentaa uuden viestin tiedot tietokantaan. Palauttaa arvon
 * false, jos tallennus epäonnistuu, muuten tallennetun viestin id:n.
 *
 * &oma_id on viestin kirjoittajan id.
 * @param int $emoviestin_id on luku, joka joko antaa kommentoitavan viestin
 * id:n tai arvon -1, jolloin uusi viesti ei ole mikään kommentti.
 * KORJAA: JOS VIESTI ON KOMMENTTI!
 */
function tallenna_uusi_viesti($oma_id, &$teema_id, &$aihe, &$viesti, $on_kommentti, $emoviestin_id, $tietokantaolio)
{
    $onnistu = false;
    $tallennushetki_sek = time();
    $kommenttien_lkm = 0;
    $taso = 1;
    if ($on_kommentti) {
        $kommenttien_lkm = -1;
        $taso = 2;
    }
    $kyselylause = "INSERT INTO viestit\n                            (henkilo_id, tallennushetki_sek, teema_id,\n                            aihe, viesti, taso, kommenttien_lkm, emo_id)\n                    VALUES\n                        ({$oma_id},{$tallennushetki_sek},{$teema_id},\n                        '{$aihe}','{$viesti}',{$taso},{$kommenttien_lkm},\n                          {$emoviestin_id})";
    mysql_query($kyselylause) or die("Viestin lisäys epäonnistui! (Yhteys- tai ohjelmavirhe.\n        Kokeile uudestaan!)");
    $vastaus_id = mysql_insert_id();
    // Hakee viimeksi lisätyn rivin id:n.
    // Tämä ei ole kovin vakaalla pohjalla välttämättä, voisi metodin parantaa.
    // Saattaa olla mahdollista, että kommenttien lkm on systemaattisesti
    // väärä (sitä ei tarkisteta koskaan).
    if ($on_kommentti) {
        muuta_kommenttien_lkm(1, $emoviestin_id, $tietokantaolio);
    }
    if (mysql_affected_rows() == 1) {
        $onnistu = $vastaus_id;
        // Aktiivisuusmerkintä:
        $viimeksi_aktiivi = time();
        $aktiivisuuslaji = Aktiivisuus::$UUDEN_VIESTIN_TALLENNUS;
        paivita_aktiivisuus($oma_id, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji);
    }
    return $onnistu;
}