#lijstje toon|met <item>|zonder <item>|leeg
use utf8;
sub lijstje
{
    my ($msg, $dbh) = @_, my ($server, $nick, $datum, $tijd, $bericht, $result, %results, $return, @results);
    ($server, $nick, $cmd, $bericht) = split(/ /, $msg, 4);

    ($result) = mysqlselect($dbh, sprintf('SELECT * FROM `lijstje` WHERE server=%s AND nick=%s'
                                         ,$dbh->quote($server)
                                         ,$dbh->quote($nick)
                                         )
                           );

    if ($cmd eq 'met' || $cmd eq 'zonder')
    {
        # Oude items in het lijstje
        if ($result)
        { %results = map { $_ => 1 } split(/,\s*/, $result->{lijstje}); }

        # Voeg nieuwe items toe, of verwijder ze
        foreach $bericht (split(/,\s*/, $bericht))
        {
            $results{$bericht} = 1 if $cmd eq 'met';
            delete($results{$bericht}) if $cmd eq 'zonder';
        }

        $result = join(", ", sort { lc $a cmp lc $b } keys %results);
        mysqldo($dbh, sprintf('REPLACE INTO lijstje VALUES(\'\', %s, %s, %s)'
                             ,$dbh->quote($server)
                             ,$dbh->quote($nick)
                             ,$dbh->quote($result)
                             )
               );
       $return = $result;
    }
    elsif ($cmd eq 'leeg')
    {
        mysqldo($dbh, sprintf('DELETE FROM `lijstje` WHERE server=%s AND nick=%s'
                             ,$dbh->quote($server)
                             ,$dbh->quote($nick)
                             )
               );
        $return = "";
    }

    if ($cmd =~ m/^(toon|met|zonder|leeg)$/)
    {
        $return = $result->{lijstje} if $cmd eq 'toon';
        return $return eq '' ? "Geen lijstje voor $nick." : "Je lijstje bevat nu: $return";
    }
    else
    { return "Invoer is onduidelijk. Zie: help lijstje"; }
}

sub lijstje_help
{
    my $return;
    $return  = "Houd een lijstje bij: lijstje toon|met <item>|zonder <item>|leeg\n";
    $return .= "Bv.: lijstje met bananen, peren -> voeg 'bananen' en 'peren' toe aan het lijstje\n";
    $return .= "Bv.: lijstje zonder peren -> verwijder 'peren' uit het lijstje\n";
    $return .= "Bv.: lijstje toon -> toon het lijstje\n";
    $return .= "Bv.: lijstje leeg -> maak het lijstje leeg\n";
    return $return;
}

1;
