ouvag/vote.php

257 lines
11 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
session_start();
session_regenerate_id();
// Si la session n'existe plus
if (empty($_SESSION['reference'])) {
header('Location: index.php?$disconnect=true');
}
include("inc/config.inc.php");
include("inc/connect.inc.php");
include("inc/fonctions.inc.php");
// On regarde si il y a une AGO, AGE et vote CS
if (checkago()) {$ago = true;} else {$ago = false;}
if (checkage()) {$age = true;} else {$age = false;}
if (checkcs()) {$cs = true;} else {$cs = false;}
// Préparation de la requete MySQL
$sql = "SELECT option_name, option_value FROM admin WHERE option_name = :option";
$stmt = $bdd->prepare($sql);
// On regarde le nombre de résolution d'AGO qui sera important par la suite pour créer des variables de sessions et le formulaire de vote
if ($ago) {
$option = 'resolution_ago_nb';
$stmt->bindParam(':option', $option, PDO::PARAM_STR);
$stmt->execute();
$results = $stmt->fetch();
$resolution_ago_nb = $results['option_value'];
$_SESSION['resolution_ago_nb'] = $resolution_ago_nb;
}
// On regarde le nombre de résolution d'AGE qui sera important par la suite pour créer des variables de sessions et le formulaire de vote
if ($age) {
$option = 'resolution_age_nb';
$stmt->bindParam(':option', $option, PDO::PARAM_STR);
$stmt->execute();
$results = $stmt->fetch();
$resolution_age_nb = $results['option_value'];
$_SESSION['resolution_age_nb'] = $resolution_age_nb;
}
// On regarde combien de postes au CS sont à pourvoir
if ($cs) {
$option = 'cs_nb_poste';
$stmt->bindParam(':option', $option, PDO::PARAM_STR);
$stmt->execute();
$results = $stmt->fetch();
$cs_nb_poste = $results['option_value'];
}
// Le client a cliqué sur le bouton envoyer ?
if (!empty ($_POST['voted']) && ($_POST['voted'] == true)) {
// Alors on regarde si le formulaire est bien renseigné
if ($ago) {
for ($i = 1; $i <= $resolution_ago_nb; $i++) {
if (!isset($_POST['QAGO'.$i])) {$missingform = "<p class='red'>Merci de remplir tous les champs du formulaire1.</p>";}
}
}
if ($age) {
for ($i = 1; $i <= $resolution_age_nb; $i++) {
if (!isset($_POST['QAGE'.$i])) {$missingform = "<p class='red'>Merci de remplir tous les champs du formulaire2.</p>";}
}
}
// Si tout les inputs du formulaire sont renseignés
if (!isset ($missingform)) {
// En cas d'absention au vote du CS
if ($cs) {
if (isset($_POST['csabst'])) {
// On créé une variable de session pour chaque résolution AGO et AGE et pour le CS
if ($ago) {
for ($i = 1; $i <= $resolution_ago_nb; $i++) {
$_SESSION['resolution_ago_'.$i] = $_POST['QAGO'.$i];
}
}
if ($age) {
for ($i = 1; $i <= $resolution_age_nb; $i++) {
$_SESSION['resolution_age_'.$i] = $_POST['QAGE'.$i];
}
}
$vote_cs = "Abstention";
$_SESSION['vote_cs'] = $vote_cs;
// On redirige
header('Location: finalisation.php');
} elseif (isset($_POST['CS'])) {
// En cas de vote pour le CS
$nb_vote_cs = count($_POST['CS']);
// Vérification du nombre de candidats coché
// Si le nombre est trop faible, on retourne sur le formulaire avec un message d'erreur
if ($nb_vote_cs < $cs_nb_poste) {
header('Location: vote.php?message=true');
exit;
}
// On sépare chaque nom de candidats par une ,
$vote_cs = implode(",", $_POST['CS']);
// On créé une variable de session pour chaque résolution AGO et AGE, et pour le CS
if ($ago) {
for ($i = 1; $i <= $resolution_ago_nb; $i++) {
$_SESSION['resolution_ago_'.$i] = $_POST['QAGO'.$i];
}
}
if ($age) {
for ($i = 1; $i <= $resolution_age_nb; $i++) {
$_SESSION['resolution_age_'.$i] = $_POST['QAGE'.$i];
}
}
$_SESSION['vote_cs'] = $vote_cs;
// On redirige
header('Location: finalisation.php');
}
}
if ($ago) {
for ($i = 1; $i <= $resolution_ago_nb; $i++) {
$_SESSION['resolution_ago_'.$i] = $_POST['QAGO'.$i];
}
}
if ($age) {
for ($i = 1; $i <= $resolution_age_nb; $i++) {
$_SESSION['resolution_age_'.$i] = $_POST['QAGE'.$i];
}
}
// On redirige
header('Location: finalisation.php');
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<?php include("theme/_head.php"); ?>
</head>
<body>
<!--[if lt IE 9]>
<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
<![endif]-->
<?php include("theme/header.php"); ?>
<section id="pagevote">
<?php if (!empty ($missingform)) {echo $missingform;} ?>
<form id='vote' action="vote.php" method="post" novalidate data-parsley-validate>
<fieldset>
<?php if ($ago) { ?>
<h3>Résolutions d'Assemblée Générale Ordinaire</h3>
<?php
// On boucle pour chaque résolution avec création du formulaire
for ($i = 1; $i <= $resolution_ago_nb; $i++) {
// On selectionne la résolution
$option = 'resolution_ago_'.$i;
$stmt->bindParam(':option', $option, PDO::PARAM_STR);
$stmt->execute();
$results = $stmt->fetch();
$resolution_ago_txt = $results['option_value'];
?>
<h4>Résolution n°<?php echo $i; ?></h4>
<p><?php echo $resolution_ago_txt; ?></p>
<p class="formvote">
<input type="radio" name="QAGO<?php echo $i; ?>" id="QAGO<?php echo $i; ?>o" value="Oui" required />
<label for="QAGO<?php echo $i; ?>o">Oui</label>
<input type="radio" name="QAGO<?php echo $i; ?>" id="QAGO<?php echo $i; ?>n" value="Non" />
<label for="QAGO<?php echo $i; ?>n">Non</label>
<input type="radio" name="QAGO<?php echo $i; ?>" id="QAGO<?php echo $i; ?>a" value="Abstention" />
<label for="QAGO<?php echo $i; ?>a">Abstention</label>
</p>
<hr />
<?php
}
}
if ($age) { ?>
<h3>Résolutions d'Assemblée Générale Extraordinaire</h3>
<?php
// On boucle pour chaque résolution avec création du formulaire
for ($i = 1; $i <= $resolution_age_nb; $i++) {
// On selectionne la résolution
$option = 'resolution_age_'.$i;
$stmt->bindParam(':option', $option, PDO::PARAM_STR);
$stmt->execute();
$results = $stmt->fetch();
$resolution_age_txt = $results['option_value'];
?>
<h4>Résolution n°<?php echo $i; ?></h4>
<p><?php echo $resolution_age_txt; ?></p>
<p class="formvote">
<input type="radio" name="QAGE<?php echo $i; ?>" id="QAGE<?php echo $i; ?>o" value="Oui" required />
<label for="QAGE<?php echo $i; ?>o">Oui</label>
<input type="radio" name="QAGE<?php echo $i; ?>" id="QAGE<?php echo $i; ?>n" value="Non" />
<label for="QAGE<?php echo $i; ?>n">Non</label>
<input type="radio" name="QAGE<?php echo $i; ?>" id="QAGE<?php echo $i; ?>a" value="Abstention" />
<label for="QAGE<?php echo $i; ?>a">Abstention</label>
</p>
<hr />
<?php
}
}
if ($cs) { ?>
<h3>Élection des membres du Conseil de Surveillance</h3>
<p>
D'après les statuts d'Ouvaton le bulletin de vote pour l'élection au CS doit obligatoirement comporter au moins autant de noms que de postes.
Il y a <?php echo $cs_nb_poste; ?> postes à pourvoir cette année et il n'y a que <?php echo $cs_nb_poste; ?> candidats déclarés.<br />
Vous devez donc soit voter pour les <?php echo $cs_nb_poste; ?> candidats, soit vous abstenir.
</p>
<p>
D'après les statuts d'Ouvaton le bulletin de vote pour l'élection au CS doit obligatoirement comporter au moins autant de noms que de postes.
Il y a <?php echo $cs_nb_poste; ?> postes à pourvoir cette année et il y a 5 candidats déclarés.<br />
Vous devez donc soit voter pour au moins <?php echo $cs_nb_poste; ?> candidats, soit vous abstenir.
</p>
<?php
// Traitement de l'erreur en cas de nombre de case cochée trop faible pour l'élection du CS
// Par sécurité pour palier à l'éventuelle abscence de Javascript sur le client
if (isset($_GET['message']) && ($_GET['message'] == true)) {
echo '<p><span class="bold">Vous avez coché trop peu de cases pour l\'élection des membres du conseil de surveillance !<br /> Merci de suivre les instructions de vote.</span></p>';
}
?>
<div id="csform">
<p>Veuillez choisir parmi les candidats ci-après <span class="bold">AU MOINS <?php echo $cs_nb_poste; ?></span> personnes :</p>
<p class="formvote">
<?php
// On créé un input pour chaque candidat
$option = 'cs_candidats';
$stmt->bindParam(':option', $option, PDO::PARAM_STR);
// Exécution de la requête
$stmt->execute();
$results = $stmt->fetch();
$cs_candidats_nb = $results['option_value'];
// On récupère un array qu'il faut casser par virgule, et on compte le nombre de candidats
$cs_candidats_nb = explode(",",$cs_candidats_nb);
for ($i=0; $i < count($cs_candidats_nb); $i++) { ?>
<span class="candidats">
<input class="cslist" type="checkbox" name="CS[]" value="<?php print $cs_candidats_nb[$i]; ?>" id="<?php print $cs_candidats_nb[$i]; ?>" required data-parsley-mincheck="<?php echo $cs_nb_poste; ?>" />
<label for="<?php print $cs_candidats_nb[$i]; ?>"> <?php print $cs_candidats_nb[$i]; ?></label>
</span>
<?php } ?>
</p>
</div>
<label for="csabst">Cochez cette case pour vous abstenir de voter à l'élection des membres du Conseil de Surveillance : </label>
<input type="checkbox" name="csabst" value="csabst" id="csabst" />
<?php } ?>
<input type="hidden" name="voted" id="voted" value="true" />
<p class="formvote"><input type="submit" value="Votez"></p>
</fieldset>
</form>
</section>
<?php include("theme/footer.php"); ?>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>
<script src="js/vendor/parsley.min.js"></script>
<script src="js/vendor/parsley-fr.js"></script>
<script src="js/main.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#csabst').click(function(){
this.checked?$('#csform').hide(500):$('#csform').show(500);
this.checked?$('.cslist').attr('data-parsley-mincheck', '0'):$('.cslist').attr('data-parsley-mincheck', '<?php echo $cs_nb_poste; ?>');
this.checked?$('.cslist').removeAttr('required'):$('.cslist').addAttr('required');
});
});
</script>
</body>
</html>