-
Notifications
You must be signed in to change notification settings - Fork 85
/
Copy pathupgrade.php
103 lines (87 loc) · 2.42 KB
/
upgrade.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
/*****
新浪云商店自动升级demo
自动升级程序依赖于sae的SVN版本控制
*/
error_reporting(E_ALL);
header("Content-type: text/html; charset=utf-8");
define( 'DS' , DIRECTORY_SEPARATOR );
define( 'AROOT' , dirname( __FILE__ ) . DS );
$rv_file = AROOT.'app.info';
$rv_info = parse_ini_file($rv_file);
$upgrade_api = 'http://qyapi.sae.sina.com.cn/qy_updater.php?appname=%s&rv=%s';
if(!$rv_info)
echo 'info file error';
$query = sprintf($upgrade_api, substr($rv_info['appname'],5),$rv_info['revision']);
$ret = getJsonContentsAndDecode($query);
if($ret && $ret['code']==0)
{
if($ret['data']['result']=='last'){
echo 'last version';
}else{
$url = parse_url($ret['data']['result']);
$path = $url['path'];
$path_parts = pathinfo($path);
$down_file = AROOT.$path_parts["basename"];
$down = download_file($ret['data']['result'],$down_file);
if (file_exists($down_file)) {
include_once( 'dUnzip2.inc.php' );
$zip = new dUnzip2( $down_file );
@mkdir( AROOT . 'apps'.DS . $folder );
$zip->debug = false;
$zip->unzipAll( AROOT );
$root_directory = dirname(__FILE__)."/";
require($root_directory.'include/init.php');
global $adb;
$filepath = require($root_directory.'storage/upgrade.sql');
sql_import($filepath);
echo 'done';
} else {
echo 'failed';
}
}
}else{
echo 'api error';
}
function download_file($file_url, $save_to)
{
$in= fopen($file_url, "rb");
$out= fopen($save_to, "wb");
while ($chunk = fread($in,8192))
{
$c = fwrite($out, $chunk, 8192);
}
fclose($in);
fclose($out);
}
function getJsonContentsAndDecode($url) //获取对应URL的JSON格式数据并解码
{
if(empty($url))
return false;
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,3);
curl_setopt($ch,CURLOPT_TIMEOUT,12);
curl_setopt($ch,CURLOPT_HTTPGET,true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_FRESH_CONNECT,true);
$content=curl_exec($ch);
curl_close($ch);
$ch=null;
//var_dump($content);
if(false !== $content)
{
$ret=json_decode($content,true);
if(null === $ret)
{
return false;
}
else
{
return $ret;
}
}
else
return false;
}
?>