123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035 |
- <?php
- /**
- * [WeEngine System] Copyright (c) 2014 WE7.CC
- * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
- */
- ini_set('display_errors', '1');
- error_reporting(E_ALL ^ E_NOTICE);
- set_time_limit(0);
- ob_start();
- define('IA_ROOT', str_replace("\\",'/', dirname(__FILE__)));
- define('APP_URL', 'http://v2.addons.we7.cc/web/');
- define('APP_STORE_URL', 'http://v2.addons.we7.cc/web');
- define('APP_STORE_API', 'http://v2.addons.we7.cc/api.php');
- if($_GET['res']) {
- $res = $_GET['res'];
- $reses = tpl_resources();
- if(array_key_exists($res, $reses)) {
- if($res == 'css') {
- header('content-type:text/css');
- } else {
- header('content-type:image/png');
- }
- echo base64_decode($reses[$res]);
- exit();
- }
- }
- $actions = array('license', 'env', 'db', 'finish');
- $action = !empty($_GET['step']) ? $_GET['step'] : $_COOKIE['action'];
- $action = in_array($action, $actions) ? $action : 'license';
- $ispost = strtolower($_SERVER['REQUEST_METHOD']) == 'post';
- if(file_exists(IA_ROOT . '/data/install.lock') && $action != 'finish') {
- header('location: ./index.php');
- exit;
- }
- header('content-type: text/html; charset=utf-8');
- if($action == 'license') {
- if($ispost) {
- setcookie('action', 'env');
- header('location: ?refresh');
- exit;
- }
- tpl_install_license();
- }
- if($action == 'env') {
- if($ispost) {
- setcookie('action', $_POST['do'] == 'continue' ? 'db' : 'license');
- header('location: ?refresh');
- exit;
- }
- $ret = array();
- $ret['server']['os']['value'] = php_uname();
- if(PHP_SHLIB_SUFFIX == 'dll') {
- $ret['server']['os']['remark'] = '建议使用 Linux 系统以提升程序性能';
- $ret['server']['os']['class'] = 'warning';
- }
- $ret['server']['sapi']['value'] = $_SERVER['SERVER_SOFTWARE'];
- if(PHP_SAPI == 'isapi') {
- $ret['server']['sapi']['remark'] = '建议使用 Apache 或 Nginx 以提升程序性能';
- $ret['server']['sapi']['class'] = 'warning';
- }
- $ret['server']['php']['value'] = PHP_VERSION;
- $ret['server']['dir']['value'] = IA_ROOT;
- if(function_exists('disk_free_space')) {
- $ret['server']['disk']['value'] = floor(disk_free_space(IA_ROOT) / (1024*1024)).'M';
- } else {
- $ret['server']['disk']['value'] = 'unknow';
- }
- $ret['server']['upload']['value'] = @ini_get('file_uploads') ? ini_get('upload_max_filesize') : 'unknow';
- $ret['php']['version']['value'] = PHP_VERSION;
- $ret['php']['version']['class'] = 'success';
- if(version_compare(PHP_VERSION, '5.3.0') == -1) {
- $ret['php']['version']['class'] = 'danger';
- $ret['php']['version']['failed'] = true;
- $ret['php']['version']['remark'] = 'PHP版本必须为 5.3.0 以上. <a href="http://bbs.we7.cc/forum.php?mod=redirect&goto=findpost&ptid=3564&pid=58062">详情</a>';
- }
- $ret['php']['pdo']['ok'] = extension_loaded('pdo') && extension_loaded('pdo_mysql');
- if($ret['php']['pdo']['ok']) {
- $ret['php']['pdo']['value'] = '<span class="glyphicon glyphicon-ok text-success"></span>';
- $ret['php']['pdo']['class'] = 'success';
- } else {
- $ret['php']['pdo']['failed'] = true;
- $ret['php']['pdo']['value'] = '<span class="glyphicon glyphicon-remove text-warning"></span>';
- $ret['php']['pdo']['class'] = 'warning';
- $ret['php']['pdo']['remark'] = '您的PHP环境不支持PDO, 请开启此扩展. <a target="_blank" href="http://bbs.we7.cc/forum.php?mod=redirect&goto=findpost&ptid=3564&pid=58074">详情</a>';
- }
- $ret['php']['fopen']['ok'] = @ini_get('allow_url_fopen') && function_exists('fsockopen');
- if($ret['php']['fopen']['ok']) {
- $ret['php']['fopen']['value'] = '<span class="glyphicon glyphicon-ok text-success"></span>';
- } else {
- $ret['php']['fopen']['value'] = '<span class="glyphicon glyphicon-remove text-danger"></span>';
- }
- $ret['php']['curl']['ok'] = extension_loaded('curl') && function_exists('curl_init');
- if($ret['php']['curl']['ok']) {
- $ret['php']['curl']['value'] = '<span class="glyphicon glyphicon-ok text-success"></span>';
- $ret['php']['curl']['class'] = 'success';
- } else {
- $ret['php']['curl']['value'] = '<span class="glyphicon glyphicon-remove text-danger"></span>';
- $ret['php']['curl']['class'] = 'danger';
- $ret['php']['curl']['remark'] = '您的PHP环境不支持cURL, 也不支持 allow_url_fopen, 系统无法正常运行. <a target="_blank" href="http://bbs.we7.cc/thread-26119-1-1.html">详情</a>';
- $ret['php']['curl']['failed'] = true;
- }
- $ret['php']['ssl']['ok'] = extension_loaded('openssl');
- if($ret['php']['ssl']['ok']) {
- $ret['php']['ssl']['value'] = '<span class="glyphicon glyphicon-ok text-success"></span>';
- $ret['php']['ssl']['class'] = 'success';
- } else {
- $ret['php']['ssl']['value'] = '<span class="glyphicon glyphicon-remove text-danger"></span>';
- $ret['php']['ssl']['class'] = 'danger';
- $ret['php']['ssl']['failed'] = true;
- $ret['php']['ssl']['remark'] = '没有启用OpenSSL, 将无法访问公众平台的接口, 系统无法正常运行. <a target="_blank" href="http://bbs.we7.cc/forum.php?mod=redirect&goto=findpost&ptid=3564&pid=58109">详情</a>';
- }
- $ret['php']['gd']['ok'] = extension_loaded('gd');
- if($ret['php']['gd']['ok']) {
- $ret['php']['gd']['value'] = '<span class="glyphicon glyphicon-ok text-success"></span>';
- $ret['php']['gd']['class'] = 'success';
- } else {
- $ret['php']['gd']['value'] = '<span class="glyphicon glyphicon-remove text-danger"></span>';
- $ret['php']['gd']['class'] = 'danger';
- $ret['php']['gd']['failed'] = true;
- $ret['php']['gd']['remark'] = '没有启用GD, 将无法正常上传和压缩图片, 系统无法正常运行. <a target="_blank" href="http://bbs.we7.cc/forum.php?mod=redirect&goto=findpost&ptid=3564&pid=58110">详情</a>';
- }
- $ret['php']['dom']['ok'] = class_exists('DOMDocument');
- if($ret['php']['dom']['ok']) {
- $ret['php']['dom']['value'] = '<span class="glyphicon glyphicon-ok text-success"></span>';
- $ret['php']['dom']['class'] = 'success';
- } else {
- $ret['php']['dom']['value'] = '<span class="glyphicon glyphicon-remove text-danger"></span>';
- $ret['php']['dom']['class'] = 'danger';
- $ret['php']['dom']['failed'] = true;
- $ret['php']['dom']['remark'] = '没有启用DOMDocument, 将无法正常安装使用模块, 系统无法正常运行. <a target="_blank" href="http://bbs.we7.cc/forum.php?mod=redirect&goto=findpost&ptid=3564&pid=58111">详情</a>';
- }
- $ret['php']['session']['ok'] = ini_get('session.auto_start');
- if($ret['php']['session']['ok'] == 0 || strtolower($ret['php']['session']['ok']) == 'off') {
- $ret['php']['session']['value'] = '<span class="glyphicon glyphicon-ok text-success"></span>';
- $ret['php']['session']['class'] = 'success';
- } else {
- $ret['php']['session']['value'] = '<span class="glyphicon glyphicon-remove text-danger"></span>';
- $ret['php']['session']['class'] = 'danger';
- $ret['php']['session']['failed'] = true;
- $ret['php']['session']['remark'] = '系统session.auto_start开启, 将无法正常注册会员, 系统无法正常运行. <a target="_blank" href="http://bbs.we7.cc/forum.php?mod=redirect&goto=findpost&ptid=3564&pid=58111">详情</a>';
- }
- $ret['php']['asp_tags']['ok'] = ini_get('asp_tags');
- if(empty($ret['php']['asp_tags']['ok']) || strtolower($ret['php']['asp_tags']['ok']) == 'off') {
- $ret['php']['asp_tags']['value'] = '<span class="glyphicon glyphicon-ok text-success"></span>';
- $ret['php']['asp_tags']['class'] = 'success';
- } else {
- $ret['php']['asp_tags']['value'] = '<span class="glyphicon glyphicon-remove text-danger"></span>';
- $ret['php']['asp_tags']['class'] = 'danger';
- $ret['php']['asp_tags']['failed'] = true;
- $ret['php']['asp_tags']['remark'] = '请禁用可以使用ASP 风格的标志,配置php.ini中asp_tags = Off';
- }
- $ret['write']['root']['ok'] = local_writeable(IA_ROOT . '/');
- if($ret['write']['root']['ok']) {
- $ret['write']['root']['value'] = '<span class="glyphicon glyphicon-ok text-success"></span>';
- $ret['write']['root']['class'] = 'success';
- } else {
- $ret['write']['root']['value'] = '<span class="glyphicon glyphicon-remove text-danger"></span>';
- $ret['write']['root']['class'] = 'danger';
- $ret['write']['root']['failed'] = true;
- $ret['write']['root']['remark'] = '本地目录无法写入, 将无法使用自动更新功能, 系统无法正常运行. <a href="http://bbs.we7.cc/">详情</a>';
- }
- $ret['write']['data']['ok'] = local_writeable(IA_ROOT . '/data');
- if($ret['write']['data']['ok']) {
- $ret['write']['data']['value'] = '<span class="glyphicon glyphicon-ok text-success"></span>';
- $ret['write']['data']['class'] = 'success';
- } else {
- $ret['write']['data']['value'] = '<span class="glyphicon glyphicon-remove text-danger"></span>';
- $ret['write']['data']['class'] = 'danger';
- $ret['write']['data']['failed'] = true;
- $ret['write']['data']['remark'] = 'data目录无法写入, 将无法写入配置文件, 系统无法正常安装. ';
- }
- $ret['continue'] = true;
- foreach($ret['php'] as $opt) {
- if($opt['failed']) {
- $ret['continue'] = false;
- break;
- }
- }
- if($ret['write']['failed']) {
- $ret['continue'] = false;
- }
- tpl_install_env($ret);
- }
- if($action == 'db') {
- if($ispost) {
- if($_POST['do'] != 'continue') {
- setcookie('action', 'env');
- header('location: ?refresh');
- exit();
- }
- $family = $_POST['family'] == 'x' ? 'x' : 'v';
- $db = $_POST['db'];
- $user = $_POST['user'];
- try {
- $pieces = explode(':', $db['server']);
- $db['server'] = $pieces[0];
- $db['port'] = !empty($pieces[1]) ? $pieces[1] : '3306';
- $link = new PDO("mysql:host={$db['server']};port={$db['port']}", $db['username'], $db['password']); // dns可以没有dbname
- $link->exec("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary");
- $link->exec("SET sql_mode=''");
- if ($link->errorCode() != '00000') {
- $errorInfo = $link->errorInfo();
- $error = $errorInfo[2];
- } else {
- $statement = $link->query("SHOW DATABASES LIKE '{$db['name']}';");
- $fetch = $statement->fetch();
- if (empty($fetch)){
- if (substr($link->getAttribute(PDO::ATTR_SERVER_VERSION), 0, 3) > '4.1') {
- $link->query("CREATE DATABASE IF NOT EXISTS `{$db['name']}` DEFAULT CHARACTER SET utf8");
- } else {
- $link->query("CREATE DATABASE IF NOT EXISTS `{$db['name']}`");
- }
- }
- $statement = $link->query("SHOW DATABASES LIKE '{$db['name']}';");
- $fetch = $statement->fetch();
- if (empty($fetch)) {
- $error .= "数据库不存在且创建数据库失败. <br />";
- }
- if ($link->errorCode() != '00000') {
- $errorInfo = $link->errorInfo();
- $error .= $errorInfo[2];
- }
- }
- } catch (PDOException $e) {
- $error = $e->getMessage();
- if (strpos($error, 'Access denied for user') !== false) {
- $error = '您的数据库访问用户名或是密码错误. <br />';
- } else {
- $error = iconv('gbk', 'utf8', $error);
- }
- }
- if(empty($error)) {
- $link->exec("USE {$db['name']}");
- $statement = $link->query("SHOW TABLES LIKE '{$db['prefix']}%';");
- if ($statement->fetch()) {
- $error = '您的数据库不为空,请重新建立数据库或是清空该数据库或更改表前缀!';
- }
- }
- if(empty($error)) {
- $config = local_config();
- $cookiepre = local_salt(4) . '_';
- $authkey = local_salt(8);
- $config = str_replace(array(
- '{db-server}', '{db-username}', '{db-password}', '{db-port}', '{db-name}', '{db-tablepre}', '{cookiepre}', '{authkey}', '{attachdir}'
- ), array(
- $db['server'], $db['username'], $db['password'], $db['port'], $db['name'], $db['prefix'], $cookiepre, $authkey, 'attachment'
- ), $config);
- $verfile = IA_ROOT . '/framework/version.inc.php';
- $dbfile = IA_ROOT . '/data/db.php';
- if($_POST['type'] == 'remote') {
- $link = NULL;
- $ins = remote_install();
- if(empty($ins)) {
- die('<script type="text/javascript">alert("连接不到服务器, 请稍后重试!");history.back();</script>');
- }
- if($ins == 'error') {
- die('<script type="text/javascript">alert("版本错误,请确认是否为微擎最新版安装文件!");history.back();</script>');
- }
- $link = new PDO("mysql:dbname={$db['name']};host={$db['server']};port={$db['port']}", $db['username'], $db['password']);
- $link->exec("SET character_set_connection=utf8, character_set_results=utf8, character_set_client=binary");
- $link->exec("SET sql_mode=''");
- $tmpfile = IA_ROOT . '/we7source.tmp';
- file_put_contents($tmpfile, $ins);
- $zip = new ZipArchive;
- $res = $zip->open($tmpfile);
- if ($res === TRUE) {
- $zip->extractTo(IA_ROOT);
- $zip->close();
- } else {
- die('<script type="text/javascript">alert("安装失败,请确认当前目录是否有写入权限!");history.back();</script>');
- }
- unlink($tmpfile);
- }
- if(file_exists(IA_ROOT . '/index.php') && is_dir(IA_ROOT . '/web') && file_exists($verfile) && file_exists($dbfile)) {
- $dat = require $dbfile;
- if(empty($dat) || !is_array($dat)) {
- die('<script type="text/javascript">alert("安装包不正确, 数据安装脚本缺失.");history.back();</script>');
- }
- foreach($dat['schemas'] as $schema) {
- $sql = local_create_sql($schema);
- local_run($sql);
- }
- foreach($dat['datas'] as $data) {
- local_run($data);
- }
- } else {
- die('<script type="text/javascript">alert("你正在使用本地安装, 但未下载完整安装包, 请从微擎官网下载完整安装包后重试.");history.back();</script>');
- }
- $salt = local_salt(8);
- $password = sha1("{$user['password']}-{$salt}-{$authkey}");
- $link->exec("INSERT INTO {$db['prefix']}users (username, password, salt, joindate, groupid) VALUES('{$user['username']}', '{$password}', '{$salt}', '" . time() . "', 1)");
- local_mkdirs(IA_ROOT . '/data');
- file_put_contents(IA_ROOT . '/data/config.php', $config);
- touch(IA_ROOT . '/data/install.lock');
- setcookie('action', 'finish');
- header('location: ?refresh');
- exit();
- }
- }
- tpl_install_db($error);
- }
- if($action == 'finish') {
- setcookie('action', '', -10);
- $dbfile = IA_ROOT . '/data/db.php';
- @unlink($dbfile);
- define('IN_SYS', true);
- require IA_ROOT . '/framework/bootstrap.inc.php';
- require IA_ROOT . '/web/common/bootstrap.sys.inc.php';
- $_W['uid'] = $_W['isfounder'] = 1;
- load()->web('common');
- load()->web('template');
- load()->model('setting');
- load()->model('cache');
- cache_build_frame_menu();
- cache_build_setting();
- cache_build_users_struct();
- cache_build_module_subscribe_type();
- tpl_install_finish();
- }
- function local_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 local_salt($length = 8) {
- $result = '';
- while(strlen($result) < $length) {
- $result .= sha1(uniqid('', true));
- }
- return substr($result, 0, $length);
- }
- function local_config() {
- $cfg = <<<EOF
- <?php
- defined('IN_IA') or exit('Access Denied');
- \$config = array();
- \$config['db']['master']['host'] = '{db-server}';
- \$config['db']['master']['username'] = '{db-username}';
- \$config['db']['master']['password'] = '{db-password}';
- \$config['db']['master']['port'] = '{db-port}';
- \$config['db']['master']['database'] = '{db-name}';
- \$config['db']['master']['charset'] = 'utf8';
- \$config['db']['master']['pconnect'] = 0;
- \$config['db']['master']['tablepre'] = '{db-tablepre}';
- \$config['db']['slave_status'] = false;
- \$config['db']['slave']['1']['host'] = '';
- \$config['db']['slave']['1']['username'] = '';
- \$config['db']['slave']['1']['password'] = '';
- \$config['db']['slave']['1']['port'] = '3307';
- \$config['db']['slave']['1']['database'] = '';
- \$config['db']['slave']['1']['charset'] = 'utf8';
- \$config['db']['slave']['1']['pconnect'] = 0;
- \$config['db']['slave']['1']['tablepre'] = 'ims_';
- \$config['db']['slave']['1']['weight'] = 0;
- \$config['db']['common']['slave_except_table'] = array('core_sessions');
- // -------------------------- CONFIG COOKIE --------------------------- //
- \$config['cookie']['pre'] = '{cookiepre}';
- \$config['cookie']['domain'] = '';
- \$config['cookie']['path'] = '/';
- // -------------------------- CONFIG SETTING --------------------------- //
- \$config['setting']['charset'] = 'utf-8';
- \$config['setting']['cache'] = 'mysql';
- \$config['setting']['timezone'] = 'Asia/Shanghai';
- \$config['setting']['memory_limit'] = '256M';
- \$config['setting']['filemode'] = 0644;
- \$config['setting']['authkey'] = '{authkey}';
- \$config['setting']['founder'] = '1';
- \$config['setting']['development'] = 0;
- \$config['setting']['referrer'] = 0;
- // -------------------------- CONFIG UPLOAD --------------------------- //
- \$config['upload']['image']['extentions'] = array('gif', 'jpg', 'jpeg', 'png');
- \$config['upload']['image']['limit'] = 5000;
- \$config['upload']['attachdir'] = '{attachdir}';
- \$config['upload']['audio']['extentions'] = array('mp3');
- \$config['upload']['audio']['limit'] = 5000;
- // -------------------------- CONFIG MEMCACHE --------------------------- //
- \$config['setting']['memcache']['server'] = '';
- \$config['setting']['memcache']['port'] = 11211;
- \$config['setting']['memcache']['pconnect'] = 1;
- \$config['setting']['memcache']['timeout'] = 30;
- \$config['setting']['memcache']['session'] = 1;
- // -------------------------- CONFIG PROXY --------------------------- //
- \$config['setting']['proxy']['host'] = '';
- \$config['setting']['proxy']['auth'] = '';
- EOF;
- return trim($cfg);
- }
- function local_mkdirs($path) {
- if(!is_dir($path)) {
- local_mkdirs(dirname($path));
- mkdir($path);
- }
- return is_dir($path);
- }
- function local_run($sql) {
- global $link, $db;
- if(!isset($sql) || empty($sql)) return;
- $sql = str_replace("\r", "\n", str_replace(' ims_', ' '.$db['prefix'], $sql));
- $sql = str_replace("\r", "\n", str_replace(' `ims_', ' `'.$db['prefix'], $sql));
- $ret = array();
- $num = 0;
- foreach(explode(";\n", trim($sql)) as $query) {
- $ret[$num] = '';
- $queries = explode("\n", trim($query));
- foreach($queries as $query) {
- $ret[$num] .= (isset($query[0]) && $query[0] == '#') || (isset($query[1]) && isset($query[1]) && $query[0].$query[1] == '--') ? '' : $query;
- }
- $num++;
- }
- unset($sql);
- foreach($ret as $query) {
- $query = trim($query);
- if($query) {
- $link->exec($query);
- if($link->errorCode() != '00000') {
- $errorInfo = $link->errorInfo();
- echo $errorInfo[0] . ": " . $errorInfo[2] . "<br />";
- exit($query);
- }
- }
- }
- }
- function local_create_sql($schema) {
- $pieces = explode('_', $schema['charset']);
- $charset = $pieces[0];
- $engine = $schema['engine'];
- $sql = "CREATE TABLE IF NOT EXISTS `{$schema['tablename']}` (\n";
- foreach ($schema['fields'] as $value) {
- if(!empty($value['length'])) {
- $length = "({$value['length']})";
- } else {
- $length = '';
- }
- $signed = empty($value['signed']) ? ' unsigned' : '';
- if(empty($value['null'])) {
- $null = ' NOT NULL';
- } else {
- $null = '';
- }
- if(isset($value['default'])) {
- $default = " DEFAULT '" . $value['default'] . "'";
- } else {
- $default = '';
- }
- if($value['increment']) {
- $increment = ' AUTO_INCREMENT';
- } else {
- $increment = '';
- }
- $sql .= "`{$value['name']}` {$value['type']}{$length}{$signed}{$null}{$default}{$increment},\n";
- }
- foreach ($schema['indexes'] as $value) {
- $fields = implode('`,`', $value['fields']);
- if($value['type'] == 'index') {
- $sql .= "KEY `{$value['name']}` (`{$fields}`),\n";
- }
- if($value['type'] == 'unique') {
- $sql .= "UNIQUE KEY `{$value['name']}` (`{$fields}`),\n";
- }
- if($value['type'] == 'primary') {
- $sql .= "PRIMARY KEY (`{$fields}`),\n";
- }
- }
- $sql = rtrim($sql);
- $sql = rtrim($sql, ',');
- $sql .= "\n) ENGINE=$engine DEFAULT CHARSET=$charset;\n\n";
- return $sql;
- }
- function remote_install() {
- global $family;
- $token = '';
- $pars = array();
- $pars['host'] = $_SERVER['HTTP_HOST'];
- $pars['version'] = '1.0';
- $pars['type'] = 'install';
- $pars['method'] = 'application.install';
- $url = $_SERVER['HTTP_HOST'].'/gateway.php';
- $urlset = parse_url($url);
- $cloudip = gethostbyname($urlset['host']);
- $headers[] = "Host: {$urlset['host']}";
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $urlset['scheme'] . '://' . $cloudip . $urlset['path']);
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($pars, '', '&'));
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
- $content = curl_exec($ch);
- curl_close($ch);
- if (empty($content)) {
- return showerror(-1, '获取安装信息失败,可能是由于网络不稳定,请重试。');
- }
- return $content;
- }
- function tpl_frame() {
- global $action, $actions;
- $action = $_COOKIE['action'];
- $step = array_search($action, $actions);
- $steps = array();
- for($i = 0; $i <= $step; $i++) {
- if($i == $step) {
- $steps[$i] = ' list-group-item-info';
- } else {
- $steps[$i] = ' list-group-item-success';
- }
- }
- $progress = $step * 25 + 25;
- $content = ob_get_contents();
- ob_clean();
- $tpl = <<<EOF
- <!DOCTYPE html>
- <html lang="zh-cn">
- <head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>安装系统 - 微擎 - 公众平台自助开源引擎</title>
- <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.2.0/css/bootstrap.min.css">
- <style>
- html,body{font-size:13px;font-family:"Microsoft YaHei UI", "微软雅黑", "宋体";}
- .pager li.previous a{margin-right:10px;}
- .header a{color:#FFF;}
- .header a:hover{color:#428bca;}
- .footer{padding:10px;}
- .footer a,.footer{color:#eee;font-size:14px;line-height:25px;}
- </style>
- <!--[if lt IE 9]>
- <script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
- <script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
- <![endif]-->
- </head>
- <body style="background-color:#28b0e4;">
- <div class="container" style="width:1200px;">
- <div class="header" style="margin:15px auto;">
- <ul class="nav nav-pills pull-right" role="tablist">
- <li role="presentation" class="active"><a href="javascript:;">安装微擎系统</a></li>
- <li role="presentation"><a href="http://www.we7.cc">微擎官网</a></li>
- <li role="presentation"><a href="http://bbs.we7.cc">访问论坛</a></li>
- </ul>
- <img src="?res=logo" />
- </div>
- <div class="row well" style="margin:auto 0;">
- <div class="col-xs-2" style="padding:0; width:14%;">
- <div class="progress" title="安装进度">
- <div class="progress-bar progress-bar-info progress-bar-striped active" role="progressbar" aria-valuenow="{$progress}" aria-valuemin="0" aria-valuemax="100" style="width: {$progress}%;">
- {$progress}%
- </div>
- </div>
- <div class="panel panel-default">
- <div class="panel-heading">
- 安装步骤
- </div>
- <ul class="list-group">
- <a href="javascript:;" class="list-group-item{$steps[0]}"><span class="glyphicon glyphicon-copyright-mark"></span> 许可协议</a>
- <a href="javascript:;" class="list-group-item{$steps[1]}"><span class="glyphicon glyphicon-eye-open"></span> 环境监测</a>
- <a href="javascript:;" class="list-group-item{$steps[2]}"><span class="glyphicon glyphicon-cog"></span> 参数配置</a>
- <a href="javascript:;" class="list-group-item{$steps[3]}"><span class="glyphicon glyphicon-ok"></span> 成功</a>
- </ul>
- </div>
- </div>
- <div class="col-xs-10">
- {$content}
- </div>
- </div>
- <div class="footer" style="margin:15px auto;">
- <div class="text-center">
- <a href="http://www.we7.cc">关于微擎</a> <a href="http://bbs.we7.cc">微擎帮助</a> <a href="http://www.we7.cc">购买授权</a>
- </div>
- <div class="text-center">
- Powered by <a href="http://www.we7.cc"><b>微擎</b></a> v1.x © 2018 <a href="http://www.we7.cc">www.we7.cc</a>
- </div>
- </div>
- </div>
- <script src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>
- <script src="http://cdn.bootcss.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
- </body>
- </html>
- EOF;
- echo trim($tpl);
- }
- function tpl_install_license() {
- echo <<<EOF
- <div class="panel panel-default">
- <div class="panel-heading">阅读许可协议</div>
- <div class="panel-body" style="overflow-y:scroll;max-height:400px;line-height:20px;">
- <h3>微擎1.70商业纯净版安装说明</h3>
- <p>
- <li>本微擎由微擎提供</li>
-
- </p>
-
- <p>
- <strong>0x2 版本介绍 </strong>
- <ol>
- <li>0xA 删除所有附件</li>
- <li>0xB 删除测试公众号</li>
- <li>0xC 删除授权和盗版检测</li>
- </ol>
- </p>
- <p>
- <strong>0x3 数据库优化说明 </strong>
- <ol>
- <li>0xA 删除所有数据后自增ID归1</li>
- <li>0xB 删除沉余数据</li>
- </ol>
- </p>
- <p>
- <strong>0x4 对应版本 </strong>
- <ol>
- <li>微擎1.7.0 20180202150514</li>
- </ol>
- </p>
- </div>
- </div>
- <form class="form-inline" role="form" method="post">
- <ul class="pager">
- <li class="pull-left" style="display:block;padding:5px 10px 5px 0;">
- <div class="checkbox">
- <label>
- <input type="checkbox"> 我已经阅读并同意此协议
- </label>
- </div>
- </li>
- <li class="previous"><a href="javascript:;" onclick="if(jQuery(':checkbox:checked').length == 1){jQuery('form')[0].submit();}else{alert('您必须同意软件许可协议才能安装!')};">继续 <span class="glyphicon glyphicon-chevron-right"></span></a></li>
- </ul>
- </form>
- EOF;
- tpl_frame();
- }
- function tpl_install_env($ret = array()) {
- if(empty($ret['continue'])) {
- $continue = '<li class="previous disabled"><a href="javascript:;">请先解决环境问题后继续</a></li>';
- } else {
- $continue = '<li class="previous"><a href="javascript:;" onclick="$(\'#do\').val(\'continue\');$(\'form\')[0].submit();">继续 <span class="glyphicon glyphicon-chevron-right"></span></a></li>';
- }
- echo <<<EOF
- <div class="panel panel-default">
- <div class="panel-heading">服务器信息</div>
- <table class="table table-striped">
- <tr>
- <th style="width:150px;">参数</th>
- <th>值</th>
- <th></th>
- </tr>
- <tr class="{$ret['server']['os']['class']}">
- <td>服务器操作系统</td>
- <td>{$ret['server']['os']['value']}</td>
- <td>{$ret['server']['os']['remark']}</td>
- </tr>
- <tr class="{$ret['server']['sapi']['class']}">
- <td>Web服务器环境</td>
- <td>{$ret['server']['sapi']['value']}</td>
- <td>{$ret['server']['sapi']['remark']}</td>
- </tr>
- <tr class="{$ret['server']['php']['class']}">
- <td>PHP版本</td>
- <td>{$ret['server']['php']['value']}</td>
- <td>{$ret['server']['php']['remark']}</td>
- </tr>
- <tr class="{$ret['server']['dir']['class']}">
- <td>程序安装目录</td>
- <td>{$ret['server']['dir']['value']}</td>
- <td>{$ret['server']['dir']['remark']}</td>
- </tr>
- <tr class="{$ret['server']['disk']['class']}">
- <td>磁盘空间</td>
- <td>{$ret['server']['disk']['value']}</td>
- <td>{$ret['server']['disk']['remark']}</td>
- </tr>
- <tr class="{$ret['server']['upload']['class']}">
- <td>上传限制</td>
- <td>{$ret['server']['upload']['value']}</td>
- <td>{$ret['server']['upload']['remark']}</td>
- </tr>
- </table>
- </div>
- <div class="alert alert-info">PHP环境要求必须满足下列所有条件,否则系统或系统部份功能将无法使用。</div>
- <div class="panel panel-default">
- <div class="panel-heading">PHP环境要求</div>
- <table class="table table-striped">
- <tr>
- <th style="width:150px;">选项</th>
- <th style="width:180px;">要求</th>
- <th style="width:50px;">状态</th>
- <th>说明及帮助</th>
- </tr>
- <tr class="{$ret['php']['version']['class']}">
- <td>PHP版本</td>
- <td>5.3或者5.3以上</td>
- <td>{$ret['php']['version']['value']}</td>
- <td>{$ret['php']['version']['remark']}</td>
- </tr>
- <tr class="{$ret['php']['curl']['class']}">
- <td>cURL</td>
- <td>支持</td>
- <td>{$ret['php']['curl']['value']}</td>
- <td>{$ret['php']['curl']['remark']}</td>
- </tr>
- <tr class="{$ret['php']['pdo']['class']}">
- <td>PDO</td>
- <td>支持</td>
- <td>{$ret['php']['pdo']['value']}</td>
- <td>{$ret['php']['pdo']['remark']}</td>
- </tr>
- <tr class="{$ret['php']['ssl']['class']}">
- <td>openSSL</td>
- <td>支持</td>
- <td>{$ret['php']['ssl']['value']}</td>
- <td>{$ret['php']['ssl']['remark']}</td>
- </tr>
- <tr class="{$ret['php']['gd']['class']}">
- <td>GD2</td>
- <td>支持</td>
- <td>{$ret['php']['gd']['value']}</td>
- <td>{$ret['php']['gd']['remark']}</td>
- </tr>
- <tr class="{$ret['php']['dom']['class']}">
- <td>DOM</td>
- <td>支持</td>
- <td>{$ret['php']['dom']['value']}</td>
- <td>{$ret['php']['dom']['remark']}</td>
- </tr>
- <tr class="{$ret['php']['session']['class']}">
- <td>session.auto_start</td>
- <td>关闭</td>
- <td>{$ret['php']['session']['value']}</td>
- <td>{$ret['php']['session']['remark']}</td>
- </tr>
- <tr class="{$ret['php']['asp_tags']['class']}">
- <td>asp_tags</td>
- <td>关闭</td>
- <td>{$ret['php']['asp_tags']['value']}</td>
- <td>{$ret['php']['asp_tags']['remark']}</td>
- </tr>
- </table>
- </div>
- <div class="alert alert-info">系统要求微擎整个安装目录必须可写, 才能使用微擎所有功能。</div>
- <div class="panel panel-default">
- <div class="panel-heading">目录权限监测</div>
- <table class="table table-striped">
- <tr>
- <th style="width:150px;">目录</th>
- <th style="width:180px;">要求</th>
- <th style="width:50px;">状态</th>
- <th>说明及帮助</th>
- </tr>
- <tr class="{$ret['write']['root']['class']}">
- <td>/</td>
- <td>整目录可写</td>
- <td>{$ret['write']['root']['value']}</td>
- <td>{$ret['write']['root']['remark']}</td>
- </tr>
- <tr class="{$ret['write']['data']['class']}">
- <td>/</td>
- <td>data目录可写</td>
- <td>{$ret['write']['data']['value']}</td>
- <td>{$ret['write']['data']['remark']}</td>
- </tr>
- </table>
- </div>
- <form class="form-inline" role="form" method="post">
- <input type="hidden" name="do" id="do" />
- <ul class="pager">
- <li class="previous"><a href="javascript:;" onclick="$('#do').val('back');$('form')[0].submit();"><span class="glyphicon glyphicon-chevron-left"></span> 返回</a></li>
- {$continue}
- </ul>
- </form>
- EOF;
- tpl_frame();
- }
- function tpl_install_db($error = '') {
- if(!empty($error)) {
- $message = '<div class="alert alert-danger">发生错误: ' . $error . '</div>';
- }
- $insTypes = array();
- if(file_exists(IA_ROOT . '/index.php') && is_dir(IA_ROOT . '/app') && is_dir(IA_ROOT . '/web')) {
- $insTypes['local'] = ' checked="checked"';
- } else {
- $insTypes['remote'] = ' checked="checked"';
- }
- if (!empty($_POST['type'])) {
- $insTypes = array();
- $insTypes[$_POST['type']] = ' checked="checked"';
- }
- $disabled = empty($insTypes['local']) ? ' disabled="disabled"' : '';
- echo <<<EOF
- {$message}
- <form class="form-horizontal" method="post" role="form">
- <div class="panel panel-default">
- <div class="panel-heading">安装选项</div>
- <div class="panel-body">
- <div class="form-group">
- <label class="col-sm-2 control-label">安装方式</label>
- <div class="col-sm-10">
- <label class="radio-inline">
- <input type="radio" name="type" value="local"{$insTypes['local']}{$disabled}> 离线安装
- </label>
- </div>
- </div>
- </div>
- </div>
- <div class="panel panel-default">
- <div class="panel-heading">数据库选项</div>
- <div class="panel-body">
- <div class="form-group">
- <label class="col-sm-2 control-label">数据库主机</label>
- <div class="col-sm-4">
- <input class="form-control" type="text" name="db[server]" value="127.0.0.1">
- </div>
- </div>
- <div class="form-group">
- <label class="col-sm-2 control-label">数据库用户</label>
- <div class="col-sm-4">
- <input class="form-control" type="text" name="db[username]" value="">
- </div>
- </div>
- <div class="form-group">
- <label class="col-sm-2 control-label">数据库密码</label>
- <div class="col-sm-4">
- <input class="form-control" type="text" name="db[password]">
- </div>
- </div>
- <div class="form-group">
- <label class="col-sm-2 control-label">表前缀</label>
- <div class="col-sm-4">
- <input class="form-control" type="text" name="db[prefix]" value="ims_">
- </div>
- </div>
- <div class="form-group">
- <label class="col-sm-2 control-label">数据库名称</label>
- <div class="col-sm-4">
- <input class="form-control" type="text" name="db[name]" value="">
- </div>
- </div>
- </div>
- </div>
- <div class="panel panel-default">
- <div class="panel-heading">管理选项</div>
- <div class="panel-body">
- <div class="form-group">
- <label class="col-sm-2 control-label">管理员账号</label>
- <div class="col-sm-4">
- <input class="form-control" type="username" name="user[username]">
- </div>
- </div>
- <div class="form-group">
- <label class="col-sm-2 control-label">管理员密码</label>
- <div class="col-sm-4">
- <input class="form-control" type="password" name="user[password]">
- </div>
- </div>
- <div class="form-group">
- <label class="col-sm-2 control-label">确认密码</label>
- <div class="col-sm-4">
- <input class="form-control" type="password"">
- </div>
- </div>
- </div>
- </div>
- <input type="hidden" name="do" id="do" />
- <ul class="pager">
- <li class="previous"><a href="javascript:;" onclick="$('#do').val('back');$('form')[0].submit();"><span class="glyphicon glyphicon-chevron-left"></span> 返回</a></li>
- <li class="previous"><a href="javascript:;" onclick="if(check(this)){jQuery('#do').val('continue');if($('input[name=type]:checked').val() == 'remote'){alert('在线安装时,安装程序会下载精简版快速完成安装,完成后请务必注册云服务更新到完整版。')}$('form')[0].submit();}">继续 <span class="glyphicon glyphicon-chevron-right"></span></a></li>
- </ul>
- </form>
- <script>
- var lock = false;
- function check(obj) {
- if(lock) {
- return;
- }
- $('.form-control').parent().parent().removeClass('has-error');
- var error = false;
- $('.form-control').each(function(){
- if($(this).val() == '') {
- $(this).parent().parent().addClass('has-error');
- this.focus();
- error = true;
- }
- });
- if(error) {
- alert('请检查未填项');
- return false;
- }
- if($(':password').eq(0).val() != $(':password').eq(1).val()) {
- $(':password').parent().parent().addClass('has-error');
- alert('确认密码不正确.');
- return false;
- }
- lock = true;
- $(obj).parent().addClass('disabled');
- $(obj).html('正在执行安装');
- return true;
- }
- </script>
- EOF;
- tpl_frame();
- }
- function tpl_install_finish() {
- $modules = get_store_module();
- $themes = get_store_theme();
- echo <<<EOF
- <div class="page-header"><h3>安装完成</h3></div>
- <div class="alert alert-danger"><i class="fa fa-exclamation-triangle"></i> 微擎为你提供优质的CMS!</div>
- <div class="alert alert-success">
- 恭喜您!已成功安装“微擎 - 公众平台自助开源引擎”系统,您现在可以: <a target="_blank" class="btn btn-success" href="./web/index.php">访问网站首页</a>
- </div>
- EOF;
- tpl_frame();
- }
- function tpl_resources() {
- static $res = array(
- 'logo' => 'iVBORw0KGgoAAAANSUhEUgAAAaQAAABfCAYAAACnbrNbAAAKBUlEQVR42u2dW67cuA5FM7seXw/wjiRITt/6KKBglG2S2qQoea2fBjqn/JAobpJ6+NcvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBX5/fv3Pz//58+fP/8qr/tzweue3drh9f4rPCdMwDNAvhnSi+gA+vv37/+yB+a3d3vd1/J3We8Pz+Sb3T1RkH4MYC0MkFsjUDjkd5SYMXiyBYnBA1mOeCRrWkmQvo297uPpymfNyiy3Gxxn4nL1sgpBity3syCpyy+wJ1d2PyoclYI0YvNXjj2rahJtu893rBakO1vZssQZiVIUgjQaGVk6S8m747uX68ja8u0/636jTrjKcY22T8dSXbUgqfxStXBPHYxnL3/llK0Oe7SBZwlSxrUz+69jKWZ2+80a+Hc2mzmeFYKkCMYq7KODIHW2/5ZEDEMlSIr5oxmCZCk1ZBlUdCAjSL5SUWZ7egXvZzLqzC5r/CBIm9exXwb2zbGoBEkxfzRDkLKcbeb7IUh6e4lkG3fOOLOsM9quqrmMzg56ZUFaev7aEqWcORaVIGXXQ7MWNVQOIARJ944ZwYsyOzqzuVUyJEubdM8YVhakpeeRrJ05Q5BGlP5OaEcFKdPRIki50WH3UmEHJ65ysh2qGU8QpEcsYvhs/CxBGq0jn5UGMlPZiNjd/fbu2RAkzftFrmNte6t9Ra/RTZAs7fLtfbrOKXYTpK1WzI0OzGNjZAnSqMP6JkiZEZhVQL3tXlVm2n2uc7Q8fXaN0X5XrKzrJkiRLElto1nzKZWC9OvpRIwiS5AyJpSz67PqiNISCZ399nOA7C5IoxPpo+1j6fuRZzj+1nI91b0q/MlIxUMRVCNIDYke0ZEhSIpln98GcScU2dGxHbMc7srZ0d27WWxNMf905QSv3uH4u8yyk1qQVNm7J5vJPmoIQWoSaZ4ZaoYgKeYXPp+3Yr4iIqJXba6sE+8sSKPOTOXAMsq1x9+oTgCoEiRFIOgZB6PBCYLUjMjEeoYgqQTi6j7qkse3ExpGTm2YXYpd2V6VixmsDjEqbB4xVTnuSkGyON2qjbCKvkaQJpfuvpUMPv+fOvuwboY96/TPZ7P8jVqQPtvEO/E9M0rdMTsacTDeclGk9OdZyDDitEcE6eoZrW1j3TaBINUuPFluoB876NjQmacSRAfo3ZL0rAGtqqdn7KZ+qiApRCRzMr2qXDxbkI73zJ5zmiFIUb+CIDmivW4RjMV4PWWOSkGyiuMMx72iwSrmftRzDp52VpWp3k60uyC9r1OxCAJBekD5b8ZRLxFBOg6oz4Gvms9RTVhXle12NFhF+6lXZHnbWTkmuguSalECgoQg3UZzmUfWnzXqmTM52390tsDgOKgsn42uiHyVA383g1VlNup28V5PufkbQUKQHiNIVS+rGMzee3gF6apU2GHAPEGQVAI+W5BGbMYzH7WKICnFK9JPCBJi5DIyS0RYaVAjxvUezCMnPDxRkBRLvbPaJVICzJzXRJAQpK0E6a7T3wapLE1ZI9+OgjRyJlpm2W4ng1Vmkd0EybqdwrtkGkHKFyT12XjHd3ivaFZca8t5I+uEqleQ3gPxasPt2T2rIxylUI6WIp8gSLOXaWcIUuQ9R51RN0H6aUoXQTouzPIK9Bang1evFnp36qvxX/+NnHWXFbFF5wVU983YyLuiIFWvipslSJHfdxak40ZxBMneb8f29xzh1iGTLXHAmYJ0NxCu/i3j2JOrzr66n2KZ/Kz+XNUuvQOvoyBFs7/OgnT3DgiSfQojUvLP8ottotAKQTrLgjrOH2VRWRJ5WnbUZQ7J+jzK+YNKQboaxwiSZl9k9EvD24hR1Ut6Fz7sJkiq2u8OgpTRVup2GbleZmY1M2CyLD7YQZCi14xc4xg0XPntZeePvHsiupQOPc/U4bSJGWW71QUp67MCXQRp1AF1FiRLeyBI52JiEZkty3Wz5jdUAqKI1roJCXNIuc/fQZBUtrayIGUEKZFnqlil63kWy6nh25brvEfedMvaZkQCV4KJINXZZWb9PrOsqDyNvqMg3Y3fkXLSEwTJMmdVUfJfIkvK7iivSHabc0OQ+j979TLyowNXnXvYVZAyg8inCNKdj9myXBeJ2CoEyXrdWZEAgjT/2TOjbM+gjm7aVS18WVGQMqsnqwuSZbP96guV3IPKs6ItS5AsIqncnb/bgoaVBSljqXeW4EWfdbRsp15dqIqq7wT623PPHm/VX4y9+rtRQVp+M+zx5e+ikCpBmvERNQTpOZmd6h5RZzdj7jYqSB5Hdye0HTfIVgvSlW/7bJ9IaffXLrxXd3QRJPXEHYK0hgEry2mjmc3dfUbP2Kuu+1c8Z8TeugvSVT9bBSRa8n9kduRxCtYGi/6dteO8AxhBqss0VhBRa/S5k+ArBOnK+UU/EdJdkBQZjfV9IwHadtlRR0GK1KI7zHE8pfR11z+RaM0y+JRR4EjUWf2s3QTp2+/uss6z9kCQxgV7+ZV1mYLkmbj8vOfdZya6dEIXQZqZrWWIXXUUaI0+o/uIVpqbUxzgmmlLMwXJOt5HBensOSoW+SBIH9c7/k5xtp5qr0fnEt6se1sduSdDGPnIYUdRzwyWPtvf08aR5/WcCFDhNGcs+7bezyJI3kNrKdk5BMnzfSJrpBI55gdBqr23NWBQf8U1y8mr20xVqlOXBTMFyfPV5ycLkqcPVL7wMYLk+T5RdcqNIK2VIc0ebFXln5EIeIYgWb9IWtV3I4Kknis99vWoIKnsYrvVdlZB6rSSxmMcCFKvOSRLxlUxyCoyI7VdZguS9d5VgnRnK5XzxZ4joTzirjzr8DGCZJ3Aq564nD05/JRFDcpVdp0GVzQyndVvynb29rFl36I6mKi2E4+I3/lEy7VW9YnTBclbslA0qvo4oRUitO7s3AZZWdusxRNZjq6TWFeV67wCfifa3gOlM+1kOUHyZkfKOnm2QZImw0qZrcfRKD9UeQw8R77o3HX8eYPPimmCSFst/zmKO+PyGsSI4nuWkFcdKbNtx0PrsuConSsdpnXOyZtFdhp/3uw4WrJ7/S56dufjS3bRTaF3nXp2T8/AqkjTyY6gysY6Z2dWUakUa3VZylsJuvv7O78Vbe/tV9zdZUjf/t17QKGlYT3Xqz5SZqsaLUwt21XbTkVZ7D0+qwLCzOqE9V6RjbGWvhnJLLcvKXgE5uy6lvt6jXfWgN32hF2gbDjJuXUslVuyPu/RQd+e+7NfvO8V8cnbCJJFYKLGGOkEXAzAftljpznb43mbWX5uNGsmUAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWJ3/AIF0KX5bB+kqAAAAAElFTkSuQmCC',
- );
- return $res;
- }
- function showerror($errno, $message = '') {
- return array(
- 'errno' => $errno,
- 'error' => $message,
- );
- }
- function get_store_module() {
- load()->func('communication');
- $response = ihttp_request(APP_STORE_API, array('controller' => 'store', 'action' => 'api', 'do' => 'module'));
- $response = json_decode($response['content'], true);
- $modules = '';
- foreach ($response['message'] as $key => $module) {
- if ($key % 3 < 1) {
- $modules .= '</tr><tr>';
- }
- $module['detail_link'] = APP_STORE_URL . trim($module['detail_link'], '.');
- $modules .= '<td>';
- $modules .= '<div class="col-sm-4">';
- $modules .= '<a href="' . $module['detail_link'] . '" title="查看详情" target="_blank">';
- $modules .= '<img src="' . $module['logo']. '"' . ' width="50" height="50" ' . $module['title'] . '" /></a>';
- $modules .= '</div>';
- $modules .= '<div class="col-sm-8">';
- $modules .= '<p><a href="' . $module['detail_link'] .'" title="查看详情" target="_blank">' . $module['title'] . '</a></p>';
- $modules .= '<p>安装量:<span class="text-danger">' . $module['purchases'] . '</span></p>';
- $modules .= '</div>';
- $modules .= '</td>';
- }
- $modules = substr($modules, 5) . '</tr>';
- return $modules;
- }
- function get_store_theme() {
- load()->func('communication');
- $response = ihttp_request(APP_STORE_API, array('controller' => 'store', 'action' => 'api', 'do' => 'theme'));
- $response = json_decode($response['content'], true);
- $themes = '<tr><td colspan="' . count($response['message']) . '">';
- $themes .= '<div class="form-group">';
- foreach ($response['message'] as $key => $theme) {
- $theme['detail_link'] = APP_STORE_URL . trim($theme['detail_link'], '.');
- $themes .= '<div class="col-sm-2" style="padding-left: 7px;margin-right: 25px;">';
- $themes .= '<a href="' . $theme['detail_link'] .'" title="查看详情" target="_blank" /><img src="' . $theme['logo']. '" /></a>';
- $themes .= '<p></p><p class="text-right">';
- $themes .= '<a href="' . $theme['detail_link']. '" title="查看详情" target="_blank">' . $theme['title'] . '</a></p>';
- $themes .= '</div>';
- }
- $themes .= '</div>';
- return $themes;
- }
|