/**
  * Sets the layout's fields.
  *
  * @param array $fields
  *
  * @return null
  */
 public function setFields($fields)
 {
     $this->_fields = array();
     foreach ($fields as $field) {
         if (is_array($field)) {
             $field = new FieldLayoutFieldModel($field);
         }
         $field->setLayout($this);
         $this->_fields[] = $field;
     }
 }
 /**
  * Returns a layout's tabs by its ID.
  *
  * @param int $layoutId
  *
  * @return array
  */
 public function getLayoutFieldsById($layoutId)
 {
     $results = $this->_createLayoutFieldQuery()->where('layoutId = :layoutId', array(':layoutId' => $layoutId))->queryAll();
     return FieldLayoutFieldModel::populateModels($results);
 }
 /**
  * Sets the layout's fields.
  *
  * @param array $fields
  */
 public function setFields($fields)
 {
     $this->_fields = FieldLayoutFieldModel::populateModels($fields, 'fieldId');
 }
 /**
  * Returns a layout's fields by its ID, in the layout-defined sort order.
  *
  * @param int $layoutId
  *
  * @return array
  */
 public function getOrderedLayoutFieldsById($layoutId)
 {
     $results = $this->_createLayoutFieldQuery($layoutId)->join('fieldlayouttabs fieldlayouttabs', 'fieldlayouttabs.id = fieldlayoutfields.tabId')->order('fieldlayouttabs.sortOrder, fieldlayoutfields.sortOrder')->queryAll();
     return FieldLayoutFieldModel::populateModels($results);
 }
 /**
  * Attempt to import a field layout.
  *
  * @param array $fieldLayoutDef
  *
  * @return FieldLayoutModel
  */
 private function _importFieldLayout(array $fieldLayoutDef)
 {
     $layoutTabs = array();
     $layoutFields = array();
     if (array_key_exists('tabs', $fieldLayoutDef)) {
         $tabSortOrder = 0;
         foreach ($fieldLayoutDef['tabs'] as $tabName => $tabDef) {
             $layoutTabFields = array();
             foreach ($tabDef as $fieldHandle => $required) {
                 $fieldSortOrder = 0;
                 $field = craft()->fields->getFieldByHandle($fieldHandle);
                 if ($field) {
                     $layoutField = new FieldLayoutFieldModel();
                     $layoutField->setAttributes(array('fieldId' => $field->id, 'required' => $required, 'sortOrder' => ++$fieldSortOrder));
                     $layoutTabFields[] = $layoutField;
                     $layoutFields[] = $layoutField;
                 }
             }
             $layoutTab = new FieldLayoutTabModel();
             $layoutTab->setAttributes(array('name' => $tabName, 'sortOrder' => ++$tabSortOrder));
             $layoutTab->setFields($layoutTabFields);
             $layoutTabs[] = $layoutTab;
         }
     } else {
         if (array_key_exists('fields', $fieldLayoutDef)) {
             $fieldSortOrder = 0;
             foreach ($fieldLayoutDef['fields'] as $fieldHandle => $required) {
                 $field = craft()->fields->getFieldByHandle($fieldHandle);
                 if ($field) {
                     $layoutField = new FieldLayoutFieldModel();
                     $layoutField->setAttributes(array('fieldId' => $field->id, 'required' => $required, 'sortOrder' => ++$fieldSortOrder));
                     $layoutFields[] = $layoutField;
                 }
             }
         }
     }
     $fieldLayout = new FieldLayoutModel();
     $fieldLayout->type = ElementType::Entry;
     $fieldLayout->setTabs($layoutTabs);
     $fieldLayout->setFields($layoutFields);
     return $fieldLayout;
 }