2018-04-29 11:58:46 +00:00
< ? php
namespace Drupal\opencase_entities\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\opencase_entities\Entity\OCActorInterface ;
use Symfony\Component\DependencyInjection\ContainerInterface ;
/**
* Provides a form for reverting a Actor revision .
*
* @ ingroup opencase_entities
*/
class OCActorRevisionRevertForm extends ConfirmFormBase {
/**
* The Actor revision .
*
* @ var \Drupal\opencase_entities\Entity\OCActorInterface
*/
protected $revision ;
/**
* The Actor storage .
*
* @ var \Drupal\Core\Entity\EntityStorageInterface
*/
protected $OCActorStorage ;
/**
* The date formatter service .
*
* @ var \Drupal\Core\Datetime\DateFormatterInterface
*/
protected $dateFormatter ;
/**
* Constructs a new OCActorRevisionRevertForm .
*
* @ param \Drupal\Core\Entity\EntityStorageInterface $entity_storage
* The Actor storage .
* @ param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter
* The date formatter service .
*/
public function __construct ( EntityStorageInterface $entity_storage , DateFormatterInterface $date_formatter ) {
$this -> OCActorStorage = $entity_storage ;
$this -> dateFormatter = $date_formatter ;
}
/**
* { @ inheritdoc }
*/
public static function create ( ContainerInterface $container ) {
return new static (
$container -> get ( 'entity.manager' ) -> getStorage ( 'oc_actor' ),
$container -> get ( 'date.formatter' )
);
}
/**
* { @ inheritdoc }
*/
public function getFormId () {
return 'oc_actor_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.oc_actor.version_history' , [ 'oc_actor' => $this -> revision -> id ()]);
}
/**
* { @ inheritdoc }
*/
public function getConfirmText () {
return t ( 'Revert' );
}
/**
* { @ inheritdoc }
*/
public function getDescription () {
return '' ;
}
/**
* { @ inheritdoc }
*/
public function buildForm ( array $form , FormStateInterface $form_state , $oc_actor_revision = NULL ) {
$this -> revision = $this -> OCActorStorage -> loadRevision ( $oc_actor_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 ( 'Actor: reverted %title revision %revision.' , [ '%title' => $this -> revision -> label (), '%revision' => $this -> revision -> getRevisionId ()]);
2021-11-27 15:19:16 +00:00
\Drupal :: messenger () -> addMessage ( t ( 'Actor %title has been reverted to the revision from %revision-date.' , [ '%title' => $this -> revision -> label (), '%revision-date' => $this -> dateFormatter -> format ( $original_revision_timestamp )]));
2018-04-29 11:58:46 +00:00
$form_state -> setRedirect (
'entity.oc_actor.version_history' ,
[ 'oc_actor' => $this -> revision -> id ()]
);
}
/**
* Prepares a revision to be reverted .
*
* @ param \Drupal\opencase_entities\Entity\OCActorInterface $revision
* The revision to be reverted .
* @ param \Drupal\Core\Form\FormStateInterface $form_state
* The current state of the form .
*
* @ return \Drupal\opencase_entities\Entity\OCActorInterface
* The prepared revision ready to be stored .
*/
protected function prepareRevertedRevision ( OCActorInterface $revision , FormStateInterface $form_state ) {
$revision -> setNewRevision ();
$revision -> isDefaultRevision ( TRUE );
$revision -> setRevisionCreationTime ( REQUEST_TIME );
return $revision ;
}
}