blog.bartlweb - a technologist's external brain

Thema: Webentwicklung

Datum über SQL formatiert ausgeben

Um über SQL ein Datum sofort als formatierten String retour zu bekommen muss, dass Datum entweder im SQL-Dateformat vorliegen oder als UNIX-Timestamp gespeichert sein.

SQL-Date

DATE_FORMAT(<field>, <dateformat>)

Beispiel

SELECT DATE_FORMAT(tstamp, '%Y') FROM table;

UNIX-Timestamp

FROM_UNIXTIME(<field>, <dateformat>)

Beispiel

SELECT FROM_UNIXTIME(tstamp, '%d.%m.%Y - %H:%i') FROM table WHERE FROM_UNIXTIME(tstamp, '%Y') = 2010;

Klick und Doppelklick-Event auf dasselbe Element per JS abfangen

Die folgende jQuery-Funktion von Jacek Becela (http://gist.github.com/399624) erlaubt das Abfangen von Klick- und Doppelklick-Events auf ein Element. Werden beide Events mit den jQuery-Standardfunktionen gesetzt, so wird das Klick-Event auch bei Doppelklicks ausgeführt. Sollen beide Events getrennt behandelt werden hilft der folgende Code. Dieser wertet in <= 300ms hintereinanderfolgende Klicks als Doppelklick alle anderen als einfache Klicks.

Aufruf

jQuery("a.doubleclick").single_double_click(function(){
  alert("single click");
}, function(){
  alert("double click");
});

Code

// Author: Jacek Becela
// Source: http://gist.github.com/399624
// License: MIT
 
jQuery.fn.single_double_click = function(single_click_callback, double_click_callback, timeout) {
  return this.each(function(){
    var clicks = 0, self = this;
    jQuery(this).click(function(event){
      clicks++;
      if (clicks == 1) {
        setTimeout(function(){
          if(clicks == 1) {
            single_click_callback.call(self, event);
          } else {
            double_click_callback.call(self, event);
          }
          clicks = 0;
        }, timeout || 300);
      }
    });
  });
}

Die PHP-Funktion file_get_contents() hinter einem Proxy-Server nutzen

Gerade bei größeren Unternehmen kommt es des öfteren vor, dass auch die Webserver hinter einem Proxy stehen und nur über diesen Zugriff auf das Internet oder speziell freigegebene Urls erhallten. Um dennoch die PHP-Funktion file_get_contents() für das holen von Textdateien von einem entfernten Server zu nutzen, muss man dieser den Proxy-Server mitteilen.

$context = stream_context_create(array(
    'http' => array(
        'proxy' => "tcp://192.168.0.254:8080",
        'request_fulluri' => True,
    )
));
$fileContent = file_get_contents('http://www.domain.com/file.txt', false, $context);

Outlook und Apple Kontakte bzw. Kalender kompatible vCard/vCal/iCal-Dateien

Gerade wenn Kontakte im vCard-Format bzw. Termine im vCal/iCal-Format automatisch generiert werden sollen und auf allen Systemen einwandfrei dargestellt werden müssen ist einiges an Testaufwand notwendig. Die folgenden Templates sind unter den Apple MacOSX Standard PIM-Programmen und Microsoft Outlook getestet.

Wichtig ist die Auslieferung der vCard-Datei in der Zeichenkodierung ISO-8859-1 und die Auslieferung der vCal/iCal-Datei in UTF-8.

vCard

Mime-Type

text/x-vCard

Codierung

ISO-8859-1

Code

Es können jederzeit nicht vorhandene/benötigte Angaben weggelassen werden. Dabei ist zu beachten, dass wenn möglich die ganze Zeile entfernt wird. Sind Teile des Namens bzw. der Adresse nicht vorhanden, so bleiben die Felder leer, die Position der anderen Felder und die der Beistriche muss aber unverändert bleiben.

Leerzeilen aus Strings entfernen

Die folgenden Regular-Expression entfernt unter PHP Leerzeilen aus Strings.

$content = preg_replace("/[\r\n]+[\s\t]*[\r\n]+/","\n", $content);

Hinweis: Ersetzt man den Parameter für die Ersetzung durch einen leeren String, so werden alle Zeilenumbrüche im String entfernt.

Realurl-Pfade funktionieren mit einem Slash aber nicht mit .html am Ende

Wenn Realurl unter TYPO3 zwar korrekte Pfade generiert, sich einzelne Seiten allerdings nur mit einem Slash am Ende (also als Verzeichnis) anstelle der Dateiendung .html aufrufen lassen, liegt das meist an der zusätzlich installieren Extension Simulate Static URLs (simulatestatic).

Diese Extension wird aber in Verbinung mit Realurl nicht benötigt bzw. erzeugt ungewollte Nebeneffekte und sollte deshalb umgehen deinstalliert werden.

Gerade bei Updates auf neue Versionen werden mit dem Update-Tool aus dem Install-Tool oft neue bzw. nicht installierte Systemextensions installiert, so auch Simulate Static URLs .

PHP-Funktion für das Erstellen von Passwörtern

Die folgende PHP-Funktion ermöglicht das Erstellen von zufällig generierten sicheren Passwörtern. Dabei kann die Länge und die zu verwendenden Zeichen definiert werden. Weiters wird sichergestellt, dass jedes Zeichen nur einmal im Passwort verwendet wird.

function randomPassword($length = 8) {
    /* config */ 
    $maxLength = 32;
    $possible = '012346789bcdfghjkmnpqrtvwxyzBCDFGHJKLMNPQRTVWXYZ.,_-#"+*?!&()[]{}%$<>';
 
    /* generate password */
    $maxlength = strlen($possible);
    if ($length > $maxlength) {
        $length = $maxlength;
    }
 
    $password = "";
 
    $i = 0;
    while ($i < $length) {
        $char = substr($possible, mt_rand(0, $maxlength-1), 1);
        if (!strstr($password, $char)) {
            $password .= $char;
            $i++;
        }
    }
 
    return $password;
}

nach Upgrade auf Piwik 1.2 werden keine Besuche mehr getrackt

Das Problem besteht darin, dass nach dem Update von Piwik auf die aktuelle Version 1.2 keine Besucher auf den Websites mehr getrackt werden. D.h. es werden nicht einmal Einträge in der dafür vorgesehenen Tabelle log_visits in der Datenbank erstellt. Beheben lässt sich das Problem durch eine kleine Abänderung im Code von Piwik.

Ändern Sie dazu in der Datei /core/Tracker/Visit.php die Zeile 437 auf:

'visitor_returning' => ($visitCount > 1 || $this->isVisitorKnown()) ? 1 : 0,

komma-separierte Liste per SQL durchsuchen

Haben Sie sich auch schon immer gefragt wie man in einer SQL-Abfrage am Besten ermittelt ob ein Wert in einer durch Komma getrennten Liste zu finden ist? Die Antwort liegt im SQL-Befehl FIND_IN_SET().

FIND_IN_SET(value, field)

 

Beispiel:

Die Tabelle test enthält zwei Felder mit der Bezeichnung uid und listvalues wobei listvalues z.B. wie folgt aussieht: 1,12,33,124.

SELECT uid FROM test WHERE FIND_IN_SET('33', listvalues);

tt_content Standardausgabe formatieren

Die Standardausgabe von Content-Elementen innerhalb von TYPO3 lässt sich mittels Typoscript beeinflussen. Dabei ist die Ausgabe immer nach dem folgenden Schema aufgebaut:

tt_content.<contentelement>.10 - Header
tt_content.<contentelement>.20 - Content

Um die Standardkonfiguration für die einzelnen Elemente herauszufinden ist es am Einfachsten in der Typoscript-Setup-Datei /typo3/sysext/css_styled_content/static/setup.txt der Systemextension css_styled_content nachzusehen.

Die folgenden Content-Elemente stehen zur Konfiguration zu Verfügung:

  • header
  • text
  • image
  • textpic
  • bullet
  • table
  • multimedia
  • swfobject
  • qtobject
  • media
  • mailform
  • search
  • login
  • menu
  • list