You are here

class UserProfile in Flexiform 8

Form Entity for getting profiles from a user object.

Plugin annotation


@FlexiformFormEntity(
  id = "user_profile",
  deriver = "\Drupal\flexiform\Plugin\Deriver\FormEntityProfileTypeDeriver"
)

Hierarchy

Expanded class hierarchy of UserProfile

File

src/Plugin/FlexiformFormEntity/UserProfile.php, line 22

Namespace

Drupal\flexiform\Plugin\FlexiformFormEntity
View source
class UserProfile extends FlexiformFormEntityBase implements ContainerFactoryPluginInterface {
  use StringTranslationTrait;
  protected $entityTypeManager;

  /**
   * The module handler.
   *
   * @var \Drupal\Core\Extension\ModuleHandlerInterface
   */
  protected $moduleHandler;

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, TranslationInterface $string_translation, ModuleHandlerInterface $module_handler) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->entityTypeManager = $entity_type_manager;
    $this->stringTranslation = $string_translation;
    $this->moduleHandler = $module_handler;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static($configuration, $plugin_id, $plugin_definition, $container
      ->get('entity_type.manager'), $container
      ->get('string_translation'), $container
      ->get('module_handler'));
  }

  /**
   * {@inheritdoc}
   */
  public function getEntityType() {
    return 'profile';
  }

  /**
   * {@inheritdoc}
   */
  public function getBundle() {
    return $this->pluginDefinition['profile_type'];
  }

  /**
   * {@inheritdoc}
   */
  public function getEntity() {
    $user = $this
      ->getContextValue('user');
    if (!$user) {
      return NULL;
    }
    $profile_storage = $this->entityTypeManager
      ->getStorage('profile');
    try {
      if ($user
        ->id() && ($entity = $profile_storage
        ->loadDefaultByUser($user, $this
        ->getBundle()))) {
        return $entity;
      }
      elseif (!empty($this->configuration['create'])) {
        $entity = $this
          ->createEntity();
        return $entity;
      }
    } catch (\Exception $e) {
      return NULL;
    }
  }

  /**
   * Create a new entity ready for this situation.
   */
  protected function createEntity() {
    $values = [
      'type' => $this
        ->getBundle(),
      'uid' => [
        'entity' => $this
          ->getContextValue('user'),
      ],
    ];
    $entity = $this->entityTypeManager
      ->getStorage('profile')
      ->create($values);
    $this->moduleHandler
      ->invokeAll('flexiform_form_entity_entity_create', [
      $entity,
      $this,
    ]);
    return $entity;
  }

  /**
   * {@inheritdoc}
   */
  public function configurationForm(array $form, FormStateInterface $form_state) {
    $form = parent::configurationForm($form, $form_state);
    $form['create'] = [
      '#type' => 'checkbox',
      '#title' => $this
        ->t('Create New Profile'),
      '#description' => $this
        ->t('If the property is empty, and new profile will be created.'),
      '#default_value' => !empty($this->configuration['create']),
    ];
    return $form;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ContextAwarePluginBase::$context protected property The data objects representing the context of this plugin.
ContextAwarePluginBase::$contexts Deprecated private property Data objects representing the contexts passed in the plugin configuration.
ContextAwarePluginBase::contextHandler protected function Wraps the context handler.
ContextAwarePluginBase::createContextFromConfiguration protected function Overrides ContextAwarePluginBase::createContextFromConfiguration
ContextAwarePluginBase::getCacheContexts public function The cache contexts associated with this object. Overrides CacheableDependencyInterface::getCacheContexts 9
ContextAwarePluginBase::getCacheMaxAge public function The maximum age for which this object may be cached. Overrides CacheableDependencyInterface::getCacheMaxAge 7
ContextAwarePluginBase::getCacheTags public function The cache tags associated with this object. Overrides CacheableDependencyInterface::getCacheTags 4
ContextAwarePluginBase::getContext public function This code is identical to the Component in order to pick up a different Context class. Overrides ContextAwarePluginBase::getContext
ContextAwarePluginBase::getContextDefinition public function Overrides ContextAwarePluginBase::getContextDefinition
ContextAwarePluginBase::getContextDefinitions public function Overrides ContextAwarePluginBase::getContextDefinitions
ContextAwarePluginBase::getContextMapping public function Gets a mapping of the expected assignment names to their context names. Overrides ContextAwarePluginInterface::getContextMapping
ContextAwarePluginBase::getContexts public function Gets the defined contexts. Overrides ContextAwarePluginInterface::getContexts
ContextAwarePluginBase::getContextValue public function Gets the value for a defined context. Overrides ContextAwarePluginInterface::getContextValue
ContextAwarePluginBase::getContextValues public function Gets the values for all defined contexts. Overrides ContextAwarePluginInterface::getContextValues
ContextAwarePluginBase::setContext public function Set a context on this plugin. Overrides ContextAwarePluginBase::setContext
ContextAwarePluginBase::setContextMapping public function Sets a mapping of the expected assignment names to their context names. Overrides ContextAwarePluginInterface::setContextMapping
ContextAwarePluginBase::setContextValue public function Sets the value for a defined context. Overrides ContextAwarePluginBase::setContextValue
ContextAwarePluginBase::validateContexts public function Validates the set values for the defined contexts. Overrides ContextAwarePluginInterface::validateContexts
ContextAwarePluginBase::__get public function Implements magic __get() method.
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
FlexiformFormEntityBase::$formEntityContext protected property The actual context, wraps the entity item.
FlexiformFormEntityBase::$formEntityManager protected property The flexiform entity manager.
FlexiformFormEntityBase::$prepared protected property Whether or not the form entity has been prepared.
FlexiformFormEntityBase::checkBundle protected function Check whether a given entity matches bundle required.
FlexiformFormEntityBase::configurationFormSubmit public function Submit the configuration form. Overrides FlexiformFormEntityInterface::configurationFormSubmit
FlexiformFormEntityBase::configurationFormValidate public function Validate the configuration form. Overrides FlexiformFormEntityInterface::configurationFormValidate
FlexiformFormEntityBase::doSave protected function Perform the save on the entity. 1
FlexiformFormEntityBase::getFormEntityContext public function Get the context. Overrides FlexiformFormEntityInterface::getFormEntityContext
FlexiformFormEntityBase::getFormEntityContextDefinition public function Get the context definition. Overrides FlexiformFormEntityInterface::getFormEntityContextDefinition
FlexiformFormEntityBase::getLabel public function Get the label for this plugin. Overrides FlexiformFormEntityInterface::getLabel
FlexiformFormEntityBase::saveEntity final public function Save the entity.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
TypedDataTrait::$typedDataManager protected property The typed data manager used for creating the data types.
TypedDataTrait::getTypedDataManager public function Gets the typed data manager. 2
TypedDataTrait::setTypedDataManager public function Sets the typed data manager. 2
UserProfile::$entityTypeManager protected property
UserProfile::$moduleHandler protected property The module handler.
UserProfile::configurationForm public function Prepare a configuration form. Overrides FlexiformFormEntityBase::configurationForm
UserProfile::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
UserProfile::createEntity protected function Create a new entity ready for this situation.
UserProfile::getBundle public function Get the bundle. Overrides FlexiformFormEntityBase::getBundle
UserProfile::getEntity public function Get the Entity. Overrides FlexiformFormEntityBase::getEntity
UserProfile::getEntityType public function Get the entity type. Overrides FlexiformFormEntityBase::getEntityType
UserProfile::__construct public function Overrides \Drupal\Component\Plugin\PluginBase::__construct(). Overrides FlexiformFormEntityBase::__construct