PHP & Others

파일 처리 Class

컨텐츠 정보

본문

소스

<?
class Filecontrol
{
    var $objCommon;
    var $sFilename;

    function Filecontrol()
    {
        $this->objCommon = $GLOBALS[objCommon];
    }

    // ------------------------------------------------------------------------
    // 파일의 기준 인덱스를 설정하는 파일 경로를 지정하면 list.cgi로 생성
    // ------------------------------------------------------------------------
    function number($sSaveRoot)
    {
        if(!is_file("$sSaveRoot/list.cgi"))
        {
            $fp = fopen( "$sSaveRoot/list.cgi", w );

            if(flock($fp, LOCK_EX))
            {
                fputs( $fp, "1\\n" );
                flock( $fp, LOCK_UN);
            }
            else
            {
                $this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
            }

            fclose($fp);
           
            $sFilename = 1;
        }
        else
        {
            $aList = file("$sSaveRoot/list.cgi");
            $sFilename = chop($aList[0]) + 1;
            $fp = fopen("$sSaveRoot/list.cgi", "w");
           
            if(flock( $fp, LOCK_EX))
            {
                fwrite($fp, "$sFilename\\n");
                foreach($aList as $value)
                {
                    fwrite($fp, $value);
                }
                flock( $fp, LOCK_UN);
            }
            else
            {
                $this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
            }

            fclose($fp);
        }

        $this->sFilename = $sFilename;
    }




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

        $sReturnTxt .= "<?php\\n";

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

        $fp = fopen("$sSaveRoot/$this->sFilename.php", w);
        if(flock( $fp, LOCK_EX))
        {
            fputs($fp,$sReturnTxt);
            flock( $fp, LOCK_UN);
        }
        else
        {
            $this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
        }
        fclose($fp);
    }

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

        $sReturnTxt .= "<?php\\n";
        foreach( $aData as $item => $value )
        {
            #$value=addslashes( $value );
            $sReturnTxt .= "$"."$item = \\"$value\\"; \\n";
        }
        $sReturnTxt .= "?>";
       
        $fp = fopen("$sSaveRoot/$sFileName.php", w);
        if(flock( $fp, LOCK_EX))
        {
            fputs($fp,$sReturnTxt);
            flock($fp, LOCK_UN);
        }
        else
        {
            $this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
        }
       
        fclose($fp);
    }
   
    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);
        if(flock( $fp, LOCK_EX))
        {
            fputs($fp,$sReturnTxt);
            flock($fp, LOCK_UN);
        }
        else
        {
            $this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
        }
        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");
        if(flock( $fp, LOCK_EX))
        {
            foreach($aList as $value)
            {
                $value = trim($value);
                if($nNO != $value)
                {
                    fwrite($fp, "$value\\n");
                }
            }
            flock($fp, LOCK_UN);
        }
        else
        {
            $this->objCommon->msg('처리를 할수 없습니다. 다시한번 실행해주세요', null); // close, none
        }
        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;
    }

    // 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;
}
?>

만든지 좀 되어서 올립니다 버그같은건 거즘 없는것 같군요 킴스파일 보드 쓰다가 거기 바탕으로 만들어 본것입니다. 아무쪼록 유용하게 사용하시길

파일 생성은 $objFctl->insert($_POST); 로 한방에 이루어집니다.

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
해가 들면 어떻고, 바람이 불면 어떻고, 눈이 오면 어떠랴. 해가 들어주어도 고맙고, 바람이 불어주어도 고맙고, 눈이 와주어도 고마울 뿐. 그렇다, 고맙지 않은 것이 없다. 밤은 밤이어서 고맙고, 새벽은 새벽이어서 고맙고, 낮은 낮이어서 고맙다. 아, 고마운 삼라만상이여! (정채봉)