Location: PHPKode > scripts > Phones Complete Script > mobile.class.php
<?php
/*
This script is developed by Arturs Sosins aka ar2rsawseen, http://code-snippets.co.cc
Fee free to distribute and modify code, but keep reference to its creator

This class can create user friendly interface to browse PhonesComplete user generated mobile phone database
and perform searches for different phone models based on parameter values using PhonesComplete API
*/
class mobile_phones
{
	//array for storing some data localy for better performance
	private $all_val = array();
	
	//get all parameter list
	public function get_param_list(){
		if(!empty($this->all_val))
		{
			$vals = $this->all_val;
		}
		else
		{
			$vals = $this->request("http://phonescomplete.com/phones.xml");
			$this->all_val = $vals;
		}
		$params = array();
		foreach($vals as $xml)
		{
			if(isset($xml['level']) && $xml['level'] == 3)
			{
				$xml['tag'] = strtolower(str_replace("-", "_", $xml['tag']));
				if(!in_array($xml['tag'], $params))
				{
					$params[] = $xml['tag'];
				}
			}
		}
		return $params;
	}
	//get all values for specified parameter
	public function get_all_values($param_name){
		if(!empty($this->all_val))
		{
			$vals = $this->all_val;
		}
		else
		{
			$vals = $this->request("http://phonescomplete.com/phones.xml");
			$this->all_val = $vals;
		}
		$params = array();
		foreach($vals as $xml)
		{
			if(isset($xml['value']) && trim($xml['value']) != "")
			{
				$xml['tag'] = strtolower(str_replace("-", "_", $xml['tag']));
				if($xml['tag'] == $param_name && !in_array($xml['value'], $params))
				{
					$params[] = $xml['value'];
				}
			}
		}
		return $params;
	}
	//make request url based on array with values
	//where keys are parameter names and values are values of parameter
	//optionally, you can provide array with parameter names to exclude from searching
	//empty parameters are excluded autmatically
	//if value is array, then it is used as from .. to value
	public function make_url($arr, $ex = array()){
		$url = 'http://phonescomplete.com/phones/search.xml?';
		$query_string = '';
		foreach($arr as $key => $val)
		{
			if(!in_array($key, $ex))
			{
				if(is_array($val))
				{
					if(!empty($val[0]) || !empty($val[1]))
					{
						$query_string .= $this->from_to($val, $key);
					}
				}
				else if(trim($val) != "")
				{
					$query_string .= "&".$key."=".urlencode($val);
				}
			}
		}
		$vals = $url.substr($query_string, 1);
		return $vals;
	}
	//get information about phone, based on it's cached_slug parameter
	public function get_phone($cached_slug, $xml = false){
		$vals = $this->request("http://phonescomplete.com/phones/".$cached_slug.".xml", $xml);
		$arr = array();
		foreach($vals as $param)
		{
			if($param['level'] == 2 && isset($param['value']))
			{
				$arr[strtolower(str_replace("-", "_", $param['tag']))] = $param['value'];
			}
		}
		return $arr;
	}
	//generate from to url part
	public function from_to($arr, $param_name){
		$vals = $this->get_all_values($param_name);
		sort($vals);
		$url = "";
		if(empty($arr[0]))
		{
			$arr[0] = current($vals);
		}
		if(empty($arr[sizeof($arr)-1]))
		{
			$arr[1] = end($vals);
		}
		foreach($vals as $val)
		{
			if($arr[0] <= $val && $arr[1] >= $val)
			{
				$url .= "&".$param_name."[]=".urlencode($val);
			}
		}
		return $url;
	}
	//perform search with specified url
	public function search($url, $xml = false){
		$data = $this->request($url, $xml);
		if($xml)
		{
			return $xml;
		}
		else
		{
			$arr = array();
			$phone = array();
			foreach($data as $info)
			{
				if($info['level'] == 2 && $info['tag'] == "PHONE")
				{
					if($info['type'] == "open")
					{
						$phone = array();
					}
					else if($info['type'] == "close")
					{
						$arr[] = $phone;
					}
				}
				else if($info['level'] == 3 && isset($info['value']))
				{
					$phone[strtolower(str_replace("-", "_", $info['tag']))] = $info['value'];
				}
			}
			return $arr;
		}
	}
	//performing a request
	public function request($url, $xml = false){
		$curl = curl_init();
		curl_setopt($curl, CURLOPT_URL, $url);
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
		$data = curl_exec($curl);
		curl_close($curl);
		if($xml)
		{
			return $data;
		}
		else
		{
			$xml_parser = xml_parser_create();
			xml_parse_into_struct($xml_parser, $data, $vals, $index);
			xml_parser_free($xml_parser);
			return $vals;
		}
	}
	
}
?>
Return current item: Phones Complete Script