Committer: gprochaev
LJSUP-8077. Owner's election poll results should be always available through admin toolU trunk/htdocs/admin/comm/elections.bml
Modified: trunk/htdocs/admin/comm/elections.bml =================================================================== --- trunk/htdocs/admin/comm/elections.bml 2011-03-04 04:44:14 UTC (rev 18474) +++ trunk/htdocs/admin/comm/elections.bml 2011-03-04 07:36:30 UTC (rev 18475) @@ -47,73 +47,85 @@ my $poll = LJ::Poll->new ($poll_id); - unless ($poll->is_closed) { - my $create = LJ::TimeUtil->mysqldate_to_time($poll->prop('createdate')); - my $delta = time - $create; - my $create_time = strftime "%B %e %Y", localtime ($create); - my $close_time = strftime "%B %e %Y", localtime (int(($delta / (21 * 86400)) + 1) * (21 * 86400) + $create); + my $create = LJ::TimeUtil->mysqldate_to_time($poll->prop('createdate')); + my $delta = time - $create; + my $create_time = strftime "%B %e %Y", localtime ($create); + my $close_time = strftime "%B %e %Y", localtime (int(($delta / (21 * 86400)) + 1) * (21 * 86400) + $create); - my @qs = $poll->questions; - my @items = $qs[0]->items; + my @qs = $poll->questions; + my @items = $qs[0]->items; - $ret .= "<br/><h3>Active election:</h3>"; - $ret .= "<p>Election period: from $create_time to $close_time</p>"; + $ret .= $poll->is_closed + ? "<br/><h3>Closed election:</h3>" + : "<br/><h3>Active election:</h3>"; - my $maintainers = LJ::load_rel_user($comm->{userid}, 'A'); - my $users = LJ::load_userids(@$maintainers); - my @alive_mainteiners; - my $total = 0; - foreach my $u (values %$users) { - if ($u && $u->is_visible && $u->can_manage($comm) && $u->check_activity(90)) { - push @alive_mainteiners, $u; - } - $total++ if $u; + $ret .= "<p>Election period: from $create_time"; + $ret .= $poll->is_closed ? "</p>" : " to $close_time</p>"; + + my $maintainers = LJ::load_rel_user($comm->{userid}, 'A'); + my $users = LJ::load_userids(@$maintainers); + my @alive_mainteiners; + my $total = 0; + foreach my $u (values %$users) { + if ($u && $u->is_visible && $u->can_manage($comm) && $u->check_activity(90)) { + push @alive_mainteiners, $u; } + $total++ if $u; + } - $ret .= "<p>Maintainers (participants of the election): " . @alive_mainteiners . "</p>"; + $ret .= "<p>Maintainers (participants of the election): " . @alive_mainteiners . "</p>"; - my $sth; - my $dbr = LJ::get_db_reader(); - if ($poll->is_clustered) { - $sth = $poll->journal->prepare("SELECT value, userid FROM pollresult2 WHERE pollid=? AND pollqid=? AND journalid=?"); - $sth->execute($poll->pollid, 1, $poll->journalid); - } else { - $sth = $dbr->prepare("SELECT value, userid FROM pollresult WHERE pollid=? AND pollqid=?"); - $sth->execute($poll->pollid, 1); - } + my $sth; + my $dbr = LJ::get_db_reader(); + if ($poll->is_clustered) { + $sth = $poll->journal->prepare("SELECT value, userid FROM pollresult2 WHERE pollid=? AND pollqid=? AND journalid=?"); + $sth->execute($poll->pollid, 1, $poll->journalid); + } else { + $sth = $dbr->prepare("SELECT value, userid FROM pollresult WHERE pollid=? AND pollqid=?"); + $sth->execute($poll->pollid, 1); + } - my %result = (); - my %result_users = (); - my $i = 0; - while (my @row = $sth->fetchrow_array) { - $result{$row[0]}++; - $result_users{$row[1]} = $row[0]; - $i++; - } + my %result = (); + my %result_users = (); + my $i = 0; + while (my @row = $sth->fetchrow_array) { + $result{$row[0]}++; + $result_users{$row[1]} = $row[0]; + $i++; + } - $ret .= "<p>Maintainers (voted already): " . $i . "</p>"; + $ret .= "<p>Maintainers (voted already): " . $i . "</p>"; - $sth = $poll->journal->prepare ("SELECT userid, args FROM inviterecv WHERE commid = ?"); - $sth->execute ($poll->journalid); - while (my @row = $sth->fetchrow_array) { - my $args = $row[1]; - next unless $args =~ m#admin=1#; - my $u = LJ::load_userid($row[0]); - $total++ if $u; - } + $sth = $poll->journal->prepare ("SELECT userid, args FROM inviterecv WHERE commid = ?"); + $sth->execute ($poll->journalid); + while (my @row = $sth->fetchrow_array) { + my $args = $row[1]; + next unless $args =~ m#admin=1#; + my $u = LJ::load_userid($row[0]); + $total++ if $u; + } - $ret .= "<p>Maintainers (total, including non-participants of the election): " . $total . "</p>"; + $ret .= "<p>Maintainers (total, including non-participants of the election): " . $total . "</p>"; - $ret .= "<br/><h3>Current state of election:</h3>"; - $ret .= "<ul style='padding:0;list-style:none;'>"; - foreach my $u (values %$users) { - my $vote_for = $items[$result_users{$u->userid} - 1]->{item}; - LJ::Poll->clean_poll(\$vote_for); - $ret .= "<li>" . LJ::ljuser($u) . " — " . ( $result_users{$u->userid} ? " voted for " . $vote_for : " not voted yet ") . "</li>"; - } + $ret .= "<br/><h3>Current state of election:</h3>"; + $ret .= "<ul style='padding:0;list-style:none;'>"; + foreach my $u (values %$users) { + my $vote_for = $items[$result_users{$u->userid} - 1]->{item}; + LJ::Poll->clean_poll(\$vote_for); + $ret .= "<li>" . LJ::ljuser($u) . " — " . ( $result_users{$u->userid} ? " voted for " . $vote_for : " not voted yet ") . "</li>"; + } - $ret .= "</ul>"; + $ret .= "</ul>"; + if ($poll->is_closed) { + ## Election poll is closed. Show current owner. + my $sm = LJ::load_rel_user($comm->{userid}, 'S') || []; + if (@$sm) { + my $user = LJ::load_userid($sm->[0]); + $ret .= "<b>The winner is ".$user->ljuser_display."</b>" if $user; + } else { + $ret .= "<b>The owner was not set.</b>"; + } } next if @errors;