コード例 #1
0
ファイル: class.category.php プロジェクト: NewMyCMS/MyCMS
 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);
 }