public function deleteShare($share_id, $is_score = true) { $share = ShareService::getShareById($share_id); if (!empty($share)) { $goods_count = FDB::resultFirst('SELECT COUNT(goods_id) FROM ' . FDB::table('share_goods') . ' WHERE share_id = ' . $share_id); $photo_count = FDB::resultFirst('SELECT COUNT(photo_id) FROM ' . FDB::table('share_photo') . ' WHERE share_id = ' . $share_id); $collect_count = FDB::resultFirst('SELECT COUNT(c_uid) FROM ' . FDB::table('user_collect') . ' WHERE share_id = ' . $share_id); FDB::delete('share', 'share_id = ' . $share_id); FDB::delete('share_goods', 'share_id = ' . $share_id); FDB::delete('share_photo', 'share_id = ' . $share_id); FDB::delete('share_category', 'share_id = ' . $share_id); FDB::delete('share_comment', 'share_id = ' . $share_id); FDB::delete('share_match', 'share_id = ' . $share_id); FDB::delete('share_tags', 'share_id = ' . $share_id); FDB::delete('user_collect', 'share_id = ' . $share_id); $pattern = "/#([^\f\n\r\t\v]{1,80}?)#/"; if (preg_match($pattern, $share['content'])) { FS("Event")->deleteEvent($share_id); } $pattern = "/@([^\f\n\r\t\v@ ]{2,20}?)(?:\\:| )/"; if (preg_match($pattern, $share['content'])) { FDB::delete('atme', 'share_id = ' . $share_id); } if (defined('MANAGE_HANDLER') && MANAGE_HANDLER && $is_score) { if (!in_array($share['type'], array('fav', 'album_best', 'album_rec'))) { if ($share['rec_uid'] == 0 && in_array($share['share_data'], array('goods', 'photo', 'goods_photo'))) { FS("User")->updateUserScore($share['uid'], 'delete_share', 'image', $share['content'], $share_id); } else { FS("User")->updateUserScore($share['uid'], 'delete_share', 'default', $share['content'], $share_id); } } } FDB::query('UPDATE ' . FDB::table('user_count') . ' SET shares = shares - 1, photos = photos - ' . $photo_count . ', goods = goods - ' . $goods_count . ', collects = collects - ' . $collect_count . ' WHERE uid = ' . $share['uid']); $key = getDirsById($share_id); clearCacheDir('share/' . $key); $count = (int) FDB::resultFirst('SELECT COUNT(share_id) FROM ' . FDB::table('share_rec') . ' WHERE share_id = ' . $share_id); if ($count == 0) { ShareService::deleteShareImages($share_id, $share['server_code']); } } }