Valider 1a5904ea rédigé par Eric Lupinacci's avatar Eric Lupinacci
Parcourir les fichiers

Mise en oeuvre d'un formulaire de filtrage d'un fichier log affiché : pour...

Mise en oeuvre d'un formulaire de filtrage d'un fichier log affiché : pour l'instant uniquement sur la gravité
Typage des actions.
parent 09576615
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+2 −7
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<?php

/**
 * Ce fichier contient l'action `supprimer_log` utilisée pour supprimer un fichier log de SPIP.
 *
 */

if (!defined('_ECRIRE_INC_VERSION')) {
	return;
}


/**
 * Action de suppression d'un log contenu dans _DIR_LOG.
 * Cette action est possible dans le privé lorsqu'un fichier log est en cours d'affichage.
 *
 * @return void
 */
function action_supprimer_log_dist() {

function action_supprimer_log_dist() : void {
	// Securisation: le nom du fichier est attendu en argument
	$securiser_action = charger_fonction('securiser_action', 'inc');
	$fichier = $securiser_action();
	if (!@is_readable($fichier)) {
		// On loge l'erreur dans le log par défaut de SPIP
		spip_log("Suppression impossible du fichier log, $fichier: pas accessible en lecture", _LOG_ERREUR);
		spip_log("Suppression impossible du fichier log, {$fichier}: pas accessible en lecture", _LOG_ERREUR);
		return;
	}

+2 −7
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<?php

/**
 * Ce fichier contient l'action `telecharger_log` utilisée pour télécharger un fichier log de SPIP.
 *
 */

if (!defined('_ECRIRE_INC_VERSION')) {
	return;
}
@@ -15,15 +12,13 @@ if (!defined('_ECRIRE_INC_VERSION')) {
 *
 * @return void
 */
function action_telecharger_log_dist() {

function action_telecharger_log_dist() : void {
	// Securisation: le nom du fichier est attendu en argument
	$securiser_action = charger_fonction('securiser_action', 'inc');
	$fichier = $securiser_action();
	if (!@is_readable($fichier)) {
		// On loge l'erreur dans le log par défaut de SPIP
		spip_log("Téléchargement impossible du fichier log, $fichier: pas accessible en lecture", _LOG_ERREUR);

		spip_log("Téléchargement impossible du fichier log, {$fichier}: pas accessible en lecture", _LOG_ERREUR);
		return;
	}

+28 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<div class="formulaire_spip formulaire_#FORM">
	<form method='post' action='#ENV{action}'><div>
		[(#REM) declarer les hidden qui declencheront le service du formulaire parametre : url d'action ]
		#ACTION_FORMULAIRE
		<fieldset>
			<legend><:simplog:fieldset_filtre_gravite:></legend>
			<div class="editer-groupe">
				#SET{name, niveau}#SET{erreurs, #ENV**{erreurs}|table_valeur{#GET{name}}}
				<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur] pleine_largeur conteneur_choix">[
					<span class='erreur_message'>(#GET{erreurs})</span>]
					<BOUCLE_gravites(DATA) {source table, #VAL|simplog_lister_gravites}{par cle}>
						#SET{gravite_affichee, #CLE|simplelog_contruire_gravite{#VALEUR}}
						<div class="choix">
							<input type="checkbox" name="#GET{name}\[\]" id="#GET{name}_#CLE" value="#CLE"
							[(#CLE|in_any{#ENV{#GET{name}}}|oui)checked="checked"]
							[(#CLE|in_any{#ENV{_niveaux_log}}|non)disabled="disabled"] />
							<label for="#GET{name}_#CLE">#GET{gravite_affichee}</label>
						</div>
					</BOUCLE_gravites>
				</div>
			</div>
		</fieldset>

	  [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
	  <!--extra-->
	  <p class='boutons'><span class='image_loading'>&nbsp;</span><input type='submit' class='btn submit' value='<:simplog:filtrer:>' /></p>
	</div></form>
</div>
+67 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<?php

if (!defined('_ECRIRE_INC_VERSION')) {
	return;
}

/**
 * Chargement des données : le formulaire propose de filtrer le log sur les gravités.
 *
 * @param string $niveau      Liste des gravités à afficher, séparées par une virgule.
 * @param array  $niveaux_log Liste des gravités incluses dans le fichier de log affiché.
 *
 * @return array Tableau des données à charger par le formulaire.
 *               - `niveau`       : (saisie) liste des gravités à afficher
 *               - `_niveaux_log` : (affichage) liste des gravités incluses dans le log
 */
function formulaires_filtrer_log_charger_dist(string $niveau, array $niveaux_log) : array {
	$valeurs = [];

	// On transmet la liste des niveaux de gravite utilisables pour le log
	$valeurs['_niveaux_log'] = $niveaux_log;

	// On met la liste des gravites à filtrer en tableau
	// - si la liste est vide, c'est qu'on veut voir tous les logs, on sélectionne donc tous les niveaux possibles
	if ($niveau) {
		$valeurs['niveau'] = explode(',', $niveau);
	} else {
		$valeurs['niveau'] = $niveaux_log;
	}

	return $valeurs;
}

/**
 * Vérification des saisies : il faut toujours saisir au moins une gravité.
 *
 * @param string $niveau      Liste des gravités à afficher, séparées par une virgule.
 * @param array  $niveaux_log Liste des gravités incluses dans le fichier de log affiché.
 *
 * @return array Tableau des erreurs éventuelles
 */
function formulaires_filtrer_log_verifier_dist(string $niveau, array $niveaux_log) : array {
	$erreurs = [];

	// Vérifier qu'on a saisi au moins une gravité
	if (!_request('niveau')) {
		$erreurs['niveau'] = _T('info_obligatoire');
	}

	return $erreurs;
}

/**
 * Exécution du formulaire : la liste des gravités compilées est fournie en paramètre de la page.
 *
 * @param string $niveau      Liste des gravités à afficher, séparées par une virgule.
 * @param array  $niveaux_log Liste des gravités incluses dans le fichier de log affiché.
 *
 * @return array Tableau retourné par le formulaire contenant essentiellement l'url avec les niveaux de gravité.
 */
function formulaires_filtrer_log_traiter_dist(string $niveau, array $niveaux_log) : array {
	// On renvoie sur la page en cours en ajoutant dans l'url la liste des niveaux demandés
	$retour = ['editable' => true];
	$retour['redirect'] = parametre_url(self(), 'niveau', implode(',', _request('niveau')));

	return $retour;
}
+2 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -25,6 +25,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
	// F
	'fichier' => 'Fichier « @fichier@ »',
	'filtre_gravite_aucun' => 'Toutes les gravités',
	'fieldset_filtre_gravite' => 'Filtrer par gravité',
	'filtrer' => 'Filtrer',

	// I
	'info_hit_pri' => 'Privé',
Chargement en cours