December 30th 2009
CSS Font-Face is a great way to embed fonts into your web layouts. You'll need two fonts, one that is either TTF (true type font) or OTF (open type font). These fonts will be supported in most non IE browsers. For IE browsers, you'll need a EOT font. Microsoft supplies a windows only script "WEFT" to convert true type fonts to EOT (embeddable open type). Instead of using this tool to convert your fonts, I suggest using this web utility to convert to EOT. Its a real time saver, especially if your on a Mac.
It is important to have the .eot font defined before the ttf or otf, otherwise IE will not work properly.
This is a good solution for existing websites, as it just takes a few lines of code to import your font, and then declare within your existing style sheet definitions.
<style type="text/css">
@font-face {
font-family: MyFont;
src: url("http://yourdomain.com/fonts/MyFont.eot")
}
@font-face {
font-family: MyFont;
src: url("http://yourdomain.com/fonts/MyFont.ttf")
}
/* now just define the font family */
span.header { font-family: MyFont, helvetica;
</style>
October 28th 2009
Here is a simple library that takes advantages of layouts in code igniter. You can call it in your controller like:
$this->layout->view('dashboard');
You can pass data to it just like load->view:
$data = array('foo'=>'bar'); $this->layout->view('dashboard',$data);
Either configure your autoloader to load the layout or load the library in your controller:
$this->load->library('layout');
If you wish to change the layout from default you do so in your controller:
$this->layout->setLayout('secondary');
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Layout {
var $obj;
var $layout;
function Layout($layout = "default"){
$this->obj =& get_instance();
$this->layout = $layout;
}
function setLayout($layout){
$this->layout = $layout;
}
function view($view, $data=null, $return=false){
$loadedData['content_for_layout'] = $this->obj->load->view($view,$data,true);
if($return):
$output = $this->obj->load->view('layouts/'.$this->layout, $loadedData, true);
return $output;
else:
$this->obj->load->view('layouts/'.$this->layout, $loadedData, false);
endif;
}
}
?>
162 downloads
October 27th 2009
Comes with basic SQL for building the database. This script is designed to update weather once every 5 minutes. No need for cron, this will just pull data if the current information in the database is older than 5 minutes. It will also archive previous weather information for long term usage.
Visit Gist on Github
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/*
CREATE TABLE IF NOT EXISTS `weather` (
`id` int(11) NOT NULL auto_increment,
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`recorded_at` datetime NOT NULL,
`temp` float NOT NULL,
`conditions` varchar(150) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
*/
class Weather extends Model {
var $zip_code = '87525';
var $recorded_at;
var $timestamp;
var $temp;
var $conditions;
function __construct(){
parent::Model();
$this->getLatest();
}
function getLatest(){
# load from db first..
$this->loadFromDatabase();
# this will fetch and store weather..
if($this->timeToGetNewWeather() == true):
$this->fetchAndStoreWeather();
endif;
}
private function timeToGetNewWeather(){
if(strtotime($this->timestamp." +5 minutes") < time()):
return true;
endif;
return false;
}
private function loadFromDatabase(){
$this->db->order_by('timestamp','desc');
$stats = $this->db->get('weather',1)->row();
$this->temp = $stats->temp;
$this->conditions = $stats->conditions;
$this->recorded_at = $stats->recorded_at;
$this->timestamp = $stats->timestamp;
}
private function fetchAndStoreWeather(){
$url = 'http://weather.yahooapis.com/forecastrss?p='.$this->zip_code;
$xml = $this->stream_remote_file($url);
$weatherData = $this->simplexml->xml_parse($xml);
$fields = array();
$fields['temp'] = $weatherData['channel']['item']['yweather:condition']['@attributes']['temp'];
$fields['conditions'] = $weatherData['channel']['item']['yweather:condition']['@attributes']['text'];
$fields['recorded_at'] = date('Y-m-d H:i:s',strtotime($weatherData['channel']['item']['yweather:condition']['@attributes']['date']));
$this->db->insert('weather', $fields);
$this->loadFromDatabase();
}
private function stream_remote_file($url){
$handle = fopen($url, "rb");
$contents = stream_get_contents($handle);
fclose($handle);
return $contents;
}
}
?>
235 downloads
August 8th 2009
Sharing my super super simple google graphing class to draw line charts. This is used in various projects. I really would like to see what kind of additions people can make to this class so feel free to fork this project on github and see what can be added! Visit github project page here.
Or just clone the git project: git clone git://github.com/wes/googleGraph.git

<?php
class graph {
var $data = array();
var $opts = array();
var $colors;
var $areaColors;
var $labels;
function render(){
foreach($this->data as $d){
$dd = explode(",",$d);
}
$maxAxis = max($dd);
if(empty($this->colors)){
$this->colors = '000000';
}
if(empty($this->areaColors)){
$this->areaColors = 'D,4D89F9,0,0,5';
}
if(empty($this->opts['w'])){ $this->opts['w'] = 100; }
if(empty($this->opts['h'])){ $this->opts['h'] = 100; }
if(empty($this->opts['class'])){ $this->opts['class'] = 'graph'; }
if(empty($this->opts['bg'])){ $this->opts['bg'] = 'ffffff'; }
if(empty($this->labels)){ $this->labels = array(); }
$url = array();
$url[] = "http://chart.apis.google.com/chart?";
$url[] = "cht=ls";
$url[] = "&chs=".$this->opts['w']."x".$this->opts['h'];
$url[] = "&chd=t:".implode(",",$this->data);
$url[] = "&chco=".$this->colors;
$url[] = "&chl=".implode('|',$this->labels);
$url[] = "&chm=".$this->areaColors;
$url[] = "&chg=20,50,1,5";
$url[] = "&chxt=x,y";
$url[] = "&chbh=7,2";
$url[] = "&chds=-2,".$maxAxis;
$url[] = "&chf=bg,s,".$this->opts['bg'];
return "<img src='".implode("",$url)."' width='".$this->opts['w']."' height='".$this->opts['h']."' border='0' />";
}
}
?>
176 downloads
June 28th 2009