Developer Zone

Git Workflow - An Update

Now that Drupal have moved from CVS to the git versioning system, I realised that my github workflow can get even more of a workout and is doubly useful to me as I can now use it for Drupal contributions as well. The previous workflow is here: Github Workflow.

There are only a couple of differences between using Drupal's git and github.

The only post you'll ever need to test a template

The only post you'll ever need to test a template

The aim of this post is to write a page that contains all the elements of html that I'll ever use. For the purpose of theme development to ensure all elements are properly styled.

The purpose of this HTML is to help determine what default settings are with CSS and to make sure that all possible HTML Elements are included in this HTML so as to not miss any possible Elements when designing a site.

A birthday function

When you get older you need to write functions to help you though the day:

Block Hotmail email addresses in user signup

I was recently asked to block users from signing up to a drupal site using a hotmail email address.

To achieve this I wrote a small module that will intercept the validate operation of the user module and add in an extra validation on the mail field of the user registration or edit form.

Create your dot info file: hotmail_check.info

; $Id$
name = Hotmail Check
description = "Removes the ability to login with a hotmail email address."
core = 6.x

Then create your dot module file: hotmail_check.module

Backup a drupal site - both database and site files through cron

I wrote a little linux bash script that I get cron to run each night to create a backup of my drupal site. I may expand it later to include auto deletion of older files and database dumps, but for the meantime I will just manage the backup files manually.

Basically create a file and call it something like site_backup.sh

Drupal 6 l() - the missing link documentation

The format

The drupal 6 link function takes the format of:

l($text, $path, $options = array())

This will format an internal Drupal link.

This function correctly handles aliased paths, and allows themes to highlight
links to the current page correctly, so all internal links output by modules
should be generated by this function if possible.

Parameters

$text - The text to be enclosed with the anchor tag.

$path - The Drupal path being linked to, such as "admin/content/node". Can be an external or internal URL.

Programmatically set the defaults for a new content type

When programmatically creating a new content type I would like to set the default publishing options, comment settings and upload settings, as the content type is installed, so I create a dot install file for the content type with the following:

Github workflow

In order to keep track of versions of your code, or just to keep a record of the changes you make to code, github.com is an alternative VCS to the popular SVN. Here are some steps to ensure your code is kept up to date, even if you are sharing your codebase with other developers.

MySQL Backup and Restore

This is a script to run when using an SSH connection to move a MySQL database to another host.

mysqldump --host=<host_ip_address> --user <db_username> --password=<db_password> <database_name> > mysqldump.sql

mysql -u <db_username> -p <db_password> -h <host_ip_address> <database_name> < mysqldump.sql

In the first line you should replace the bits in brackets with the host database you need to backup and the second line should be the details of the host you are restoring to.

MySQL 5 - Incorrect integer value: '' for column 'id' at row 1

I recently found that one of my applications no longer works when I install it. Bit of a bummer as you always discover this only when the it is urgently needed.

A lot of head scratching ensued, as the same code is working still working perfectly elsewhere. I checked the php versions and configs, checked the apache setups, all similar enough not to cause any problems. The only clue to what was going on was a mysql log file entry of:

Pages