Okt
20
2010
0

Integrating CKFinder into your symfony Application

When integrating CKEditor and CKFinder into your symfony application, you have to modify the ckfinder/config.php-file, to check if the user has the permissions to use the CKFinder als file-browser.

It's that easy (we asume, CKFinder is located in /web/js/ckfinder):

function CheckAuthentication()
{
require_once(dirname(__FILE__).'/../../../config/ProjectConfiguration.class.php');
$configuration = ProjectConfiguration::getApplicationConfiguration('yourApplicationName', 'prod', false);
$context = sfContext::createInstance($configuration);

if ($context->getUser()->functionToCheckPermission())
return true;
else
return false;
}

So finally you just have to implement a method in your myUser.class.php-file, that checks whether the user may or may not use CKFinder!

Apr
22
2009
1

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

IE6 - Out of Date

http://code.google.com/p/ie6-upgrade-warning/

:-)

Jun
25
2008
0

Simple Apache Frameforward

Hier ein kleiner und simpler Frameforwarder von Pat und mir:

Apache Config:

  1.  
  2. <VirtualHost *>
  3. ServerName blog.alexander-kaletsch.de
  4. DocumentRoot /yourpath/forwarder
  5.  
  6. ErrorLog /yourpath2/forwarder.error.log
  7.  
  8. LogLevel warn
  9.  
  10. CustomLog /yourpath3/forwarder.log combined
  11. ServerSignature On
  12. </VirtualHost>
  13.  

Weitere Subdomains können dann einfach über ServerAlias hinzugefügt werden.

Die index.php die sich im Forwarder Verzeichnis befinden muss:

  1.  
  2. <?php
  3. ini_set("error_display",0);
  4.  
  5. $mapper = array("blog.alexander-kaletsch.de" => "http://www.patworx.de/blog");
  6.  
  7. $host = $_SERVER['HTTP_HOST'];
  8. $url = $mapper[$host];
  9.  
  10. ?>
  11. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
  12. <html xmlns="http://www.w3.org/1999/xhtml">
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  15. <title><?=$host?></title>
  16. <style type="text/css">
  17. <!--
  18. HTML, BODY, FRAMESET, FRAME, NOFRAMES{
  19. height: 100%;
  20. width: 100%
  21. }
  22. -->
  23. </style>
  24. </head>
  25. <frameset>
  26. <frame frameborder="0" name="main" title="<?=$host?>" noresize="noresize" src="<?=$url?>"/>
  27. <noframes>
  28. <body>
  29. <p><a href="<?=$url?>">Klicken Sie hier, da Ihr Browser keine Frames unterstu&uuml;zt</a></p>
  30. </body>
  31. </noframes>
  32. </frameset>
  33. </html>
  34.  
Written by in: Allgemein,PHP,Snippets | Schlagwörter: ,
Jun
25
2008
1

iCal

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 :)

  1.  
  2. class iCal{
  3. private $valid_elems = array("author", "start", "end", "topic", "msg", "location");
  4. private $min_elems = array("author", "start", "end", "topic", "msg");
  5.  
  6. public function __construct($values = array()){
  7. foreach($values as $key => $value){
  8. $this->set($key, $value);
  9. }
  10. }
  11.  
  12. public function __set($key, $value){
  13. if(!in_array($key, $this->valid_elems)) throw new Exception("Element nicht zugelassen");
  14.  
  15. $this->$key = $value;
  16. }
  17.  
  18. public function __get($key){
  19. if(!in_array($key, $this->valid_elems)) throw new Exception("Element nicht vorhanden");
  20. return isset($this->$key) ? $this->$key : null;
  21. }
  22.  
  23. public function __toString(){
  24. foreach($this->min_elems as $value){
  25. if($this->$value === null) throw new Exception("Nicht alle Pflichtelemente angegeben");
  26. }
  27.  
  28. if(headers_sent()) throw new Exception("Header wurden bereits gesendet!");
  29.  
  30. header('Content-Type: text/Calendar; charset=UTF-8');
  31. header('Content-Disposition: attachment; filename=iCal_' . date('Y-m-d_H-m-s') . '.ics');
  32.  
  33.  
  34. $output = "";
  35. $output = (string) "BEGIN:VCALENDAR\r\n";
  36. $output .= 'PRODID:' . '#//PHP/AKCD//DE' . "\r\n";
  37. $output .= "VERSION:2.0\r\n";
  38. $output .= "METHOD:PUBLISH\r\n";
  39. $output .= "BEGIN:VEVENT\r\n";
  40. $output .= "DTSTART:". gmdate('Ymd\THi00\Z', $this->start) ."\r\n";
  41. $output .= "DTEND:". gmdate('Ymd\THi00\Z', $this->end) ."\r\n";
  42. if($this->location !== null) $output .= "LOCATION" . $this->quotedPrintableEncode($this->location) ."\r\n";
  43. $output .= "TRANSP:OPAQUE\r\n";
  44. $output .= "SEQUENCE:0\r\n";
  45. $output .= "UID:". md5("ICAL".$this->start.rand(1,5000).$this->end)."\r\n";
  46. $output .= "DTSTAMP:".gmdate('Ymd\THi00\Z',time())."\r\n";
  47. $output .= "CATEGORIES".$this->quotedPrintableEncode($this->author)."\r\n";
  48. $output .= "DESCRIPTION".$this->quotedPrintableEncode($this->msg)."\r\n";
  49. $output .= "SUMMARY".$this->quotedPrintableEncode($this->topic)."\r\n";
  50. $output .= "PRIORITY:5\r\n";
  51. $output .= "CLASS:PUBLIC\r\n";
  52. $output .= "STATUS:CONFIRMED\r\n";
  53. $output .= "END:VEVENT\r\n";
  54. $output .= "END:VCALENDAR\r\n";
  55.  
  56. return $output;
  57. }
  58.  
  59.  
  60.  
  61.  
  62. private function quotedPrintableEncode($msg, $lang = "de"){
  63. $msg = preg_replace('/<a href="(.*)">.*<\/a>/i', "$1", $msg);
  64. $msg = str_replace("€", "Euro", $msg);
  65. $msg = ereg_replace("(\r\n|\n|\r)", "=0D=0A", $msg);
  66. return ";LANGUAGE=de;ENCODING=QUOTED-PRINTABLE:" . $msg;
  67. }
  68. }
  69.  

Sample:

  1.  
  2. $iCal = new iCal();
  3.  
  4. $iCal->start = time() + (24 * 60 * 60);
  5. $iCal->end = time() + (24 * 60 * 60 * 3);
  6. $iCal->author = "Alexander-Kaletsch.de";
  7. $iCal->msg = utf8_encode('Hallo <img src='https://www.patworx.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ');
  8. $iCal->location = utf8_encode('http://www.alexander-kaletsch.de');
  9. $iCal->topic = utf8_encode('Visit Alexander-Kaletsch.de');
  10.  
  11. echo $iCal;
  12.  

Wer unbedingt mehr Features benötigt sollte sich die iCal Klassen von Michael Wimmer (http://www.flamino.com) anschauen.

Written by in: PHP,Snippets | Schlagwörter:
Mai
07
2008
0

Kleine Helfer

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.

  1. /**
  2.  * Checks if a Variable is submitted, and if so, puts it as session var
  3.  * if $allowed_values -> checks if value is allowed to be set
  4.  *
  5.  * @param string $var
  6.  * @param array $allowed_values
  7.  * @return bool
  8.  */
  9. function check_and_set_session_var($var, $allowed_values = NULL) {
  10. $do = false;
  11. if (get_var($var)) {
  12. if (is_array($allowed_values)) {
  13. if (in_array(get_var($var),$allowed_values)) {
  14. $do = true;
  15. }
  16. } else {
  17. $do = true;
  18. }
  19. }
  20. if ($do === true) {
  21. $_SESSION[$var] = get_var($var);
  22. return true;
  23. } else {
  24. return false;
  25. }
  26. }

Auch ganz hilfreich ist vielleicht der folgende Einzeiler, der 'nen Link auf eine URL erstellt und eventuell übergebene Parameter anhängt:

  1. /**
  2.  * Create a simple link with some parameters
  3.  *
  4.  * @param array $param
  5.  * @param string $url
  6.  * @return string
  7.  */
  8. function c_link($param = NULL, $url = 'index.php') {
  9. return $url . ((is_array($param) != '') ? '?' . join('&',$param) : NULL);
  10. }
  11.  

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.

Written by in: PHP,Snippets | Schlagwörter: , , ,
Jan
15
2008
0

Smarty Plugin: jsencrypt

Einfach aus der mailto-funktion geklaut... kann jetzt auf alle Strings angewendet werden!

Usage: {"TEXT"|jsencrypt}

  1.  
  2. <?php
  3. /**
  4.  * Smarty plugin
  5.  * @package Smarty
  6.  * @subpackage plugins
  7.  */
  8.  
  9.  
  10. /**
  11.  * Smarty Java-Script Encrypter modifier plugin
  12.  *
  13.  * Type: modifier<br>
  14.  * Name: jsencrypt<br>
  15.  * Purpose: Does a simple Java-Script Encryption..
  16.  * @author Alexander Kaletsch <mail at alexander-kaletsch dot de>
  17.  * @param string
  18.  * @return string
  19.  */
  20. function smarty_modifier_jsencrypt($string, $esc_type = 'html', $char_set = 'ISO-8859-1')
  21. {
  22. $string = "document.write('$string');";
  23.  
  24. $js_encode = '';
  25. for ($x=0; $x < strlen($string); $x++) {
  26. $js_encode .= '%' . bin2hex($string[$x]);
  27. }
  28.  
  29. return '<script type="text/javascript">eval(unescape(\''.$js_encode.'\'))</script>';
  30. }
  31.  
  32. /* vim: set expandtab: */
  33.  
  34. ?>
  35.  
  36.  
Dez
09
2007
0

Smarty plugin: lang

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/

  1.  
  2. <?php
  3. /**
  4.  * Smarty plugin
  5.  * @package Smarty
  6.  * @subpackage plugins
  7.  */
  8.  
  9.  
  10. /**
  11.  * Smarty {lang} function plugin
  12.  *
  13.  * Type: function<br>
  14.  * Name: lang<br>
  15.  * Purpose: Very simple language switcher...<br>
  16.  * @author Alexander Kaletsch <mail at alexander-kaletsch dot de>
  17.  * @param array
  18.  * @param Smarty
  19.  */
  20. function smarty_function_lang($params, &$smarty)
  21. {
  22. global $lang, $default_lang;
  23. if($default_lang == "") $default_lang = "de";
  24.  
  25. if (!isset($params[$default_lang])) {
  26. $smarty->trigger_error("lang: missing '".$default_lang."' (default) parameter");
  27. return;
  28. }
  29.  
  30. if(isset($params[$lang]) && $params[$lang] != ""){
  31. return $params[$lang];
  32. } else {
  33. return $params[$default_lang];
  34. }
  35. }
  36.  
  37. ?>
  38.  
  39.  
Nov
09
2007
0

Datumsparser für jQuery.tablesorter

Hier ein kleiner Parser für non-standard dates, den ich auf www.birgit-kaletsch.de verwende:

  1.  
  2. $.tablesorter.addParser({
  3. // Datumsparser.
  4. // Hier verwendet: '[Wochentag]s, UhrzeitVon - UhrzeitBis';
  5. // Idee: Wochentag durch zahl von 0-6 ersetzen
  6. // Uhrzeit als rein Zahl
  7. // => Leichtes numerisches Sortieren möglich
  8. // Skript kann sehr leicht auf andere Daten übertragen werden...
  9. id: 'wochentage',
  10. is: function(s) {
  11. return false;
  12. },
  13. format: function(s) {
  14. Wochentage = new Array("Montags", "Dienstags", "Mittwochs", "Donnerstags", "Freitags", "Samstags", "Sonntags");
  15.  
  16. // Wochentag durch entsprechende Zahl ersetzen
  17. for(var i = 0; i < Wochentage.length; i++){
  18. s = s.replace(Wochentage[i], i);
  19. }
  20.  
  21. // Alles auser Zahlen entfernen
  22. s = s.replace(/\D/ig, "");
  23.  
  24. return s;
  25. },
  26. type: 'numeric'
  27. });
Nov
06
2007
0

xajax und Umlaute

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:

  1.  
  2. function encode($fehlerhafterstring) {
  3. $detect = mb_detect_encoding($fehlerhafterstring, "UTF-8, ISO-8859-1, ISO-8859-15", true);
  4. return mb_convert_encoding($fehlerhafterstring, "ISO-8859-1", $detect);
  5. }
Okt
25
2007
1

Snippet: Variablen holen

Kleines Helferchen um übermittelte Variablen auszulesen. Gibt entweder den Wert oder `false` zurück.

  1.  
  2. function get_var($variable, $trim=true, $art=NULL) {
  3. switch ($art) {
  4. case "GET":
  5. $ret = (isset($_GET[$variable])) ? $_GET[$variable] : false;
  6. break;
  7. case "POST":
  8. $ret = (isset($_POST[$variable])) ? $_POST[$variable] : false;
  9. break;
  10. case NULL:
  11. $ret = (isset($_REQUEST[$variable])) ? $_REQUEST[$variable] : false;
  12. break;
  13. }
  14. return (isset($trim) && isset($ret)) ? trim($ret) : $ret;
  15. }

Usage:

  1.  
  2. $var = get_var("var", true, "POST");
Written by in: PHP,Snippets |

Powered by WordPress | Theme: Aeros 2.0 by TheBuckmaker.com