1
0

version 0.1

This commit is contained in:
Daniel Tartavel 2021-10-17 15:55:05 +02:00
parent df07673a67
commit 7ae8c343ab
5 changed files with 68 additions and 48 deletions

View File

@ -5,14 +5,14 @@ define( 'EOLH', "<br>\n" );
define( 'LF', "\r\n" );
define( 'TAB', "\t" );
//constantes des niveaux de log
//Log Level constants
define( "INFO", 1 );
define( "ALERT", 2 );
define( "ERROR", 3 );
define( "DATE_MYSQL", "Y-m-d H:i:s" );
//variables diverses
//environment variables
$admin = "Daniel";
$webmaster = "contact@lalis.fr";
$site = "Lalis";

View File

@ -1,4 +1,5 @@
<?php
//test if not directly called
if ( !isset($site) )
{
require_once( "config.inc.php" );
@ -10,7 +11,7 @@ require_once "log.php";
class dbDolibarr extends dbcore
{
protected $server = "192.168.1.251";
protected $server = "192.168.1.250";
protected $port = 3306;
protected $user = "dolibarr";
protected $passwd = "mysql_dolibarr";
@ -31,6 +32,7 @@ class dbcore
public $connect;
public $result;
public $id;
public $error;
function __construct()
{
@ -65,14 +67,12 @@ class dbcore
function query( $string )
{
//log_write( $string );
$this->error = 0;
if ( empty( $this->connect ) ) $this->open();
$this->result = $this->connect->query( $string ) ;
$error = $this->connect->error;
if ( $this->connect->errno > 0 ) log_error( "Échec de la commande query => " . $error . "<br />" . __file__ . ' ligne ' . __line__ . "\n" . $string, true, false);
return $error;
$this->error = $this->connect->error;
if ( $this->connect->errno > 0 ) log_error( "Échec de la commande query => " . $this->error . "<br />" . __file__ . ' ligne ' . __line__ . "\n" . $string, true, false);
return $this->error;
}
@ -80,7 +80,6 @@ class dbcore
{
$flag = 0;
$query='SELECT IF(identifiant="' . $idVotant . '" AND idVotation="' . $idVotation .'" AND INSTR(idVote, "' . $idVote .'"),TRUE,FALSE) as r FROM liste_votants';
//$query='SELECT EXISTS (SELECT * FROM liste_votants WHERE (SELECT INSTR(idVote, "' . $idVote .'"))';
$this->query($query);
if ( ($r = $this->result->fetch_array(MYSQLI_ASSOC)))
{
@ -103,7 +102,7 @@ class dbcore
}
}
}
return 255;
return 'Error ';
}
function resultat()

View File

@ -10,9 +10,11 @@ require_once 'fonctions.inc.php';
// $level => INFO, ALERT, ERROR
function log_write($log, $level=INFO)
{
//require_once( "envoi_courriel.inc.php" );
global $table_prefix, $webmaster, $db;
$user = ( !empty( $_SERVER["PHP_AUTH_USER"])?$_SERVER["PHP_AUTH_USER"]:'' );
// actual connected user or user 'script'
$user = (!empty( $_SERVER["PHP_AUTH_USER"])?$_SERVER["PHP_AUTH_USER"]:'Intruder?!');
//mail message
$log_mail = str_replace ( "<br />", "\n", $log ) . "\n";
$log_mail .= ( !empty( $_SERVER["REQUEST_METHOD"])?'$_SERVER["REQUEST_METHOD"]' . $_SERVER["REQUEST_METHOD"] . "\n":'' );
$log_mail .= ( !empty( $_SERVER["QUERY_STRING"])?'$_SERVER["QUERY_STRING"]' . $_SERVER["QUERY_STRING"] . "\n":'' );
@ -25,24 +27,26 @@ function log_write($log, $level=INFO)
$log_mail .= "Utilisateur: $user \n";
$log_mail .= ( !empty( $_SERVER["ORIG_PATH_INFO"])?'$_SERVER["ORIG_PATH_INFO"]' . $_SERVER["ORIG_PATH_INFO"] . "\n":'' );
$log_mail .= ( !empty( $_SERVER["PATH_INFO"])?'$_SERVER["PATH_INFO"]' . $_SERVER["PATH_INFO"] . "\n":'' );
//$db = new db();
//$db->open();
// verifying connection to database
if( !empty( $db->connect ) )
{
// saving log into database
$query = 'INSERT INTO ' . $db->protect($table_prefix) . 'logs SET date=NOW(), auteur="' . $db->protect( $user ) . '", log="' . $db->protect($log) . '", niveau="' . $db->protect($level) . '"';
$db->query( $query );
if ( !$db->result )
{
// send mail in case of query error
$text = $db->error() . "\n\n" . $log_mail;
mail( $webmaster, "Erreur écriture logs => " . __file__ . " ligne " . __line__, $text );
}
}else
{
//echo $db->error();
//send mail in case of database connection error
mail( $webmaster, "Erreur de connecxion à la base de données => " . __file__ . " ligne " . __line__ , $log_mail);
}
//$db->close();
// send mail to admin in case of level > INFO
if ( $level == ALERT )
{
mail( $webmaster, "Alerte Site Web", $log_mail );
@ -52,25 +56,25 @@ function log_write($log, $level=INFO)
}
}
// $w_db = true -> écrire les logs dans la base (défaut)
// $die = true -> execute die() -> termine le programme
// $w_db = true -> write log in database (default)
// $die = true -> execute die() -> script end
function log_error($log, $w_db=true, $die=false)
{
global $webmaster, $headers, $accueil, $db;
if ( $w_db ) log_write($log, ERROR);
//echo "$log<br />\n";
$log_err = 'erreur dans la requête<br/>un rapport détaillé a été envoyé au webmaster';
if ( $die )
{
//echo "\n";
//die( $log_err );
die( $log_err );
}else
{
//store error in table session[]
$_SESSION['error'] = $log_err;
//header( 'Location: ' . $accueil );
}
}
//diplay logs
function affich_log( $nl, $np = 1, $level=0)
{
global $table_prefix, $base_url, $path, $page;
@ -136,7 +140,7 @@ function affich_log( $nl, $np = 1, $level=0)
echo "</form>\n";
//////////////////////////////////////////////////////////////
//////////////// affiche page précédente et page suivante
//////////////// display next and previous page
if ( $np > 1 )
{
echo '<a href="logs.php?np=' . ($np - 1) . '">Page précédente</a>';
@ -147,7 +151,7 @@ function affich_log( $nl, $np = 1, $level=0)
}
//////////////////////////////////////////////////////////////////
/////////////////////// affiche les logs dans un tableau
/////////////////////// display logs in table
if ($total_lignes != 0 )
{
$query = 'SELECT * FROM ' . $table_prefix . 'logs';

View File

@ -11,9 +11,10 @@ $idVotation = $_GET["v"];
$dolibarr = new dbDolibarr();
$query = "SELECT * FROM llx_adherent WHERE login='" . $dolibarr->protect($idVotant) . "'";
$query = "SELECT * FROM llx_adherent as a LEFT JOIN llx_adherent_type as t ON a.fk_adherent_type=t.rowid WHERE a.login='" . $dolibarr->protect($idVotant) . "' AND (DATE(a.datefin)>=CURDATE() OR t.subscription=0) AND t.vote=1";
print $query .EOLH;
$result = $dolibarr->query($query);
print_r($dolibarr);
$votant = $dolibarr->result->fetch_array();
print('<br><br>
<!-- lalis Grid Section -->
@ -29,7 +30,7 @@ print(' <div class="row">
<h4>');
if ($dolibarr->result->num_rows == 0)
{
print "Identifiant non autorisé.<br>Si vous pensez qu'il s'agit d'une erreur, adressez vous à un responsable de l'association</h4>.<br><br><br><br>";
print "Identifiant non autorisé.<br>Vous n'êtes probablement pas à jour de votre cotisation.<br>Si vous pensez qu'il s'agit d'une erreur, adressez vous à un responsable de l'association</h4>.<br><br><br><br>";
}else
{
$dolibarr->close();
@ -38,23 +39,24 @@ if ($dolibarr->result->num_rows == 0)
$resultVotation = $db->query($query);
$votation = $db->result->fetch_array();
$now = date('Y-m-d');
if ($resultVotation === FALSE)
{
print "Votation non trouvée</h4>" . EOLH;
}else
{
if ( time() >= $votation['td'] AND time() <= $votation['tf'] )
{
$query = "SELECT * FROM votes WHERE idVotant='" . $db->protect($idVotant) ."'";
$db->query($query);
if ($db->result->num_rows == 0)
{
if ($resultVotation === FALSE)
{
print "Votation non trouvée</h4>" . EOLH;
}else
{
echo $votation["libelle"] . "</h4>";
print (' <hr class="star-primary">
</div>
</div>
<div class="row"><h5>Bonjour ' . $votant['firstname'] . " " . $votant['lastname'] . "</h5>" . EOLH . EOLH . "Attention: les votes blancs sont comptés comme vote exprimés." . EOLH . "Les abstentions ou l'absence de choix, comme non exprimés." . EOLH . "
Vérifiez bien votre vote avant de l'envoyer, il est impossible de le modifier après.");
<div class="row"><h5>Bonjour ' . $votant['firstname'] . " " . $votant['lastname'] . "</h5>" . EOLH . EOLH . "ATTENTION :" .EOLH . "
1 - les votes blancs sont comptés comme vote exprimés. Si plus de 50% de vote blanc, alors le résultat du vote est nul." . EOLH . "2 - L'absence de choix est compté comme abstention et donc non exprimés." . EOLH . "
3 - Vérifiez bien votre vote avant de l'envoyer, il est impossible de le modifier après.");
$query='SELECT * FROM liste_votes WHERE idVotation="' . $db->protect($idVotation) .'"';
$result = $db->query($query);
@ -70,12 +72,12 @@ if ($dolibarr->result->num_rows == 0)
{
echo '<input type="radio" name="vote[' . $vote["id"] . ']" value="' . $candidat["id"] . '"> ' . $candidat["candidat"] . '&nbsp;<br>';
}
echo '<input type="radio" name="vote[' . $vote["id"] . ']" value="0"> Vote blanc&nbsp;<br>';
print "</pre>
</div><br>";
}
print (' <div class="text-center">
<h4><input type="submit" value="Voter"></h4>');
}
}else
{
print " Bonjour " . $votant['firstname'] . " " . $votant['lastname'] . ',' . EOLH . EOLH . "vous avez déjà voté, vous ne pouvez pas revoter ou modifier votre vote." . EOLH . "Si vous pensez que c'est une erreur, veuillez prendre contact avec les responsables de l'association.</h4>";
@ -84,7 +86,7 @@ if ($dolibarr->result->num_rows == 0)
{
print " Bonjour " . $votant['firstname'] . " " . $votant['lastname'] . ',</h4>' . EOLH . EOLH . "Le vote ne sera ouvert qu'à partir du " . formattedate('fr', $votation['td'] , "Europe/Paris") . " et jusqu'au " . formattedate('fr', $votation['tf'] , "Europe/Paris") . '.' . EOLH . "Si vous pensez que ceci est une erreur, veuillez prendre contact avec les responsables de l'association.</h4>";
}
}
}
print(' </div>
</div>

View File

@ -22,7 +22,7 @@ if ( empty($idVotation))
<div class="col-lg-12 text-center">
<h3>VOTE</h3>
<h4>');
$query = 'SELECT *, UNIX_TIMESTAMP(dateFin) as tf FROM liste_votations WHERE id=' . $db->protect($idVotation);
$query = 'SELECT *, UNIX_TIMESTAMP(DATE_ADD(dateFin, INTERVAL 1 DAY)) as tf FROM liste_votations WHERE id=' . $db->protect($idVotation);
$result = $db->query($query);
$votation = $db->result->fetch_array(MYSQLI_ASSOC);
if ($result === FALSE)
@ -44,12 +44,19 @@ if ( empty($idVotation))
$votes = $db->result->fetch_all(MYSQLI_ASSOC);
foreach ($votes as $vote)
{
$total = 0;
echo "<div><h5>" . $vote["libelle"] . "</h5><br>";
$query='SELECT * FROM liste_candidats WHERE idVotation=' . $idVotation . ' AND idVote=' . $vote["id"];
$result = $db->query($query);
$candidats = $db->result->fetch_all(MYSQLI_ASSOC);
echo "<pre>";
//$resultatCandidats = '';
$query='SELECT COUNT(*) as n FROM votes WHERE idVotation=' . $db->protect($idVotation) . ' AND idVote=' . $vote["id"] .' AND idCandidat=0';
$result = $db->query($query);
$resultat = $db->result->fetch_array(MYSQLI_ASSOC);
$blanc = $resultat["n"];
echo 'Votes blancs&nbsp;: ' . $blanc . '<br>';
foreach($candidats as $candidat)
{
$query='SELECT COUNT(*) as n FROM votes WHERE idVotation=' . $db->protect($idVotation) . ' AND idVote=' . $vote["id"] .' AND idCandidat=' . $candidat["id"];
@ -57,17 +64,25 @@ if ( empty($idVotation))
$resultat = $db->result->fetch_array(MYSQLI_ASSOC);
echo $candidat["candidat"] . '&nbsp;:' . $resultat["n"] . '<br>';
$resultatCandidats[$candidat['candidat']] = $resultat["n"];
$total += $resultat["n"];
}
array_multisort($resultatCandidats, SORT_DESC, SORT_NUMERIC);
reset($resultatCandidats);
if ($total >= $blanc)
{
print("<h5>Remporte le vote : " . key($resultatCandidats));
unset($resultatCandidats);
print "</h5></pre>
</div><br>";
print("</h5>");
}else
{
print("<h5>Aucun candidat n'emporte le vote, car il y a plus de 50% de votes blancs.</h5>");
}
print("</pre></div><br>");
}
}else
{
print "Bonjour, vous pourrez consulter les résultats après la clôture du vote le " . formattedate('fr', $votation['tf'] , "Europe/Paris") . "</h4>";
print "Bonjour, vous pourrez consulter les résultats à partir du " . formattedate('fr', $votation['tf'] , "Europe/Paris") . "</h4>";
}
}