Archiv für die Kategorie: 'php'

PHP hates me Autor Nils nimmt am Developers-Shame-Day 2010 teil und ich dachte mir, ich suche auch mal in den Untiefen meines alten Codes nach einem Schmuckstück. Ursprünglich kam die Idee zum DevShameDay von “Cem, dem PHP-Hacker“.
Leider ging in den Jahren einiges verloren, aber ich denke, dass hier ist schlecht genug, um sich dafür zu schämen.

Ich Schätze das ist um 2004 entstanden und lieferte Termine bzw. Events von einem bestimmten Tag, das ganze für einen Webkalender ala Google-Calendar. Was ich noch erwähnen sollte…. die Funktion wurde für jeden sichtbaren Kalendertag aufgerufen!

 function getevents($year,$month,$day){
   global $SELF;
   $month = (strlen($month) < 2) ? '0'.$month : $month;
   $day = (strlen($day) < 2) ? '0'.$day : $day;
   $str = "$year-$month-$day";
   $strx = "$month-$day";
   $sql = "
           SELECT e.name as ename,
                                                e.description as edescr,
                                                e.id as eid,
                                                t.color as tcolor,
                                                e.time_start as time_start,
                                                e.time_end as time_end,
                                                e.remember as rem,
                                        e.date_start as date_start,
                                                e.date_end as date_end,
                                                t.description as tdescription,
                                                t.showtime as showtime
           FROM cal_entry e, cal_types t
           WHERE e.types_id = t.id
             AND (e.date_start <= '$str'
                           AND ( e.date_end >= '$str' AND e.date_end IS NOT NULL OR e.date_start = '$str' AND e.date_end IS NULL )
         OR(t.id = 1 AND right(e.date_start,5) = '$strx')
                         )
                        ORDER BY e.time_start, t.prio
         ";
   $res = mysql_query($sql);
   $out = "<u><a href=\"$SELF?show=new&date=$year-$month-$day\">$day.$month.</a></u>";
   while($row = mysql_fetch_array($res)){
     $tmp = "<a href=\"$SELF?show=edit&eid=".$row["eid"]."&ym=$year-$month\">";
 
                 $tmp .= "<font class=\"entry\" color=\"".$row["tcolor"]."\"><li>";
                 $tmp .= $row["ename"];
                 $starta = explode("-",$row["date_start"]);
                 $outstart = $starta[2].".".$starta[1].".".$starta[0];
                 $enda = explode("-",$row["date_end"]);
                 $outend = $enda[2].".".$enda[1].".".$enda[0];
                 $divbody = "<table border=0 class=entry><tr>";
                 if($row["date_end"] != '' && $row["date_start"] != $row["date_end"]){
                   $divbody .= "<td>Von:</td><td>$outstart</td></tr><tr><td>Bis:</td><td>$outend</td></tr>";
                 }else{
                   $divbody .= "<td>Am:</td><td>$outstart</td></tr>";
                 }
                 if($row["showtime"]) {
                     if(($row["date_end"] == $row["date_start"] || $row["date_end"] == '') && $row["time_end"] != ''){
                       $divbody .= "<tr><td>Von:</td><td>".$row["time_start"]." Uhr</td></tr>";
                             $divbody .= "<tr><td>Bis:</td><td>".$row["time_end"]." Uhr</td></tr>";
                     }elseif($row["date_start"] < $row["date_end"] && $row["date_start"] == $str && $row["time_start"] != ''){
                           $divbody .= "<tr><td>Ab:</td><td>".$row["time_start"]." Uhr</td></tr>";
                     }elseif($row["date_start"] < $row["date_end"] && $row["date_end"] == $str && $row["time_end"] != ''){
                       $divbody .= "<tr><td>Bis:</td><td>".$row["time_end"]." Uhr</td></tr>";
                     }elseif(($row["date_end"] == $row["date_start"] || $row["date_end"] == '') && $row["time_end"] == ''){
                       $divbody .= "<tr><td>Ab:</td><td>".$row["time_start"]." Uhr</td></tr>";
                     }
                 }
                 $rem = ($row["rem"] == true) ? "<font color=green>EMail Erinnerung aktiv</font>" : "<font color=red>EMail Erinnerung inaktiv</font>";
                 $divbody .= "</table>";
                 #$div = "<div title=\"header=[".$row["ename"]."] body=[".$row["edescr"].$divbody"]\">";
                 $div = '<div title="header=['.$row["ename"].'] body=['.nl2br($row["edescr"]).$divbody.$rem.']">';
                 $tmp .= "</div></li></font></a>";
                 $out .= $div.$tmp;
         }
 
   return $out;
 }

Mal wieder auf der Suche nach einer sinnvollen HTML2PDF Lösung, bin ich auf wkhtmltopdf gestoßen.

Das Tool nutzt Webkit im internen Backend und kann sogar CSS3 rendern. Die Installation unter MaxOSX und Linux ist absolut simpel: runterladen, ablegen, fertig. Unter Windows wird hier noch ein Installationsprozess durchgeführt, über den ich aktuell leider nichts sagen kann (bisher nicht getestet).

Um das Tool auf einer Webseite zu nutzen, habe ich mir ne kleine Klasse geschrieben, die HTML-Code als Input akzeptiert und mir den Pfad der fertigen PDF-Datei zurückliefert.

(weiterlesen …)

Eigentlich war ich ziemlich begeistert, vom DateTime Objekt. Endlich richtig einfach mit Daten umgehen und das auch noch inkl Zeitzonen etc.
Seitdem ich allerdings mit einem Kollegen einen wirklich “krassen” Bug fand, bin ich nicht mehr so begeistert!

Reproduzierbar ist er folgendermaßen:
(weiterlesen …)

PHP bietet das Iterator Interface an, um Objekte direkt via foreach zu iterieren.

class MyClass implements Interator {
  private $array;
}
 
$obj = new MyClass();
foreach($obj as $key => $val){
  ...
}

(weiterlesen …)

Dieser und der ein oder andere Blog, welche hauptsächlich von meiner Frau betrieben werden, läuft nun auf WordPress 3, weil es mir auf den Geist ging immer x Blogs aktuell zu halten, laufen nun alle mit aktiviertem MU.

Da auf meinem Websever lighttpd und nicht apache läuft, konnte ich mich nicht 100%ig an die Anleitung auf der WP MU Seite halten.

(weiterlesen …)

Jeder hat seine eigene Art einen Geldbetrag einzugeben, der eine gibt 11,99 ein, der nächste 11.99. Weiter geht es mit den 1000er Trennzeichen, spätestens, wenn das System auch auf die amerikanische Schreibweise können soll, brauchen wir eine Methode, die jegliche Eingabe in einen gültigen Float-Wert umwandelt, am besten auch noch richtig.

Nach langem hin und her und viel Recherche habe ich mir aus diversen Codefragmenten das hier zusammengebaut und es scheint zu funktionieren: (weiterlesen …)

Hatte die letzten Tage mal die Zeit gefunden, ein kleines, kurzes Projekt zu starten.
Ziel ist es, die Facebook-funktionialität abzubilden, die man sieht, wenn man einen Link auf seine Pinnwand posten will.
Man erhält eine Auswahl von Vorschaubildern, den Seitentitel, sowie einen kurzen Auszug oder die Seitenbeschreibung.
Bei speziellen Links, z.B. youtube oder flickr, gibts dann Vorschaubilder etc.

Meine kleine Bibliothek ist auf GoogleCode zu finden: http://code.google.com/p/phplinkfetcher/

Einige “Fetcher”-Klassen sind bereits dabei, würde mich aber noch über weitere freuen. Ideen und Verbesserungsvorschläge
in Form von Code oder Kritik ist auch jederzeit erwünscht, einfach hier kommentieren oder den Issue-Tracker von Google nutzen.

Die Meinungen, ob man komplette Objekte ablegen sollte oder nicht, gehen sehr auseinander.
Dagegen spricht zum Beispiel, dass man nicht mehr nach Inhalten in einem Objekt suchen kann oder immer der komplette Text neugeschrieben werden muss, auch wenn man nur eine Zahl ändert. Dafür spricht auch einiges, jedenfalls geht es mir darum, dass ich heute vor einem Problem stand.
(weiterlesen …)

PHP Codesniffer ist ein in PHP geschriebens Tool, welches PHP Code analysieren kann und Verstöße gegen Programmierrichtlinien meldet. PHP Tool Integration (PTI) ist ein Eclipseplugin, welches es ermöglicht, den Codesniffer direkt als Codevalidator zu verwenden, wodurch die Fehler direkt während der Entwicklung schon in Form von Warnings oder Errors angezeigt werden.
(weiterlesen …)

Network-wide options by YD - Freelance Wordpress Developer