Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
CRAP | |
0.00% |
0 / 37 |
BatchStorage | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
56 | |
0.00% |
0 / 37 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
load | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 10 |
|||
delete | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
update | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
cleanup | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 10 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\Batch\BatchStorage. | |
*/ | |
namespace Drupal\Core\Batch; | |
use Drupal\Core\Database\Connection; | |
use Symfony\Component\HttpFoundation\Session\SessionInterface; | |
use Drupal\Core\Access\CsrfTokenGenerator; | |
class BatchStorage implements BatchStorageInterface { | |
/** | |
* The database connection. | |
* | |
* @var \Drupal\Core\Database\Connection | |
*/ | |
protected $connection; | |
/** | |
* The session. | |
* | |
* @var \Symfony\Component\HttpFoundation\Session\SessionInterface | |
*/ | |
protected $session; | |
/** | |
* The CSRF token generator. | |
* | |
* @var \Drupal\Core\Access\CsrfTokenGenerator | |
*/ | |
protected $csrfToken; | |
/** | |
* Constructs the database batch storage service. | |
* | |
* @param \Drupal\Core\Database\Connection $connection | |
* The database connection. | |
* @param \Symfony\Component\HttpFoundation\Session\SessionInterface $session | |
* The session. | |
* @param \Drupal\Core\Access\CsrfTokenGenerator $csrf_token | |
* The CSRF token generator. | |
*/ | |
public function __construct(Connection $connection, SessionInterface $session, CsrfTokenGenerator $csrf_token) { | |
$this->connection = $connection; | |
$this->session = $session; | |
$this->csrfToken = $csrf_token; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function load($id) { | |
// Ensure that a session is started before using the CSRF token generator. | |
$this->session->start(); | |
$batch = $this->connection->query("SELECT batch FROM {batch} WHERE bid = :bid AND token = :token", array( | |
':bid' => $id, | |
':token' => $this->csrfToken->get($id), | |
))->fetchField(); | |
if ($batch) { | |
return unserialize($batch); | |
} | |
return FALSE; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function delete($id) { | |
$this->connection->delete('batch') | |
->condition('bid', $id) | |
->execute(); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function update(array $batch) { | |
$this->connection->update('batch') | |
->fields(array('batch' => serialize($batch))) | |
->condition('bid', $batch['id']) | |
->execute(); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function cleanup() { | |
// Cleanup the batch table and the queue for failed batches. | |
$this->connection->delete('batch') | |
->condition('timestamp', REQUEST_TIME - 864000, '<') | |
->execute(); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function create(array $batch) { | |
// Ensure that a session is started before using the CSRF token generator. | |
$this->session->start(); | |
$this->connection->insert('batch') | |
->fields(array( | |
'bid' => $batch['id'], | |
'timestamp' => REQUEST_TIME, | |
'token' => $this->csrfToken->get($batch['id']), | |
'batch' => serialize($batch), | |
)) | |
->execute(); | |
} | |
} |