public function modify($db) { if (!isset($_GET['cid'])) { return prompt::warning('非法访问!'); } $cid = trim($_GET['cid']); $cid = (int) $cid; if (!isset($_POST['name']) || !isset($_POST['alias']) || !isset($_POST['parent']) || !isset($_POST['attr']) || !isset($_POST['describtion'])) { return prompt::info('非法访问!'); } if (!DIR_MODE) { if (!isset($_POST['dir'])) { return prompt::info('非法访问!'); } $dir = filter($db, $_POST['dir']); } if (($classname = filter($db, $_POST['name'])) == '') { return prompt::info('请填写栏目名称!'); } if (preg_match('@[\\|,]+@', $classname)) { return prompt::info('栏目名称中不能包含|,等字符!'); } if (($alias = filter($db, $_POST['alias'])) == '') { return prompt::info('请填写栏目别名!'); } if (!$this->filter_alias($alias)) { return prompt::info($this->error); } $attr = filter($db, $_POST['attr']); $describtion = filter($db, $_POST['describtion']); $sql = 'select pcid, classname, describtion, alias, isfinal, dir, tname from class where cid=\'' . $cid . '\''; $rs = $db->_query($sql); $class = $rs->fetch(); $fields = ''; $parent = trim($_POST['parent']); $parent = (int) $parent; if ($class['pcid'] == $parent) { if (DIR_MODE) { $dir = ''; if ($class['alias'] != $_POST['alias']) { $dir = $parent ? $class['dir'] : RELPATH; if (!file_exists(SITEPATH . $dir)) { return $this->prompt = $dir . '目录不存在,请检查是否误删除!'; } $thedir = $dir . '/' . $alias; if (file_exists(SITEPATH . $thedir)) { return prompt::info(SITEPATH . $thedir . '目录已经存在!'); } mydir::del(SITEPATH, $class['dir'] . '/' . $class['alias'], true); mkdir(SITEPATH . $thedir, 0777, true); $fields .= ', dir=\'' . $dir . '\''; $fields .= ', alias=\'' . $alias . '\''; } if ($class['isfinal']) { if ($class['isfinal'] != $attr) { $fields .= ', isfinal=\'0\''; mydir::del(SITEPATH, $class['dir'] . '/' . $class['alias']); $sql = "insert into recyclebin (cid, name, tname, `thetime`, `alias`, tables_num, records_num) values ('{$parent}', '{$class['classname']}', '{$class['tname']}', now(), '{$class['alias']}', '{$class['tables_num']}', '{$class['records_num']}')"; $db->insert($sql); } } else { if ($class['isfinal'] != $attr) { $fields .= ', isfinal=\'1\''; $this->_delete($db, $cid, false); $tname = $this->createtable($db); $fields .= ', tname=\'' . $tname . '\''; } } } else { if ($dir == '') { if ($parent) { $sql = "select classname, parentclass, dir, isfinal from class where cid={$parent}"; $result = $db->_query($sql, 1); $tclass = $result->fetch(); } $dir = isset($tclass) && $tclass['dir'] ? $tclass['dir'] : RELPATH; } else { if ($dir == '/') { $dir = ''; } elseif ($dir == '.') { $dir = RELPATH; } else { $dir = '/' . trim($dir, '/'); if (!file_exists(SITEPATH . $dir)) { return prompt::info(SITEPATH . $dir . '不是有效的目录!'); } } } $thedir = dirname($class['dir']); if ($thedir == $dir) { if ($class['alias'] != $alias) { $dir .= '/' . $alias; if (file_exists(SITEPATH . $dir)) { return prompt::info($dir . '目录已经存在!'); } mkdir(SITEPATH . $dir, 0777, true); $sql = 'insert into class_data (cid, old_dir, thetime) values (\'' . $cid . '\', \'' . $class['dir'] . '\', now())'; $db->insert($sql); $fields .= ', dir=\'' . $dir . '\''; $fields .= ', alias=\'' . $_POST['alias'] . '\''; } } else { $dir .= '/' . $alias; if (file_exists(SITEPATH . $dir)) { return prompt::info($dir . '目录已经存在!'); } mkdir(SITEPATH . $dir, 0777, true); $sql = 'insert into class_data (cid, old_dir, thetime) values (\'' . $cid . '\', \'' . $class['dir'] . '\', now())'; $db->insert($sql); $fields .= ', dir=\'' . $dir . '\''; $fields .= ', alias=\'' . $alias . '\''; } if ($class['isfinal']) { if ($class['isfinal'] != $attr) { $fields .= ', isfinal=\'0\''; $sql = "insert into recyclebin (cid, name, tname, `thetime`, `alias`) values ('{$parent}', '{$class['classname']}', '{$class['tname']}', now(), {$class['alias']})"; $db->insert($sql); } } else { if ($class['isfinal'] != $attr) { $fields .= ', isfinal=\'1\''; $this->_delete($db, $cid, false); $tname = $this->createtable($db); $fields .= ', tname=\'' . $tname . '\''; } } } if ($class['classname'] != $classname) { $fields .= ', classname=\'' . $classname . '\''; $parentclass = ''; } else { $parentclass = ''; } $this->modifysub($db, $cid, $parentclass, $dir); if ($class['describtion'] != $describtion) { $fields .= ',describtion=\'' . $describtion . '\''; } } else { if ($parent) { $sql = "select classname, parentclass, dir, isfinal, tname from class where cid={$parent}"; $result = $db->_query($sql); $tclass = $result->fetch(); $parentclass = $tclass['parentclass'] . '|' . $parent . ',' . $tclass['classname']; } else { $parentclass = ''; } if (DIR_MODE) { $dir = isset($tclass) ? $tclass['dir'] : RELPATH; } else { if ($dir == '') { $dir = isset($tclass) ? $tclass['dir'] : RELPATH; } else { if ($dir == '/') { $dir = ''; } elseif ($dir == '.') { $dir = RELPATH; } else { $dir = '/' . trim($dir, '/'); if (!file_exists(SITEPATH . $dir)) { return prompt::info(SITEPATH . $dir . '不是有效的目录!'); } } } } if (isset($tclass) && $tclass['isfinal']) { $sql = "update class set isfinal=0 where cid={$parent}"; $db->update($sql); $sql = "insert into recyclebin (cid, name, tname, `thetime`, `alias`) values ('{$parent}', '{$tclass['classname']}', '{$tclass['tname']}', now(), {$tclass['alias']})"; $db->insert($sql); if (DIR_MODE) { if (!mydir::del(SITEPATH, $dir)) { $this->prompt[] = mydir::$error; } } } $fields .= ', pcid=\'' . $parent . '\''; $fields .= ', parentclass=\'' . $parentclass . '\''; if (DIR_MODE) { mydir::del(SITEPATH, $class['dir'], true); if (!file_exists(SITEPATH . $dir)) { return prompt::info($dir . '目录不存在,请检查是否误删除!'); } $dir .= '/' . $alias; if (file_exists(SITEPATH . $dir)) { return prompt::info(SITEPATH . $dir . '目录已经存在!'); } mkdir(SITEPATH . $dir, 0777, true); if ($class['isfinal']) { if ($class['isfinal'] != $attr) { $fields .= ', isfinal=\'0\''; $sql = "insert into recyclebin (cid, name, tname, `thetime`, `alias`) values ('{$parent}', '{$class['classname']}', '{$class['tname']}', now(), {$class['alias']})"; $db->insert($sql); } } else { if ($class['isfinal'] == $attr) { $this->modifysub($db, $cid, $dir, $parentclass . '|' . $cid . ',' . $classname); } else { $fields .= ', isfinal=\'1\''; $this->_delete($db, $cid, false); $tname = $this->createtable($db); $fields .= ', tname=\'' . $tname . '\''; } } $fields .= ', dir=\'' . $dir . '\''; $fields .= ', alias=\'' . $alias . '\''; } else { if ($class['isfinal']) { if ($class['isfinal'] != $attr) { $fields .= ', isfinal=\'0\''; $sql = "insert into recyclebin (cid, name, tname, `thetime`, `alias`) values ('{$parent}', '{$class['classname']}', '{$class['tname']}', now(), {$class['alias']})"; $db->insert($sql); } } else { if ($class['isfinal'] == $attr) { $this->modifysub($db, $class['cid'], '', $parentclass . '|' . $cid . ',' . $name); } else { $fields .= ', isfinal=\'1\''; $this->_delete($db, $cid, false); $tname = $this->createtable($db); $fields .= ', tname=\'' . $tname . '\''; } } $thedir = dirname($class['dir']); if ($thedir == $dir) { if ($class['alias'] != $alias) { $dir .= '/' . $alias; if (file_exists(SITEPATH . $dir)) { return prompt::info($dir . '目录已经存在!'); } mkdir(SITEPATH . $dir, 0777, true); $sql = 'insert into class_data (cid, old_dir, thetime) values (\'' . $cid . '\', \'' . $class['dir'] . '\', now())'; $db->insert($sql); $fields .= ', dir=\'' . $dir . '\''; $fields .= ', alias=\'' . $alias . '\''; } } else { $dir .= '/' . $alias; if (file_exists(SITEPATH . $dir)) { return prompt::info($dir . '目录已经存在!'); } mkdir(SITEPATH . $dir, 0777, true); $sql = 'insert into class_data (cid, old_dir, thetime) values (\'' . $cid . '\', \'' . $class['dir'] . '\', now())'; $db->insert($sql); $fields .= ', dir=\'' . $dir . '\''; $fields .= ', alias=\'' . $alias . '\''; } } } $fields = substr($fields, 1); $sql = 'update class set' . $fields . ' where cid=\'' . $cid . '\''; $db->update($sql); }