*/
class Mage_Directory_Model_Country extends Mage_Core_Model_Abstract
{
static public $_format = array();
protected function _construct()
{
$this->_init('directory/country');
}
public function loadByCode($code)
{
$this->_getResource()->loadByCode($this, $code);
return $this;
}
public function getRegions()
{
return $this->getLoadedRegionCollection();
}
public function getLoadedRegionCollection()
{
$collection = $this->getRegionCollection();
$collection->load();
return $collection;
}
public function getRegionCollection()
{
$collection = Mage::getResourceModel('directory/region_collection');
$collection->addCountryFilter($this->getId());
return $collection;
}
public function formatAddress(Varien_Object $address, $html=false)
{
//TODO: is it still used?
$address->getRegion();
$address->getCountry();
$template = $this->getData('address_template_'.($html ? 'html' : 'plain'));
if (empty($template)) {
if (!$this->getId()) {
$template = '{{firstname}} {{lastname}}';
} elseif (!$html) {
$template = "{{firstname}} {{lastname}}
{{company}}
{{street1}}
{{street2}}
{{city}}, {{region}} {{postcode}}";
} else {
$template = "{{firstname}} {{lastname}}
{{street}}
{{city}}, {{region}} {{postcode}}
T: {{telephone}}";
}
}
$filter = new Varien_Filter_Template_Simple();
$addressText = $filter->setData($address->getData())->filter($template);
if ($html) {
$addressText = preg_replace('#(
\s*){2,}#im', '
', $addressText);
} else {
$addressText = preg_replace('#(\n\s*){2,}#m', "\n", $addressText);
}
return $addressText;
}
/**
* Retrive formats for
*
* @return Mage_Directory_Model_Resource_Country_Format_Collection
*/
public function getFormats()
{
if (!isset(self::$_format[$this->getId()]) && $this->getId()) {
self::$_format[$this->getId()] = Mage::getModel('directory/country_format')
->getCollection()
->setCountryFilter($this)
->load();
}
if (isset(self::$_format[$this->getId()])) {
return self::$_format[$this->getId()];
}
return null;
}
/**
* Retrive format
*
* @param string $type
* @return Mage_Directory_Model_Country_Format
*/
public function getFormat($type)
{
if ($this->getFormats()) {
foreach ($this->getFormats() as $format) {
if ($format->getType()==$type) {
return $format;
}
}
}
return null;
}
public function getName()
{
if(!$this->getData('name')) {
$this->setData(
'name',
Mage::app()->getLocale()->getCountryTranslation($this->getId())
);
}
return $this->getData('name');
}
}