settings)) { $this->settings = $this->getDefaultSettings(); } return isset($this->settings[$key]) ? $this->settings[$key] : NULL; } /** * {@inheritdoc} */ public function getDefaultSettings() { $definition = $this->getPluginDefinition(); return $definition['settings']; } /** * {@inheritdoc} */ public function getSettings() { return $this->settings; } /** * {@inheritdoc} */ public function settingsForm(array $form, FormStateInterface $form_state) { return array(); } /** * {@inheritdoc} */ function settingsFormValidate(array $form, FormStateInterface $form_state) { // Validation is optional. } /** * {@inheritdoc} */ public function generate(array $values) { $this->generateElements($values); $this->setMessage('Generate process complete.'); } /** * Business logic relating with each DevelGenerate plugin * * @param array $values * The input values from the settings form. */ protected function generateElements(array $values) { } /** * Populate the fields on a given entity with sample values. * * @param \Drupal\Core\Entity\EntityInterface $entity * The entity to be enriched with sample field values. */ public static function populateFields(EntityInterface $entity) { /** @var \Drupal\field\FieldConfigInterface[] $instances */ $instances = entity_load_multiple_by_properties('field_config', array('entity_type' => $entity->getEntityType()->id(), 'bundle' => $entity->bundle())); if ($skips = function_exists('drush_get_option') ? drush_get_option('skip-fields', '') : @$_REQUEST['skip-fields']) { foreach (explode(',', $skips) as $skip) { unset($instances[$skip]); } } foreach ($instances as $instance) { $field_storage = $instance->getFieldStorageDefinition(); $max = $cardinality = $field_storage->getCardinality(); if ($cardinality == FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED) { // Just an arbitrary number for 'unlimited' $max = rand(1, 3); } $field_name = $field_storage->getName(); $entity->$field_name->generateSampleItems($max); } } /** * {@inheritdoc} */ public function handleDrushParams($args) { } /** * Set a message for either drush or the web interface. * * @param string $msg * The message to display. * @param string $type * (optional) The message type, as defined by drupal_set_message(). Defaults * to 'status' */ protected function setMessage($msg, $type = 'status') { $function = 'drupal_set_message'; if (function_exists('drush_log')) { $function = 'drush_log'; $msg = strip_tags($msg); } $function($msg, $type); } /** * Check if a given param is a number. * * @param mixed $number * The parameter to check. * * @return bool * TRUE if the parameter is a number, FALSE otherwise. */ public static function isNumber($number) { if ($number == NULL) return FALSE; if (!is_numeric($number)) return FALSE; return TRUE; } /** * Returns the random data generator. * * @return \Drupal\Component\Utility\Random * The random data generator. */ protected function getRandom() { if (!$this->random) { $this->random = new Random(); } return $this->random; } }