cancel booking
loading... X Player Players Unit Units
loading...
For how many players do you want to book?
Fill dynamically
Per Training
1 Player
X
How long do you want to play?
Fill dynamically
#1 | Max. #2 player(s) per unit
1 Unit
X
When do you want to play?
When do you want to play?
Fill dynamically
Month Name
loading...
XX NN.NN.
XX NN.NN.
NN:NN-NN:NN
Whoops! There was an error.
Whoops \ Exception \ ErrorException (E_WARNING)
array_merge(): Expected parameter 2 to be an array, string given Whoops\Exception\ErrorException thrown with message "array_merge(): Expected parameter 2 to be an array, string given" Stacktrace: #12 Whoops\Exception\ErrorException in /var/www/html/skillslab/content/plugins/skillslab-booking/Shop/CartController.php:68 #11 array_merge in /var/www/html/skillslab/content/plugins/skillslab-booking/Shop/CartController.php:68 #10 Skillslab\Shop\CartController:getCartHtml in /var/www/html/skillslab/content/themes/skillslab/includes/partials/cart.php:3 #9 include in /var/www/html/skillslab/content/themes/skillslab/class/src/Tools/Helper.php:10 #8 Probots\Tools\Helper:includePartial in /var/www/html/skillslab/content/themes/skillslab/class/functions/helpers.php:5 #7 loadPartial in /var/www/html/skillslab/content/themes/skillslab/header.php:61 #6 require_once in /var/www/html/skillslab/wp/wp-includes/template.php:723 #5 load_template in /var/www/html/skillslab/wp/wp-includes/template.php:672 #4 locate_template in /var/www/html/skillslab/wp/wp-includes/general-template.php:41 #3 get_header in /var/www/html/skillslab/content/themes/skillslab/custom-shop.php:6 #2 include in /var/www/html/skillslab/wp/wp-includes/template-loader.php:106 #1 require_once in /var/www/html/skillslab/wp/wp-blog-header.php:19 #0 require in /var/www/html/skillslab/index.php:17
Stack frames (13)
12
Whoops\Exception\ErrorException
/var/www/html/skillslab/content/plugins/skillslab-booking/Shop/CartController.php68
11
array_merge
/var/www/html/skillslab/content/plugins/skillslab-booking/Shop/CartController.php68
10
Skillslab\Shop\CartController getCartHtml
/var/www/html/skillslab/content/themes/skillslab/includes/partials/cart.php3
9
include
/var/www/html/skillslab/content/themes/skillslab/class/src/Tools/Helper.php10
8
Probots\Tools\Helper includePartial
/var/www/html/skillslab/content/themes/skillslab/class/functions/helpers.php5
7
loadPartial
/var/www/html/skillslab/content/themes/skillslab/header.php61
6
require_once
/var/www/html/skillslab/wp/wp-includes/template.php723
5
load_template
/var/www/html/skillslab/wp/wp-includes/template.php672
4
locate_template
/var/www/html/skillslab/wp/wp-includes/general-template.php41
3
get_header
/var/www/html/skillslab/content/themes/skillslab/custom-shop.php6
2
include
/var/www/html/skillslab/wp/wp-includes/template-loader.php106
1
require_once
/var/www/html/skillslab/wp/wp-blog-header.php19
0
require
/var/www/html/skillslab/index.php17
/var/www/html/skillslab/content/plugins/skillslab-booking/Shop/CartController.php
        $totalSum = $this->getTotals();
 
        $items = $this->getCartItems();
        $itemsHtmlData = [];
 
        /**
         * Group items per product.
         */
        foreach ($items as $item) {
            $renderer = $this->getCartItemRenderer($item);
            if (!isset($itemsHtmlData[$item['product_id']])) {
                $itemsHtmlData[$item['product_id']] = [
                    'type' => $renderer->getClassType(),
                    'head' => $renderer->renderHeader(),
                    'cards' => []
                ];
            }
            $itemsHtmlData[$item['product_id']]['cards'] = array_merge(
                $itemsHtmlData[$item['product_id']]['cards'],
                $renderer->renderCards()
            );
        }
 
        ob_start();
        loadPartial('cart/contentinner', [
            'itemsData' => $itemsHtmlData,
            'totalSumFloat' => $totalSum
        ]);
        $out = ob_get_clean();
        return $out;
    }
 
    private function getCartItemRenderer($item)
    {
        $product = wc_get_product($item['product_id']);
        $terms = get_the_terms($product->get_id(), 'product_cat');
        foreach ($terms as $term) {
            switch ($term->slug) {
                case 'training':
                    return new Renderer\TrainingRenderer($item);
Arguments
  1. "array_merge(): Expected parameter 2 to be an array, string given"
    
/var/www/html/skillslab/content/plugins/skillslab-booking/Shop/CartController.php
        $totalSum = $this->getTotals();
 
        $items = $this->getCartItems();
        $itemsHtmlData = [];
 
        /**
         * Group items per product.
         */
        foreach ($items as $item) {
            $renderer = $this->getCartItemRenderer($item);
            if (!isset($itemsHtmlData[$item['product_id']])) {
                $itemsHtmlData[$item['product_id']] = [
                    'type' => $renderer->getClassType(),
                    'head' => $renderer->renderHeader(),
                    'cards' => []
                ];
            }
            $itemsHtmlData[$item['product_id']]['cards'] = array_merge(
                $itemsHtmlData[$item['product_id']]['cards'],
                $renderer->renderCards()
            );
        }
 
        ob_start();
        loadPartial('cart/contentinner', [
            'itemsData' => $itemsHtmlData,
            'totalSumFloat' => $totalSum
        ]);
        $out = ob_get_clean();
        return $out;
    }
 
    private function getCartItemRenderer($item)
    {
        $product = wc_get_product($item['product_id']);
        $terms = get_the_terms($product->get_id(), 'product_cat');
        foreach ($terms as $term) {
            switch ($term->slug) {
                case 'training':
                    return new Renderer\TrainingRenderer($item);
Arguments
  1. []
    
  2. "<!-- Invalid Item Cards data -->"
    
/var/www/html/skillslab/content/themes/skillslab/includes/partials/cart.php
<?php
$cartController = new \Skillslab\Shop\CartController();
$cartContent = $cartController->getCartHtml();
$totalSum = $cartController->getTotals();
?>
<div class="cart-container js-cart-content">
<?= $cartContent ?>
</div>
 
 
/var/www/html/skillslab/content/themes/skillslab/class/src/Tools/Helper.php
<?php
namespace Probots\Tools;
 
class Helper
{
    public static function includePartial($file, $data = [])
    {
        extract($data);
        include sprintf(
      '%s/includes/partials/%s.php',
      get_template_directory(),
      $file
    );
    }
 
    public static function loadPartial($file, $data = [])
    {
        ob_start();
        extract($data);
        include sprintf(
      '%s/includes/partials/%s.php',
      get_template_directory(),
      $file
    );
        return ob_get_clean();
    }
 
    public static function includeBlock($file, $data = [])
    {
        extract($data);
        include sprintf(
      '%s/includes/blocks/%s.php',
      get_template_directory(),
      $file
    );
    }
 
    public static function getAssetUrl($name = '')
    {
        return sprintf('%s/assets/%s', get_template_directory_uri(), $name);
Arguments
  1. "/var/www/html/skillslab/content/themes/skillslab/includes/partials/cart.php"
    
/var/www/html/skillslab/content/themes/skillslab/class/functions/helpers.php
<?php
if (!function_exists('loadPartial')) {
    function loadPartial($name, $data = [])
    {
        \Probots\Tools\Helper::includePartial($name, $data);
    }
}
 
if (!function_exists('assetUrl')) {
    function assetUrl($name)
    {
        return \Probots\Tools\Helper::getAssetUrl($name);
    }
}
 
 
if (!function_exists('loadSvg')) {
    function loadSvg($name)
    {
        include(get_template_directory() . '/assets/' . $name . '.svg');
    }
}
 
if (!function_exists('loadLaser')) {
    function loadLaser($name)
    {
        include(get_template_directory() . '/assets/' . $name . '.svg');
        include(get_template_directory() . '/assets/' . $name . '.svg');
        include(get_template_directory() . '/assets/' . $name . '.svg');
        include(get_template_directory() . '/assets/' . $name . '.svg');
    }
}
 
if (!function_exists('clearPhoneNumber')) {
    function clearPhoneNumber($number)
    {
        $plus = preg_match('/^(\+)/', $number)?"+":"";
        $number = preg_replace('/[^0-9|\+]/', '', $number);
        $number = preg_replace('/(\+)([0-9]{2})(0)/', '${2}', $number);
        $number = preg_replace('/\|/', '', $number);
Arguments
  1. "cart"
    
  2. []
    
/var/www/html/skillslab/content/themes/skillslab/header.php
                                <?php pll_the_languages(['display_names_as' => 'slug']); ?>
                            </ul>
 
                            <div class="menu__trigger js-menu-open u-hidden@md">
                                <button class="js-hamburger hamburger hamburger--collapse " type="button">
                                    <span class="hamburger-box">
                                        <span class="hamburger-inner"></span>
                                    </span>
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
 
    </div>
    <div class="js-site site">
        <?= loadPartial('booking'); ?>
        <?= loadPartial('cart'); ?>
 
        <?php
        $newsPage_DE_ID = 18;
 
        if (get_post()) {
            if (get_post()->ID === pll_get_post($newsPage_DE_ID, pll_current_language())) {
                loadPartial('pagehead_news');
            }
        }
 
        ?>
 
 
 
 
Arguments
  1. "cart"
    
/var/www/html/skillslab/wp/wp-includes/template.php
 
    if ( is_array( $wp_query->query_vars ) ) {
        /*
         * This use of extract() cannot be removed. There are many possible ways that
         * templates could depend on variables that it creates existing, and no way to
         * detect and deprecate it.
         *
         * Passing the EXTR_SKIP flag is the safest option, ensuring globals and
         * function variables cannot be overwritten.
         */
        // phpcs:ignore WordPress.PHP.DontExtract.extract_extract
        extract( $wp_query->query_vars, EXTR_SKIP );
    }
 
    if ( isset( $s ) ) {
        $s = esc_attr( $s );
    }
 
    if ( $require_once ) {
        require_once $_template_file;
    } else {
        require $_template_file;
    }
}
 
Arguments
  1. "/var/www/html/skillslab/content/themes/skillslab/header.php"
    
/var/www/html/skillslab/wp/wp-includes/template.php
function locate_template( $template_names, $load = false, $require_once = true ) {
    $located = '';
    foreach ( (array) $template_names as $template_name ) {
        if ( ! $template_name ) {
            continue;
        }
        if ( file_exists( STYLESHEETPATH . '/' . $template_name ) ) {
            $located = STYLESHEETPATH . '/' . $template_name;
            break;
        } elseif ( file_exists( TEMPLATEPATH . '/' . $template_name ) ) {
            $located = TEMPLATEPATH . '/' . $template_name;
            break;
        } elseif ( file_exists( ABSPATH . WPINC . '/theme-compat/' . $template_name ) ) {
            $located = ABSPATH . WPINC . '/theme-compat/' . $template_name;
            break;
        }
    }
 
    if ( $load && '' != $located ) {
        load_template( $located, $require_once );
    }
 
    return $located;
}
 
/**
 * Require the template file with WordPress environment.
 *
 * The globals are set up for the template file to ensure that the WordPress
 * environment is available from within the function. The query variables are
 * also available.
 *
 * @since 1.5.0
 *
 * @global array      $posts
 * @global WP_Post    $post          Global post object.
 * @global bool       $wp_did_header
 * @global WP_Query   $wp_query      WordPress Query object.
 * @global WP_Rewrite $wp_rewrite    WordPress rewrite component.
 * @global wpdb       $wpdb          WordPress database abstraction object.
Arguments
  1. "/var/www/html/skillslab/content/themes/skillslab/header.php"
    
  2. true
    
/var/www/html/skillslab/wp/wp-includes/general-template.php
function get_header( $name = null ) {
    /**
     * Fires before the header template file is loaded.
     *
     * @since 2.1.0
     * @since 2.8.0 $name parameter added.
     *
     * @param string|null $name Name of the specific header file to use. null for the default header.
     */
    do_action( 'get_header', $name );
 
    $templates = array();
    $name      = (string) $name;
    if ( '' !== $name ) {
        $templates[] = "header-{$name}.php";
    }
 
    $templates[] = 'header.php';
 
    locate_template( $templates, true );
}
 
/**
 * Load footer template.
 *
 * Includes the footer template for a theme or if a name is specified then a
 * specialised footer will be included.
 *
 * For the parameter, if the file is called "footer-special.php" then specify
 * "special".
 *
 * @since 1.5.0
 *
 * @param string $name The name of the specialised footer.
 */
function get_footer( $name = null ) {
    /**
     * Fires before the footer template file is loaded.
     *
     * @since 2.1.0
Arguments
  1. array:1 [
      0 => "header.php"
    ]
    
  2. true
    
/var/www/html/skillslab/content/themes/skillslab/custom-shop.php
<?php
/*
 * Template Name: Shop: Grid
 * description: Custom Shop Template for Shop Page
 */
get_header();
 
echo do_shortcode('[products]');
 
get_footer();
 
/var/www/html/skillslab/wp/wp-includes/template-loader.php
            }
 
            break;
        }
    }
 
    if ( ! $template ) {
        $template = get_index_template();
    }
 
    /**
     * Filters the path of the current template before including it.
     *
     * @since 3.0.0
     *
     * @param string $template The path of the template to include.
     */
    $template = apply_filters( 'template_include', $template );
    if ( $template ) {
        include $template;
    } elseif ( current_user_can( 'switch_themes' ) ) {
        $theme = wp_get_theme();
        if ( $theme->errors() ) {
            wp_die( $theme->errors() );
        }
    }
    return;
}
 
Arguments
  1. "/var/www/html/skillslab/content/themes/skillslab/custom-shop.php"
    
/var/www/html/skillslab/wp/wp-blog-header.php
<?php
/**
 * Loads the WordPress environment and template.
 *
 * @package WordPress
 */
 
if ( ! isset( $wp_did_header ) ) {
 
    $wp_did_header = true;
 
    // Load the WordPress library.
    require_once __DIR__ . '/wp-load.php';
 
    // Set up the WordPress query.
    wp();
 
    // Load the theme template.
    require_once ABSPATH . WPINC . '/template-loader.php';
 
}
 
Arguments
  1. "/var/www/html/skillslab/wp/wp-includes/template-loader.php"
    
/var/www/html/skillslab/index.php
<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */
 
/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define('WP_USE_THEMES', true);
 
/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wp/wp-blog-header.php' );
Arguments
  1. "/var/www/html/skillslab/wp/wp-blog-header.php"
    

Environment & details:

Key Value
add-to-cart
"681"
empty
empty
empty
empty
Key Value
SERVER_SOFTWARE
"Apache/2.4.37 (centos) OpenSSL/1.1.1c"
REQUEST_URI
"/en/shop/?add-to-cart=681"
USER
"apache"
HOME
"/usr/share/httpd"
SCRIPT_NAME
"/index.php"
QUERY_STRING
"add-to-cart=681"
REQUEST_METHOD
"GET"
SERVER_PROTOCOL
"HTTP/1.1"
GATEWAY_INTERFACE
"CGI/1.1"
REDIRECT_QUERY_STRING
"add-to-cart=681"
REDIRECT_URL
"/en/shop/"
REMOTE_PORT
"48348"
SCRIPT_FILENAME
"/var/www/html/skillslab/index.php"
SERVER_ADMIN
"root@localhost"
CONTEXT_DOCUMENT_ROOT
"/var/www/html/skillslab"
CONTEXT_PREFIX
""
REQUEST_SCHEME
"https"
DOCUMENT_ROOT
"/var/www/html/skillslab"
REMOTE_ADDR
"54.236.59.154"
SERVER_PORT
"443"
SERVER_ADDR
"193.46.209.70"
SERVER_NAME
"skills-lab.com"
SERVER_SIGNATURE
""
PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
HTTP_CONNECTION
"Keep-Alive"
HTTP_HOST
"skills-lab.com"
HTTP_ACCEPT_ENCODING
"br,gzip"
HTTP_ACCEPT_LANGUAGE
"en-US,en;q=0.5"
HTTP_ACCEPT
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HTTP_USER_AGENT
"CCBot/2.0 (https://commoncrawl.org/faq/)"
proxy-nokeepalive
"1"
SSL_SESSION_RESUMED
"Resumed"
SSL_SESSION_ID
"e2c973f592046eb3c747b5f2e4208b588bd9a3cee289b94cb8e088a94488adc2"
SSL_SERVER_A_SIG
"sha256WithRSAEncryption"
SSL_SERVER_A_KEY
"rsaEncryption"
SSL_SERVER_I_DN
"CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB"
SSL_SERVER_S_DN
"CN=www.skills-lab.com,OU=COMODO SSL,OU=Domain Control Validated"
SSL_SERVER_V_END
"Sep 27 23:59:59 2020 GMT"
SSL_SERVER_V_START
"Sep 28 00:00:00 2017 GMT"
SSL_SERVER_M_SERIAL
"8EEA5F51E65031129373717E61534FBE"
SSL_SERVER_M_VERSION
"3"
SSL_CLIENT_VERIFY
"NONE"
SSL_CIPHER_ALGKEYSIZE
"128"
SSL_CIPHER_USEKEYSIZE
"128"
SSL_CIPHER_EXPORT
"false"
SSL_CIPHER
"ECDHE-RSA-AES128-GCM-SHA256"
SSL_COMPRESS_METHOD
"NULL"
SSL_SECURE_RENEG
"true"
SSL_PROTOCOL
"TLSv1.2"
SSL_VERSION_LIBRARY
"OpenSSL/1.1.1c"
SSL_VERSION_INTERFACE
"mod_ssl/2.4.37"
SSL_SERVER_SAN_DNS_1
"skills-lab.com"
SSL_SERVER_SAN_DNS_0
"www.skills-lab.com"
SSL_SERVER_I_DN_CN
"COMODO RSA Domain Validation Secure Server CA"
SSL_SERVER_I_DN_O
"COMODO CA Limited"
SSL_SERVER_I_DN_L
"Salford"
SSL_SERVER_I_DN_ST
"Greater Manchester"
SSL_SERVER_I_DN_C
"GB"
SSL_SERVER_S_DN_CN
"www.skills-lab.com"
SSL_SERVER_S_DN_OU_1
"COMODO SSL"
SSL_SERVER_S_DN_OU
"Domain Control Validated"
SSL_TLS_SNI
"skills-lab.com"
HTTPS
"on"
UNIQUE_ID
"XyunSt4C227B-m42O3j5awAAAAc"
REDIRECT_STATUS
"200"
REDIRECT_SSL_TLS_SNI
"skills-lab.com"
REDIRECT_HTTPS
"on"
REDIRECT_UNIQUE_ID
"XyunSt4C227B-m42O3j5awAAAAc"
FCGI_ROLE
"RESPONDER"
PHP_SELF
"/index.php"
REQUEST_TIME_FLOAT
1596696394.8322
REQUEST_TIME
1596696394
ENVIRONMENT
"production"
DEBUG
"false"
SSL
"true"
LIVE_RELOAD
"false"
DB_HOST
"localhost"
DB_PORT
"3306"
DB_NAME
"skills_lab"
DB_USER
"skillslab"
DB_PASSWORD
"XfrYhrAZef1"
WP_THEME_NAME
"skillslab"
WP_TABLE_PREFIX
"wp_"
WP_MEDIA_URL
"https://skills-lab.com/media"
SMTP_AUTH
"false"
SMTP_SECURE
"false"
SMTP_HOST
"postoffice.anton-paar.com"
SMTP_PORT
"25"
SMTP_USER
"false"
SMTP_PASS
"false"
SMTP_FROM_EMAIL
"noreply@skills-lab.com"
SMTP_FROM_NAME
"skills.lab"
TAGMANAGER
"GTM-PTKGWJR"
BUGHERD
"null"
GOOGLE_MAPS
"null"
Key Value
ENVIRONMENT
"production"
DEBUG
"false"
SSL
"true"
LIVE_RELOAD
"false"
DB_HOST
"localhost"
DB_PORT
"3306"
DB_NAME
"skills_lab"
DB_USER
"skillslab"
DB_PASSWORD
"XfrYhrAZef1"
WP_THEME_NAME
"skillslab"
WP_TABLE_PREFIX
"wp_"
WP_MEDIA_URL
"https://skills-lab.com/media"
SMTP_AUTH
"false"
SMTP_SECURE
"false"
SMTP_HOST
"postoffice.anton-paar.com"
SMTP_PORT
"25"
SMTP_USER
"false"
SMTP_PASS
"false"
SMTP_FROM_EMAIL
"noreply@skills-lab.com"
SMTP_FROM_NAME
"skills.lab"
TAGMANAGER
"GTM-PTKGWJR"
BUGHERD
"null"
GOOGLE_MAPS
"null"
0. Whoops\Handler\PrettyPageHandler