pino-8.x-1.2-no-core/modules/member/src/Form/MemberRevisionRevertForm.php
modules/member/src/Form/MemberRevisionRevertForm.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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | <?php namespace Drupal\member\Form; use Drupal\Core\Datetime\DateFormatterInterface; use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\Form\ConfirmFormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Url; use Drupal\member\Entity\MemberInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides a form for reverting a Member revision. * * @ingroup member */ class MemberRevisionRevertForm extends ConfirmFormBase { /** * The Member revision. * * @var \Drupal\member\Entity\MemberInterface */ protected $revision ; /** * The Member storage. * * @var \Drupal\Core\Entity\EntityStorageInterface */ protected $MemberStorage ; /** * The date formatter service. * * @var \Drupal\Core\Datetime\DateFormatterInterface */ protected $dateFormatter ; /** * Constructs a new MemberRevisionRevertForm. * * @param \Drupal\Core\Entity\EntityStorageInterface $entity_storage * The Member storage. * @param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter * The date formatter service. */ public function __construct(EntityStorageInterface $entity_storage , DateFormatterInterface $date_formatter ) { $this ->MemberStorage = $entity_storage ; $this ->dateFormatter = $date_formatter ; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container ) { return new static ( $container ->get( 'entity.manager' )->getStorage( 'member' ), $container ->get( 'date.formatter' ) ); } /** * {@inheritdoc} */ public function getFormId() { return 'member_revision_revert_confirm' ; } /** * {@inheritdoc} */ public function getQuestion() { return t( 'Are you sure you want to revert to the revision from %revision-date?' , [ '%revision-date' => $this ->dateFormatter->format( $this ->revision->getRevisionCreationTime())]); } /** * {@inheritdoc} */ public function getCancelUrl() { return new Url( 'entity.member.version_history' , [ 'member' => $this ->revision->id()]); } /** * {@inheritdoc} */ public function getConfirmText() { return t( 'Revert' ); } /** * {@inheritdoc} */ public function getDescription() { return '' ; } /** * {@inheritdoc} */ public function buildForm( array $form , FormStateInterface $form_state , $member_revision = NULL) { $this ->revision = $this ->MemberStorage->loadRevision( $member_revision ); $form = parent::buildForm( $form , $form_state ); return $form ; } /** * {@inheritdoc} */ public function submitForm( array & $form , FormStateInterface $form_state ) { // The revision timestamp will be updated when the revision is saved. Keep // the original one for the confirmation message. $original_revision_timestamp = $this ->revision->getRevisionCreationTime(); $this ->revision = $this ->prepareRevertedRevision( $this ->revision, $form_state ); $this ->revision->revision_log = t( 'Copy of the revision from %date.' , [ '%date' => $this ->dateFormatter->format( $original_revision_timestamp )]); $this ->revision->save(); $this ->logger( 'content' )->notice( 'Member: reverted %title revision %revision.' , [ '%title' => $this ->revision->label(), '%revision' => $this ->revision->getRevisionId()]); drupal_set_message(t( 'Member %title has been reverted to the revision from %revision-date.' , [ '%title' => $this ->revision->label(), '%revision-date' => $this ->dateFormatter->format( $original_revision_timestamp )])); $form_state ->setRedirect( 'entity.member.version_history' , [ 'member' => $this ->revision->id()] ); } /** * Prepares a revision to be reverted. * * @param \Drupal\member\Entity\MemberInterface $revision * The revision to be reverted. * @param \Drupal\Core\Form\FormStateInterface $form_state * The current state of the form. * * @return \Drupal\member\Entity\MemberInterface * The prepared revision ready to be stored. */ protected function prepareRevertedRevision(MemberInterface $revision , FormStateInterface $form_state ) { $revision ->setNewRevision(); $revision ->isDefaultRevision(TRUE); $revision ->setRevisionCreationTime(REQUEST_TIME); return $revision ; } } |