Changeset 30


Ignore:
Timestamp:
03/14/09 20:32:57 (15 years ago)
Author:
nanardon
Message:
  • add request for poll creation
Location:
trunk
Files:
2 added
2 edited

Legend:

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

    r29 r30  
    136136    my $sth = $self->db->prepare_cached( 
    137137        q{ 
    138         select start > now() as before, 
     138        select (start > now() or start is null) as before, 
    139139               "end" < now() as after 
    140140        from poll 
     
    696696} 
    697697 
     698sub poll_request_info { 
     699    my ($self, $rid) = @_; 
     700 
     701    my $sth = $self->db->prepare_cached( 
     702        q{select * from poll_request where id = ?} 
     703    ); 
     704 
     705    $sth->execute($rid); 
     706    my $res = $sth->fetchrow_hashref; 
     707    $sth->finish; 
     708    $res 
     709} 
     710 
     711sub poll_from_request { 
     712    my ($self, $rid, $passwd) = @_; 
     713    my $rinfo = $self->poll_request_info($rid) or return; 
     714 
     715    my $encpasswd = $self->gen_enc_passwd($passwd); 
     716 
     717    my $getpollid = $self->db->prepare_cached( 
     718        q{select nextval('poll_id_seq')} 
     719    ); 
     720    $getpollid->execute(); 
     721    my $newpollid = $getpollid->fetchrow_hashref->{nextval}; 
     722     
     723    my $newpoll = $self->db->prepare_cached( 
     724        q{insert into poll (id, label, owner, password) values (?,?,?,?)} 
     725    ); 
     726 
     727    $newpoll->execute($newpollid, $rinfo->{label}, $rinfo->{mail}, $encpasswd); 
     728 
     729    my $delreq = $self->db->prepare_cached( 
     730        q{delete from poll_request where id = ?} 
     731    ); 
     732 
     733    $delreq->execute($rid); 
     734    $self->db->commit; 
     735 
     736    $newpollid 
     737} 
     738 
     739sub create_poll_request { 
     740    my ($self, %info) = @_; 
     741 
     742    $info{mail} or return; 
     743    my $addreq = $self->db->prepare_cached( 
     744        q{insert into poll_request (id, label, mail) values (?,?,?)} 
     745    ); 
     746 
     747    my $reqid = gen_uid; 
     748 
     749    $addreq->execute($reqid, $info{label}, $info{mail}); 
     750    my $mailer = new Mail::Mailer 'smtp', Server => 'mailhost'; 
     751    $mailer->open({ 
     752        From => 'Voting system <nomail@nomail.com>', 
     753        To => $info{mail}, 
     754        Subject => 'Votre nouveau vote', 
     755    }); 
     756    print $mailer <<EOF; 
     757 
     758Vous avez demandez la création d'un nouveau vote: 
     759$info{label} 
     760 
     761Pour valider votre demande, veuiller allez visitez la page: 
     762$info{url}/$reqid 
     763 
     764A bientot 
     765EOF 
     766    $mailer->close; 
     767    $self->db->commit; 
     768    1; 
     769} 
     770 
    698771=head1 AUTHOR 
    699772 
Note: See TracChangeset for help on using the changeset viewer.