diff -r 07239de796bb -r e756a8c72c3d cms/drupal/includes/batch.inc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cms/drupal/includes/batch.inc Fri Sep 08 12:04:06 2017 +0200
@@ -0,0 +1,539 @@
+ $id,
+ ':token' => drupal_get_token($id),
+ ))->fetchField();
+ if ($batch) {
+ return unserialize($batch);
+ }
+ return FALSE;
+}
+
+/**
+ * Renders the batch processing page based on the current state of the batch.
+ *
+ * @see _batch_shutdown()
+ */
+function _batch_page() {
+ $batch = &batch_get();
+
+ if (!isset($_REQUEST['id'])) {
+ return FALSE;
+ }
+
+ // Retrieve the current state of the batch.
+ if (!$batch) {
+ $batch = batch_load($_REQUEST['id']);
+ if (!$batch) {
+ drupal_set_message(t('No active batch.'), 'error');
+ drupal_goto();
+ }
+ }
+
+ // Register database update for the end of processing.
+ drupal_register_shutdown_function('_batch_shutdown');
+
+ // Add batch-specific CSS.
+ foreach ($batch['sets'] as $batch_set) {
+ if (isset($batch_set['css'])) {
+ foreach ($batch_set['css'] as $css) {
+ drupal_add_css($css);
+ }
+ }
+ }
+
+ $op = isset($_REQUEST['op']) ? $_REQUEST['op'] : '';
+ $output = NULL;
+ switch ($op) {
+ case 'start':
+ $output = _batch_start();
+ break;
+
+ case 'do':
+ // JavaScript-based progress page callback.
+ _batch_do();
+ break;
+
+ case 'do_nojs':
+ // Non-JavaScript-based progress page.
+ $output = _batch_progress_page_nojs();
+ break;
+
+ case 'finished':
+ $output = _batch_finished();
+ break;
+ }
+
+ return $output;
+}
+
+/**
+ * Initializes the batch processing.
+ *
+ * JavaScript-enabled clients are identified by the 'has_js' cookie set in
+ * drupal.js. If no JavaScript-enabled page has been visited during the current
+ * user's browser session, the non-JavaScript version is returned.
+ */
+function _batch_start() {
+ if (isset($_COOKIE['has_js']) && $_COOKIE['has_js']) {
+ return _batch_progress_page_js();
+ }
+ else {
+ return _batch_progress_page_nojs();
+ }
+}
+
+/**
+ * Outputs a batch processing page with JavaScript support.
+ *
+ * This initializes the batch and error messages. Note that in JavaScript-based
+ * processing, the batch processing page is displayed only once and updated via
+ * AHAH requests, so only the first batch set gets to define the page title.
+ * Titles specified by subsequent batch sets are not displayed.
+ *
+ * @see batch_set()
+ * @see _batch_do()
+ */
+function _batch_progress_page_js() {
+ $batch = batch_get();
+
+ $current_set = _batch_current_set();
+ drupal_set_title($current_set['title'], PASS_THROUGH);
+
+ // Merge required query parameters for batch processing into those provided by
+ // batch_set() or hook_batch_alter().
+ $batch['url_options']['query']['id'] = $batch['id'];
+
+ $js_setting = array(
+ 'batch' => array(
+ 'errorMessage' => $current_set['error_message'] . '
' . $batch['error_message'],
+ 'initMessage' => $current_set['init_message'],
+ 'uri' => url($batch['url'], $batch['url_options']),
+ ),
+ );
+ drupal_add_js($js_setting, 'setting');
+ drupal_add_library('system', 'drupal.batch');
+
+ return '