Ejemplo n.º 1
0
 /**
  * Generic method wrapping datatype's fromString() method if implemented
  * Checks if fromString() is implemented in the field's datatype
  * If not, data_text will be used by default
  * @see http://projects.ez.no/sqliimport/forum/issues/two_little_thing
  * @param string $data String representation of data to inject
  * @return void
  */
 public function fromString($data)
 {
     $datatype = $this->attribute->attribute('data_type_string');
     $fromStringImplemented = 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::$datatypesFromStringImpl)) {
         $fromStringImplemented = true;
     } else {
         if (in_array($datatype, self::$datatypesFromStringNotImpl)) {
             $fromStringImplemented = false;
         } else {
             $reflector = new ReflectionObject($this->attribute->dataType());
             $callerClass = $reflector->getMethod('fromString')->class;
             if ($callerClass == 'eZDataType') {
                 self::$datatypesFromStringNotImpl[] = $datatype;
                 $fromStringImplemented = false;
             } else {
                 self::$datatypesFromStringImpl[] = $datatype;
                 $fromStringImplemented = true;
             }
         }
     }
     // Now insert data through the appropriate way
     if ($fromStringImplemented) {
         $this->attribute->fromString($data);
     } else {
         $this->attribute->setAttribute('data_text', $data);
     }
 }
 public function createObject(ezpDatatypeTestDataSet $dataSet)
 {
     static $counter = 0;
     $this->object = new ezpObject($this->class->identifier, 2);
     $this->object->title = "{$this->datatype} test #" . ++$counter;
     $dataMap = $this->object->dataMap();
     $this->attribute = $dataMap[$this->attributeIdentifier];
     try {
         $attribute = $this->attribute->fromString($dataSet->fromString);
     } catch (PHPUnit_Framework_Error_Notice $e) {
         self::fail("A notice has been thrown when calling fromString: " . $e->getMessage());
     }
     $this->object->publish();
 }