Personally I like taking a more sophisticated approach. The general idea is that a cron processor runs every 5 minutes to calculate the popularity of each entity based on the criteria you mentioned as well as a user based standard deviation to eliminate the obvious rally of gang votes to boost content within their own social circle.
Take a look at Lawson's answer for a good idea for factoring the age of a vote. But consider that it may be useful to apply a user's own weight based on reputation, seniority, etc.
The unfortunate part of this is that it is not simple. Though I find it more fun than most web programming, factoring in all basic psychologies for gaming the system can be a very time consuming process and may not be what you have in mind unless you happen to work for Digg itself, or be a part of a serious start up.
Here's the php.net standard deviation: http://php.net/manual/en/function.stats-standard-deviation.php
Although I think this SO answer is more to the point: z-Scores(standard deviation and mean) in PHP
Code samples may be nice, but we would need some of your data to do so and even then, this could get quite complex. But it is definitely fun. Especially when your code finds people trying to game the system.