[ Index ]

PHP Cross Reference of Limb3

title

Body

[close]

/i18n/src/template/tags/i18n/ -> date.filter.php (source)

   1  <?php
   2  /*
   3   * Limb PHP Framework
   4   *
   5   * @link http://limb-project.com 
   6   * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
   7   * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
   8   */
   9  lmb_require('limb/i18n/src/datetime/lmbLocaleDate.class.php');
  10  
  11  /**
  12   * @filter i18n_date
  13   * @max_attributes 5
  14   * @package i18n
  15   * @version $Id: date.filter.php 5945 2007-06-06 08:31:43Z pachanga $
  16   */
  17  class lmbI18NDateFilter extends WactCompilerFilter
  18  {
  19    var $date;
  20  
  21    var $locale_var;
  22    var $date_var;
  23    var $date_format_var;
  24  
  25    function getValue()
  26    {
  27      $value = $this->base->getValue();
  28  
  29      $toolkit = lmbToolkit :: instance();
  30  
  31      if(isset($this->parameters[0]) && $this->parameters[0]->getValue())
  32        $locale = $toolkit->getLocaleObject($this->parameters[0]->getValue());
  33      else
  34        $locale = $toolkit->getLocaleObject();
  35  
  36      $this->date = new lmbLocaleDate();
  37  
  38      $this->_setDate();
  39  
  40      if($this->isConstant())
  41        return $this->date->localeStrftime($this->_getFormat($locale), $locale);
  42      else
  43        $this->raiseUnresolvedBindingError();
  44    }
  45  
  46    function _setDate()
  47    {
  48      if(isset($this->parameters[1]) && $this->parameters[1]->getValue())
  49        $date_type = $this->parameters[1]->getValue();
  50      else
  51        $date_type = 'stamp';
  52  
  53      $value = $this->base->getValue();
  54      switch($date_type)
  55      {
  56        case 'string':
  57          $this->date = new lmbLocaleDate($value);
  58        break;
  59        case 'stamp':
  60          $this->date = new lmbLocaleDate((int)$value);
  61        break;
  62  
  63        default:
  64          $this->date = new lmbLocaleDate($value);
  65        break;
  66      }
  67    }
  68  
  69    function _getFormat($locale)
  70    {
  71      if(isset($this->parameters[3]) && $this->parameters[3]->getValue())
  72        return $this->parameters[3]->getValue();
  73  
  74      if(isset($this->parameters[2]) && $this->parameters[2]->getValue())
  75        $format_type = $this->parameters[2]->getValue();
  76      else
  77        $format_type = 'short_date';
  78  
  79      $property = $format_type . '_format';
  80      return $locale->$property;
  81    }
  82  
  83    function generatePreStatement($code)
  84    {
  85      parent :: generatePreStatement($code);
  86  
  87      $toolkit_var = $code->getTempVarRef();
  88      $this->locale_var = $code->getTempVarRef();
  89  
  90      $code->writePHP("lmb_require('limb/i18n/src/datetime/lmbLocaleDate.class.php');");
  91      $code->writePHP($toolkit_var . ' = lmbToolkit :: instance();' . "\n");
  92      $code->writePHP($this->locale_var . ' = ');
  93  
  94      if(isset($this->parameters[0]) && $this->parameters[0]->getValue())
  95      {
  96        $code->writePHP($toolkit_var . '->getLocaleObject("' . $this->parameters[0]->getValue(). '");');
  97      }
  98      else
  99      {
 100        $code->writePHP($toolkit_var . '->getLocaleObject();');
 101      }
 102  
 103      $this->date_var = $code->getTempVarRef();
 104  
 105      $this->_setDBEDate($code);
 106  
 107    }
 108  
 109    function _setDBEDate($code)
 110    {
 111      if(isset($this->parameters[1]) && $this->parameters[1]->getValue())
 112        $date_type = $this->parameters[1]->getValue();
 113      else
 114        $date_type = 'stamp';
 115  
 116      switch($date_type)
 117      {
 118        case 'stamp':
 119          $code->writePHP($this->date_var . ' = new lmbLocaleDate((int)');
 120          $this->base->generateExpression($code);
 121          $code->writePHP(');');
 122        break;
 123  
 124        case 'string':
 125          $code->writePHP($this->date_var . ' = new lmbLocaleDate(');
 126          $this->base->generateExpression($code);
 127          $code->writePHP(');');
 128        break;
 129  
 130        default:
 131          $code->writePHP($this->date_var . ' = new lmbLocaleDate((int)');
 132          $this->base->generateExpression($code);
 133          $code->writePHP(');');
 134        break;
 135      }
 136    }
 137  
 138    function generateExpression($code)
 139    {
 140      parent :: generateExpression($code);
 141  
 142      $code->writePHP($this->date_var . '->localeStrftime(');
 143      $this->_getDBEFormat($code);
 144      $code->writePHP(' ,' . $this->locale_var . ')');
 145    }
 146  
 147    function _getDBEFormat($code)
 148    {
 149      if(isset($this->parameters[3]) && $this->parameters[3]->getValue())
 150      {
 151        $code->writePHP('"' . $this->parameters[3]->getValue() . '"');
 152        return;
 153      }
 154  
 155      if(isset($this->parameters[2]) && $this->parameters[2]->getValue())
 156        $format_type = $this->parameters[2]->getValue();
 157      else
 158        $format_type = 'short_date';
 159  
 160      $property = $format_type . '_format';
 161      $code->writePHP($this->locale_var .'->' . $property);
 162    }
 163  }
 164  
 165  ?>


Generated: Sun Oct 12 04:41:30 2008 Cross-referenced by PHPXref 0.7