common.func.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  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 url($segment, $params = array(), $noredirect = false) {
  8. return murl($segment, $params, $noredirect);
  9. }
  10. function message($msg, $redirect = '', $type = '') {
  11. global $_W;
  12. if($redirect == 'refresh') {
  13. $redirect = $_W['script_name'] . '?' . $_SERVER['QUERY_STRING'];
  14. } elseif (!empty($redirect) && !strexists($redirect, 'http://')) {
  15. $urls = parse_url($redirect);
  16. $redirect = $_W['siteroot'] . 'app/index.php?' . $urls['query'];
  17. } else {
  18. $redirect = check_url_not_outside_link($redirect);
  19. }
  20. if($redirect == '') {
  21. $type = in_array($type, array('success', 'error', 'info', 'warning', 'ajax', 'sql')) ? $type : 'info';
  22. } else {
  23. $type = in_array($type, array('success', 'error', 'info', 'warning', 'ajax', 'sql')) ? $type : 'success';
  24. }
  25. if($_W['isajax'] || $type == 'ajax') {
  26. $vars = array();
  27. $vars['message'] = $msg;
  28. $vars['redirect'] = $redirect;
  29. $vars['type'] = $type;
  30. exit(json_encode($vars));
  31. }
  32. if (empty($msg) && !empty($redirect)) {
  33. header('location: '.$redirect);
  34. }
  35. $label = $type;
  36. if($type == 'error') {
  37. $label = 'danger';
  38. }
  39. if($type == 'ajax' || $type == 'sql') {
  40. $label = 'warning';
  41. }
  42. if (defined('IN_API')) {
  43. exit($msg);
  44. }
  45. include template('common/message', TEMPLATE_INCLUDEPATH);
  46. exit();
  47. }
  48. function itoast($msg, $redirect = '', $type = '') {
  49. return message($msg, $redirect, $type);
  50. }
  51. function checkauth() {
  52. global $_W, $engine;
  53. load()->model('mc');
  54. if(!empty($_W['member']) && (!empty($_W['member']['mobile']) || !empty($_W['member']['email']))) {
  55. return true;
  56. }
  57. if(!empty($_W['openid'])) {
  58. $fan = mc_fansinfo($_W['openid'], $_W['acid'], $_W['uniacid']);
  59. if (empty($fan) && $_W['account']['level'] == ACCOUNT_SERVICE_VERIFY) {
  60. $fan = mc_oauth_userinfo();
  61. if (!empty($fan['openid'])) {
  62. $fan = mc_fansinfo($fan['openid']);
  63. }
  64. }
  65. if(_mc_login(array('uid' => intval($fan['uid'])))) {
  66. return true;
  67. }
  68. if (defined('IN_API')) {
  69. $GLOBALS['engine']->died("抱歉,您需要先登录才能使用此功能,点击此处 <a href='".__buildSiteUrl(url('auth/login')) ."'>【登录】</a>");
  70. }
  71. }
  72. $forward = base64_encode($_SERVER['QUERY_STRING']);
  73. if($_W['isajax']) {
  74. $result = array();
  75. $result['url'] = url('auth/login', array('forward' => $forward), true);
  76. $result['act'] = 'redirect';
  77. exit(json_encode($result));
  78. } else {
  79. header("location: " . url('auth/login', array('forward' => $forward)), true);
  80. }
  81. exit;
  82. }
  83. function __buildSiteUrl($url) {
  84. global $_W, $engine;
  85. $mapping = array(
  86. '[from]' => $engine->message['from'],
  87. '[to]' => $engine->message['to'],
  88. '[uniacid]' => $_W['uniacid'],
  89. );
  90. $url = str_replace(array_keys($mapping), array_values($mapping), $url);
  91. $pass = array();
  92. $pass['openid'] = $engine->message['from'];
  93. $pass['acid'] = $_W['acid'];
  94. $sql = 'SELECT `fanid`,`salt`,`uid` FROM ' . tablename('mc_mapping_fans') . ' WHERE `acid`=:acid AND `openid`=:openid';
  95. $params = array();
  96. $params[':acid'] = $_W['acid'];
  97. $params[':openid'] = $pass['openid'];
  98. $fan = pdo_fetch($sql, $params);
  99. if(empty($fan) || !is_array($fan) || empty($fan['salt'])) {
  100. $fan = array('salt' => '');
  101. }
  102. $pass['time'] = TIMESTAMP;
  103. $pass['hash'] = md5("{$pass['openid']}{$pass['time']}{$fan['salt']}{$_W['config']['setting']['authkey']}");
  104. $auth = base64_encode(json_encode($pass));
  105. $vars = array();
  106. $vars['uniacid'] = $_W['uniacid'];
  107. $vars['__auth'] = $auth;
  108. $vars['forward'] = base64_encode($url);
  109. return $_W['siteroot'] . 'app/' . url('auth/forward', $vars);
  110. }
  111. function register_jssdk($debug = false){
  112. global $_W;
  113. if (defined('HEADER')) {
  114. echo '';
  115. return;
  116. }
  117. $sysinfo = array(
  118. 'uniacid' => $_W['uniacid'],
  119. 'acid' => $_W['acid'],
  120. 'siteroot' => $_W['siteroot'],
  121. 'siteurl' => $_W['siteurl'],
  122. 'attachurl' => $_W['attachurl'],
  123. 'cookie' => array('pre'=>$_W['config']['cookie']['pre'])
  124. );
  125. if (!empty($_W['acid'])) {
  126. $sysinfo['acid'] = $_W['acid'];
  127. }
  128. if (!empty($_W['openid'])) {
  129. $sysinfo['openid'] = $_W['openid'];
  130. }
  131. if (defined('MODULE_URL')) {
  132. $sysinfo['MODULE_URL'] = MODULE_URL;
  133. }
  134. $sysinfo = json_encode($sysinfo);
  135. $jssdkconfig = json_encode($_W['account']['jssdkconfig']);
  136. $debug = $debug ? 'true' : 'false';
  137. $script = <<<EOF
  138. <script src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
  139. <script type="text/javascript">
  140. window.sysinfo = window.sysinfo || $sysinfo || {};
  141. // jssdk config 对象
  142. jssdkconfig = $jssdkconfig || {};
  143. // 是否启用调试
  144. jssdkconfig.debug = $debug;
  145. jssdkconfig.jsApiList = [
  146. 'checkJsApi',
  147. 'onMenuShareTimeline',
  148. 'onMenuShareAppMessage',
  149. 'onMenuShareQQ',
  150. 'onMenuShareWeibo',
  151. 'hideMenuItems',
  152. 'showMenuItems',
  153. 'hideAllNonBaseMenuItem',
  154. 'showAllNonBaseMenuItem',
  155. 'translateVoice',
  156. 'startRecord',
  157. 'stopRecord',
  158. 'onRecordEnd',
  159. 'playVoice',
  160. 'pauseVoice',
  161. 'stopVoice',
  162. 'uploadVoice',
  163. 'downloadVoice',
  164. 'chooseImage',
  165. 'previewImage',
  166. 'uploadImage',
  167. 'downloadImage',
  168. 'getNetworkType',
  169. 'openLocation',
  170. 'getLocation',
  171. 'hideOptionMenu',
  172. 'showOptionMenu',
  173. 'closeWindow',
  174. 'scanQRCode',
  175. 'chooseWXPay',
  176. 'openProductSpecificView',
  177. 'addCard',
  178. 'chooseCard',
  179. 'openCard'
  180. ];
  181. wx.config(jssdkconfig);
  182. </script>
  183. EOF;
  184. echo $script;
  185. }
  186. function tourl($url) {
  187. $reg = '/^tel:(\d+)$/';
  188. if (preg_match($reg, $url)) {
  189. return $url;
  190. }
  191. return $url . '&wxref=mp.weixin.qq.com#wechat_redirect';
  192. }