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 => 'Sensei-carpet-cleaner']) /modules/shopproductbooking/controllers/booking.php 44
30 ProductBookingController::getProductDetails(array(1) [0 => 'Sensei-carpet-cleaner']) /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(6) [0 => array(138), 1 => array(138), 2 => array(138), 3 => array(138), 4 => array(138), 5 => 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 20
15 eval(()) /modules/cms/classes/cms_controller.php 383
14 Cms_Controller->evalWithException('?><? $string = $_SERVER["REQUEST_URI"] ; $string = strtok($string, '?'); $placename = array_reverse(explode('/', trim($string, '/'))); $placename = ucwords(htmlentities($placename[0])); ?> <!-- view:shop:product_list_diy_trade_21_2_row_dynamics --> <!-- <?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"> <div class="twelve columns" style="height: 100%; border: 1px solid #404040; margin-bottom: 2em; padding:1.5em 1.5em 0;"> </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.2em 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, 'placename' => $placename)); ?> <?php $this->render_partial('product_card_header', array('product' => $product)); ?> <div class="four mobile-four columns"> <?php $days1Multiplier = 0.6; $percentages = $product->om('x_remote_percentages'); if($percentages && !empty($percentages['days_1'])) { $days1Multiplier = $percentages['days_1']/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">Our Price From: </span><span class="price"> POA</span> <? else: ?> <span class="price">Our 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')); ?> <? 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: #eb121a">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 "<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; ?>', 'CMS partial', 'shop:product_list_diy_trade_21_2_row_dynamics', array(1) [products => object(Shop_Product)]) /modules/cms/classes/cms_controller.php 1020
13 Cms_Controller->render_partial('shop:product_list_diy_trade_21_2_row_dynamics', array(1) [products => object(Shop_Product)]) /modules/cms/classes/cms_controller.php(383) : eval()'d code 85
12 eval(()) /modules/cms/classes/cms_controller.php 383
11 Cms_Controller->evalWithException('?><? $string = $_SERVER["REQUEST_URI"] ; $patterns = array(); $patterns[0] = '/carpet-cleaner-hire/'; $patterns[1] = '/-/'; $patterns[2] = '/\//'; $replacements = array(); $replacements[0] = ''; $replacements[1] = '-'; $replacements[2] = ''; $placename = ucwords(htmlentities( preg_replace($patterns, $replacements, $string))); $headers = array( "Carpet Cleaner Hire $placename", "Hire Carpet Cleaners $placename", "Carpet Cleaners For Hire $placename", "Carpet Cleaners To Hire $placename", "Hiring Carpet Cleaners $placename", "Carpet Cleaning Hire $placename", "Carpet Cleaners Near $placename" ); $headerKey = array_rand($headers); $header = $headers[$headerKey]; $descriptions = array( "If you are looking for carpet cleaner hire in $placename, National Tool Hire Shops is your best option! We offer Karcher Puzzi carpet cleaners for hire at great rates, including 1 day, 2-day, weekend and weekly hires. We also offer FREE delivery! Book online or over the phone.", "If you are looking for carpet cleaner hire in $placename, we can help! We offer Karcher carpet cleaners for hire at great rates with FREE delivery! These machines give your carpets a deep & effective clean, removing deep seated dirt, dust, grime and bacteria. Book online or over the phone – it’s quick and easy!", "We have carpet cleaner hire in $placename available at great rates and with FREE delivery! Our Karcher carpet cleaners allow you to give your carpets a deep and effective clean, removing dirt, dust, stains, allergens & more. Book online or over the phone for fast delivery to your door.", "Looking for carpet cleaner hire in $placename? We have Karcher carpet cleaning machines available for hire with FREE delivery! These easy-to-use machines help to remove deep-seated dirt, dust, grime, stains and bacteria from your carpets, making them feel softer, fresher and prolonging the life of your carpets. Book online or over the phone quickly & easily.", "Carpet cleaner hire in $placename is easy with National Tool Hire. Our Karcher carpet cleaners are easy to use and allow you to give your carpets a deep and effective clean. Our hire rates are extremely competitive, and, unlike most hire companies, we offer FREE delivery! Book your carpet cleaner hire online or over the phone quickly and easily.", "Looking for carpet cleaner rental in $placename? We have Karcher carpet cleaners available at great rates – from 1 day to 2 days, a weekend, a week or more – and with FREE delivery! These machines give your carpets a deep and effective clean, removing deep-seated dirt, making them feel softer and giving them a new lease of life. Book online or over the phone quickly and easily.", "We have carpet cleaner rental in $placename available at great rates and with FREE delivery! Our Karcher carpet cleaning machines offer a deep and effective clean, to remove deep-seated dirt, stains, grime, allergens and bacteria. You can rent a carpet cleaner for 1 day, 2 days, a weekend, a week or more! Simply book online or over the phone!", "Looking to rent a carpet cleaner in $placename? We have Karcher carpet cleaner hire available at great rates – from 1 day to 2 days, a weekend, a week or more – and with FREE delivery! These machines give your carpets a deep and effective clean, removing deep-seated dirt, making them feel softer and giving them a new lease of life. Book online or over the phone.", "If you are looking for a cheap and effective way of washing your carpets, we offer cheap carpet cleaner hire in $placename! Our Karcher carpet cleaners offer a deep and effective clean, to remove dirt, grime, stains, bacteria and more. Our carpet washer hire rates are extremely competitive and we offer FREE delivery! Book online or over the phone.", "Looking for cheap carpet cleaner hire in $placename? We can help! We offer Karcher carpet cleaners for hire at great rates and with free delivery! These machines are easy to use and offer a deep and effective clean, removing deep-seated dirt, stains, allergens, and bacteria. You can book online or over the phone for 1 day, 2 days, a weekend, a week or more!", "We have cheap carpet cleaner hire available in $placename. Our Karcher carpet cleaning machines offer a deep and effective clean, to remove deep-seated dirt, dust, stains, allergens, bacteria and more, leaving your carpets looking and feeling fresh. You can book everything you need quickly and easily online or over the phone. Our hire rates are extremely competitive, and we offer FREE delivery!", "If you are looking to rent a carpet cleaning machine in $placename, we can help! National Tool Hire offers Karcher carpet cleaners for rent at great rates and with FREE delivery! These machines are easy to use and allow you to remove deep-seated dirt, grime, stains, allergens and bacteria from your carpets, for a fresher and softer feel, and a healthier home. You can book online or over the phone and collect from your nearest store or we can deliver to you.", "We have carpet cleaning machine hire available in $placename – simply book online or over the phone and collect from store or we can deliver and collect the machine for FREE! Our Karcher carpet cleaning machines are easy to use and offer a deep and effective clean. They leave your carpets looking, feeling and smelling fresh and clean, and they prolong the life of your carpets. We can supply everything you need, including carpet shampoo. Book online or over the phone quickly and easily!", "Carpet cleaner hire in $placename is easy with National Tool Hire. Our Karcher carpet cleaning machines are easy to use and allow you to give your carpets a deep and effective clean. They remove deep-seated dirt, dust, stains, allergens and bacteria that vacuuming alone fails to deal with. Using a carpet cleaner to wash your carpets leaves them feeling softer and smelling fresher. It also helps to prolong the life of your carpets! Our hire rates are extremely competitive, and, unlike most hire companies, we offer FREE delivery! Book your carpet cleaner hire online or over the phone quickly and easily. We supply everything you need, including carpet shampoo!", "If you are looking for Karcher carpet cleaner hire in $placename, National Tool Hire can help! We offer Karcher carpet cleaning machines for hire at great rates, with FREE delivery! These machines give your carpets a deep & effective clean, removing deep seated dirt, dust, grime and bacteria. After a carpet clean, your carpets will be left feeling softer and smelling fresher. Cleaning your carpets with a carpet cleaning machine also helps to prolong the life of your carpets! Book a hire online or over the phone quickly and easily. We can often deliver next day!", "Cleaning your carpets once or twice per year with a carpet cleaning machine helps to remove deep-seated dirt and grime from your carpets that vacuuming alone can’t achieve. Carpet cleaning machines use water, carpet shampoo and a vacuum to leave your carpets feeling softer and smelling fresher. They improve the health of your home and prolong the life of your carpets. You can book a carpet cleaner hire in $placename simply online or over the phone. You can collect the machine from your nearest store, or we can deliver to you!", "Looking for carpet washer rental in $placename? We have Karcher carpet cleaning machines available for hire at great rates – from 1 day to 2 days, a weekend, a week or more – and with FREE delivery! Our Karcher carpet washers are easy to use and give your carpets a deep and effective clean, removing deep-seated dirt, making them feel softer and giving them a new lease of life. You can book a carpet cleaner hire online or over the phone quickly and easily. We can often even deliver next day!", "Looking to rent a carpet cleaning machine in $placename? We have carpet cleaner rental available at great rates and with FREE delivery! Our Karcher carpet cleaning machines offer a deep and effective clean, to remove deep-seated dirt, stains, grime, allergens and bacteria. They leave your carpets feeling fresher and softer and help to prolong the life of the carpet. You can rent a carpet cleaner for 1 day, 2 days, a weekend, a week or more! Simply book online or over the phone. We can often deliver next day!", "We have carpet washer hire in $placename available at great rates and with FREE delivery! Our Karcher carpet cleaning machines give your carpets a deep and effective clean, removing deep-seated dirt, dust, stains, allergens & more. Book online or over the phone for fast delivery to your door.", "If you need cheap carpet cleaner hire in $placename – we can help! Our Karcher carpet cleaning machines give your carpets a deep and effective clean. You can book a hire for 1 day, 2 days, a weekend, a week or more and our hire rates are extremely competitive. You can book online or over the phone quickly and easily, and we can often even deliver next day!", ); $descriptionKey = array_rand($descriptions); $description = $descriptions[$descriptionKey]; ?> <section id="category-page" class="content category" style="z-index: 999; position:relative; padding-bottom: 0px;"> <div class="row"> <div class="twelve columns"> <div class="cat-breadcrumbs"> <a href="/">Home</a> &nbsp;>&nbsp; <?php echo "<a href='/tool-hire/$placename/' aria-label='Tool Hire $placename'>Tool Hire $placename</a>" ?> &nbsp;>&nbsp; <?php echo "Carpet Cleaner Hire $placename" ?> </div> </div> <div class="twelve columns"> <h1><?php echo $header; ?></h1> </div> </div> <div class="row"> <div class="twelve columns" style="margin-bottom: 2em;"> <p> <?php echo $description; ?> </p> </div> <?php $this->render_partial('free_delivery_dynamic'); ?> </div> </section> <section class="category"> <div class="row"> <div class="nine columns"> <?php $group = Shop_CustomGroup::create()->find_by_code('dynamic_carpet_cleaners'); if($group): ?> <?php $this->render_partial('shop:product_list_diy_trade_21_2_row_dynamics', array( 'products' => $group->list_products() )); ?> <?php endif; ?> </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> <p class="footerbanner" style="padding: 10px 5px; background-color: #c8102e; margin-bottom: 2em; margin-top: 0"> <? $num = Rand (1,5); switch ($num) { case 1: echo '<a class="footerbanner-link" href="/price-match/"><em class="fa fa-tag fa-lg"></em>&nbsp; &nbsp; <span style="font-weight: bold;">Carpet Cleaner Hire:</span> Price Match Promise</a></p>'; break; case 2: echo '<a class="footerbanner-link" href="/tool-hire-guide/"><em class="fa fa-info-circle fa-lg"></em>&nbsp; &nbsp; <span style="font-weight: bold;">DIY &amp; Trade:</span> Carpet Cleaner Hire</a></p>'; break; case 3: echo '<a class="footerbanner-link" href="/tool-hire-guide/"><em class="fa fa-calendar fa-lg"></em>&nbsp; &nbsp; <span style="font-weight: bold;">Cheap Weekly Hire Rates</span></a></p>'; break; case 4: echo '<a class="footerbanner-link" href="/free-delivery/"><em class="fa fa-hand-pointer-o fa-lg"></em>&nbsp; &nbsp; <span style="font-weight: bold;">Collect from Store</span> - or - <span style="font-weight: bold;">Delivered to Door</span>&nbsp; &nbsp; <em class="fa fa-truck fa-lg"></em></a></p>'; break; case 5: echo '<a class="footerbanner-link" href="/free-delivery/"><em class="fa fa-hand-pointer-o fa-lg"></em>&nbsp; &nbsp; <span style="font-weight: bold;">Click &amp Collect</span> - or - <span style="font-weight: bold;">Free Delivery</span>&nbsp; &nbsp; <em class="fa fa-truck fa-lg"></em></a></p>'; } ?> </p> <?php $reviews = array( "Thank you!|Needed a decent carpet cleaner after moving into our new home and I was not disapapointed! Thank you carpets feel brand new|Lesley R", "Fresh Carpets|My carpets have never smelt so fresh I can't believe the difference, so easy to use as well|Norma Hughes", "Amazing Results|After looking evrywhere for a decent carpet cleaner to hire in $placename im so glad I found this one|Jacqui Madigan", "Carpets Feel Brand New|A friend suggested I hire a carpet cleaner to get rid of the smell of smoke from my home- I was not disappointed house smells so fresh|Mrs Finnigan", "Wow!|Wow just wow - amazing results I vacuum daily but did not realise just how dirty my carpets were underneath - thanks guys!|L. Panaretou", "Brilliant|Brilliant results could not believe the difference afterwards. Best around in $placename and great value for money|Charlie McLaghlan", "Squeaky Clean|Needed this after my two dogs destroyed our downtairs carpets could not believe the difference it made my house has never felt so clean|Eve J", "Tennant Help|I was looking everywhere for a decent carpet cleaner when moving out of my flat thanks to this my flat was spotless on moving day |Kayleigh Owens", "Thanks Guys|Thanks so much to the driver who quickly ran over instructions on how to use this kit I was finished in no time |Leah Devine", "Spotless!|My carpets were covered in stains from previous owners thanks to this carpet cleaner I now have the cleanest carpets in $placename|Amy Davies", "Great Carpet Cleaner|I needed a carpet cleaner for our B&B this took a little over a few hours to finish every room very pleased with the end result |Jonny O", "Fantastic Value|Fantastic value for money, I thought my carpets were a gonner but this has saved me a fortune not a stain in sight|Ben Davidson", "Carpet Cleaner|I can't believe the difference in my carpets, I wish I had taken before & after pictures! Amazing results thank you|Kathy Hill", "Good Quality|Won't find better value for money in $placename thank you good quality good service|Faye Russell", "Time Saver|We have a big house so the idea of cleaning every carpet was daunting however this took half the time expected thanks to this kit|Lyndsey Everett", "As Good As New|My boys often walk their mucky shoes all over my carpets thanks to this cleaner now my carpets are as good as new again|Jane Ambrose", "Easy To Use|After watching a quick video on youtube I was amazed at how easy this carpet cleaner was to use thank you!|Rachel Fitchett", "Happy Customer|I run a cleaning company in $placename thanks to this kit my clients are very happy with the end results|M. Cavanagh", "Dog mess nomore!!|Mess on the carpet after the dog, after hiring this the carpet is clean, fresh & soft|Jess", "OMG!|After I spilt wine on the carpet I was sure id have to get brand new, this cleaner saved me a fortune!|Trina Lewis", "Happy wife, happy life|My wife went out, I hired this from $placename and she came back ecstatic thinking they were new|A.Jackson", "Brilliant|My sons muddy shoes from football caused me to hire this, job well done & would hire again|Tom", "Sourced well|lighter than expected and the colour difference in the carpet after is great, perfect hire!|Malcolm", "Clean to the max|I have $placename cleanest carpet after this hire, the shampoo also smelt amazing|Trish Lucan", "Reommended|Hire took place same day & got rid of all the mess the grandkids made, so fluffy!!|Kerry Cadd", "Stairs|After having builders in, my stairs were flat and discoloured - this machine made them brand new!!|J.Bell", "going down a treat|I needed a machine that had a long hose, when I found this one in $placename I was ecstatic with results|Barbara Jones", "Carpet cleaner|after using this cleaner in my home you wouldn’t know I had 3 cats, clean smooth & efficient|Holly", "Bonus points|Ive had so many complimemts from family after this hire, machine was quick and easy to use|Amelia Trainer", "Stain remover more like|hired from &placename loosened all the stains in the carpet then removed them, happy chap |Jack Dawson", "perfect|I hired this its got the stain out that’s been there for months, so happy with the product!|Gary", "Read this!|LOOK NO FURTHER - perfect tool to get rid of stains & pet hairs, my carpet is white again!!|Ruby", "complete|mesmerised at the result I cant believe the softness of this after the hire in $placename|Kim", "Workouts nomore|It was a workout trying to clean it myself, after using this my carpets look brand new|Heather Roberts", "better than new|I cleaned my carpets for the first time, my girlfriend thought they was new also smelt so nice|Sheamus", "unbelievable|Carpet looks brand new and was dry within the hour, Brilliant machine hired from $placename|J.", "Carpet Cleaner|Decided to treat the wife to fully cleaned carpets when she came back off holiday. She thought they were brand new! Amazing company.|Kieran", "Carpet machine|Had a look locally in $placename but to be honest nothing topped the kit I received on national tool hire. Not in qaulity or price, great combo!|Olivia T", "Karcher cleaner|I expected clean carpets, the standard completely blew me out the water! It was like having them laid for the first time again! I will hire again.|Darla S", "Carpet washer|Moved into a new house, to keep it simple the carpets were distusting and we could not afford new ones. Hiring this machine solved this problem. |Rob", "Karcher Puzzi|I used to get real bad anxiety over having house guests as my carpets were older and not the best. Now I am having guests round weekly! Thanks NTH.|Grace D", "Last minute clean|I was leaving my flat and needed a cleaner near $placename urgently. After scrambling I found this company. Superb, got my depsoit back!|Toni K", "Fresh and clean|Really impressed with kit. I moved in and the previous owner smoked and owned dogs. The smell wasnt nice. Safe to say this unit obliterated the stench!|Millie.", "Mums house|I offered to clean my Mums carpets for her. She now expects me back each week with my \"magic machine\". Really super work from this kit. |Mike", "Finally!|I have searched high and low over the years for a company that offers both great service and great kit. I only wish I found you guys sooner. |Sam", "Kids Party|This is the number one tool to combat the destruction after math of a kids party. Sick, sweets and sodas all vanquished by this kit, awesome.|M P", "Cleaner |I have been hiring this over and over for all of my cleaning jobs, I would never stray now. Not only is this super but the service is equally as great.|Gem", "Easy to get|Ive used cleaners from local depots, nothing matches this kit and its free delivery in $placename is even better bonus, saves me collecting!|Dan", "Rug cleaner|Never used or heard of this machine before now. I will never forget it from now on, recommended to so many already and not one bad bit of feedback.|Marg", "Fluffy and new|A small price to pay for what seems to be practically new carpet. Now that I know you operate in $placename I will never look elsewhere!|Sherry", "Karcher model|I looked at purchasing this machine in the past and rates are very high. So I decided to rent, brilliant. Super clean carpets for a fraction of the cost!|Jp", "Perfection|Had the in laws over at the weekend and they could not stop complimenting the fresh and fluffy feel of our clean carpet on their feet. Thanks team. |Meg", "Cleanest carpet!|I made a huge mistake hiring this for only 24 hours! I have one room that is absolutly outstanding. Ive already placed another order for the other rooms. |Tim Barrow", "Tough dirt|My cleaner had packed in a few years ago and I couldnt find a suitable replacment in $placename now I am a regular always getting the same super cleaner!|Marg", "Perfect|Hired to freshen up the house, carpets looks great now. Clean & fresh, will use again in the future. |Adam Driver", "Good as new|Easy to use, no trouble booking in the cleaner. Team were helpful and kit was like new. |Tom Kirby", "Will use again|Booked a carpet cleaner for delivery to $placename. Carpets have come up like new. |Steven Yung", "good |Light and easy to use, carpets have come up 2 shades lighter. Professional service at a great price. |Sue Addy", "Carpet looks like new|Used on the carpets in my new house instead of replacing, saved so much money! |Carol Merton", "Stain gone|Quick delivery to $placename. Made light work of spilt wine - super happy with the result. |Stef Whalley", "Simple|Light & easy to manouvre. Clean fresh carpets for Spring, would recommend. |Rheannon Punt", "Wonderful |The team were wonderful, super helpful and easy to reach. Great carpet cleaner at a really good price. |Isabel Formby", "Super Clean|Hired for my elderly parents in $placename. They found it easy to use and were really pleased with the results. |Rory Wonder", "Fantastic Job|Amazing result! Everyone thought I'd had new carpets fitted!|Pat Jamie", "Carpet Cleaner|Hired to clean the hallway carpet. Good cleaner, would recommend. |James Carr", "Fabulous|Hired a wet & dry vacum cleaner for home in $placename. Couldn’t be more impressed!|Oliver Hart", "Really Happy|Omg! Like new, can't believe it. Team were professional & friendly, couldn’t fault. |Jo Dart", "WOW|Carpets have never looked so bright. Will be using National Tool Hire again. |Eileen Ormond", "Carpet just like new |Hired a carpet cleaner package after a house party in $placename. Great value - deep clean!|Wendy Portman", "Marvellous|Perfect for dog owners wanting to freshen up the home instead of replacing the carpet. |Rose Carter", "Good job|Simple to operate and turn on & off. Delivery & collection was good. No hassle. |Olive Tander", "Pleased with result|Hired a carpet cleaner for house inbetween tennants in $placename. Will use again for a quick clean. |Vicky Taylor", "Bad Leak|Hired from depot in $placename Washing machine leaked, so glad this was available, this machine has saved my carpet|L Littler", "Carpet Washer|Great machine, it has revived the carpet and left them near enough dry, will be hiring again.|Claire Tussingham", "Party Mishap|Hired in $placename Who got clumsy with the wine, party mishap got it straight out. |C Gedman", "Carpet Cleaner|Lifts the stains out and all the grime could not believe how dirty may carpets where!|Damien L", "Full Marks|In $placename one of the best carpet cleaners I have ever used, my consider investing its that good.|Bobby boy 78", "Great Carpet Cleaner|Cracking machine for right up ton the skirting boards, carpet look and smell great.|Danny's Cleaners", "Cleaner|Deep down cleaning the carpet was lovely after, and the guy were a great help, thank you.|Lydia Sydney", "Carpet Cleaner|The carpets are restored, amazing machine and so powerful.|L Pennington", "Split the milk|From depot in $placename Clean and fluffy, will not be crying over split milk anymore.|R Woodly", "Car Cleaning|Have 2 beautiful boys but the mess in the car after footy Arhh, the hand held attachment amazing!!|Mrs SP Tolbet", "Carpet Cleaner|Hugo's hair gets everwhere, this not only cleaned removed the smell and the pet hair, did not 1know my carpet where this colour.|Miss Simm", "Brighter than Bright|Hired in $placename White Carpets and kids do not mix, but this cleaner did the job highly recommended|Kelly Hodge", "Cleaner Hire|Thanks NTH, great carpet cleaner have done all the rooms, sofa, stairs and car, the value for mony is untrue.|Leah Gilbert", "Carpet Cleaner|Hire from $placename Good Tank size, and easy to use, will be using this hire company again.|G. Williams", "Leaking|Had a little leak when we got back from holiday, thanks to this carpet cleaner we have not had to replace the carpet I am extemely happy.|Gill Needham", "Cleaner Hire|So easy to use and the result is amazing, moved to a new house an the carpet was not up to much, but can now take time to replace thank to this cleaner.|Mrs J Morton", "Really Recommended|This cleaner has even managed to get that really dirt part in the doorway looking like new, Recommended!!|Franky Smithton", "Will use again|How dirty were my carpets, am ashamed, not anymore and they smell great, will be hire again thanks NTH|Miss R Lambert", ); shuffle($reviews); $reviewKeys = array_rand($reviews, 3); ?> <h2 style="text-align: center; text-transform: uppercase"><i class="fa fa-user"></i>&nbsp; &nbsp; What <? print $placename ?> Carpet Cleaner Hire Customers Say About Us:</h2> <div class="row" style="padding: 2em 0;"> <div class="three hide-for-small columns" style="text-align: center;"> <img src="/themes/nthsv3/resources/images/rated_excellent2.png" loading="lazy" alt="Rated Excellent for Carpet Cleaner Hire in <? echo $placename ?>" style="float: left; width: 220px; height:100%;"> <p style="display: inline-block; float: left; padding-top: 1em;">Rated Excellent for<br/>Carpet Cleaner Tower Hire in <? echo $placename ?></p> </div> <?php foreach($reviewKeys as $reviewKey): ?> <?php $review = explode('|', $reviews[$reviewKey]); ?> <div class="three mobile-four columns"> <div class="stars"> <img src="/themes/nthsv3/resources/images/stars-5.svg" loading="lazy" alt="Rated Excellent for Carpet Cleaner Hire in <? echo $placename ?>" style="width: 100px; height: 100%;"> </div> <div class="minireview"> <div> <h3 style='font-size: 1.2em; font-weight: 900; margin-bottom: 0; text-align: left;'><?php echo $review[0]; ?></h3> <?php if (isset($review[1])): ?> <p style='margin-bottom: 0;'><?php echo $review[1]; ?></p> <?php endif; ?> <?php if (isset($review[2])): ?> <p style='color: #909090;'><?php echo $review[2]; ?></p> <?php endif; ?> </div> </div> </div> <?php endforeach; ?> </div> </section> <script type="application/ld+json"> { "@context": "http://schema.org/", "@type": "LocalBusiness", "name": "National Tool Hire Shops: <?php echo $placename; ?>", "description": "Carpet Cleaner Hire in <?php echo $placename; ?>.", "telephone": "+44-800-808-9696", "image": "https://www.nationaltoolhireshops.co.uk/themes/nthsv3/resources/images/NTHS_logo.png", "address": "<?php echo $placename; ?>", "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.9", "bestRating": "5", "worstRating": "1", "ratingCount": "422" } } </script>', 'CMS page', 'Carpet Cleaner 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 => 'blackpool']) /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('/carpet-cleaner-hire/Blackpool') /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