PageRenderTime 61ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/core/service/share.service.php

https://github.com/alin40404/FanweShare
PHP | 2590 lines | 1981 code | 273 blank | 336 comment | 296 complexity | a8b4fc1e44a6080785522861da0e2b83 MD5 | raw file
Possible License(s): Apache-2.0
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 方维购物分享网站系统 (Build on ThinkPHP)
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2011 http://fanwe.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. /**
  8. * share.service.php
  9. *
  10. * 分享服务类
  11. *
  12. * @package service
  13. * @author awfigq <awfigq@qq.com>
  14. */
  15. class ShareService
  16. {
  17. /*===========分享列表、详细 Begin==============*/
  18. /**
  19. * 检测分享中的敏感词
  20. * @param string $content 分享内容
  21. * @param string $type content,title,tag 检测类型
  22. * @return array(
  23. * 'error_code' => '错误代码'
  24. * 'error_msg' => 错误描述
  25. * )
  26. */
  27. public function checkWord(&$content,$type)
  28. {
  29. $result = array('error_code'=>0,'error_msg'=>'');
  30. $server = FS("ContentCheck");
  31. if($server->check($content) > 0)
  32. {
  33. $words_found = implode(",", $server->words_found);
  34. $tt_str = lang('share','word_'.$type);
  35. $result['error_code'] = $server->result;
  36. $result['error_msg'] = sprintf(lang('share','word_tips_'. $server->result),$tt_str,$words_found);
  37. }
  38. return $result;
  39. }
  40. /**
  41. * 通过的分享提交表单的数据处理
  42. * @param mix $_POST 为标准分享表单 $_POST['type'] default:默认,bar:主题,ershou:二手,ask:问答
  43. * $_POST['share_data'] = photo 有图 goods 有产品 goods_photo:有图有商品 default:都没有
  44. * * 返回
  45. * array(
  46. * 'status' => xxx 状态 bool
  47. * 'share_id' => share_id
  48. * 'error_code' => '错误代码'
  49. * 'error_msg' => 错误描述
  50. * )
  51. */
  52. public function submit($_POST,$is_check = true,$is_score = true)
  53. {
  54. //创建分享数据
  55. global $_FANWE;
  56. $share_content = htmlspecialchars(trim($_POST['content']));
  57. $share_data = array();
  58. $share_data['content'] = $share_content;
  59. $share_data['uid'] = intval($_FANWE['uid']);
  60. $share_data['parent_id'] = intval($_POST['parent_id']); //分享的转发
  61. $share_data['rec_id'] = intval($_POST['rec_id']); //关联的编号
  62. $share_data['base_id'] = intval($_POST['base_id']);
  63. $share_data['albumid'] = intval($_POST['albumid']);
  64. if($is_check)
  65. {
  66. $check_result = ShareService::checkWord($share_data['content'],'content');
  67. if($check_result['error_code'] == 1)
  68. {
  69. $check_result['status'] = false;
  70. return $check_result;
  71. }
  72. }
  73. /*//当为转发的时候,获取原创ID
  74. if($share_data['parent_id'] > 0 && $share_data['base_id'] == 0)
  75. {
  76. $base_id = intval(FDB::resultFirst('SELECT base_id
  77. FROM '.FDB::table("share").'
  78. WHERE share_id = '.$share_data['parent_id']));
  79. $share_data['base_id'] = $base_id == 0 ? $share_data['parent_id'] : $base_id;
  80. }*/
  81. if(isset($_POST['type']))
  82. $share_data['type'] = $_POST['type'];
  83. $share_data['title'] = isset($_POST['title']) ? htmlspecialchars(trim($_POST['title'])) : '';
  84. if(!empty($share_data['title']) && $is_check)
  85. {
  86. $check_result = ShareService::checkWord($share_data['title'],'title');
  87. if($check_result['error_code'] == 1)
  88. {
  89. $check_result['status'] = false;
  90. return $check_result;
  91. }
  92. }
  93. $data['share'] = $share_data;
  94. //创建分享商品数据
  95. $share_goods_data = array();
  96. if(isset($_POST['goods']) && is_array($_POST['goods']) && count($_POST['goods']) > 0)
  97. {
  98. $share_goods = $_POST['goods'];
  99. foreach($share_goods as $goods)
  100. {
  101. $goods = unserialize(authcode($goods,'DECODE'));
  102. $gkey = $goods['item']['key'];
  103. $c_data = array();
  104. $c_data['img'] = $goods['item']['img'];
  105. $c_data['server_code'] = $goods['item']['server_code'];
  106. $c_data['goods_key'] = $gkey;
  107. $c_data['name'] = addslashes(htmlspecialchars($goods['item']['name']));
  108. $c_data['url'] = $goods['item']['url'];
  109. $c_data['taoke_url'] = $goods['item']['taoke_url'];
  110. $c_data['price'] = $goods['item']['price'];
  111. $c_data['sort'] = isset($_POST['goods_sort'][$gkey]) ? intval($_POST['goods_sort'][$gkey]) : 10;
  112. $c_data['shop_name'] = addslashes(htmlspecialchars($goods['shop']['name']));
  113. $c_data['shop_logo'] = $goods['shop']['logo'];
  114. $c_data['shop_server_code'] = $goods['shop']['server_code'];
  115. $c_data['shop_url'] = $goods['shop']['url'];
  116. $c_data['shop_taoke_url'] = $goods['shop']['taoke_url'];
  117. array_push($share_goods_data,$c_data);
  118. }
  119. }
  120. $data['share_goods'] = $share_goods_data;
  121. //创建图库数据
  122. $share_photos_data = array();
  123. if(isset($_POST['pics']) && is_array($_POST['pics']) && count($_POST['pics']) > 0)
  124. {
  125. $share_photos = $_POST['pics'];
  126. foreach($share_photos as $pkey => $photo)
  127. {
  128. $photo = authcode($photo,'DECODE');
  129. $photo = unserialize($photo);
  130. $c_data = array();
  131. $c_data['img'] = $photo['path'];
  132. $c_data['server_code'] = $photo['server_code'];
  133. $type = $photo['type'];
  134. if(empty($type) || !in_array($type,array('default', 'dapei', 'look')))
  135. $type = 'default';
  136. $c_data['type'] = $type;
  137. $c_data['sort'] = isset($_POST['pics_sort'][$pkey]) ? intval($_POST['pics_sort'][$pkey]) : 10;
  138. array_push($share_photos_data,$c_data);
  139. }
  140. }
  141. $data['share_photo'] = $share_photos_data;
  142. if($share_data['albumid'] > 0 && count($share_photos_data) == 0 && count($share_goods_data) == 0)
  143. exit;
  144. $data['share_tag'] = array();
  145. if(isset($_POST['tags']) && trim($_POST['tags']) != '')
  146. {
  147. $tags = htmlspecialchars(trim($_POST['tags']));
  148. if($is_check)
  149. {
  150. $check_result = ShareService::checkWord($tags,'tag');
  151. if($check_result['error_code'] == 1)
  152. {
  153. $check_result['status'] = false;
  154. return $check_result;
  155. }
  156. }
  157. $tags = str_replace(' ',' ',$tags);
  158. $data['share_tag'] = explode(' ',$tags);
  159. }
  160. $data['pub_out_check'] = intval($_POST['pub_out_check']); //发送到外部微博
  161. $result = ShareService::save($data,$is_score);
  162. return $result;
  163. }
  164. /**
  165. * 保存分享数据
  166. * 注:所有图片地址经处理过并转存过的临时图片或远程图片
  167. * $data = array( //分享的基本数据
  168. * 'share'=>array(
  169. * 'uid'=> xxx, //分享的会员ID
  170. * 'parent_id' => xxx //转发的分享ID
  171. * 'content' => xxx //分享的内容
  172. * 'type'=> xxx //分享的来源,默认为default
  173. * 'title' => xxx //分享的标题
  174. * 'base_id' => xxx //原创ID
  175. * ),
  176. *
  177. * 'share_photo'=>array( //图库 #可选#
  178. * array( //多张图
  179. * 'img' => xxx //原图
  180. * )
  181. * ),
  182. * 'share_goods'=>array( //分享的商品 #可选#
  183. * array(
  184. * 'img' => xxx //商品图
  185. * 'name' => xxx //品名
  186. * 'url' => xxx //商品地址
  187. * 'price' => xxx //价格
  188. * 'shop_name' => xxx //商户名称
  189. * 'shop_logo' => xxx //商户的logo
  190. * 'shop_url' => xxx //商户地址
  191. * ) //多个商品
  192. * ),
  193. * 'share_tag' => array(xxx,xxx,xxx), //该分享的标签
  194. * );
  195. *
  196. * 返回
  197. * array(
  198. * 'status' => xxx 状态 bool
  199. * 'share_id' => share_id
  200. * )
  201. */
  202. public function save($data,$is_score = true)
  203. {
  204. global $_FANWE;
  205. //保存分享数据
  206. $share_data = $data['share'];
  207. $share_album_id = (int)$share_data['albumid'];
  208. unset($share_data['albumid']);
  209. $share_data['create_time'] = TIME_UTC;
  210. $share_data['day_time'] = getTodayTime();
  211. $share_id = FDB::insert('share',$share_data,true);
  212. if(intval($share_id)>0)
  213. {
  214. $share_data_now_type = $share_data['type'];
  215. $share_data_rec_id = $share_data['rec_id'];
  216. $share_server_code = array();
  217. if(empty($share_data_now_type))
  218. $share_data_now_type = 'default';
  219. /*//是否是回复 是的 话 添加评论消息提示
  220. if(intval($share_data['parent_id']) > 0)
  221. {
  222. $base_share_id = FDB::resultFirst("select uid from ".FDB::table('share')." where share_id = ".$share_data['parent_id']);
  223. $result = FDB::query("INSERT INTO ".FDB::table('user_notice')."(uid, type, num, create_time) VALUES('$base_share_id',3,1,'".TIME_UTC."')", 'SILENT');
  224. if(!$result)
  225. FDB::query("UPDATE ".FDB::table('user_notice')." SET num = num + 1, create_time='".TIME_UTC."' WHERE uid='$base_share_id' AND type=3");
  226. }*/
  227. //保存话题
  228. $is_event = false;
  229. $event_list = array();
  230. $pattern = "/#([^\f\n\r\t\v]{1,80}?)#/";
  231. preg_match_all($pattern,$share_data['content'],$event_list);
  232. if(!empty($event_list[1]))
  233. {
  234. array_unique($event_list[1]);
  235. foreach($event_list[1] as $v)
  236. {
  237. $event_id = (int)FDB::resultFirst("select id from ".FDB::table("event")." where `title`='".$v."'");
  238. if($event_id == 0)
  239. {
  240. $event_data = array();
  241. $event_data['uid'] = $share_data['uid'];
  242. $event_data['title'] = $v;
  243. $event_data['share_id'] = $share_id;
  244. $event_data['create_time'] = TIME_UTC;
  245. $event_data['last_share'] = $share_id;
  246. $event_data['last_time'] = TIME_UTC;
  247. FDB::insert("event",$event_data);
  248. }
  249. else
  250. {
  251. $event_data = array();
  252. $event_data['event_id'] = $event_id;
  253. $event_data['uid'] = $share_data['uid'];
  254. $event_data['share_id'] = $share_id;
  255. FDB::insert("event_share",$event_data);
  256. FDB::query("update ".FDB::table("event")." set thread_count = thread_count+1,last_share=".$share_id.",last_time=".TIME_UTC." where id = $event_id");
  257. }
  258. }
  259. }
  260. $share_cates = array();
  261. $result['status'] = true;
  262. $result['share_id'] = $share_id;
  263. /*$content_match = FS('Words')->segment(clearExpress($share_data['content']),100);
  264. $title_tags = FS('Words')->segment($share_data['title'],100);
  265. if(!empty($title_tags))
  266. $content_match = array_merge($content_match, $title_tags);*/
  267. $content_match = clearExpress($share_data['content']);
  268. $content_match .= $share_data['title'];
  269. $is_rel_imgage = false;
  270. $weibo_img = '';
  271. $weibo_img_sort = 100000;
  272. $photo_count = 0;
  273. $server_args = array();
  274. FS("Image")->getImageArgs(&$server_args);
  275. //保存分享图片
  276. $share_photo = $data['share_photo'];
  277. foreach($share_photo as $k=>$photo)
  278. {
  279. if($photo_count >= $_FANWE['setting']['share_pic_count'])
  280. break;
  281. $o_img = false;
  282. if(FS("Image")->getIsServer() && !empty($photo['server_code']))
  283. {
  284. $server = FS("Image")->getServer($photo['server_code']);
  285. if(!empty($server))
  286. {
  287. $server_args['share_id'] = $share_id;
  288. $server_args['img_path'] = $photo['img'];
  289. $server = FS("Image")->getImageUrlToken($server_args,$server,1);
  290. $body = FS("Image")->sendRequest($server,'saveshare',true);
  291. if(!empty($body))
  292. {
  293. $o_img = unserialize($body);
  294. FS("Image")->setServerUploadCount($o_img['server_code']);
  295. $share_server_code[] = $o_img['server_code'];
  296. $o_img['url'] = str_replace('./','./'.$o_img['server_code'].'/',$o_img['url']);
  297. $weibo_img_url = FS("Image")->getImageUrl($o_img['url'],1);
  298. }
  299. }
  300. }
  301. else
  302. {
  303. $o_img = copyImage($photo['img'],array(),'share',true,$share_id);
  304. $weibo_img_url = FS("Image")->getImageUrl($o_img['url'],1);
  305. }
  306. if(!empty($o_img))
  307. {
  308. if($photo['sort'] < $weibo_img_sort)
  309. {
  310. $weibo_img = $weibo_img_url;
  311. $weibo_img_sort = $photo['sort'];
  312. }
  313. $share_photo_data['uid'] = $_FANWE['uid'];
  314. $share_photo_data['share_id'] = $share_id;
  315. $share_photo_data['img'] = $o_img['url'];
  316. $share_photo_data['type'] = $photo['type'];
  317. $share_photo_data['sort'] = $photo['sort'];
  318. $share_photo_data['img_width'] = $o_img['width'];
  319. $share_photo_data['img_height'] = $o_img['height'];
  320. $share_photo_data['server_code'] = $photo['server_code'];
  321. FDB::insert('share_photo',$share_photo_data,true);
  322. $photo_count++;
  323. }
  324. }
  325. //保存引用图片
  326. if(isset($data['rel_photo']))
  327. {
  328. $share_photo = $data['rel_photo'];
  329. foreach($share_photo as $share_photo_data)
  330. {
  331. if($photo_count >= $_FANWE['setting']['share_pic_count'])
  332. break;
  333. $is_rel_imgage = true;
  334. if($share_photo_data['sort'] < $weibo_img_sort)
  335. {
  336. $weibo_img = FS("Image")->getImageUrl($share_photo_data['img'],1);
  337. $weibo_img_sort = $share_photo_data['sort'];
  338. }
  339. $share_photo_data['uid'] = $_FANWE['uid'];
  340. $share_photo_data['share_id'] = $share_id;
  341. FDB::insert('share_photo',$share_photo_data,true);
  342. $photo_count++;
  343. }
  344. }
  345. $shop_ids = array();
  346. $goods_count = 0;
  347. //保存分享的商品
  348. if(isset($data['share_goods']))
  349. {
  350. $share_goods = $data['share_goods'];
  351. foreach($share_goods as $goods)
  352. {
  353. if($goods_count >= $_FANWE['setting']['share_goods_count'])
  354. break;
  355. $shop_id = 0;
  356. if(!empty($goods['shop_url']))
  357. {
  358. $shop_id = FDB::resultFirst('SELECT shop_id
  359. FROM '.FDB::table('shop').'
  360. WHERE shop_url = \''.$goods['shop_url'].'\'');
  361. if(intval($shop_id) == 0)
  362. {
  363. $content_match .= $goods['shop_name'];
  364. $shop_logo['url'] = '';
  365. if(!empty($goods['shop_logo']))
  366. {
  367. if(FS("Image")->getIsServer() && !empty($goods['shop_server_code']))
  368. {
  369. $server = FS("Image")->getServer($goods['shop_server_code']);
  370. if(!empty($server))
  371. {
  372. $args = array();
  373. $args['pic_url'] = $goods['shop_logo'];
  374. $server = FS("Image")->getImageUrlToken($args,$server,1);
  375. $body = FS("Image")->sendRequest($server,'saveshop',true);
  376. if(!empty($body))
  377. {
  378. $shop_logo = unserialize($body);
  379. FS("Image")->setServerUploadCount($shop_logo['server_code']);
  380. $shop_logo['url'] = str_replace('./','./'.$shop_logo['server_code'].'/',$shop_logo['url']);
  381. }
  382. }
  383. }
  384. else
  385. $shop_logo = copyFile($goods['shop_logo'],'shop',true);
  386. }
  387. $shop_data['shop_name'] = $goods['shop_name'];
  388. $shop_data['shop_logo'] = $shop_logo['url'];
  389. $shop_data['server_code'] = $goods['shop_server_code'];
  390. $shop_data['shop_url'] = $goods['shop_url'];
  391. $shop_data['taoke_url'] = $goods['shop_taoke_url'];
  392. $shop_id = FDB::insert('shop',$shop_data,true);
  393. }
  394. if($shop_id > 0)
  395. $shop_ids[] = $shop_id;
  396. }
  397. if(FS("Image")->getIsServer() && !empty($goods['server_code']))
  398. {
  399. $server = FS("Image")->getServer($goods['server_code']);
  400. if(!empty($server))
  401. {
  402. $server_args['share_id'] = $share_id;
  403. $server_args['img_path'] = $goods['img'];
  404. $server = FS("Image")->getImageUrlToken($server_args,$server,1);
  405. $body = FS("Image")->sendRequest($server,'saveshare',true);
  406. if(!empty($body))
  407. {
  408. $goods_img = unserialize($body);
  409. FS("Image")->setServerUploadCount($goods_img['server_code']);
  410. $share_server_code[] = $goods_img['server_code'];
  411. $goods_img['url'] = str_replace('./','./'.$goods_img['server_code'].'/',$goods_img['url']);
  412. $weibo_img_url = FS("Image")->getImageUrl($goods_img['url'],1);
  413. }
  414. }
  415. }
  416. else
  417. {
  418. $goods_img = copyImage($goods['img'],array(),'share',true,$share_id);
  419. $weibo_img_url = FS("Image")->getImageUrl($goods_img['url'],1);
  420. }
  421. if(!empty($goods_img))
  422. {
  423. if($goods['sort'] < $weibo_img_sort)
  424. {
  425. $weibo_img = $weibo_img_url;
  426. $weibo_img_sort = $goods['sort'];
  427. }
  428. $shop_id = intval($shop_id);
  429. //开始保存分享的商品
  430. $share_goods_data['uid'] = $_FANWE['uid'];
  431. $share_goods_data['share_id'] = $share_id;
  432. $share_goods_data['shop_id'] = $shop_id;
  433. $share_goods_data['img'] = $goods_img['url'];
  434. $share_goods_data['name'] = $goods['name'];
  435. $share_goods_data['url'] = $goods['url'];
  436. $share_goods_data['price'] = $goods['price'];
  437. $share_goods_data['sort'] = $goods['sort'];
  438. $share_goods_data['taoke_url'] = $goods['taoke_url'];
  439. $share_goods_data['goods_key'] = $goods['goods_key'];
  440. $share_goods_data['img_width'] = $goods_img['width'];
  441. $share_goods_data['img_height'] = $goods_img['height'];
  442. $share_goods_data['server_code'] = $goods['server_code'];
  443. FDB::insert('share_goods',$share_goods_data,true);
  444. $goods_tags = FS('Words')->segment($goods['name'],10);
  445. if(!empty($goods_tags))
  446. {
  447. $share_cates[] = ShareService::getCateByTags($goods_tags);
  448. }
  449. $content_match .= $goods['name'];
  450. $goods_count++;
  451. }
  452. }
  453. }
  454. //保存引用商品
  455. if(isset($data['rel_goods']))
  456. {
  457. $share_goods = $data['rel_goods'];
  458. foreach($share_goods as $share_goods_data)
  459. {
  460. if($goods_count >= $_FANWE['setting']['share_goods_count'])
  461. break;
  462. $is_rel_imgage = true;
  463. $shop_ids[] = $share_goods_data['shop_id'];
  464. if($share_goods_data['sort'] < $weibo_img_sort)
  465. {
  466. $weibo_img = $weibo_img = FS("Image")->getImageUrl($share_goods_data['img'],1);
  467. $weibo_img_sort = $share_goods_data['sort'];
  468. }
  469. $share_goods_data['uid'] = $_FANWE['uid'];
  470. $share_goods_data['share_id'] = $share_id;
  471. FDB::insert('share_goods',$share_goods_data,true);
  472. $goods_tags = FS('Words')->segment($goods['name'],10);
  473. if(!empty($goods_tags))
  474. {
  475. $share_cates[] = ShareService::getCateByTags($goods_tags);
  476. }
  477. $content_match .= $goods['name'];
  478. $goods_count++;
  479. }
  480. }
  481. if($goods_count > 0 && $photo_count > 0)
  482. $share_data_type = 'goods_photo';
  483. elseif($goods_count > 0)
  484. $share_data_type = 'goods';
  485. elseif($photo_count > 0)
  486. $share_data_type = 'photo';
  487. else
  488. $share_data_type = 'default';
  489. $update_share = array();
  490. $update_share['share_data'] = $share_data_type;
  491. if(count($share_server_code) > 0)
  492. {
  493. $share_server_code = array_unique($share_server_code);
  494. $update_share['server_code'] = implode(',',$share_server_code);
  495. }
  496. if($share_album_id > 0 && in_array($share_data_type,array('goods','photo','goods_photo')))
  497. {
  498. $album = FDB::fetchFirst('SELECT cid,id,title FROM '.FDB::table('album').' WHERE id = '.$share_album_id);
  499. if($album)
  500. {
  501. $update_share['type'] = 'album_item';
  502. $share_data_now_type = 'album_item';
  503. $share_data_rec_id = $album['id'];
  504. $share_data_rec_cate = $album['cid'];
  505. $update_share['rec_id'] = $album['id'];
  506. $update_share['title'] = addslashes($album['title']);
  507. }
  508. else
  509. {
  510. $update_share['rec_id'] = 0;
  511. $share_data_rec_id = 0;
  512. }
  513. }
  514. else
  515. $share_data_rec_id = 0;
  516. FDB::update("share",$update_share,"share_id=".$share_id);
  517. //更新会员统计
  518. FDB::query('UPDATE '.FDB::table('user_count').'
  519. SET shares = shares + 1,goods = goods + '.$goods_count.',photos = photos + '.$photo_count.'
  520. WHERE uid = '.$share_data['uid']);
  521. FS('Medal')->runAuto($share_data['uid'],'shares');
  522. FS('User')->medalBehavior($share_data['uid'],'continue_share');
  523. switch($share_data_type)
  524. {
  525. case 'goods_photo':
  526. FS('Medal')->runAuto($share_data['uid'],'goods');
  527. FS('User')->medalBehavior($share_data['uid'],'continue_goods');
  528. FS('Medal')->runAuto($share_data['uid'],'photos');
  529. FS('User')->medalBehavior($share_data['uid'],'continue_photo');
  530. break;
  531. case 'goods':
  532. FS('Medal')->runAuto($share_data['uid'],'goods');
  533. FS('User')->medalBehavior($share_data['uid'],'continue_goods');
  534. break;
  535. case 'photo':
  536. FS('Medal')->runAuto($share_data['uid'],'photos');
  537. FS('User')->medalBehavior($share_data['uid'],'continue_photo');
  538. break;
  539. }
  540. if(in_array($share_data_type,array('goods','photo','goods_photo')))
  541. {
  542. //更新会员发布的有图分享编号
  543. //FS('User')->setShareIds($share_data['uid'],$share_id);
  544. if(!empty($share_cates))
  545. {
  546. $cids = ShareService::getCidsByCates($share_cates);
  547. }
  548. if(!empty($data['share_tag']))
  549. {
  550. if(empty($cids))
  551. {
  552. $share_cates = array();
  553. $share_cates[] = ShareService::getCateByTags($data['share_tag']);
  554. $cids = ShareService::getCidsByCates($share_cates);
  555. }
  556. //$content_match = array_merge($content_match, $data['share_tag']);
  557. }
  558. //保存标签
  559. $share_tags = array();
  560. foreach($data['share_tag'] as $tag)
  561. {
  562. if(trim($tag) != '' && !in_array($tag,$share_tags))
  563. {
  564. array_push($share_tags,$tag);
  565. //为已存在的tags更新统计
  566. FDB::query('UPDATE '.FDB::table('goods_tags').'
  567. SET count = count + 1
  568. WHERE tag_name = \''.$tag.'\'');
  569. //数量大于100时为热门标签
  570. FDB::query('UPDATE '.FDB::table('goods_tags').'
  571. SET is_hot = 1
  572. WHERE tag_name = \''.$tag.'\' AND count >= 100');
  573. $content_match.=$tag;
  574. $tag_data = array();
  575. $tag_data['share_id'] = $share_id;
  576. $tag_data['tag_name'] = $tag;
  577. FDB::insert('share_tags',$tag_data);
  578. }
  579. }
  580. unset($share_tags);
  581. if(!empty($cids))
  582. {
  583. foreach($cids as $cid)
  584. {
  585. $cate_data = array();
  586. $cate_data['share_id'] = $share_id;
  587. $cate_data['cate_id'] = $cid;
  588. FDB::insert('share_category',$cate_data);
  589. }
  590. }
  591. //保存匹配查询
  592. $share_match['share_id'] = $share_id;
  593. $share_match['content_match'] = segmentToUnicode(clearSymbol($content_match));
  594. FDB::insert("share_match",$share_match);
  595. }
  596. ShareService::updateShareCache($share_id);
  597. if($share_data_rec_id > 0)
  598. {
  599. $album_share = array();
  600. $album_share['album_id'] = $share_data_rec_id;
  601. $album_share['share_id'] = $share_id;
  602. $album_share['cid'] = $share_data_rec_cate;
  603. $album_share['create_day'] = getTodayTime();
  604. FDB::insert("album_share",$album_share);
  605. FS('Album')->updateAlbumByShare($share_data_rec_id,$share_id);
  606. FS('Album')->updateAlbum($share_data_rec_id);
  607. }
  608. if(count($shop_ids) > 0)
  609. FS("Shop")->updateShopStatistic($shop_ids);
  610. //保存提到我的
  611. $atme_share_type = FDB::resultFirst("select `type` from ".FDB::table("share")." where `share_id`='".$share_id."'");
  612. if($atme_share_type != "fav")
  613. {
  614. $atme_list = array();
  615. $pattern = "/@([^\f\n\r\t\v@ ]{2,20}?)(?:\:| )/";
  616. preg_match_all($pattern,$share_data['content'],$atme_list);
  617. if(!empty($atme_list[1]))
  618. {
  619. $atme_list[1] = array_unique($atme_list[1]);
  620. $users = array();
  621. foreach($atme_list[1] as $user)
  622. {
  623. if(!empty($user))
  624. {
  625. $users[] = $user;
  626. }
  627. }
  628. $res = FDB::query('SELECT uid
  629. FROM '.FDB::table('user').'
  630. WHERE user_name '.FDB::createIN($users));
  631. while($data = FDB::fetch($res))
  632. {
  633. FS("User")->setUserTips($data['uid'],4,$share_id);
  634. }
  635. }
  636. }
  637. if($is_score && !in_array($share_data_now_type,array('fav','album_best','album_rec')))
  638. {
  639. if(!$is_rel_imgage && in_array($share_data_type,array('goods','photo','goods_photo')))
  640. FS("User")->updateUserScore($share_data['uid'],'share','image',$share_data['content'],$share_id);
  641. else
  642. FS("User")->updateUserScore($share_data['uid'],'share','default',$share_data['content'],$share_id);
  643. }
  644. if($data['pub_out_check'])
  645. {
  646. $weibo = array();
  647. $weibo['content'] = $share_data['content'];
  648. $weibo['img'] = $weibo_img;
  649. $weibo['ip'] = $_FANWE['client_ip'];
  650. $weibo['url'] = $_FANWE['site_url'].FU('note/index',array('sid'=>$share_id));
  651. $weibo['url'] = str_replace('//','/',$weibo['url']);
  652. $weibo['url'] = str_replace(':/','://',$weibo['url']);
  653. $weibo = base64_encode(serialize($weibo));
  654. if(empty($share_data['type']))
  655. $share_data['type'] = 'default';
  656. //转发到外部微博
  657. $uid = $_FANWE['uid'];
  658. $user_binds = FS("User")->getUserBindList($uid);
  659. $is_open = false;
  660. foreach($user_binds as $class => $bind)
  661. {
  662. if($bind['sync'] && file_exists(FANWE_ROOT."login/".$class.".php"))
  663. {
  664. $check_field = "";
  665. if(in_array($share_data['type'],array('bar','ask')))
  666. $check_field = "topic";
  667. elseif($share_data['type'] == 'default')
  668. $check_field = "weibo";
  669. if($bind['sync'][$check_field] == 1)
  670. {
  671. $is_open = true;
  672. //开始推送
  673. $schedule['uid'] = $uid;
  674. $schedule['type'] = $class;
  675. $schedule['data'] = $weibo;
  676. $schedule['pub_time'] = TIME_UTC;
  677. FDB::insert('pub_schedule',$schedule,true);
  678. }
  679. }
  680. }
  681. if($is_open)
  682. {
  683. if(function_exists('fsockopen'))
  684. $fp=fsockopen($_SERVER['HTTP_HOST'],80,&$errno,&$errstr,5);
  685. elseif(function_exists('pfsockopen'))
  686. $fp=pfsockopen($_SERVER['HTTP_HOST'],80,&$errno,&$errstr,5);
  687. if($fp)
  688. {
  689. $request = "GET ".SITE_URL."login.php?loop=true&uid=".$uid." HTTP/1.0\r\n";
  690. $request .= "Host: ".$_SERVER['HTTP_HOST']."\r\n";
  691. $request .= "Connection: Close\r\n\r\n";
  692. fwrite($fp, $request);
  693. while(!feof($fp))
  694. {
  695. fgets($fp, 128);
  696. break;
  697. }
  698. fclose($fp);
  699. }
  700. }
  701. }
  702. }
  703. else
  704. {
  705. $result['status'] = false;
  706. }
  707. return $result;
  708. }
  709. /*根据标签获取所属分类*/
  710. public function getCateByTags($tags)
  711. {
  712. static $tag_cates = array();
  713. $tags = array_unique($tags);
  714. $cates = array();
  715. foreach($tags as $tag)
  716. {
  717. if(!empty($tag))
  718. {
  719. if(isset($tag_cates[$tag]))
  720. {
  721. foreach($tag_cates[$tag] as $data)
  722. {
  723. if(isset($cates[$data['cate_id']]))
  724. $cates[$data['cate_id']] += $data['weight'];
  725. else
  726. $cates[$data['cate_id']] = $data['weight'];
  727. }
  728. continue;
  729. }
  730. $is_bln = true;
  731. $res = FDB::query('SELECT gct.cate_id,gct.weight
  732. FROM '.FDB::table('goods_tags').' AS gt
  733. LEFT JOIN '.FDB::table('goods_category_tags')." AS gct ON gct.tag_id = gt.tag_id
  734. WHERE gt.tag_name = '$tag'");
  735. while($data = FDB::fetch($res))
  736. {
  737. if($data['weight'] < 1)
  738. $data['weight'] = 1;
  739. if(isset($cates[$data['cate_id']]))
  740. $cates[$data['cate_id']] += $data['weight'];
  741. else
  742. $cates[$data['cate_id']] = $data['weight'];
  743. $tag_cates[$tag][] = $data;
  744. $is_bln = false;
  745. }
  746. if($is_bln)
  747. {
  748. $like_tag = fMysqlLikeQuote($tag);
  749. $res = FDB::query('SELECT gct.cate_id,gct.weight
  750. FROM '.FDB::table('goods_tags').' AS gt
  751. LEFT JOIN '.FDB::table('goods_category_tags')." AS gct ON gct.tag_id = gt.tag_id
  752. WHERE gt.tag_name LIKE '%".$like_tag."%' OR INSTR('$tag',gt.tag_name) > 0");
  753. while($data = FDB::fetch($res))
  754. {
  755. if($data['weight'] < 1)
  756. $data['weight'] = 1;
  757. if(isset($cates[$data['cate_id']]))
  758. $cates[$data['cate_id']] += $data['weight'];
  759. else
  760. $cates[$data['cate_id']] = $data['weight'];
  761. $tag_cates[$tag] = $data;
  762. }
  763. }
  764. }
  765. }
  766. if(empty($cates))
  767. return array();
  768. $cids = array();
  769. foreach($cates as $cate_id => $weight)
  770. {
  771. $cids[$weight][] = $cate_id;
  772. }
  773. krsort($cids);
  774. return each($cids);
  775. }
  776. public function getCidsByCates($cates)
  777. {
  778. $list = array();
  779. $cids = array();
  780. foreach($cates as $cate)
  781. {
  782. foreach($cate['value'] as $cid)
  783. {
  784. if(isset($cids[$cid]))
  785. $cids[$cid] = $cate['key'];
  786. else
  787. $cids[$cid] += $cate['key'];
  788. }
  789. }
  790. foreach($cates as $cate)
  791. {
  792. $id = 0;
  793. $weight = 0;
  794. foreach($cate['value'] as $cid)
  795. {
  796. if($cids[$cid] > $weight)
  797. $id = $cid;
  798. }
  799. if($id > 0)
  800. $list[] = $id;
  801. }
  802. return array_unique($list);
  803. }
  804. public function deleteShare($share_id,$is_score = true)
  805. {
  806. $share = ShareService::getShareById($share_id);
  807. if(!empty($share))
  808. {
  809. $goods_count = FDB::resultFirst('SELECT COUNT(goods_id) FROM '.FDB::table('share_goods').' WHERE share_id = '.$share_id);
  810. $photo_count = FDB::resultFirst('SELECT COUNT(photo_id) FROM '.FDB::table('share_photo').' WHERE share_id = '.$share_id);
  811. $collect_count = FDB::resultFirst('SELECT COUNT(c_uid) FROM '.FDB::table('user_collect').' WHERE share_id = '.$share_id);
  812. $shop_list = array();
  813. $res = FDB::query('SELECT shop_id FROM '.FDB::table('share_goods').' WHERE share_id = '.$share_id.' GROUP BY shop_id');
  814. while($shop = FDB::fetch($res))
  815. {
  816. $shop_list[] = $shop['shop_id'];
  817. }
  818. FDB::delete('share','share_id = '.$share_id);
  819. FDB::delete('share_goods','share_id = '.$share_id);
  820. FDB::delete('share_photo','share_id = '.$share_id);
  821. FDB::delete('share_category','share_id = '.$share_id);
  822. FDB::delete('share_comment','share_id = '.$share_id);
  823. FDB::delete('share_match','share_id = '.$share_id);
  824. FDB::delete('share_tags','share_id = '.$share_id);
  825. FDB::delete('user_collect','share_id = '.$share_id);
  826. if(count($shop_list) > 0)
  827. {
  828. FS('Shop')->updateShopStatistic($shop_list);
  829. }
  830. $pattern = "/#([^\f\n\r\t\v]{1,80}?)#/";
  831. if(preg_match($pattern,$share['content']))
  832. {
  833. FS("Event")->deleteEvent($share_id);
  834. }
  835. $pattern = "/@([^\f\n\r\t\v@ ]{2,20}?)(?:\:| )/";
  836. if(preg_match($pattern,$share['content']))
  837. {
  838. FDB::delete('atme','share_id = '.$share_id);
  839. }
  840. if(defined('MANAGE_HANDLER') && MANAGE_HANDLER && $is_score)
  841. {
  842. if(!in_array($share['type'],array('fav','album_best','album_rec')))
  843. {
  844. if($share['rec_uid'] == 0 && in_array($share['share_data'],array('goods','photo','goods_photo')))
  845. FS("User")->updateUserScore($share['uid'],'delete_share','image',$share['content'],$share_id);
  846. else
  847. FS("User")->updateUserScore($share['uid'],'delete_share','default',$share['content'],$share_id);
  848. }
  849. }
  850. FDB::query('UPDATE '.FDB::table('user_count').' SET
  851. shares = shares - 1,
  852. photos = photos - '.$photo_count.',
  853. goods = goods - '.$goods_count.',
  854. collects = collects - '.$collect_count.' WHERE uid = '.$share['uid']);
  855. $key = getDirsById($share_id);
  856. clearCacheDir('share/'.$key);
  857. $count = (int)FDB::resultFirst('SELECT COUNT(share_id) FROM '.FDB::table('share_rec').' WHERE share_id = '.$share_id);
  858. if($count == 0)
  859. ShareService::deleteShareImages($share_id,$share['server_code']);
  860. }
  861. }
  862. public function deleteShareImages($share_id,$server_code)
  863. {
  864. if(empty($server_code))
  865. {
  866. $key = getDirsById($share_id);
  867. clearDir(PUBLIC_ROOT.'./upload/share/'.$key,true);
  868. }
  869. else
  870. {
  871. $server = FS("Image")->getServer($server_code);
  872. if($server)
  873. {
  874. $args = array();
  875. $args['share_id'] = $share_id;
  876. $server = FS("Image")->getImageUrlToken($args,$server,1);
  877. FS("Image")->sendRequest($server,'removeshare');
  878. }
  879. }
  880. }
  881. public function deleteShareCache()
  882. {
  883. }
  884. /**
  885. * 根据编号获取分享
  886. * @param int $share_id 分享编号
  887. * @return array
  888. */
  889. public function getShareById($share_id)
  890. {
  891. $share_id = (int)$share_id;
  892. if(!$share_id)
  893. return false;
  894. static $list = array();
  895. if(!isset($list[$share_id]))
  896. {
  897. $share = FDB::fetchFirst('SELECT * FROM '.FDB::table('share').' WHERE share_id = '.$share_id);
  898. if($share)
  899. $share['url'] = FU('note/index',array('sid'=>$share_id));
  900. $list[$share_id] = $share;
  901. }
  902. return $list[$share_id];
  903. }
  904. /**
  905. * 更新分享内容
  906. * @param int $share_id 分享编号
  907. * @return void
  908. */
  909. public function updateShare($share_id,$title,$content)
  910. {
  911. if(empty($title) && empty($content))
  912. return;
  913. $data = array();
  914. if(!empty($title))
  915. $data['title'] = $title;
  916. if(!empty($content))
  917. $data['content'] = $content;
  918. FDB::update('share',$data,"share_id = '$share_id'");
  919. ShareService::updateShareMatch($share_id);
  920. }
  921. /**
  922. * 获取分享详细
  923. * @param int $share_id 分享编号
  924. * @return array
  925. */
  926. public function getShareDetail($share_id,$is_collect = false,$is_tag = false,$collect_count = 20)
  927. {
  928. $share = ShareService::getShareById($share_id);
  929. if($share)
  930. {
  931. $share['cache_data'] = fStripslashes(unserialize($share['cache_data']));
  932. $share['authoritys'] = ShareService::getIsEditShare($share);
  933. $share['time'] = getBeforeTimelag($share['create_time']);
  934. ShareService::shareImageFormat($share);
  935. }
  936. return $share;
  937. }
  938. /**
  939. * 获取分享的动态数据
  940. * @param int $share_id 分享编号
  941. * @return array
  942. */
  943. public function getShareDynamic($share_id)
  944. {
  945. $dynamic = FDB::fetchFirst('SELECT collect_count,comment_count,relay_count,click_count
  946. FROM '.FDB::table('share').'
  947. WHERE share_id = '.$share_id);
  948. return $dynamic;
  949. }
  950. /**
  951. * 分享列表详细数据
  952. * @param array $list 分享列表
  953. * @param bool $is_parent 是否获取转发信息
  954. * @param bool $is_collect 是否获取喜欢的会员
  955. * @param bool $is_parent 是否获取分享标签
  956. * @return array
  957. */
  958. public function getShareDetailList($list,$is_parent = false,$is_collect = false,$is_tag = false,$is_comment = false,$comment_count = 10,$collect_count = 20,$is_user = false)
  959. {
  960. global $_FANWE;
  961. $shares = array();
  962. $share_ids = array();
  963. $rec_shares_ids = array();
  964. $share_users = array();
  965. $share_collects = array();
  966. $share_comments = array();
  967. $share_follows = array();
  968. foreach($list as $item)
  969. {
  970. $share_id = $item['share_id'];
  971. $share_ids[] = $share_id;
  972. $item['cache_data'] = fStripslashes(unserialize($item['cache_data']));
  973. $item['authoritys'] = ShareService::getIsEditShare($item);
  974. $item['time'] = getBeforeTimelag($item['create_time']);
  975. $item['url'] = FU('note/index',array('sid'=>$share_id));
  976. ShareService::shareImageFormat($item);
  977. $shares[$share_id] = $item;
  978. unset($shares[$share_id]['cache_data']);
  979. //分享会员
  980. if($is_user)
  981. {
  982. $shares[$share_id]['user'] = &$share_users[$item['uid']];
  983. if($item['rec_uid'] > 0)
  984. $shares[$share_id]['rec_user'] = &$share_users[$item['rec_uid']];
  985. }
  986. //分享评论
  987. if($is_comment)
  988. {
  989. $shares[$share_id]['comments'] = array();
  990. if(!empty($item['cache_data']['comments']))
  991. {
  992. $comment_ids = array_slice($item['cache_data']['comments'],0,$comment_count);
  993. foreach($comment_ids as $comment_id)
  994. {
  995. $shares[$share_id]['comments'][$comment_id] = &$share_comments[$comment_id];
  996. }
  997. }
  998. }
  999. //喜欢分享的会员
  1000. if($is_collect)
  1001. {
  1002. $shares[$share_id]['collects'] = array();
  1003. if(!empty($item['cache_data']['collects']))
  1004. {
  1005. $collect_ids = array_slice($item['cache_data']['collects'],0,$collect_count);
  1006. foreach($collect_ids as $collect_uid)
  1007. {
  1008. if($is_user)
  1009. $shares[$share_id]['collects'][$collect_uid] = &$share_users[$collect_uid];
  1010. else
  1011. $shares[$share_id]['collects'][$collect_uid] = $collect_uid;
  1012. }
  1013. }
  1014. }
  1015. if($is_tag)
  1016. {
  1017. $shares[$share_id]['is_eidt_tag'] = ShareService::getIsEditTag($item);
  1018. $shares[$share_id]['tags'] = $item['cache_data']['tags'];
  1019. ShareService::tagsFormat($shares[$share_id]['tags']['user']);
  1020. }
  1021. $shares[$share_id]['is_relay'] = false;
  1022. $shares[$share_id]['is_parent'] = false;
  1023. if($is_parent)
  1024. {
  1025. if($item['base_id'] > 0)
  1026. {
  1027. $shares[$share_id]['is_relay'] = true;
  1028. $rec_shares_ids[$item['base_id']] = false;
  1029. $shares[$share_id]['relay_share'] = &$rec_shares_ids[$item['base_id']];
  1030. if($item['parent_id'] > 0 && $item['parent_id'] != $item['base_id'])
  1031. {
  1032. $shares[$share_id]['is_parent'] = true;
  1033. $rec_shares_ids[$item['parent_id']] = false;
  1034. $shares[$share_id]['parent_share'] = &$rec_shares_ids[$item['parent_id']];
  1035. }
  1036. }
  1037. }
  1038. }
  1039. $rec_ids = array_keys($rec_shares_ids);
  1040. if(count($rec_ids) > 0)
  1041. {
  1042. $intersects = array_intersect($share_ids,$rec_ids);
  1043. $temp_ids = array();
  1044. foreach($intersects as $share_id)
  1045. {
  1046. $rec_shares_ids[$share_id] = $shares[$share_id];
  1047. $temp_ids[] = $share_id;
  1048. }
  1049. $diffs = array_diff($rec_ids,$temp_ids);
  1050. if(count($diffs) > 0)
  1051. {
  1052. $res = FDB::query('SELECT * FROM '.FDB::table('share').' WHERE share_id IN ('.implode(',',$diffs).')');
  1053. while($item = FDB::fetch($res))
  1054. {
  1055. $share_id = $item['share_id'];
  1056. $share_ids[] = $share_id;
  1057. $item['cache_data'] = fStripslashes(unserialize($item['cache_data']));
  1058. $item['authoritys'] = ShareService::getIsEditShare($item);
  1059. $item['time'] = getBeforeTimelag($item['create_time']);
  1060. $item['url'] = FU('note/index',array('sid'=>$share_id));
  1061. ShareService::shareImageFormat($item);
  1062. $rec_shares_ids[$share_id] = $item;
  1063. unset($rec_shares_ids[$share_id]['cache_data']);
  1064. //分享会员
  1065. if($is_user)
  1066. {
  1067. $rec_shares_ids[$share_id]['user'] = &$share_users[$item['uid']];
  1068. if($item['rec_uid'] > 0)
  1069. $rec_shares_ids[$share_id]['rec_user'] = &$share_users[$item['rec_uid']];
  1070. }
  1071. //分享评论
  1072. if($is_comment)
  1073. {
  1074. $rec_shares_ids[$share_id]['comments'] = array();
  1075. if(!empty($item['cache_data']['comments']))
  1076. {
  1077. $comment_ids = array_slice($item['cache_data']['comments'],0,$comment_count);
  1078. foreach($comment_ids as $comment_id)
  1079. {
  1080. $rec_shares_ids[$share_id]['comments'][$comment_id] = &$share_comments[$comment_id];
  1081. }
  1082. }
  1083. }
  1084. //喜欢分享的会员
  1085. if($is_collect)
  1086. {
  1087. $rec_shares_ids[$share_id]['collects'] = array();
  1088. if(!empty($item['cache_data']['collects']))
  1089. {
  1090. $collect_ids = array_slice($item['cache_data']['collects'],0,$collect_count);
  1091. foreach($collect_ids as $collect_uid)
  1092. {
  1093. if($is_user)
  1094. $rec_shares_ids[$share_id]['collects'][$collect_uid] = &$share_users[$collect_uid];
  1095. else
  1096. $rec_shares_ids[$share_id]['collects'][$collect_uid] = $collect_uid;
  1097. }
  1098. }
  1099. }
  1100. if($is_tag)
  1101. {
  1102. $rec_shares_ids[$share_id]['is_eidt_tag'] = ShareService::getIsEditTag($item);
  1103. $rec_shares_ids[$share_id]['tags'] = $item['cache_data']['tags'];
  1104. ShareService::tagsFormat($rec_shares_ids[$share_id]['tags']['user']);
  1105. }
  1106. }
  1107. }
  1108. }
  1109. $comment_ids = array_keys($share_comments);
  1110. if(count($comment_ids) > 0)
  1111. {
  1112. $res = FDB::query("SELECT * FROM ".FDB::table('share_comment').' WHERE comment_id IN ('.implode(',',$comment_ids).')');
  1113. while($item = FDB::fetch($res))
  1114. {
  1115. $item['time'] = getBeforeTimelag($item['create_time']);
  1116. $share_comments[$item['comment_id']] = $item;
  1117. if($is_user)
  1118. $share_comments[$item['comment_id']]['user'] = &$share_users[$item['uid']];
  1119. }
  1120. }
  1121. if($is_user)
  1122. FS('User')->usersFormat($share_users);
  1123. return $shares;
  1124. }
  1125. /**
  1126. * 获取分享的图片
  1127. */
  1128. public function getShareImage($share_id,$data_type)
  1129. {
  1130. $share_id = (int)$share_id;
  1131. $list = array();
  1132. switch($data_type)
  1133. {
  1134. case 'goods':
  1135. $sql = 'SELECT share_id,goods_id AS id,img,\'g\' AS type,name,url,price,taoke_url,server_code,img_width,img_height
  1136. FROM '.FDB::table('share_goods').'
  1137. WHERE share_id = '.$share_id.' ORDER BY sort ASC';
  1138. $res = FDB::query($sql);
  1139. while($data = FDB::fetch($res))
  1140. {
  1141. $data['name'] = addslashes($data['name']);
  1142. $data['url'] = addslashes($data['url']);
  1143. $pkey = $data['type'].$data['id'];
  1144. $list['all'][$pkey] = $data;
  1145. }
  1146. break;
  1147. case 'photo':
  1148. $sql = 'SELECT share_id,photo_id AS id,img,type AS ptype,\'m\' AS type,\'\' AS name,\'\' AS url,0 AS price,server_code,img_width,img_height
  1149. FROM '.FDB::table('share_photo').'
  1150. WHERE share_id = '.$share_id.' ORDER BY sort ASC';
  1151. $res = FDB::query($sql);
  1152. while($data = FDB::fetch($res))
  1153. {
  1154. $pkey = $data['type'].$data['id'];
  1155. $ptype = $data['ptype'];
  1156. unset($data['ptype']);
  1157. $list['all'][$pkey] = $data;
  1158. if($ptype != 'default')
  1159. {
  1160. $list[$ptype][] = $pkey;
  1161. }
  1162. }
  1163. break;
  1164. case 'goods_photo':
  1165. $sql = '(SELECT share_id,goods_id AS id,img,\'default\' AS ptype,\'g\' AS type,name,url,price,taoke_url,sort,server_code,img_width,img_height
  1166. FROM '.FDB::table('share_goods').'
  1167. WHERE share_id = '.$share_id.')
  1168. UNION
  1169. (SELECT share_id,photo_id AS id,img,type AS ptype,\'m\' AS type,\'\' AS name,\'\' AS url,0 AS price,\'\' AS taoke_url,sort,server_code,img_width,img_height
  1170. FROM '.FDB::table('share_photo').'
  1171. WHERE share_id = '.$share_id.')
  1172. ORDER BY sort ASC';
  1173. $res = FDB::query($sql);
  1174. while($data = FDB::fetch($res))
  1175. {
  1176. $data['name'] = addslashes($data['name']);
  1177. $data['url'] = addslashes($data['url']);
  1178. $pkey = $data['type'].$data['id'];
  1179. $ptype = $data['ptype'];
  1180. unset($data['ptype']);
  1181. unset($data['sort']);
  1182. $list['all'][$pkey] = $data;
  1183. if($ptype != 'default')
  1184. {
  1185. $list[$ptype][] = $pkey;
  1186. }
  1187. }
  1188. break;
  1189. }
  1190. return $list;
  1191. }
  1192. /**
  1193. * 获取分享的图片集合
  1194. */
  1195. public function getShareImages(&$share_datas)
  1196. {
  1197. foreach($share_datas as $share_data => $share_ids)
  1198. {
  1199. if($share_data == 'default' || count($share_ids) == 0)
  1200. continue;
  1201. $share_ids = array_keys($share_ids);
  1202. $list = array();
  1203. switch($share_data)
  1204. {
  1205. case 'goods':
  1206. $sql = 'SELECT share_id,goods_id AS id,img,\'g\' AS type,name,url,price,taoke_url,server_code,img_width,img_height
  1207. FROM '.FDB::table('share_goods').'
  1208. WHERE share_id IN ('.implode(',',$share_ids).') ORDER BY sort ASC';
  1209. $res = FDB::query($sql);
  1210. while($data = FDB::fetch($res))
  1211. {
  1212. $list[$data['share_id']]['all'][] = $data;
  1213. }
  1214. break;
  1215. case 'photo':
  1216. $sql = 'SELECT share_id,photo_id AS id,img,type AS ptype,\'m\' AS type,\'\' AS name,\'\' AS url,0 AS price,server_code,img_width,img_height
  1217. FROM '.FDB::table('share_photo').'
  1218. WHERE share_id IN ('.implode(',',$share_ids).') ORDER BY sort ASC';
  1219. $res = FDB::query($sql);
  1220. while($data = FDB::fetch($res))
  1221. {
  1222. $pkey = $data['type'].$data['id'];
  1223. $ptype = $data['ptype'];
  1224. unset($data['ptype']);
  1225. $list[$data['share_id']]['all'][$pkey] = $data;
  1226. if($ptype != 'default')
  1227. {
  1228. $list[$data['share_id']][$ptype][] = $pkey;
  1229. }
  1230. }
  1231. break;
  1232. case 'goods_photo':
  1233. $sql = '(SELECT share_id,goods_id AS id,img,\'default\' AS ptype,\'g\' AS type,name,url,price,taoke_url,sort,server_code,img_width,img_height
  1234. FROM '.FDB::table('share_goods').'
  1235. WHERE share_id IN ('.implode(',',$share_ids).'))
  1236. UNION
  1237. (SELECT share_id,photo_id AS id,img,type AS ptype,\'m\' AS type,\'\' AS name,\'\' AS url,0 AS price,\'\' AS taoke_url,sort,server_code,img_width,img_height
  1238. FROM '.FDB::table('share_photo').'
  1239. WHERE share_id IN ('.implode(',',$share_ids).'))
  1240. ORDER BY sort ASC';
  1241. $res = FDB::query($sql);
  1242. while($data = FDB::fetch($res))
  1243. {
  1244. $pkey = $data['type'].$data['id'];
  1245. $ptype = $data['ptype'];
  1246. unset($data['ptype']);
  1247. unset($data['sort']);
  1248. $list[$data['share_id']]['all'][$pkey] = $data;
  1249. if($ptype != 'default')
  1250. {
  1251. $list[$data['share_id']][$ptype][] = $pkey;
  1252. }
  1253. }
  1254. break;
  1255. }
  1256. foreach($list as $share_id => $item)
  1257. {
  1258. foreach($item['all'] as $ik => $img)
  1259. {
  1260. if($img['type'] == 'g')
  1261. {
  1262. $img['goods_url'] = $img['url'];
  1263. if(empty($img['taoke_url']))
  1264. $img['to_url'] = FU('tgo',array('url'=>$img['url']));
  1265. else
  1266. $img['to_url'] = FU('tgo',array('url'=>$img['taoke_url']));
  1267. $img['price_format'] = priceFormat($img['price']);
  1268. }
  1269. $img['url'] = FU('note/'.$img['type'],array('sid'=>$img['share_id'],'id'=>$img['id']));
  1270. $item['all'][$ik] = $img;
  1271. }
  1272. $share_datas[$share_data][$share_id] = $item;
  1273. }
  1274. }
  1275. }
  1276. public function shareImageFormat(&$share,$pic_num = 0)
  1277. {
  1278. $images = $share['cache_data']['imgs'];
  1279. foreach($images['all'] as $ik => $img)
  1280. {
  1281. if($img['type'] == 'g')
  1282. {
  1283. $img['goods_url'] = $img['url'];
  1284. if(empty($img['taoke_url']))
  1285. $img['to_url'] = FU('tgo',array('url'=>$img['url']));
  1286. else
  1287. $img['to_url'] = FU('tgo',array('url'=>$img['taoke_url']));
  1288. $img['price_format'] = priceFormat($img['price']);
  1289. }
  1290. $img['url'] = FU('note/'.$img['type'],array('sid'=>$img['share_id'],'id'=>$img['id']));
  1291. $images['all'][$ik] = $img;
  1292. $share['imgs'][] = $img;
  1293. }
  1294. foreach($images['dapei'] as $ik)
  1295. {
  1296. $share['dapei_imgs'][] = $images['all'][$ik];
  1297. }
  1298. foreach($images['look'] as $ik)
  1299. {
  1300. $share['look_imgs'][] = $images['all'][$ik];
  1301. }
  1302. if($pic_num > 0 && count($share['imgs']) > $pic_num)
  1303. $share['imgs'] = array_slice($share['imgs'],0,$pic_num);
  1304. unset($images);
  1305. }
  1306. /**
  1307. * 获取会员的上一个和下一个有图片分享
  1308. * @param array $_POST 提交的数据
  1309. * @return array(
  1310. 'prev'=>上一个分享,
  1311. 'next'=>下一个分享,
  1312. )
  1313. */
  1314. public function getPrevNextShares($uid,$share_id)
  1315. {
  1316. $arr = array('prev'=>0,'next'=>0);
  1317. $share_ids = FS('User')->getShareIds($uid);
  1318. $key = array_search($share_id,$share_ids);
  1319. if($key !== false)
  1320. {
  1321. $count = count($share_ids);
  1322. if($count > 1)
  1323. {
  1324. if($key == 0)
  1325. $arr['prev'] = $share_ids[1];
  1326. elseif($key == $count - 1)
  1327. $arr['next'] = $share_ids[$key - 1];
  1328. else
  1329. {
  1330. $arr['next'] = $share_ids[$key - 1];
  1331. if(isset($share_ids[$key + 1]))
  1332. $arr['prev'] = $share_ids[$key + 1];
  1333. }
  1334. }
  1335. }
  1336. return $arr;
  1337. }
  1338. public function updateShareCache($share_id,$type = 'all')
  1339. {
  1340. $share_id = (int)$share_id;
  1341. if(!$share_id)
  1342. return;
  1343. $share = FDB::fetchFirst('SELECT cache_data,share_data FROM '.FDB::table('share').' WHERE share_id = '.$share_id);
  1344. if(!$share)
  1345. return;
  1346. $cache_data = fStripslashes(unserialize($share['cache_data']));
  1347. switch($type)
  1348. {
  1349. case 'tags':
  1350. $cache_data['tags'] = ShareService::getShareTags($share_id,true);
  1351. break;
  1352. case 'collects':
  1353. $cache_data['collects'] = ShareService::getShareCollectUser($share_id,50);
  1354. break;
  1355. case 'comments':
  1356. $cache_data['comments'] = ShareService::getNewCommentIdsByShare($share_id,10);
  1357. break;
  1358. case 'imgs':
  1359. $cache_data['imgs'] = ShareService::getShareImage($share_id,$share['share_data']);
  1360. break;
  1361. case 'all':
  1362. $cache_data['tags'] = ShareService::getShareTags($share_id,true);
  1363. $cache_data['collects'] = ShareService::getShareCollectUser($share_id,50);
  1364. $cache_data['comments'] = ShareService::getNewCommentIdsByShare($share_id,10);
  1365. $cache_data['imgs'] = ShareService::getShareImage($share_id,$share['share_data']);
  1366. break;
  1367. }
  1368. unset($share['share_data']);
  1369. $share['cache_data'] = addslashes(serialize($cache_data));
  1370. FDB::update("share",$share,'share_id = '.$share_id);
  1371. }
  1372. public function updateShareMatch($share_id)
  1373. {
  1374. $share = ShareService::getShareById($share_id);
  1375. if(!in_array($share['share_data'],array('goods','photo','goods_photo')))
  1376. return;
  1377. $share['cache_data'] = fStripslashes(unserialize($share['cache_data']));
  1378. $content_match = clearExpress($share['content']);
  1379. $content_match .= $share['title'];
  1380. if(isset($share['cache_data']['tags']['user']))
  1381. {
  1382. foreach($share['cache_data']['tags']['user'] as $tag)
  1383. {
  1384. $content_match.=$tag['tag_name'];
  1385. }
  1386. }
  1387. if(isset($share['cache_data']['tags']['admin']))
  1388. {
  1389. foreach($share['cache_data']['tags']['admin'] as $tag)
  1390. {
  1391. $content_match.=$tag['tag_name'];
  1392. }
  1393. }
  1394. if(isset($share['cache_data']['imgs']['all']))
  1395. {
  1396. foreach($share['cache_data']['imgs']['all'] as $img)
  1397. {
  1398. if(!empty($img['name']))
  1399. {
  1400. $content_match.=$img['name'];
  1401. }
  1402. }
  1403. }
  1404. //保存匹配查询
  1405. $share_match = array();
  1406. $share_match['share_id'] = $share_id;
  1407. $share_match['content_match'] = segmentToUnicode(clearSymbol($content_match));
  1408. FDB::insert("share_match",$share_match,false,true);
  1409. }
  1410. /**
  1411. * 获取是否可编辑分享
  1412. * @param int $share 分享
  1413. * @return array
  1414. */
  1415. public function getIsEditShare(&$share)
  1416. {
  1417. static $edits = array();
  1418. if(!isset($edits[$share['share_id']]))
  1419. {
  1420. global $_FANWE;
  1421. $type = array('ask','bar');
  1422. $is_edit = 0;
  1423. $post = array('ask_post','bar_post');
  1424. if(in_array($share['type'],$post))
  1425. {
  1426. if($share['uid'] == $_FANWE['uid'])
  1427. $is_edit = 1;
  1428. if($share['type'] == 'ask_post')
  1429. $thread = FS('ask')->getTopicById($share['rec_id']);
  1430. else
  1431. $thread = FS('Topic')->getTopicById($share['rec_id']);
  1432. if($thread['uid'] == $_FANWE['uid'])
  1433. $is_edit = 2;
  1434. }
  1435. else
  1436. {
  1437. if(!in_array($share['type'],$type) && $share['uid'] == $_FANWE['uid'])
  1438. $is_edit = 1;
  1439. }
  1440. $edits[$share['share_id']] = $is_edit;
  1441. }
  1442. return $edits[$share['share_id']];
  1443. }
  1444. /*===========分享列表、详细 END ==============*/
  1445. /*===========分享标签 BEGIN ==============*/
  1446. /**
  1447. * 获取是否可编辑分享标签
  1448. * @param int $share 分享
  1449. * @return array
  1450. */
  1451. public function getIsEditTag(&$share)
  1452. {
  1453. global $_FANWE;
  1454. $_img_data = array('goods','photo','goods_photo');
  1455. $is_edit_tag = false;
  1456. if(in_array($share['share_data'],$_img_data) && $share['uid'] == $_FANWE['uid'])
  1457. $is_edit_tag = true;
  1458. return $is_edit_tag;
  1459. }
  1460. /**
  1461. * 获取分享标签
  1462. * @param int $share_id 分享编号
  1463. * @return array
  1464. */
  1465. public function getShareTags($share_id,$is_update = false)
  1466. {
  1467. $share_id = (int)$share_id;
  1468. if(!$share_id)
  1469. return array();
  1470. static $list = array();
  1471. if(!isset($list[$share_id]) || $is_update)
  1472. {
  1473. $res = FDB::query('SELECT tag_name,is_admin
  1474. FROM '.FDB::table('share_tags').'
  1475. WHERE share_id = '.$share_id);
  1476. while($data = FDB::fetch($res))
  1477. {
  1478. $data['tag_name'] = addslashes($data['tag_name']);
  1479. if($data['is_admin'] == 0)
  1480. $list[$share_id]['user'][] = $data;
  1481. else
  1482. $list[$share_id]['admin'][] = $data;
  1483. }
  1484. }
  1485. return $list[$share_id];
  1486. }
  1487. public function tagsFormat(&$tags)
  1488. {
  1489. foreach($tags as $tk => $tag)
  1490. {
  1491. $tags[$tk]['url'] = FU('book/shopping',array('tag'=>urlencode($tag['tag_name'])));
  1492. }
  1493. }
  1494. /**
  1495. * 更新分享标签缓存
  1496. * @param int $share_id 分享编号
  1497. * @param array $tags = array(
  1498. 'user'=>会员设置标签,
  1499. 'admin'=>管理员设置标签,(如果不存在admin键名,则不删除会员设置标签)
  1500. );
  1501. * @return array
  1502. */
  1503. public function updateShareTags($share_id,$tags)
  1504. {
  1505. global $_FANWE;
  1506. //更新分享的会员标签
  1507. FDB::delete('share_tags','share_id = '.$share_id.' AND is_admin = 0');
  1508. if(isset($tags['user']))
  1509. {
  1510. $tags['user'] = str_replace(' ',' ',$tags['user']);
  1511. $tags['user'] = explode(' ',htmlspecialchars(trim($tags['user'])));
  1512. $tags['user'] = array_unique($tags['user']);
  1513. $tags['user'] = array_slice($tags['user'],0,$_FANWE['setting']['share_tag_count']);
  1514. $share_tags = array();
  1515. foreach($tags['user'] as $tag)
  1516. {
  1517. if(trim($tag) != '' && !in_array($tag,$share_tags))
  1518. {
  1519. array_push($share_tags,$tag);
  1520. //为已存在的tags更新统计
  1521. FDB::query('UPDATE '.FDB::table('goods_tags').'
  1522. SET count = count + 1
  1523. WHERE tag_name = \''.$tag.'\'');
  1524. //数量大于100时为热门标签
  1525. FDB::query('UPDATE '.FDB::table('goods_tags').'
  1526. SET is_hot = 1
  1527. WHERE tag_name = \''.$tag.'\' AND count >= 100');
  1528. $tag_data = array();
  1529. $tag_data['share_id'] = $share_id;
  1530. $tag_data['tag_name'] = $tag;
  1531. FDB::insert('share_tags',$tag_data);
  1532. }
  1533. }
  1534. ShareService::updateShareCache($share_id,'tags');
  1535. }
  1536. //更新分享的管理员标签
  1537. if(isset($tags['admin']))
  1538. {
  1539. FDB::delete('share_tags','share_id = '.$share_id.' AND is_admin = 1');
  1540. $tags['admin'] = str_replace(' ',' ',$tags['admin']);
  1541. $tags['admin'] = explode(' ',htmlspecialchars(trim($tags['admin'])));
  1542. $tags['admin'] = array_unique($tags['admin']);
  1543. $share_tags = array();
  1544. foreach($tags['admin'] as $tag)
  1545. {
  1546. if(trim($tag) != '' && !in_array($tag,$share_tags))
  1547. {
  1548. array_push($share_tags,$tag);
  1549. //为已存在的tags更新统计
  1550. FDB::query('UPDATE '.FDB::table('goods_tags').'
  1551. SET count = count + 1
  1552. WHERE tag_name = \''.$tag.'\'');
  1553. //数量大于100时为热门标签
  1554. FDB::query('UPDATE '.FDB::table('goods_tags').'
  1555. SET is_hot = 1
  1556. WHERE tag_name = \''.$tag.'\' AND count >= 100');
  1557. $tag_data = array();
  1558. $tag_data['share_id'] = $share_id;
  1559. $tag_data['tag_name'] = $tag;
  1560. $tag_data['is_admin'] = 1;
  1561. FDB::insert('share_tags',$tag_data);
  1562. }
  1563. }
  1564. }
  1565. ShareService::updateShareMatch($share_id);
  1566. }
  1567. /*===========分享标签 END ==============*/
  1568. /*===========分享转发 BEGIN ==============*/
  1569. /**
  1570. * 转发分享
  1571. * @param array $_POST 提交的数据
  1572. * @return array(
  1573. 'share_id'=>分享编号,
  1574. 'pc_id'=>评论编号(如果勾选评论给转发分享),
  1575. 'bc_id'=>原文评论编号(如果勾选评论给原文分享),
  1576. )
  1577. */
  1578. public function saveRelay($_POST)
  1579. {
  1580. global $_FANWE;
  1581. $share_id = intval($_POST['share_id']);
  1582. $share = ShareService::getShareById($share_id);
  1583. if(empty($share))
  1584. return false;
  1585. $data = array();
  1586. $data['share']['uid'] = $_FANWE['uid'];
  1587. $data['share']['parent_id'] = $share_id;
  1588. $content = htmlspecialchars(trim($_POST['content']));
  1589. $data['share']['content'] = $content;
  1590. $type = 'default';
  1591. $base_id = $share['base_id'];
  1592. if($base_id > 0)
  1593. {
  1594. $base = ShareService::getShareById($share['base_id']);
  1595. if(!empty($base))
  1596. $base_id = $base['share_id'];
  1597. else
  1598. $base_id = 0;
  1599. }
  1600. $rec_id = $share['rec_id'];
  1601. if($share['type'] == 'ask' || $share['type'] == 'ask_post')
  1602. $type = 'ask_post';
  1603. elseif($share['type'] == 'bar' || $share['type'] == 'bar_post')
  1604. $type = 'bar_post';
  1605. $data['share']['rec_id'] = $share['rec_id'];
  1606. $data['share']['title'] = addslashes($share['title']);
  1607. $data['share']['base_id'] = $base_id > 0 ? $base_id : $share_id;
  1608. $data['share']['type'] = $type;
  1609. $relay_share = ShareService::save($data);
  1610. if(!$relay_share['status'])
  1611. return false;
  1612. FDB::query('UPDATE '.FDB::table('share').'
  1613. SET relay_count = relay_count + 1
  1614. WHERE share_id = '.$share_id);
  1615. if($base_id > 0 && $share_id != $base_id)
  1616. {
  1617. FDB::query('UPDATE '.FDB::table('share').'
  1618. SET relay_count = relay_count + 1
  1619. WHERE share_id = '.$base_id);
  1620. }
  1621. $is_no_post = isset($_POST['is_no_post']) ? intval($_POST['is_no_post']) : 0;
  1622. $share_id = $relay_share['share_id'];
  1623. if($rec_id > 0 && $is_no_post == 0)
  1624. {
  1625. if($type == 'bar_post')
  1626. FS('Topic')->saveTopicPost($rec_id,$content,$share_id);
  1627. elseif($type == 'ask_post')
  1628. FS('Ask')->saveTopicPost($rec_id,$content,$share_id);
  1629. }
  1630. $is_comment_parent = isset($_POST['is_comment_parent']) ? intval($_POST['is_comment_parent']) : 0;
  1631. $is_comment_base = isset($_POST['is_comment_base']) ? intval($_POST['is_comment_base']) : 0;
  1632. //评论给分享
  1633. $parent_comment_id = 0;
  1634. if($is_comment_parent == 1)
  1635. {
  1636. $data = array();
  1637. $data['content'] = $_POST['content'];
  1638. $data['share_id'] = $share['share_id'];
  1639. $parent_comment_id = ShareService::saveComment($data);
  1640. }
  1641. //评论给原创分享
  1642. $base_comment_id = 0;
  1643. if($is_comment_base == 1 && $base_id > 0)
  1644. {
  1645. $data = array();
  1646. $data['content'] = $_POST['content'];
  1647. $data['share_id'] = $base_id;
  1648. $base_comment_id = ShareService::saveComment($data);
  1649. }
  1650. return array(
  1651. 'share_id'=>$share_id,
  1652. 'pc_id'=>$parent_comment_id,
  1653. 'bc_id'=>$base_comment_id,
  1654. );
  1655. }
  1656. /*===========分享转发 END ==============*/
  1657. /*===========喜欢收藏分享 BEGIN ==============*/
  1658. /**
  1659. * 保存喜欢分享
  1660. * @param int $share 分享
  1661. * @return void
  1662. */
  1663. public function saveFav($share)
  1664. {
  1665. if($share['type'] == 'fav')
  1666. return false;
  1667. global $_FANWE;
  1668. ShareService::setShareCollectUser($share['share_id'],$share['uid']);
  1669. $base_id = $share['base_id'];
  1670. if($base_id > 0)
  1671. {
  1672. $base = ShareService::getShareById($share['base_id']);
  1673. if(!empty($base))
  1674. {
  1675. ShareService::setShareCollectUser($base['share_id'],$base['uid']);
  1676. $base_id = $base['share_id'];
  1677. }
  1678. else
  1679. $base_id = 0;
  1680. }
  1681. $share_user = FS('User')->getUserCache($share['uid']);
  1682. $data = array();
  1683. $data['share']['uid'] = $_FANWE['uid'];
  1684. $data['share']['rec_id'] = $share['rec_id'];
  1685. $data['share']['parent_id'] = $share['share_id'];
  1686. $data['share']['content'] = lang('share','fav_share').'//@'.$share_user['user_name'].':'.$share['content'];
  1687. $data['share']['type'] = "fav";
  1688. $data['share']['base_id'] = $base_id > 0 ? $base_id : $share['share_id'];
  1689. //添加关注消息提示
  1690. FS("User")->setUserTips($share['uid'],2);
  1691. ShareService::save($data);
  1692. }
  1693. /**
  1694. * 获取喜欢这个分享的会员
  1695. * @param int $share_id 分享编号
  1696. * @param int $num 获取数量
  1697. * @return array
  1698. */
  1699. public function getShareCollectUser($share_id,$num = 12)
  1700. {
  1701. $num = (int)$num;
  1702. if($num == 0)
  1703. $num = 1000;
  1704. $uids = array();
  1705. $res = FDB::query('SELECT c_uid FROM '.FDB::table('user_collect').'
  1706. WHERE share_id = '.$share_id.'
  1707. ORDER BY create_time DESC LIMIT 0,'.$num);
  1708. while($data = FDB::fetch($res))
  1709. {
  1710. $uids[$data['c_uid']] = $data['c_uid'];
  1711. }
  1712. return $uids;
  1713. }
  1714. /**
  1715. * 添加喜欢这个分享的会员
  1716. * @param int $share_id 分享编号
  1717. * @param int $uid 会员会员数量
  1718. * @return array
  1719. */
  1720. public function setShareCollectUser($share_id,$uid)
  1721. {
  1722. $share_id = (int)$share_id;
  1723. $uid = (int)$uid;
  1724. if(!$share_id || !$uid)
  1725. return false;
  1726. global $_FANWE;
  1727. $share = ShareService::getShareById($share_id);
  1728. if(empty($share))
  1729. return false;
  1730. $c_uid = $_FANWE['uid'];
  1731. $data = array();
  1732. $data['uid'] = $uid;
  1733. $data['c_uid'] = $c_uid;
  1734. $data['share_id'] = $share_id;
  1735. $data['create_time'] = TIME_UTC;
  1736. FDB::insert('user_collect',$data);
  1737. //为专辑添加喜欢
  1738. if($share['type'] == 'album_item')
  1739. {
  1740. $album_share = (int)FDB::resultFirst('SELECT share_id FROM '.FDB::table('album').' WHERE id = '.$share['rec_id']);
  1741. FDB::query('UPDATE '.FDB::table('share').' SET collect_count = collect_count + 1 WHERE share_id = '.$album_share);
  1742. FDB::query('UPDATE '.FDB::table('album').' SET collect_count = collect_count + 1 WHERE id = '.$share['rec_id']);
  1743. }
  1744. if($share['type'] == 'album')
  1745. {
  1746. FDB::query('UPDATE '.FDB::table('album').' SET collect_count = collect_count + 1 WHERE share_id = '.$share_id);
  1747. }
  1748. //分享被喜欢数加1
  1749. FDB::query('UPDATE '.FDB::table('share').'
  1750. SET collect_count = collect_count + 1
  1751. WHERE share_id = '.$share_id);
  1752. //分享会员被喜欢数加1
  1753. FDB::query('UPDATE '.FDB::table('user_count').'
  1754. SET collects = collects + 1
  1755. WHERE uid = '.$uid);
  1756. FS('Medal')->runAuto($uid,'collects');
  1757. ShareService::updateShareCache($share_id,'collects');
  1758. }
  1759. /**
  1760. * 获取会员是否已喜欢这个分享
  1761. * @param int $share_id 分享编号
  1762. * @return array
  1763. */
  1764. public function getIsCollectByUid($share_id,$uid)
  1765. {
  1766. $share_id = (int)$share_id;
  1767. $uid = (int)$uid;
  1768. if(!$share_id || !$uid)
  1769. return false;
  1770. $count = FDB::resultFirst('SELECT COUNT(*) FROM '.FDB::table('user_collect').'
  1771. WHERE share_id = '.$share_id.' AND c_uid = '.$uid);
  1772. if((int)$count == 0)
  1773. return false;
  1774. else
  1775. return true;
  1776. }
  1777. public function deleteShareCollectUser($share_id,$uid)
  1778. {
  1779. $share_id = (int)$share_id;
  1780. $uid = (int)$uid;
  1781. if(!$share_id || !$uid)
  1782. return false;
  1783. $share = ShareService::getShareById($share_id);
  1784. if(empty($share))
  1785. return false;
  1786. FDB::query('DELETE FROM '.FDB::table('user_collect').'
  1787. WHERE c_uid = '.$uid.' AND share_id = '.$share_id);
  1788. //为专辑添加喜欢
  1789. if($share['type'] == 'album_item')
  1790. {
  1791. $album_share = (int)FDB::resultFirst('SELECT share_id FROM '.FDB::table('album').' WHERE id = '.$share['rec_id']);
  1792. FDB::query('UPDATE '.FDB::table('share').' SET collect_count = collect_count - 1 WHERE share_id = '.$album_share);
  1793. FDB::query('UPDATE '.FDB::table('album').' SET collect_count = collect_count - 1 WHERE id = '.$share['rec_id']);
  1794. }
  1795. if($share['type'] == 'album')
  1796. {
  1797. FDB::query('UPDATE '.FDB::table('album').' SET collect_count = collect_count - 1 WHERE share_id = '.$share_id);
  1798. }
  1799. //分享被喜欢数减1
  1800. FDB::query('UPDATE '.FDB::table('share').'
  1801. SET collect_count = collect_count - 1
  1802. WHERE share_id = '.$share_id.' and collect_count >=1 ');
  1803. //分享会员被喜欢数减1
  1804. FDB::query('UPDATE '.FDB::table('user_count').'
  1805. SET collects = collects - 1
  1806. WHERE uid = '.$share['uid'].' and collects >=1 ');
  1807. FS('Medal')->runAuto($share['uid'],'collects');
  1808. ShareService::updateShareCache($share_id,'collects');
  1809. return true;
  1810. }
  1811. /*===========喜欢收藏分享 END ==============*/
  1812. /*===========分享评论 BEGIN ==============*/
  1813. /**
  1814. * 获取是否可删除评论
  1815. * @param int $share 分享
  1816. * @return array
  1817. */
  1818. public function getIsRemoveComment(&$share)
  1819. {
  1820. global $_FANWE;
  1821. $is_bln = false;
  1822. if($share['uid'] == $_FANWE['uid'])
  1823. $is_bln = true;
  1824. return $is_bln;
  1825. }
  1826. /**
  1827. * 保存分享的评论
  1828. * @param array $_POST 提交的数据
  1829. * @return int 评论编号
  1830. */
  1831. public function saveComment($_POST)
  1832. {
  1833. global $_FANWE;
  1834. $share_id = intval($_POST['share_id']);
  1835. $data = array();
  1836. $data['content'] = htmlspecialchars(trim($_POST['content']));
  1837. $data['uid'] = $_FANWE['uid'];
  1838. $data['parent_id'] = intval($_POST['parent_id']);
  1839. $data['share_id'] = $share_id;
  1840. $data['create_time'] = TIME_UTC;
  1841. $comment_id = FDB::insert('share_comment',$data,true);
  1842. $is_relay = isset($_POST['is_relay']) ? intval($_POST['is_relay']) : 0;
  1843. //转发分享
  1844. if($is_relay == 1)
  1845. {
  1846. $share = ShareService::getShareById($share_id);
  1847. if($share['base_id'] > 0)
  1848. {
  1849. $share_user = FS('User')->getUserCache($share['uid']);
  1850. $_POST['content'] = trim($_POST['content']).'//@'.$share_user['user_name'].':'.$share['content'];
  1851. }
  1852. //添加评论消息提示
  1853. $result = FDB::query("INSERT INTO ".FDB::table('user_notice')."(uid, type, num, create_time) VALUES('$share[uid]',3,1,'".TIME_UTC."')", 'SILENT');
  1854. if(!$result)
  1855. FDB::query("UPDATE ".FDB::table('user_notice')." SET num = num + 1, create_time='".TIME_UTC."' WHERE uid='$share[uid]' AND type=3");
  1856. ShareService::saveRelay($_POST);
  1857. }
  1858. //分享评论数量加1
  1859. FDB::query('UPDATE '.FDB::table('share').'
  1860. SET comment_count = comment_count + 1
  1861. WHERE share_id = '.$share_id);
  1862. //清除分享评论列表缓存
  1863. ShareService::updateShareCache($share_id,'comments');
  1864. return $comment_id;
  1865. }
  1866. /**
  1867. * 获取评论
  1868. * @param int $comment_id
  1869. * @return array
  1870. */
  1871. public function getShareComment($comment_id)
  1872. {
  1873. return FDB::fetchFirst('SELECT *
  1874. FROM '.FDB::table("share_comment").'
  1875. WHERE comment_id = '.$comment_id);
  1876. }
  1877. /**
  1878. * 删除分享评论
  1879. * @param int $comment_id 评论编号
  1880. * @return void
  1881. */
  1882. public function deleteShareComment($comment_id)
  1883. {
  1884. $comment = ShareService::getShareComment($comment_id);
  1885. if(empty($comment))
  1886. return;
  1887. FDB::delete('share_comment','comment_id = '.$comment_id);
  1888. $share_id = $comment['share_id'];
  1889. //分享评论数量减1
  1890. FDB::query('UPDATE '.FDB::table('share').'
  1891. SET comment_count = comment_count - 1
  1892. WHERE share_id = '.$share_id.' and comment_count >=1 ');
  1893. //清除分享评论列表缓存
  1894. ShareService::updateShareCache($share_id,'comments');
  1895. }
  1896. public function getShareComments($share_id,$count = 10)
  1897. {
  1898. return ShareService::getShareCommentList($share_id,'0,'.(int)$count);
  1899. }
  1900. /**
  1901. * 获取分享的最新评论列表
  1902. * @param int $share_id 分享编号
  1903. * @param int $count 数量
  1904. * @return array
  1905. */
  1906. public function getNewCommentIdsByShare($share_id,$count = 10)
  1907. {
  1908. $list = array();
  1909. $res = FDB::query('SELECT comment_id
  1910. FROM '.FDB::table("share_comment").'
  1911. WHERE share_id = '.$share_id.'
  1912. ORDER BY comment_id DESC LIMIT 0,'.$count);
  1913. while($data = FDB::fetch($res))
  1914. {
  1915. $list[] = $data['comment_id'];
  1916. }
  1917. return $list;
  1918. }
  1919. public function commentsFormat(&$comments)
  1920. {
  1921. if($comments)
  1922. {
  1923. $comment_uids = array();
  1924. foreach($comments as $key => $comment)
  1925. {
  1926. $comment['user'] = &$comment_uids[$comment['uid']];
  1927. $comment['time'] = getBeforeTimelag($comment['create_time']);
  1928. $comments[$key] = $comment;
  1929. }
  1930. FS('User')->usersFormat($comment_uids);
  1931. }
  1932. }
  1933. /**
  1934. * 获取分享的分页评论列表
  1935. * @param int $share_id 分享编号
  1936. * @param int $count 分页
  1937. * @return array
  1938. */
  1939. public function getShareCommentList($share_id,$limit = '0,10')
  1940. {
  1941. $comments = FDB::fetchAll('SELECT *
  1942. FROM '.FDB::table("share_comment").'
  1943. WHERE share_id = '.$share_id.'
  1944. ORDER BY comment_id DESC LIMIT '.$limit);
  1945. if($comments)
  1946. {
  1947. ShareService::commentsFormat($comments);
  1948. return $comments;
  1949. }
  1950. else
  1951. return array();
  1952. }
  1953. /*===========分享评论 END ==============*/
  1954. /**
  1955. * 获取喜欢这个分享的会员还喜欢的分享(有图片或商品的分享)
  1956. * @param int $share_id 分享编号
  1957. * @param int $num 获取数量
  1958. * @return array
  1959. */
  1960. public function getCollectShareByShare($share_id,$num = 20)
  1961. {
  1962. $list = array();
  1963. $share_id = (int)$share_id;
  1964. if(!$share_id)
  1965. return $list;
  1966. $uids = ShareService::getShareCollectUser($share_id,0);
  1967. if(count($uids) > 0)
  1968. {
  1969. $share_ids = array();
  1970. $res = FDB::query('SELECT GROUP_CONCAT(DISTINCT s.share_id
  1971. ORDER BY s.share_id DESC SEPARATOR \',\') AS share_ids,s.uid
  1972. FROM '.FDB::table('user_collect').' AS uc
  1973. INNER JOIN '.FDB::table('share').' AS s ON s.share_id = uc.share_id
  1974. WHERE uc.c_uid IN ('.implode(',',$uids).')
  1975. AND s.share_id <> '.$share_id.'
  1976. AND s.share_data IN (\'goods\',\'photo\',\'goods_photo\')
  1977. GROUP BY s.uid LIMIT 0,'.$num);
  1978. while($data = FDB::fetch($res))
  1979. {
  1980. $share_ids = explode(',',$data['share_ids']);
  1981. $share_ids[] = current($share_ids);
  1982. }
  1983. }
  1984. if(count($share_ids) > 0)
  1985. {
  1986. $list = FDB::fetchAll('SELECT * FROM '.FDB::table('share').'
  1987. WHERE share_id IN ('.implode(',',$share_ids).') LIMIT 0,'.$num);
  1988. $list = ShareService::getShareDetailList($list);
  1989. }
  1990. return $list;
  1991. }
  1992. /**
  1993. * 获取会员喜欢的分享(有图片或商品的分享)
  1994. * @param int $uid 会员编号
  1995. * @param int $num 获取数量
  1996. * @return array
  1997. */
  1998. public function getCollectShareByUser($uid,$num = 10)
  1999. {
  2000. $list = array();
  2001. $uid = (int)$uid;
  2002. if(!$uid)
  2003. return $list;
  2004. $share_ids = array();
  2005. $res = FDB::query('SELECT GROUP_CONCAT(DISTINCT s.share_id
  2006. ORDER BY s.share_id DESC SEPARATOR \',\') AS share_ids,s.uid
  2007. FROM '.FDB::table('user_collect').' AS uc
  2008. INNER JOIN '.FDB::table('share').' AS s ON s.share_id = uc.share_id
  2009. AND s.share_data IN (\'goods\',\'photo\',\'goods_photo\')
  2010. WHERE uc.c_uid = '.$uid.'
  2011. GROUP BY s.uid
  2012. LIMIT 0,'.$num);
  2013. while($data = FDB::fetch($res))
  2014. {
  2015. $share_id = explode(',',$data['share_ids']);
  2016. $share_ids[] = current($share_id);
  2017. }
  2018. if(count($share_ids) > 0)
  2019. {
  2020. $list = FDB::fetchAll('SELECT * FROM '.FDB::table('share').'
  2021. WHERE share_id IN ('.implode(',',$share_ids).')');
  2022. $list = ShareService::getShareDetailList($list);
  2023. }
  2024. return $list;
  2025. }
  2026. /**
  2027. * 获取会员最被喜欢的宝贝分享
  2028. * @param int $uid 会员编号
  2029. * @param int $num 获取数量
  2030. * @return array
  2031. */
  2032. public function getBestCollectGoodsShareByUser($uid,$num = 9)
  2033. {
  2034. $list = array();
  2035. $res = FDB::query('SELECT s.share_id,sg.img,sg.goods_id
  2036. FROM '.FDB::table('share').' AS s
  2037. INNER JOIN '.FDB::table('share_goods').' AS sg ON sg.share_id = s.share_id
  2038. WHERE s.share_data IN (\'goods\',\'goods_photo\') AND s.uid ='.$uid.'
  2039. ORDER BY s.collect_count DESC LIMIT 0,'.$num);
  2040. while($data = FDB::fetch($res))
  2041. {
  2042. $data['url'] = FU('note/g',array('sid'=>$data['share_id'],'id'=>$data['goods_id']));
  2043. $list[] = $data;
  2044. }
  2045. return $list;
  2046. }
  2047. /**
  2048. * 获取会员喜欢的宝贝分享
  2049. * @param int $uid 会员编号
  2050. * @param int $num 获取数量
  2051. * @return array
  2052. */
  2053. public function getUserFavGoodsShare($uid,$num = 9)
  2054. {
  2055. $list = array();
  2056. $uid = (int)$uid;
  2057. if(!$uid)
  2058. return $list;
  2059. $res = FDB::query('SELECT sg.share_id,sg.img,sg.goods_id
  2060. FROM '.FDB::table('user_collect').' AS uc
  2061. INNER JOIN '.FDB::table('share_goods').' AS sg ON sg.share_id = uc.share_id
  2062. WHERE uc.c_uid = '.$uid.' GROUP BY sg.share_id ORDER BY sg.share_id DESC LIMIT 0,'.$num);
  2063. while($data = FDB::fetch($res))
  2064. {
  2065. $data['url'] = FU('note/g',array('sid'=>$data['share_id'],'id'=>$data['goods_id']));
  2066. $list[] = $data;
  2067. }
  2068. return $list;
  2069. }
  2070. /**
  2071. * 获取会员最被喜欢的照片分享
  2072. * @param int $uid 会员编号
  2073. * @param int $num 获取数量
  2074. * @return array
  2075. */
  2076. public function getBestCollectPhotoShareByUser($uid,$num = 9)
  2077. {
  2078. $list = array();
  2079. $uid = (int)$uid;
  2080. if(!$uid)
  2081. return $list;
  2082. $res = FDB::query('SELECT s.share_id,sp.img,sp.photo_id
  2083. FROM '.FDB::table('share').' AS s
  2084. INNER JOIN '.FDB::table('share_photo').' AS sp ON sp.share_id = s.share_id
  2085. WHERE s.share_data IN (\'photo\',\'goods_photo\') AND s.uid ='.$uid.'
  2086. ORDER BY s.collect_count DESC LIMIT 0,'.$num);
  2087. while($data = FDB::fetch($res))
  2088. {
  2089. $data['url'] = FU('note/m',array('sid'=>$data['share_id'],'id'=>$data['photo_id']));
  2090. $list[] = $data;
  2091. }
  2092. return $list;
  2093. }
  2094. /**
  2095. * 获取会员喜欢的照片分享
  2096. * @param int $uid 会员编号
  2097. * @param int $num 获取数量
  2098. * @return array
  2099. */
  2100. public function getUserFavPhotoShare($uid,$num = 9)
  2101. {
  2102. $list = array();
  2103. $uid = (int)$uid;
  2104. if(!$uid)
  2105. return $list;
  2106. $res = FDB::query('SELECT sp.share_id,sp.img,sp.photo_id
  2107. FROM '.FDB::table('user_collect').' AS uc
  2108. INNER JOIN '.FDB::table('share_photo').' AS sp ON sp.share_id = uc.share_id
  2109. WHERE uc.c_uid = '.$uid.' GROUP BY sp.share_id ORDER BY sp.share_id DESC LIMIT 0,'.$num);
  2110. while($data = FDB::fetch($res))
  2111. {
  2112. $data['url'] = FU('note/m',array('sid'=>$data['share_id'],'id'=>$data['photo_id']));
  2113. $list[] = $data;
  2114. }
  2115. return $list;
  2116. }
  2117. /**
  2118. * 获取当前的最新商品\图片分享
  2119. * @param int $num 获取数量
  2120. * @param int $pic_num 获取图片数量
  2121. * @return int
  2122. */
  2123. public function getNewShare($num = 20)
  2124. {
  2125. $sql = 'SELECT * FROM '.FDB::table('share').'
  2126. WHERE share_data IN (\'goods\',\'goods_photo\',\'photo\')
  2127. ORDER BY share_id DESC
  2128. LIMIT 0,'.$num;
  2129. $list = FDB::fetchAll($sql);
  2130. $list = ShareService::getShareDetailList($list);
  2131. return $list;
  2132. }
  2133. /**
  2134. * 获取首页显示的分享分类最近7天最热标签
  2135. * @return array
  2136. */
  2137. public function getIndexShareCateHotTags($num = 30)
  2138. {
  2139. static $list = NULL;
  2140. if($list === NULL)
  2141. {
  2142. global $_FANWE;
  2143. FanweService::instance()->cache->loadCache('goods_category');
  2144. $cate_indexs = $_FANWE['cache']['goods_category']['index'];
  2145. $day7_time = getTodayTime() - 604800;
  2146. $list = array();
  2147. foreach($cate_indexs as $cate_id)
  2148. {
  2149. $cids = array();
  2150. FS('Share')->getChildCids($cate_id,$cids);
  2151. $sql = 'SELECT st.tag_name,(gct.tag_id > 0) AS gt_tag,COUNT(DISTINCT t.share_id) AS share_count,
  2152. GROUP_CONCAT(DISTINCT t.share_id ORDER BY t.is_best DESC,t.collect_count DESC SEPARATOR \',\') AS share_ids
  2153. FROM (SELECT DISTINCT(s.share_id),s.is_best,s.collect_count,sc.cate_id
  2154. FROM '.FDB::table('share_category').' AS sc FORCE INDEX (cate_id)
  2155. INNER JOIN '.FDB::table('share').' AS s ON s.share_id = sc.share_id
  2156. WHERE sc.cate_id IN ('.implode(',',$cids).')
  2157. ORDER BY s.share_id DESC LIMIT 0,2000) AS t
  2158. STRAIGHT_JOIN '.FDB::table('share_tags').' AS st ON st.share_id = t.share_id
  2159. LEFT JOIN '.FDB::table('goods_tags').' AS gt ON gt.tag_name = st.tag_name
  2160. LEFT JOIN '.FDB::table('goods_category_tags').' AS gct ON gct.cate_id IN ('.implode(',',$cids).') AND gct.tag_id = gt.tag_id
  2161. GROUP BY st.tag_name
  2162. ORDER BY gt_tag DESC,gt.sort ASC,share_count DESC LIMIT 0,'.$num;
  2163. $res = FDB::query($sql);
  2164. while($data = FDB::fetch($res))
  2165. {
  2166. $tag_encode = urlencode($data['tag_name']);
  2167. $list[$cate_id]['tags'][$data['tag_name']] = $tag_encode;
  2168. $share_ids = explode(',',$data['share_ids']);
  2169. $share_ids = array_slice($share_ids,0,11);
  2170. if(count($share_ids) > 1)
  2171. array_pop($share_ids);
  2172. foreach($share_ids as $share_id)
  2173. {
  2174. if(!isset($list['shares'][$share_id]))
  2175. {
  2176. $list['share_list'][] = $share_id;
  2177. $list['shares'][$share_id] = array(
  2178. 'cate_id'=>$cate_id,
  2179. 'tag_name'=>$data['tag_name'],
  2180. 'tag_encode'=>$tag_encode);
  2181. break;
  2182. }
  2183. }
  2184. }
  2185. }
  2186. }
  2187. return $list;
  2188. }
  2189. /**
  2190. * 获取首页显示的分享最近最热标签
  2191. * @return array
  2192. */
  2193. public function getIndexShareHotTags($num = 40)
  2194. {
  2195. global $_FANWE;
  2196. $list = array();
  2197. $sql = 'SELECT st.tag_name,(gt.tag_name IS NOT NULL) as gt_tag,COUNT(DISTINCT t.share_id) AS share_count,
  2198. GROUP_CONCAT(DISTINCT t.share_id ORDER BY t.is_best DESC,t.collect_count DESC SEPARATOR \',\') AS share_ids
  2199. FROM (SELECT DISTINCT(share_id),is_best,collect_count
  2200. FROM '.FDB::table('share').'
  2201. WHERE share_data IN (\'photo\',\'goods\',\'goods_photo\')
  2202. ORDER BY share_id DESC LIMIT 0,2000) AS t
  2203. STRAIGHT_JOIN '.FDB::table('share_tags').' AS st ON st.share_id = t.share_id
  2204. LEFT JOIN '.FDB::table('goods_tags').' AS gt ON gt.tag_name = st.tag_name
  2205. GROUP BY st.tag_name
  2206. ORDER BY gt_tag DESC,gt.sort ASC,share_count DESC LIMIT 0,'.$num;
  2207. $res = FDB::query($sql);
  2208. while($data = FDB::fetch($res))
  2209. {
  2210. $tag_encode = urlencode($data['tag_name']);
  2211. $list['tags'][$data['tag_name']] = $tag_encode;
  2212. $share_ids = explode(',',$data['share_ids']);
  2213. $share_ids = array_slice($share_ids,0,11);
  2214. if(count($share_ids) > 1)
  2215. array_pop($share_ids);
  2216. foreach($share_ids as $share_id)
  2217. {
  2218. if(!isset($list['shares'][$share_id]))
  2219. {
  2220. $list['share_list'][] = $share_id;
  2221. $list['shares'][$share_id] = array(
  2222. 'tag_name'=>$data['tag_name'],
  2223. 'tag_encode'=>$tag_encode);
  2224. break;
  2225. }
  2226. }
  2227. }
  2228. if(count($list['share_list']) > 0)
  2229. {
  2230. $list['uids'] = array();
  2231. $sql = 'SELECT share_id,uid,collect_count,cache_data,create_time FROM '.FDB::table('share').'
  2232. WHERE share_id IN ('.implode(',',$list['share_list']).')';
  2233. $res = FDB::query($sql);
  2234. while($data = FDB::fetch($res))
  2235. {
  2236. $share_id = $data['share_id'];
  2237. $tag_name = $list['shares'][$share_id]['tag_name'];
  2238. $tag_encode = $list['shares'][$share_id]['tag_encode'];
  2239. $list['uids'][$data['uid']] = 1;
  2240. $data['cache_data'] = fStripslashes(unserialize($data['cache_data']));
  2241. $data['time'] = getBeforeTimelag($data['create_time']);
  2242. $data['tag_name'] = $tag_name;
  2243. $data['url'] = FU('book/shopping',array('sid'=>$data['share_id'],'tag'=>$tag_encode));
  2244. FS('Share')->shareImageFormat($data,1);
  2245. unset($data['cache_data']);
  2246. $list['shares'][$share_id] = $data;
  2247. }
  2248. unset($list['share_list']);
  2249. return $list;
  2250. }
  2251. else
  2252. return false;
  2253. }
  2254. /**
  2255. * 获取首页显示的分享分类最近7天最热标签的分享
  2256. * @return array
  2257. */
  2258. public function getIndexCateTagShares($num = 30)
  2259. {
  2260. global $_FANWE;
  2261. $day7_time = getTodayTime() - 604800;
  2262. $cate_list = &ShareService::getIndexShareCateHotTags($num);
  2263. if(!empty($cate_list['share_list']))
  2264. {
  2265. $list = array();
  2266. $share_datas = array();
  2267. $sql = 'SELECT * FROM '.FDB::table('share').'
  2268. WHERE share_id IN ('.implode(',',$cate_list['share_list']).')';
  2269. $list = FDB::fetchAll($sql);
  2270. $list = ShareService::getShareDetailList($list);
  2271. foreach($list as $data)
  2272. {
  2273. $cate_list['shares'][$data['share_id']]['share'] = $data;
  2274. }
  2275. }
  2276. foreach($cate_list['shares'] as $share)
  2277. {
  2278. $cate_id = $share['cate_id'];
  2279. unset($share['cate_id']);
  2280. $uid = $share['share']['uid'];
  2281. if(!isset($cate_list[$cate_id]['user'][$uid]))
  2282. $cate_list[$cate_id]['user'][$uid] = $share['share']['user_name'];
  2283. $cate_list[$cate_id]['shares'][] = $share;
  2284. }
  2285. unset($cate_list['shares']);
  2286. unset($cate_list['share_list']);
  2287. return $cate_list;
  2288. }
  2289. public function getChildCids($rid,&$cids)
  2290. {
  2291. global $_FANWE;
  2292. $root_cate = $_FANWE['cache']['goods_category']['all'][$rid];
  2293. $cids[] = $rid;
  2294. if(isset($root_cate['child']))
  2295. {
  2296. foreach($root_cate['child'] as $cid)
  2297. {
  2298. ShareService::getChildCids($cid,$cids);
  2299. }
  2300. }
  2301. }
  2302. public function getPhotoListByType($type,$num = 6)
  2303. {
  2304. $list = array();
  2305. $sql = 'SELECT DISTINCT(share_id),uid,photo_id,img FROM '.FDB::table('share_photo').'
  2306. WHERE type = \''.$type.'\' ORDER BY share_id DESC,sort ASC LIMIT 0,'.$num;
  2307. $res = FDB::query($sql);
  2308. while($data = FDB::fetch($res))
  2309. {
  2310. $data['url'] = FU('book/'.$type,array('sid'=>$data['share_id']));
  2311. $list[] = $data;
  2312. }
  2313. return $list;
  2314. }
  2315. }
  2316. ?>