Unhandled Error!

Undefined index: HTTP_REFERER

Document /modules/shopproductbooking/controllers/booking.php
Document type PHP document
Line 163
Exception class Phpr_PhpException

Code Highlight

        $bookingDomain = Phpr::$config->get("BOOKING_FORM_DOMAIN",
            "booking." . str_replace("www.", "", $_SERVER['HTTP_HOST'])
        );
        if($dev = Phpr::$request->getField('dev_domain')) {
            $bookingDomain = str_replace("booking", "booking-$dev", $bookingDomain);
        }
        elseif(preg_match('/(?<=dev_domain=)[a-z]+/', $_SERVER['HTTP_REFERER'], $matches)) {
            $bookingDomain = str_replace("booking", "booking-{$matches[0]}", $bookingDomain);
        }
        return $bookingDomain;
    }
 
	public function getRemoteBookingForm() {
# Call Stack Code Document Line
32 ProductBookingController::getBookingDomain(()) /modules/shopproductbooking/controllers/booking.php 88
31 ProductBookingController::getRemoteProductDetails(array(1) [0 => '999978']) /modules/shopproductbooking/controllers/booking.php 44
30 ProductBookingController::getProductDetails(array(7) [0 => '010345', 1 => '010350', 2 => '010355', 3 => '010360', 4 => '010365', 5 => '010370', 6 => '999978']) /modules/shopproductbooking/classes/shopproductbooking_module.php 58
29 ShopProductBooking_Module->after_product_fetch(object(Shop_Product))
28 call_user_func_array(array(2) [0 => object(ShopProductBooking_Module), 1 => 'after_product_fetch'], array(1) [0 => object(Shop_Product)]) /phproad/system/class_functions.php 18
27 callFunction(array(2) [0 => object(ShopProductBooking_Module), 1 => 'after_product_fetch'], array(1) [0 => object(Shop_Product)]) /phproad/modules/phpr/classes/phpr_events.php 79
26 Phpr_Events->fire_event(array(1) [name => 'shop:onAfterProductRecordFetch'], object(Shop_Product))
25 call_user_func_array(array(2) [0 => object(Phpr_Events), 1 => 'fire_event'], array(2) [0 => array(1), 1 => object(Shop_Product)]) /phproad/system/class_functions.php 18
24 callFunction(array(2) [0 => object(Phpr_Events), 1 => 'fire_event'], array(2) [0 => array(1), 1 => object(Shop_Product)]) /phproad/modules/phpr/classes/phpr_events.php 153
23 Phpr_Events->fireEvent('shop:onAfterProductRecordFetch', object(Shop_Product))
22 call_user_func_array(array(2) [0 => object(Phpr_Events), 1 => 'fireEvent'], array(2) [0 => 'shop:onAfterProductRecordFetch', 1 => object(Shop_Product)]) /phproad/modules/phpr/classes/phpr_extensible.php 159
21 Phpr_Extensible->__call('fireEvent', array(2) [0 => 'shop:onAfterProductRecordFetch', 1 => object(Shop_Product)]) /modules/shop/models/shop_product.php 1861
20 Backend_Events->fireEvent('shop:onAfterProductRecordFetch', object(Shop_Product)) /modules/shop/models/shop_product.php 1861
19 Shop_Product->after_fetch(()) /phproad/modules/db/classes/db_activerecord.php 444
18 Db_ActiveRecord->_find_fill(array(16) [0 => array(138), 1 => array(138), 2 => array(138), 3 => array(138), 4 => array(138), 5 => array(138), 6 => array(138), 7 => array(138), 8 => array(138), 9 => array(138), 10 => array(138), 11 => array(138), 12 => array(138), 13 => array(138), 14 => array(138), 15 => array(138)], null) /phproad/modules/db/classes/db_activerecord.php 540
17 Db_ActiveRecord->find_all_internal(null, array(0), null) /phproad/modules/db/classes/db_activerecord.php 559
16 Db_ActiveRecord->find_all(()) /modules/cms/classes/cms_controller.php(383) : eval()'d code 12
15 eval(()) /modules/cms/classes/cms_controller.php 383
14 Cms_Controller->evalWithException('?><!-- view:shop:product_list_diy_trade_21_2_row --> <!-- <?php if( isset($paginate) && $paginate ) { $page_index = isset($page_index) ? $page_index-1 : 0; $records_per_page = isset($records_per_page) ? $records_per_page : 48; $pagination = $products->paginate($page_index, $records_per_page); } else { $pagination = null; } $products = $products instanceof Db_ActiveRecord ? $products->find_all() : $products; ?> --> <?php $foundit = 0 ; foreach ($products as $product){ if($product->x_bookpay <= 1 or $product->x_bookpay >= 200){ $foundit = 1 ; } } if(empty($foundit)) return ; ?> <?php $i=1 ; $showEvery = 3 ; foreach ($products as $product): ?> <?php if($product->x_bookpay <= 1 or $product->x_bookpay >= 200): ?> <?php if( is_int(($i-1) / $showEvery) && $i >1 ): ?> <!-- start promo --> <div style="margin-bottom: 2em;" class="hide-for-small category-promo"> <div class="twelve columns" style="height: 100%; background-color: #fff; margin-bottom: 3em; padding:1.5em 1.5em 0;"> <!--<?php $this->render_partial('category_reviews_21'); ?>--> <?php $this->render_partial('category_reviews_tp'); ?> </div> </div> <!-- end promo --> <?php endif ?> <div style="margin-bottom: 2em;" class="product-list-item"> <? if($i == 1): ?> <div class="" style="display: inline-block; border: 1px solid #002B41; background: #002B41; color: #fff; padding: 0.5em 0.5em 0.2em 0.5em; font-size: 1.6em; text-transform: uppercase; font-weight: bold">Most Popular</div> <? endif; ?> <? if (strpos($product->name, 'Package') !== false): ?> <div class="" style="display: inline-block; border: 1px solid #00b67A; background: #00b67A; color: #fff; padding: 0.5em 0.5em 0.2em 0.5em; font-size: 1.6em; font-weight: bold; text-transform: uppercase;">Package Deal</div> <? endif; ?> <div class="twelve columns" style="<?php echo ($i == 1) ? 'border: 0.4em solid #002B41 !important;' : ''; ?> <? if (strpos($product->name, 'Package') !== false): ?>border: 0.2em solid #00b67A !important;<? endif; ?> height: 100%; margin-bottom: 2em; padding:1.5em 1.5em 0; min-height: 280px;"> <?php $this->render_partial('product_card_image', array('product' => $product)); ?> <?php $this->render_partial('product_card_header', array('product' => $product)); ?> <div class="four mobile-four columns"> <?php $days1Multiplier = 0.6; $days7Multiplier = 1; $percentages = $product->om('x_remote_percentages'); if($percentages && !empty($percentages['days_1'])) { $days1Multiplier = $percentages['days_1']/100; } if($percentages && !empty($percentages['days_7'])) { $days7Multiplier = $percentages['days_7']/100; } ?> <div class="product-mobile"> <?php $this->render_partial('product_card_banners', array('product' => $product)); ?> <div class="catbul"><?php echo $product->x_bullets; ?></div> </div> <div class="row desc"> <div class="twelve mobile-four columns product-price-wrap"> <? if (strpos($product->name, 'Skip Hire') !== false): ?> <span class="price">from </span><span class="price"> POA</span> <? else: ?> <span class="price">from </span><span class="price"> <? if ($product->x_weekly_only != 1): ?> <?php echo format_currency($product->om('x_remote_sale_price')*$days1Multiplier); ?> <? else: ?> <?php echo format_currency($product->om('x_remote_sale_price')*$days7Multiplier); ?> <? endif; ?> </span> <? endif; ?> </div> </div> <div class="twelve mobile-four columns ticks"> <p style="font-size: 1.1em; margin: 1em 0;">&nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;DIY &amp; Trade<br class="hide-for-small"/> <?php if($product->om('is_on_sale')): ?> &nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;<span style="color: #c8102e">Save <?php $sale_price_or_discount = $product->om('x_remote_discount') ?: $product->om('sale_price_or_discount'); if(strpos($sale_price_or_discount, '%')) { echo round($sale_price_or_discount); echo "&#37;"; } else { echo format_currency(ltrim($sale_price_or_discount, '-')); } ?></span><br/> <?php endif; ?> <?php if($product->om('x_remote_booking_delay') >= 7): ?> <span class="hide-for-small">&nbsp;<i class="fas fa-arrow-trend-down" style="color: #00b67A;"></i>&nbsp;&nbsp;Low Availability</span> <?php else: ?> <span class="hide-for-small">&nbsp;<i class="fas fa-check" style="color: #00b67A;"></i>&nbsp;&nbsp;Best Availability</span> <?php endif ?> <?php if(Phpr::$config->get('TEST_EXTRA_API_FIELDS', false) && $product->om('x_has_insurance')): ?> <span class="hide-for-small">&nbsp;<i class="fas fa-shield" style="color: #00b67A;"></i>&nbsp;&nbsp;Insurance Available</span> <?php endif ?> <?php if(Phpr::$config->get('TEST_EXTRA_API_FIELDS', false) && $product->om('x_deposit_amount')): ?> <span class="hide-for-small">&nbsp;<i class="fas fa-money-bill-transfer" style="color: #00b67A;"></i>&nbsp;&nbsp;Deposit <?= format_currency($product->om('x_deposit_amount')) ?> (Refundable)</span> <?php endif ?> <?php if(Phpr::$config->get('TEST_EXTRA_API_FIELDS', false) && $product->om('x_requires_id')): ?> <span class="hide-for-small">&nbsp;<i class="fas fa-id-card" style="color: #00b67A;"></i>&nbsp;&nbsp;Online ID Verification Required</span> <?php endif ?> </p> </div> <? $productUrl = $product->page_url('/product') . '/'; if(!$product->has_om_records()) { $productUrl .= (strpos($productUrl, '?') ? '&' : '?') . 'booking_modal_show=1'; } ?> <div class="row"> <!--<div class="twelve mobile-four columns"> <a href="<?php echo $productUrl ?>" title="Book &amp; Pay Online" class="button expand quotebutton"><i class="fas fa-calendar-alt"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="twelve mobile-four columns"> <a href="<?php echo $product->page_url('/product'); ?>/" data-gtm="Button: Book & Pay Online (C)" title="Book &amp; Pay Online" class="button expand quotebutton"><i class="fas fa-calendar-alt"></i>&nbsp; Book &amp; Pay Online</a> </div> <div class="twelve mobile-four columns"> <a href="<?php echo $product->page_url('/product'); ?>/" data-gtm="Button: Product Detail (C)" title="More Information" class="button expand quotebutton-alt">Product Detail</a> </div>--> <div class="twelve mobile-four columns"> <a href="<?php echo $product->page_url('/product'); ?>/" data-gtm="Button: Details & Booking (C)" title="Details &amp; Booking" class="button expand quotebutton"><i class="fas fa-calendar-alt"></i>&nbsp;&nbsp; Details &nbsp;&amp;&nbsp; Booking</a> </div> </div> <div class="row"> <div class="twelve columns" style="text-align: center; padding-top: 1em; color: #808080;"> <p class='product-list-free-delivery'> <?php if($product->om('x_allow_delivery') > 0 && $product->om('x_min_delivery_charge') > 0) { echo "<i class='fas fa-truck fa-fw' style='padding-right: 1em'></i>&nbsp; <span style='font-weight: 700;'>Low Cost</span> National Delivery"; } elseif ($product->om('x_allow_delivery') > 0 && $product->om('x_min_delivery_charge') < 1) { echo "<i class='fas fa-truck fa-fw' style='padding-right: 1em'></i>&nbsp; <span style='font-weight: 700;'>FREE</span> Delivery: Nationwide"; } ?> <?php $collectionSitesCount = $product->om('x_collection_available_from'); if($collectionSitesCount > 0) { echo "<br/><i class='fas fa-map-marker-alt'></i>&nbsp;&nbsp;Click & Collect: <span style='font-weight: 700;'>$collectionSitesCount</span> Locations"; } ?> </p> </div> </div> </div> </div> </div> <?php /* <?php else: ?> <!--<div style="margin-bottom: 2em;"> <div class="twelve columns" style="height: 100%; border: 1px solid #404040; margin-bottom: 2em; padding:1.5em 1.5em 0;"> . </div> </div>--> <?php endif; ?> */ ?> <?php $i++; ?> <?php endif; ?> <?php endforeach; ?> <?php if(!isset($hideCatProductSchema)): ?> <?php $this->render_partial('category_product_schema', array('products' => $products)); ?> <?php endif; ?> ', 'CMS partial', 'shop:product_list_diy_trade_21_2_row', array(6) [products => object(Shop_Product), class => 'four mobile-four', records_per_page => '80', paginate => '1', pagination_base_url => '/category/ladder-hire', page_index => 'ladder-hire']) /modules/cms/classes/cms_controller.php 1020
13 Cms_Controller->render_partial('shop:product_list_diy_trade_21_2_row', array(6) [products => object(Shop_Product), class => 'four mobile-four', records_per_page => '80', paginate => '1', pagination_base_url => '/category/ladder-hire', page_index => 'ladder-hire'], array(4) [cache => '1', cache_vary_by => array(1), cache_versions => array(1), cache_ttl => '86400']) /modules/cms/classes/cms_controller.php(383) : eval()'d code 214
12 eval(()) /modules/cms/classes/cms_controller.php 383
11 Cms_Controller->evalWithException('?><section class="content" style="padding:0px;"> <section class="category <?php echo $category->url_name; ?>"> <div class="row"> <!--<div class="two columns"> <? foreach ($category->images as $image): ?> <img src="<?= $image->getThumbnailPath(400, 400) ?>"/> <? endforeach ?> </div>--> <div class="twelve columns"> <div id="category-page"> <? if ($category): $subcategories = $category->list_children('front_end_sort_order'); $has_subcategories = $subcategories->count; $has_products = $category->eval_num_of_products(); ?> <? if ($category): ?> <?php $this->render_partial('category_breadcrumb'); ?> <? endif ?> <h1><em><?php if(!empty($category->title)): ?><?= $category->title ?><?php else: ?><?= $category->name ?><?php endif; ?></em></h1> <? if ($category->short_description): ?> <div class="description"> <p class="description" style="font-size: 1.1em;"><?= ($category->short_description) ?></p> </div> <? endif ?> <?php $this->render_partial('free_delivery_cat'); ?> <? if ($has_subcategories): ?> <ul class="product-list"> <? $i=0 ; $showEvery = 4 ; foreach ($subcategories as $subcategory): ?> <?php if( is_int(($i-0) / $showEvery) && $i >0 ): ?> <? $this->render_partial('random_usp_drama') ?> <?php endif ?> <li class="<?php echo isset($class) ? $class : 'four'; ?> columns catcol" style="height: 100%;"> <div class="images" style="border: 0.1em solid #404040; margin: 0.5em; text-align: center; padding: 1em;"> <div class="desc"> <h2 style="font-size: 1.5em;"> <? if(!empty($subcategory->x_catfalse)): ?> <a href="<?= $subcategory->x_catfalse ?>" data-gtm="SubCat Name (C)" title="<?= h($subcategory->name) ?>" class="product-list"><?= h($subcategory->name) ?></a> <? else: ?> <a href="<?= $subcategory->page_url('category') ?>/" data-gtm="SubCat Name (C)" title="<?= h($subcategory->name) ?>" class="product-list"><?= h($subcategory->name) ?></a> <? endif ?> </h2> <div> <? if(!empty($subcategory->x_catfalse)): ?> <a href="<?= $subcategory->x_catfalse ?>" data-gtm="SubCat Image (C)" title="<?= h($subcategory->name) ?>" class="product-list" style="padding: 1em 0;"> <? else: ?> <a href="<?= $subcategory->page_url('category') ?>/" data-gtm="SubCat Image (C)" title="<?= h($subcategory->name) ?>" class="product-list" style="padding: 1em 0;"> <? endif ?> <img class="primary" style="display: block; margin-left: auto; margin-right: auto;" src="<?= $subcategory->image_url(0, 260, 'auto') ?>" title="<?= h($subcategory->name) ?>" width="260" height="260" alt="<?= h($subcategory->name) ?>" loading="eager" max-width="100%" max-height="100%"/> </a> </div> <div class="row"> <div class="twelve columns"> <p class="hide-for-small" style="padding: 0 1em;"><?= ($subcategory->x_catcontext) ?></p> <? if(!empty($subcategory->x_catfalse)): ?> <a href="<?= $subcategory->x_catfalse ?>" data-gtm="Button: View the Range (C)" title="View the Range" class="button expand quotebutton">View the Range</a> <? else: ?> <a href="<?= $subcategory->page_url('category') ?>/" data-gtm="Button: View the Range (C)" title="View the Range" class="button expand quotebutton">View the Range</a> <? endif ?> </div> </div> </li> <?php $i++; ?> <? endforeach ?> </ul> <? endif ?> </div> </div> </div> </section> <? if ($has_subcategories): ?> <? if ($category->description): ?> <section class="category-description"> <div class="row"> <div class="twelve columns"> <div class="description"> <p class="description"> <?= ($category->description) ?> <? if(strpos($_SERVER['REQUEST_URI'], 'power-and-lighting-hire') !== false):?> <?php $this->render_partial('dlink_power_lighting'); ?> <? elseif(strpos($_SERVER['REQUEST_URI'], 'plant-hire') !== false):?> <?php $this->render_partial('dlink_plant'); ?> <? elseif(strpos($_SERVER['REQUEST_URI'], 'powered-access-hire') !== false):?> <?php $this->render_partial('dlink_powered_access'); ?> <? elseif(strpos($_SERVER['REQUEST_URI'], 'cleaning-equipment-hire') !== false):?> <?php $this->render_partial('dlink_cleaning'); ?> <? elseif(strpos($_SERVER['REQUEST_URI'], 'access-equipment-hire') !== false):?> <?php $this->render_partial('dlink_access'); ?> <? elseif(strpos($_SERVER['REQUEST_URI'], 'lifting-equipment-hire') !== false):?> <?php $this->render_partial('dlink_lifting'); ?> <? elseif(strpos($_SERVER['REQUEST_URI'], 'climate-control-hire') !== false):?> <?php $this->render_partial('dlink_climate'); ?> <? elseif(strpos($_SERVER['REQUEST_URI'], 'garden-tool-hire') !== false):?> <?php $this->render_partial('dlink_gardening'); ?> <? elseif(strpos($_SERVER['REQUEST_URI'], 'building') !== false):?> <?php $this->render_partial('dlink_building'); ?> <? endif ?> </p> <p class="description"><?php $this->render_partial('category_qa'); ?></p> </div> </div> </div> </section> <? endif ?> <? if(!empty($category->x_popular_group)): ?> <hr /> <section class="productslatest" style="background-color: #ffffff; margin-bottom: 1em;"> <div class="row"> <div class="twelve columns"> <h2>Popular <?php echo $category->name; ?> Products</h2> <?php $group = Shop_CustomGroup::create()->find_by_code($category->x_popular_group); if($group): ?> <?php $this->render_partial('shop:product_list_popular_products', array( 'products' => $group->list_products() ), array( 'cache'=>true, 'cache_vary_by'=>array('url'), 'cache_versions'=>array('catalog'), 'cache_ttl'=>86400 )); ?> <?php endif; ?> </div> </div> </section> <? endif ?> <? endif ?> <!--<div id="category-products"> <? $this->render_partial('shop:categories') ?> </div>--> <? if (!$has_subcategories && !$has_products): ?> <p>This category does not contain any products or subcategories.</p> <p><a href="<?= root_url('/')?>" title="Return to the home page">Return to the home page</a></p> <? endif ?> <? else: ?> <h1>Category not found</h1> <p>Sorry, the specified category cannot be found.</p> <p><a href="<?= root_url('/')?>" title="Return to the home page">Return to the home page</a></p> <? endif ?> </div> <div class="clearfix"></div> </div> </div> </section> </section> <? if (!$has_subcategories && $has_products): ?> <section class="content category-products"> <section class="category <?php echo $category->url_name; ?>"> <div class="row"> <div class="nine columns"> <div class="product-list-diy-trade"> <?php $this->render_partial('shop:product_list_diy_trade_21_2_row', array( 'products' => $category->list_products(array('sorting'=>array('price desc'))), 'class' => 'four mobile-four', 'records_per_page' => 80, 'paginate'=> true, 'pagination_base_url' => $category->page_url('/category'), 'page_index' => $this->request_param(-1, 0) ), array( 'cache'=>true, 'cache_vary_by'=>array('url'), 'cache_versions'=>array('catalog'), 'cache_ttl'=>86400 )); ?> </div> <div id="product_list" class="product-list-trade-only"> <?php $this->render_partial('shop:product_list_trade_only_21_2_row', array( 'products' => $category->list_products(array('sorting'=>array('price desc'))), 'class' => 'three mobile-two', 'records_per_page' => 80, 'paginate'=> true, 'pagination_base_url' => $category->page_url('/category'), 'page_index' => $this->request_param(-1, 0) ), array( 'cache'=>true, 'cache_vary_by'=>array('url'), 'cache_versions'=>array('catalog'), 'cache_ttl'=>86400 )); ?> </div> <div class="product-list-training"> <!--<div id="product_list">--> <?php $this->render_partial('shop:product_list_training_21_2_row', array( 'products' => $category->list_products(array('sorting'=>array('price desc'))), 'class' => 'three mobile-two', 'records_per_page' => 80, 'paginate'=> true, 'pagination_base_url' => $category->page_url('/category'), 'page_index' => $this->request_param(-1, 0) ), array( 'cache'=>true, 'cache_vary_by'=>array('url'), 'cache_versions'=>array('catalog'), 'cache_ttl'=>86400 )); ?> <!--</div>--> </div> <div class="product-list-sale" id="product_list"> <?php $this->render_partial('shop:product_list_for_sale', array( 'products' => $category->list_products(array('sorting'=>array('price desc'))), 'class' => 'three mobile-two', 'records_per_page' => 80, 'paginate'=> true, 'pagination_base_url' => $category->page_url('/category'), 'page_index' => $this->request_param(-1, 0) ), array( 'cache'=>true, 'cache_vary_by'=>array('url'), 'cache_versions'=>array('catalog'), 'cache_ttl'=>86400 )); ?> </div> <? if ($category->description): ?> <!--<p class="description"><?= ($category->description) ?></p>--> <div class="description"> <?= $category->description ?> <?php $this->render_partial('category_qa'); ?> </div> <? endif ?> <!--<p class="description"><?= ($category->description) ?></p>--> </div> <div class="three columns" style="position: -webkit-sticky; /* Safari */ position: sticky; top: 1rem;"> <?php $this->render_partial('call_free') ?> <div class="twelve columns random-usp"> <?php $this->render_partial('random_usp') ?> </div> <div class="twelve columns random-blog"> <?php $this->render_partial('random_blog') ?> </div> </div> </div> </section> </section> <? endif ?> <?= $this->render_partial('white_diesel_modal') ?> <?= $this->render_partial('insurance_modal') ?>', 'CMS page', 'Extension & Stepladder Hire') /modules/cms/classes/cms_controller.php 608
10 Cms_Controller->eval_page_content(()) /modules/cms/classes/cms_controller.php 198
9 Cms_Controller->open(object(Cms_Page), array(1) [0 => 'ladder-hire']) /controllers/application.php 72
8 Application->On404(())
7 call_user_func_array(array(2) [0 => object(Application), 1 => 'On404'], array(0)) /phproad/modules/phpr/classes/phpr_controller.php 170
6 Phpr_Controller->executeAction('On404', array(0)) /phproad/modules/phpr/classes/phpr_controller.php 84
5 Phpr_Controller->_run('On404', array(0)) /phproad/modules/phpr/classes/phpr_response.php 64
4 Phpr_Response->open404(()) /phproad/modules/phpr/classes/phpr_response.php 37
3 Phpr_Response->open('/category/ladder-hire') /phproad/system/phproad.php 31
2 include('/var/www/vhosts/nationaltoolhireshops.co.uk/httpdocs/phproad/system/phproad.php') /boot.php 114
1 require_once('/var/www/vhosts/nationaltoolhireshops.co.uk/httpdocs/boot.php') /index.php 23