/** * Retrieve Mobile-detect service * * @param \Zend\Http\Headers $oHeaders * * @throws \LogicException * @return \Mobile_Detect */ public function __invoke(\Zend\Http\Headers $oHeaders = null) { $oController = $this->getController(); if (!$oController) { throw new \LogicException('Controller is undefined for MobileDetect controller plugin'); } if ($oHeaders) { $this->mobileDetect->setHttpHeaders($oHeaders->toArray()); $this->mobileDetect->setUserAgent($oHeaders->get('user-agent')->getFieldValue()); } return $this->mobileDetect; }
/** * Headers should be reset when you use setHttpHeaders. * @covers Mobile_Detect::setHttpHeaders * @issue #144 */ public function testSetHttpHeaders() { $header1 = array('HTTP_PINK_PONY' => 'I secretly love ponies >_>'); $md = new Mobile_Detect($header1); $this->assertSame($md->getHttpHeaders(), $header1); $header2 = array('HTTP_FIRE_BREATHING_DRAGON' => 'yeah!'); $md->setHttpHeaders($header2); $this->assertSame($md->getHttpHeaders(), $header2); }
/** * Read response from cloudfront, if the cloudfront headers are detected * @covers Mobile_Detect::setCfHeaders */ public function testSetCfHeaders() { // Test mobile detected $header1 = array('HTTP_CLOUDFRONT_IS_DESKTOP_VIEWER' => 'false', 'HTTP_CLOUDFRONT_IS_MOBILE_VIEWER' => 'true', 'HTTP_CLOUDFRONT_IS_TABLET_VIEWER' => 'false'); $md = new Mobile_Detect($header1); $this->assertSame($md->getCfHeaders(), $header1); $this->assertSame($md->getUserAgent(), 'Amazon CloudFront'); $this->assertSame($md->isTablet(), false); $this->assertSame($md->isMobile(), true); // Test neither mobile nor tablet (desktop) $header2 = array('HTTP_CLOUDFRONT_IS_DESKTOP_VIEWER' => 'true', 'HTTP_CLOUDFRONT_IS_MOBILE_VIEWER' => 'false', 'HTTP_CLOUDFRONT_IS_TABLET_VIEWER' => 'false'); $md->setHttpHeaders($header2); $this->assertSame($md->getCfHeaders(), $header2); $this->assertSame($md->getUserAgent(), 'Amazon CloudFront'); $this->assertSame($md->isTablet(), false); $this->assertSame($md->isMobile(), false); // Test tablet detected $header3 = array('HTTP_CLOUDFRONT_IS_DESKTOP_VIEWER' => 'false', 'HTTP_CLOUDFRONT_IS_MOBILE_VIEWER' => 'false', 'HTTP_CLOUDFRONT_IS_TABLET_VIEWER' => 'true'); $md->setCfHeaders($header3); $this->assertSame($md->getCfHeaders(), $header3); $this->assertSame($md->getUserAgent(), 'Amazon CloudFront'); $this->assertSame($md->isTablet(), true); $this->assertSame($md->isMobile(), false); // Check if the headers are cleared $header4 = array(); $md->setHttpHeaders($header4); $this->assertSame($md->getCfHeaders(), $header4); }
/** * Retrieve Mobile-detect service * * @param \Zend\Http\Headers $oHeaders * * @return \Mobile_Detect */ public function __invoke(\Zend\Http\Headers $oHeaders = null) { if ($oHeaders) { $this->mobileDetect->setHttpHeaders($oHeaders->toArray()); $this->mobileDetect->setUserAgent($oHeaders->get('user-agent')->getFieldValue()); } return $this->mobileDetect; }