pino-8.x-1.2-no-core/modules/member/src/Form/MemberRevisionRevertTranslationForm.php
modules/member/src/Form/MemberRevisionRevertTranslationForm.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | <?php namespace Drupal\member\Form; use Drupal\Core\Datetime\DateFormatterInterface; use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Language\LanguageManagerInterface; use Drupal\member\Entity\MemberInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides a form for reverting a Member revision for a single translation. * * @ingroup member */ class MemberRevisionRevertTranslationForm extends MemberRevisionRevertForm { /** * The language to be reverted. * * @var string */ protected $langcode ; /** * The language manager. * * @var \Drupal\Core\Language\LanguageManagerInterface */ protected $languageManager ; /** * Constructs a new MemberRevisionRevertTranslationForm. * * @param \Drupal\Core\Entity\EntityStorageInterface $entity_storage * The Member storage. * @param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter * The date formatter service. * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager * The language manager. */ public function __construct(EntityStorageInterface $entity_storage , DateFormatterInterface $date_formatter , LanguageManagerInterface $language_manager ) { parent::__construct( $entity_storage , $date_formatter ); $this ->languageManager = $language_manager ; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container ) { return new static ( $container ->get( 'entity.manager' )->getStorage( 'member' ), $container ->get( 'date.formatter' ), $container ->get( 'language_manager' ) ); } /** * {@inheritdoc} */ public function getFormId() { return 'member_revision_revert_translation_confirm' ; } /** * {@inheritdoc} */ public function getQuestion() { return t( 'Are you sure you want to revert @language translation to the revision from %revision-date?' , [ '@language' => $this ->languageManager->getLanguageName( $this ->langcode), '%revision-date' => $this ->dateFormatter->format( $this ->revision->getRevisionCreationTime())]); } /** * {@inheritdoc} */ public function buildForm( array $form , FormStateInterface $form_state , $member_revision = NULL, $langcode = NULL) { $this ->langcode = $langcode ; $form = parent::buildForm( $form , $form_state , $member_revision ); $form [ 'revert_untranslated_fields' ] = [ '#type' => 'checkbox' , '#title' => $this ->t( 'Revert content shared among translations' ), '#default_value' => FALSE, ]; return $form ; } /** * {@inheritdoc} */ protected function prepareRevertedRevision(MemberInterface $revision , FormStateInterface $form_state ) { $revert_untranslated_fields = $form_state ->getValue( 'revert_untranslated_fields' ); /** @var \Drupal\member\Entity\MemberInterface $default_revision */ $latest_revision = $this ->MemberStorage->load( $revision ->id()); $latest_revision_translation = $latest_revision ->getTranslation( $this ->langcode); $revision_translation = $revision ->getTranslation( $this ->langcode); foreach ( $latest_revision_translation ->getFieldDefinitions() as $field_name => $definition ) { if ( $definition ->isTranslatable() || $revert_untranslated_fields ) { $latest_revision_translation ->set( $field_name , $revision_translation ->get( $field_name )->getValue()); } } $latest_revision_translation ->setNewRevision(); $latest_revision_translation ->isDefaultRevision(TRUE); $revision ->setRevisionCreationTime(REQUEST_TIME); return $latest_revision_translation ; } } |