233 lines
9.6 KiB
PHP
233 lines
9.6 KiB
PHP
|
<?php
|
||
|
require('include.php');
|
||
|
init(true, false);
|
||
|
|
||
|
//If we want to validate something someone paid us
|
||
|
if(isset($_GET['de']) && isset($_GET['a']) && isset($_GET['id_depense']) && !empty($_GET['token']) && $_GET['token'] == $_SESSION['token_validate_single'] && $_SESSION['token_validate_single_time'] > time() - (15*60) AND strpos($_SERVER['HTTP_REFERER'], 'http://'.$CONFIG['base_url'].'/index.php') == 0)
|
||
|
{
|
||
|
//Check wether we are the person who receive the money or the admin
|
||
|
if($_SESSION['id'] == $_GET['a'] || $_SESSION['admin'] == 1)
|
||
|
{
|
||
|
//And check that we didn't validate it before
|
||
|
$req_count = $bdd->prepare('SELECT COUNT(*) AS nbre_paiements FROM paiements WHERE de=:de AND a=:a AND id_depense=:id_depense');
|
||
|
$req_count->bindValue(':de', $_GET['de']);
|
||
|
$req_count->bindValue(':a', $_GET['a']);
|
||
|
$req_count->bindValue(':id_depense', $_GET['id_depense']);
|
||
|
$req_count->execute();
|
||
|
|
||
|
$count = $req_count->fetch();
|
||
|
|
||
|
if($count['nbre_paiements'] == 0) //If everything is ok -> validation
|
||
|
{
|
||
|
$req = $bdd->prepare('INSERT INTO paiements(id, de, a, id_depense, date, montant) VALUES("", :de, :a, :id_depense, :date, :montant)');
|
||
|
$req->bindValue(':de', $_GET['de']);
|
||
|
$req->bindValue(':a', $_GET['a']);
|
||
|
$req->bindValue(':id_depense', $_GET['id_depense']);
|
||
|
$req->bindValue(':date', time());
|
||
|
|
||
|
$req_montant = $bdd->prepare('SELECT montant, copains, invites FROM depenses WHERE id=:id_depense');
|
||
|
$req_montant->bindValue(':id_depense', $_GET['id_depense']);
|
||
|
$req_montant->execute();
|
||
|
$donnees_montant = $req_montant->fetch();
|
||
|
$montant = $donnees_montant['montant']/(substr_count($donnees_montant['copains'], ',') + 1 + $donnees_montant['invites']);
|
||
|
|
||
|
$req->bindValue(':montant', $montant);
|
||
|
$req->execute();
|
||
|
}
|
||
|
else //If entry already exist -> we update it because the cost of the meal may have been changed
|
||
|
{
|
||
|
$req_montant = $bdd->prepare('SELECT montant, copains, invites FROM depenses WHERE id=:id_depense');
|
||
|
$req_montant->bindValue(':id_depense', $_GET['id_depense']);
|
||
|
$req_montant->execute();
|
||
|
$donnees_montant = $req_montant->fetch();
|
||
|
$montant = $donnees_montant['montant']/(substr_count($donnees_montant['copains'], ',') + 1 + $donnees_montant['invites']);
|
||
|
|
||
|
$req = $bdd->prepare('UPDATE paiements SET montant=:montant, date=:date WHERE de=:de AND a=:a AND id_depense=:id_depense');
|
||
|
$req->bindValue(':de', $_GET['de']);
|
||
|
$req->bindValue(':a', $_GET['a']);
|
||
|
$req->bindValue(':id_depense', $_GET['id_depense']);
|
||
|
$req->bindValue(':date', time());
|
||
|
|
||
|
$req->bindValue(':montant', $montant);
|
||
|
$req->execute();
|
||
|
}
|
||
|
|
||
|
header('location: message.php?id=10');
|
||
|
exit();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
header('location: message.php?id=9');
|
||
|
exit();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//If we want to add a new meal (or edit it)
|
||
|
if(isset($_POST['menu']) && isset($_POST['jour']) && isset($_POST['mois']) && isset($_POST['annee']) && isset($_POST['AM_PM']) && isset($_POST['montant']) && isset($_POST['invites']) && !empty($_POST['token']) && $_POST['token'] == $_SESSION['token_modif'] && $_SESSION['token_modif_time'] > time() - (15*60) AND strpos($_SERVER['HTTP_REFERER'], 'http://'.$CONFIG['base_url'].'/index.php') == 0)
|
||
|
{
|
||
|
if(!empty($_POST['id']))
|
||
|
{
|
||
|
$req = $bdd->query('SELECT de FROM depenses WHERE id='.(int) $_POST['id']);
|
||
|
$donnees = $req->fetch();
|
||
|
|
||
|
if($donnees['de'] != $_SESSION['id'] && $_SESSION['admin'] != 1)
|
||
|
{
|
||
|
header('location: message.php?id=9');
|
||
|
exit();
|
||
|
}
|
||
|
|
||
|
$req = $bdd->prepare('UPDATE depenses SET menu=:menu, date=:date, montant=:montant, copains=:copains, invites=:invites WHERE id='.(int) $_POST['id']);
|
||
|
$message = 2;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$req = $bdd->prepare('INSERT INTO depenses (id, menu, date, de, copains, montant, invites) VALUES ("", :menu, :date, '.$_SESSION['id'].', :copains, :montant, :invites)');
|
||
|
$message = 3;
|
||
|
}
|
||
|
|
||
|
//Here, we treat $_POST['copain_...']
|
||
|
$copains_req = $bdd->query('SELECT id FROM copains ORDER BY id ASC');
|
||
|
$i = 0;
|
||
|
$copains_insert = '';
|
||
|
|
||
|
while($copain_base = $copains_req->fetch())
|
||
|
{
|
||
|
if(!empty($_POST['copain_'.$copain_base['id']]))
|
||
|
{
|
||
|
if($i != 0)
|
||
|
{
|
||
|
$copains_insert .= ',';
|
||
|
}
|
||
|
$copains_insert .= $copain_base['id'];
|
||
|
$i = 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$req->bindValue(':menu', $_POST['menu']);
|
||
|
$req->bindValue(':date', mktime($_POST['AM_PM'], 0, 0, $_POST['mois'], $_POST['jour'], $_POST['annee']));
|
||
|
$req->bindValue(':copains', $copains_insert);
|
||
|
$req->bindValue(':montant', (float) strtr($_POST['montant'], ',', '.'));
|
||
|
$req->bindValue(':invites', (int) $_POST['invites']);
|
||
|
$req->execute();
|
||
|
header('location: message.php?id='.$message);
|
||
|
exit();
|
||
|
}
|
||
|
else //Else, we just display the form
|
||
|
{
|
||
|
if(isset($_GET['id'])) //And get the data to prefill if we edit a meal
|
||
|
{
|
||
|
$modif = (int) $_GET['id'];
|
||
|
$req = $bdd->query('SELECT menu, de, date, copains, montant, invites FROM depenses WHERE id='.$modif);
|
||
|
|
||
|
$donnees = $req->fetch();
|
||
|
|
||
|
if($donnees['de'] != $_SESSION['id'] && $_SESSION['admin'] != 1)
|
||
|
{
|
||
|
header('location: message.php?id=9');
|
||
|
exit();
|
||
|
}
|
||
|
|
||
|
$copains_modif = explode(',', $donnees['copains']);
|
||
|
}
|
||
|
$_SESSION['token_modif'] = sha1(uniqid(rand(), true)); //We generate a token and store it in a session variable
|
||
|
$_SESSION['token_modif_time'] = time(); //We also store the time at which the token has been generated
|
||
|
?>
|
||
|
<!DOCTYPE html>
|
||
|
<html lang="fr">
|
||
|
<head>
|
||
|
<meta charset="utf-8">
|
||
|
<title>Bouffe@Ulm</title>
|
||
|
<link rel="stylesheet" media="screen" type="text/css" href="misc/design.css" />
|
||
|
<script type="text/javascript" src="misc/modif.js"></script>
|
||
|
<link rel="icon" href="favicon.ico" />
|
||
|
</head>
|
||
|
<body>
|
||
|
<h1>Bouffe@Ulm</h1>
|
||
|
<?php
|
||
|
if(isset($modif)) echo '<h2>Modifier une dépense</h2>'; else echo '<h2>Ajouter une dépense</h2>';
|
||
|
?>
|
||
|
<form method="post" action="modif.php">
|
||
|
<p><label for="menu">Menu : </label><textarea name="menu" value="menu" cols="40" rows="5"><?php if(isset($modif)) { echo nl2br(htmlspecialchars($donnees['menu']));}?></textarea></p>
|
||
|
<p><label for="jour">Date : </label>
|
||
|
<select name="jour" id="jour">
|
||
|
<?php
|
||
|
for($i=1; $i<32; $i++)
|
||
|
{
|
||
|
if((date('j') == $i && !isset($modif)) || (isset($modif) && date('j', $donnees['date']) == $i))
|
||
|
{
|
||
|
echo "<option value='".$i."' selected='selected'>".$i."</option>";
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
echo "<option value='".$i."'>".$i."</option>";
|
||
|
}
|
||
|
}
|
||
|
?>
|
||
|
</select>
|
||
|
<select name="mois" id="mois">
|
||
|
<?php
|
||
|
for($i=1; $i<13; $i++)
|
||
|
{
|
||
|
if((date('m') == $i && !isset($modif)) || (isset($modif) && date('m', $donnees['date']) == $i))
|
||
|
{
|
||
|
echo "<option value='".$i."' selected='selected'>".$i."</option>";
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
echo "<option value='".$i."'>".$i."</option>";
|
||
|
}
|
||
|
}
|
||
|
?>
|
||
|
</select>
|
||
|
<select name="AM_PM">
|
||
|
<option value='11' <?php if((date('A') == "AM" && !isset($modif)) || (isset($modif) && date('A', $donnees['date']) == "AM")) { echo 'selected="selected"';}?>>Midi</option>
|
||
|
<option value='22' <?php if((date('A') == "PM" && !isset($modif)) || (isset($modif) && date('A', $donnees['date']) == "PM")) { echo 'selected="selected"';}?>>Soir</option>
|
||
|
</select>
|
||
|
<select name="annee" id="annee">
|
||
|
<?php
|
||
|
for($i=date('Y')-1; $i<date('Y')+2; $i++)
|
||
|
{
|
||
|
if((date('Y') == $i && !isset($modif)) || (isset($modif) && date('Y', $donnees['date']) == $i))
|
||
|
{
|
||
|
echo "<option value='".$i."' selected='selected'>".$i."</option>";
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
echo "<option value='".$i."'>".$i."</option>";
|
||
|
}
|
||
|
}
|
||
|
?>
|
||
|
</select>
|
||
|
</p>
|
||
|
<p><label for="montant">Montant : </label><input type="text" size="5" maxlength="6" name="montant" id="montant" <?php if(isset($modif)) echo 'value="'.$donnees['montant'].'"';?>/>€</p>
|
||
|
<p style="text-align: left; display: inline-block;">Copains : <br/>
|
||
|
<?php
|
||
|
$req2 = $bdd->query('SELECT id, nom FROM copains ORDER BY nom ASC');
|
||
|
while($donnees2 = $req2->fetch())
|
||
|
{
|
||
|
if((isset($copains_modif) && in_array($donnees2['id'], $copains_modif)) || ($_SESSION['id'] == $donnees2['id']))
|
||
|
{
|
||
|
echo "<input type='checkbox' name='copain_".htmlspecialchars($donnees2['id'])."' id='copain_".htmlspecialchars($donnees2['id'])."' checked='checked'/><label for='copain_".htmlspecialchars($donnees2['id'])."' class='inline'>".htmlspecialchars($donnees2['nom'])."</label><br/>";
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
echo "<input type='checkbox' name='copain_".htmlspecialchars($donnees2['id'])."' id='copain_".htmlspecialchars($donnees2['id'])."'/><label for='copain_".htmlspecialchars($donnees2['id'])."' class='inline'>".htmlspecialchars($donnees2['nom'])."</label><br/>";
|
||
|
}
|
||
|
}
|
||
|
?>
|
||
|
<input type="number" name="invites" id="invites" size="2" maxlength="2" value="<?php if(isset($donnees['invites'])) echo (int) $donnees['invites']; else echo "0";?>"/>
|
||
|
<label for="invites" class="inline" id="invites_label">
|
||
|
<?php if(isset($donnees['invites']) && $donnees['invites'] > 1) echo 'invités'; else echo 'invité';?>
|
||
|
</label>
|
||
|
</p>
|
||
|
<p>
|
||
|
<input type="submit" value="<?php if(isset($modif)) { echo 'Modifier'; } else { echo 'Ajouter';}?>"/> ou <a href="index.php">retour à l'accueil</a><input type="hidden" name="id" value="<?php if(isset($modif)) { echo $modif;}?>"/>
|
||
|
<input type="hidden" name="token" value="<?php echo $_SESSION['token_modif'];?>"/>
|
||
|
</p>
|
||
|
</form>
|
||
|
</body>
|
||
|
</html>
|
||
|
<?php
|
||
|
}
|
||
|
?>
|