/**
  * {@inheritdoc}
  */
 public function getRequiredFields()
 {
     $field = new Field();
     $field->setLabel('Title');
     $field->setMachine('title');
     $field->setType('Node module element');
     $field->setWidgetNameVisible(false);
     return array('Title' => $field);
 }
 /**
  * {@inheritdoc}
  */
 public function getRequiredFields()
 {
     $fieldName = new Field();
     $fieldName->setLabel('Name');
     $fieldName->setMachine('name');
     $fieldName->setType('Term name textfield');
     $fieldName->setWidgetNameVisible(false);
     $fieldDescription = new Field();
     $fieldDescription->setLabel('Description');
     $fieldDescription->setMachine('description');
     $fieldDescription->setType('Term description textarea');
     $fieldDescription->setWidgetNameVisible(false);
     return array('Name' => $fieldName, 'Description' => $fieldDescription);
 }
 /**
  * {@inheritdoc}
  */
 public function getRequiredFields()
 {
     $fileNameField = new Field();
     $fileNameField->setLabel('File name');
     $fileNameField->setMachine('filename');
     $fileNameField->setType('File name');
     $fileNameField->setWidgetNameVisible(false);
     $filePreviewField = new Field();
     $filePreviewField->setLabel('File');
     $filePreviewField->setMachine('preview');
     $filePreviewField->setType('File preview');
     $filePreviewField->setWidgetNameVisible(false);
     return array('File name' => $fileNameField, 'File' => $filePreviewField);
 }
 /**
  * Work out if a particular field value is considered "special" (and further processing is required).
  *
  * If it's special, process it into its proper value.
  *
  * @param mixed $value
  *   The special command used to populate this field's value.
  *
  * @return mixed
  *   The processed value. For example, if random text was requested, returns random text instead of the value that
  *   requests random text.
  */
 public static function parseSpecialValue($value)
 {
     // If array, recurse values.
     if (is_array($value)) {
         $output = array();
         foreach ($value as $key => $innerValue) {
             $output[$key] = Field::parseSpecialValue($innerValue);
         }
         return $output;
     }
     // If we're not dealing with a special value we can just bail out immediately at this point.
     if (substr($value, 0, 9) != 'special::') {
         return $value;
     }
     $special = substr($value, 9);
     switch ($special) {
         case 'randomText':
         default:
             $value = static::randomText();
             break;
     }
     return $value;
 }
 /**
  * {@inheritdoc}
  */
 public function loadGlobalExtras()
 {
     // Make sure to initialise by reading the data source.
     if (!$this->isInitialised()) {
         $this->parseDataSource();
     }
     $globalExtras = array();
     if (empty($this->config)) {
         throw new ConfigurationException("Configuration file is invalid");
     }
     if (isset($this->config['GlobalExtras'])) {
         foreach ($this->config['GlobalExtras'] as $extraData) {
             $extra = Field::parseYaml($extraData);
             $globalExtras[$extra->getMachine()] = $extra;
         }
     }
     return $globalExtras;
 }
 /**
  * Construct a ContentType by parsing yaml configuration.
  *
  * @param array $yaml
  *   Yaml in a standard format as found in contentTypes.yml.
  * @param array $fields
  *   Yaml for the global fields in a standard format as found in contentTypes.yml.
  * @param array $extras
  *   Yaml for the global extras in a standard format as found in contentTypes.yml.
  *
  * @return ContentType
  *   A fully populated ContentType object.
  */
 public static function parseYaml($yaml, $fields = array(), $extras = array())
 {
     $contentType = new ContentType();
     $contentType->setHumanName($yaml['humanName']);
     $contentType->setMachineName($yaml['machineName']);
     // Set the entity type.
     if (isset($yaml['entityType'])) {
         $contentType->setEntityType($yaml['entityType']);
     } else {
         // Use node as our default if no entity type is set.
         $contentType->setEntityType('node');
     }
     // Set all the required fields for this content type.
     foreach ($contentType->getEntityType()->getRequiredFields() as $field) {
         $contentType->setField($field);
     }
     // Set all fields on this content type as defined in the yaml.
     if (isset($yaml['fields'])) {
         foreach ($yaml['fields'] as $key => $fieldData) {
             // The 'globals' key is the old way of writing it instead of 'globalFields' which is maintained for
             // backwards compatibility.
             if ($key == 'globals' || $key == 'globalFields') {
                 // Handle the list of global fields specially.
                 $fields = Field::parseGlobalFields($fieldData, $fields);
                 $contentType->setFields($fields);
             } else {
                 // Handle a single field definition.
                 $field = Field::parseYaml($fieldData, $fields);
                 $contentType->setField($field);
             }
         }
     }
     // Set all extras on this content type as defined in the yaml.
     if (isset($yaml['extras'])) {
         foreach ($yaml['extras'] as $key => $extraData) {
             if ($key == 'globalExtras') {
                 // Handle the list of global extras specially.
                 $extras = Field::parseGlobalFields($extraData, $extras);
                 $contentType->setExtras($extras);
             } else {
                 $extra = Field::parseYaml($extraData);
                 $contentType->setExtra($extra);
             }
         }
     }
     if (isset($yaml['submit'])) {
         $contentType->setSubmitSelector($yaml['submit']);
     }
     return $contentType;
 }