SystemController.class.php 9.3 KB

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