member_sharemanage.php 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. <?php
  2. /**
  3. * 分享绑定
  4. ***/
  5. defined('InShopNC') or exit('Access Invalid!');
  6. class member_sharemanageControl extends BaseMemberControl {
  7. public function __construct(){
  8. parent::__construct();
  9. Language::read('member_sharemanage');
  10. //判断系统是否开启站外分享功能
  11. if (C('share_isuse') != 1){
  12. showMessage(Language::get('sharebind_unused'),'index.php?act=member_information&op=member','html','error');
  13. }
  14. }
  15. /**
  16. * 分享绑定列表
  17. */
  18. public function indexOp(){
  19. $model = Model('sns_binding');
  20. $app_arr = $model->getUsableApp($_SESSION['member_id']);
  21. //信息输出
  22. Tpl::output('app_arr',$app_arr);
  23. self::profile_menu('sns_binding');
  24. Tpl::showpage('member_sharebind');
  25. }
  26. /**
  27. * 解除绑定
  28. */
  29. public function unbindOp(){
  30. $type = $_GET['type'];
  31. if (empty($type)){
  32. showDialog(Language::get('wrong_argument'),'index.php?act=member_sharemanage','error');
  33. }
  34. $model = Model('sns_binding');
  35. $app_arr = $model->getApps();
  36. $appkey_arr = array_keys($app_arr);
  37. if (empty($appkey_arr) || !in_array($type,$appkey_arr)){
  38. showDialog(Language::get('wrong_argument'),'index.php?act=member_sharemanage','error');
  39. }
  40. //删除绑定信息
  41. $where_arr = array();
  42. $where_arr['snsbind_memberid'] = $_SESSION['member_id'];
  43. $where_arr['snsbind_appsign'] = $type;
  44. $result = $model->table('sns_binding')->where($where_arr)->delete();
  45. if ($result){
  46. $js = "location.reload();";
  47. showDialog(Language::get('sharebind_unbind_succ'),'','succ',$js);
  48. }else {
  49. showDialog(Language::get('sharebind_unbind_fail'),'','succ');
  50. }
  51. }
  52. /**
  53. * 验证某接口是否已经绑定
  54. */
  55. public function checkbindOp(){
  56. $app_key = $_GET['k'];
  57. $result = '';
  58. if (empty($app_key)){
  59. $result = json_encode(array('done'=>false,'msg'=>Language::get('sharebind_bind_fail')));
  60. } else {
  61. $model = Model('sns_binding');
  62. $bind_info = $model->getUsableOneApp($_SESSION['member_id'],$app_key);
  63. if (empty($bind_info)){
  64. $result = json_encode(array('done'=>false,'msg'=>Language::get('sharebind_bind_fail')));
  65. }else {
  66. $result = json_encode(array('done'=>true));
  67. }
  68. }
  69. if (isset($_GET['callback']))
  70. {
  71. $result = $_GET['callback']=='?' ? '('.$result.')' : $_GET['callback']."($result);";
  72. }
  73. echo $result;
  74. exit;
  75. }
  76. /**
  77. * 分享绑定qqzone
  78. */
  79. public function share_qqzoneOp(){
  80. //判断系统是否开启站外分享功能
  81. if (C('share_qqzone_isuse') != 1){
  82. showMessage(Language::get('sharebind_unused'),'index.php?act=member_sharemanage','html','error');
  83. }
  84. include_once BASE_DATA_PATH.'/api/snsapi/qqzone/oauth/qq_callback.php';
  85. if (!$_SESSION['qqzone']){
  86. echo "<script>alert('".Language::get('sharebind_bind_fail')."');</script>";
  87. echo "<script>window.close();</script>";
  88. exit;
  89. }
  90. $update_arr = array();
  91. $update_arr['snsbind_memberid'] = $_SESSION['member_id'];
  92. $update_arr['snsbind_membername'] = $_SESSION['member_name'];
  93. $update_arr['snsbind_appsign'] = 'qqzone';
  94. $update_arr['snsbind_updatetime'] = time();
  95. $update_arr['snsbind_accesstoken'] = $_SESSION['qqzone']['access_token'];
  96. $update_arr['snsbind_expiresin'] = $_SESSION['qqzone']['expires_in'];
  97. $update_arr['snsbind_openid'] = $_SESSION['qqzone']['openid'];
  98. //获取qq账号信息
  99. require_once (BASE_DATA_PATH.DS.'api'.DS.'snsapi'.DS.'qqzone'.DS.'user'.DS.'get_user_info.php');
  100. $qquser_info = get_user_info();
  101. $update_arr['snsbind_openinfo'] = $qquser_info['nickname'];
  102. $model = Model();
  103. $where_arr = array();
  104. $where_arr['snsbind_memberid'] = $_SESSION['member_id'];
  105. $where_arr['snsbind_appsign'] = 'qqzone';
  106. //查询该用户是否已经绑定qqzone
  107. $bind_info = $model->table('sns_binding')->where($where_arr)->find();
  108. if (empty($bind_info)){
  109. $result = $model->table('sns_binding')->insert($update_arr);
  110. }else {
  111. $result = $model->table('sns_binding')->where($where_arr)->update($update_arr);
  112. }
  113. if (!$result){
  114. echo "<script>alert('".Language::get('sharebind_bind_fail')."');</script>";
  115. }
  116. echo "<script>window.close();</script>";
  117. exit;
  118. }
  119. /**
  120. * 分享绑定sinaweibo
  121. */
  122. public function share_sinaweiboOp(){
  123. //判断系统是否开启站外分享功能
  124. if (C('share_sinaweibo_isuse') != 1){
  125. showMessage(Language::get('sharebind_unused'),'index.php?act=member_sharemanage','html','error');
  126. }
  127. include_once BASE_DATA_PATH.'/api/snsapi/sinaweibo/callback.php';
  128. if (!$_SESSION['slast_key']){
  129. echo "<script>alert('".Language::get('sharebind_bind_fail')."');</script>";
  130. echo "<script>window.close();</script>";
  131. exit;
  132. }
  133. $update_arr = array();
  134. $update_arr['snsbind_memberid'] = $_SESSION['member_id'];
  135. $update_arr['snsbind_membername'] = $_SESSION['member_name'];
  136. $update_arr['snsbind_appsign'] = 'sinaweibo';
  137. $update_arr['snsbind_updatetime'] = time();
  138. $update_arr['snsbind_accesstoken'] = $_SESSION['slast_key']['access_token'];
  139. $update_arr['snsbind_expiresin'] = $_SESSION['slast_key']['expires_in'];
  140. $update_arr['snsbind_openid'] = $_SESSION['slast_key']['uid'];
  141. //获取新浪微博账号信息
  142. require_once (BASE_DATA_PATH.DS.'api'.DS.'snsapi'.DS.'sinaweibo'.DS.'saetv2.ex.class.php');
  143. $c = new SaeTClientV2( C('sina_wb_akey'), C('sina_wb_skey') , $_SESSION['slast_key']['access_token']);
  144. $sinauser_info = $c->show_user_by_id($_SESSION['slast_key']['uid']);//根据ID获取用户等基本信息
  145. $update_arr['snsbind_openinfo'] = $sinauser_info['name'];
  146. $model = Model();
  147. $where_arr = array();
  148. $where_arr['snsbind_memberid'] = $_SESSION['member_id'];
  149. $where_arr['snsbind_appsign'] = 'sinaweibo';
  150. //查询该用户是否已经绑定sinaweibo
  151. $bind_info = $model->table('sns_binding')->where($where_arr)->find();
  152. if (empty($bind_info)){
  153. $result = $model->table('sns_binding')->insert($update_arr);
  154. }else {
  155. $result = $model->table('sns_binding')->where($where_arr)->update($update_arr);
  156. }
  157. if (!$result){
  158. echo "<script>alert('".Language::get('sharebind_bind_fail')."');</script>";
  159. }
  160. echo "<script>window.close();</script>";
  161. exit;
  162. }
  163. /**
  164. * 分享绑定腾讯微博
  165. */
  166. public function share_qqweiboOp(){
  167. //判断系统是否开启站外分享功能
  168. if (C('share_qqweibo_isuse') != 1){
  169. showMessage(Language::get('sharebind_unused'),'index.php?act=member_sharemanage','html','error');
  170. }
  171. include_once BASE_DATA_PATH.'/api/snsapi/qqweibo/callback.php';
  172. if (!$_SESSION['qqweibo']){
  173. echo "<script>alert('".Language::get('sharebind_bind_fail')."');</script>";
  174. echo "<script>window.close();</script>";
  175. exit;
  176. }
  177. //添加qqweibo绑定记录
  178. $update_arr = array();
  179. $update_arr['snsbind_memberid'] = $_SESSION['member_id'];
  180. $update_arr['snsbind_membername'] = $_SESSION['member_name'];
  181. $update_arr['snsbind_appsign'] = 'qqweibo';
  182. $update_arr['snsbind_updatetime'] = time();
  183. $update_arr['snsbind_accesstoken'] = $_SESSION['qqweibo']['t_access_token'];
  184. $update_arr['snsbind_expiresin'] = $_SESSION['qqweibo']['t_expire_in'];
  185. $update_arr['snsbind_refreshtoken'] = $_SESSION['qqweibo']['t_refresh_token'];
  186. //$update_arr['snsbind_openid'] = $_SESSION['t_openid'].'|'.$_SESSION['t_openkey'];
  187. $update_arr['snsbind_openid'] = $_SESSION['qqweibo']['t_openid'];
  188. $update_arr['snsbind_openinfo'] = $_SESSION['qqweibo']['t_uname'];
  189. $model = Model();
  190. $where_arr = array();
  191. $where_arr['snsbind_memberid'] = $_SESSION['member_id'];
  192. $where_arr['snsbind_appsign'] = 'qqweibo';
  193. //查询该用户是否已经绑定qqweibo
  194. $bind_info = $model->table('sns_binding')->where($where_arr)->find();
  195. if (empty($bind_info)){
  196. $result = $model->table('sns_binding')->insert($update_arr);
  197. }else {
  198. $result = $model->table('sns_binding')->where($where_arr)->update($update_arr);
  199. }
  200. if (!$result){
  201. echo "<script>alert('".Language::get('sharebind_bind_fail')."');</script>";
  202. }
  203. echo "<script>window.close();</script>";
  204. exit;
  205. }
  206. /**
  207. * 用户中心右边,小导航
  208. *
  209. * @param string $menu_type 导航类型
  210. * @param string $menu_key 当前导航的menu_key
  211. * @param array $array 附加菜单
  212. * @return
  213. */
  214. private function profile_menu($menu_key='',$array=array()) {
  215. $menu_array = array();
  216. $menu_array = array(
  217. 1=>array('menu_key'=>'sns_binding', 'menu_name'=>'分享绑定', 'menu_url'=> urlShop('member_sharemanage', 'index')),
  218. );
  219. if(!empty($array)) {
  220. $menu_array[] = $array;
  221. }
  222. Tpl::output('member_menu',$menu_array);
  223. Tpl::output('menu_key',$menu_key);
  224. }
  225. }