You sometimes need to retrieve Magento url or paths like the website base URL or the edia directory path on the server. Magento brings us 2 functions allowing to do that easily.

For web adresses you need to use Mage::getBaseUrl() with the link type in parameter. The types are described in the model Mage_Core_Model_Store :

const URL_TYPE_LINK = 'link';
const URL_TYPE_DIRECT_LINK = 'direct_link';
const URL_TYPE_WEB = 'web';
const URL_TYPE_SKIN = 'skin';
const URL_TYPE_JS = 'js';
const URL_TYPE_MEDIA = 'media';


So we have :
Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK)
http://www.domain.com/index.php/

Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB)
http://www.domain.com/

Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN)
http://www.domain.com/skin/

Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS )
http://www.domain.com/js/

Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA)
http://www.domain.com/media/

To get a directory path you need to use Mage:::getBaseDir() with the directory code in parameter. The following table show all the available codes:
Code Call Value
base Mage::getBaseDir()
Mage::getBaseDir('base')
/var/www/magento/
app Mage::getBaseDir('app') /var/www/magento/app/
code Mage::getBaseDir('code') /var/www/magento/app/code
design Mage::getBaseDir('design') /var/www/magento/app/design/
etc Mage::getBaseDir('etc') /var/www/magento/app/etc
lib Mage::getBaseDir('lib') /var/www/magento/lib
locale Mage::getBaseDir('locale') /var/www/magento/app/locale
media Mage::getBaseDir('media') /var/www/magento/media/
skin Mage::getBaseDir('skin') /var/www/magento/skin/
var Mage::getBaseDir('var') /var/www/magento/var/
tmp Mage::getBaseDir('tmp') /var/www/magento/var/tmp
cache Mage::getBaseDir('cache') /var/www/magento/var/cache
log Mage::getBaseDir('log') /var/www/magento/var/log
session Mage::getBaseDir('session') /var/www/magento/var/session
upload Mage::getBaseDir('upload') /var/www/magento/media/upload
export Mage::getBaseDir('export') /var/www/magento/var/export