attachment.mod.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <?php
  2. /**
  3. * [WeEngine System] Copyright (c) 2014 WE7.CC
  4. * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
  5. */
  6. defined('IN_IA') or exit('Access Denied');
  7. function attachment_set_attach_url() {
  8. global $_W;
  9. if (empty($_W['setting']['remote_complete_info'])) {
  10. $_W['setting']['remote_complete_info'] = empty($_W['setting']['remote']) ? '' : $_W['setting']['remote'];
  11. }
  12. if (!empty($_W['uniacid'])) {
  13. $uni_remote_setting = uni_setting_load('remote');
  14. if (!empty($uni_remote_setting['remote']['type'])) {
  15. $_W['setting']['remote'] = $uni_remote_setting['remote'];
  16. }
  17. }
  18. $attach_url = $_W['attachurl_local'] = $_W['siteroot'] . $_W['config']['upload']['attachdir'] . '/';
  19. if (!empty($_W['setting']['remote']['type'])) {
  20. if ($_W['setting']['remote']['type'] == ATTACH_FTP) {
  21. $attach_url = $_W['attachurl_remote'] = $_W['setting']['remote']['ftp']['url'] . '/';
  22. } elseif ($_W['setting']['remote']['type'] == ATTACH_OSS) {
  23. $attach_url = $_W['attachurl_remote'] = $_W['setting']['remote']['alioss']['url'] . '/';
  24. } elseif ($_W['setting']['remote']['type'] == ATTACH_QINIU) {
  25. $attach_url = $_W['attachurl_remote'] = $_W['setting']['remote']['qiniu']['url'] . '/';
  26. } elseif ($_W['setting']['remote']['type'] == ATTACH_COS) {
  27. $attach_url = $_W['attachurl_remote'] = $_W['setting']['remote']['cos']['url'] . '/';
  28. }
  29. }
  30. return $attach_url;
  31. }
  32. function attachment_alioss_datacenters() {
  33. $bucket_datacenter = array(
  34. 'oss-cn-hangzhou' => '杭州数据中心',
  35. 'oss-cn-qingdao' => '青岛数据中心',
  36. 'oss-cn-beijing' => '北京数据中心',
  37. 'oss-cn-hongkong' => '香港数据中心',
  38. 'oss-cn-shenzhen' => '深圳数据中心',
  39. 'oss-cn-shanghai' => '上海数据中心',
  40. 'oss-us-west-1' => '美国硅谷数据中心',
  41. );
  42. return $bucket_datacenter;
  43. }
  44. function attachment_newalioss_auth($key, $secret, $bucket, $internal = false) {
  45. load()->library('oss');
  46. $buckets = attachment_alioss_buctkets($key, $secret);
  47. $host = $internal ? '-internal.aliyuncs.com' : '.aliyuncs.com';
  48. $url = 'http://' . $buckets[$bucket]['location'] . $host;
  49. $filename = 'favicon.ico';
  50. try {
  51. $ossClient = new \OSS\OssClient($key, $secret, $url);
  52. $ossClient->uploadFile($bucket, $filename, IA_ROOT . '/web/resource/images/' . $filename);
  53. } catch (\OSS\Core\OssException $e) {
  54. return error(1, $e->getMessage());
  55. }
  56. return 1;
  57. }
  58. function attachment_alioss_buctkets($key, $secret) {
  59. load()->library('oss');
  60. $url = 'http://oss-cn-beijing.aliyuncs.com';
  61. try {
  62. $ossClient = new \OSS\OssClient($key, $secret, $url);
  63. } catch (\OSS\Core\OssException $e) {
  64. return error(1, $e->getMessage());
  65. }
  66. try {
  67. $bucketlistinfo = $ossClient->listBuckets();
  68. } catch (OSS\OSS_Exception $e) {
  69. return error(1, $e->getMessage());
  70. }
  71. $bucketlistinfo = $bucketlistinfo->getBucketList();
  72. $bucketlist = array();
  73. foreach ($bucketlistinfo as &$bucket) {
  74. $bucketlist[$bucket->getName()] = array('name' => $bucket->getName(), 'location' => $bucket->getLocation());
  75. }
  76. return $bucketlist;
  77. }
  78. function attachment_qiniu_auth($key, $secret, $bucket) {
  79. load()->library('qiniu');
  80. $auth = new Qiniu\Auth($key, $secret);
  81. $token = $auth->uploadToken($bucket);
  82. $config = new Qiniu\Config();
  83. $uploadmgr = new Qiniu\Storage\UploadManager($config);
  84. list($ret, $err) = $uploadmgr->putFile($token, 'favicon.ico', IA_ROOT . '/web/resource/images/favicon.ico');
  85. if ($err !== null) {
  86. $err = (array)$err;
  87. $err = (array)array_pop($err);
  88. $err = json_decode($err['body'], true);
  89. return error(-1, $err);
  90. } else {
  91. return true;
  92. }
  93. }
  94. function attachment_cos_auth($bucket, $appid, $key, $secret, $bucket_local = '') {
  95. if (!is_numeric($appid)) {
  96. return error(-1, '传入appid值不合法, 请重新输入');
  97. }
  98. if (!preg_match('/^[a-zA-Z0-9]{36}$/', $key)) {
  99. return error(-1, '传入secretid值不合法,请重新传入');
  100. }
  101. if (!preg_match('/^[a-zA-Z0-9]{32}$/', $secret)) {
  102. return error(-1, '传入secretkey值不合法,请重新传入');
  103. }
  104. load()->library('cosv5');
  105. try {
  106. $cosClient = new Qcloud\Cos\Client(
  107. array(
  108. 'region' => $bucket_local,
  109. 'credentials' => array(
  110. 'secretId' => $key,
  111. 'secretKey' => $secret))
  112. );
  113. $cosClient->Upload($bucket . '-' . $appid, 'favicon.ico', fopen(IA_ROOT . '/web/resource/images/favicon.ico', 'rb'));
  114. } catch (\Exception $e) {
  115. return error(-1, $e->getMessage());
  116. }
  117. return true;
  118. }
  119. function attachment_reset_uniacid($uniacid) {
  120. global $_W;
  121. if ($_W['role'] == ACCOUNT_MANAGE_NAME_FOUNDER) {
  122. if (empty($uniacid)) {
  123. $_W['uniacid'] = 0;
  124. } elseif ($uniacid > 0) {
  125. $_W['uniacid'] = $uniacid;
  126. }
  127. } else {
  128. $account = table('account');
  129. $accounts = $account->userOwnedAccount($_W['uid']);
  130. if (is_array($accounts) && isset($accounts[$uniacid])) {
  131. $_W['uniacid'] = $uniacid;
  132. }
  133. }
  134. return true;
  135. }
  136. function attachment_recursion_group($group_data = array(), $pid = 0) {
  137. if (empty($group_data)) {
  138. return array();
  139. }
  140. $return_data = array();
  141. foreach ($group_data as $key => $group_data_value) {
  142. if ($group_data_value['pid'] == $pid) {
  143. $return_data[$group_data_value['id']] = $group_data_value;
  144. $sub_group = attachment_recursion_group($group_data, $group_data_value['id']);
  145. if (0 == $pid) {
  146. $return_data[$group_data_value['id']]['sub_group'] = !empty($sub_group) ? $sub_group : array();
  147. }
  148. }
  149. }
  150. return $return_data;
  151. }
  152. function attachment_get_type($type_sign) {
  153. $attach_type = array(
  154. ATTACH_FTP => 'ftp',
  155. ATTACH_OSS => 'alioss',
  156. ATTACH_QINIU => 'qiniu',
  157. ATTACH_COS => 'cos',
  158. );
  159. return !empty($attach_type[$type_sign]) ? $attach_type[$type_sign] : '';
  160. }