请选择 进入手机版 | 继续访问电脑版
查看: 665|回复: 15

[已处理] 发现一个重要的BUG,日志置顶帖删掉后留下空白日志!

[复制链接]

7

主题

38

回帖

46

积分

初学乍练

贡献
0 点
金币
0 个
发表于 2022-11-8 04:04:51 | 显示全部楼层 |阅读模式
BUG反馈
程序版本: X3.4
浏览器: Chrome 
BUG地址: 隐藏内容
BUG截图:
测试用户名: 隐藏内容
测试密码: 隐藏内容
首先你发2个日志,然后将其中一个日志置顶,然后直接删除这个置顶日志(不要取消置顶删除)
刷新后这个帖子依然存在,如果你后台没设回收站,那么他显示的是一个空白帖,如果你启用了回收站,这个帖像似一个正常帖,但无法删除!


如果你把发布的两个帖子全部删除,那么这个删不掉的帖子也消失了,而当你再次发新日志,这个空白帖他又出现了。。。

-------------------------(我是新安装的Discuz_X3.4_SC_UTF8_20220811完整安装版测试的,所以也没必要提供网站和用户名密码)


我的检查了表,是 pre_common_member_field_home 表的 stickblogs 项不能随用户删日志而同步清除置顶信息,也就是置顶参数依然存在,我把这里的数字清空,就一切正常了。

管理员可以手动清除,总不能我整天帮用户清除这些数据吧?快修复吧,要疯了!
5 金币

最佳答案

https://gitee.com/Discuz/DiscuzX/pulls/1797/files
打开 source/include/space/space_blog.php
文件最底部有个
  1. function blog_get_stick($uid, $stickblogs, $summarylen) {
  2.         $list = array_flip($stickblogs);
  3.         if($stickblogs) {
  4.                 $data_blog = C::t('home_blog')->fetch_all($stickblogs);
  5.                 $data_blogfield = C::t('home_blogfield')->fetch_all($stickblogs);
  6.                 foreach($data_blog as $curblogid=>$value) {
  7.                         $value = array_merge($value, (array)$data_blogfield[$curblogid]);
  8.                         $value['message'] = getstr($value['message'], $summarylen, 0, 0, 0, -1);
  9.                         $value['message'] = preg_replace("/&[a-z]+\;/i", '', $value['message']);
  10.                         if($value['pic']) $value['pic'] = pic_cover_get($value['pic'], $value['picflag']);
  11.                         $value['dateline'] = dgmdate($value['dateline']);
  12.                         $value['stickflag'] = true;
  13.                         $list[$value['blogid']] = $value;
  14.                 }
  15.         }
  16.         return $list;
  17. }
复制代码
修改为
  1. function blog_get_stick($uid, $stickblogs, $summarylen) {
  2.         $list = array();
  3.         if($stickblogs) {
  4.                 $stickids = array();
  5.                 $data_blog = C::t('home_blog')->fetch_all($stickblogs);
  6.                 $data_blogfield = C::t('home_blogfield')->fetch_all($stickblogs);
  7.                 foreach ($stickblogs as $blogid) {
  8.                         if(!empty($data_blog[$blogid]) && !empty($data_blogfield[$blogid])) {
  9.                                 $value = array_merge($data_blog[$blogid], $data_blogfield[$blogid]);
  10.                                 $value['message'] = getstr($value['message'], $summarylen, 0, 0, 0, -1);
  11.                                 $value['message'] = preg_replace("/&[a-z]+\;/i", '', $value['message']);
  12.                                 if($value['pic']) $value['pic'] = pic_cover_get($value['pic'], $value['picflag']);
  13.                                 $value['dateline'] = dgmdate($value['dateline']);
  14.                                 $value['stickflag'] = true;
  15.                                 $list[$value['blogid']] = $value;
  16.                                 $stickids[] = $value['blogid'];
  17.                         }
  18.                 }
  19.                 if(count($stickids) != count($stickblogs)) {
  20.                         C::t('common_member_field_home')->update($uid, array('stickblogs' => implode(',', $stickids)));
  21.                 }
  22.         }
  23.         return $list;
  24. }
复制代码



回复

使用道具 举报

14

主题

430

回帖

1260

积分

应用开发者

贡献
1 点
金币
801 个
发表于 2022-11-16 10:48:03 | 显示全部楼层
https://gitee.com/Discuz/DiscuzX/pulls/1797/files
打开 source/include/space/space_blog.php
文件最底部有个
  1. function blog_get_stick($uid, $stickblogs, $summarylen) {
  2.         $list = array_flip($stickblogs);
  3.         if($stickblogs) {
  4.                 $data_blog = C::t('home_blog')->fetch_all($stickblogs);
  5.                 $data_blogfield = C::t('home_blogfield')->fetch_all($stickblogs);
  6.                 foreach($data_blog as $curblogid=>$value) {
  7.                         $value = array_merge($value, (array)$data_blogfield[$curblogid]);
  8.                         $value['message'] = getstr($value['message'], $summarylen, 0, 0, 0, -1);
  9.                         $value['message'] = preg_replace("/&[a-z]+\;/i", '', $value['message']);
  10.                         if($value['pic']) $value['pic'] = pic_cover_get($value['pic'], $value['picflag']);
  11.                         $value['dateline'] = dgmdate($value['dateline']);
  12.                         $value['stickflag'] = true;
  13.                         $list[$value['blogid']] = $value;
  14.                 }
  15.         }
  16.         return $list;
  17. }
复制代码
修改为
  1. function blog_get_stick($uid, $stickblogs, $summarylen) {
  2.         $list = array();
  3.         if($stickblogs) {
  4.                 $stickids = array();
  5.                 $data_blog = C::t('home_blog')->fetch_all($stickblogs);
  6.                 $data_blogfield = C::t('home_blogfield')->fetch_all($stickblogs);
  7.                 foreach ($stickblogs as $blogid) {
  8.                         if(!empty($data_blog[$blogid]) && !empty($data_blogfield[$blogid])) {
  9.                                 $value = array_merge($data_blog[$blogid], $data_blogfield[$blogid]);
  10.                                 $value['message'] = getstr($value['message'], $summarylen, 0, 0, 0, -1);
  11.                                 $value['message'] = preg_replace("/&[a-z]+\;/i", '', $value['message']);
  12.                                 if($value['pic']) $value['pic'] = pic_cover_get($value['pic'], $value['picflag']);
  13.                                 $value['dateline'] = dgmdate($value['dateline']);
  14.                                 $value['stickflag'] = true;
  15.                                 $list[$value['blogid']] = $value;
  16.                                 $stickids[] = $value['blogid'];
  17.                         }
  18.                 }
  19.                 if(count($stickids) != count($stickblogs)) {
  20.                         C::t('common_member_field_home')->update($uid, array('stickblogs' => implode(',', $stickids)));
  21.                 }
  22.         }
  23.         return $list;
  24. }
复制代码



点评

太棒了,网络还是有好心人滴,感谢兄弟,给我和大家解决了此问题!  发表于 2022-11-16 17:58
回复 支持 1 反对 0

使用道具 举报

42

主题

285

回帖

356

积分

炉火纯青

贡献
0 点
金币
9 个
QQ
发表于 2022-11-11 12:25:10 | 显示全部楼层
现在都高3.5去了,3.4的一些问题不会弄了吧
洪荒文学 | 书单、故事、影评、圈子。https://www.honghuangwenxue.com
回复 支持 反对

使用道具 举报

7

主题

38

回帖

46

积分

初学乍练

贡献
0 点
金币
0 个
 楼主| 发表于 2022-11-12 15:25:14 | 显示全部楼层
如果说不完美可以理解的,因为无论官方怎么设计都是众口难调,但是我说的这个BUG不仅给站长带来麻烦,也给用户带来麻烦,总有几个空的置顶帖子在上面,而且越积累越多,多影响心情,而且即使修复了,所有用户的空日志依然置顶存在,包括3.5也存在这个问题的,所以日志以后不能启用置顶帖,我是把置顶功能代码删除了,没办法。

如果有高人指点,修复此问题,万分感谢!
回复 支持 反对

使用道具 举报

7

主题

38

回帖

46

积分

初学乍练

贡献
0 点
金币
0 个
 楼主| 发表于 2022-11-13 16:58:21 | 显示全部楼层
有没有大神支援一下,解决这个问题?我不太懂,新手。。。我想解决这个问题应该不难,就删日志的同时删除对应的置顶信息。

官方大大能不能帮助解决一下或指点一下呢?

以下是删除日志按钮相关代码
  1.       <!--{if $_GET['view']=='me' && $space['self']}--><!--{if empty($value['status'])}--><a href="home.php?mod=spacecp&ac=blog&blogid=$value[blogid]&op=stick&stickflag=$stickflag&handlekey=stickbloghk_{$value[blogid]}" id="blog_stick_$value[blogid]" onclick="showWindow(this.id, this.href, 'get', 0);"><!--{if $stickflag}-->{lang stick}<!--{else}-->{lang cancel_stick}<!--{/if}--></a><span class="pipe">|</span><!--{/if}--><!--{/if}-->
复制代码
以下是要删帖的同时从表里删除对应的置顶数据
表:pre_common_member_field_home
其中stickblogs项的置顶信息(例如:35,36,14)删帖的同时如何同步删除对应的组数字?

如何修改删帖的代码实现删除相应的置顶数据呢?还是得修改哪里的控制代码呢?
回复 支持 反对

使用道具 举报

8

主题

609

回帖

909

积分

Giter

贡献
10 点
金币
230 个
发表于 2022-11-16 01:27:16 | 显示全部楼层
说好的一起 发表于 2022-11-13 16:58
有没有大神支援一下,解决这个问题?我不太懂,新手。。。我想解决这个问题应该不难,就删日志的同时删除对 ...

bug反馈了即可,一般后续会有人来看的。
不要听那些人说的,bug一直都是有持续修复的。
可以去Gitee上面看,更新内容一直都没有断过。

不过排队是免不了的了,要做的事情很多很多,轮到你这个可能得点时间。
最好不要指望反馈了马上就能得到结果,如果非常急的话建议还是找人自己先解决一下。
回复 支持 反对

使用道具 举报

8

主题

609

回帖

909

积分

Giter

贡献
10 点
金币
230 个
发表于 2022-11-16 01:31:02 | 显示全部楼层
另外bug可以同时反馈到Gitee的issue板块,记得使用电脑端按模板填写,这样得到关注和修复的优先级会更高一些。
回复 支持 反对

使用道具 举报

7

主题

38

回帖

46

积分

初学乍练

贡献
0 点
金币
0 个
 楼主| 发表于 2022-11-16 02:57:17 | 显示全部楼层
专家 发表于 2022-11-16 01:27
bug反馈了即可,一般后续会有人来看的。
不要听那些人说的,bug一直都是有持续修复的。
可以去Gitee上面 ...

好的,谢谢,回头去那边看看。。。
回复 支持 反对

使用道具 举报

107

主题

248

回帖

486

积分

炉火纯青

贡献
0 点
金币
104 个
发表于 2022-11-16 13:56:10 | 显示全部楼层
终于解决了,这个BUG我两年前就在GIT提交了,没人理

点评

哈哈,我琢磨了好几天,也没弄好。。。  发表于 2022-11-16 17:59
回复 支持 反对

使用道具 举报

8

主题

609

回帖

909

积分

Giter

贡献
10 点
金币
230 个
发表于 2022-11-16 15:57:54 | 显示全部楼层
说好的一起 发表于 2022-11-16 02:57
好的,谢谢,回头去那边看看。。。

你楼下那位已经帮忙给修好了,可以对照着自己改一下或者等待下一个正式版发布
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

添加有偿服务QQ
添加有偿服务微信