list_bucket();
if(!$response->isOK()){
return array();
}
$bucket=$response->getBody();
foreach($bucket['ListAllMyBucketsResult']['Buckets']['Bucket'] as $value){
$re[]=$value['Name'];
}
return $re;
}
function show_msg($error_no, $error_msg = 'ok', $success = 1, $quit = TRUE) {
show_header();
global $step;
$title = lang($error_no);
$comment = lang($error_no.'_comment', false);
$errormsg = '';
if($error_msg) {
if(!empty($error_msg)) {
foreach ((array)$error_msg as $k => $v) {
if(is_numeric($k)) {
$comment .= "
".lang($v)."";
}
}
}
}
$back = lang('to_back');
echo <<
$title
EOT;
show_footer($quit);
}
function check_db($dbhost, $dbuser, $dbpw, $dbname, $tablepre) {
if(!function_exists('mysql_connect') && !function_exists('mysqli_connect')) {
show_msg('undefine_func', 'mysql_connect | mysqli_connect', 0);
}
$mysqlmode = function_exists('mysqli_connect') ? 'mysqli' : 'mysql';
if($mysqlmode=='mysqli'){
//兼容支持域名直接带有端口的情况
if(strpos($dbhost,':')!==false){
list($dbhost,$port)=explode(':',$dbhost);
}elseif(strpos($dbhost,'.sock')!==false){//地址直接是socket地址
$unix_socket=$dbhost;
$dbhost='localhost';
}
if(empty($port)) $port='3306';
$link = new mysqli($dbhost, $dbuser, $dbpw, '', $port, $unix_socket);
$errno = $link->connect_errno;
$error = $link->connect_error;
}else{
$link = @mysql_connect($dbhost, $dbuser, $dbpw);
$errno = mysql_errno();
$error = mysql_error();
}
if($errno) {
if($errno == 1045) {
show_msg('database_errno_1045', $error, 0);
} elseif($errno == 2003 || $errno==2002) {
show_msg('database_errno_2003', $error, 0);
} else {
show_msg('database_connect_error', $error, 0);
}
} else {
if($query = (($mysqlmode == 'mysql') ? @mysql_query("SHOW databases") : $link->query("SHOW databases"))) {
if(!$query) {
return false;
}
while($row = (($mysqlmode == 'mysql') ? mysql_fetch_row($query) : $query->fetch_row())) {
if($dbname==$row[0]) {
return false;
}
}
}
}
return true;
}
function randSqlpw($len = 10) {
$arr = array(
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z",
);
$arrlength = count($arr) - 1;
$str = "";
for ($i=0; $i<$len; $i++) {
$str .= $arr[mt_rand(0, $arrlength)];
}
return $str;
}
function dirfile_check(&$dirfile_items) {
foreach($dirfile_items as $key => $item) {
$item_path = $item['path'];
if($item['type'] == 'dir') {
if(!dir_writeable(ROOT_PATH.$item_path)) {
if(is_dir(ROOT_PATH.$item_path)) {
$dirfile_items[$key]['status'] = 0;
$dirfile_items[$key]['current'] = '+r';
} else {
$dirfile_items[$key]['status'] = -1;
$dirfile_items[$key]['current'] = 'nodir';
}
} else {
$dirfile_items[$key]['status'] = 1;
$dirfile_items[$key]['current'] = '+r+w';
}
} else {
if(file_exists(ROOT_PATH.$item_path)) {
if(is_writable(ROOT_PATH.$item_path)) {
$dirfile_items[$key]['status'] = 1;
$dirfile_items[$key]['current'] = '+r+w';
} else {
$dirfile_items[$key]['status'] = 0;
$dirfile_items[$key]['current'] = '+r';
}
} else {
if(dir_writeable(dirname(ROOT_PATH.$item_path))) {
$dirfile_items[$key]['status'] = 1;
$dirfile_items[$key]['current'] = '+r+w';
} else {
$dirfile_items[$key]['status'] = -1;
$dirfile_items[$key]['current'] = 'nofile';
}
}
}
}
}
function env_check(&$env_items) {
foreach($env_items as $key => $item) {
if($key == 'php') {
$env_items[$key]['current'] = PHP_VERSION;
} elseif($key == 'attachmentupload') {
$env_items[$key]['current'] = @ini_get('file_uploads') ? ini_get('upload_max_filesize') : 'unknow';
} elseif($key == 'allow_url_fopen') {
$env_items[$key]['current'] = @ini_get('allow_url_fopen') ? ini_get('allow_url_fopen') : 'unknow';
} elseif($key == 'gdversion') {
$tmp = function_exists('gd_info') ? gd_info() : array();
$env_items[$key]['current'] = empty($tmp['GD Version']) ? 'noext' : $tmp['GD Version'];
unset($tmp);
} elseif($key == 'diskspace') {
if(function_exists('disk_free_space')) {
$env_items[$key]['current'] = floor(disk_free_space(ROOT_PATH) / (1024*1024)).'M';
} else {
$env_items[$key]['current'] = 'unknow';
}
} elseif(isset($item['c'])) {
$env_items[$key]['current'] = constant($item['c']);
}
$env_items[$key]['status'] = 1;
if($item['r'] != 'notset' && strcmp($env_items[$key]['current'], $item['r']) < 0) {
$env_items[$key]['status'] = 0;
}
//判断最高版本
if(isset($item['m']) && strcmp($env_items[$key]['current'], $item['m']) >= 0) {
$env_items[$key]['status'] = 0;
}
}
}
function function_check(&$func_items) {
foreach($func_items as $item) {
function_exists($item) or show_msg('undefine_func', $item, 0);
}
}
function show_env_result(&$env_items, &$func_items, &$filesock_items) {
$env_str = $file_str = $func_str = '';
$error_code = 0;
foreach($env_items as $key => $item) {
if($key == 'php' && strcmp($item['current'], $item['r']) < 0) {
show_msg('php_version_too_low', $item['current'], 0);
}
if($key == 'php' && strcmp($item['current'], $item['m']) >=0) {
show_msg('php_version_too_low', $item['current'], 0);
}
$status = 1;
if($item['r'] != 'notset') {
if(intval($item['current']) && intval($item['r'])) {
if(intval($item['current']) < intval($item['r'])) {
$status = 0;
$error_code = ENV_CHECK_ERROR;
}
} else {
if(strcmp($item['current'], $item['r']) < 0) {
$status = 0;
$error_code = ENV_CHECK_ERROR;
}
}
}
if(VIEW_OFF) {
$env_str .= "\t\t\n";
} else {
$env_str .= "\n";
$env_str .= "| ".lang($key)." | \n";
$env_str .= "".lang($item['r'])." | \n";
$env_str .= "".lang($item['b'])." | \n";
$env_str .= ($status ? "" : " | ").$item['current']." | \n";
$env_str .= "
\n";
}
}
show_header();
if($env_str){
echo "".lang('env_check')."
\n";
echo "\n";
echo "\n";
echo "\t| ".lang('project')." | \n";
echo "\t".lang('dzzoffice_required')." | \n";
echo "\t".lang('dzzoffice_best')." | \n";
echo "\t".lang('curr_server')." | \n";
echo "
\n";
echo $env_str;
echo "
\n";
}
foreach($func_items as $item) {
$status = function_exists($item);
$func_str .= "\n";
$func_str .= "| $item() | \n";
if($status) {
$func_str .= "".lang('supportted')." | \n";
$func_str .= "".lang('none')." | \n";
} else {
$error_code = ENV_CHECK_ERROR;
$func_str .= "".lang('unsupportted')." | \n";
$func_str .= "".lang('advice_'.$item)." | \n";
}
}
$func_strextra = '';
$filesock_disabled = 0;
foreach($filesock_items as $item) {
$status = function_exists($item);
$func_strextra .= "
\n";
$func_strextra .= "| $item() | \n";
if($status) {
$func_strextra .= "".lang('supportted')." | \n";
$func_strextra .= "".lang('none')." | \n";
break;
} else {
$filesock_disabled++;
$func_strextra .= "".lang('unsupportted')." | \n";
$func_strextra .= "".lang('advice_'.$item)." | \n";
}
}
if($filesock_disabled == count($filesock_items)) {
$error_code = ENV_CHECK_ERROR;
}
if($func_str || $func_strextra){
echo "".lang('func_depend')."
\n";
echo "\n";
echo "\n";
echo "\t| ".lang('func_name')." | \n";
echo "\t".lang('check_result')." | \n";
echo "
\n";
echo $func_str.$func_strextra;
echo "
\n";
}
show_next_step(2,$error_code);
show_footer();
}
function show_dirfile_result(&$dirfile_items) {
$file_str = '';
$dir_str = '';
$error_code = 0;
foreach($dirfile_items as $key => $item) {
$tagname = $item['type'] == 'file' ? 'file' : 'dir';
$variable = $item['type'].'_str';
if(empty($$variable)) $$variable='';
$$variable .= "
\n";
$$variable .= "| $item[path] | ".lang('writeable')." | \n";
if($item['status'] == 1) {
$$variable .= "".lang('writeable')." | \n";
} elseif($item['status'] == -1) {
$error_code = ENV_CHECK_ERROR;
$$variable .= "".lang('nodir')." | \n";
} else {
$error_code = ENV_CHECK_ERROR;
$$variable .= "".lang('unwriteable')." | \n";
}
$$variable .= "
\n";
}
show_header();
if($file_str || $dir_str){
echo "".lang('priv_check')."
\n";
echo "\n";
echo "\t\n";
echo "\t| ".lang('step1_file')." | \n";
echo "\t".lang('step1_need_status')." | \n";
echo "\t".lang('step1_status')." | \n";
echo "
\n";
echo $file_str;
echo $dir_str;
echo "
\n";
}
show_next_step(3,$error_code);
show_footer();
}
function show_next_step($step, $error_code) {
global $uchidden;
echo "\n";
}
function show_form(&$form_items, $error_msg) {
global $step;
if(empty($form_items) || !is_array($form_items)) {
return;
}
show_header();
show_setting('start');
show_setting('hidden', 'step', $step);
$is_first = 1;
echo '';
echo '';
show_setting('', 'submitname', 'new_step', ($step == 2 ? 'submit|oldbtn' : 'submit' ));
show_setting('end');
show_footer();
}
function show_license() {
global $self, $step,$version,$version_name;
$next = $step + 1;
show_header();
$title = lang('step_env_check_title');
$maintitle=SOFT_NAME.' '.$version_name.' '.$version.'';
$release = CORE_RELEASE;
$install_lang = lang(INSTALL_LANG);
echo <<

$maintitle
$install_lang $release
|
EOT;
show_footer();
}
if(!function_exists('file_put_contents')) {
function file_put_contents($filename, $s) {
$fp = @fopen($filename, 'w');
@fwrite($fp, $s);
@fclose($fp);
return TRUE;
}
}
function createtable($sql, $dbver) {
$type = strtoupper(preg_replace("/^\s*CREATE TABLE\s+.+\s+\(.+?\).*(ENGINE|TYPE)\s*=\s*([a-z]+?).*$/isU", "\\2", $sql));
$type = in_array($type, array('MYISAM', 'HEAP', 'MEMORY','INNODB')) ? $type : 'MyISAM';
return preg_replace("/^\s*(CREATE TABLE\s+.+\s+\(.+?\)).*$/isU", "\\1", $sql).
(" ENGINE=$type DEFAULT CHARSET=".DBCHARSET);
}
function dir_writeable($dir) {
$writeable = 0;
if(!is_dir($dir)) {
@mkdir($dir, 0777);
}
if(is_dir($dir)) {
if($fp = @fopen("$dir/test.txt", 'w')) {
@fclose($fp);
@unlink("$dir/test.txt");
$writeable = 1;
} else {
$writeable = 0;
}
}
return $writeable;
}
function dir_clear($dir) {
global $lang;
showjsmessage($lang['clear_dir'].' '.str_replace(ROOT_PATH, '', $dir));
if($directory = @dir($dir)) {
while($entry = $directory->read()) {
$filename = $dir.'/'.$entry;
if(is_file($filename)) {
@unlink($filename);
}
}
$directory->close();
@touch($dir.'/index.htm');
}
}
function show_header() {
define('SHOW_HEADER', TRUE);
global $step;
$version = CORE_VERSION;
$release = CORE_RELEASE;
$install_lang = lang(INSTALL_LANG);
$title = lang('title_install');
$charset = CHARSET;
echo <<
$title
EOT;
}
function show_footer($quit = true) {
echo <<