Exemple #1
0
 /**
  * Создает и возвращает новую схему на основе текущей и еще одной.
  * Если какое-то имя поля встречается и в текущей, и в другой схеме -
  * поле в текущей будет перезаписано.
  *
  * @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;
 }
Exemple #2
0
 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);
 }
Exemple #3
0
 public function test_set_field()
 {
     $fieldschema = new CM_Fieldschema();
     $fieldschema->set_field('test1', new CM_Field_String());
     $this->assertTrue($fieldschema->has_field('test1'));
 }