$a_field->field = $v; if ($curuser->pmbypmids('field', $v['pmid'])) { //字段附加权限设置 if (!empty($v['istxt'])) { $archiveadd[$k] = saveastxt(stripslashes($archiveadd[$k])); } ${'sql' . $v['tbl']} .= (${'sql' . $v['tbl']} ? ',' : '') . $k . "='" . $archiveadd[$k] . "'"; if ($arr = multi_val_arr($archiveadd[$k], $v)) { foreach ($arr as $x => $y) { ${'sql' . $v['tbl']} .= (${'sql' . $v['tbl']} ? ',' : '') . $k . '_' . $x . "='{$y}'"; } } } } } cu_sqls_deal($channel['cuid'], $archiveadd, $sqlmain, $sqlsub, $sqlcustom); //将字段之外的交互资料写入 $db->query("INSERT INTO {$tblprefix}archives SET " . $sqlmain); if (!($aid = $db->insert_id())) { $c_upload->closure(1); mcmessage('arcsaveerr', axaction(2, M_REFERER)); } else { $c_upload->closure(1, $aid); $db->query("INSERT INTO {$tblprefix}archives_rec SET aid='{$aid}'"); $sqlsub = "aid='{$aid}'" . ($sqlsub ? ',' : '') . $sqlsub; $needstatics = ''; for ($i = 0; $i <= $channel['addnum']; $i++) { $needstatics .= $timestamp . ','; } $sqlsub .= ",needstatics='{$needstatics}'"; $db->query("INSERT INTO {$tblprefix}archives_sub SET " . $sqlsub);
function addcopy($coid = 0, $ccid = 0) { //复制到某个栏目或某个分类中,其它的分类如何处理呢?是保持还是放弃//类系中需要一个参数,新增复件是否需要保持属性。//只有单选类系才可能复制 global $cotypes, $timestamp, $db, $tblprefix, $arc; if (!$ccid) { return false; } $this->detail_data(); $archivenew =& $this->archive; if ($archivenew[$coid ? "ccid{$coid}" : 'caid'] == $ccid) { return false; } $chid = $archivenew['chid']; foreach (array('coidscp', 'cpkeeps') as $var) { ${$var} = $this->channel[$var] ? explode(',', $this->channel[$var]) : array(); } if (!in_array($coid ? $coid : 'caid', $coidscp)) { return false; } $pre_cns = array('caid' => $coid ? $this->archive['caid'] : $ccid); //复制到其它类系时,原栏目要保持 foreach ($cotypes as $k => $v) { //其它要保持的类系。 if (!$v['self_reg'] && in_array($k, $cpkeeps)) { if ($coid != $k) { $archivenew["ccid{$k}"] && ($pre_cns["ccid{$k}"] = $archivenew["ccid{$k}"]); } else { $pre_cns["ccid{$k}"] = $ccid; } } } if (!$this->auser->allow_arcadd($archivenew['chid'], $pre_cns)) { return false; } $sqlmain = $sqlsub = $sqlcustom = ''; foreach ($pre_cns as $k => $v) { $sqlmain .= ($sqlmain ? ',' : '') . "{$k}='{$v}'"; } $keeps = array('sid', 'chid', 'mid', 'mname', 'rpmid', 'dpmid', 'salecp', 'fsalecp', 'atmsize', 'enddate', 'jumpurl'); foreach ($keeps as $k) { $sqlmain .= ($sqlmain ? ',' : '') . "{$k}='" . addslashes($archivenew[$k]) . "'"; } $sqlmain .= ($sqlmain ? ',' : '') . "refreshdate='{$timestamp}',createdate='{$timestamp}'"; $fields = read_cache('fields', $chid); foreach ($fields as $k => $v) { if ($v['available'] && !$v['isfunc']) { if (!empty($v['istxt'])) { $txtname = saveastxt($archivenew[$k]); ${'sql' . $v['tbl']} .= (${'sql' . $v['tbl']} ? ',' : '') . $k . "='" . addslashes($txtname) . "'"; } else { ${'sql' . $v['tbl']} .= (${'sql' . $v['tbl']} ? ',' : '') . $k . "='" . addslashes($archivenew[$k]) . "'"; if ($arr = multi_val_arr($archivenew[$k], $v)) { foreach ($arr as $x => $y) { ${'sql' . $v['tbl']} .= (${'sql' . $v['tbl']} ? ',' : '') . $k . '_' . $x . "='{$y}'"; } } } } } cu_sqls_deal($this->channel['cuid'], $archivenew, $sqlmain, $sqlsub, $sqlcustom); //将字段之外的交互资料写入 $db->query("INSERT INTO {$tblprefix}archives SET " . $sqlmain); if (!($aid = $db->insert_id())) { return false; } else { $db->query("INSERT INTO {$tblprefix}archives_rec SET aid='{$aid}'"); $sqlsub = "aid='{$aid}'" . ($sqlsub ? ',' : '') . $sqlsub; $sqlsub .= ",needstatics='" . $archivenew['needstatics'] . "'"; $sqlsub .= ",arctpls='" . $archivenew['arctpls'] . "'"; $db->query("INSERT INTO {$tblprefix}archives_sub SET " . $sqlsub); $sqlcustom = "aid='{$aid}'" . ($sqlcustom ? ',' : '') . $sqlcustom; $db->query("INSERT INTO {$tblprefix}archives_{$chid} SET " . $sqlcustom); $this->auser->basedeal('archive', 1); $aedit = new cls_arcedit(); $aedit->set_aid($aid); $aedit->set_arcurl(); $aedit->set_cpid(empty($archivenew['cpid']) ? $this->aid : $archivenew['cpid']); $this->auser->pmautocheck($channel['autocheck']) && $aedit->arc_check(1, 0); $aedit->updatedb(); unset($aedit); if ($this->channel['autostatic']) { arc_static($aid); unset($arc); } } return true; }