403Webshell
Server IP : 202.61.199.114  /  Your IP : 216.73.217.139
Web Server : nginx/1.22.1
System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
User : web20 ( 1018)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/clients/client2/web20/web/wp-content/themes/drogentest-online/inc/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/clients/client2/web20/web/wp-content/themes/drogentest-online/inc/promille.php
<?php
/**
 * Promille-Rechner als Shortcode.
 *
 * Der Shortcode wird erst NACH wpautop expandiert – so kann WordPress die
 * Button-Struktur nicht mit <br/>-/<p>-Tags zerschießen.
 *
 * Usage: [dgt_promille_rechner]
 *
 * @package drogentest-online
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

function dgt_promille_rechner_shortcode() {
	ob_start();
	?>
<div class="dgt-promille" id="dgt-promille">
	<div class="dgt-promille-grid">
		<div class="dgt-promille-field">
			<span class="dgt-promille-label">Geschlecht</span>
			<div class="dgt-promille-radios">
				<label><input type="radio" name="dgt-prom-sex" value="m" checked> Mann</label>
				<label><input type="radio" name="dgt-prom-sex" value="w"> Frau</label>
			</div>
		</div>
		<div class="dgt-promille-field">
			<label class="dgt-promille-label" for="dgt-prom-weight">Körpergewicht (kg)</label>
			<input type="number" id="dgt-prom-weight" min="30" max="200" step="1" value="75" inputmode="numeric">
		</div>
		<div class="dgt-promille-field">
			<label class="dgt-promille-label" for="dgt-prom-hours">Stunden seit Trinkbeginn</label>
			<input type="number" id="dgt-prom-hours" min="0" max="24" step="0.5" value="0" inputmode="decimal">
		</div>
	</div>
	<div class="dgt-promille-drinks">
		<span class="dgt-promille-label">Getränke (Klick = +1, kleines Minus zum Reduzieren)</span>
		<div class="dgt-promille-drinklist"><?php
		$drinks = array(
			array( 'Bier',     '0,33 l · 5 %',   330, 5 ),
			array( 'Großbier', '0,5 l · 4,8 %',  500, 4.8 ),
			array( 'Wein',     '0,2 l · 12 %',   200, 12 ),
			array( 'Sekt',     '0,1 l · 11 %',   100, 11 ),
			array( 'Schnaps',  '4 cl · 40 %',     40, 40 ),
			array( 'Cocktail', '0,2 l · ~15 %',  200, 15 ),
		);
		foreach ( $drinks as $d ) {
			printf(
				'<button type="button" class="dgt-promille-drink" data-vol="%d" data-abv="%s"><span class="dgt-promille-drink-name">%s</span><span class="dgt-promille-drink-meta">%s</span><span class="dgt-promille-drink-count" data-count="0">0</span><span class="dgt-promille-drink-minus" aria-label="weniger">&minus;</span></button>',
				(int) $d[2],
				esc_attr( $d[3] ),
				esc_html( $d[0] ),
				esc_html( $d[1] )
			);
		}
		?></div>
	</div>
	<div class="dgt-promille-result" aria-live="polite">
		<div class="dgt-promille-result-main">
			<span class="dgt-promille-result-label">Aktueller Wert</span>
			<span class="dgt-promille-result-value" id="dgt-prom-bak">0,00 &permil;</span>
		</div>
		<div class="dgt-promille-result-meta">
			<div><span>Alkoholmenge</span> <strong id="dgt-prom-grams">0 g</strong></div>
			<div><span>Wieder nüchtern in</span> <strong id="dgt-prom-sober">&ndash;</strong></div>
		</div>
		<p class="dgt-promille-disclaimer">Die Berechnung berücksichtigt das Resorptionsdefizit (15 %) und einen mittleren Alkoholabbau von 0,15 &permil; pro Stunde. Es handelt sich um einen Schätzwert &ndash; keine medizinische oder gerichtsfeste Messung.</p>
		<button type="button" class="dgt-promille-reset" id="dgt-prom-reset">Zurücksetzen</button>
	</div>
</div>
<script>
(function(){
	var root=document.getElementById('dgt-promille');
	if(!root) return;
	var counts={}, drinks=root.querySelectorAll('.dgt-promille-drink');
	drinks.forEach(function(btn,i){
		counts[i]=0;
		btn.addEventListener('click',function(e){
			if(e.target.classList.contains('dgt-promille-drink-minus')){
				counts[i]=Math.max(0,counts[i]-1);
			} else {
				counts[i]=Math.min(20,counts[i]+1);
			}
			btn.querySelector('.dgt-promille-drink-count').textContent=counts[i];
			btn.classList.toggle('has-count',counts[i]>0);
			recalc();
		});
	});
	['change','input'].forEach(function(ev){
		root.querySelectorAll('input').forEach(function(inp){ inp.addEventListener(ev,recalc); });
	});
	document.getElementById('dgt-prom-reset').addEventListener('click',function(){
		drinks.forEach(function(b,i){ counts[i]=0; b.querySelector('.dgt-promille-drink-count').textContent='0'; b.classList.remove('has-count'); });
		document.getElementById('dgt-prom-weight').value=75;
		document.getElementById('dgt-prom-hours').value=0;
		root.querySelector('input[name="dgt-prom-sex"][value="m"]').checked=true;
		recalc();
	});
	function recalc(){
		var sex=root.querySelector('input[name="dgt-prom-sex"]:checked').value;
		var r=(sex==='w')?0.6:0.7;
		var weight=parseFloat(document.getElementById('dgt-prom-weight').value)||0;
		var hours=parseFloat(document.getElementById('dgt-prom-hours').value)||0;
		var grams=0;
		drinks.forEach(function(btn,i){
			var vol=parseFloat(btn.getAttribute('data-vol'));
			var abv=parseFloat(btn.getAttribute('data-abv'));
			grams += counts[i] * vol * (abv/100) * 0.8;
		});
		var bak=0;
		if(weight>0 && grams>0){
			bak = (grams*0.85) / (weight*r);
			bak = Math.max(0, bak - hours*0.15);
		}
		document.getElementById('dgt-prom-bak').textContent=bak.toFixed(2).replace('.',',')+' ‰';
		document.getElementById('dgt-prom-grams').textContent=Math.round(grams)+' g';
		var soberH = bak>0 ? bak/0.15 : 0;
		document.getElementById('dgt-prom-sober').textContent = soberH>0 ? (soberH<1 ? Math.round(soberH*60)+' min' : soberH.toFixed(1).replace('.',',')+' h') : '–';
		root.classList.toggle('over-legal', bak>=0.5);
		root.classList.toggle('over-zero',  bak>0 && bak<0.5);
	}
	recalc();
})();
</script>
	<?php
	return ob_get_clean();
}
add_shortcode( 'dgt_promille_rechner', 'dgt_promille_rechner_shortcode' );

Youez - 2016 - github.com/yon3zu
LinuXploit