/** * Создает и возвращает новую схему на основе текущей и еще одной. * Если какое-то имя поля встречается и в текущей, и в другой схеме - * поле в текущей будет перезаписано. * * @param CM_Fieldschema $1 * @param CM_Fieldschema $2 * @return CM_Fieldschema $new_schema */ public static function merge(CM_Fieldschema $schema1, CM_Fieldschema $schema2) { $new_schema = new CM_Fieldschema(); foreach (array($schema1, $schema2) as $schema) { foreach ($schema->get_field_names() as $name) { $new_schema->set_field($name, $schema->get_field($name)); } } return $new_schema; }
public function set_field_name($old_name, $new_name) { if ($this->is_field_ro($old_name)) { throw new CM_Template_Exception('Can not remove read-only field ' . $name); } if ($old_name == $new_name) { return; } if (!self::validate_field_name($new_name, $this, $old_name)) { throw new CM_Template_Exception('Can not change name from ' . $old_name . ' to ' . $new_name); } if (!$this->is_changeable()) { throw new CM_Template_Exception('Template not changeable'); } $field = $this->_fieldschema->get_field($old_name); $this->_fieldschema->remove_field($old_name); $this->_fieldschema->set_field($new_name, $field); }
public function test_set_field() { $fieldschema = new CM_Fieldschema(); $fieldschema->set_field('test1', new CM_Field_String()); $this->assertTrue($fieldschema->has_field('test1')); }