A few months ago, I was working on a Drupal module where I wanted to display form that contained a list of checkboxes and images that would allow the user to choose the images that were to be displayed in a block. Surprisingly, it really wasn’t that difficult.
Category Archives: PHP
Zend Framework: Building forms without decorators
PHP, Zend FrameworkWhen I first started using Zend Framework, I created forms using the standard form decorators. But I found in many instances, I needed more flexibility when creating forms, so now, I tend to build forms without decorators.
Using Zend Framework with Drupal
Drupal, PHP, Zend FrameworkI have been using ExpressionEngine and Zend Framework on my current project. We recently migrated the cms to Drupal (see migration), but we wanted to keep the Zend Framework apps. Most of the content of the website is handled by Drupal 7 (link), but certain urls on the website are handled by Zend Framework. On the Zend pages, I removed all layout information so that it is controlled by the Drupal theme.
Zend Framework and jQuery
Ajax, JQuery, PHP, Zend FrameworkZend Framework is a very robust PHP Framework. Using jQuery (and most other Ajax Frameworks) can be used with Zend Framework in a variety of ways. In this post, I will discuss the two most common ways that I use jQuery with Zend Framework.
Periods (dot) Converted in PHP Variables
Pebblet, PHPI just ran into a problem when I was attempting to pass a PHP POST variable that contained a period. I’m not sure why I have never run into this situation in the past. PHP will automatically convert a period into an underscore. I submitted a form with a field with the name ‘co.uk’. I then checked for the existence of the post variable in a PHP class (if $_POST['co.uk']). It did not exist. I then checked (if $_POST['co_uk']) and was able to get the value. Interesting.
PHP: Testing IPN in PayPal Sandbox
Codeigniter, PHPI just completed a website where the client uses PayPal to handle the payment transaction. I have used PayPal quite a bit in the past, but I have always had problems using IPN (Instant Payment Notification). Because of the problems, I usually opted not to use IPN, but I was determined to use it for this project. The primary problem with testing IPN is, because the transaction occurs in the background, it is difficult to figure out where the point of failure is. But that is all behind me now.
Mac OS X: Configuring PHP With GD Support
mac, PHPA few days ago, I was testing a PHP class I created that uploads images and creates thumbnails. I ran into an error when I called imagecreatefromjpeg. phpInfo() revealed that the GD Library was not installed on my Mac G5. All the sites I visited said that I would have to recompile PHP with GD support enabled. I considered working on my PC rather than recompiling PHP, but my Mac has become my primary development box, so I knew that I would need the GD Library for future projects.
Initially, I considered a new entropy PHP package. I used the entropy version a few years ago, but I ran into problems after I installed Leopard. I was fairly confident that entropy would now “play nice” with Leopard, but I wasn’t sure what it would do to my existing MySQL database.
I then considered using MacPorts to install PHP, but decided against it, because I wanted to use my existing infrastructure, not a re-installation of everything (Apache, PHP, and MySQL). If you haven’t yet started any development on your Mac, then I recommend that you use the MacPorts package. I found great instructions here.
So I made the decision to just recompile PHP with GD Support. After a few hours, I began to think that this was not a good decision. I was following the step-by-step instructions that I found here.
First I had to download and install a new version of Xcode because during one of the steps, I received the error, “C compiler cannot create executables”. Although Xcode was already installed on my Mac, it was an older version.
I then received an error when I tried to compile the GD Library (under the section: Download and Compile GD Graphics Library extension). The error was due to the t1lib not being installed. I recommend that you do a search for the t1lib after you install Xcode. If it is not present, you can go here for download/installation instructions.
One of the last steps involves confirming that PHP is loading the gd.so extension.
/usr/bin/php -i|grep -i gd
I received the error:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20060613/gd.so' - (null) in Unknown on line 0
I simply copied the gd.so file from /SourceCache/php-5.2.8/ext/gd/ to /usr/lib/php/extensions/no-debug-non-zts-20060613/. I then received the confirmation:
gd GD Support => enabled GD Version => bundled (2.0.34 compatible)
Additional Notes
1. Under the section, “Download and compile the GD graphics library extension”, the step refers to php 5.2.6. I changed it to php 5.2.8. Actually, I opened my browser and navigated to: http://opensource.apple.com/. I then selected the version of Mac OS X that I am using (10.5.7). I then scrolled down the list and selected apache_mod_php-44.2 and found php-5.2.8.tar.bz2. So my curl statement was:
curl -O http://www.opensource.apple.com/darwinsource/10.5.7/ apache_mod_php-44.2/php-5.2.8.tar.bz2
2. A few of the steps require you to type:
make install
You really have to type:
sudo make install
or you will receive an error. Enter your password as required.
While recompiling PHP with GD support is not for the faint of heart, it can be done. Now I can get back to work.
PHP: Getting the File Type of an Image
PHPI am working on an image upload plugin that uses JQuery. I am using PHP on the backend. I have found that there are multiple ways to use PHP to get the file extension of an image.
PathInfo
PathInfo is probably the most common way get information about a file.
$path_parts = pathinfo('http://grasshopperpebbles.com/photogallery/thumbs/pic1.png'); echo $path_parts['dirname']; //output: http://grasshopperpebbles.com echo $path_parts['basename']; //output: pic1.png echo $path_parts['extension']; //output: png echo $path_parts['filename']; //output: pic1 |
GetImageSize
Although I have used PHP’s getimagesize to get the dimensions of an image, it can also be used to get other information (to include the file type):
list($width, $height, $type) = getimagesize('pic1.png'); echo $type; //output: png |
End
Recently, I stumbled upon a new way to get the file extension:
$file_name = current(explode('.', 'pic1.png')); $ext = end(explode('.', 'pic1.png')); echo $file_name; //output: pic1 echo $ext; //output: png |
I’m sure there are other ways to use PHP to get the file type as well.
Learning Drupal – Step 1: Themes
Drupal, Pebblet, PHPI have been a PHP developer for many years and I have recently started learning Drupal 6. I struggled for a few days just trying to modify one of the existing themes. If any of you are just starting to learn Drupal and you want to create your own design/theme, I found that the easiest way is to first create your design template (HTML and CSS) without the PHP/Drupal code. Once your design is complete and can be viewed correctly in the modern browsers, then open up one the themes (page.tpl.php) that are installed with Drupal and copy/paste the revelant PHP code into your template. I also use this approach when I create WordPress themes.
Before you begin your design, make sure that you have a fairly good understanding of Drupal’s Regions, Blocks and Modules and Blocks (Blocks are placed into Regions). Namely, header, left side, right side, and footer. You don’t necessarily have to use all regions in your design (i.e., you may not need a right side), but you should have a good understanding of what each region can be used for.
When I created my first Drupal theme, I did not think that I needed a right side, so I did not create one. But after I looked at other websites that use Drupal (and the many contributed modules), I found some very good content ideas that can be placed on the right side of my Drupal theme template.
I will, from time-to-time, post other Drupal tidbits (as I learn them).

