PageRenderTime 48ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/api/manyou/Service/App.php

https://github.com/kuaileshike/upload
PHP | 257 lines | 175 code | 76 blank | 6 comment | 37 complexity | c758d6dbc88f414760a58ab85579acd6 MD5 | raw file
  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: App.php 29177 2012-03-28 05:56:17Z yexinhao $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. Cloud::loadFile('Service_AppException');
  12. class Cloud_Service_App {
  13. protected static $_instance;
  14. public static function getInstance() {
  15. if (!(self::$_instance instanceof self)) {
  16. self::$_instance = new self();
  17. }
  18. return self::$_instance;
  19. }
  20. public function __construct() {
  21. }
  22. public function checkCloudStatus() {
  23. global $_G;
  24. $res = false;
  25. $cloudStatus = $_G['setting']['cloud_status'];
  26. $sId = $_G['setting']['my_siteid'];
  27. $sKey = $_G['setting']['my_sitekey'];
  28. if($sId && $sKey) {
  29. switch($cloudStatus) {
  30. case 1:
  31. $res = 'cloud';
  32. break;
  33. case 2:
  34. $res = 'unconfirmed';
  35. break;
  36. default:
  37. $res = 'upgrade';
  38. }
  39. } elseif(!$cloudStatus && !$sId && !$sKey) {
  40. $res = 'register';
  41. } else {
  42. throw new Cloud_Service_AppException('Cloud status error!', 52101);
  43. }
  44. return $res;
  45. }
  46. public function getCloudApps($cache = true) {
  47. $apps = array();
  48. if($cache) {
  49. global $_G;
  50. $apps = $_G['setting']['cloud_apps'];
  51. } else {
  52. $apps = C::t('common_setting')->fetch('cloud_apps', true);
  53. }
  54. if (!$apps) {
  55. $apps = array();
  56. }
  57. if (!is_array($apps)) {
  58. $apps = dunserialize($apps);
  59. }
  60. unset($apps[0]);
  61. return $apps;
  62. }
  63. public function getCloudAppStatus($appName, $cache = true) {
  64. $res = false;
  65. $apps = $this->getCloudApps($cache);
  66. if ($apps && $apps[$appName]) {
  67. $res = ($apps[$appName]['status'] == 'normal');
  68. }
  69. return $res;
  70. }
  71. public function setCloudAppStatus($appName, $status, $cache = true, $updateCache = true) {
  72. $method = '_' . strtolower($appName) . 'StatusCallback';
  73. if(!method_exists($this, $method)) {
  74. throw new Cloud_Service_AppException('Cloud callback: ' . $method . ' not exists!', 51001);
  75. }
  76. try {
  77. $callbackRes = $this->$method($appName, $status);
  78. } catch (Exception $e) {
  79. throw new Cloud_Service_AppException($e);
  80. }
  81. if (!$callbackRes) {
  82. throw new Cloud_Service_AppException('Cloud callback: ' . $method . ' error!', 51003);
  83. }
  84. $apps = $this->getCloudApps($cache);
  85. $app = array('name' => $appName, 'status' => $status);
  86. $apps[$appName] = $app;
  87. C::t('common_setting')->update('cloud_apps', $apps);
  88. if ($updateCache) {
  89. require_once libfile('function/cache');
  90. updatecache(array('plugin', 'setting', 'styles'));
  91. cleartemplatecache();
  92. }
  93. return true;
  94. }
  95. private function _manyouStatusCallback($appName, $status) {
  96. $available = 0;
  97. if($status == 'normal') {
  98. $available = 1;
  99. }
  100. return C::t('common_setting')->update('my_app_status', $available);
  101. }
  102. private function _connectStatusCallback($appName, $status) {
  103. $available = 0;
  104. if($status == 'normal') {
  105. $available = 1;
  106. }
  107. $setting = C::t('common_setting')->fetch('connect', true);
  108. if(!$setting) {
  109. $setting = array();
  110. }
  111. $setting['allow'] = $available;
  112. C::t('common_setting')->update('connect', $setting);
  113. $this->setPluginAvailable('qqconnect', $available);
  114. return true;
  115. }
  116. private function _securityStatusCallback($appName, $status) {
  117. $available = 0;
  118. if($status == 'normal') {
  119. $available = 1;
  120. }
  121. $this->setPluginAvailable('security', $available);
  122. return true;
  123. }
  124. private function _storageStatusCallback($appName, $status) {
  125. $available = 0;
  126. if($status == 'normal') {
  127. $available = 1;
  128. }
  129. $this->setPluginAvailable('xf_storage', $available);
  130. return true;
  131. }
  132. private function _statsStatusCallback($appName, $status) {
  133. $available = 0;
  134. if($status == 'normal') {
  135. $available = 1;
  136. }
  137. $this->setPluginAvailable('cloudstat', $available);
  138. return true;
  139. }
  140. private function _searchStatusCallback($appName, $status) {
  141. $available = 0;
  142. if($status == 'normal') {
  143. $available = 1;
  144. }
  145. C::t('common_setting')->update('my_search_status', $available);
  146. if($available) {
  147. Cloud::loadFile('Service_SearchHelper');
  148. Cloud_Service_SearchHelper::allowSearchForum();
  149. }
  150. $this->setPluginAvailable('cloudsearch', $available);
  151. return true;
  152. }
  153. private function _smiliesStatusCallback($appName, $status) {
  154. $available = 0;
  155. if($status == 'normal') {
  156. $available = 1;
  157. }
  158. $this->setPluginAvailable('soso_smilies', $available);
  159. return true;
  160. }
  161. private function _qqgroupStatusCallback($appName, $status) {
  162. $available = 0;
  163. if($status == 'normal') {
  164. $available = 1;
  165. }
  166. $this->setPluginAvailable('qqgroup', $available);
  167. return true;
  168. }
  169. private function _unionStatusCallback($appName, $status) {
  170. return true;
  171. }
  172. function setPluginAvailable($identifier, $available) {
  173. $available = intval($available);
  174. $plugin = C::t('common_plugin')->fetch_by_identifier($identifier);
  175. if(!$plugin || !$plugin['pluginid']) {
  176. throw new Cloud_Service_AppException('Cloud plugin: ' . $identifier . ' not exists!', 51108);
  177. }
  178. C::t('common_plugin')->update($plugin['pluginid'], array('available' => $available));
  179. return true;
  180. }
  181. }