codecamp
修复当编辑文章后会出现不按发布范围来通知成员

问题描述:

当对已发布的文章进行二次编辑后再进行发布时会出现不按发布范围来通知成员,例如通知全体成员。

修复方法:

文件:\dzz\news\class\table\table_news.php

原代码:

if($return=parent::update($arr['newid'],$arr)){
			if($data['attachs']){
				 $attachs=explode(',',$data['attachs']);
				 C::t('attachment')->addcopy_by_aid($attachs,-1);
			}
			if(isset($arr['attachs'])){
				 $attachs=explode(',',$arr['attachs']);
				 C::t('attachment')->addcopy_by_aid($attachs,1);
			}
			//新添加的范围重新发送通知
			$orgids=$uids=array();
			if($arr['orgids']!=$data['orgids']){
				$norgids=$arr['orgids']?explode(',',$arr['orgids']):array();
				$oorgids=$data['orgids']?explode(',',$data['orgids']):array();
				$orgids=array_diff($norgids,$oorigids);
			}
			if($arr['uids']!=$data['uids']){
				$nuids=$arr['uids']?explode(',',$arr['uids']):array();
				$ouids=$data['uids']?explode(',',$data['uids']):array();
				$uids=array_diff($nuids,$ouids);
			}
			$new_uids=getUidsByOrgid($orgids,$uids);
			$appid=C::t('app_market')->fetch_appid_by_mod('{dzzscript}?mod=news',0);
			foreach($new_uids as $uid){
				if($uid!=getglobal('uid')){
					//发送通知
					$notevars=array(
									'from_id'=>$appid,
									'from_idtype'=>'app',
									'url'=>DZZSCRIPT.'?mod=news&op=view&newid='.$data['newid'],
									'author'=>getglobal('username'),
									'authorid'=>getglobal('uid'),
									'subject'=>$data['subject'],
									'dataline'=>dgmdate(TIMESTAMP),
									);
					
						$action='news_publish';
						$type='news_publish_'.$uid;
					
					dzz_notification::notification_add($uid, $type, $action, $notevars, 0,'dzz/news');
				}
			}
			
		}

修改后的代码:

if($return=parent::update($arr['newid'],$arr)){
			if($data['attachs']){
				 $attachs=explode(',',$data['attachs']);
				 C::t('attachment')->addcopy_by_aid($attachs,-1);
			}
			if(isset($arr['attachs'])){
				 $attachs=explode(',',$arr['attachs']);
				 C::t('attachment')->addcopy_by_aid($attachs,1);
			}
			//新添加的范围重新发送通知
			$orgids=$uids=array();
			if($arr['orgids']!=$data['orgids']){
				$norgids=$arr['orgids']?explode(',',$arr['orgids']):array();
				$oorigids=$data['orgids']?explode(',',$data['orgids']):array();
				$orgids=implode(',', array_diff($norgids,$oorigids));
			}
			if($arr['uids']!=$data['uids']){
				$nuids=$arr['uids']?explode(',',$arr['uids']):array();
				$ouids=$data['uids']?explode(',',$data['uids']):array();
				$uids=implode(',', array_diff($nuids,$ouids));
			}
			if(!$orgids && $arr['orgids'] || !$uids && $arr['uids']){
			}else{
				$new_uids=getUidsByOrgid($orgids,$uids);
				$appid=C::t('app_market')->fetch_appid_by_mod('{dzzscript}?mod=news',0);
				foreach($new_uids as $uid){
					if($uid!=getglobal('uid')){
						//发送通知
						$notevars=array(
										'from_id'=>$appid,
										'from_idtype'=>'app',
										'url'=>DZZSCRIPT.'?mod=news&op=view&newid='.$data['newid'],
										'author'=>getglobal('username'),
										'authorid'=>getglobal('uid'),
										'subject'=>$arr['subject'],
										'dataline'=>dgmdate(TIMESTAMP),
										);
						
							$action='news_publish';
							$type='news_publish_'.$uid;
						
						dzz_notification::notification_add($uid, $type, $action, $notevars, 0,'dzz/news');
					}
				}
			}
		}


修改限制上传图片大小
修改文章标题字数限制
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

技术交流

数据备份恢复和迁移

dzzoffice网盘文件

Dzzoffice系统

插件

媒体播放器

任务板

B站dzzoffice 技术交流的视频文稿

应用市场

dzzoffice中使用onlyoffice协同办公

登录模板

模板1

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }