class DefaultController in Background Process 8
Same name in this branch
- 8 src/Controller/DefaultController.php \Drupal\background_process\Controller\DefaultController
- 8 background_batch/src/Controller/DefaultController.php \Drupal\background_batch\Controller\DefaultController
Implements Default controller for the background_process module.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\background_process\Controller\DefaultController
Expanded class hierarchy of DefaultController
File
- src/
Controller/ DefaultController.php, line 15
Namespace
Drupal\background_process\ControllerView source
class DefaultController extends ControllerBase {
/**
* Implements Background Process Service Access.
*/
public function backgroundProcessServiceAccess($handle, $token, AccountInterface $account) {
// Setup service.
ignore_user_abort(TRUE);
$handle = rawurldecode($handle);
$token = rawurldecode($token);
// Ensure no session!
unset($_SESSION);
$process = background_process_get_process($handle);
if (!$process) {
\Drupal::logger('bg_process')
->notice('Unknown process: %handle', [
'%handle' => $handle,
]);
return FALSE;
}
if ($token !== $process->token) {
\Drupal::logger('bg_process')
->notice('Invalid token: %token for handle: %handle', [
'%token' => $token,
'%handle' => $handle,
]);
return FALSE;
}
// Login as the user that requested the call.
$user = \Drupal::currentUser();
if ($process->uid) {
$load_user = \Drupal::entityManager()
->getStorage('user')
->load($process->uid);
if (!$load_user) {
// Invalid user!
\Drupal::logger('bg_process')
->notice('Invalid user: %uid for handle: %handle', [
'%uid' => $process->uid,
'%handle' => $handle,
]);
return FALSE;
}
$user = $load_user;
}
else {
$user = new AnonymousUserSession();
}
return AccessResult::allowedIf($account
->hasPermission(TRUE));
}
/**
* Implements Background Process Service Start.
*/
public function backgroundProcessServiceStart($handle, $return = FALSE) {
header("Content-Type: text/plain");
// Clean up the mess the menu-router system leaves behind.
$cid = 'menu_item:' . hash('sha256', $_GET['q']);
drupal_register_shutdown_function('_background_process_cleanup_menu', $cid);
// Setup service.
ignore_user_abort(TRUE);
@set_time_limit(\Drupal::config('background_process.settings')
->get('background_process_service_timeout'));
$handle = rawurldecode($handle);
return background_process_service_execute($handle, $return);
}
/**
* Implements Background Process Service Unlock.
*/
public function backgroundProcessServiceUnlock($handle) {
$handle = rawurldecode($handle);
if (background_process_unlock($handle)) {
drupal_set_message($this
->t('Process %handle unlocked', [
'%handle' => $handle,
]));
}
else {
drupal_set_message($this
->t('Process %handle could not be unlocked', [
'%handle' => $handle,
]), 'error');
}
return new RedirectResponse('/admin/config/system/background-process/overview');
}
/**
* Implements to Check Token.
*/
public function backgroundProcessCheckToken() {
header("Content-Type: text/plain");
print \Drupal::config('background_process.settings')
->get('background_process_token');
exit;
}
/**
* Implements Background Process Overview Page.
*/
public function backgroundProcessOverviewPage() {
$processes = background_process_get_processes();
$data = [];
global $base_url;
foreach ($processes as $process) {
$progress = progress_get_progress($process->handle);
$url = Url::fromUri($base_url . '/background-process/unlock/' . rawurlencode($process->handle));
$external_link = \Drupal::l($this
->t('Unlock'), $url);
if ($process->callback[1] != '') {
$process->callback = $process->callback[1];
}
$data[] = [
$process->handle,
_background_process_callback_name($process->callback),
$process->uid,
$process->service_host,
\Drupal::service('date.formatter')
->format((int) $process->start, 'custom', 'Y-m-d H:i:s'),
$progress ? sprintf("%.02f%%", $progress->progress * 100) : $this
->t('N/A'),
$external_link,
[
'attributes' => [
'class' => 'button-unlock',
],
'query' => \Drupal::service('redirect.destination')
->getAsArray(),
],
];
}
$header = [
'Handle',
'Callback',
'User',
'Host',
'Start time',
'Progress',
'Unlock',
];
// The table description.
$markup = [
'#type' => 'table',
'#header' => $header,
'#rows' => $data,
];
return $markup;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
public static | function |
Instantiates a new instance of this class. Overrides ContainerInjectionInterface:: |
40 |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
DefaultController:: |
public | function | Implements to Check Token. | |
DefaultController:: |
public | function | Implements Background Process Overview Page. | |
DefaultController:: |
public | function | Implements Background Process Service Access. | |
DefaultController:: |
public | function | Implements Background Process Service Start. | |
DefaultController:: |
public | function | Implements Background Process Service Unlock. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |