update jirafeau
This commit is contained in:
parent
7190cf3113
commit
779edcd6dd
@ -20,10 +20,13 @@ require (JIRAFEAU_ROOT . 'lib/lang.php');
|
||||
|
||||
define ('VAR_TOKENS', $cfg ['var_root'].'tokens/');
|
||||
define ('VAR_TRACKS', $cfg ['var_root'].'tracks/');
|
||||
define ('VAR_PERIOD', $cfg ['var_root'].'period/');
|
||||
define ('VAR_FAKE', $cfg ['var_root'].'fake/');
|
||||
|
||||
define ('TOKEN_USE_LIMIT', "-2 hours");
|
||||
define ('TOKEN_LOGIN_LIMIT', "-15 minutes");
|
||||
define ('TOKEN_LOGOUT_LIMIT', "-8 hours");
|
||||
define ('DEFAULT_PERIOD', "month");
|
||||
|
||||
define ('E_BAD_ARCHIVE_NAME', 'Bad archive name format');
|
||||
define ('E_CREATE_ZIP', "Impossible de créer l'archive.");
|
||||
@ -49,11 +52,12 @@ define ('M_NO_FILENAME', 'SansNom');
|
||||
define ('M_NO_SENDER', 'kaz-');
|
||||
define ('M_OLD_ATTACHEMENT_DIRNAME', "RappelHistorique");
|
||||
define ('M_SEND', "Connexion");
|
||||
define ('M_LOGOUT', 'Déconnexion');
|
||||
define ('M_LOGOUT', 'Deconnecter');
|
||||
define ('M_REFRESH', 'Actualiser');
|
||||
define ('M_LOGOUT_TOKEN', "Vous n'êtes plus connecté.");
|
||||
define ('M_SEND_TOKEN', "Vous allez recevoir un lien d'accès temporaire à vos données.");
|
||||
|
||||
define ('A_ACTION', 'a'); // action : T_SEND, T_LOGOUT, A_RECORD+(on|off)
|
||||
define ('A_ACTION', 'a'); // action : T_SEND, T_LOGOUT, A_RECORD+(on|off), A_PERIOD(minute|hour|day|week|month|quarter)
|
||||
define ('A_GET', 'g'); // get archive
|
||||
define ('A_HASH', 'h'); // file to update or delete
|
||||
define ('A_OPEN_TOKEN', 'o'); // ask token
|
||||
@ -61,6 +65,7 @@ define ('A_SENDER', 's'); // session sender
|
||||
define ('A_TOKEN', 't'); // session token
|
||||
define ('A_UPDATE', 'u'); // update perriod for file or archive
|
||||
define ('A_RECORD', 'r'); // get track status
|
||||
define ('A_PERIOD', 'p'); // get period status
|
||||
define ('A_DELETE', 'd'); // delete file ou archive + (sender+token)
|
||||
define ('T_BAD_PASW', 'bad_psw');
|
||||
define ('T_CREATE', "create");
|
||||
@ -84,6 +89,16 @@ define ('T_ZIP_EXT', ".zip");
|
||||
define ('T_ARCHIVE_TITLE', "archive_content");
|
||||
define ('T_ARCHIVE_MIME', "text/kaz_email_archive");
|
||||
|
||||
|
||||
$periodText = ['minute' => "minute", 'hour' => "heure", 'day' => "jour", 'week' => "semaine", 'month' => "mois", 'quarter' => "trimestre"];
|
||||
$periodButton = ['day' => ["🕜", ">1 jour"],
|
||||
'week' => ["🕝", "> 1 semaine"],
|
||||
'month' => ["🕞", "> 1 mois"],
|
||||
'quarter' => ["🕟", "> 1 trimestre"]];
|
||||
$trackText = ['on' => "oui", 'off' => "non"];
|
||||
$doLogout = '';
|
||||
$message = '';
|
||||
|
||||
/* Operations may take a long time.
|
||||
* Be sure PHP's safe mode is off.
|
||||
*/
|
||||
@ -109,6 +124,66 @@ function return_error ($msg) {
|
||||
exit;
|
||||
}
|
||||
|
||||
// ========================================
|
||||
function setTrack ($sender) {
|
||||
if (!$sender)
|
||||
return;
|
||||
if (!file_exists (VAR_TRACKS))
|
||||
mkdir (VAR_TRACKS, 0755);
|
||||
touch (VAR_TRACKS.$sender);
|
||||
}
|
||||
function rmTrack ($sender) {
|
||||
if (!$sender)
|
||||
return;
|
||||
if (file_exists (VAR_TRACKS.$sender))
|
||||
unlink (VAR_TRACKS.$sender);
|
||||
}
|
||||
function getTrack ($sender) {
|
||||
if (!$sender)
|
||||
return;
|
||||
return file_exists (VAR_TRACKS.$sender);
|
||||
}
|
||||
|
||||
// ========================================
|
||||
function setPeriod ($sender, $period) {
|
||||
if (!$sender)
|
||||
return;
|
||||
if (!file_exists (VAR_PERIOD))
|
||||
mkdir (VAR_PERIOD, 0755);
|
||||
if (empty ($period) || DEFAULT_PERIOD == $period) {
|
||||
if (file_exists (VAR_PERIOD.$sender))
|
||||
unlink (VAR_PERIOD.$sender);
|
||||
} else
|
||||
file_put_contents (VAR_PERIOD.$sender, $period.NL);
|
||||
}
|
||||
function rmPeriod ($sender) {
|
||||
if (!$sender)
|
||||
return;
|
||||
if (file_exists (VAR_PERIOD.$sender))
|
||||
unlink (VAR_PERIOD.$sender);
|
||||
}
|
||||
function getPeriod ($sender) {
|
||||
if (!$sender || !file_exists (VAR_PERIOD.$sender))
|
||||
return DEFAULT_PERIOD;
|
||||
return trim (file (VAR_PERIOD.$sender)[0]);
|
||||
}
|
||||
|
||||
// ========================================
|
||||
function setFake ($sender, $dir_link, $dirTime) {
|
||||
if (!$sender)
|
||||
return;
|
||||
if (!file_exists (VAR_FAKE))
|
||||
mkdir (VAR_FAKE, 0755);
|
||||
file_put_contents (VAR_FAKE.$sender, "time: ".$dirTime.NL."sender: ".$sender.NL);
|
||||
rmToken ($sender);
|
||||
}
|
||||
|
||||
function getFake ($sender) {
|
||||
if (!$sender)
|
||||
return;
|
||||
return file_exists (VAR_FAKE.$sender);
|
||||
}
|
||||
|
||||
// ========================================
|
||||
function isKazArchive ($link) {
|
||||
return
|
||||
@ -116,16 +191,10 @@ function isKazArchive ($link) {
|
||||
jirafeau_escape ($link ['mime_type']) == T_ARCHIVE_MIME;
|
||||
}
|
||||
// ========================================
|
||||
function getTimeFile ($link) {
|
||||
$p = s2p ($link ['hash']);
|
||||
return filemtime (VAR_FILES . $p . $link ['hash']);
|
||||
}
|
||||
|
||||
function timeStamp2time ($timeStamp) {
|
||||
if (preg_match ("/^(\d{4})-(\d{2})-(\d{2})[ :-](\d{2}):(\d{2}):(\d{2})/i", $timeStamp, $matches))
|
||||
// XXX bug GMT+1
|
||||
return mktime ($matches [4]-1, $matches [5], $matches [6], $matches [2], $matches [3], $matches [1]-2000);
|
||||
return false;
|
||||
function getTimeFile ($hash) {
|
||||
$p = s2p ("$hash");
|
||||
$f = VAR_FILES . $p . $hash;
|
||||
return file_exists ($f) ? filemtime ($f) : 0;
|
||||
}
|
||||
|
||||
function valideTime ($t1, $t2) {
|
||||
@ -157,10 +226,11 @@ function update_link ($link_name, $link, $update_period) {
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// read archive info
|
||||
function read_archive_info ($link) {
|
||||
$p = s2p ($link ['hash']);
|
||||
// read archive info
|
||||
$result = [];
|
||||
$error=false;
|
||||
foreach (file (VAR_FILES . $p . $link ['hash']) as $line) {
|
||||
switch (true) {
|
||||
case preg_match ("/^\s*src:\s*(([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6})\s*$/i", $line, $matches):
|
||||
@ -176,10 +246,11 @@ function read_archive_info ($link) {
|
||||
$result [T_NEW][] = [$matches [1], $matches [2]];
|
||||
break;
|
||||
default:
|
||||
$error = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
return $error ? [] : $result;
|
||||
}
|
||||
|
||||
// ========================================
|
||||
@ -214,26 +285,6 @@ function send_email ($receiver, $receiver_name, $subject, $body_string){
|
||||
}
|
||||
}
|
||||
|
||||
// ========================================
|
||||
function setTrack ($sender) {
|
||||
if (!$sender)
|
||||
return;
|
||||
if (!file_exists (VAR_TRACKS))
|
||||
mkdir (VAR_TRACKS, 0755);
|
||||
touch (VAR_TRACKS.$sender);
|
||||
}
|
||||
function rmTrack ($sender) {
|
||||
if (!$sender)
|
||||
return;
|
||||
if (file_exists (VAR_TRACKS.$sender))
|
||||
unlink (VAR_TRACKS.$sender);
|
||||
}
|
||||
function getTrack ($sender) {
|
||||
if (!$sender)
|
||||
return;
|
||||
return file_exists (VAR_TRACKS.$sender);
|
||||
}
|
||||
|
||||
// ========================================
|
||||
function cleanToken () {
|
||||
if (!file_exists (VAR_TOKENS))
|
||||
@ -353,12 +404,12 @@ if ($do_update) {
|
||||
$sender = '';
|
||||
$senderError = false;
|
||||
if (isset ($_REQUEST [A_SENDER]) && !empty ($_REQUEST [A_SENDER])) {
|
||||
if (!preg_match ("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/i", $_REQUEST [A_SENDER])) {
|
||||
if (!preg_match ("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/i", $_REQUEST [A_SENDER]))
|
||||
$senderError=true;
|
||||
return;
|
||||
else {
|
||||
cleanToken ();
|
||||
$sender = $_REQUEST [A_SENDER];
|
||||
}
|
||||
cleanToken ();
|
||||
$sender = $_REQUEST [A_SENDER];
|
||||
}
|
||||
|
||||
// ========================================
|
||||
@ -433,15 +484,15 @@ if ($do_download) {
|
||||
if ($zip->open ($tmpFileName.T_ZIP_EXT, ZipArchive::CREATE) !== TRUE)
|
||||
return_error (E_OPEN_ZIP);
|
||||
|
||||
// create info XXX
|
||||
// create info
|
||||
if ($modif) {
|
||||
$info = '';
|
||||
if (isset ($archive_info [T_NOT_FOUND]))
|
||||
$info .= $archive_info [T_NOT_FOUND]. ($archive_info [T_NOT_FOUND] ? M_FILE_NOT_FOUND : M_FILES_NOT_FOUND).NL;
|
||||
if (isset ($archive_info [T_BAD_PASW]))
|
||||
$info .= M_BAD_KEY. $archive_info [T_BAD_PASW]. ($archive_info [T_BAD_PASW] ? M_FILE : M_FILES).NL;
|
||||
if (isset ($archive_info [$cat][T_RENAME]))
|
||||
$info .= $archive_info [$cat][T_RENAME]. ($archive_info [$cat][T_RENAME] ? M_FILE_RENAMED : M_FILES_RENAMED).NL;
|
||||
if (isset ($archive_info[T_RENAME]))
|
||||
$info .= $archive_info[T_RENAME]. ($archive_info[T_RENAME] ? M_FILE_RENAMED : M_FILES_RENAMED).NL;
|
||||
$zip->addFromString ($dirname.T_WARNING_FILENAME, $info);
|
||||
}
|
||||
foreach ([T_OLD, T_NEW] as $cat)
|
||||
@ -514,6 +565,18 @@ if (isset ($_REQUEST [A_RECORD]) && !empty ($_REQUEST [A_RECORD])) {
|
||||
exit;
|
||||
}
|
||||
|
||||
// ========================================
|
||||
if (isset ($_REQUEST [A_PERIOD]) && !empty ($_REQUEST [A_PERIOD])) {
|
||||
if (!preg_match ("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/i", $_REQUEST [A_PERIOD]))
|
||||
return_error (M_BAD_SENDER_NAME);
|
||||
$content = getPeriod ($_REQUEST [A_PERIOD]).NL;
|
||||
header ('HTTP/1.0 200 OK');
|
||||
header ('Content-Length: ' . strlen ($content));
|
||||
header ('Content-Type: text/plain');
|
||||
echo $content;
|
||||
exit;
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// form
|
||||
$token = '';
|
||||
@ -526,15 +589,18 @@ if (isset ($_REQUEST [A_TOKEN]) && !empty ($_REQUEST [A_TOKEN])) {
|
||||
$refToken = getToken ($sender);
|
||||
$url_base = $_SERVER ['HTTP_X_FORWARDED_PROTO']."://".$_SERVER ['HTTP_HOST'];
|
||||
if (isset ($_REQUEST [A_ACTION]) && $_REQUEST [A_ACTION] == T_SEND && $sender) {
|
||||
$token = setToken ($sender);
|
||||
// XXX test token
|
||||
$url = $url_base.$_SERVER ['SCRIPT_NAME']."?".A_SENDER."=".$sender."&".A_TOKEN."=".$token;
|
||||
$result = send_email ($sender, "", M_EMAIL_SUBJECT,
|
||||
str_replace (["___LINK___", "___IP___", "___DATE___"],
|
||||
[$url, $_SERVER ['HTTP_X_REAL_IP'] , date ("Y-m-d H:i:s")], M_EMAIL_CONTENT));
|
||||
|
||||
require (JIRAFEAU_ROOT . 'lib/template/header.php');
|
||||
echo M_SEND_TOKEN;
|
||||
if (getFake ($sender))
|
||||
echo "Ce compte ne peut plus se connecter. Veuillez contacter les administrateurs.";
|
||||
else {
|
||||
$token = setToken ($sender);
|
||||
// XXX test token
|
||||
$url = $url_base.$_SERVER ['SCRIPT_NAME']."?".A_SENDER."=".$sender."&".A_TOKEN."=".$token;
|
||||
$result = send_email ($sender, "", M_EMAIL_SUBJECT,
|
||||
str_replace (["___LINK___", "___IP___", "___DATE___"],
|
||||
[$url, $_SERVER ['HTTP_X_REAL_IP'] , date ("Y-m-d H:i:s")], M_EMAIL_CONTENT));
|
||||
echo M_SEND_TOKEN;
|
||||
}
|
||||
require (JIRAFEAU_ROOT.'lib/template/footer.php');
|
||||
exit;
|
||||
}
|
||||
@ -585,106 +651,114 @@ if (!getLoggedToken ($sender))
|
||||
else
|
||||
touch (VAR_TOKENS.$sender);
|
||||
|
||||
function setFake ($sender, $link_name) {
|
||||
// XXX
|
||||
}
|
||||
|
||||
function deleteAction ($link_name) {
|
||||
global $sender, $token, $message, $doLogout;
|
||||
|
||||
$link = jirafeau_get_link ($link_name);
|
||||
//$message .= "<pre>".print_r ($link, 1)."</pre>";
|
||||
if (!count ($link))
|
||||
return;
|
||||
if (isKazArchive ($link)) {
|
||||
$dir_name = $link_name;
|
||||
$dir_link = $link;
|
||||
$dirTime = getTimeFile ($link);
|
||||
$dirTime = getTimeFile ($dir_name);
|
||||
$archive_info = read_archive_info ($dir_link);
|
||||
if (count ($archive_info) && isset ($archive_info [T_TIMESTAMP]) && !empty ($archive_info [T_TIMESTAMP])) {
|
||||
$timeStamp = timeStamp2time ($archive_info [T_TIMESTAMP]);
|
||||
if (!valideTime ($timeStamp, $dirTime)) {
|
||||
setFake ($sender, $dir_name);
|
||||
$message .= "PB1 : ".$archive_info [T_TIMESTAMP]." ".$timeStamp." / ".$dirTime."<br/>";
|
||||
// XXX $doLogout = true;
|
||||
return;
|
||||
}
|
||||
if (! count ($archive_info))
|
||||
return;
|
||||
if ($sender != $archive_info [T_SENDER]) {
|
||||
setFake ($sender, $dir_link, $dirTime);
|
||||
$message .= "Tentative de supprimer un envoi dont vous n'êtes pas le propriétaire";
|
||||
$doLogout = true;
|
||||
return;
|
||||
}
|
||||
if ($archive_info [T_NEW])
|
||||
foreach ($archive_info [T_NEW] as [$file_name, $crypt_key]) {
|
||||
$file_link = jirafeau_get_link ($file_name);
|
||||
if (count ($file_link) == 0)
|
||||
if (! count ($file_link))
|
||||
continue;
|
||||
$fileTime = getTimeFile ($file_link);
|
||||
if (!valideTime ($dirTime, $fileTime)) {
|
||||
setFake ($sender, $dir_name);
|
||||
$message .= "PB2 : ".$archive_info [T_TIMESTAMP]." ".$timeStamp." / ".$dirTime." / ".$fileTime."<br/>";
|
||||
// XXX $doLogout = true;
|
||||
$fileTime = getTimeFile ($file_name);
|
||||
if (! valideTime ($dirTime, $fileTime)) {
|
||||
setFake ($sender, $dir_link, $dirTime);
|
||||
$message .= "Cet envoie a été forgée (dates incohéantes).";
|
||||
$doLogout = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
if ($archive_info [T_NEW])
|
||||
foreach ($archive_info [T_NEW] as [$file_name, $crypt_key]) {
|
||||
$file_link = jirafeau_get_link ($file_name);
|
||||
if (count ($file_link) == 0)
|
||||
if (! count ($file_link))
|
||||
continue;
|
||||
jirafeau_delete_link ($file_link);
|
||||
jirafeau_delete_link ($file_name);
|
||||
}
|
||||
jirafeau_delete_link ($dir_link);
|
||||
} else {
|
||||
setFake ($sender, $dir_name);
|
||||
$message .= "PB3 : ".$archive_info [T_TIMESTAMP]."<br/>";
|
||||
// XXX $doLogout = true;
|
||||
}
|
||||
} else {
|
||||
$file_name = $link_name;
|
||||
$file_link = $link;
|
||||
$fileTime = getTimeFile ($file_link);
|
||||
$stack = array (VAR_LINKS);
|
||||
while (($d = array_shift ($stack)) && $d != null) {
|
||||
$dir = scandir ($d);
|
||||
foreach ($dir as $dir_name) {
|
||||
if (strcmp ($dir_name, '.') == 0 || strcmp ($dir_name, '..') == 0 ||
|
||||
preg_match ('/\.tmp/i', "$dir_name")) {
|
||||
continue;
|
||||
}
|
||||
if (is_dir ($d . $dir_name)) {
|
||||
/* Push new found directory. */
|
||||
$stack [] = $d . $dir_name . '/';
|
||||
continue;
|
||||
}
|
||||
/* Read link informations. */
|
||||
$dir_link = jirafeau_get_link ($dir_name);
|
||||
$dirTime = getTimeFile ($dir_link);
|
||||
if (!count ($dir_link))
|
||||
continue;
|
||||
if (!isKazArchive ($dir_link))
|
||||
continue;
|
||||
$archive_info = read_archive_info ($dir_link);
|
||||
jirafeau_delete_link ($dir_name);
|
||||
return;
|
||||
}
|
||||
$file_name = $link_name;
|
||||
$file_link = $link;
|
||||
$fileTime = getTimeFile ($file_name);
|
||||
$stack = array (VAR_LINKS);
|
||||
while (($d = array_shift ($stack)) && $d != null) {
|
||||
if (!file_exists ($d))
|
||||
continue;
|
||||
$dir = scandir ($d);
|
||||
foreach ($dir as $dir_name) {
|
||||
if (strcmp ($dir_name, '.') == 0 || strcmp ($dir_name, '..') == 0 ||
|
||||
preg_match ('/\.tmp/i', "$dir_name")) {
|
||||
continue;
|
||||
}
|
||||
if (is_dir ($d . $dir_name)) {
|
||||
/* Push new found directory. */
|
||||
$stack [] = $d . $dir_name . '/';
|
||||
continue;
|
||||
}
|
||||
/* Read link informations. */
|
||||
$dir_link = jirafeau_get_link ($dir_name);
|
||||
$dirTime = getTimeFile ($dir_name);
|
||||
if (!count ($dir_link))
|
||||
continue;
|
||||
if (!isKazArchive ($dir_link))
|
||||
continue;
|
||||
$archive_info = read_archive_info ($dir_link);
|
||||
if (! count ($archive_info))
|
||||
return;
|
||||
if ($archive_info [T_NEW])
|
||||
foreach ($archive_info [T_NEW] as [$new_name, $crypt_key]) {
|
||||
if ($file_name == $new_name) {
|
||||
if ($sender == $archive_info [T_SENDER]) {
|
||||
if (valideTime ($dirTime, $fileTime))
|
||||
jirafeau_delete_link ($file_link);
|
||||
else {
|
||||
setFake ($sender, $dir_name);
|
||||
$message .= "<pre>".print_r ($archive_info, 1)."</pre>";
|
||||
$message .= "PB4 : ".$archive_info [T_TIMESTAMP]." ".$timeStamp." / ".$dirTime." / ".$fileTime."<br/>";
|
||||
// XXX $dologout = true;
|
||||
if ($file_name != $new_name)
|
||||
continue;
|
||||
if ($sender == $archive_info [T_SENDER]) {
|
||||
if (valideTime ($dirTime, $fileTime)) {
|
||||
jirafeau_delete_link ($file_name);
|
||||
$message .= jirafeau_escape ($file_link ['file_name'])." est supprim&eacte;.";
|
||||
// check empty dir
|
||||
$empty = true;
|
||||
foreach ([T_OLD, T_NEW] as $cat)
|
||||
if ($empty && isset ($archive_info [$cat]))
|
||||
foreach ($archive_info [$cat] as [$l, $c])
|
||||
if (count (jirafeau_get_link ($l))) {
|
||||
$empty = false;
|
||||
break;
|
||||
}
|
||||
if ($empty) {
|
||||
$message .= jirafeau_escape ($file_link ['dir_name'])." vide est &eacte;galement supprim&eacte;.";
|
||||
jirafeau_delete_link ($dir_name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (valideTime ($dirTime, $fileTime)) {
|
||||
setFake ($sender, $dir_name);
|
||||
$message .= "<pre>".print_r ($archive_info, 1)."</pre>";
|
||||
$message .= "PB5 : ".$archive_info [T_TIMESTAMP]." ".$timeStamp." / ".$dirTime." / ".$fileTime."<br/>";
|
||||
// XXX $doLogout = true;
|
||||
} else {
|
||||
setFake ($archive_info [T_SENDER], $dir_name);
|
||||
$message .= "<pre>".print_r ($archive_info, 1)."</pre>";
|
||||
$message .= "PB6 : ".$archive_info [T_TIMESTAMP]." ".$timeStamp." / ".$dirTime." / ".$fileTime."<br/>";
|
||||
}
|
||||
setFake ($sender, $dir_link, $dirTime);
|
||||
$message .= "Cet envoie a été forgée (dates incohéantes ".$dirTime. " ".$fileTime.").";
|
||||
$dologout = true;
|
||||
break;
|
||||
}
|
||||
if (valideTime ($dirTime, $fileTime)) {
|
||||
setFake ($sender, $dir_link, $dirTime);
|
||||
$message .= "Tentative de supprimer un envoi dont vous n'êtes pas le propriétaire";
|
||||
$doLogout = true;
|
||||
break;
|
||||
}
|
||||
setFake ($archive_info [T_SENDER], $dir_link, $dirTime);
|
||||
$message .= "Quelqu'un avétait revandiqué cet envoi";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -694,8 +768,6 @@ function deleteAction ($link_name) {
|
||||
// ========================================
|
||||
|
||||
// delete
|
||||
$doLogout = '';
|
||||
$message = '';
|
||||
if (isset ($_REQUEST [A_DELETE])) {
|
||||
if (!preg_match ('/[0-9a-zA-Z_-]+$/', $_REQUEST [A_DELETE]))
|
||||
return_error (t ('FILE_404'));
|
||||
@ -706,20 +778,31 @@ if (isset ($_REQUEST [A_DELETE])) {
|
||||
if ($doLogout || (isset ($_REQUEST [A_ACTION]) && $_REQUEST [A_ACTION] == T_LOGOUT)) {
|
||||
rmToken ($sender);
|
||||
require (JIRAFEAU_ROOT . 'lib/template/header.php');
|
||||
echo
|
||||
"<p>Informations concernant le compte : <b>".$sender."</b>".
|
||||
" (page actualisée à ".date ("H:i:s")." le ".date ("d/m/Y").").</p>";
|
||||
if ($message)
|
||||
echo $message;
|
||||
echo "<p>Info : ".$message."</p>";
|
||||
echo M_LOGOUT;
|
||||
require (JIRAFEAU_ROOT.'lib/template/footer.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
// change track
|
||||
if (isset ($_REQUEST [A_ACTION])) {
|
||||
if ($_REQUEST [A_ACTION] == A_RECORD."on")
|
||||
setTrack ($sender);
|
||||
else if ($_REQUEST [A_ACTION] == A_RECORD."off")
|
||||
rmTrack ($sender);
|
||||
$message = "<p>Votre suivi à été changé.</p>";
|
||||
// change track
|
||||
switch (true) {
|
||||
case preg_match ("/^".A_RECORD."(on|off)$/i", $_REQUEST [A_ACTION], $matches):
|
||||
if ($matches [1] == "on")
|
||||
setTrack ($sender);
|
||||
else
|
||||
rmTrack ($sender);
|
||||
$message .= "Votre suivi à été mise à jour.";
|
||||
break;
|
||||
case preg_match ("/^".A_PERIOD."(".implode ("|", array_keys ($periodText)).")$/i", $_REQUEST [A_ACTION], $matches):
|
||||
setPeriod ($sender, $matches [1]);
|
||||
$message .= "Votre période à été mise à jour.";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// list
|
||||
@ -753,9 +836,11 @@ while ( ($d = array_shift ($stack)) && $d != null) {
|
||||
}
|
||||
}
|
||||
require (JIRAFEAU_ROOT . 'lib/template/header.php');
|
||||
echo "<p>Page actualisée à ".date ("H:i:s d/m/Y")."</p>";
|
||||
echo
|
||||
"<p>Informations concernant le compte : <b>".$sender."</b>".
|
||||
" (page actualisée à ".date ("H:i:s")." le ".date ("d/m/Y").").</p>";
|
||||
if ($message)
|
||||
echo $message;
|
||||
echo "<p>Info : ".$message."</p>";
|
||||
echo '<script type="text/javascript">';
|
||||
?>
|
||||
function getURI (uri, params) {
|
||||
@ -790,12 +875,12 @@ function ajaxUpdate (period, hash) {
|
||||
xhr.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
|
||||
xhr.onreadystatechange = function () {
|
||||
if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
|
||||
alert ("rechargez la page"); // XXX updage page
|
||||
getURI ("<?php echo $_SERVER ['SCRIPT_NAME']; ?>", {<?php echo A_SENDER.": '".$sender."', ".A_TOKEN.": '".$token."'"; ?>});
|
||||
}
|
||||
}
|
||||
xhr.send ("<?php echo A_UPDATE; ?>="+period+"&<php ecgo A_HASH; ?>="+hash);
|
||||
}
|
||||
function rmArchive (f) {
|
||||
function rmFile (f) {
|
||||
if (!confirm ("Les suppressions sont definitives. Voulez-vous continuer ?"))
|
||||
return;
|
||||
getURI ("<?php echo $_SERVER ['SCRIPT_NAME']; ?>", {<?php echo A_DELETE; ?>: f, <?php echo A_SENDER.": '".$sender."', ".A_TOKEN.": '".$token."'"; ?>});
|
||||
@ -803,32 +888,47 @@ function rmArchive (f) {
|
||||
</script>
|
||||
|
||||
<style type="text/css"><!-- a {text-decoration: none;}
|
||||
div.frame {border: 1px; border-style: solid; padding: 1em;}
|
||||
div.frame {border: 1px; border-style: solid; padding: 1em; margin: 1em;}
|
||||
[data-tooltip]:before {position : absolute; content : attr(data-tooltip); opacity : 0; background: yellow; padding: 10px; marging: 1em; transform: translate(10px, 10px);}
|
||||
[data-tooltip]:hover:before {opacity : 1;}
|
||||
[data-tooltip]:not([data-tooltip-persistent]):before {pointer-events: none;}
|
||||
--></style>
|
||||
<?php
|
||||
$onChecked=$offChecked='';
|
||||
if (getTrack ($sender))
|
||||
$onChecked=' checked="checked"';
|
||||
else
|
||||
$offChecked=' checked="checked"';
|
||||
$defaultChecked = [];
|
||||
$defaultChecked [getTrack ($sender) ? "on" : "off"] = ' checked="checked"';
|
||||
$defaultChecked [getPeriod ($sender)] = ' selected="selected"';
|
||||
echo
|
||||
'<form method="post">'.
|
||||
"je veux que Kaz suive tous mes futurs envoie : ".
|
||||
'Je veux que Kaz suive tous mes futurs envoies: '.
|
||||
'<input type="hidden" name="'.A_SENDER.'" value="'.$sender.'"/>'.
|
||||
'<input type="hidden" name="'.A_TOKEN.'" value="'.$token.'"/>'.
|
||||
'<input type="radio" name="'.A_ACTION.'" value="'.A_RECORD.'on" '.$onChecked.'>oui '.
|
||||
'<input type="radio" name="'.A_ACTION.'" value="'.A_RECORD.'off" '.$offChecked.'>non '.
|
||||
'<input type="hidden" name="'.A_TOKEN.'" value="'.$token.'"/>';
|
||||
foreach ($trackText as $item => $text)
|
||||
echo '<input type="radio" name="'.A_ACTION.'" value="'.A_RECORD.$item.'"'.$defaultChecked [$item].'>'.$text.' ';
|
||||
echo
|
||||
'<button type="submit">'."valider".'</button>'.
|
||||
'</form>'.
|
||||
'<form method="post">'.
|
||||
'Je veux que mes futurs envois soient accessibles pendant au moins un·e '.
|
||||
'<select name="'.A_ACTION.'" style="width: auto !important;">';
|
||||
foreach ($periodText as $item => $text)
|
||||
echo ' <option value="'.A_PERIOD.$item.'"'.$defaultChecked [$item].'>'.$text.'</option>';
|
||||
echo
|
||||
'</select> '.
|
||||
'<button type="submit">'."valider".'</button>'.
|
||||
'</form>'.
|
||||
'<form method="post">'.
|
||||
'Je veux '.
|
||||
'<input type="hidden" name="'.A_SENDER.'" value="'.$sender.'"/>'.
|
||||
'<input type="hidden" name="'.A_TOKEN.'" value="'.$token.'"/>'.
|
||||
'<button type="submit">'.M_REFRESH.'</button>'.
|
||||
' la page.</form>'.
|
||||
'<form method="post">'.
|
||||
'Je veux me '.
|
||||
'<input type="hidden" name="'.A_ACTION.'" value="'.T_LOGOUT.'" />'.
|
||||
'<input type="hidden" name="'.A_SENDER.'" value="'.$sender.'"/>'.
|
||||
'<input type="hidden" name="'.A_TOKEN.'" value="'.$token.'"/>'.
|
||||
'<button type="submit">'.M_LOGOUT.'</button>'.
|
||||
'</form>';
|
||||
'.</form>';
|
||||
|
||||
if ($archives) {
|
||||
foreach ($archives as $archive_info) {
|
||||
@ -838,12 +938,12 @@ if ($archives) {
|
||||
$ka = $archive_info ['key'];
|
||||
echo
|
||||
'<a data-tooltip="voir" href="javascript:getKazArchive (\''.$la.'\', \''.$ka.'\');"> 👁 </a>'.
|
||||
'<a data-tooltip="voir le lien" href="javascript:showLink (\''.$la.'\', \''.$ka.'\');"> 🔗 </a>'.
|
||||
'<a data-tooltip="> 1 semaine" href="javascript:showLink (\''.$la.'\', \''.$ka.'\');"> 🕝 </a>'.
|
||||
'<a data-tooltip="> 1 mois" href="javascript:showLink (\''.$la.'\', \''.$ka.'\');"> 🕞 </a>'.
|
||||
'<a data-tooltip="> 1 trimestre" href="javascript:showLink (\''.$la.'\', \''.$ka.'\');"> 🕟 </a>'.
|
||||
'<a data-tooltip="voir le lien" href="javascript:showLink (\''.$la.'\', \''.$ka.'\');"> 🔗 </a>';
|
||||
foreach ($periodButton as $item => $bt)
|
||||
echo '<a data-tooltip="'.$bt[1].'" href="javascript:ajaxUpdate (\''.$la.'\', \''.$ka.'\');"> '.$bt[0].' </a>';
|
||||
echo
|
||||
'<strong>'.$archive_info [T_TIMESTAMP].'</strong>'.
|
||||
'<a data-tooltip="supprimer tous" href="javascript:rmArchive (\''.$la.'\', \''.$ka.'\', \'all\');"> ☠ </a>';
|
||||
'<a data-tooltip="supprimer tous" href="javascript:rmFile (\''.$la.'\');"> ♺ </a>';
|
||||
echo '<br/>=> '. ($archive_info ['time'] == -1 ? '∞' : jirafeau_get_datetimefield ($archive_info ['time'])).'<ul>';
|
||||
foreach ([T_NEW, T_OLD] as $cat) {
|
||||
$li_style = $cat == T_NEW ? "font-weight: bold;" : "font-style: italic;";
|
||||
@ -855,17 +955,17 @@ if ($archives) {
|
||||
$lf = $link_name;
|
||||
$kf = $link ['key'];
|
||||
echo
|
||||
'<li style="'.$li_style.'">'.
|
||||
'<li style="list-style:none; '.$li_style.'">'.
|
||||
'<a data-tooltip="voir" href="javascript:getKazFile (\''.$lf.'\', \''.$kf.'\');"> 👁 </a>'.
|
||||
'<a data-tooltip="voir le lien" href="javascript:showLink (\''.$lf.'\', \''.$kf.'\');"> 🔗 </a>'.
|
||||
'<a data-tooltip="> 1 semaine" href="javascript:showLink (\''.$lf.'\', \''.$kf.'\');"> 🕝 </a>'.
|
||||
'<a data-tooltip="> 1 mois" href="javascript:showLink (\''.$lf.'\', \''.$kf.'\');"> 🕞 </a>'.
|
||||
'<a data-tooltip="> 1 trimestre" href="javascript:showLink (\''.$lf.'\', \''.$kf.'\');"> 🕟 </a>'.
|
||||
'<a data-tooltip="voir le lien" href="javascript:showLink (\''.$lf.'\', \''.$kf.'\');"> 🔗 </a>';
|
||||
foreach ($periodButton as $item => $bt)
|
||||
echo '<a data-tooltip="'.$bt[1].'" href="javascript:ajaxUpdate (\''.$lf.'\', \''.$kf.'\');"> '.$bt[0].' </a>';
|
||||
echo
|
||||
jirafeau_escape ($link ['file_name']).
|
||||
' ('.jirafeau_escape ($link ['mime_type']).
|
||||
' '.jirafeau_human_size ($link ['file_size']).')';
|
||||
if ($cat == T_NEW)
|
||||
echo '<a data-tooltip="supprimer" href="javascript:rmArchive (\''.$la.'\', \''.$ka.'\', \''.$lf.'\');"> ☠ </a>';
|
||||
echo '<a data-tooltip="supprimer" href="javascript:rmFile (\''.$lf.'\');"> ♺ </a>';
|
||||
echo'</li>';
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user