www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/adminm/archiveadd.inc.php

    <?php
!defined('M_COM') && exit('No Permission');
include_once M_ROOT."./include/fields.fun.php";
include_once M_ROOT."./include/fields.cls.php";
include_once M_ROOT."./include/upload.cls.php";
include_once M_ROOT."./include/arcedit.cls.php";
include_once M_ROOT."./include/commu.fun.php";
include_once M_ROOT."./include/notice.cls.php";
load_cache('permissions,vcps,cotypes');
load_cache('catalogs,altypes',$sid);

$chid = empty($chid) ? 0 : max(0,intval($chid));
(empty($chid) || !($channel = read_cache('channel',$chid))) && mcmessage(lang('confirmchoose channel'));
!$curuser->pmsbyugids($channel['ugids']) && mcmessage(lang('point channel none add permission'));
(!$curuser->isadmin() && $channel['userforbidadd']) && mcmessage(lang('admin_self channel'));
!$curuser->checkforbid('issue') && mcmessage(lang('userisforbid'));

//分析栏目定义及权限
$caid = empty($caid) ? 0 : max(0,intval($caid));
if($caid){
	!($catalog = read_cache('catalog',$caid,'',$sid)) && mcmessage(lang('confirmchoose catalog'));
	!$curuser->pmbypmids('issue',$catalog['permission']) && mcmessage(lang('current user nohave point catalog of issue permission'));
	!in_array($chid,explode(',',$catalog['chids'])) && mcmessage($catalog['title'].lang('catalog cannot add').$channel['cname']);
}
//指定合辑内添加文档
$pid = empty($pid) ? 0 : max(0,intval($pid));

$forward = empty($forward) ? M_REFERER : $forward;
$forwardstr = '&forward='.rawurlencode($forward);
$fields = read_cache('fields',$chid);
if(!submitcheck('barchiveadd')){
	$a_field = new cls_field;
	tabheader($channel['cname'].'&nbsp; -&nbsp; '.lang('catas and album setting'),'archiveadd',"?chid=$chid&action=archiveadd$param_suffix$forwardstr",2,1,1);
	$submitstr = '';
	//栏目定义
	trbasic(lang('belong catalog'),'archiveadd[caid]',umakeoption(ucaidsarr($chid),$caid),'select');
	//类别定义
	foreach($cotypes as $k => $v){
		if(!$v['self_reg'] && !$v['ctype'] && (!$v['chids'] || !in_array($chid,explode(',',$v['chids'])))){
			$optionarr = empty($v['notblank']) ? array('0' => array('title' =>lang('nosetting'))) : array();
			$optionarr = $optionarr + uccidsarr($k,$chid);
			trbasic($v['cname'],"archiveadd[cotype$k]",umakeoption($optionarr),'select');
		}
	}
	//用archiveadd[pids][]的数组传送需要归入的合辑
	if($pid && $row = $db->fetch_one("SELECT aid,sid,caid,atid,arcurl,subject FROM {$tblprefix}archives WHERE aid=$pid")){//指定合辑内添加文档的信息提示
		trhidden('archiveadd[pids][]',$pid);
		$row['arcurl'] = view_arcurl($row);
		trbasic(lang('belong album'),'',$altypes[$row['atid']]['cname']."&nbsp; -&nbsp; <a href=$row[arcurl] target=\"_blank\">".mhtmlspecialchars($row['subject'])."</a>",'');
		unset($row);
	}else{
		foreach($altypes as $k => $v){//个人合辑允许直接加入
			if(($v = read_cache('altype',$k,'',$sid)) && $v['oneuser'] && !$v['onlyload'] && in_array($chid,$v['chids'])){
				tr_abids('archiveadd[pids]',$k);//个人合辑列表
			}
		}
		trbasic(lang('handwork input belong album id'),"archiveadd[pids][]");
	}
	//个人分类定义
	$ucidsarr = array('0' => lang('nosetting coclass')) + loaduclasses($curuser->infos['mid']);
	trbasic(lang('my coclass'),'archiveadd[ucid]',makeoption($ucidsarr),'select');
	tabfooter();

	tabheader($channel['cname'].'&nbsp; -&nbsp; '.lang('content setting'));
	foreach($fields as $k => $field){
		if($field['available'] && !$field['isadmin'] && !$field['isfunc']){
			$a_field->init();
			$a_field->field = read_cache('field',$chid,$k);
			$a_field->isadd = 1;
			$a_field->trfield('archiveadd');
			$submitstr .= $a_field->submitstr;
		}
	}
	tabfooter();
	unset($a_field);

	tabheader($channel['cname'].'&nbsp; -&nbsp; '.lang('permission setting'));
	trbasic(lang('content permission project'),'archiveadd[permission]',makeoption(pmidsarr(1),'0'),'select');
	trbasic(lang('browse archive saleprice'),'archiveadd[salecp]',makeoption(array('' => lang('freesale')) + $vcps['sale']),'select');
	trbasic(lang('attachment operate saleprice'),'archiveadd[fsalecp]',makeoption(array('' => lang('freesale')) + $vcps['fsale']),'select');
	$submitstr .= tr_regcode('archive');
	tabfooter('barchiveadd');
	check_submit_func($submitstr);
}else{
	if(!regcode_pass('archive',empty($regcode) ? '' : trim($regcode))) mcmessage(lang('regcode error'));
	//分析栏目的定义及权限
	if(empty($archiveadd['caid']) || !($catalog = read_cache('catalog',$archiveadd['caid'],'',$sid))) mcmessage(lang('confirmchoose catalog'));
	if(!in_array($chid,explode(',',$catalog['chids']))) mcmessage($catalog['title'].lang('catalog cannot add').$channel['cname']);
	if(!$curuser->pmbypmids('issue',$catalog['permission'])) mcmessage(lang('current user nohave point catalog of issue permission'));

	$sqlmain = "sid='$sid',caid='$archiveadd[caid]',chid='$chid',mid='$memberid',mname='".$curuser->infos['mname']."',createdate='$timestamp',needstatic='$timestamp',ucid='$archiveadd[ucid]'";

	//分析分类的定义及权限
	foreach($cotypes as $coid => $cotype){
		if(!$cotype['self_reg'] && !$cotype['ctype'] && (!$cotype['chids'] || !in_array($chid,explode(',',$cotype['chids'])))){
			$archiveadd["cotype$coid"] = empty($archiveadd["cotype$coid"]) ? 0 : $archiveadd["cotype$coid"];
			if(!empty($archiveadd["cotype$coid"])){
				$coclass = read_cache('coclass',$coid,$archiveadd["cotype$coid"]);
				if(empty($coclass) || !in_array($chid,explode(',',$coclass['chids'])) || !$curuser->pmbypmids('issue',$coclass['permission'])) $archiveadd["cotype$coid"] = 0;
			}
			$sqlmain .= ",cotype$coid = ".$archiveadd["cotype$coid"];
		}
	}
	unset($catalog,$coclass);

	//权限方案与出售
	$sqlmain .= ",permission='".$archiveadd['permission']."'";
	$sqlmain .= ",salecp='".$archiveadd['salecp']."'";
	$sqlmain .= ",fsalecp='".$archiveadd['fsalecp']."'";

	$c_upload = new cls_upload;	
	$fields = fields_order($fields);
	$a_field = new cls_field;
	foreach($fields as $k => $field){
		if($field['available'] && !$field['isadmin'] && !$field['isfunc']){
			$a_field->init();
			$a_field->field = read_cache('field',$chid,$k);
			$a_field->deal('archiveadd');
			if(!empty($a_field->error)){
				$c_upload->rollback();
				mcmessage($a_field->error,M_REFERER);
			}
			$archiveadd[$k] = $a_field->newvalue;
		}
	}
	unset($a_field);
	$oldarr = array();
	$cu_ret = cu_fields_deal($channel['cuid'],'archiveadd',$oldarr);
	$cu_ret && mcmessage($cu_ret,M_REFERER);

	$fields['keywords']['available'] && $archiveadd['keywords'] = keywords($archiveadd['keywords']);
	$fields['author']['available'] && $archiveadd['author'] = empty($archiveadd['author']) ? $curuser->infos['mname'] : $archiveadd['author'];
	if($arcautoabstract && $fields['abstract']['available'] && !$fields['abstract']['isadmin'] && $channel['autoabstract'] && empty($archiveadd['abstract']) && isset($archiveadd[$channel['autoabstract']])){
		$archiveadd['abstract'] = autoabstract($archiveadd[$channel['autoabstract']]);
	}
	if($arcautothumb && $fields['thumb']['available'] && !$fields['thumb']['isadmin'] && $channel['autothumb'] && empty($archiveadd['thumb']) && isset($archiveadd[$channel['autothumb']])){
		$field = read_cache('field',$chid,'thumb');
		$archiveadd['thumb'] = $c_upload->thumb_pick(stripslashes($archiveadd[$channel['autothumb']]),$fields[$channel['autothumb']]['datatype'],$field['rpid']);
	}
	if($channel['autosize'] && !empty($archiveadd[$channel['autosize']])){
		$archiveadd['atmsize'] = atm_size(stripslashes($archiveadd[$channel['autosize']]),$fields[$channel['autosize']]['datatype'],$channel['autosizemode']);
		$sqlmain .= ",atmsize='".$archiveadd['atmsize']."'";
	}

	$sqlsub = $sqlcustom = '';
	foreach($fields as $k => $field){
		if($field['available'] && !$field['isadmin'] && !$field['isfunc']){
			if(!empty($field['istxt'])) $archiveadd[$k] = saveastxt(stripslashes($archiveadd[$k]));
			${'sql'.$field['tbl']} .= (${'sql'.$field['tbl']} ? ',' : '').$k."='".$archiveadd[$k]."'";
		}
	}
	cu_sqls_deal($channel['cuid'],$archiveadd,$sqlmain,$sqlsub,$sqlcustom);//将字段之外的交互资料写入

	$db->query("INSERT INTO {$tblprefix}archives SET ".$sqlmain);
	if(!$aid = $db->insert_id()){
		mcmessage(lang('archive errorsave'),M_REFERER);
	}else{
		$db->query("INSERT INTO {$tblprefix}archives_rec SET aid='$aid'");
		$sqlsub = "aid='$aid'".($sqlsub ? ',' : '').$sqlsub;
		$db->query("INSERT INTO {$tblprefix}archives_sub SET ".$sqlsub);
		$sqlcustom = "aid='$aid'".($sqlcustom ? ',' : '').$sqlcustom;
		$db->query("INSERT INTO {$tblprefix}archives_$chid SET ".$sqlcustom);
		$curuser->basedeal('archive',1);
		$c_notice = new cls_notice;//通知文档更新记录
		$aedit = new cls_arcedit;
		$aedit->set_aid($aid);
		$aedit->set_arcurl(0);
		if($channel['autocheck']) $aedit->arc_check(1,0);
		$aedit->updatedb();
		if(!empty($archiveadd['pids'])){//归辑设置,与文档数据库无关
			foreach($archiveadd['pids'] as $pid) $aedit->set_album($pid);
		}
		unset($aedit);
		if($channel['autostatic']){
			include_once M_ROOT."./include/arc_static.fun.php";
			arc_static($aid);
			unset($arc);
		}
		if(!empty($c_upload->ufids)){
			$db->query("UPDATE {$tblprefix}userfiles SET aid=$aid WHERE ufid IN (".mimplode($c_upload->ufids).")");
		}
		$c_notice->deal();//通知文档更新记录
	}
	$c_upload->saveuptotal(1);
	mcmessage(lang('archive add finish'),$forward);

}

?>