/** @return object */ public static function getSwarmUAIndex() { // Lazy-init and cache if (self::$swarmUaIndex === null) { global $swarmInstallDir; // Convert from array with string values // to an object with boolean values $swarmUaIndex = new stdClass(); $rawIndex = parse_ini_file("{$swarmInstallDir}/config/useragents.ini", true); foreach ($rawIndex as $uaID => $uaItem) { if (is_array($uaItem)) { $uaItem2 = $uaItem; foreach ($uaItem2 as $uaDataKey => $uaDataVal) { if ($uaDataKey !== "displaytitle" && $uaDataKey !== "displayicon") { $uaItem[$uaDataKey] = (bool) trim($uaDataVal); } else { $uaItem[$uaDataKey] = trim($uaDataVal); } } if (!isset($uaItem["displaytitle"]) || !$uaItem["displaytitle"]) { throw new SwarmException("User agent `{$uaID}` is missing a displaytitle property."); } if (!isset($uaItem["displayicon"]) || !$uaItem["displayicon"]) { throw new SwarmException("User agent `{$uaID}` is missing a displayicon property."); } $swarmUaIndex->{$uaID} = (object) $uaItem; } } self::$swarmUaIndex = $swarmUaIndex; } return self::$swarmUaIndex; }