oxfield.php

Go to the documentation of this file.
00001 <?php
00002 
00014 class oxField // extends oxSuperCfg
00015 {
00019     const T_TEXT = 1;
00020 
00024     const T_RAW  = 2;
00025 
00051     public function __construct($value = null, $type = self::T_TEXT)
00052     {
00053         // duplicate content here is needed for performance.
00054         // as this function is called *many* (a lot) times, it is crucial to be fast here!
00055         switch ($type) {
00056             case self::T_TEXT:
00057             default:
00058                 $this->rawValue = $value;
00059                 break;
00060             case self::T_RAW:
00061                 $this->value = $value;
00062                 break;
00063         }
00064     }
00065 
00073     public function __isset( $sName )
00074     {
00075         switch ( $sName ) {
00076             case 'rawValue':
00077                 return ($this->rawValue !== null);
00078                 break;
00079             case 'value':
00080                 return ($this->value !== null);
00081                 break;
00082                 //return true;
00083         }
00084         return false;
00085     }
00086 
00094     public function __get( $sName )
00095     {
00096         switch ( $sName ) {
00097             case 'rawValue':
00098                 return $this->value;
00099                 break;
00100             case 'value':
00101                 if (is_string($this->rawValue)) {
00102                     $this->value = getStr()->htmlspecialchars( $this->rawValue );
00103                 } else {
00104                     // TODO: call htmlentities for each value (recursively?)
00105                     $this->value = $this->rawValue;
00106                 }
00107                 if ($this->rawValue == $this->value) {
00108                     unset($this->rawValue);
00109                 }
00110                 return $this->value;
00111                 break;
00112             default:
00113                 return null;
00114                 break;
00115         }
00116     }
00117 
00123     public function __toString()
00124     {
00125         return (string)$this->value;
00126     }
00127 
00133     public function convertToFormattedDbDate()
00134     {
00135         $this->setValue(oxRegistry::get("oxUtilsDate")->formatDBDate( $this->rawValue ), self::T_RAW);
00136     }
00137 
00143     public function convertToPseudoHtml()
00144     {
00145         $this->setValue( str_replace( "\r", '', nl2br( getStr()->htmlspecialchars( $this->rawValue ) ) ), self::T_RAW );
00146     }
00147 
00156     protected function _initValue( $value = null, $type = self::T_TEXT)
00157     {
00158         switch ($type) {
00159             case self::T_TEXT:
00160                 $this->rawValue = $value;
00161                 break;
00162             case self::T_RAW:
00163                 $this->value = $value;
00164                 break;
00165         }
00166     }
00167 
00176     public function setValue($value = null, $type = self::T_TEXT)
00177     {
00178         unset($this->rawValue);
00179         unset($this->value);
00180         $this->_initValue($value, $type);
00181     }
00182 
00188     public function getRawValue()
00189     {
00190         if (null === $this->rawValue) {
00191             return $this->value;
00192         };
00193         return $this->rawValue;
00194     }
00195 }