|
楼主 |
发表于 2016-11-28 09:34:46
|
显示全部楼层
大致捋了一遍整个模块的代码,看来问题还真没那么简单。
配置文件config.php,定义了4个变量,后两个变量,基本没用上。不是没有用处,而是程序中把它遗忘了。要想完善地发挥config.php的作用,还需定义菜单代码和APP日志代码两个变量。
例如前帖所述的代码,如果定义了菜单代码,就变成了:
- //-------排除没有公告通知菜单权限的人-------
- $USER_ID_STR_ARRAY=explode(",",$USER_ID_STR);
- $USER_ID_STR_ARRAY_COUNT=sizeof($USER_ID_STR_ARRAY);
- for($I=0;$I<$USER_ID_STR_ARRAY_COUNT;$I++)
- {
-
- if($USER_ID_STR_ARRAY[$I]=="")
-
- continue;
-
- $FUNC_ID_STR=GetfunmenuByuserID($USER_ID_STR_ARRAY[$I]);
-
- if(!find_id($FUNC_ID_STR,$ExtNotify_FUNC_ID))
-
- $USER_ID_STR=str_replace($USER_ID_STR_ARRAY[$I],'',$USER_ID_STR);
- }
复制代码
代码简单了许多,免除了数据库的查询,加快了执行速度。
除了主公告通知和自定义公告通知因授权用户集不同,造成用户收不到新建公告通知的事务提醒外,由于主公告通知和自定义公告通知两个模块混用内部标志,还会造成阅读记录混乱、阅读记录记载的时间错误、不能按要求再次提醒未读人员、删除公告通知时日志提醒等删除不彻底或删错等一系列莫名其妙的错误,如果企业因某种需求,想要用公告通知的阅读人员和阅读时间作为管理凭证甚至作为电子证据,那热闹可就大发了,不知道会产生多少“冤假错案”呢。总得来说,在二十多个程序中,只要涉及到自定义公告通知的内部标志的程序,都存在Bug。
下面,就是我改写后的manage目录下的delete.php代码:
- <?
- include_once("inc/auth.inc.php");
- include_once("inc/utility_all.php");
- include_once("inc/utility_file.php");
- include_once("inc/utility_sms1.php");
- include_once("inc/utility_cache.php");
- include_once("../config.php");
- include_once("inc/header.inc.php");
- $HTML_PAGE_TITLE="";
- ?>
- <body class="bodycolor">
- <?
- $PARA_ARRAY=get_sys_para("NOTIFY_EDIT_PRIV".$dbName);
- if($DELETE_STR=="")
- $DELETE_STR=0;
- elseif(substr($DELETE_STR,-1,1)==",")
- $DELETE_STR=substr($DELETE_STR,0,-1);
- $query="select BEGIN_DATE,SUBJECT,ATTACHMENT_ID,ATTACHMENT_NAME,NOTIFY_ID
- from $dbName where NOTIFY_ID in ($DELETE_STR)";
- $cursor=
- exequery(TD::conn(),$query);
- while($ROW=mysql_fetch_array($cursor))
- {
- $BEGIN_DATE=$ROW["BEGIN_DATE"];
- $SUBJECT1=$ROW["SUBJECT"];
- $SUMMARY=$ROW["SUMMARY"];
- $ATTACHMENT_ID=$ROW["ATTACHMENT_ID"];
- $ATTACHMENT_NAME=$ROW["ATTACHMENT_NAME"];
- $BEGIN_DATE=date("Y-m-d",$BEGIN_DATE);
- $NOTIFY_ID=$ROW["NOTIFY_ID"];
- $REMIND_URL="1:".$dbName."/show/read_notify.php?NOTIFY_ID=".$NOTIFY_ID;
- delete_remind_sms($sms_num,'','','',$REMIND_URL);
- if($ATTACHMENT_NAME!="")
- delete_attach($ATTACHMENT_ID,$ATTACHMENT_NAME);
- $query="delete
- from APP_LOG where MODULE='$ExtNotify_MODULE_ID' and
- OPP_ID='$NOTIFY_ID'";
- exequery(TD::conn(),
- $query);
- add_log($log_num,"删除《".$SUBJECT1."》",$_SESSION["LOGIN_USER_ID"]);
- }
- $query="delete from $dbName where NOTIFY_ID in
- ($DELETE_STR)";
- exequery(TD::conn(),$query);
- if($SEARCH==1) {
- header("location:
- search.php?start=$start&SEARCH=1&SEND_TIME_MIN=$SEND_TIME_MIN&SEND_TIME_MAX=$SEND_TIME_MAX&SUBJECT=
- $SUBJECT&CONTENT= $CONTENT&FORMAT=$FORMAT&TYPE_ID=$TYPE_ID&PUBLISH=$PUBLISH&TOP=$TOP&TO_ID=$TO_ID&STAT=$STAT&IS_MAIN=1");
- }
- else {
- if($FROM!=2)
- header("location:
- index1.php?start=$start&IS_MAIN=1");
- else
- header("location:../auditing/audited.php?start=$start&IS_MAIN=1");
- }
- ?></body></html>
复制代码
|
|