Dez 10

Ich stand heute vor dem Problem, dass Daten in ein RTF exportiert werden müssen. So weit ist das kein Problem, RTF ist ja ein offenes Format. Dazu kam aber noch, dass ein Bild, welches vorher vom User hochgeladen werden kann, in das RTF eingefügt werden muss. Eine schnelle Google-Umfrage zeigte, dass dies kein großer Deal ist. Es gibt viele verschiedene Implementierungen / Beispiele für alle möglichen Sprachen.

Für PHP bin ich bei diesem Beispiel hängen geblieben. Im Prinzip definiert man im Quell-RTF nur einen Platzhalter, welchen man später dann ersetzt. Anschließend muss man das Bild als Binär-String einlesen, diesen String in Hex umwandeln und dann in einen RTF spezifischen String einfügen. Anschließend den Platzhalter ersetzen und fertig :) .

Hier das abgekürzte Beispiel (aus der o.g. Quelle entnommen):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Datei als Binaerstring einlesen
$b=fopen("upl_bild.jpg","rb");
 
$imgData=getimagesize("upl_bild.jpg");
 
// RTF Format-String vorbereiten
$newImagePre="{\\*\\shppict{\\pict \\jpegblip \\picw".$imgData[0]." ";
$newImagePre="\\pich".$imgData[1]." \\wbmbitspixel24 ";
 
// Bild binär in eine Variable einlesen
while (!feof($b)) {
    $newImage.= fgets($b);
}
 
// In Hex umwandeln
$hex=bin2hex($newImage);
 
// RTF-Format-String und Bilddaten zusammenfügen
$imgDat=$newImagePre.$hex."}}";
 
// [...]

Ich habe den o.g. Code mehr oder weniger auf meine Bedürfnisse angepasst und dann in meine Klasse eingefügt, funktionierte wunderbar :) . Glücklicherweise hatte ich auch nur JPG, die verarbeitet werden mußten. Wenn hier andere Formate ergänzt werden müssen, muss der RTF-Format-String angepasst werden.

Post to Twitter Post to Delicious Post to Digg Post to Facebook

written by Alexander \\ tags: , ,

Sep 28

Endlich war es soweit, die PHP Unconference 2010 öffnete ihre Tore. Nach einer nicht enden wollenden Autofahrt und einer kurzen Nacht kamen wir im Geomatrikum in Hamburg an. Für mich war es die erste Unconference und da ich auch vorher noch nie auf einem Barcamp war (*schäm*), war ich besonders auf das Procedere gespannt. Die Organisation war straff — wir kamen beim Checkin nahezu direkt dran und bekamen unser Namensschild auf dem gleichzeitig auch die Zugangsdaten für den personalisierten WLAN Zugang zu finden waren. Zusätzlich gabs vier rote und blaue Aufkleber für das spätere Voting der Sessions. Das WLAN war erste Sahne und genau aus diesem Grund gab es auch einen regen Informationsfluss auf Twitter, das war klasse!

Zunächst war nach einer kurzen Einführung in die Veranstaltung die Vorstellung der vorgeschlagenen Sessions und der Interessen angesagt. Anschließend wurde gevoted. Eine Tafel mit Stimmen (diese hier von Sonntag mit zwei Wahlrunden) sah so aus:

Continue reading »

Post to Twitter Post to Delicious Post to Digg Post to Facebook

written by Alexander \\ tags: , , , ,

Aug 23

Nachdem Doctrine ja jetzt nun mit großen Schritten auf den grandiosen 2.0 Release zu geht, habe ich fest gestellt, dass meine Tutorials spätestens jetzt ihre Aktualität verloren haben. Zu Demo-Zwecken sind sie sicherlich noch ganz ok, aber die Techniken, die da eingesetzt werden sind zum Teil nicht mehr vorhanden, oder nicht die, die man einsetzen sollte, wenn man performant mit Doctrine arbeiten will. Da mir im Moment die Zeit fehlt die Tutorials aufzubessern habe ich sie mit einem Warnhinweis versehen:

Achtung:
Dieses Turorial bezieht sich auf eine veraltete Version von Doctrine und funktioniert vermutlich mit den neueren 1.x und späteren 2.x Releasen nicht mehr.

Sobald der 2.0 Release draußen ist und mir irgendwo ein PHP 5.3 Server zur Verfügung steht, werde ich versuchen wieder ein paar Tutorials zu schreiben und online zu stellen. Natürlich informiere ich auch weiterhin über News rund um Doctrine, wenn sie mir vor die Füße fallen :) . Eine tolle Präsentation zum Thema Doctrine hat @beberlei auf der diesjährigen FrOSCon gehalten, diese will ich Euch nicht vorenthalten: http://www.beberlei.de/talks/froscon2010.md.html#0

Post to Twitter Post to Delicious Post to Digg Post to Facebook

written by Alexander

Jan 22

Die Entwickler haben die vierte ALPHA Version von Doctrine 2.0 zum Testen freigegeben. Sie beinhaltet mehr als 60 Bugfixes.
Zusammenfassung:

  • DBAL Refactorings
  • CLI Refactoring and Enhancements
  • Support for customizing the DDL of column definitions
  • XML Mapping Driver Improvements

Das Changelog befindet sich hier; der Release kann hier bezogen werden.

Die Beta ist für März 2010 geplant – ich kann’s kaum erwarten die stable Version zu testen :-) .

Post to Twitter Post to Delicious Post to Digg Post to Facebook

written by Alexander \\ tags: , , , ,

Dez 08

Da ich mich in der letzten Zeit mit Drupal auseinandersetzen muss, kommt man natürlich nicht drum rum eigene Module zu entwickeln. Das geht in Drupal eigentlich recht simpel. Tutorials dazu finden sich im Netz zuhauf. Letzte Woche begann ich wieder damit ein Modul zu entwerfen, kam auch recht gut vorwärts und machte dann einige Änderungen an diesem bestehenden Modul Code. Anschließend mußte ich zu einer anderen Baustelle wechseln.

Als ich dann wieder zurück kam, habe ich das Modul testweise de- und aktiviert und auf einmal ging nichts mehr. Ich war aus meinem eigenen Modul ausgesperrt “403 Access denied”. Stunden langes Suchen war die Folge, das will ich anderen ersparen ;) . Die Lösung war, dass ich im Irrglauben in meinem Menu Hook des Moduls die “access arguments” entfernt habe. Das sollte man also niemals tun ;) . Diese Funktion wird nur beim aktivieren eingelesen und kann so Effekte produzieren, die man nicht will, also Änderungen an dieser Funktion am besten direkt durch de- und aktivieren des Moduls testen :) .

Stattdessen funktioniert der Code nun wieder mit einer Default Permission.

1
2
3
4
5
6
7
8
9
10
11
12
13
function mymodule_menu()
{
 
  $items = array();
 
  $items['mymodule'] = array(
    'title' => 'Moduletitle',
    'page callback' => 'mymodule_all',
    'access arguments' => array('access content'),
  );
 
  return $items;
}

Post to Twitter Post to Delicious Post to Digg Post to Facebook

written by Alexander \\ tags: , , , , ,