diff --git a/lib/classes/databox/descriptionStructure.class.php b/lib/classes/databox/descriptionStructure.class.php index 96c2ffd33c..74e36a6ea3 100644 --- a/lib/classes/databox/descriptionStructure.class.php +++ b/lib/classes/databox/descriptionStructure.class.php @@ -75,7 +75,7 @@ class databox_descriptionStructure implements IteratorAggregate /** * - * @param $name + * @param int $id * @return databox_field */ public function get_element($id) @@ -93,6 +93,8 @@ class databox_descriptionStructure implements IteratorAggregate */ public function get_element_by_name($name) { + $name = databox_field::generateName($name); + if (isset($this->cache_name_id[$name])) return $this->elements[$this->cache_name_id[$name]]; diff --git a/lib/classes/databox/field.class.php b/lib/classes/databox/field.class.php index 490bda2dc2..b1ba13ea42 100644 --- a/lib/classes/databox/field.class.php +++ b/lib/classes/databox/field.class.php @@ -411,10 +411,7 @@ class databox_field implements cache_cacheableInterface */ public function set_name($name) { - $unicode_processor = new unicode(); - $name = $unicode_processor->remove_nonazAZ09($name, false, false); - $name = $unicode_processor->remove_first_digits($name); - $this->name = $name; + $this->name = self::generateName($name); return $this; } @@ -852,11 +849,6 @@ class databox_field implements cache_cacheableInterface { $sorter = 0; - $unicode_processor = new unicode(); - - $name = $unicode_processor->remove_nonazAZ09($name, false, false); - $name = $unicode_processor->remove_first_digits($name); - $sql = 'SELECT (MAX(sorter) + 1) as sorter FROM metadatas_structure'; $stmt = $databox->get_connection()->prepare($sql); $stmt->execute(); @@ -875,7 +867,7 @@ class databox_field implements cache_cacheableInterface 1, :sorter)"; $stmt = $databox->get_connection()->prepare($sql); - $stmt->execute(array(':name' => $name, ':sorter' => $sorter)); + $stmt->execute(array(':name' => self::generateName($name), ':sorter' => $sorter)); $id = $databox->get_connection()->lastInsertId(); $stmt->closeCursor(); @@ -883,6 +875,16 @@ class databox_field implements cache_cacheableInterface return self::get_instance($databox, $id); } + + + public static function generateName($name) + { + $unicode_processor = new unicode(); + + $name = $unicode_processor->remove_nonazAZ09($name, false, false); + + return $unicode_processor->remove_first_digits($name); + } /** * diff --git a/lib/unitTest/databox/databox_fieldTest.php b/lib/unitTest/databox/databox_fieldTest.php index 4fc527ca3f..10e07786a4 100644 --- a/lib/unitTest/databox/databox_fieldTest.php +++ b/lib/unitTest/databox/databox_fieldTest.php @@ -25,8 +25,13 @@ class databox_fieldTest extends PhraseanetPHPUnitAbstract public function setUp() { $this->databox = self::$record_1->get_databox(); - $this->name = 'Field test'; - $this->object = databox_field::create($this->databox, $this->name); + $this->name = 'Field Test'; + + $this->object = $this->databox->get_meta_structure()->get_element_by_name($this->name); + + if(!$this->object instanceof databox_field) + $this->object = databox_field::create($this->databox, $this->name); + $this->id = $this->object->get_id(); }