2018-04-29 11:58:46 +00:00
< ? php
namespace Drupal\opencase_entities\Form ;
use Drupal\Core\Database\Connection ;
use Drupal\Core\Entity\EntityStorageInterface ;
use Drupal\Core\Form\ConfirmFormBase ;
use Drupal\Core\Form\FormStateInterface ;
use Drupal\Core\Url ;
use Symfony\Component\DependencyInjection\ContainerInterface ;
/**
* Provides a form for deleting a Activity revision .
*
* @ ingroup opencase_entities
*/
class OCActivityRevisionDeleteForm extends ConfirmFormBase {
/**
* The Activity revision .
*
* @ var \Drupal\opencase_entities\Entity\OCActivityInterface
*/
protected $revision ;
/**
* The Activity storage .
*
* @ var \Drupal\Core\Entity\EntityStorageInterface
*/
protected $OCActivityStorage ;
/**
* The database connection .
*
* @ var \Drupal\Core\Database\Connection
*/
protected $connection ;
/**
* Constructs a new OCActivityRevisionDeleteForm .
*
* @ param \Drupal\Core\Entity\EntityStorageInterface $entity_storage
* The entity storage .
* @ param \Drupal\Core\Database\Connection $connection
* The database connection .
*/
public function __construct ( EntityStorageInterface $entity_storage , Connection $connection ) {
$this -> OCActivityStorage = $entity_storage ;
$this -> connection = $connection ;
}
/**
* { @ inheritdoc }
*/
public static function create ( ContainerInterface $container ) {
$entity_manager = $container -> get ( 'entity.manager' );
return new static (
$entity_manager -> getStorage ( 'oc_activity' ),
$container -> get ( 'database' )
);
}
/**
* { @ inheritdoc }
*/
public function getFormId () {
return 'oc_activity_revision_delete_confirm' ;
}
/**
* { @ inheritdoc }
*/
public function getQuestion () {
return t ( 'Are you sure you want to delete the revision from %revision-date?' , [ '%revision-date' => format_date ( $this -> revision -> getRevisionCreationTime ())]);
}
/**
* { @ inheritdoc }
*/
public function getCancelUrl () {
return new Url ( 'entity.oc_activity.version_history' , [ 'oc_activity' => $this -> revision -> id ()]);
}
/**
* { @ inheritdoc }
*/
public function getConfirmText () {
return t ( 'Delete' );
}
/**
* { @ inheritdoc }
*/
public function buildForm ( array $form , FormStateInterface $form_state , $oc_activity_revision = NULL ) {
$this -> revision = $this -> OCActivityStorage -> loadRevision ( $oc_activity_revision );
$form = parent :: buildForm ( $form , $form_state );
return $form ;
}
/**
* { @ inheritdoc }
*/
public function submitForm ( array & $form , FormStateInterface $form_state ) {
$this -> OCActivityStorage -> deleteRevision ( $this -> revision -> getRevisionId ());
$this -> logger ( 'content' ) -> notice ( 'Activity: deleted %title revision %revision.' , [ '%title' => $this -> revision -> label (), '%revision' => $this -> revision -> getRevisionId ()]);
2021-11-27 15:19:16 +00:00
\Drupal :: messenger () -> addMessage ( t ( 'Revision from %revision-date of Activity %title has been deleted.' , [ '%revision-date' => format_date ( $this -> revision -> getRevisionCreationTime ()), '%title' => $this -> revision -> label ()]));
2018-04-29 11:58:46 +00:00
$form_state -> setRedirect (
'entity.oc_activity.canonical' ,
[ 'oc_activity' => $this -> revision -> id ()]
);
if ( $this -> connection -> query ( 'SELECT COUNT(DISTINCT vid) FROM {oc_activity_field_revision} WHERE id = :id' , [ ':id' => $this -> revision -> id ()]) -> fetchField () > 1 ) {
$form_state -> setRedirect (
'entity.oc_activity.version_history' ,
[ 'oc_activity' => $this -> revision -> id ()]
);
}
}
}