/**
  * Add fields to Set's layout.
  *
  * @param array $fields Array filled with FieldLayoutFieldModel.
  */
 private function _addFieldsToLayout($fields)
 {
     $oldLayout = false;
     $newLayout = $this->_globalSet->getFieldLayout();
     $layoutTabs = array();
     $layoutFields = array();
     // Delete old layout if available
     if ($this->_globalSet->fieldLayoutId) {
         $oldLayout = $this->_globalSet->getFieldLayout();
         // Overwrite variables
         $layoutTabs = $oldLayout->getTabs();
         $layoutFields = $oldLayout->getFields();
     }
     // Create layout
     if (!count($layoutTabs)) {
         // Nothing is set, so we have to create it
         $tab = new FieldLayoutTabModel();
         $tab->name = Craft::t('Content');
         $tab->sortOrder = 1;
         $tab->setFields($fields);
         $layoutTabs[] = $tab;
         // Add fields to layout
         foreach ($fields as $field) {
             $layoutFields[] = $field;
         }
     } else {
         // Update existing information
         foreach ($layoutTabs as $tab) {
             // Add fields to first tab
             if ($tab === reset($layoutTabs)) {
                 $tabFields = $tab->getFields();
                 $sortOrder = count($tabFields) + 1;
                 foreach ($fields as $field) {
                     // Update position for added field
                     $field->sortOrder = $sortOrder;
                     // Add field to tab and layout
                     $tabFields[] = $field;
                     $layoutFields[] = $field;
                     // Update order
                     $sortOrder++;
                 }
                 $tab->setFields($tabFields);
             }
         }
     }
     $newLayout->setTabs($layoutTabs);
     $newLayout->setFields($layoutFields);
     // Delete old layout
     if ($oldLayout !== false) {
         craft()->fields->deleteLayoutById($oldLayout->id);
     }
     // Set new layout
     $this->_globalSet->setFieldLayout($newLayout);
 }