Subversion Repositories ALCASAR

Compare Revisions

No changes between revisions

Ignore whitespace Rev 2167 → Rev 2168

/web/acc/manager/htdocs/ticket_voucher.php
1,200 → 1,137
<?php
CONST ROOT = '/';
require_once(ROOT.'/var/www/html/acc/manager/lib/alcasar/ticketspdf.class.php');
/**
* Print tickets of new users
*
* @author Tom Houdayer
* @copyright Copyright (C) ALCASAR (http://www.alcasar.net)
* @license GPL-3.0
* @version $Id$
*/
 
/*
TODO :
- refonte de GenRandUsersName()
- traiter si $nbfailuser (nombre de ticket non créé pour cause de doublon)
*/
require_once __DIR__ . '/../lib/alcasar/TicketsGenerator.php';
require_once '/etc/freeradius-web/config.php';
require_once '../lib/sql/drivers/'.$config['sql_type'].'/functions.php';;
require_once '../lib/attrshow.php';
require_once '../lib/defaults.php';
require_once '../lib/functions.php';
if ($config['sql_use_operators'] === 'true') {
require_once '../lib/operators.php';
}
 
// POUR LES BESOINS DU DEVELOPPEMENT
// BUFFERISATION DES DONNEES ENVOYEES AU CLIENT (compatibilité avec les fichiers existants)
ob_start();
//Common Functions
function sec_imp($time)
/* Formatage des secondes avant l'impression */
{
$jour = 0;$heure = 0;$minute = 0;$seconde = 0;
$jour = floor($time/86400);
$reste = $time%86400;
if ($jour!=0) $result = $jour.' J ';
$heure = floor($reste/3600);
$reste = $reste%3600;
if ($heure!=0) $result = $result.$heure.' H ';
$minute = floor($reste/60);
if ($minute!=0) $result = $result.$minute.' min ';
$seconde = $reste%60;
if ($seconde!=0) $result = $result.$seconde.' s ';
return $result;
 
// Get datas from form
if ((!isset($_POST['nbtickets'])) || (!is_numeric($_POST['nbtickets']))){
header('Location: voucher_new.php');
exit();
}
function GenPassword($nb_car="8")
{
/* generation aléatoire du mot de passe */
$password = "";
$chaine = "aAzZeErRtTyYuUIopP152346897mMLkK";
$chaine .= "jJhHgGfFdDsSqQwWxXcCvVbBnN152346897";
while($nb_car != 0)
{
$i = rand(0,71);
$password = $password.$chaine[$i];
$nb_car --;
}
return $password ;
}
function GenRandUsersName()
{
$nb_car= 12;
$chaine = "AZE489RTYU2PML5KJ35HGF9DSQWXCV3BN267";
//$i = rand(0,25);
//$j = rand(0,25);
//$k = rand(0,25);
$userName = "";
while($nb_car != 0)
{
$i = rand(0,35);
$userName .= $chaine[$i];
$nb_car --;
}
//return "T".$chaine[$i].substr(time(),4).$chaine[$j].$chaine[$k];
return $userName;
}
$nbTickets = (int)$_POST['nbtickets'];
$langue_imp = ((isset($_POST['langue_imp'])) ? $_POST['langue_imp'] : 'en');
require_once __DIR__ . '/../lib/langues_imp.php';
 
if (isset($_POST['nbtickets'])&& is_numeric($_POST['nbtickets'])){
$nbtickets = (int)$_POST['nbtickets'];
if ($config['general_lib_type'] === 'sql' && $config['sql_use_operators'] === 'true') {
$show_ops = 1;
$colspan = 2;
} else {
header("Location: voucher_new.php");
exit;
$show_ops = 0;
$colspan = 1;
}
if ($config['sql_use_operators'] === 'true') {
$text = ',op';
$passwd_op = ",':='";
}
 
// Langue du Ticket d'impression en fonction de la liste déroulante
if (isset($_POST["langue_imp"])) { $langue_imp = $_POST["langue_imp"]; } else { $langue_imp = "en"; };
if (is_file("../lib/langues_imp.php")) include("../lib/langues_imp.php") ;
 
require(ROOT.'etc/freeradius-web/config.php');
require('../lib/attrshow.php');
require('../lib/defaults.php');
if ($config[general_lib_type] == 'sql' && $config[sql_use_operators] == 'true'){
$colspan=2;
$show_ops=1;
}else{
$show_ops = 0;
$colspan=1;
// Connect to database
$link = da_sql_pconnect($config);
if (!$link) {
exit('ERR_DATABASE_CONNECT');
}
 
$LIBpath = "../lib/";
require(ROOT.'etc/freeradius-web/config.php');
if (is_file($LIBpath."sql/drivers/$config[sql_type]/functions.php"))
{
include_once($LIBpath."sql/drivers/$config[sql_type]/functions.php");
$nbFailUsers = 0;
 
 
 
// Generate tickets
$ticketsGenerator = new TicketsGenerator(['language' => $langue_imp]);
 
 
for ($i = 0; $i < $nbTickets; $i++) {
// Generate username and password
$login = generateRandomString(8);
$passwd = generateRandomString(12);
$password = $passwd;
// Check user exist
require '../lib/'.$config['general_lib_type'].'/user_info.php';
if ($user_exists === 'yes') {
$nbFailUsers++;
continue;
}
else
{
echo "<b>Could not include SQL library</b><br>\n";
exit();
 
// Create user in database
require '../lib/'.$config['general_lib_type'].'/create_user.php';
 
// Get group infos
if ((isset($group)) && ($group !== '')) {
$loginUser = $login;
$login = $group;
require '../lib/sql/group_info.php';
$login = $loginUser;
}
include_once($LIBpath.'functions.php');
if ($config['sql_use_operators'] == 'true')
{
include_once($LIBpath."operators.php");
$text = ',op';
$passwd_op = ",':='";
}
$link = @da_sql_pconnect($config);
 
$nbfailuser = 0;
// Format datas
$sto_imp = (($sto_imp === '') ? $l_unlimited : formatTime($sto_imp));
$mas_imp = (($mas_imp === '') ? $l_unlimited : formatTime($mas_imp));
$mds_imp = (($mds_imp === '') ? $l_unlimited : formatTime($mds_imp));
$mms_imp = (($mms_imp === '') ? $l_unlimited : formatTime($mms_imp));
$exp_imp = (($Expiration === '') ? $l_without : date('d - m - Y', strtotime($Expiration)));
 
// Préparation de la fiche PDF
$pdf = new ticketsPDF(2,3);
$pdf->setTicketsTitle($l_title_imp);
$pdf->setTicketsFooter($l_footer_imp);
// Add user
$ticketsGenerator->addTicket([
'username' => $login,
'password' => $password,
'maxAllSession' => $mas_imp,
'sessionTimeout' => $sto_imp,
'maxDailySession' => $mds_imp,
'expiration' => $exp_imp
]);
}
 
if ($link)
 
// Generate the PDF
$ticketsGenerator->output();
 
 
/**
* Format time in seconds to days/hours/minutes/secondes.
*
* @param int $time Time in seconds.
*
* @return string Formated time.
*/
function formatTime($time)
{
if (is_file($LIBpath."crypt/$config[general_encryption_method].php"))
{
include($LIBpath."crypt/$config[general_encryption_method].php");
// ajout des comptes (mêmes attributs pour tous sauf login + mdp)
$days = floor($time / 86400); $reste = $time % 86400;
$hours = floor($reste / 3600); $reste = $reste % 3600;
$minutes = floor($reste / 60);
$secondes = $reste % 60;
 
for ($i = 1; $i <= $nbtickets; $i++)
{
// effacement des variables
$login = "";
$passwd = "";
// création des données uniques
$login = GenRandUsersName();
$passwd = GenPassword();
// création des variables d'impression
$login_imp = $login;
$passwd1_imp = $passwd;
// encryption du mot de passe (pas besoins, déjà présent dans le fichier create_user.php)
//$passwd = da_encrypt($passwd);
// test si l'usager existe
if (is_file("../lib/$config[general_lib_type]/user_info.php"))
include("../lib/$config[general_lib_type]/user_info.php");
if ($user_exists == "no"){
// Création de l'usager
if (is_file("../lib/$config[general_lib_type]/create_user.php"))
include("../lib/$config[general_lib_type]/create_user.php");
/* Petit traitement pré-impression pour la lisibilité */
/* Récupération des attributs du groupe le cas échéant */
if ($group!=''){
$saved_login = $login;
$login = $group;
if (is_file("../lib/sql/group_info.php"))
include("../lib/sql/group_info.php");
$login = $saved_login;}
/* Si les valeurs de durée sont vide remplissage avec la valeur 'Illimitée'*/
/* et formatage des secondes sous le format Heure min ses*/
if ($sto_imp==''){ $sto_imp=$l_unlimited;}
else { $sto_imp=sec_imp($sto_imp);}
if ($mas_imp==''){ $mas_imp=$l_unlimited;}
else { $mas_imp=sec_imp($mas_imp);}
if ($mds_imp==''){ $mds_imp=$l_unlimited;}
else { $mds_imp=sec_imp($mds_imp);}
if ($mms_imp==''){ $mms_imp=$l_unlimited;}
else { $mms_imp=sec_imp($mms_imp);}
/*Formatage de la date afin d'être lisible dans toute les langues 'jj mm yyyy'*/
$exp_imp = $Expiration;
if ($exp_imp!=''){ $exp_imp=date("d - m - Y",strtotime($exp_imp));}
else { $exp_imp=$l_without;}
// Ajout d'un ticket sur la fiche PDF
$pdf->newTickets();
$pdf->Ln(5);
$pdf->addInfos($l_login_imp, $login_imp);
$pdf->addInfos($l_password_imp, $passwd1_imp);
$pdf->Ln(5);
$pdf->addInfos($l_max_all_session_imp, $mas_imp);
$pdf->addInfos($l_session_timeout_imp, $sto_imp);
$pdf->addInfos($l_max_daily_session_imp, $mds_imp);
$pdf->addInfos($l_expiration_imp, $exp_imp);
$pdf->Ln(10);
$pdf->addComment($l_explain);
return "$days J $hours H $minutes min $secondes s";
}
 
// Création du duplicata
$pdf->newTickets();
$pdf->Ln(5);
$pdf->addInfos($l_login_imp, $login_imp);
$pdf->addInfos($l_password_imp, $passwd1_imp);
$pdf->Ln(5);
$pdf->addInfos($l_max_all_session_imp, $mas_imp);
$pdf->addInfos($l_session_timeout_imp, $sto_imp);
$pdf->addInfos($l_max_daily_session_imp, $mds_imp);
$pdf->addInfos($l_expiration_imp, $exp_imp);
$pdf->Ln(10);
$pdf->addComment($l_duplicate,'C');//à mettre en rouge
} else {
$nbfailuser++;
}# if user
} # end for
} # end if (is file)
} # end if (link)
 
//Affichage de la fiche de tickets
ob_end_clean();
$pdf->Output();
?>
/**
* Generate a random string.
*
* @param int $length Length of the string.
*
* @return string Random string.
*/
function generateRandomString($length = 8)
{
$string = '';
$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randoms = openssl_random_pseudo_bytes($length);
for ($i = 0; $i < $length; $i++) {
$string .= $chars[ord($randoms[$i]) % 62];
}
return $string;
}
Property changes:
Added: svn:keywords
+Id
\ No newline at end of property