60 行
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			60 行
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|  | <?php defined('BASEPATH') or exit('No direct script access allowed'); | ||
|  | 
 | ||
|  | /*** | ||
|  |  * Pota library is a Parks On The Air client | ||
|  |  */ | ||
|  | class Pota | ||
|  | { | ||
|  | 	// return summit references matching the provided query
 | ||
|  | 	public function get($query): array | ||
|  | 	{ | ||
|  | 		if (empty($query)) { | ||
|  | 			return []; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		$json = []; | ||
|  | 		$ref = strtoupper($query); | ||
|  | 
 | ||
|  | 		$file = 'assets/json/pota.txt'; | ||
|  | 
 | ||
|  | 		if (is_readable($file)) { | ||
|  | 			$lines = file($file, FILE_IGNORE_NEW_LINES); | ||
|  | 			$input = preg_quote($ref, '~'); | ||
|  | 			$reg = '~^' . $input . '(.*)$~'; | ||
|  | 			$result = preg_grep($reg, $lines); | ||
|  | 
 | ||
|  | 			foreach ($result as &$value) { | ||
|  | 				// Limit to 100 as to not slowdown browser too much
 | ||
|  | 				if (count($json) <= 100) { | ||
|  | 					$json[] = ["name" => $value]; | ||
|  | 				} | ||
|  | 			} | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return $json; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	// fetches the summit information from POTA
 | ||
|  | 	public function info($ref) { | ||
|  | 		$url = 'https://api.pota.app/park/'.$ref; | ||
|  | 
 | ||
|  | 		// Let's use cURL instead of file_get_contents
 | ||
|  | 		// begin script
 | ||
|  | 		$ch = curl_init(); | ||
|  | 
 | ||
|  | 		// basic curl options for all requests
 | ||
|  | 		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); | ||
|  | 		curl_setopt($ch, CURLOPT_HEADER, 0); | ||
|  | 
 | ||
|  | 		// use the URL we built
 | ||
|  | 		curl_setopt($ch, CURLOPT_URL, $url); | ||
|  | 
 | ||
|  | 		$summit_info = curl_exec($ch); | ||
|  | 
 | ||
|  | 		// Close cURL handle
 | ||
|  | 		curl_close($ch); | ||
|  | 
 | ||
|  | 		return $summit_info; | ||
|  | 	} | ||
|  | } |