Auf ExpertenTesten.de habe ich ein Interview über das WordPress Plugin EmailScrambler gegeben. Das Interview kann hier nachgelesen werden.
TYPO3 Cron bei All-Inkl anlegen für Version 9 / Getestet mit TYPO3 9.5.9
Erstellt in TYPO3 am 17. Dezember 2019 vom Daschmi
Beii All-Inkl kann man nur Cron Jobs einrichten, die eine URL aufrufen. Der TYPO3 Cron wird aber über ein CLI Script gestartet. Daher muss man den CLI Aufruf über einen Webzugriff konfigurieren.
Folgendes PHP Script (Im Root unter) habe ich verwendet
<?php exec(" /usr/bin/php73 {PFAD ZUM TYPO3 DocumentRoot}/typo3/sysext/core/bin/typo3 scheduler:run", $arOut); echo "<pre>"; print_r($ arOut ); echo "</pre>";
Anschließend muss man bei All-Inkl noch den Job konfigurieren

Sollte man direct_mail verwenen, so muss der Planer noch im TYPO3 konfiguriert werden, aber das hat nichts mit All-Inkl zu tun.
Verzeichnisse mit Inhalt und Unterverzeichnissen rekursiv löschen mit PHP
Erstellt in PHP am 25. September 2019 vom Daschmi
Mit folgender Klasse/Funktion können mit der Programmiersprache PHP Verzeichisse und darin enthaltene Dateien rekursiv gelöscht werden.
abstract class DirHelper { /** * Verzeichnis mit Inhalten recursiv löschen * @param string $path * * @return bool */ public static function rmDir(string $path) : bool { if (is_dir($path)) { $hPath = opendir($path); if ($hPath) { while ($file = readdir($hPath)) { if ($file != "." && $file != "..") { if (!is_dir($path."/".$file)) { unlink($path."/".$file); } else { self::rmDir($path.'/'.$file); } } } closedir($hPath); } rmdir($path); return true; } return false; } }
Aufruf
DirHelper:: rmDir('{Pfad}');
Javascript Funktion um den RMS / Root Mean Square /Quadratisches Mittel einer Zahlenreihe als Array zu bestimmen
Erstellt in Javascript am 16. August 2019 vom Daschmi
function(ar) { let sq = ar.map((v) => (v * v)); let s = sq.reduce((a, v) => (a + v)); return Math.sqrt(s / ar.length); }
Kleine Hilfsfunktion um FILETIME in einen Unix TIMESTAMP zu konvertieren und umgekehrt
Erstellt in PHP am 6. August 2019 vom Daschmi
Für ein Projekt, bei der eine Kommunikation mit einem Windows Programm und einem Webserver stattfindet musste ich die im Windows bereich gebräuchlichen FILETIME Datumstypen (64Bit) in normale Unix TIMESTAMPS konvertieren. Folgende kleine Funktionen haben die Zeitstempel für mich konvertiert.
abstract Class TimestampHelper { public static function FILETIME_to_UNIXTIMESTAMP(float $filetime) : int { return $filetime / (10 * 1000 * 1000) - 11644473600; } public static function UNIXTIMESTAMP_to_FILETIME($timestamp) : int { return ($timestamp + 11644473600) * (10 * 1000 * 1000); } }
Canvas und Rechtecke mit abgerundeten Ecken
Erstellt in Allgemein am 31. Juli 2019 vom Daschmi
Für den Etikator brauchte ich eine kleine Funktion, die in der HTML5 Visualisierung runde Ecken darstellt. Diese habe ich mit dem Canvas Element und folgender Funktion realisiert:
function roundRect(ctx, x, y, w, h, r) { ctx.beginPath(); ctx.moveTo(x + r, y); ctx.lineTo(x + w - r, y); ctx.quadraticCurveTo(x + w, y, x + w, y + r); ctx.lineTo(x + w, y + h - r); ctx.quadraticCurveTo(x + w, y + h, x + w - r, y + h); ctx.lineTo(x + r, y + h); ctx.quadraticCurveTo(x, y + h, x, y + h - r); ctx.lineTo(x, y + r); ctx.quadraticCurveTo(x, y, x + r, y); ctx.closePath(); }
PHP Funktion um HEX Farben in Dezimal RGB Farben zu zerlegen
Erstellt in PHP am 18. März 2019 vom Daschmi
/** * @param string $hex #FF0000 oder FF0000 * @param array $default * @return array */ public static function hex2rgb(string $hex, array $default = ['r' => 0, 'g' => 0, 'b' => 0]) : array { if (substr($hex, 0, 1) !== '#') $hex = '#'.$hex; if (!preg_match('/#([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?\b/', $hex)) return $default; $r = substr($hex, 1, 2); $r = hexdec($r); $g = substr($hex, 3, 2); $g = hexdec($g); $b = substr($hex, 5, 2); $b = hexdec($b); return [ 'r' => $r, 'g' => $g, 'b' => $b ]; }
Composer Element mit Kategorieauswahl
Erstellt in Wordpress am 28. Februar 2019 vom Daschmi
$categories_array = []; foreach (\get_categories() as $category ) { $categories_array[html_entity_decode($category->name)] = $category->term_id; } \vc_map([ 'name' => __('Beitragsfilteransicht 2', 'lhw'), 'base' => 'm1_postfilter', 'class' => '', 'category' => 'M1', 'params' => [ [ 'param_name' => 'category_id', 'type' => 'dropdown', 'value' => $categories_array, 'heading' => __('Category filter:', 'lhw'), 'description' => '', 'holder' => 'div', 'class' => '' ] ] ]);
(Gesetzliche) Feiertage ermitteln in Abhängigkeit der Bundesländer mittels PHP
Erstellt in PHP am 22. Februar 2019 vom Daschmi
Mit folgender PHP Funktion, kann überprüft werden ob an einem Datum (Timestamp) ein Feiertag ist und wenn ja in welchem Bundesland.
class Helper { /** * @param $tDay Timestamp des Tages, der auf einen Feiertag überprüft werden soll * @return array( * 'text' => '' Text * 'feast' => boolean True wenn Feiertag * 'arState' => '' Leerer Array oder Array mit Bundesländern für die der Feiertag gilt * ) * * BW = Baden-Württemberg * BY = Bayern * BE = Berlin * BB = Brandenburg * HB = Bremen * HH = Hamburg * HE = Hessen * MV = Mecklenburg-Vorpommern * NI = Niedersachsen * NW = Nordrhein-Westfalen * RP = Rheinland-Pfalz * SL = Saarland * SN = Sachsen * ST = Sachsen-Anhalt * SH = Schleswig-Holstein * TH = Thüringen */ public static function getFeastInfo($tDay) { $md = date('md', $tDay); $tEaster = easter_date(date('Y', $tDay)); $text = ''; $feast = ''; $arState = []; if ($md == '0101') { $feast = _('Neujahr'); } else if ($md == '0501') { $feast = _('Erster Mai'); } else if ($md == '0106') { $feast = _('Heiligen Drei Könige'); $arState = ['BW', 'BY', 'ST']; } else if ($md == date('md', strtotime('-2 day', $tEaster))) { $feast = _('Karfreitag'); } else if ($md == date('md', $tEaster)) { $feast = _('Ostersonntag'); } else if ($md == date('md', strtotime('+1 day', $tEaster))) { $feast = _('Ostermontag'); $arState = ['SN']; } else if ($md == date('md', strtotime('+39 day', $tEaster))) { $feast = _('Christi Himmelfahrt'); } else if ($md == date('md', strtotime('+49 day', $tEaster))) { $feast = _('Pfingstsonntag'); } else if ($md == date('md', strtotime('+50 day', $tEaster))) { $feast = _('Pfingstmontag'); } else if ($md == date('md', strtotime('+60 day', $tEaster))) { $feast = _('Fronleichnam'); $arState = ['BW', 'BY', 'HE', 'NW', 'RP', 'SL', 'SN', 'TH']; } else if ($md == '0815') { $feast = _('Maria Himmelfahrt'); $arState = ['SL', 'BY']; } else if ($md == '1003') { $feast = _('Tag der deutschen Einheit'); } else if ($md == '1031') { $feast = _('Reformationstag'); $arState = ['BB', 'MV', 'SN', 'ST', 'TH']; } else if ($md == '1101') { $feast = _('Allerheiligen'); $arState = ['BW', 'BY', 'NW', 'RP', 'SL']; } else if ($md == date('md', strtotime("last wednesday", mktime(0, 0, 0, 11, 23,date('Y', $tDay))))) { $feast = _('Buß- und Bettag'); $arState = ['SN']; } else if ($md == '1224') { $feast = _('Heiliger Abend'); } else if ($md == '1225') { $feast = _('1. Weihnachtsfeiertag'); } else if ($md == '1226') { $feast = _('2. Weihnachtsfeiertag'); } else if ($md == '1231') { $feast = _('Silvester (Bankfeiertag)'); } else if ($md == '1231') { $feast = _('Silvester (Bankfeiertag)'); } else if ($md == '0803') { $feast = _('Internationaler Frauentag'); $arState = ['BE']; } if (date('N', $tDay) === '6') $text = 'Samstag'; else if (date('N', $tDay) === '7') $text = 'Sonntag'; else $text = ''; if (sizeof($arState) > 0) { $arStateMapping = [ 'BW' => 'Baden-Württemberg', 'BY' => 'Bayern', 'BE' => 'Berlin', 'HB' => 'Bremen', 'HH' => 'Hamburg', 'HE' => 'Hessen' ,'MV' => 'Mecklenburg-Vorpommern', 'NI' => 'Niedersachsen', 'NW' => 'Nordrhein-Westfalen', 'RP' => 'Rheinland-Pfalz', 'SL' => 'Saarland', 'SN' => 'Sachsen', 'ST' => 'Sachsen-Anhalt', 'SH' => 'Schleswig-Holstein', 'TH' => 'Thüringen' ]; foreach ($arState as $k => $v) { $arState[$k] = $arStateMapping[$v]; } } if ($feast === '' && $text === '') $text = 'Arbeitstag'; else if ($feast !== '' && $text !== '') $text = $text.' ('.$feast.rtrim(', '.implode(', ', $arState), ' ,').')'; else if ($feast !== '') $text = $feast.rtrim(', '.implode(', ', $arState), ' ,'); return [ 'text' => $text, 'feast' => ($feast !== ''), 'arState' => $arState ]; } }
Siehe auch: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland
HTML Textarea auf Zeilen/Rows bei Eingabe begrenzen
Erstellt in Allgemein am 19. Januar 2019 vom Daschmi
Um ein HTML Input Element von Typ TEXTAREA auf Zeilenanzahl zu beschränken kann folgender Code verwendet werden.
Voraussetzung:
- TEXTAREA hat eine feste Breite und Höhe
- TEXTAREA hat eine definierte Zeilenhöhe
- Resize der TEXTAREA sollte unterbunden werden
- jQuery (der Code kann auch auf reines vanilla.js umgeschrieben werden)
<textarea style="white-space:normal; resize:none; min-height:0px; height:60px; width:300px; line-height:20px;" rows="3" id="limitlines"></textarea> jQuery(document).ready(function() { jQuery('#limitlines').on('input', function() { var jqTextarea = jQuery(this); var line_height = parseInt(jqTextarea.css('line-height').replace(/px/, '')); var rows = parseInt(jqTextarea.attr("rows")); while (jqTextarea.get(0).scrollHeight > rows * line_height) { jqTextarea.val(jqTextarea.val().substring(0, jqTextarea.val().length - 1)); } }); });
Beispiel: