<?php

/*

* $Author ：PHPYUN开发团队

*

* 官网: http://www.phpyun.com

*

* 版权所有 2009-2019 宿迁鑫潮信息技术有限公司，并保留所有权利。

*

* 软件声明：未经授权前提下，不得用于商业运营、二次开发以及任何形式的再次发布。

 */

/*

	[UCenter] (C)2001-2099 Comsenz Inc.

	This is NOT a freeware, use is subject to license terms



	$Id: misc.php 1059 2011-03-01 07:25:09Z monkey $

*/



!defined('IN_UC') && exit('Access Denied');



define('UC_ARRAY_SEP_1', 'UC_ARRAY_SEP_1');

define('UC_ARRAY_SEP_2', 'UC_ARRAY_SEP_2');



class miscmodel {



	var $db;

	var $base;



	function __construct(&$base) {

		$this->miscmodel($base);

	}



	function miscmodel(&$base) {

		$this->base = $base;

		$this->db = $base->db;

	}



	function get_apps($col = '*', $where = '') {

		$arr = $this->db->fetch_all("SELECT $col FROM ".UC_DBTABLEPRE."applications".($where ? ' WHERE '.$where : ''));

		return $arr;

	}



	function delete_apps($appids) {

	}



	function update_app($appid, $name, $url, $authkey, $charset, $dbcharset) {

	}



	

	function alter_app_table($appid, $operation = 'ADD') {

	}



	function get_host_by_url($url) {

	}



	function check_url($url) {

	}



	function check_ip($url) {

	}



	function test_api($url, $ip = '') {

	}



	function dfopen2($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE, $encodetype  = 'URLENCODE') {

		$__times__ = isset($_GET['__times__']) ? intval($_GET['__times__']) + 1 : 1;

		if($__times__ > 2) {

			return '';

		}

		$url .= (strpos($url, '?') === FALSE ? '?' : '&')."__times__=$__times__";

		return $this->dfopen($url, $limit, $post, $cookie, $bysocket, $ip, $timeout, $block, $encodetype);

	}



	function dfopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE	, $ip = '', $timeout = 15, $block = TRUE, $encodetype  = 'URLENCODE') {

	

		$return = '';

		$matches = parse_url($url);

		$host = $matches['host'];

		$path = $matches['path'] ? $matches['path'].($matches['query'] ? '?'.$matches['query'] : '') : '/';

		$port = !empty($matches['port']) ? $matches['port'] : 80;



		if($post) {

			$out = "POST $path HTTP/1.0\r\n";

			$out .= "Accept: */*\r\n";

			

			$out .= "Accept-Language: zh-cn\r\n";

			$boundary = $encodetype == 'URLENCODE' ? '' : ';'.substr($post, 0, trim(strpos($post, "\n")));

			$out .= $encodetype == 'URLENCODE' ? "Content-Type: application/x-www-form-urlencoded\r\n" : "Content-Type: multipart/form-data$boundary\r\n";

			$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";

			$out .= "Host: $host\r\n";

			$out .= 'Content-Length: '.strlen($post)."\r\n";

			$out .= "Connection: Close\r\n";

			$out .= "Cache-Control: no-cache\r\n";

			$out .= "Cookie: $cookie\r\n\r\n";

			$out .= $post;

		} else {

			$out = "GET $path HTTP/1.0\r\n";

			$out .= "Accept: */*\r\n";

			

			$out .= "Accept-Language: zh-cn\r\n";

			$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";

			$out .= "Host: $host\r\n";

			$out .= "Connection: Close\r\n";

			$out .= "Cookie: $cookie\r\n\r\n";

		}



		if(function_exists('fsockopen')) {

			$fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);

		} elseif (function_exists('pfsockopen')) {

			$fp = @pfsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);

		} else {

			$fp = false;

		}



		if(!$fp) {

			return '';

		} else {

			stream_set_blocking($fp, $block);

			stream_set_timeout($fp, $timeout);

			@fwrite($fp, $out);

			$status = stream_get_meta_data($fp);

			if(!$status['timed_out']) {

				while (!feof($fp)) {

					if(($header = @fgets($fp)) && ($header == "\r\n" ||  $header == "\n")) {

						break;

					}

				}



				$stop = false;

				while(!feof($fp) && !$stop) {

					$data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit));

					$return .= $data;

					if($limit) {

						$limit -= strlen($data);

						$stop = $limit <= 0;

					}

				}

			}

			@fclose($fp);

			return $return;

		}

	}



	function array2string($arr) {

		$s = $sep = '';

		if($arr && is_array($arr)) {

			foreach($arr as $k => $v) {

				$s .= $sep.$k.UC_ARRAY_SEP_1.$v;

				$sep = UC_ARRAY_SEP_2;

			}

		}

		return $s;

	}



	function string2array($s) {

		$arr = explode(UC_ARRAY_SEP_2, $s);

		$arr2 = array();

		foreach($arr as $k => $v) {

			list($key, $val) = explode(UC_ARRAY_SEP_1, $v);

			$arr2[$key] = $val;

		}

		return $arr2;

	}

}



?>