| [ Index ] |
PHP Cross Reference of Limb3 |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 * Limb PHP Framework 4 * 5 * @link http://limb-project.com 6 * @copyright Copyright © 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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Sun Oct 12 04:41:30 2008 | Cross-referenced by PHPXref 0.7 |