2018-04-29 11:58:46 +00:00
< ? php
2021-02-18 12:02:25 +00:00
namespace Drupal\opencase_cases\Form ;
2018-04-29 11:58:46 +00:00
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 Case revision .
*
2021-02-18 12:02:25 +00:00
* @ ingroup opencase_cases
2018-04-29 11:58:46 +00:00
*/
class OCCaseRevisionDeleteForm extends ConfirmFormBase {
/**
* The Case revision .
*
2021-02-18 12:02:25 +00:00
* @ var \Drupal\opencase_cases\Entity\OCCaseInterface
2018-04-29 11:58:46 +00:00
*/
protected $revision ;
/**
* The Case storage .
*
* @ var \Drupal\Core\Entity\EntityStorageInterface
*/
protected $OCCaseStorage ;
/**
* The database connection .
*
* @ var \Drupal\Core\Database\Connection
*/
protected $connection ;
/**
* Constructs a new OCCaseRevisionDeleteForm .
*
* @ 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 -> OCCaseStorage = $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_case' ),
$container -> get ( 'database' )
);
}
/**
* { @ inheritdoc }
*/
public function getFormId () {
return 'oc_case_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_case.version_history' , [ 'oc_case' => $this -> revision -> id ()]);
}
/**
* { @ inheritdoc }
*/
public function getConfirmText () {
return t ( 'Delete' );
}
/**
* { @ inheritdoc }
*/
public function buildForm ( array $form , FormStateInterface $form_state , $oc_case_revision = NULL ) {
$this -> revision = $this -> OCCaseStorage -> loadRevision ( $oc_case_revision );
$form = parent :: buildForm ( $form , $form_state );
return $form ;
}
/**
* { @ inheritdoc }
*/
public function submitForm ( array & $form , FormStateInterface $form_state ) {
$this -> OCCaseStorage -> deleteRevision ( $this -> revision -> getRevisionId ());
$this -> logger ( 'content' ) -> notice ( 'Case: deleted %title revision %revision.' , [ '%title' => $this -> revision -> label (), '%revision' => $this -> revision -> getRevisionId ()]);
drupal_set_message ( t ( 'Revision from %revision-date of Case %title has been deleted.' , [ '%revision-date' => format_date ( $this -> revision -> getRevisionCreationTime ()), '%title' => $this -> revision -> label ()]));
$form_state -> setRedirect (
'entity.oc_case.canonical' ,
[ 'oc_case' => $this -> revision -> id ()]
);
if ( $this -> connection -> query ( 'SELECT COUNT(DISTINCT vid) FROM {oc_case_field_revision} WHERE id = :id' , [ ':id' => $this -> revision -> id ()]) -> fetchField () > 1 ) {
$form_state -> setRedirect (
'entity.oc_case.version_history' ,
[ 'oc_case' => $this -> revision -> id ()]
);
}
}
}