misc_initsys.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: misc_initsys.php 36334 2017-01-03 01:32:35Z nemohou $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. if(file_exists(DISCUZ_ROOT.'./data/install.lock')) {
  12. exit('Access Denied');
  13. }
  14. if(!($_G['adminid'] == 1 && $_GET['formhash'] == formhash()) && $_G['setting']) {
  15. exit('Access Denied');
  16. }
  17. require_once libfile('function/cache');
  18. updatecache();
  19. require_once libfile('function/block');
  20. blockclass_cache();
  21. if($_G['config']['output']['tplrefresh']) {
  22. cleartemplatecache();
  23. }
  24. $plugins = array('qqconnect', 'cloudstat', 'soso_smilies', 'security', 'mobile', 'pcmgr_url_safeguard', 'manyou', 'cloudcaptcha', 'wechat');
  25. $opens = array('mobile', 'pcmgr_url_safeguard', 'security', 'cloudcaptcha');
  26. $checkcloses = array('cloudcaptcha');
  27. $cloudapps = array('qqconnect' => 'connect', 'cloudstat' => 'stats', 'soso_smilies' => 'smilies', 'security' => 'security', 'manyou' => 'manyou', 'cloudcaptcha' => 'captcha');
  28. $apps = C::t('common_setting')->fetch('cloud_apps', true);
  29. if (!$apps) {
  30. $apps = array();
  31. }
  32. if (!is_array($apps)) {
  33. $apps = dunserialize($apps);
  34. }
  35. unset($apps[0]);
  36. if($apps) {
  37. foreach($cloudapps as $key => $appname) {
  38. if($apps[$appname]['status'] == 'normal') {
  39. $opens[] = $key;
  40. }
  41. }
  42. }
  43. require_once libfile('function/plugin');
  44. require_once libfile('function/admincp');
  45. foreach($plugins as $pluginid) {
  46. $importfile = DISCUZ_ROOT.'./source/plugin/'.$pluginid.'/discuz_plugin_'.$pluginid.'.xml';
  47. if(!file_exists($importfile)) {
  48. continue;
  49. }
  50. $systemvalue = 2;
  51. $importtxt = @implode('', file($importfile));
  52. $pluginarray = getimportdata('Discuz! Plugin', $importtxt);
  53. $plugin = C::t('common_plugin')->fetch_by_identifier($pluginid);
  54. if($plugin) {
  55. $modules = unserialize($plugin['modules']);
  56. if($modules['system'] > 0) {
  57. if($pluginarray['plugin']['version'] != $plugin['version']) {
  58. pluginupgrade($pluginarray, '');
  59. if($pluginarray['upgradefile']) {
  60. $plugindir = DISCUZ_ROOT.'./source/plugin/'.$pluginarray['plugin']['directory'];
  61. if(file_exists($plugindir.'/'.$pluginarray['upgradefile'])) {
  62. @include_once $plugindir.'/'.$pluginarray['upgradefile'];
  63. }
  64. }
  65. }
  66. if($modules['system'] != $systemvalue) {
  67. $modules['system'] = $systemvalue;
  68. $modules = serialize($modules);
  69. C::t('common_plugin')->update($plugin['pluginid'], array('modules' => $modules));
  70. }
  71. continue;
  72. }
  73. C::t('common_plugin')->delete_by_identifier($pluginid);
  74. }
  75. if($plugin['available']) {
  76. $opens[] = $pluginid;
  77. }
  78. $pluginarray['plugin']['modules'] = unserialize(dstripslashes($pluginarray['plugin']['modules']));
  79. $pluginarray['plugin']['modules']['system'] = $systemvalue;
  80. $pluginarray['plugin']['modules'] = serialize($pluginarray['plugin']['modules']);
  81. plugininstall($pluginarray, '', in_array($pluginid, $opens));
  82. if($pluginarray['installfile']) {
  83. $plugindir = DISCUZ_ROOT.'./source/plugin/'.$pluginarray['plugin']['directory'];
  84. if(file_exists($plugindir.'/'.$pluginarray['installfile'])) {
  85. @include_once $plugindir.'/'.$pluginarray['installfile'];
  86. }
  87. }
  88. }
  89. if(!array_key_exists('security', $apps)) {
  90. Cloud::loadFile('Service_Client_Cloud');
  91. $Cloud_Service_Client_Cloud = new Cloud_Service_Client_Cloud;
  92. $return = $Cloud_Service_Client_Cloud->appOpenWithRegister('security');
  93. if($return['errCode']) {
  94. $plugin = C::t('common_plugin')->fetch_by_identifier('security');
  95. C::t('common_plugin')->update($plugin['pluginid'], array('available' => 0));
  96. }
  97. if($return['result']) {
  98. if($return['result']['sId'] && $return['result']['sKey']) {
  99. C::t('common_setting')->update_batch(array('my_siteid' => $return['result']['sId'], 'my_sitekey' => $return['result']['sKey']));
  100. updatecache('setting');
  101. }
  102. }
  103. }
  104. loadcache('setting', 1);
  105. if(!$_G['setting']['my_siteid']) {
  106. foreach($checkcloses as $pluginid) {
  107. $plugin = C::t('common_plugin')->fetch_by_identifier($pluginid);
  108. C::t('common_plugin')->update($plugin['pluginid'], array('available' => 0));
  109. }
  110. }
  111. ?>