专注于高品质PHP技术等信息服务于一体 [STIEMAP] [RSS]

百度提供的广告:
PHP
当前位置:首页 > 技术文档 > PHP >  > 
织梦CMS后台二次开发

后台操作的时普通用户不应该看到  更改 移动 删除 

<?php
if(!defined('DEDEINC')) exit('Request Error!');

require_once(DEDEINC."/channelunit.func.php");

class TypeUnit
{
    var $dsql;
    var $artDir;
    var $baseDir;
    var $idCounter;
    var $idArrary;
    var $shortName;
    var $CatalogNums;

    //php5构造函数
    function __construct()
    {
        $this->idCounter = 0;
        $this->artDir = $GLOBALS['cfg_cmspath'].$GLOBALS['cfg_arcdir'];
        $this->baseDir = $GLOBALS['cfg_basedir'];
        $this->shortName = $GLOBALS['art_shortname'];
        $this->idArrary = '';
        $this->dsql = 0;
    }

    function TypeUnit()
    {
        $this->__construct();
    }

    //清理类
    function Close()
    {
    }

    //获取所有栏目的文档ID数
    function UpdateCatalogNum()
    {
        $this->dsql->SetQuery("SELECT typeid,count(typeid) as dd FROM `qrx_arctiny` where arcrank <>-2 group by typeid");
        $this->dsql->Execute();
        while($row = $this->dsql->GetArray())
        {
            $this->CatalogNums[$row['typeid']] = $row['dd'];
        }
    }

    function GetTotalArc($tid)
    {
        if(!is_array($this->CatalogNums))
        {
            $this->UpdateCatalogNum();
        }
        if(!isset($this->CatalogNums[$tid]))
        {
            return 0;
        }
        else
        {
            $totalnum = 0;
            $ids = explode(',',GetSonIds($tid));
            foreach($ids as $tid)
            {
                if(isset($this->CatalogNums[$tid]))
                {
                    $totalnum += $this->CatalogNums[$tid];
                }
            }
            return $totalnum;
        }
    }

    //----读出所有分类,在类目管理页(list_type)中使用----------
    function ListAllType($channel=0,$nowdir=0)
    {
        global $cfg_admin_channel, $admin_catalogs;
        $this->dsql = $GLOBALS['dsql'];
       
        //检测用户有权限的顶级栏目
        if($cfg_admin_channel=='array')
        {
            $admin_catalog = join(',', $admin_catalogs);
            $this->dsql->SetQuery("Select reid From `qrx_arctype` where id in($admin_catalog) group by reid ");
            $this->dsql->Execute();
            $topidstr = '';
            while($row = $this->dsql->GetObject())
            {
                if($row->reid==0) continue;
                $topidstr .= ($topidstr=='' ? $row->reid : ','.$row->reid);
            }
            $admin_catalog .= ','.$topidstr;
            $admin_catalogs = explode(',', $admin_catalog);
            $admin_catalogs = array_unique($admin_catalogs);
        }

        $this->dsql->SetQuery("Select id,typedir,typename,ispart,sortrank,ishidden From `qrx_arctype` where reid=0 order by sortrank");
        $this->dsql->Execute(0);
        while($row = $this->dsql->GetObject(0))
        {
            if( $cfg_admin_channel=='array' && !in_array($row->id, $admin_catalogs) )
            {
                continue;
            }
            $typeDir = $row->typedir;
            $typeName = $row->typename;
            $ispart = $row->ispart;
            $id = $row->id;
            $rank = $row->sortrank;
            if($row->ishidden=='1')
            {
                $nss = "<font color='red'>[隐]</font>";
            }
            else
            {
                $nss = '';
            }
            echo "<table width='100%' border='0' cellspacing='0' cellpadding='2'>\r\n";
            //普通列表
            if($ispart==0)
            {
                    echo "  <tr bgcolor='#F5FAE4'>\r\n";
                    echo "  <td width='2%' class='bline'><img style='cursor:pointer' onClick=\"LoadSuns('suns".$id."',$id);\" src='img/dedeexplode.gif' width='11' height='11'></td>\r\n";
                    echo "  <td class='bline'><table width='98%' border='0' cellspacing='0' cellpadding='0'><tr><td width='50%'><input class='np' type='checkbox' name='tids[]' value='{$id}'><a href='catalog_do.php?cid=".$id."&dopost=listArchives' oncontextmenu=\"CommonMenu(event,this,$id,'".urlencode($typeName)."')\">{$nss}".$typeName."[ID:".$id."]</a>(文档:".$this->GetTotalArc($id).")  <a onclick=\"AlertMsg('快捷编辑窗口','$id');\" href=\"javascript:;\"><img src='img/write2.gif'/></a>";
                    echo "    </td><td align='right'>";
                    echo "<a href='{$GLOBALS['cfg_phpurl']}/list.php?tid={$id}' target='_blank'>预览</a>";
                    echo "|<a href='catalog_do.php?cid={$id}&dopost=listArchives'>内容</a>";
                    echo "|<a href='catalog_add.php?id={$id}'>增加子类</a>";
                    echo "|<a href='catalog_edit.php?id={$id}'>更改</a>";
                    echo "|<a href='catalog_do.php?dopost=moveCatalog&typeid={$id}'>移动</a>";
                    echo "|<a href='catalog_del.php?id={$id}&typeoldname=".urlencode($typeName)."'>删除</a>";
                    echo "&nbsp; <input type='text' name='sortrank{$id}' value='{$rank}' style='width:25;height:16'></td></tr></table></td></tr>\r\n";
            }
            //带封面的频道
            else if($ispart==1)
            {
                    echo "  <tr bgcolor='#F5FAE4'>\r\n";
                    echo "  <td width='2%' class='bline'><img style='cursor:pointer' onClick=\"LoadSuns('suns".$id."',$id);\" src='img/dedeexplode.gif' width='11' height='11'></td>\r\n";
                    echo "  <td class='bline'><table width='98%' border='0' cellspacing='0' cellpadding='0'><tr><td width='50%'><input class='np' type='checkbox' name='tids[]' value='{$id}'><a href='catalog_do.php?cid=".$id."&dopost=listArchives' oncontextmenu=\"CommonMenuPart(event,this,$id,'".urlencode($typeName)."')\">{$nss}".$typeName."[ID:".$id."]</a>  <a onclick=\"AlertMsg('快捷编辑窗口','$id');\" href=\"javascript:;\"> <img src='img/write2.gif'/> </a>";
                    echo "    </td><td align='right'>";
                 /*    echo "<a href='{$GLOBALS['cfg_phpurl']}/list.php?tid={$id}' target='_blank'>预览</a>";
                    echo "|<a href='catalog_do.php?cid={$id}&dopost=listArchives'>内容</a>";
                    echo "|<a href='catalog_add.php?id={$id}'>增加子类</a>";
                    echo "|<a href='catalog_edit.php?id={$id}'>更改</a>";
                    echo "|<a href='catalog_do.php?dopost=moveCatalog&typeid={$id}'>移动</a>";
                    echo "|<a href='catalog_del.php?id={$id}&typeoldname=".urlencode($typeName)."'>删除</a>";
                    echo "&nbsp; <input type='text' name='sortrank{$id}' value='{$rank}' style='width:25;height:16'></td></tr></table></td></tr>\r\n";
               */
            }
            //独立页面
            else if($ispart==2)
            {
                    echo "  <tr height='24' bgcolor='#F5FAE4'>\r\n";
                    echo "  <td width='2%' class='bline2'><img style='cursor:pointer' onClick=\"LoadSuns('suns".$id."',$id);\" src='img/dedeexplode.gif' width='11' height='11'></td>\r\n";
                    echo "  <td class='bline2'><table width='98%' border='0' cellspacing='0' cellpadding='0'><tr><td width='50%'><input class='np' type='checkbox' name='tids[]' value='{$id}'><a href='catalog_edit.php?id=".$id."' oncontextmenu=\"SingleMenu(event,this,$id,'".urlencode($typeName)."')\">{$nss}".$typeName."[ID:".$id."]</a>  <a onclick=\"AlertMsg('快捷编辑窗口','$id');\" href=\"javascript:;\"><img src='img/write2.gif'/></a>";
                    echo "    </td><td align='right'>";
                /*    echo "<a href='{$typeDir}' target='_blank'>预览</a>";
                    echo "|<a href='catalog_edit.php?id={$id}'> </a>";
                    echo "|<a href='catalog_do.php?dopost=moveCatalog&typeid={$id}'>移动</a>";
                    echo "|<a href='catalog_del.php?id={$id}&typeoldname=".urlencode($typeName)."'>删除</a>";
                    echo "&nbsp; <input type='text' name='sortrank{$id}' value='{$rank}' style='width:25;height:16'></td></tr></table></td></tr>\r\n";
                  */           
            }
            echo "  <tr><td colspan='2' id='suns".$id."'>";
            $lastid = GetCookie('lastCid');
            if($channel==$id || $lastid==$id || isset($GLOBALS['exallct']) || $cfg_admin_channel=='array')
            {
                echo "    <table width='100%' border='0' cellspacing='0' cellpadding='0'>\r\n";
                $this->LogicListAllSunType($id," ");
                echo "    </table>\r\n";
            }
            echo "</td></tr>\r\n</table>\r\n";
        }
    }

    //获得子类目的递归调用
    function LogicListAllSunType($id,$step)
    {
        global $cfg_admin_channel, $admin_catalogs;
        $fid = $id;
        $this->dsql->SetQuery("Select id,reid,typedir,typename,ispart,sortrank,ishidden From `qrx_arctype` where reid='".$id."' order by sortrank");
        $this->dsql->Execute($fid);
        if($this->dsql->GetTotalRow($fid)>0)
        {
            while($row = $this->dsql->GetObject($fid))
            {
                if($cfg_admin_channel=='array' && !in_array($row->id, $admin_catalogs) )
                {
                    continue;
                }
                $typeDir = $row->typedir;
                $typeName = $row->typename;
                $reid = $row->reid;
                $id = $row->id;
                $ispart = $row->ispart;
                if($step==" ")
                {
                    $stepdd = 2;
                }
                else
                {
                    $stepdd = 3;
                }
                $rank = $row->sortrank;
                if($row->ishidden=='1')
                {
                    $nss = "<font color='red'>[隐]</font>";
                }
                else
                {
                    $nss = '';
                }

                //普通列表
                if($ispart==0)
                {
                    echo "<tr height='24' oncontextmenu=\"CommonMenu(event,this,$id,'".urlencode($typeName)."')\">\r\n";
                    echo "<td class='nbline'>";
                    echo "<table width='98%' border='0' cellspacing='0' cellpadding='0'>";
                    echo "<tr onMouseMove=\"javascript:this.bgColor='#FAFCE0';\" onMouseOut=\"javascript:this.bgColor='#FFFFFF';\"><td width='50%'>";
                    echo "<input class='np' type='checkbox' name='tids[]' value='{$id}'><a href='catalog_do.php?cid=".$id."&dopost=listArchives'>$step ·{$nss}".$typeName."[ID:".$id."]</a>(文档:".$this->GetTotalArc($id).")  <a onclick=\"AlertMsg('快捷编辑窗口','$id');\" href=\"javascript:;\"><img src='img/write2.gif'/></a>";
                    echo "</td><td align='right'>";
                    echo "<a href='{$GLOBALS['cfg_phpurl']}/list.php?tid={$id}' target='_blank'>预览</a>";
                    echo "|<a href='catalog_do.php?cid={$id}&dopost=listArchives'>内容</a>";
                    echo "|<a href='catalog_add.php?id={$id}'>增加子类</a>";
                    echo "|<a href='catalog_edit.php?id={$id}'>更改</a>";
                    echo "|<a href='catalog_do.php?dopost=moveCatalog&typeid={$id}'>移动</a>";
                    echo "|<a href='catalog_del.php?id={$id}&typeoldname=".urlencode($typeName)."'>删除</a>";
                    echo "&nbsp; <input type='text' name='sortrank{$id}' value='{$rank}' style='width:25;height:16'></td></tr></table></td></tr>\r\n";
                }

                //封面频道
                else if($ispart==1)
                {
                    echo " <tr height='24' oncontextmenu=\"CommonMenu(event,this,$id,'".urlencode($typeName)."')\">\r\n";
                    echo "<td class='nbline'><table width='98%' border='0' cellspacing='0' cellpadding='0'><tr onMouseMove=\"javascript:this.bgColor='#FAFCE0';\" onMouseOut=\"javascript:this.bgColor='#FFFFFF';\"><td width='50%'>";
                    echo "<input class='np' type='checkbox' name='tids[]' value='{$id}'><a href='catalog_do.php?cid=".$id."&dopost=listArchives'>$step ·{$nss}".$typeName."[ID:".$id."]</a>  <a onclick=\"AlertMsg('快捷编辑窗口','$id');\" href=\"javascript:;\"><img src='img/write2.gif'/></a>";
                    echo "</td><td align='right'>";
                    echo "<a href='{$GLOBALS['cfg_phpurl']}/list.php?tid={$id}' target='_blank'>预览</a>";
                    echo "|<a href='catalog_do.php?cid={$id}&dopost=listArchives'>内容</a>";
                    echo "|<a href='catalog_add.php?id={$id}'>增加子类</a>";
                    echo "|<a href='catalog_edit.php?id={$id}'>更改</a>";
                    echo "|<a href='catalog_do.php?dopost=moveCatalog&typeid={$id}'>移动</a>";
                    echo "|<a href='catalog_del.php?id={$id}&typeoldname=".urlencode($typeName)."'>删除</a>";
                    echo "&nbsp; <input type='text' name='sortrank{$id}' value='{$rank}' style='width:25;height:16'></td></tr></table></td></tr>\r\n";
                }

                //独立页面
                else if($ispart==2)
                {
                    echo "<tr height='24' oncontextmenu=\"SingleMenu(event,this,$id,'".urlencode($typeName)."')\">\r\n";
                    echo "<td class='bline2'><table width='98%' border='0' cellspacing='0' cellpadding='0'>";
                    echo "<tr onMouseMove=\"javascript:this.bgColor='#FAFCE0';\" onMouseOut=\"javascript:this.bgColor='#FFFFFF';\"><td width='50%'>";
                    echo "<input class='np' type='checkbox' name='tids[]' value='{$id}'><a href='catalog_do.php?cid=".$id."&dopost=listArchives'>$step ·{$nss}".$typeName."[ID:".$id."]</a>  <a onclick=\"AlertMsg('快捷编辑窗口','$id');\" href=\"javascript:;\"><img src='img/write2.gif'/></a>";
                    echo "</td><td align='right'>";
                    echo "<a href='{$typeDir}' target='_blank'>预览</a>";
                    echo "|<a href='catalog_edit.php?id={$id}'>更改</a>";
                    echo "|<a href='catalog_do.php?dopost=moveCatalog&typeid={$id}'>移动</a>";
                    echo "|<a href='catalog_del.php?id={$id}&typeoldname=".urlencode($typeName)."'>删除</a>";
                    echo "&nbsp; <input type='text' name='sortrank{$id}' value='{$rank}' style='width:25;height:16'></td></tr></table></td></tr>\r\n";
                }
                $this->LogicListAllSunType($id,$step." ");
            }
        }
    }

    //-----返回与某个目相关的下级目录的类目ID列表(删除类目或文章时调用)
    function GetSunTypes($id,$channel=0)
    {
        $this->dsql = $GLOBALS['dsql'];
        $this->idArray[$this->idCounter]=$id;
        $this->idCounter++;
        $fid = $id;
        if($channel!=0)
        {
            $csql = " And channeltype=$channel ";
        }
        else
        {
            $csql = "";
        }
        $this->dsql->SetQuery("Select id From `qrx_arctype` where reid=$id $csql");
        $this->dsql->Execute("gs".$fid);

        //if($this->dsql->GetTotalRow("gs".$fid)!=0)
        //{
        while($row=$this->dsql->GetObject("gs".$fid))
        {
            $nid = $row->id;
            $this->GetSunTypes($nid,$channel);
        }
        //}
        return $this->idArray;
    }

    //删除类目
    function DelType($id,$isDelFile)
    {
        $this->idCounter = 0;
        $this->idArray = "";
        $this->GetSunTypes($id);
        $query = "
        Select q_arctype.*,q_channeltype.typename as ctypename,
        q_channeltype.addtable
        From `qrx_arctype` left join q_channeltype
        on q_channeltype.id=q_arctype.channeltype
        where q_arctype.id='$id'
        ";
        $typeinfos = $this->dsql->GetOne($query);
        $topinfos = $this->dsql->GetOne("Select moresite,siteurl From `qrx_arctype` where id='".$typeinfos['topid']."'");
        if(!is_array($typeinfos))
        {
            return false;
        }
        $indir = $typeinfos['typedir'];
        $addtable = $typeinfos['addtable'];
        $ispart = $typeinfos['ispart'];
        $defaultname = $typeinfos['defaultname'];

        //删除数据库里的相关记录
        foreach($this->idArray as $id)
        {
            $myrow = $this->dsql->GetOne("Select * From `qrx_arctype` where id='$id'");
            if($myrow['topid']>0)
            {
                $mytoprow = $this->dsql->GetOne("Select moresite,siteurl From `qrx_arctype` where id='".$myrow['topid']."'");
                if(is_array($mytoprow) && !empty($mytoprow))
                {
                    foreach($mytoprow as $k=>$v)
                    {
                        if(!ereg("[0-9]",$k))
                        {
                            $myrow[$k] = $v;
                        }
                    }
                }
            }

            //删除目录和目录里的所有文件 ### 禁止了此功能
            //删除单独页面
            if($myrow['ispart']==2 && $myrow['typedir']=='')
            {
                if( is_file($this->baseDir.'/'.$myrow['defaultname']) )
                {
                    @unlink($this->baseDir.'/'.$myrow['defaultname']);
                }
            }

            //删除数据库信息
            $this->dsql->ExecuteNoneQuery("Delete From `qrx_arctype` where id='$id'");
            $this->dsql->ExecuteNoneQuery("Delete From `qrx_arctiny` where typeid='$id'");
            $this->dsql->ExecuteNoneQuery("Delete From `qrx_archives` where typeid='$id'");
            $this->dsql->ExecuteNoneQuery("Delete From `qrx_spec` where typeid='$id'");
            $this->dsql->ExecuteNoneQuery("Delete From `qrx_feedback` where typeid='$id'");
            if($addtable!="")
            {
                $this->dsql->ExecuteNoneQuery("Delete From $addtable where typeid='$id'");
            }
        }

        //删除目录和目录里的所有文件 ### 禁止了此功能
        //删除单独页面
        if($ispart==2 && $indir=="")
        {
            if( is_file($this->baseDir."/".$defaultname) )
            {
                @unlink($this->baseDir."/".$defaultname);
            }
        }
        @reset($this->idArray);
        $this->idCounter = 0;
        return true;
    }

    //---- 删除指定目录的所有文件
    function RmDirFile($indir)
    {
        if(!file_exists($indir)) return;
        $dh = dir($indir);
        while($file = $dh->read())
        {
            if($file == "." || $file == "..")
            {
                continue;
            }
            else if(is_file("$indir/$file"))
            {
                @unlink("$indir/$file");
            }
            else
            {
                $this->RmDirFile("$indir/$file");
            }
            if(is_dir("$indir/$file"))
            {
                @rmdir("$indir/$file");
            }
        }
        $dh->close();
        return(1);
    }
}
?>