member_snsindex.php 51 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137
  1. <?php
  2. /**
  3. * SNS首页
  4. ***/
  5. defined('InShopNC') or exit('Access Invalid!');
  6. class member_snsindexControl extends BaseMemberControl {
  7. const MAX_RECORDNUM = 20;//允许插入新记录的最大条数(注意在sns中该常量是一样的,注意与member_snshome中的该常量一致)
  8. public function __construct(){
  9. parent::__construct();
  10. Tpl::output('relation','3');//为了跟home页面保持一致所以输出此变量
  11. Language::read('member_sns');
  12. //允许插入新记录的最大条数
  13. Tpl::output('max_recordnum',self::MAX_RECORDNUM);
  14. }
  15. /**
  16. * SNS首页
  17. */
  18. public function indexOp(){
  19. //查询谁来看过我
  20. $visitor_model = Model('sns_visitor');
  21. $visitme_list = $visitor_model->getVisitorList(array('v_ownermid'=>"{$_SESSION['member_id']}",'limit'=>9));
  22. if (!empty($visitme_list)){
  23. foreach ($visitme_list as $k=>$v){
  24. $v['adddate_text'] = $this->formatDate($v['v_addtime']);
  25. $v['addtime_text'] = @date('H:i',$v['v_addtime']);
  26. $visitme_list[$k] = $v;
  27. }
  28. }
  29. //查询我访问过的人
  30. $visitother_list = $visitor_model->getVisitorList(array('v_mid'=>"{$_SESSION['member_id']}",'limit'=>9));
  31. if (!empty($visitother_list)){
  32. foreach ($visitother_list as $k=>$v){
  33. $v['adddate_text'] = $this->formatDate($v['v_addtime']);
  34. $visitother_list[$k] = $v;
  35. }
  36. }
  37. Tpl::output('visitme_list',$visitme_list);
  38. Tpl::output('visitother_list',$visitother_list);
  39. //信息输出
  40. Tpl::output('nchash',substr(md5(SHOP_SITE_URL.$_GET['act'].$_GET['op']),0,8));
  41. Tpl::showpage('member_snsindex');
  42. }
  43. private function formatDate($time){
  44. $handle_date = @date('Y-m-d',$time);//需要格式化的时间
  45. $reference_date = @date('Y-m-d',time());//参照时间
  46. $handle_date_time = strtotime($handle_date);//需要格式化的时间戳
  47. $reference_date_time = strtotime($reference_date);//参照时间戳
  48. if ($reference_date_time == $handle_date_time){
  49. $timetext = @date('H:i',$time);//今天访问的显示具体的时间点
  50. }elseif (($reference_date_time-$handle_date_time)==60*60*24){
  51. $timetext = Language::get('sns_yesterday');
  52. }elseif ($reference_date_time-$handle_date_time==60*60*48){
  53. $timetext = Language::get('sns_beforeyesterday');
  54. }else {
  55. $month_text = Language::get('nc_month');
  56. $day_text = Language::get('nc_day');
  57. $timetext = @date("m{$month_text}d{$day_text}",$time);
  58. }
  59. return $timetext;
  60. }
  61. /**
  62. * 添加SNS分享心情
  63. */
  64. public function addtraceOp(){
  65. $obj_validate = new Validator();
  66. $validate_arr[] = array("input"=>$_POST["content"], "require"=>"true","message"=>Language::get('sns_sharemood_content_null'));
  67. $validate_arr[] = array("input"=>$_POST["content"], "validator"=>'Length',"min"=>0,"max"=>140,"message"=>Language::get('sns_content_beyond'));
  68. //发帖数超过最大次数出现验证码
  69. if(intval(cookie('weibonum'))>=self::MAX_RECORDNUM){
  70. $validate_arr[] = array("input"=>$_POST["captcha"], "require"=>"true","message"=>Language::get('wrong_null'));
  71. }
  72. $obj_validate -> validateparam = $validate_arr;
  73. $error = $obj_validate->validate();
  74. if ($error != ''){
  75. showDialog($error,'','error');
  76. }
  77. //发帖数超过最大次数出现验证码
  78. if(intval(cookie('weibonum'))>=self::MAX_RECORDNUM){
  79. if (!checkSeccode($_POST['nchash'],$_POST['captcha'])){
  80. showDialog(Language::get('wrong_checkcode'),'','error');
  81. }
  82. }
  83. //查询会员信息
  84. $member_model = Model('member');
  85. $member_info = $member_model->getMemberInfo(array('member_id'=>$_SESSION['member_id'],'member_state'=>1));
  86. if (empty($member_info)){
  87. showDialog(Language::get('sns_member_error'),'','error');
  88. }
  89. $tracelog_model = Model('sns_tracelog');
  90. $insert_arr = array();
  91. $insert_arr['trace_originalid'] = '0';
  92. $insert_arr['trace_originalmemberid'] = '0';
  93. $insert_arr['trace_memberid'] = $_SESSION['member_id'];
  94. $insert_arr['trace_membername'] = $_SESSION['member_name'];
  95. $insert_arr['trace_memberavatar'] = $member_info['member_avatar'];
  96. $insert_arr['trace_title'] = $_POST['content'];
  97. $insert_arr['trace_content'] = '';
  98. $insert_arr['trace_addtime'] = time();
  99. $insert_arr['trace_state'] = '0';
  100. $insert_arr['trace_privacy'] = intval($_POST["privacy"])>0?intval($_POST["privacy"]):0;
  101. $insert_arr['trace_commentcount'] = 0;
  102. $insert_arr['trace_copycount'] = 0;
  103. $result = $tracelog_model->tracelogAdd($insert_arr);
  104. if ($result){
  105. //建立cookie
  106. if (cookie('weibonum') != null && intval(cookie('weibonum')) >0){
  107. setNcCookie('weibonum',intval(cookie('weibonum'))+1,2*3600);//保存2小时
  108. }else{
  109. setNcCookie('weibonum',1,2*3600);//保存2小时
  110. }
  111. $js = "var obj = $(\"#weiboform\").find(\"[nc_type='formprivacytab']\");$(obj).find('span').removeClass('selected');$(obj).find('ul li:nth-child(1)').find('span').addClass('selected');";
  112. $js .= "$(\"#content_weibo\").val('');$(\"#privacy\").val('0');$('#friendtrace').lazyshow({url:\"index.php?act=member_snshome&op=tracelist&curpage=1\",'iIntervalId':true});";
  113. showDialog(Language::get('sns_share_succ'),'','succ',$js);
  114. }else {
  115. showDialog(Language::get('sns_share_fail'),'','error');
  116. }
  117. }
  118. /**
  119. * 添加分享已买到的宝贝
  120. */
  121. public function sharegoodsOp(){
  122. Language::read('member_sharemanage');
  123. if ($_POST['form_submit'] == 'ok'){
  124. $obj_validate = new Validator();
  125. $validate_arr[] = array("input"=>$_POST["choosegoodsid"], "require"=>"true","message"=>Language::get('sns_sharegoods_choose'));
  126. $validate_arr[] = array("input"=>$_POST["comment"], "validator"=>'Length',"min"=>0,"max"=>140,"message"=>Language::get('sns_content_beyond'));
  127. //发帖数超过最大次数出现验证码
  128. if(intval(cookie('weibonum'))>=self::MAX_RECORDNUM){
  129. $validate_arr[] = array("input"=>$_POST["captcha"], "require"=>"true","message"=>Language::get('wrong_null'));
  130. }
  131. $obj_validate -> validateparam = $validate_arr;
  132. $error = $obj_validate->validate();
  133. if (intval($_POST["choosegoodsid"]) <= 0){
  134. $error .= Language::get('sns_sharegoods_goodserror');
  135. }
  136. if ($error != ''){
  137. showDialog($error,'','error');
  138. }
  139. //发帖数超过最大次数出现验证码
  140. if(intval(cookie('weibonum'))>=self::MAX_RECORDNUM){
  141. if (!checkSeccode($_POST['nchash'],$_POST['captcha'])){
  142. showDialog(Language::get('wrong_checkcode'),'','error');
  143. }
  144. }
  145. //查询会员信息
  146. $member_model = Model('member');
  147. $member_info = $member_model->getMemberInfo(array('member_id'=>$_SESSION['member_id'],'member_state'=>1));
  148. if (empty($member_info)){
  149. showDialog(Language::get('sns_member_error'),'','error');
  150. }
  151. //查询商品信息
  152. $goods_model = Model('goods');
  153. $goods_info = $goods_model->getGoodsOnlineInfoForShare(intval($_POST['choosegoodsid']));
  154. if (empty($goods_info)){
  155. showDialog(Language::get('sns_sharegoods_goodserror'),'','error');
  156. }
  157. $sharegoods_model = Model('sns_sharegoods');
  158. //判断该商品是否已经存在分享或者喜欢记录
  159. $sharegoods_info = $sharegoods_model->getSharegoodsInfo(array('share_memberid'=>"{$_SESSION['member_id']}",'share_goodsid'=>"{$goods_info['goods_id']}"));
  160. $result = false;
  161. if (empty($sharegoods_info)){
  162. //添加分享商品信息
  163. $insert_arr = array();
  164. $insert_arr['share_goodsid'] = $goods_info['goods_id'];
  165. $insert_arr['share_memberid'] = $_SESSION['member_id'];
  166. $insert_arr['share_membername'] = $_SESSION['member_name'];
  167. $insert_arr['share_content'] = $_POST['comment']?$_POST['comment']:Language::get('sns_sharegoods_title');
  168. $insert_arr['share_addtime'] = time();
  169. $insert_arr['share_privacy'] = intval($_POST["gprivacy"])>0?intval($_POST["gprivacy"]):0;
  170. $insert_arr['share_commentcount'] = 0;
  171. $insert_arr['share_isshare'] = 1;
  172. $result = $sharegoods_model->sharegoodsAdd($insert_arr);
  173. unset($insert_arr);
  174. }else {
  175. //更新分享商品信息
  176. $update_arr = array();
  177. $update_arr['share_content'] = $_POST['comment']?$_POST['comment']:Language::get('sns_sharegoods_title');
  178. $update_arr['share_addtime'] = time();
  179. $update_arr['share_privacy'] = intval($_POST["gprivacy"])>0?intval($_POST["gprivacy"]):0;
  180. $update_arr['share_isshare'] = 1;
  181. $result = $sharegoods_model->editSharegoods($update_arr,array('share_id'=>"{$sharegoods_info['share_id']}"));
  182. unset($update_arr);
  183. }
  184. if ($result){
  185. //商品缓存数据更新
  186. //生成缓存的键值
  187. $hash_key = $goods_info['goods_id'];
  188. //先查找$hash_key缓存
  189. if ($_cache = rcache($hash_key,'product')){
  190. $_cache['sharenum'] = intval($_cache['sharenum'])+1;
  191. //缓存商品信息
  192. wcache($hash_key,$_cache,'product');
  193. }
  194. //更新SNS商品表信息
  195. $snsgoods_model = Model('sns_goods');
  196. $snsgoods_info = $snsgoods_model->getGoodsInfo(array('snsgoods_goodsid'=>"{$goods_info['goods_id']}"));
  197. if (empty($snsgoods_info)){
  198. //添加SNS商品
  199. $insert_arr = array();
  200. $insert_arr['snsgoods_goodsid'] = $goods_info['goods_id'];
  201. $insert_arr['snsgoods_goodsname'] = $goods_info['goods_name'];
  202. $insert_arr['snsgoods_goodsimage'] = $goods_info['goods_image'];
  203. $insert_arr['snsgoods_goodsprice'] = $goods_info['goods_price'];
  204. $insert_arr['snsgoods_storeid'] = $goods_info['store_id'];
  205. $insert_arr['snsgoods_storename'] = $goods_info['store_name'];
  206. $insert_arr['snsgoods_addtime'] = time();
  207. $insert_arr['snsgoods_likenum'] = 0;
  208. $insert_arr['snsgoods_sharenum'] = 1;
  209. $snsgoods_model->goodsAdd($insert_arr);
  210. unset($insert_arr);
  211. }else {
  212. //更新SNS商品
  213. $update_arr = array();
  214. $update_arr['snsgoods_sharenum'] = intval($snsgoods_info['snsgoods_sharenum'])+1;
  215. $snsgoods_model->editGoods($update_arr,array('snsgoods_goodsid'=>"{$goods_info['goods_id']}"));
  216. }
  217. //添加分享动态
  218. $tracelog_model = Model('sns_tracelog');
  219. $insert_arr = array();
  220. $insert_arr['trace_originalid'] = '0';
  221. $insert_arr['trace_originalmemberid'] = '0';
  222. $insert_arr['trace_memberid'] = $_SESSION['member_id'];
  223. $insert_arr['trace_membername'] = $_SESSION['member_name'];
  224. $insert_arr['trace_memberavatar'] = $member_info['member_avatar'];
  225. $insert_arr['trace_title'] = $_POST['comment']?$_POST['comment']:Language::get('sns_sharegoods_title');
  226. $content_str = '';
  227. $content_str .= "<div class=\"fd-media\">
  228. <div class=\"goodsimg\"><a target=\"_blank\" href=\"".urlShop('goods', 'index', array('goods_id'=>$goods_info['goods_id']))."\"><img src=\"".thumb($goods_info, 240)."\" onload=\"javascript:DrawImage(this,120,120);\" alt=\"{$goods_info['goods_name']}\"></a></div>
  229. <div class=\"goodsinfo\">
  230. <dl>
  231. <dt><a target=\"_blank\" href=\"".urlShop('goods', 'index', array('goods_id'=>$goods_info['goods_id']))."\">".$goods_info['goods_name']."</a></dt>
  232. <dd>".Language::get('sns_sharegoods_price').Language::get('nc_colon').Language::get('currency').$goods_info['goods_price']."</dd>
  233. <dd>".Language::get('sns_sharegoods_freight').Language::get('nc_colon').Language::get('currency').$goods_info['goods_freight']."</dd>
  234. <dd nctype=\"collectbtn_{$goods_info['goods_id']}\"><a href=\"javascript:void(0);\" onclick=\"javascript:collect_goods(\'{$goods_info['goods_id']}\',\'succ\',\'collectbtn_{$goods_info['goods_id']}\');\">".Language::get('sns_sharegoods_collect')."</a></dd>
  235. </dl>
  236. </div>
  237. </div>";
  238. $insert_arr['trace_content'] = $content_str;
  239. $insert_arr['trace_addtime'] = time();
  240. $insert_arr['trace_state'] = '0';
  241. $insert_arr['trace_privacy'] = intval($_POST["gprivacy"])>0?intval($_POST["gprivacy"]):0;
  242. $insert_arr['trace_commentcount'] = 0;
  243. $insert_arr['trace_copycount'] = 0;
  244. $result = $tracelog_model->tracelogAdd($insert_arr);
  245. //建立cookie
  246. if (cookie('weibonum') != null && intval(cookie('weibonum')) >0){
  247. setNcCookie('weibonum',intval(cookie('weibonum'))+1,2*3600);//保存2小时
  248. }else{
  249. setNcCookie('weibonum',1,2*3600);//保存2小时
  250. }
  251. //站外分享功能
  252. if (C('share_isuse') == 1){
  253. $model = Model('sns_binding');
  254. //查询该用户的绑定信息
  255. $bind_list = $model->getUsableApp($_SESSION['member_id']);
  256. //分享内容数组
  257. $params = array();
  258. $params['title'] = Language::get('sns_sharegoods_title');
  259. $params['url'] = urlShop('goods' , 'index', array('goods_id'=>$goods_info['goods_id']));
  260. $params['comment'] = $goods_info['goods_name'].$_POST['comment'];
  261. $params['images'] = thumb($goods_info, 240);
  262. //分享之qqweibo
  263. if (isset($_POST['checkapp_qqweibo']) && !empty($_POST['checkapp_qqweibo']) && $bind_list['qqweibo']['isbind'] == true){
  264. $model->addQQWeiboPic($bind_list['qqweibo'],$params);
  265. }
  266. //分享之sinaweibo
  267. if (isset($_POST['checkapp_sinaweibo']) && !empty($_POST['checkapp_sinaweibo']) && $bind_list['sinaweibo']['isbind'] == true){
  268. $model->addSinaWeiboUpload($bind_list['sinaweibo'],$params);
  269. }
  270. }
  271. //输出js
  272. $js = "DialogManager.close('sharegoods');var countobj=$('[nc_type=\'sharecount_{$goods_info['goods_id']}\']');$(countobj).html(parseInt($(countobj).text())+1);";
  273. $url = '';
  274. if ($_GET['irefresh']){
  275. $js .= "$('#friendtrace').lazyshow({url:\"index.php?act=member_snsindex&op=tracelist&curpage=1\",'iIntervalId':true});";
  276. }else{
  277. $url = 'reload';
  278. }
  279. showDialog(Language::get('sns_share_succ'),$url,'succ',$js);
  280. }else {
  281. showDialog(Language::get('sns_share_fail'),$url,'error');
  282. }
  283. } else {
  284. //查询已购买商品信息
  285. $order_model = Model('order');
  286. $condition = array();
  287. $condition['buyer_id'] = $_SESSION['member_id'];
  288. $ordergoods_list = $order_model->getOrderGoodsList($condition);
  289. unset($condition);
  290. $order_goodsid = array();
  291. if (!empty($ordergoods_list)){
  292. foreach ($ordergoods_list as $v){
  293. $order_goodsid[] = $v['goods_id'];
  294. }
  295. }
  296. // 查询收藏商品
  297. $favorites_list = Model()->table('favorites')->field('fav_id')->where(array('member_id'=>$_SESSION['member_id'], 'fav_type'=>'goods'))->select();
  298. $favorites_goodsid = array();
  299. if(!empty($favorites_list)){
  300. foreach ($favorites_list as $v){
  301. $favorites_goodsid[] = $v['fav_id'];
  302. }
  303. }
  304. $goods_id = array_merge($order_goodsid, $favorites_goodsid);
  305. //查询商品信息
  306. $goods_model = Model('goods');
  307. $condition = array();
  308. $condition['goods_id'] = array('in', $goods_id);
  309. $goods_list = $goods_model->getGoodsOnlineList($condition,'goods_id,goods_name,goods_image,store_id');
  310. if(!empty($goods_list)){
  311. foreach ($goods_list as $k=>$v){
  312. if(in_array($v['goods_id'], $order_goodsid)){
  313. $goods_list[$k]['order'] = true;
  314. }
  315. if(in_array($v['goods_id'], $favorites_goodsid)){
  316. $goods_list[$k]['favorites'] = true;
  317. }
  318. }
  319. }
  320. if (C('share_isuse') == 1){
  321. $model = Model('sns_binding');
  322. $app_arr = $model->getUsableApp($_SESSION['member_id']);
  323. Tpl::output('app_arr',$app_arr);
  324. }
  325. //验证码
  326. Tpl::output('nchash',substr(md5(SHOP_SITE_URL.$_GET['act'].$_GET['op']),0,8));
  327. Tpl::output('goods_list',$goods_list);
  328. Tpl::showpage('member_snssharegoods','null_layout');
  329. }
  330. }
  331. /**
  332. * 分享店铺
  333. */
  334. public function sharestoreOp(){
  335. Language::read('member_sharemanage');
  336. if ($_POST['form_submit'] == 'ok'){
  337. $obj_validate = new Validator();
  338. $validate_arr[] = array("input"=>$_POST["choosestoreid"], "require"=>"true","message"=>Language::get('sns_sharestore_choose'));
  339. $validate_arr[] = array("input"=>$_POST["comment"], "validator"=>'Length',"min"=>0,"max"=>140,"message"=>Language::get('sns_content_beyond'));
  340. //发帖数超过最大次数出现验证码
  341. if(intval(cookie('weibonum'))>=self::MAX_RECORDNUM){
  342. $validate_arr[] = array("input"=>$_POST["captcha"], "require"=>"true","message"=>Language::get('wrong_null'));
  343. }
  344. $obj_validate -> validateparam = $validate_arr;
  345. $error = $obj_validate->validate();
  346. if ($error != ''){
  347. showDialog($error,'','error');
  348. }
  349. //发帖数超过最大次数出现验证码
  350. if(intval(cookie('weibonum'))>=self::MAX_RECORDNUM){
  351. if (!checkSeccode($_POST['nchash'],$_POST['captcha'])){
  352. showDialog(Language::get('wrong_checkcode'),'','error');
  353. }
  354. }
  355. //查询会员信息
  356. $member_model = Model('member');
  357. $member_info = $member_model->getMemberInfo(array('member_id'=>$_SESSION['member_id'],'member_state'=>1));
  358. if (empty($member_info)){
  359. showDialog(Language::get('sns_member_error'),'','error');
  360. }
  361. //查询店铺信息
  362. $store_model = Model('store');
  363. $store_info = $store_model->getStoreInfoByID($_POST['choosestoreid']);
  364. if (empty($store_info)){
  365. showDialog(Language::get('sns_store_error'),'','error');
  366. }
  367. $sharestore_model = Model('sns_sharestore');
  368. //判断该商品是否已经分享过
  369. $sharestore_info = $sharestore_model->getSharestoreInfo(array('share_memberid'=>"{$_SESSION['member_id']}",'share_storeid'=>"{$store_info['store_id']}"));
  370. $result = false;
  371. if (empty($sharestore_info)){
  372. //添加分享商品信息
  373. $insert_arr = array();
  374. $insert_arr['share_storeid'] = $store_info['store_id'];
  375. $insert_arr['share_storename'] = $store_info['store_name'];
  376. $insert_arr['share_memberid'] = $_SESSION['member_id'];
  377. $insert_arr['share_membername'] = $_SESSION['member_name'];
  378. $insert_arr['share_content'] = $_POST['comment'];
  379. $insert_arr['share_addtime'] = time();
  380. $insert_arr['share_privacy'] = intval($_POST["sprivacy"])>0?intval($_POST["sprivacy"]):0;
  381. $result = $sharestore_model->sharestoreAdd($insert_arr);
  382. unset($insert_arr);
  383. }else {
  384. //更新分享商品信息
  385. $update_arr = array();
  386. $update_arr['share_content'] = $_POST['comment'];
  387. $update_arr['share_addtime'] = time();
  388. $update_arr['share_privacy'] = intval($_POST["sprivacy"])>0?intval($_POST["sprivacy"]):0;
  389. $result = $sharestore_model->editSharestore($update_arr,array('share_id'=>"{$sharestore_info['share_id']}"));
  390. unset($update_arr);
  391. }
  392. if ($result){
  393. //添加分享动态
  394. $tracelog_model = Model('sns_tracelog');
  395. $insert_arr = array();
  396. $insert_arr['trace_originalid'] = '0';
  397. $insert_arr['trace_originalmemberid'] = '0';
  398. $insert_arr['trace_memberid'] = $_SESSION['member_id'];
  399. $insert_arr['trace_membername'] = $_SESSION['member_name'];
  400. $insert_arr['trace_memberavatar'] = $member_info['member_avatar'];
  401. $insert_arr['trace_title'] = $_POST['comment']?$_POST['comment']:Language::get('sns_sharestore_title');
  402. $content_str = '';
  403. $store_info['store_avatar'] = empty($store_info['store_avatar']) ? UPLOAD_SITE_URL.DS.ATTACH_COMMON.DS.C('default_store_avatar') : UPLOAD_SITE_URL.DS.ATTACH_STORE.DS.$store_info['store_avatar'];
  404. $store_info['store_url'] = urlShop('show_store', 'index', array('store_id'=>$store_info['store_id']));
  405. $content_str .= "<div class=\"fd-media\">
  406. <div class=\"goodsimg\"><a target=\"_blank\" href=\"{$store_info['store_url']}\"><img src=\"{$store_info['store_avatar']}\" onload=\"javascript:DrawImage(this,120,120);\" alt=\"{$store_info['store_name']}\"></a></div>
  407. <div class=\"goodsinfo\">
  408. <dl>
  409. <dt><a target=\"_blank\" href=\"{$store_info['store_url']}\">".$store_info['store_name']."</a></dt>
  410. <dd nctype=\"storecollectbtn_{$store_info['store_id']}\"><a href=\"javascript:void(0);\" onclick=\"javascript:collect_store(\'{$store_info['store_id']}\',\'succ\',\'storecollectbtn_{$store_info['store_id']}\');\">".Language::get('sns_sharestore_collect')."</a></dd>
  411. </dl>
  412. </div>
  413. </div>";
  414. $insert_arr['trace_content'] = $content_str;
  415. $insert_arr['trace_addtime'] = time();
  416. $insert_arr['trace_state'] = '0';
  417. $insert_arr['trace_privacy'] = intval($_POST["sprivacy"])>0?intval($_POST["sprivacy"]):0;
  418. $insert_arr['trace_commentcount'] = 0;
  419. $insert_arr['trace_copycount'] = 0;
  420. $result = $tracelog_model->tracelogAdd($insert_arr);
  421. //建立cookie
  422. if (cookie('weibonum') != null && intval(cookie('weibonum')) >0){
  423. setNcCookie('weibonum',intval(cookie('weibonum'))+1,2*3600);//保存2小时
  424. }else{
  425. setNcCookie('weibonum',1,2*3600);//保存2小时
  426. }
  427. //站外分享功能
  428. if (C('share_isuse') == 1){
  429. $model = Model('sns_binding');
  430. //查询该用户的绑定信息
  431. $bind_list = $model->getUsableApp($_SESSION['member_id']);
  432. //分享内容数组
  433. $params = array();
  434. $params['title'] = Language::get('sns_sharestore_title');
  435. $params['url'] = urlShop('show_store' , 'index', array('store_id'=>$store_info['store_id']));
  436. $params['comment'] = $store_info['store_name'].$_POST['comment'];
  437. $params['images'] = empty($store_info['store_avatar']) ? UPLOAD_SITE_URL.DS.ATTACH_COMMON.DS.C('default_store_avatar') : UPLOAD_SITE_URL.DS.ATTACH_STORE.DS.$store_info['store_avatar'];
  438. //分享之qqweibo
  439. if (isset($_POST['checkapp_qqweibo']) && !empty($_POST['checkapp_qqweibo']) && $bind_list['qqweibo']['isbind'] == true){
  440. $model->addQQWeiboPic($bind_list['qqweibo'],$params);
  441. }
  442. //分享之sinaweibo
  443. if (isset($_POST['checkapp_sinaweibo']) && !empty($_POST['checkapp_sinaweibo']) && $bind_list['sinaweibo']['isbind'] == true){
  444. $model->addSinaWeiboUpload($bind_list['sinaweibo'],$params);
  445. }
  446. }
  447. //输出js
  448. $js = "DialogManager.close('sharestore');";
  449. $url = '';
  450. if ($_GET['irefresh']){
  451. $js.="$('#friendtrace').lazyshow({url:\"index.php?act=member_snsindex&op=tracelist&curpage=1\",'iIntervalId':true});";
  452. }else{
  453. $url = 'reload';
  454. }
  455. showDialog(Language::get('sns_share_succ'),$url,'succ',$js);
  456. }else {
  457. showDialog(Language::get('sns_share_fail'),$url,'error');
  458. }
  459. } else {
  460. //查询收藏店铺信息
  461. $favorites_model = Model('favorites');
  462. $condition = array();
  463. $condition['member_id'] = $_SESSION['member_id'];
  464. $favorites_list = $favorites_model->getStoreFavoritesList($condition);
  465. unset($condition);
  466. $store_list = array();
  467. if (!empty($favorites_list)){
  468. $store_id = array();
  469. foreach ($favorites_list as $v){
  470. $store_id[] = $v['fav_id'];
  471. }
  472. //查询商品信息
  473. $store_model = Model('store');
  474. $condition = array();
  475. $condition['store_id'] = array('in', $store_id);
  476. $store_list = $store_model->getStoreOnlineList($condition);
  477. }
  478. if (C('share_isuse') == 1){
  479. $model = Model('sns_binding');
  480. $app_arr = $model->getUsableApp($_SESSION['member_id']);
  481. Tpl::output('app_arr',$app_arr);
  482. }
  483. //验证码
  484. Tpl::output('nchash',substr(md5(SHOP_SITE_URL.$_GET['act'].$_GET['op']),0,8));
  485. Tpl::output('store_list',$store_list);
  486. Tpl::showpage('member_snssharestore','null_layout');
  487. }
  488. }
  489. /**
  490. * 删除动态
  491. */
  492. public function deltraceOp(){
  493. $id = intval($_GET['id']);
  494. if ($id <= 0){
  495. showDialog(Language::get('wrong_argument'),'','error');
  496. }
  497. $tracelog_model = Model('sns_tracelog');
  498. //删除动态
  499. $condition = array();
  500. $condition['trace_id'] = "$id";
  501. $condition['trace_memberid'] = "{$_SESSION['member_id']}";
  502. $result = $tracelog_model->delTracelog($condition);
  503. if ($result){
  504. //修改该动态的转帖信息
  505. $tracelog_model->tracelogEdit(array('trace_originalstate'=>'1'),array('trace_originalid'=>"$id"));
  506. //删除对应的评论
  507. $comment_model = Model('sns_comment');
  508. $condition = array();
  509. $condition['comment_originalid'] = "$id";
  510. $condition['comment_originaltype'] = "0";
  511. $comment_model->delComment($condition);
  512. if ($_GET['type'] == 'href'){
  513. showDialog(Language::get('nc_common_del_succ'),'index.php?act=member_snshome&op=trace&mid='.$_SESSION['member_id'],'succ');
  514. }else {
  515. $js = "location.reload();";
  516. showDialog(Language::get('nc_common_del_succ'),'','succ',$js);
  517. }
  518. } else {
  519. showDialog(Language::get('nc_common_del_fail'),'','error');
  520. }
  521. }
  522. /**
  523. * SNS动态列表
  524. */
  525. public function tracelistOp(){
  526. //查询关注以及好友列表
  527. $friend_model = Model('sns_friend');
  528. $friend_list = $friend_model->listFriend(array('friend_frommid'=>"{$_SESSION['member_id']}"),'*','','simple');
  529. $mutualfollowid_arr = array();
  530. $followid_arr = array();
  531. if (!empty($friend_list)){
  532. foreach ($friend_list as $k=>$v){
  533. $followid_arr[] = $v['friend_tomid'];
  534. if ($v['friend_followstate'] == 2){
  535. $mutualfollowid_arr[] = $v['friend_tomid'];
  536. }
  537. }
  538. }
  539. $tracelog_model = Model('sns_tracelog');
  540. //条件
  541. $condition = array();
  542. $condition['allowshow'] = '1';
  543. $condition['allowshow_memberid'] = "{$_SESSION['member_id']}";
  544. $condition['allowshow_followerin'] = "";
  545. if (!empty($followid_arr)){
  546. $condition['allowshow_followerin'] = implode("','",$followid_arr);
  547. }
  548. $condition['allowshow_friendin'] = "";
  549. if (!empty($mutualfollowid_arr)){
  550. $condition['allowshow_friendin'] = implode("','",$mutualfollowid_arr);
  551. }
  552. $condition['trace_state'] = "0";
  553. $count = $tracelog_model->countTrace($condition);
  554. //分页
  555. $page = new Page();
  556. $page->setEachNum(30);
  557. $page->setStyle('admin');
  558. $page->setTotalNum($count);
  559. $delaypage = intval($_GET['delaypage'])>0?intval($_GET['delaypage']):1;//本页延时加载的当前页数
  560. $lazy_arr = lazypage(10,$delaypage,$count,true,$page->getNowPage(),$page->getEachNum(),$page->getLimitStart());
  561. //动态列表
  562. $condition['limit'] = $lazy_arr['limitstart'].",".$lazy_arr['delay_eachnum'];
  563. $tracelist = $tracelog_model->getTracelogList($condition);
  564. if (!empty($tracelist)){
  565. foreach ($tracelist as $k=>$v){
  566. if ($v['trace_title']){
  567. $v['trace_title'] = str_replace("%siteurl%", SHOP_SITE_URL.DS, $v['trace_title']);
  568. $v['trace_title_forward'] = '|| @'.$v['trace_membername'].Language::get('nc_colon').preg_replace("/<a(.*?)href=\"(.*?)\"(.*?)>@(.*?)<\/a>([\s|:|:]|$)/is",'@${4}${5}',$v['trace_title']);
  569. }
  570. if(!empty($v['trace_content'])){
  571. //替换内容中的siteurl
  572. $v['trace_content'] = str_replace("%siteurl%", SHOP_SITE_URL.DS, $v['trace_content']);
  573. }
  574. $tracelist[$k] = $v;
  575. }
  576. }
  577. Tpl::output('hasmore',$lazy_arr['hasmore']);
  578. Tpl::output('tracelist',$tracelist);
  579. Tpl::output('show_page',$page->show());
  580. Tpl::output('type','index');
  581. Tpl::showpage('member_snstracelist','null_layout');
  582. }
  583. /**
  584. * 编辑分享商品的可见权限(主人登录后操作)
  585. */
  586. public function editprivacyOp(){
  587. $id = intval($_GET['id']);
  588. if ($id <= 0){
  589. showDialog(Language::get('wrong_argument'),'','error');
  590. }
  591. $sharegoods_model = Model("sns_sharegoods");
  592. $condition = array();
  593. $condition['share_id'] = "$id";
  594. $condition['share_memberid'] = "{$_SESSION['member_id']}";
  595. $privacy = in_array($_GET['privacy'],array(0,1,2))?$_GET['privacy']:0;
  596. $result = $sharegoods_model->editSharegoods(array('share_privacy'=>"$privacy"),$condition);
  597. if ($result){
  598. $privacy_item = $privacy+1;
  599. $js = "var obj = $(\"#recordone_{$id}\").find(\"[nc_type='privacytab']\"); $(obj).find('span').removeClass('selected');$(obj).find('li:nth-child(".$privacy_item.")').find('span').addClass('selected');";
  600. showDialog(Language::get('sns_setting_succ'),'','succ',$js);
  601. }else {
  602. showDialog(Language::get('sns_setting_fail'),'','error');
  603. }
  604. }
  605. /**
  606. * 删除分享和喜欢商品
  607. */
  608. public function delgoodsOp(){
  609. $id = intval($_GET['id']);
  610. if ($id <= 0){
  611. showDialog(Language::get('wrong_argument'),'','error');
  612. }
  613. $sharegoods_model = Model("sns_sharegoods");
  614. //查询分享和喜欢商品信息
  615. $condition = array();
  616. $condition['share_id'] = "$id";
  617. $condition['share_memberid'] = "{$_SESSION['member_id']}";
  618. if ($_GET['type'] == 'like'){//删除喜欢
  619. $condition['share_islike'] = "1";
  620. }elseif ($_GET['type'] == 'share'){
  621. $condition['share_isshare'] = "1";
  622. }
  623. $sharegoods_info = $sharegoods_model->getSharegoodsInfo($condition);
  624. if (empty($sharegoods_info)){
  625. showDialog(Language::get('nc_common_del_fail'),'','error');
  626. }
  627. unset($condition);
  628. $update_arr = array();
  629. if ($_GET['type'] == 'like'){//删除喜欢
  630. $update_arr['share_islike'] = "0";
  631. }elseif ($_GET['type'] == 'share'){
  632. $update_arr['share_isshare'] = "0";
  633. }
  634. $result = $sharegoods_model->editSharegoods($update_arr,array('share_id'=>"{$sharegoods_info['share_id']}"));
  635. if ($result){
  636. //更新SNS商品喜欢次数
  637. if ($_GET['type'] == 'like'){
  638. $snsgoods_model = Model('sns_goods');
  639. $snsgoods_info = $snsgoods_model->getGoodsInfo(array('snsgoods_goodsid'=>"{$sharegoods_info['share_goodsid']}"));
  640. if (!empty($snsgoods_info)){
  641. $update_arr = array();
  642. $update_arr['snsgoods_likenum'] = (intval($snsgoods_info['snsgoods_likenum'])-1)>0?(intval($snsgoods_info['snsgoods_likenum'])-1):0;
  643. $likemember_arr = array();
  644. if (!empty($snsgoods_info['snsgoods_likemember'])){
  645. $likemember_arr = explode(',',$snsgoods_info['snsgoods_likemember']);
  646. unset($likemember_arr[array_search($_SESSION['member_id'],$likemember_arr)]);
  647. }
  648. $update_arr['snsgoods_likemember'] = implode(',',$likemember_arr);
  649. $snsgoods_model->editGoods($update_arr,array('snsgoods_goodsid'=>"{$snsgoods_info['snsgoods_goodsid']}"));
  650. }
  651. }
  652. $js = "location.reload();";
  653. showDialog(Language::get('nc_common_del_succ'),'','succ',$js);
  654. }else {
  655. showDialog(Language::get('nc_common_del_fail'),'','error');
  656. }
  657. }
  658. /**
  659. * 删除分享店铺
  660. */
  661. public function delstoreOp(){
  662. $id = intval($_GET['id']);
  663. if ($id <= 0){
  664. showDialog(Language::get('wrong_argument'),'','error');
  665. }
  666. $sharestore_model = Model("sns_sharestore");
  667. //删除分享店铺信息
  668. $condition = array();
  669. $condition['share_id'] = "$id";
  670. $condition['share_memberid'] = "{$_SESSION['member_id']}";
  671. $result = $sharestore_model->delSharestore($condition);
  672. if ($result){
  673. $js = "location.reload();";
  674. showDialog(Language::get('nc_common_del_succ'),'','succ',$js);
  675. }else {
  676. showDialog(Language::get('nc_common_del_fail'),'','error');
  677. }
  678. }
  679. /**
  680. * 编辑分享店铺的可见权限(主人登录后操作)
  681. */
  682. public function storeprivacyOp(){
  683. $id = intval($_GET['id']);
  684. if ($id <= 0){
  685. showDialog(Language::get('wrong_argument'),'','error');
  686. }
  687. $sharestore_model = Model("sns_sharestore");
  688. $condition = array();
  689. $condition['share_id'] = "$id";
  690. $condition['share_memberid'] = "{$_SESSION['member_id']}";
  691. $privacy = in_array($_GET['privacy'],array(0,1,2))?$_GET['privacy']:0;
  692. $result = $sharestore_model->editSharestore(array('share_privacy'=>"$privacy"),$condition);
  693. if ($result){
  694. $privacy_item = $privacy+1;
  695. $js = "var obj = $(\"#recordone_{$id}\").find(\"[nc_type='privacytab']\"); $(obj).find('span').removeClass('selected');$(obj).find('li:nth-child(".$privacy_item.")').find('span').addClass('selected');";
  696. showDialog(Language::get('sns_setting_succ'),'','succ',$js);
  697. }else {
  698. showDialog(Language::get('sns_setting_fail'),'','error');
  699. }
  700. }
  701. /**
  702. * 添加评论(访客登录后操作)
  703. */
  704. public function addcommentOp(){
  705. $originalid = intval($_POST["originalid"]);
  706. if($originalid <= 0){
  707. showDialog(Language::get('wrong_argument'),'','error');
  708. }
  709. $obj_validate = new Validator();
  710. $originaltype = intval($_POST['originaltype'])>0?intval($_POST['originaltype']):0;
  711. $validate_arr[] = array("input"=>$_POST["commentcontent"], "require"=>"true","message"=>Language::get('sns_comment_null'));
  712. $validate_arr[] = array("input"=>$_POST["commentcontent"], "validator"=>'Length',"min"=>0,"max"=>140,"message"=>Language::get('sns_content_beyond'));
  713. //评论数超过最大次数出现验证码
  714. if(intval(cookie('commentnum'))>=self::MAX_RECORDNUM){
  715. $validate_arr[] = array("input"=>$_POST["captcha"], "require"=>"true","message"=>Language::get('wrong_null'));
  716. }
  717. $obj_validate -> validateparam = $validate_arr;
  718. $error = $obj_validate->validate();
  719. if ($error != ''){
  720. showDialog($error,'','error');
  721. }
  722. //发帖数超过最大次数出现验证码
  723. if(intval(cookie('commentnum'))>=self::MAX_RECORDNUM){
  724. if (!checkSeccode($_POST['nchash'],$_POST['captcha'])){
  725. showDialog(Language::get('wrong_checkcode'),'','error');
  726. }
  727. }
  728. //查询会员信息
  729. $member_model = Model('member');
  730. $member_info = $member_model->getMemberInfo(array('member_id'=>$_SESSION['member_id'],'member_state'=>1));
  731. if (empty($member_info)){
  732. showDialog(Language::get('sns_member_error'),'','error');
  733. }
  734. $owner_id = 0;
  735. if ($originaltype == 1){
  736. //查询分享和喜欢商品信息
  737. $sharegoods_model = Model('sns_sharegoods');
  738. $sharegoods_info = $sharegoods_model->getSharegoodsInfo(array('share_id'=>"{$originalid}"));
  739. if (empty($sharegoods_info)){
  740. showDialog(Language::get('sns_comment_fail'),'','error');
  741. }
  742. $owner_id = $sharegoods_info['share_memberid'];
  743. }else {
  744. //查询原帖信息
  745. $tracelog_model = Model('sns_tracelog');
  746. $tracelog_info = $tracelog_model->getTracelogRow(array('trace_id'=>"{$originalid}",'trace_state'=>'0'));
  747. if (empty($tracelog_info)){
  748. showDialog(Language::get('sns_comment_fail'),'','error');
  749. }
  750. $owner_id = $tracelog_info['trace_memberid'];
  751. }
  752. $comment_model = Model('sns_comment');
  753. $insert_arr = array();
  754. $insert_arr['comment_memberid'] = $_SESSION['member_id'];
  755. $insert_arr['comment_membername'] = $_SESSION['member_name'];
  756. $insert_arr['comment_memberavatar'] = $member_info['member_avatar'];
  757. $insert_arr['comment_originalid'] = $originalid;
  758. $insert_arr['comment_originaltype'] = $originaltype;
  759. $insert_arr['comment_content'] = $_POST['commentcontent'];
  760. $insert_arr['comment_addtime'] = time();
  761. $insert_arr['comment_ip'] = getIp();
  762. $insert_arr['comment_state'] = '0';//正常
  763. $result = $comment_model->commentAdd($insert_arr);
  764. if ($result){
  765. if ($originaltype == 1){
  766. //更新商品的评论数
  767. $update_arr = array();
  768. $update_arr['share_commentcount'] = array('sign'=>'increase','value'=>'1');
  769. $sharegoods_model->editSharegoods($update_arr,array('share_id'=>"{$originalid}"));
  770. }else {
  771. //更新动态统计信息
  772. $update_arr = array();
  773. $update_arr['trace_commentcount'] = array('sign'=>'increase','value'=>'1');
  774. if (intval($tracelog_info['trace_originalid'])== 0){
  775. $update_arr['trace_orgcommentcount'] = array('sign'=>'increase','value'=>'1');
  776. }
  777. $tracelog_model->tracelogEdit($update_arr,array('trace_id'=>"$originalid"));
  778. unset($update_arr);
  779. //更新所有转帖的原帖评论次数
  780. if (intval($tracelog_info['trace_originalid'])== 0){
  781. $tracelog_model->tracelogEdit(array('trace_orgcommentcount'=>$tracelog_info['trace_orgcommentcount']+1),array('trace_originalid'=>"$originalid"));
  782. }
  783. }
  784. //建立cookie
  785. if (cookie('commentnum') != null && intval(cookie('commentnum')) >0){
  786. setNcCookie('commentnum',intval(cookie('commentnum'))+1,2*3600);//保存2小时
  787. }else{
  788. setNcCookie('commentnum',1,2*3600);//保存2小时
  789. }
  790. $js = "$(\"#content_comment{$originalid}\").val('');";
  791. if ($_POST['showtype'] == 1){
  792. $js .="$(\"#tracereply_{$originalid}\").load('index.php?act=member_snshome&op=commenttop&mid={$owner_id}&id={$originalid}&type={$originaltype}');";
  793. }else {
  794. $js .="$(\"#tracereply_{$originalid}\").load('index.php?act=member_snshome&op=commentlist&mid={$owner_id}&id={$originalid}&type={$originaltype}');";
  795. }
  796. showDialog(Language::get('sns_comment_succ'),'','succ',$js);
  797. }
  798. }
  799. /**
  800. * 删除评论(访客登录后操作)
  801. */
  802. public function delcommentOp(){
  803. $id = intval($_GET['id']);
  804. if ($id <= 0){
  805. showDialog(Language::get('wrong_argument'),'','error');
  806. }
  807. $comment_model = Model('sns_comment');
  808. //查询评论信息
  809. $comment_info = $comment_model->getCommentRow(array('comment_id'=>"$id",'comment_memberid'=>"{$_SESSION['member_id']}"));
  810. if (empty($comment_info)){
  811. showDialog(Language::get('sns_comment_recorderror'),'','error');
  812. }
  813. //删除评论
  814. $condition = array();
  815. $condition['comment_id'] = "$id";
  816. $result = $comment_model->delComment($condition);
  817. if ($result){
  818. if ($comment_info['comment_originaltype'] == 1){
  819. //更新商品评论数
  820. $sharegoods_model = Model('sns_sharegoods');
  821. $update_arr = array();
  822. $update_arr['share_commentcount'] = array('sign'=>'decrease','value'=>'1');
  823. $sharegoods_model->editSharegoods($update_arr,array('share_id'=>"{$comment_info['comment_originalid']}"));
  824. }else {
  825. //更新动态统计信息
  826. $tracelog_model = Model('sns_tracelog');
  827. $update_arr = array();
  828. $update_arr['trace_commentcount'] = array('sign'=>'decrease','value'=>'1');
  829. $tracelog_model->tracelogEdit($update_arr,array('trace_id'=>"{$comment_info['comment_originalid']}"));
  830. }
  831. $js .="$('.comment-list [nc_type=\"commentrow_{$id}\"]').remove();";
  832. showDialog(Language::get('nc_common_del_succ'),'','succ',$js);
  833. }else {
  834. showDialog(Language::get('nc_common_del_fail'),'','error');
  835. }
  836. }
  837. /**
  838. * 喜欢商品(访客登录后操作)
  839. */
  840. public function editlikeOp(){
  841. $obj_validate = new Validator();
  842. $validate_arr[] = array("input"=>$_GET["id"], "require"=>"true","message"=>Language::get('sns_likegoods_choose'));
  843. $obj_validate -> validateparam = $validate_arr;
  844. $error = $obj_validate->validate();
  845. if ($error != ''){
  846. showDialog($error,'','error');
  847. }
  848. //查询会员信息
  849. $member_model = Model('member');
  850. $member_info = $member_model->getMemberInfo(array('member_id'=>$_SESSION['member_id'],'member_state'=>1));
  851. if (empty($member_info)){
  852. showDialog(Language::get('sns_member_error'),'','error');
  853. }
  854. //查询商品信息
  855. $goods_model = Model('goods');
  856. $goods_info = $goods_model->getGoodsOnlineInfoForShare(intval($_GET["id"]));
  857. if (empty($goods_info)){
  858. showDialog(Language::get('sns_goods_error'),'','error');
  859. }
  860. $sharegoods_model = Model('sns_sharegoods');
  861. //判断该商品是否已经存在分享记录
  862. $sharegoods_info = $sharegoods_model->getSharegoodsInfo(array('share_memberid'=>"{$_SESSION['member_id']}",'share_goodsid'=>"{$goods_info['goods_id']}"));
  863. if (!empty($sharegoods_info) && $sharegoods_info['share_islike'] == 1){
  864. showDialog(Language::get('sns_likegoods_exist'),'','error');
  865. }
  866. if (empty($sharegoods_info)){
  867. //添加分享商品信息
  868. $insert_arr = array();
  869. $insert_arr['share_goodsid'] = $goods_info['goods_id'];
  870. $insert_arr['share_memberid'] = $_SESSION['member_id'];
  871. $insert_arr['share_membername'] = $_SESSION['member_name'];
  872. $insert_arr['share_content'] = '';
  873. $insert_arr['share_likeaddtime'] = time();
  874. $insert_arr['share_privacy'] = 0;
  875. $insert_arr['share_commentcount'] = 0;
  876. $insert_arr['share_islike'] = 1;
  877. $result = $sharegoods_model->sharegoodsAdd($insert_arr);
  878. unset($insert_arr);
  879. }else {
  880. //更新分享商品信息
  881. $update_arr = array();
  882. $update_arr['share_likeaddtime'] = time();
  883. $update_arr['share_islike'] = 1;
  884. $result = $sharegoods_model->editSharegoods($update_arr,array('share_id'=>"{$sharegoods_info['share_id']}"));
  885. unset($update_arr);
  886. }
  887. if ($result){
  888. //商品缓存数据更新
  889. //生成缓存的键值
  890. $hash_key = $goods_info['goods_id'];
  891. //先查找$hash_key缓存
  892. if ($_cache = rcache($hash_key,'product')){
  893. $_cache['likenum'] = intval($_cache['likenum'])+1;
  894. //缓存商品信息
  895. wcache($hash_key,$_cache,'product');
  896. }
  897. //更新SNS商品表信息
  898. $snsgoods_model = Model('sns_goods');
  899. $snsgoods_info = $snsgoods_model->getGoodsInfo(array('snsgoods_goodsid'=>"{$goods_info['goods_id']}"));
  900. if (empty($snsgoods_info)){
  901. //添加SNS商品
  902. $insert_arr = array();
  903. $insert_arr['snsgoods_goodsid'] = $goods_info['goods_id'];
  904. $insert_arr['snsgoods_goodsname'] = $goods_info['goods_name'];
  905. $insert_arr['snsgoods_goodsimage'] = $goods_info['goods_image'];
  906. $insert_arr['snsgoods_goodsprice'] = $goods_info['goods_price'];
  907. $insert_arr['snsgoods_storeid'] = $goods_info['store_id'];
  908. $insert_arr['snsgoods_storename'] = $goods_info['store_name'];
  909. $insert_arr['snsgoods_addtime'] = time();
  910. $insert_arr['snsgoods_likenum'] = 1;
  911. $insert_arr['snsgoods_likemember'] = "{$_SESSION['member_id']}";
  912. $insert_arr['snsgoods_sharenum'] = 0;
  913. $snsgoods_model->goodsAdd($insert_arr);
  914. unset($insert_arr);
  915. }else {
  916. //更新SNS商品
  917. $update_arr = array();
  918. $update_arr['snsgoods_likenum'] = intval($snsgoods_info['snsgoods_likenum'])+1;
  919. $likemember_arr = array();
  920. if (!empty($snsgoods_info['snsgoods_likemember'])){
  921. $likemember_arr = explode(',',$snsgoods_info['snsgoods_likemember']);
  922. }
  923. $likemember_arr[] = $_SESSION['member_id'];
  924. $update_arr['snsgoods_likemember'] = implode(',',$likemember_arr);
  925. $snsgoods_model->editGoods($update_arr,array('snsgoods_goodsid'=>"{$goods_info['goods_id']}"));
  926. }
  927. //添加喜欢动态
  928. $tracelog_model = Model('sns_tracelog');
  929. $insert_arr = array();
  930. $insert_arr['trace_originalid'] = '0';
  931. $insert_arr['trace_originalmemberid'] = '0';
  932. $insert_arr['trace_memberid'] = $_SESSION['member_id'];
  933. $insert_arr['trace_membername'] = $_SESSION['member_name'];
  934. $insert_arr['trace_memberavatar'] = $member_info['member_avatar'];
  935. $insert_arr['trace_title'] = Language::get('sns_likegoods_title');
  936. $content_str = '';
  937. $content_str .= "<div class=\"fd-media\">
  938. <div class=\"goodsimg\"><a target=\"_blank\" href=\"".urlShop('goods', 'index', array('goods_id'=>$goods_info['goods_id']))."\"><img src=\"".thumb($goods_info, 240)."\" onload=\"javascript:DrawImage(this,120,120);\" alt=\"{$goods_info['goods_name']}\"></a></div>
  939. <div class=\"goodsinfo\">
  940. <dl>
  941. <dt><a target=\"_blank\" href=\"".urlShop('goods', 'index', array('goods_id'=>$goods_info['goods_id']))."\">".$goods_info['goods_name']."</a></dt>
  942. <dd>".Language::get('sns_sharegoods_price').Language::get('nc_colon').Language::get('currency').$goods_info['goods_price']."</dd>
  943. <dd>".Language::get('sns_sharegoods_freight').Language::get('nc_colon').Language::get('currency').$goods_info['goods_freight']."</dd>
  944. <dd nctype=\"collectbtn_{$goods_info['goods_id']}\"><a href=\"javascript:void(0);\" onclick=\"javascript:collect_goods(\'{$goods_info['goods_id']}\',\'succ\',\'collectbtn_{$goods_info['goods_id']}\');\">".Language::get('sns_sharegoods_collect')."</a>&nbsp;&nbsp;(".$goods_info['goods_collect'].Language::get('sns_collecttip').")</dd>
  945. </dl>
  946. </div>
  947. </div>";
  948. $insert_arr['trace_content'] = $content_str;
  949. $insert_arr['trace_addtime'] = time();
  950. $insert_arr['trace_state'] = '0';
  951. $insert_arr['trace_privacy'] = 0;
  952. $insert_arr['trace_commentcount'] = 0;
  953. $insert_arr['trace_copycount'] = 0;
  954. $result = $tracelog_model->tracelogAdd($insert_arr);
  955. $js = "var obj = $(\"#likestat_{$goods_info['goods_id']}\"); $(\"#likestat_{$goods_info['goods_id']}\").find('i').addClass('noaction');$(obj).find('a').addClass('noaction'); var countobj=$('[nc_type=\'likecount_{$goods_info['goods_id']}\']');$(countobj).html(parseInt($(countobj).text())+1);";
  956. showDialog(Language::get('nc_common_op_succ'),'','succ',$js);
  957. }else {
  958. showDialog(Language::get('nc_common_op_fail'),'','error');
  959. }
  960. }
  961. /**
  962. * 添加转发
  963. */
  964. public function addforwardOp(){
  965. $obj_validate = new Validator();
  966. $originalid = intval($_POST["originalid"]);
  967. $validate_arr[] = array("input"=>$originalid, "require"=>"true",'validator'=>'Compare',"operator"=>' > ','to'=>0,"message"=>Language::get('sns_forward_fail'));
  968. $validate_arr[] = array("input"=>$_POST["forwardcontent"], "validator"=>'Length',"min"=>0,"max"=>140,"message"=>Language::get('sns_content_beyond'));
  969. //发帖数超过最大次数出现验证码
  970. if(intval(cookie('forwardnum'))>=self::MAX_RECORDNUM){
  971. $validate_arr[] = array("input"=>$_POST["captcha"], "require"=>"true","message"=>Language::get('wrong_null'));
  972. }
  973. $obj_validate -> validateparam = $validate_arr;
  974. $error = $obj_validate->validate();
  975. if ($error != ''){
  976. showDialog($error,'','error');
  977. }
  978. //发帖数超过最大次数出现验证码
  979. if(intval(cookie('forwardnum'))>=self::MAX_RECORDNUM){
  980. if (!checkSeccode($_POST['nchash'],$_POST['captcha'])){
  981. showDialog(Language::get('wrong_checkcode'),'','error');
  982. }
  983. }
  984. //查询会员信息
  985. $member_model = Model('member');
  986. $member_info = $member_model->getMemberInfo(array('member_id'=>$_SESSION['member_id'],'member_state'=>1));
  987. if (empty($member_info)){
  988. showDialog(Language::get('sns_member_error'),'','error');
  989. }
  990. //查询原帖信息
  991. $tracelog_model = Model('sns_tracelog');
  992. $tracelog_info = $tracelog_model->getTracelogRow(array('trace_id'=>"{$originalid}",'trace_state'=>"0"));
  993. if (empty($tracelog_info)){
  994. showDialog(Language::get('sns_forward_fail'),'','error');
  995. }
  996. $insert_arr = array();
  997. $insert_arr['trace_originalid'] = $tracelog_info['trace_originalid']>0?$tracelog_info['trace_originalid']:$originalid;//如果被转发的帖子为原帖的话,那么为原帖ID;如果被转发的帖子为转帖的话,那么为该转帖的原帖ID(即最初始帖子ID)
  998. $insert_arr['trace_originalmemberid'] = $tracelog_info['trace_originalid']>0?$tracelog_info['trace_originalmemberid']:$tracelog_info['trace_memberid'];
  999. $insert_arr['trace_memberid'] = $_SESSION['member_id'];
  1000. $insert_arr['trace_membername'] = $_SESSION['member_name'];
  1001. $insert_arr['trace_memberavatar'] = $member_info['member_avatar'];
  1002. $insert_arr['trace_title'] = $_POST['forwardcontent']?$_POST['forwardcontent']:Language::get('sns_forward');
  1003. if ($tracelog_info['trace_originalid'] > 0 || $tracelog_info['trace_from'] != 1){
  1004. $insert_arr['trace_content'] = addslashes($tracelog_info['trace_content']);
  1005. }else {
  1006. $content_str ="<div class=\"title\"><a href=\"%siteurl%index.php?act=member_snshome&mid={$tracelog_info['trace_memberid']}\" target=\"_blank\" class=\"uname\">{$tracelog_info['trace_membername']}</a>";
  1007. $content_str .= Language::get('nc_colon')."{$tracelog_info['trace_title']}</div>";
  1008. $content_str .=addslashes($tracelog_info['trace_content']);
  1009. $insert_arr['trace_content'] = $content_str;
  1010. }
  1011. $insert_arr['trace_addtime'] = time();
  1012. $insert_arr['trace_state'] = '0';
  1013. if ($tracelog_info['trace_privacy'] >0){
  1014. $insert_arr['trace_privacy'] = 2;//因为动态可见权限跟转帖功能,本身就是矛盾的,为了防止可见度无法控制,所以如果原帖不为所有人可见,那么转帖的动态权限就为仅自己可见,否则为所有人可见
  1015. }else {
  1016. $insert_arr['trace_privacy'] = 0;
  1017. }
  1018. $insert_arr['trace_commentcount'] = 0;
  1019. $insert_arr['trace_copycount'] = 0;
  1020. $insert_arr['trace_orgcommentcount'] = $tracelog_info['trace_orgcommentcount'];
  1021. $insert_arr['trace_orgcopycount'] = $tracelog_info['trace_orgcopycount'];
  1022. $result = $tracelog_model->tracelogAdd($insert_arr);
  1023. if ($result){
  1024. //更新动态转发次数
  1025. $tracelog_model = Model('sns_tracelog');
  1026. $update_arr = array();
  1027. $update_arr['trace_copycount'] = array('sign'=>'increase','value'=>'1');
  1028. $update_arr['trace_orgcopycount'] = array('sign'=>'increase','value'=>'1');
  1029. $condition = array();
  1030. //原始贴和被转帖都增加转帖次数
  1031. if ($tracelog_info['trace_originalid'] > 0){
  1032. $condition['traceid_in'] = "{$tracelog_info['trace_originalid']}','{$originalid}";
  1033. }else {
  1034. $condition['trace_id'] = "$originalid";
  1035. }
  1036. $tracelog_model->tracelogEdit($update_arr,$condition);
  1037. unset($condition);
  1038. //更新所有转帖的原帖转发次数
  1039. $condition = array();
  1040. //原始贴和被转帖都增加转帖次数
  1041. if ($tracelog_info['trace_originalid'] > 0){
  1042. $condition['trace_originalid'] = "{$tracelog_info['trace_originalid']}";
  1043. }else {
  1044. $condition['trace_originalid'] = "$originalid";
  1045. }
  1046. $tracelog_model->tracelogEdit(array('trace_orgcopycount'=>$tracelog_info['trace_orgcopycount']+1),$condition);
  1047. if ($_GET['irefresh']){
  1048. //建立cookie
  1049. if (cookie('forwardnum') != null && intval(cookie('forwardnum')) >0){
  1050. setNcCookie('forwardnum',intval(cookie('forwardnum'))+1,2*3600);//保存2小时
  1051. }else{
  1052. setNcCookie('forwardnum',1,2*3600);//保存2小时
  1053. }
  1054. if ($_GET['type']=='home'){
  1055. $js = "$('#friendtrace').lazyshow({url:\"index.php?act=member_snshome&op=tracelist&mid={$tracelog_info['trace_memberid']}&curpage=1\",'iIntervalId':true});";
  1056. }else if ($_GET['type']=='snshome'){
  1057. $js = "$('#forward_".$originalid."').hide();$('#friendtrace').lazyshow({url:\"index.php?act=member_snshome&op=tracelist&mid={$tracelog_info['trace_memberid']}&curpage=1\",'iIntervalId':true});";
  1058. }else {
  1059. $js = "$('#friendtrace').lazyshow({url:\"index.php?act=member_snsindex&op=tracelist&curpage=1\",'iIntervalId':true});";
  1060. }
  1061. showDialog(Language::get('sns_forward_succ'),'','succ',$js);
  1062. }else {
  1063. showDialog(Language::get('sns_forward_succ'),'','succ');
  1064. }
  1065. }else {
  1066. showDialog(Language::get('sns_forward_fail'),'','error');
  1067. }
  1068. }
  1069. /**
  1070. * 商品收藏页面和商品详细页面分享商品
  1071. */
  1072. public function sharegoods_oneOp(){
  1073. Language::read('member_sharemanage');
  1074. $gid = intval($_GET['gid']);
  1075. if ($gid<=0){
  1076. showDialog(Language::get('wrong_argument'),'','error');
  1077. }
  1078. if ($_GET['dialog']){
  1079. $js = "CUR_DIALOG = ajax_form('sharegoods', '".Language::get('sns_sharegoods_tofriend')."', 'index.php?act=member_snsindex&op=sharegoods_one&gid={$gid}', 480);";
  1080. showDialog('','','js',$js);
  1081. }
  1082. //查询商品信息
  1083. $goods_info = Model('goods')->getGoodsOnlineInfoForShare($gid);
  1084. //判断系统是否开启站外分享功能
  1085. if (C('share_isuse') == 1){
  1086. //站外分享接口
  1087. $model = Model('sns_binding');
  1088. $app_arr = $model->getUsableApp($_SESSION['member_id']);
  1089. Tpl::output('app_arr',$app_arr);
  1090. }
  1091. //信息输出
  1092. Tpl::output('nchash',substr(md5(SHOP_SITE_URL.$_GET['act'].$_GET['op']),0,8));
  1093. Tpl::output('goods_info',$goods_info);
  1094. Tpl::showpage('member_snssharegoods_one','null_layout');
  1095. }
  1096. /**
  1097. * 店铺收藏页面分享店铺
  1098. */
  1099. public function sharestore_oneOp(){
  1100. Language::read('member_sharemanage');
  1101. $sid = intval($_GET['sid']);
  1102. if ($sid<=0){
  1103. showDialog(Language::get('wrong_argument'),'','error');
  1104. }
  1105. if ($_GET['dialog']){
  1106. $js = "ajax_form('sharestore', '".Language::get('sns_sharestore')."', 'index.php?act=member_snsindex&op=sharestore_one&sid={$sid}', 480);";
  1107. showDialog('','','js',$js);
  1108. }
  1109. //查询店铺信息
  1110. $store_model = Model('store');
  1111. $store_info = $store_model->getStoreInfoByID($sid);
  1112. if (empty($store_info) || $store_info['store_state'] == 0){
  1113. showDialog(Language::get('sns_sharestore_storeerror'),'','error');
  1114. }
  1115. $store_info['store_url'] = urlShop('show_store', 'index', array('store_id'=>$store_info['store_id']));
  1116. //判断系统是否开启站外分享功能
  1117. if (C('share_isuse') == 1){
  1118. //站外分享接口
  1119. $model = Model('sns_binding');
  1120. $app_arr = $model->getUsableApp($_SESSION['member_id']);
  1121. Tpl::output('app_arr',$app_arr);
  1122. }
  1123. //信息输出
  1124. Tpl::output('nchash',substr(md5(SHOP_SITE_URL.$_GET['act'].$_GET['op']),0,8));
  1125. Tpl::output('store_info',$store_info);
  1126. Tpl::showpage('member_snssharestore_one','null_layout');
  1127. }
  1128. }