public function reload($wurflConfigurationPath) { $wurflConfig = WURFL_Configuration_ConfigFactory::create($wurflConfigurationPath); WURFL_Configuration_ConfigHolder::setWURFLConfig($wurflConfig); $cacheProvider = WURFL_Cache_CacheProviderFactory::getCacheProvider(); $cacheProvider->clear(); $persistenceProvider = WURFL_Xml_PersistenceProvider_PersistenceProviderManager::getPersistenceProvider(); $persistenceProvider->setWURFLLoaded(FALSE); WURFL_WURFLManagerProvider::getWURFLManager($wurflConfigurationPath); }
/** * Get features from request * * @param array $request $_SERVER variable * @return array */ public static function getFromRequest($request, array $config) { if (!isset($config['xzend_wurflapi'])) { require_once 'Zend/Http/UserAgent/Features/Exception.php'; throw new Zend_Http_UserAgent_Features_Exception('"xzend_wurflapi" configuration is not defined'); } $config = $config['xzend_wurflapi']; if (empty($config['wurfl_lib_dir'])) { require_once 'Zend/Http/UserAgent/Features/Exception.php'; throw new Zend_Http_UserAgent_Features_Exception('The "wurfl_lib_dir" parameter is not defined'); } if (empty($config['wurfl_config_file']) && empty($config['wurfl_config_array'])) { require_once 'Zend/Http/UserAgent/Features/Exception.php'; throw new Zend_Http_UserAgent_Features_Exception('The "wurfl_config_file" parameter is not defined'); } if (empty($config['wurfl_api_version'])) { $config['wurfl_api_version'] = self::DEFAULT_API_VERSION; } switch ($config['wurfl_api_version']) { case '1.2': require_once $config['wurfl_lib_dir'] . 'Application.php'; if (!empty($config['wurfl_config_file'])) { $wurflConfig = WURFL_Configuration_ConfigFactory::create($config['wurfl_config_file']); } elseif (!empty($config['wurfl_config_array'])) { $c = $config['wurfl_config_array']; $wurflConfig = new WURFL_Configuration_InMemoryConfig(); $wurflConfig->wurflFile($c['wurfl']['main-file'])->wurflPatch($c['wurfl']['patches']); if ($c['persistence']['provider'] == 'file') { $wurflConfig->persistence("file", array(WURFL_Configuration_Config::DIR => $c['persistence']['dir'])); } if ($c['cache']['provider'] == 'file') { $wurflConfig->cache("file", array(WURFL_Configuration_Config::DIR => $c['cache']['dir'], WURFL_Configuration_Config::EXPIRATION => $c['cache']['expiration'])); } } $wurflManagerFactory = new WURFL_WURFLManagerFactory($wurflConfig); $wurflManager = $wurflManagerFactory->create(); break; default: require_once 'Zend/Http/UserAgent/Features/Exception.php'; throw new Zend_Http_UserAgent_Features_Exception(sprintf('Unknown API version "%s"', $config['wurfl_api_version'])); } $device = $wurflManager->getDeviceForHttpRequest(array_change_key_case($request, CASE_UPPER)); $features = $device->getAllCapabilities(); return $features; }
/** * Initiaizes the actual WURFLManager * * @param string $configurationFilePath Absolute path to the wurfl configuration file */ private static function _init($configurationFilePath) { $wurflConfig = WURFL_Configuration_ConfigFactory::create($configurationFilePath); WURFL_Configuration_ConfigHolder::setWURFLConfig($wurflConfig); $wurflFileParser = new WURFL_Xml_WURFLFileParser(); $wurflPatchFileParser = new WURFL_Xml_WURFLPatchFileParser(); $wurflPatchManager = new WURFL_Xml_PatchManager(); // Persistence and Cache Providers $persistenceProvider = WURFL_Xml_PersistenceProvider_PersistenceProviderManager::getPersistenceProvider(); $cacheProvider = WURFL_Cache_CacheProviderFactory::getCacheProvider(); $xmlResourceManager = new WURFL_Xml_XMLResourceManager($persistenceProvider, $wurflPatchManager, $wurflFileParser, $wurflPatchFileParser); $userAgentHandlerChain = WURFL_UserAgentHandlerChainFactory::create(); $deviceRepository = new WURFL_DeviceRepository($xmlResourceManager, $userAgentHandlerChain, $persistenceProvider); $wurflService = new WURFL_WURFLService($deviceRepository, $userAgentHandlerChain, $cacheProvider); $userAgentNormalizer = new WURFL_Request_UserAgentNormalizer(); $requestFactory = new WURFL_Request_GenericRequestFactory($userAgentNormalizer); self::$wurflManager = new WURFL_WURFLManager($wurflService, $requestFactory); }
public function testShouldReloadWURFLIfWURFLFileTimeStampChanges() { $configurationFile = dirname(__FILE__) . DIRECTORY_SEPARATOR . self::WURFL_CONFIG_FILE; $wurflConfig = WURFL_Configuration_ConfigFactory::create($configurationFile); touch($wurflConfig->wurflFile); }