SystemController.class.php 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. <?php
  2. /**
  3. * lionfish 商城系统
  4. *
  5. * ==========================================================================
  6. * @link http://www.liofis.com/
  7. * @copyright Copyright (c) 2015 liofis.com.
  8. * @license http://www.liofis.com/license.html License
  9. * ==========================================================================
  10. *
  11. * @author fish
  12. *
  13. */
  14. namespace Seller\Controller;
  15. class SystemController extends \Think\Controller {
  16. function __construct()
  17. {
  18. parent::__construct();
  19. }
  20. public function upgrade_check()
  21. {
  22. //get_config_by_name($name) ret.status
  23. //S('new_system_cloudversion', array('time' => time() ));
  24. $new_system_cloudversion = S('new_system_cloudversion');
  25. if( !empty($new_system_cloudversion) )
  26. {
  27. $last_time = $new_system_cloudversion['time'];
  28. $now_time = time() - 60 * 1;
  29. if($last_time < $now_time )
  30. {
  31. $data = $this->get_site_version(); // D('Home/Config')->get_config_by_name('site_version');
  32. if( empty($data['result']['version']) )
  33. {
  34. $data['status'] = 0;
  35. }
  36. S('new_system_cloudversion', array('time' => time() ));
  37. }else{
  38. $data = array('status' => 0, 'last_time' => $last_time, 'now_time' => $now_time );
  39. }
  40. }else{
  41. $data = $this->get_site_version(); // D('Home/Config')->get_config_by_name('site_version');
  42. if( empty($data['result']['version']) )
  43. {
  44. $data['status'] = 0;
  45. }
  46. S('new_system_cloudversion', array('time' => time() ));
  47. }
  48. echo json_encode( $data );
  49. die();
  50. }
  51. public function auth_upgrade()
  52. {
  53. $data = $this->get_site_version();
  54. $this->data = $data;
  55. include $this->display();
  56. }
  57. public function get_site_version()
  58. {
  59. $auth_url ="http://pintuan.liofis.com/upgrade_dan.php";
  60. $version_info = M('lionfish_comshop_config')->where( array('name' => 'site_version') )->find();
  61. $version = $version_info['value'];
  62. $cur_release_info = M('lionfish_comshop_config')->where( array('name' => 'site_version') )->find();
  63. $cur_release = $cur_release_info['value'];
  64. $url = D('Home/Front')->get_config_by_name('shop_domain');
  65. $release = $cur_release;
  66. $modname = 'lionfish_comshop';
  67. $domain = trim(preg_replace('/http(s)?:\\/\\//', '', rtrim($url, '/')));
  68. $ip = gethostbyname($_SERVER['HTTP_HOST']);
  69. $resp = http_request($auth_url, array('action' => 'check_version','ip' => $ip,'release' => $release,'version' => $version, 'domain' => $domain) );
  70. $data = @json_decode($resp, true);
  71. $data['cur_version'] = $version;
  72. $data['cur_release'] = $cur_release;
  73. return $data;
  74. }
  75. public function opupdate()
  76. {
  77. $upgrade = $this->update_site_version();
  78. S('cloud:shiziyushop:upgradev2', array('files' => $upgrade['result'], 'version' => $upgrade['result']['version'], 'release' => $upgrade['result']['release']));
  79. $filecount = count($upgrade['result']['admin_file_list'])+count($upgrade['result']['weprogram_file_list']);
  80. //show_json(1, array('result' => 1, 'version' => $upgrade['version'], 'release' => $upgrade['release'], 'filecount' => count($files), 'database' => !empty($database), 'upgrades' => !empty($upgrade['upgrades']), 'log' => $log, 'templatefiles' => $templatefiles));
  81. $this->filecount = $filecount;
  82. $this->upgrade = $upgrade;
  83. include $this->display();
  84. }
  85. private function update_site_version()
  86. {
  87. $auth_url ="http://pintuan.liofis.com/upgrade_dan.php";
  88. $url = D('Home/Front')->get_config_by_name('shop_domain');
  89. $version_info = M('lionfish_comshop_config')->where( array('name' => 'site_version') )->find();
  90. $release_info = M('lionfish_comshop_config')->where( array('name' => 'cur_release') )->find();
  91. $version = $version_info['value'];
  92. $release = $release_info['value'];
  93. $modname = 'lionfish_comshop';
  94. $domain = trim(preg_replace('/http(s)?:\\/\\//', '', rtrim($url, '/')));
  95. $ip = gethostbyname($_SERVER['HTTP_HOST']);
  96. $resp = http_request($auth_url, array('action' => 'get_version_file','ip' => $ip,'release' => $release,'version' => $version, 'domain' => $domain) );
  97. $data = @json_decode(gzuncompress($resp), true);
  98. $data['cur_version'] = $version;
  99. $data['cur_release'] = D('Home/Front')->get_config_by_name('cur_release');
  100. return $data;
  101. }
  102. private function get_upgrade_file($file)
  103. {
  104. $auth_url ="http://pintuan.liofis.com/upgrade_dan.php";
  105. //M('lionfish_comshop_config')->where( array('name' => 'site_version') )->save( array('value' => $version) );
  106. $version_info = M('lionfish_comshop_config')->where( array('name' => 'site_version') )->find();
  107. $release_info = M('lionfish_comshop_config')->where( array('name' => 'cur_release') )->find();
  108. $version = $version_info['value'];
  109. $release = $release_info['value'];
  110. //$version = D('Home/Front')->get_config_by_name('site_version');
  111. //$release = D('Home/Front')->get_config_by_name('cur_release');
  112. $url = D('Home/Front')->get_config_by_name('shop_domain');
  113. $modname = 'lionfish_comshop';
  114. $domain = trim(preg_replace('/http(s)?:\\/\\//', '', rtrim($url, '/')));
  115. $ip = gethostbyname($_SERVER['HTTP_HOST']);
  116. $resp = http_request($auth_url, array('action' => 'down_version_file','file' => $file,'ip' => $ip,'release' => $release,'version' => $version, 'domain' => $domain) );
  117. $data = @json_decode(gzuncompress($resp), true);
  118. $data['cur_version'] = $version;
  119. $data['cur_release'] = $release;
  120. return $data;
  121. }
  122. public function do_update()
  123. {
  124. $upgrade = S('cloud:shiziyushop:upgradev2');
  125. $files = $upgrade['files'];
  126. $version = $upgrade['version'];
  127. $release = $upgrade['release'];
  128. $filecount = count($files['admin_file_list'])+count($files['weprogram_file_list']);
  129. if( !empty($files['admin_file_list']) )
  130. {
  131. $file = array_shift($files['admin_file_list']);
  132. $filecount = $filecount -1;
  133. $file_data = $this->get_upgrade_file($file);
  134. //snailsh_shop
  135. $file = str_replace('snailsh_shop/','', $file);
  136. $dirpath = dirname($file);
  137. //SNAILFISH_PATH
  138. if (!is_dir(ROOT_PATH . $dirpath)) {
  139. RecursiveMkdir(ROOT_PATH . $dirpath);
  140. @chmod(ROOT_PATH . $dirpath, 511);
  141. }
  142. $base_file_content = $file_data['result']['base_file_content'];
  143. $content = base64_decode($base_file_content);
  144. $f = @file_put_contents(ROOT_PATH . $file, $content);
  145. if( $f )
  146. {
  147. S('cloud:shiziyushop:upgradev2', array('files' => $files, 'version' => $upgrade['version'],'release' => $upgrade['release']));
  148. echo json_encode( array('code' => 0,'msg' => '更新'.$file.'文件成功,还剩'.$filecount.'个文件') );
  149. die();
  150. }else{
  151. echo json_encode( array('code' => 1,'msg' => $dirpath.' 目录不可写') );
  152. die();
  153. }
  154. }else if( !empty($files['weprogram_file_list']) )
  155. {
  156. $file = array_shift($files['weprogram_file_list']);
  157. $filecount = $filecount -1;
  158. $file_data = $this->get_upgrade_file($file);
  159. //snailsh_shop
  160. $dirpath = dirname($file);
  161. //SNAILFISH_PATH
  162. if (!is_dir(ROOT_PATH .'Data/'.$version.'/'. $dirpath)) {
  163. RecursiveMkdir(ROOT_PATH .'Data/'.$version.'/'. $dirpath);
  164. @chmod(ROOT_PATH .'Data/'.$version.'/'. $dirpath, 511);
  165. }
  166. $base_file_content = $file_data['result']['base_file_content'];
  167. $content = base64_decode($base_file_content);
  168. $f = @file_put_contents(ROOT_PATH .'Data/'.$version.'/'. $file, $content);
  169. if( $f )
  170. {
  171. S('cloud:shiziyushop:upgradev2', array('files' => $files, 'version' => $upgrade['version'],'release' => $upgrade['release']));
  172. echo json_encode( array('code' => 0,'msg' => '更新'.$file.'文件成功,还剩'.$filecount.'个文件') );
  173. die();
  174. }else{
  175. echo json_encode( array('code' => 1,'msg' => 'Data/'.$version.' 目录不可写') );
  176. die();
  177. }
  178. }else if( !empty($files['sql_file']) )
  179. {
  180. $file = $files['sql_file'];
  181. $files['sql_file'] = '';
  182. $filecount = $filecount -1;
  183. $file_data = $this->get_upgrade_file($file);
  184. $dirpath = dirname($file);
  185. if (!is_dir(ROOT_PATH .'Data/'.$version.'/'. $dirpath)) {
  186. RecursiveMkdir(ROOT_PATH .'Data/'.$version.'/'. $dirpath);
  187. @chmod(ROOT_PATH .'Data/'.$version.'/'. $dirpath, 511);
  188. }
  189. $base_file_content = $file_data['result']['base_file_content'];
  190. $content = base64_decode($base_file_content);
  191. $f = @file_put_contents(ROOT_PATH .'Data/'.$version.'/'. $file, $content);
  192. if( $f )
  193. {
  194. include ROOT_PATH .'Data/'.$version.'/'. $file;
  195. M()->execute($sql_content);
  196. S('cloud:shiziyushop:upgradev2', array('files' => $files, 'version' => $upgrade['version'],'release' => $upgrade['release']));
  197. @unlink(ROOT_PATH .'Data/'.$version.'/'. $file);
  198. echo json_encode( array('code' => 0,'msg' => '更新sql文件成功,更新完成') );
  199. die();
  200. }else{
  201. echo json_encode( array('code' => 1,'msg' => 'Data/'.$version.' 目录不可写') );
  202. die();
  203. }
  204. }else{
  205. if( !empty($version) && !empty($release) )
  206. {
  207. M('lionfish_comshop_config')->where( array('name' => 'cur_release') )->save( array('value' => $release) );
  208. M('lionfish_comshop_config')->where( array('name' => 'site_version') )->save( array('value' => $version) );
  209. $c= D('Seller/Config')->get_all_config(true);
  210. }
  211. echo json_encode( array('code' => 2,'msg' => '更新完成') );
  212. die();
  213. }
  214. }
  215. }