Ejemplo n.º 1
0
 /**
  * Generic method wrapping datatype's toString() method if implemented
  * Checks if toString() is implemented in the field's datatype
  * If not, data_text will be used by default
  * @param eZContentObjectAttribute $attribute
  * @return string
  */
 public static function convertAttributeToString(eZContentObjectAttribute $attribute)
 {
     $datatype = $attribute->attribute('data_type_string');
     $toStringImplemented = null;
     $ret = null;
     // First check if datatype is already known as implementing fromString() or not
     // (Better performance as the check is made through Reflection API)
     if (in_array($datatype, self::$datatypesToStringImpl)) {
         $toStringImplemented = true;
     } else {
         if (in_array($datatype, self::$datatypesToStringNotImpl)) {
             $toStringImplemented = false;
         } else {
             $reflector = new ReflectionObject($attribute->dataType());
             $callerClass = $reflector->getMethod('toString')->class;
             if ($callerClass == 'eZDataType') {
                 self::$datatypesToStringNotImpl[] = $datatype;
                 $toStringImplemented = false;
             } else {
                 self::$datatypesToStringImpl[] = $datatype;
                 $toStringImplemented = true;
             }
         }
     }
     // Now insert data through the appropriate way
     if ($toStringImplemented) {
         $ret = $attribute->toString();
     } else {
         $ret = $attribute->attribute('data_text');
     }
     return $ret;
 }