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); 로 한방에 이루어집니다.

관련자료

등록된 댓글이 없습니다.
Today's proverb
행복해지고 싶다면, 잠시 동안만이라도 가슴에 손을 얹고 생각해 보라. 그러면 진정한 즐거움은, 발치에 돋아나는 잡초나 아침 햇살에 빛나는 꽃의 이술과 같이 우리 주변에 무수히 널려 있다는 것을 알 수 있을 것이다. 《하루 5분 생각이 인생을 결정한다 》 (이범준)