Web/PHP

[self] 클래스 파일컨트롤

aucd29 2013. 9. 26. 21:38
<?
class Filecontrol
{
    var $objCommon;
    var $sFilename;

    function number( $sSaveRoot )
    {
        if( !is_file("$sSaveRoot/list.cgi") )
        {
            $fp = fopen( "$sSaveRoot/list.cgi", w );
            fputs( $fp, "1\n" );
            $sFilename = 1;
        }
        else
        {
            $aList = file("$sSaveRoot/list.cgi");
            $sFilename = chop($aList[0]) + 1;
            $fp = fopen("$sSaveRoot/list.cgi", "w");
            fwrite($fp, "$sFilename\n");
            
            foreach( $aList as $value )
            {
                fwrite($fp, $value);
            }
            fclose($fp);
        }

        $this->sFilename = $sFilename;
    }

    function insert( $sSaveRoot, &$aData )
    {
        
        $this->number( $sSaveRoot );
    
        $aData[no] = $this->sFilename;
        $aData[wdate] = date(Ymd);

        $sReturnTxt .= "<?\n";

        foreach( $aData as $item => $value )
        {
            # $value=addslashes( $value ); php 버전 업으로 인한 불필요로서 없앰
            $sReturnTxt .= "$"."$item = \"$value\"; \n";
        }
        $sReturnTxt .= "\n?>";

        $fp = fopen( "$sSaveRoot/$this->sFilename.php", w );
        fputs( $fp,$sReturnTxt);
        fclose( $fp );

        if( $fp )
        {
            return TRUE;
        }
        else
        {
            return FALSE;
        }
    }

    function insert2( $sSaveRoot, &$aData, $sFileName )
    {
        $aData[wdate] = date(Ymd);

        $sReturnTxt .= "<?\n";
        foreach( $aData as $item => $value )
        {
            #$value=addslashes( $value );
            $sReturnTxt .= "$"."$item = \"$value\"; \n";
        }
        $sReturnTxt .= "\n?>";

        $fp = fopen( "$sSaveRoot/$sFileName.php", w );
        fputs( $fp,$sReturnTxt);
        fclose( $fp );

        if( $fp )
        {
            return TRUE;
        }
        else
        {
            return FALSE;
        }
    }
    
    function modify( $sSaveRoot, &$aData, $sFilename )
    {
        $sReturnTxt .= "<?\n";
        foreach( $aData as $item => $value )
        {
            $value=addslashes( $value );
            $sReturnTxt .= "$"."$item = \"$value\"; \n";
        }
        $sReturnTxt .= "\n?>";

        $fp = fopen( "$sSaveRoot/$sFilename.php", w );
        fputs( $fp,$sReturnTxt);
        fclose( $fp );

        if( $fp )
        {
            return TRUE;
        }
        else
        {
            return FALSE;
        }
    }

    function delete( $nNO, $sSaveRoot = './data' )
    {
        $aList = file("$sSaveRoot/list.cgi"); //리스트 파일에서 번호 지우기

        $fp = fopen("$sSaveRoot/list.cgi", "w");
        foreach( $aList as $value )
        {
            $value = trim( $value );
            if( $nNO != $value )
            {
                fwrite($fp, "$value\n");
            }
        }
        fclose($fp);

        if( @unlink("$sSaveRoot/$nNO.php") )
        {
            return TRUE;
        }
        else
        {
            return FALSE;
        }
    }

    function delDir( $dir )
    {
        $current_dir = opendir($dir);
        while($entryname = readdir($current_dir))
        {
            if(is_dir("$dir/$entryname") and ($entryname != "." and $entryname!=".."))
            {
                $this->delDir("${dir}/${entryname}");
            }
            else if($entryname != "." and $entryname!="..")
            {
                unlink("${dir}/${entryname}");
            }
        }
        closedir($current_dir);
        rmdir(${dir});
    }

    function readData( $sDir, $sType = NULL )
    {
        $dbdir = opendir($sDir);
        
        # 디렉토리만 찾기
        if( $sType == 'dir' )
        {
            while($data = readdir($dbdir))
            {
                if(is_dir("$sDir/$data") && $data != "." && $data != "..")
                {
                    $rtn[] = $data;
                }
            }
        }
    
        # 디렉토리 파일만 찾기
        else if( $sType == 'file' )
        {
            while($data = readdir($dbdir))
            {
                if( $data != "." && $data != ".." && !is_dir("$sDir/$data") )
                {
                    $rtn[] = $data;
                }
            }
        }

        # 파일/디렉토리 찾기
        else
        {
            while($data = readdir($dbdir))
            {
                if( $data != "." && $data != "..")
                {
                    $rtn[] = $data;
                }
            }
        }
        closedir( $dbdir );
        return $rtn;
    }

    function obstart( $sBase, $sTargeRoot, $sTargetName )
    {
        ob_start();
        include_once "$sBase";
        $result = ob_get_contents();
        ob_end_clean();
        $fp = fopen( "$sTargeRoot/$sTargetName", w );
        fputs( $fp,$result);
        fclose( $fp );
    }

    # 2003-12-06 현재 원하는 디렉토리의 퍼미션 가져오기
    function getPermition( $sObj )
    {
        return substr(decoct(fileperms($sObj)),2,3);
    }


    # 2003-12-06 지금 쓰고있는 디렉토리를 리턴
    function getSelfDir( $sRoot )
    {
        $sBasename = basename($sRoot);
        $RTN = str_replace( '/'.$sBasename, '', $sRoot );
        return $RTN;
    }
}

if( !$objFctl )
{
    $objFctl = & new Filecontrol;
}
?>