Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[BUG] 应用只有一个uchome,会导致群发消息失败(您不能给非好友批量发送短消息)

[复制链接]
kissdp2 发表于 2009-11-19 10:50:12 | 显示全部楼层 |阅读模式
comment.php中$_SCONFIG['uc_status']的初始化的代码:

  1. //处理UC应用
  2. $_SCONFIG['uc_status'] = 0;
  3. $_SGLOBAL['appmenus'] = $_SGLOBAL['appmenu'] = array();
  4. if($_SGLOBAL['app']) {
  5.         foreach ($_SGLOBAL['app'] as $appid => $value) {
  6.                 if(UC_APPID != $appid) {
  7.                         $_SCONFIG['uc_status'] = 1;
  8.                 }
  9.                 if($value['open']) {
  10.                         if(empty($_SGLOBAL['appmenu'])) {
  11.                                 $_SGLOBAL['appmenu'] = $value;
  12.                         } else {
  13.                                 $_SGLOBAL['appmenus'][] = $value;
  14.                         }
  15.                 }
  16.         }
  17. }
复制代码
data/data_app.php里只有一个应用,$_SCONFIG['uc_status']肯定不会是1,

function_cp.php里的friend_update()方法,里面有这样几句代码:

  1. //用户中心添加
  2.         if($_SCONFIG['uc_status']) {
  3.                 include_once S_ROOT.'./uc_client/client.php';
  4.                 uc_friend_add($uid, $fuid);
  5.                 uc_friend_add($fuid, $uid);
  6.         }
复制代码
所以不会执行到去往ucenter表里插数据,
而群发消息则会查看uc_friends表里的个数与发送对象的个数做比较,如果相等才会发送成功!

我觉得这是一个bug
gud613 发表于 2010-3-15 21:55:50 | 显示全部楼层
怎么解决?给个解决办法啊!
回复

使用道具 举报

 楼主| kissdp2 发表于 2010-3-15 22:20:13 | 显示全部楼层
回复 2# gud613


    我的解决方法是将   if($_SCONFIG['uc_status']) {  ...  }  改成  if(1) {  ...  }  即中间代码永远生效,
   对于以前已经成为好友的用户,可以写一条sql语句全部导入,
  先清除 ucenter中friends表中的数据, 再
   "insert into me.uc_friends (uid,friendid,direction) (select uid,fuid,3 from uchome_friend where 1=1)"(根据自己的数据库设置和表名修改一下)
   再加好友就不会出现这个问题了
回复

使用道具 举报

zuoxinwu 发表于 2010-3-28 01:25:16 | 显示全部楼层
这种解决办法不太好吧?
回复

使用道具 举报

 楼主| kissdp2 发表于 2010-3-29 15:48:08 | 显示全部楼层
回复 4# zuoxinwu


    我也感觉这样不是很好, 但是不这样做就不能群发消息, 给用户感觉不好, 当然你可以用其他方法解决, 但原理就这样的...
回复

使用道具 举报

zuoxinwu 发表于 2010-3-30 14:32:45 | 显示全部楼层
我按照你的方法测试了还是不行啊。不过我没有进行后面的数据库修改操作,只是将 if($_SCONFIG['uc_status']) {  ...  }  改成  if(1) {  ...  } 。
回复

使用道具 举报

 楼主| kissdp2 发表于 2010-3-30 17:36:10 | 显示全部楼层
回复 6# zuoxinwu


    那个数据表是必须修改的, 因为发送的时候程序会自动检查uchome的uchome_friend表和ucenter的uc_friend表,如果在uchome表中存在但是在uc_friend表中不存在相应的数据是发送不成功的, 如果你怕出错的话, 先备份一下uc_friend这张表吧
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-9-28 18:24 , Processed in 0.233016 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表