webmaster@1: array('id' => $batch['id'])));
webmaster@1: $js_setting = array(
webmaster@1: 'batch' => array(
webmaster@1: 'errorMessage' => $current_set['error_message'] .'
'. $batch['error_message'],
webmaster@1: 'initMessage' => $current_set['init_message'],
webmaster@1: 'uri' => $url,
webmaster@1: ),
webmaster@1: );
webmaster@1: drupal_add_js($js_setting, 'setting');
webmaster@1: drupal_add_js('misc/batch.js', 'core', 'header', FALSE, FALSE);
webmaster@1:
webmaster@1: $output = '
';
webmaster@1: return $output;
webmaster@1: }
webmaster@1:
webmaster@1: /**
webmaster@1: * Do one pass of execution and inform back the browser about progression
webmaster@1: * (used for JavaScript-mode only).
webmaster@1: */
webmaster@1: function _batch_do() {
webmaster@1: // HTTP POST required
webmaster@1: if ($_SERVER['REQUEST_METHOD'] != 'POST') {
webmaster@1: drupal_set_message(t('HTTP POST is required.'), 'error');
webmaster@1: drupal_set_title(t('Error'));
webmaster@1: return '';
webmaster@1: }
webmaster@1:
webmaster@1: // Perform actual processing.
webmaster@1: list($percentage, $message) = _batch_process();
webmaster@1:
webmaster@1: drupal_json(array('status' => TRUE, 'percentage' => $percentage, 'message' => $message));
webmaster@1: }
webmaster@1:
webmaster@1: /**
webmaster@1: * Batch processing page without JavaScript support.
webmaster@1: */
webmaster@1: function _batch_progress_page_nojs() {
webmaster@1: $batch =& batch_get();
webmaster@1: $current_set = _batch_current_set();
webmaster@1:
webmaster@1: drupal_set_title($current_set['title']);
webmaster@1:
webmaster@1: $new_op = 'do_nojs';
webmaster@1:
webmaster@1: if (!isset($batch['running'])) {
webmaster@1: // This is the first page so we return some output immediately.
webmaster@1: $percentage = 0;
webmaster@1: $message = $current_set['init_message'];
webmaster@1: $batch['running'] = TRUE;
webmaster@1: }
webmaster@1: else {
webmaster@1: // This is one of the later requests: do some processing first.
webmaster@1:
webmaster@1: // Error handling: if PHP dies due to a fatal error (e.g. non-existant
webmaster@1: // function), it will output whatever is in the output buffer,
webmaster@1: // followed by the error message.
webmaster@1: ob_start();
webmaster@1: $fallback = $current_set['error_message'] .'
'. $batch['error_message'];
webmaster@1: $fallback = theme('maintenance_page', $fallback, FALSE, FALSE);
webmaster@1:
webmaster@1: // We strip the end of the page using a marker in the template, so any
webmaster@1: // additional HTML output by PHP shows up inside the page rather than
webmaster@1: // below it. While this causes invalid HTML, the same would be true if
webmaster@1: // we didn't, as content is not allowed to appear after