Ignore:
Timestamp:
03/14/09 14:57:32 (15 years ago)
Author:
nanardon
Message:
  • allow to have any variable per poll
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/Vote/Model/Vote.pm

    r23 r24  
    9999 
    100100    keys %attr or return; 
     101    my @online_f = qw(label start end owner password) 
    101102 
    102103    my $sth = $self->db->prepare_cached( 
    103104        q{update poll set } . 
    104         join(',', map { qq("$_" = ?) } sort keys %attr) . 
     105        join(',', map { qq("$_" = ?) } grep { exists $attr{$_} } @online_f) . 
    105106        q{ where id = ?} 
    106107    ); 
    107     $sth->execute((map { $attr{$_} } sort keys %attr), $voteid) 
     108    $sth->execute((map { $attr{$_} } grep { exists $attr{$_} } @online_f), $voteid) 
    108109        or $self->db->rollback; 
     110 
     111    # vote settings in settings table 
     112    foreach my $var (keys %attr) { 
     113        grep { $var eq $_ } @online_f and next; 
     114        $self->vote_set_settings($voteid, $var, $attr{$var}); 
     115    } 
     116    1 
    109117} 
    110118 
     
    145153    my $res = $sth->fetchrow_hashref; 
    146154    $sth->finish; 
     155    if ($res) { 
     156        my $get = $self->db->prepare_cached( 
     157            q{select var, val from settings where poll = ?} 
     158        ); 
     159        $get->execute($id); 
     160        while (my $set = $get->fetchrow_hashref) { 
     161            $res->{$set->{var}} = $set->{val}; 
     162        } 
     163    } 
    147164    $res 
     165} 
     166 
     167sub vote_set_settings { 
     168    my ($self, $poll, $var, $val) = @_; 
     169 
     170    my $upd = $self->db->prepare_cached( 
     171        q{update settings set val = ? where poll = ? and var = ?} 
     172    ); 
     173 
     174    warn "$val, $poll, $var"; 
     175    if ($upd->execute($val, $poll, $var) == 0) { 
     176        my $add = $self->db->prepare_cached( 
     177            q{insert into settings (poll, var, val) values (?,?,?)} 
     178        ); 
     179 
     180        $add->execute($poll, $var, $val); 
     181    } 
    148182} 
    149183 
Note: See TracChangeset for help on using the changeset viewer.