You are tired of optimizing websites for Internet Explorer 6? Well, if you are able to afford it, you can simply use this small script to show IE6-users a tiny warning:

IE6 - Out of Date
http://code.google.com/p/ie6-upgrade-warning/
You are tired of optimizing websites for Internet Explorer 6? Well, if you are able to afford it, you can simply use this small script to show IE6-users a tiny warning:

IE6 - Out of Date
http://code.google.com/p/ie6-upgrade-warning/
Hier ein kleiner und simpler Frameforwarder von Pat und mir:
Apache Config:
<VirtualHost *>
ServerName blog.alexander-kaletsch.de
DocumentRoot /yourpath/forwarder
ErrorLog /yourpath2/forwarder.error.log
LogLevel warn
CustomLog /yourpath3/forwarder.log combined
ServerSignature On
</VirtualHost>
Weitere Subdomains können dann einfach über ServerAlias hinzugefügt werden.
Die index.php die sich im Forwarder Verzeichnis befinden muss:
<?php error_reporting(0); ini_set("error_display",0); $mapper = array("blog.alexander-kaletsch.de" => "http://www.patworx.de/blog"); $host = $_SERVER['HTTP_HOST']; $url = $mapper[$host]; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><?=$host?></title> <style type="text/css"> <!-- HTML, BODY, FRAMESET, FRAME, NOFRAMES{ height: 100%; width: 100% } --> </style> </head> <frameset> <frame frameborder="0" name="main" title="<?=$host?>" noresize="noresize" src="<?=$url?>"/> <noframes> <body> <a href="<?=$url?>">Klicken Sie hier, da Ihr Browser keine Frames unterstuüzt</a> </body> </noframes> </frameset> </html>
Die Klasse habe ich zwar schon vor einigen Monaten geschrieben, aber Dorian (http://www.proksch-it.de/) hat mich dazu bewogen, sie doch noch zu veröffentlichen, da er sie nun selbst verwendet.
Eine minimalistische Klasse für die Generierung von iCal Files.
Ziel ist: Wenig Features und wenig Probleme
class iCal{ private $valid_elems = array("author", "start", "end", "topic", "msg", "location"); private $min_elems = array("author", "start", "end", "topic", "msg"); public function __construct($values = array()){ foreach($values as $key => $value){ $this->set($key, $value); } } public function __set($key, $value){ if(!in_array($key, $this->valid_elems)) throw new Exception("Element nicht zugelassen"); $this->$key = $value; } public function __get($key){ if(!in_array($key, $this->valid_elems)) throw new Exception("Element nicht vorhanden"); return isset($this->$key) ? $this->$key : null; } public function __toString(){ foreach($this->min_elems as $value){ if($this->$value === null) throw new Exception("Nicht alle Pflichtelemente angegeben"); } if(headers_sent()) throw new Exception("Header wurden bereits gesendet!"); header('Content-Type: text/Calendar; charset=UTF-8'); header('Content-Disposition: attachment; filename=iCal_' . date('Y-m-d_H-m-s') . '.ics'); $output = ""; $output = (string) "BEGIN:VCALENDAR\r\n"; $output .= 'PRODID:' . '#//PHP/AKCD//DE' . "\r\n"; $output .= "VERSION:2.0\r\n"; $output .= "METHOD:PUBLISH\r\n"; $output .= "BEGIN:VEVENT\r\n"; $output .= "DTSTART:". gmdate('Ymd\THi00\Z', $this->start) ."\r\n"; $output .= "DTEND:". gmdate('Ymd\THi00\Z', $this->end) ."\r\n"; if($this->location !== null) $output .= "LOCATION" . $this->quotedPrintableEncode($this->location) ."\r\n"; $output .= "TRANSP:OPAQUE\r\n"; $output .= "SEQUENCE:0\r\n"; $output .= "UID:". md5("ICAL".$this->start.rand(1,5000).$this->end)."\r\n"; $output .= "DTSTAMP:".gmdate('Ymd\THi00\Z',time())."\r\n"; $output .= "CATEGORIES".$this->quotedPrintableEncode($this->author)."\r\n"; $output .= "DESCRIPTION".$this->quotedPrintableEncode($this->msg)."\r\n"; $output .= "SUMMARY".$this->quotedPrintableEncode($this->topic)."\r\n"; $output .= "PRIORITY:5\r\n"; $output .= "CLASS:PUBLIC\r\n"; $output .= "STATUS:CONFIRMED\r\n"; $output .= "END:VEVENT\r\n"; $output .= "END:VCALENDAR\r\n"; return $output; } private function quotedPrintableEncode($msg, $lang = "de"){ $msg = preg_replace('/<a href="(.*)">.*<\/a>/i', "$1", $msg); $msg = str_replace("€", "Euro", $msg); $msg = ereg_replace("(\r\n|\n|\r)", "=0D=0A", $msg); return ";LANGUAGE=de;ENCODING=QUOTED-PRINTABLE:" . $msg; } }
Sample:
$iCal = new iCal(); $iCal->start = time() + (24 * 60 * 60); $iCal->end = time() + (24 * 60 * 60 * 3); $iCal->author = "Alexander-Kaletsch.de"; $iCal->msg = utf8_encode('Hallo <img src='http://www.patworx.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> '); $iCal->location = utf8_encode('http://www.alexander-kaletsch.de'); $iCal->topic = utf8_encode('Visit Alexander-Kaletsch.de'); echo $iCal;
Wer unbedingt mehr Features benötigt sollte sich die iCal Klassen von Michael Wimmer (http://www.flamino.com) anschauen.
Hin und wieder möchte man übergebene Werte gleich als Session-Variablen speichern... hab mir hierfür 'ne kleine Helferfunktion geschrieben, welche mit Hilfe der hier schon einmal vorgestellten get_var()-Funktion genau das durchführt, oder `false´ zurückgibt.
/** * Checks if a Variable is submitted, and if so, puts it as session var * if $allowed_values -> checks if value is allowed to be set * * @param string $var * @param array $allowed_values * @return bool */ function check_and_set_session_var($var, $allowed_values = NULL) { $do = false; if (get_var($var)) { if (is_array($allowed_values)) { if (in_array(get_var($var),$allowed_values)) { $do = true; } } else { $do = true; } } if ($do === true) { $_SESSION[$var] = get_var($var); return true; } else { return false; } }
Auch ganz hilfreich ist vielleicht der folgende Einzeiler, der 'nen Link auf eine URL erstellt und eventuell übergebene Parameter anhängt:
/** * Create a simple link with some parameters * * @param array $param * @param string $url * @return string */ function c_link($param = NULL, $url = 'index.php') { return $url . ((is_array($param) != '') ? '?' . join('&',$param) : NULL); }
Die Parameter in der Form array("parameter=wert", "parameter2=wert") übergeben werden, vll. baue ich auch noch eine Prüfung ein, ob das übergebene Array überhaupt als GET angehängt werden kann.
Einfach aus der mailto-funktion geklaut... kann jetzt auf alle Strings angewendet werden!
Usage: {"TEXT"|jsencrypt}
<?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Smarty Java-Script Encrypter modifier plugin * * Type: modifier<br> * Name: jsencrypt<br> * Purpose: Does a simple Java-Script Encryption.. * @author Alexander Kaletsch <mail at alexander-kaletsch dot de> * @param string * @return string */ function smarty_modifier_jsencrypt($string, $esc_type = 'html', $char_set = 'ISO-8859-1') { $string = "document.write('$string');"; $js_encode = ''; for ($x=0; $x < strlen($string); $x++) { $js_encode .= '%' . bin2hex($string[$x]); } return '<script type="text/javascript">eval(unescape(\''.$js_encode.'\'))</script>'; } /* vim: set expandtab: */ ?>
Idee: Simplen Language Swicher für kleine Variablen die direkt im Template gespeichert werden sollen.
Beispiel: {lang en="Given name" de="Vorname"}
Dateiname: function.lang.php
Dateilocation: Smarty/plugins/
<?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Smarty {lang} function plugin * * Type: function<br> * Name: lang<br> * Purpose: Very simple language switcher...<br> * @author Alexander Kaletsch <mail at alexander-kaletsch dot de> * @param array * @param Smarty */ function smarty_function_lang($params, &$smarty) { global $lang, $default_lang; if($default_lang == "") $default_lang = "de"; if (!isset($params[$default_lang])) { $smarty->trigger_error("lang: missing '".$default_lang."' (default) parameter"); return; } if(isset($params[$lang]) && $params[$lang] != ""){ return $params[$lang]; } else { return $params[$default_lang]; } } ?>
Hier ein kleiner Parser für non-standard dates, den ich auf www.birgit-kaletsch.de verwende:
$.tablesorter.addParser({ // Datumsparser. // Hier verwendet: '[Wochentag]s, UhrzeitVon - UhrzeitBis'; // Idee: Wochentag durch zahl von 0-6 ersetzen // Uhrzeit als rein Zahl // => Leichtes numerisches Sortieren möglich // Skript kann sehr leicht auf andere Daten übertragen werden... id: 'wochentage', is: function(s) { return false; }, format: function(s) { Wochentage = new Array("Montags", "Dienstags", "Mittwochs", "Donnerstags", "Freitags", "Samstags", "Sonntags"); // Wochentag durch entsprechende Zahl ersetzen for(var i = 0; i < Wochentage.length; i++){ s = s.replace(Wochentage[i], i); } // Alles auser Zahlen entfernen s = s.replace(/\D/ig, ""); return s; }, type: 'numeric' });
Bei Verwendung von xajax zur Übertragung von Formulardaten kann es, trotz konsequenten Setzens des Zeichensatzes auf UTF-8, zu falsch dargestellten Umlauten kommen. Abhilfe sollte in diesem Fall eine kleine PHP-Funktion schaffen:
function encode($fehlerhafterstring) { $detect = mb_detect_encoding($fehlerhafterstring, "UTF-8, ISO-8859-1, ISO-8859-15", true); return mb_convert_encoding($fehlerhafterstring, "ISO-8859-1", $detect); }
Kleines Helferchen um übermittelte Variablen auszulesen. Gibt entweder den Wert oder `false` zurück.
function get_var($variable, $trim=true, $art=NULL) { switch ($art) { case "GET": $ret = (isset($_GET[$variable])) ? $_GET[$variable] : false; break; case "POST": $ret = (isset($_POST[$variable])) ? $_POST[$variable] : false; break; case NULL: $ret = (isset($_REQUEST[$variable])) ? $_REQUEST[$variable] : false; break; } return (isset($trim) && isset($ret)) ? trim($ret) : $ret; }
Usage:
$var = get_var("var", true, "POST");
Orginal Function found @ http://de2.php.net/manual/de/ref.array.php
As References aren't working with PHP4, here a little down-hack:
function array_flatten($array, $preserve_keys = 1) { $newArray = Array(); foreach ($array as $key => $child) { if (is_array($child)) { foreach(array_flatten($child, $preserve_keys) as $kiddi){ $newArray[] = $kiddi; } } elseif ($preserve_keys + is_string($key) > 1) { $newArray[$key] = $child; } else { $newArray[] = $child; } } for ($i=0 ; $i<=count($newArray);$i++) { if ($newArray[$i]== "") { unset ( $newArray[$i] ); } } return $newArray; }
Powered by WordPress | Theme: Aeros 2.0 by TheBuckmaker.com