2009-05-21 11:20:15 +00:00
< ? php
if ( $_SERVER [ 'HTTPS' ] != 'on' ) {
header ( " HTTP/1.0 302 Redirect " );
header ( " Location: https:// " . $_SERVER [ 'HTTP_HOST' ] . $_SERVER [ 'REQUEST_URI' ]);
exit ();
}
require_once ( " database.php " );
$db = new DB ();
2009-05-29 03:43:21 +00:00
if ( ! ( $user = $db -> auth ())) {
2009-05-21 11:20:15 +00:00
header ( " HTTP/1.0 302 Redirect " );
header ( " Location: denied.php " );
exit ();
}
$db -> getStatement ( " stats " ) -> execute ();
$stats = $db -> getStatement ( " stats " ) -> fetch ();
?>
< html >
< head >
< title > CAcert Board Decisions </ title >
< meta http - equiv = " Content-Type " content = " text/html; charset='UTF-8' " />
< link rel = " stylesheet " type = " text/css " href = " styles.css " />
</ head >
< body >
< ? php
if ( $_REQUEST [ 'action' ] == " store " ) {
if ( is_numeric ( $_REQUEST [ 'motion' ])) {
$stmt = $db -> getStatement ( " update decision " );
$stmt -> bindParam ( " :id " , $_POST [ 'motion' ]);
2009-05-30 02:08:30 +00:00
$stmt -> bindParam ( " :proponent " , $user [ 'id' ]);
2009-05-21 11:20:15 +00:00
$stmt -> bindParam ( " :title " , $_POST [ 'title' ]);
$stmt -> bindParam ( " :content " , $_POST [ 'content' ]);
$stmt -> bindParam ( " :quorum " , $_POST [ 'quorum' ]);
$stmt -> bindParam ( " :majority " , $_POST [ 'majority' ]);
$stmt -> bindParam ( " :due " , $_POST [ 'due' ]);
if ( $stmt -> execute ()) {
?>
< b > The motion has been proposed !</ b >< br />
< a href = " motions.php " > Back to motions </ a >< br />
< br />
< br />
< ? php
$decision = $db -> getStatement ( " get decision " ) -> execute ( array ( $_POST [ 'motion' ])) ? $db -> getStatement ( " get decision " ) -> fetch () : array ();
$name = $user [ 'name' ];
$tag = $decision [ 'tag' ];
$title = $decision [ 'title' ];
$content = $decision [ 'content' ];
$due = $decision [ 'due' ] . " UTC " ;
$quorum = $decision [ 'quorum' ];
$majority = $decision [ 'majority' ];
2009-05-29 08:06:52 +00:00
$baseurl = " https:// " . $_SERVER [ 'HTTP_HOST' ] . " : " . $_SERVER [ 'SERVER_PORT' ] . preg_replace ( '/motion\.php/' , '' , $_SERVER [ 'REQUEST_URI' ]);
$voteurl = $baseurl . " vote.php?motion= " . $decision [ 'id' ];
$unvoted = $baseurl . " motions.php?unvoted=1 " ;
2009-05-21 11:20:15 +00:00
$body = <<< BODY
Dear Board ,
$name has modified motion $tag to the following :
$title
$content
To pass a minimum of $quorum votes and a $majority % acceptance will be required .
Voting will close $due .
To vote please choose :
Aye : $voteurl & vote = 1
Naye : $voteurl & vote =- 1
Abstain : $voteurl & vote = 0
2009-05-26 02:32:18 +00:00
Please be aware , that if you have voted already your vote is still registered and valid .
2009-05-21 11:20:15 +00:00
If this modification has an impact on how you wish to vote , you are responsible for voting
again .
2009-05-29 08:06:52 +00:00
To see all your outstanding votes : $unvoted
2009-05-21 11:20:15 +00:00
Kind regards ,
the voting system
BODY ;
2009-05-29 05:14:50 +00:00
$db -> notify ( " Re: $tag - $title - modified " , $body , $tag );
2009-05-21 11:20:15 +00:00
} else {
?>
< b > The motion has NOT been proposed !</ b >< br />
< a href = " motions.php " > Back to motions </ a >< br />
< i >< ? php echo join ( " <br/> \n " , $stmt -> errorInfo ()); ?> </i><br/>
< br />
< br />
< ? php
}
} else {
$stmt = $db -> getStatement ( " create decision " );
2009-05-30 02:08:30 +00:00
$stmt -> bindParam ( " :proponent " , $user [ 'id' ]);
2009-05-21 11:20:15 +00:00
$stmt -> bindParam ( " :title " , $_POST [ 'title' ]);
$stmt -> bindParam ( " :content " , $_POST [ 'content' ]);
$stmt -> bindParam ( " :quorum " , $_POST [ 'quorum' ]);
$stmt -> bindParam ( " :majority " , $_POST [ 'majority' ]);
$stmt -> bindParam ( " :due " , $_POST [ 'due' ]);
if ( $stmt -> execute ()) {
$db -> getStatement ( " post create " ) -> execute ();
?>
< b > The motion has been proposed !</ b >< br />
< a href = " motions.php " > Back to motions </ a >< br />
< br />
< br />
< ? php
$decision = $db -> getStatement ( " get new decision " ) -> execute () ? $db -> getStatement ( " get new decision " ) -> fetch () : array ();
$name = $user [ 'name' ];
$tag = $decision [ 'tag' ];
$title = $decision [ 'title' ];
$content = $decision [ 'content' ];
$due = $decision [ 'due' ] . " UTC " ;
$quorum = $decision [ 'quorum' ];
$majority = $decision [ 'majority' ];
2009-05-29 08:06:52 +00:00
$baseurl = " https:// " . $_SERVER [ 'HTTP_HOST' ] . " : " . $_SERVER [ 'SERVER_PORT' ] . preg_replace ( '/motion\.php/' , '' , $_SERVER [ 'REQUEST_URI' ]);
$voteurl = $baseurl . " vote.php?motion= " . $decision [ 'id' ];
$unvoted = $baseurl . " motions.php?unvoted=1 " ;
2009-05-21 11:20:15 +00:00
$body = <<< BODY
Dear Board ,
$name has made the following motion :
$title
$content
To pass a minimum of $quorum votes and a $majority % acceptance will be required .
Voting will close $due .
To vote please choose :
Aye : $voteurl & vote = 1
Naye : $voteurl & vote =- 1
Abstain : $voteurl & vote = 0
2009-05-29 08:06:52 +00:00
To see all your outstanding votes : $unvoted
2009-05-21 11:20:15 +00:00
Kind regards ,
the voting system
BODY ;
2009-05-29 05:14:50 +00:00
$db -> notify ( " $tag - $title " , $body , $tag , TRUE );
2009-05-21 11:20:15 +00:00
} else {
?>
< b > The motion has NOT been proposed !</ b >< br />
< a href = " motions.php " > Back to motions </ a >< br />
< i >< ? php echo join ( " <br/> \n " , $stmt -> errorInfo ()); ?> </i><br/>
< br />
< br />
< ? php
}
}
}
if ( is_numeric ( $_REQUEST [ 'motion' ])) {
$stmt = $db -> getStatement ( " get decision " );
if ( $stmt -> execute ( array ( $_REQUEST [ 'motion' ]))) {
$motion = $stmt -> fetch ();
}
if ( ! is_numeric ( $motion [ 'id' ])) {
$motion = array ();
foreach ( array ( " title " , " content " , " quorum " , " majority " ) as $column ) {
$motion [ $column ] = " " ;
}
$motion [ " proposer " ] = $user [ 'name' ];
}
} else {
$motion = array ();
foreach ( array ( " title " , " content " , " quorum " , " majority " ) as $column ) {
$motion [ $column ] = " " ;
}
$motion [ " proposer " ] = $user [ 'name' ];
}
?>
< form < ? php if ( is_numeric ( $_REQUEST [ 'motion' ])) { echo ( " action= \" ? \" " ); } ?> method="POST">
< input type = " hidden " name = " action " value = " store " />
< ? php
if ( is_numeric ( $_REQUEST [ 'motion' ])) {
?> <input type="hidden" name="motion" value="<?php echo($_REQUEST["motion"]); ?>" /><?php
}
?>
< table >
2009-05-27 07:14:23 +00:00
< tr >< td > ID :</ td >< td >< ? php echo htmlentities ( $motion [ 'tag' ]); ?> </td></tr>
2009-05-30 02:08:30 +00:00
< tr >< td > Proponent :</ td >< td >< ? php echo htmlentities ( $motion [ 'proposer' ]); ?> </td></tr>
2009-05-29 08:22:04 +00:00
< tr >< td > Proposed Date / Time :</ td >< td >< ? php echo htmlentities ( $motion [ 'proposed' ] ? $motion [ 'proposed' ] . " UTC " : '(auto filled to current date/time)' ); ?> </td></tr>
2009-05-27 07:14:23 +00:00
< tr >< td > Title :</ td >< td >< input name = " title " value = " <?php echo htmlentities( $motion['title'] )?> " ></ td ></ tr >
< tr >< td > Text :</ td >< td >< textarea name = " content " >< ? php echo htmlspecialchars ( $motion [ 'content' ]) ?> </textarea></td></tr>
2009-05-21 11:20:15 +00:00
< tr >< td > Quorum :</ td >< td >< select name = " quorum " >
< option value = " <?php echo(ceil( $stats["voters"] )); ?> " < ? php if ( $motion [ 'quorum' ] == $stats [ " voters " ]) { echo ( " selected= \" selected \" " ); } ?> >100% Votes (<?php echo($stats["voters"]); ?>)</option>
< option value = " <?php echo(ceil( $stats["voters"] / 2)); ?> " < ? php if ( $motion [ 'quorum' ] == ceil ( $stats [ " voters " ] / 2 )) { echo ( " selected= \" selected \" " ); } ?> >50% Votes (<?php echo(ceil($stats["voters"] / 2)); ?>)</option>
< option value = " 2 " < ? php if ( $motion [ 'quorum' ] == 2 ) { echo ( " selected= \" selected \" " ); } ?> >2 Votes</option>
< option value = " 1 " < ? php if ( $motion [ 'quorum' ] == 1 ) { echo ( " selected= \" selected \" " ); } ?> >1 Vote</option>
</ select ></ td ></ tr >
< tr >< td > Majority :</ td >< td >< select name = " majority " >
< option value = " 50 " < ? php if ( $motion [ 'majority' ] == 50 ) { echo ( " selected= \" selected \" " ); } ?> >50%</option>
< option value = " 67 " < ? php if ( $motion [ 'majority' ] == 67 ) { echo ( " selected= \" selected \" " ); } ?> >67%</option>
< option value = " 75 " < ? php if ( $motion [ 'majority' ] == 75 ) { echo ( " selected= \" selected \" " ); } ?> >75%</option>
< option value = " 100 " < ? php if ( $motion [ 'majority' ] == 100 ) { echo ( " selected= \" selected \" " ); } ?> >100%</option>
</ td ></ tr >
2009-05-29 09:22:40 +00:00
< tr >< td rowspan = " 2 " > Due :</ td >< td >< ? php echo ( $motion [ 'due' ] ? $motion [ 'due' ] . ' UTC' : '(autofilled from option below)' ) ?> </td></tr>
2009-05-21 11:20:15 +00:00
< tr >< td >< select name = " due " >
< option value = " +3 days " > In 3 Days </ option >
< option value = " +7 days " > In 1 Week </ option >
< option value = " +14 days " > In 2 Weeks </ option >
2009-05-30 02:08:30 +00:00
< option value = " +28 days " > In 4 Weeks </ option >
2009-05-21 11:20:15 +00:00
</ select ></ td ></ tr >
< tr >< td >& nbsp ; </ td >< td >< input type = " submit " value = " Propose " /></ td ></ tr >
</ table >
</ form >
< br />
< a href = " motions.php " > Back to motions </ a >
</ body >
</ html >