<?php  if(!defined('DEDEINC')) exit('dedecms');
/**
 * 文件處理小助手
 *
 * @version        $Id: file.helper.php 1 2010-07-05 11:43:09Z tianya $
 * @package        DedeCMS.Helpers
 * @copyright      Copyright (c) 2007 - 2010, DesDev, Inc.
 * @license        http://help.dedecms.com/usersguide/license.html
 * @link           http://www.dedecms.com
 */

$g_ftpLink = false;

/**
 *  使用FTP方法創建文件夾目錄
 *
 * @param     string  $truepath  真實目標地址
 * @param     string  $mmode  創建模式
 * @param     string  $isMkdir  是否創建目錄
 * @return    bool
 */
if ( ! function_exists('FtpMkdir'))
{
    function FtpMkdir($truepath,$mmode,$isMkdir=true)
    {
        global $cfg_basedir,$cfg_ftp_root,$g_ftpLink;
        OpenFtp();
        $ftproot = preg_replace('/'.$cfg_ftp_root.'$/', '', $cfg_basedir);
        $mdir = preg_replace('/^'.$ftproot.'/', '', $truepath);
        if($isMkdir)
        {
            ftp_mkdir($g_ftpLink, $mdir);
        }
        return ftp_site($g_ftpLink, "chmod $mmode $mdir");
    }
}

/**
 *  改變目錄模式
 *
 * @param     string  $truepath  真實地址
 * @param     string  $mmode   模式
 * @return    bool
 */
if ( ! function_exists('FtpChmod'))
{
    function FtpChmod($truepath, $mmode)
    {
        return FtpMkdir($truepath, $mmode, false);
    }
}


/**
 *  打開FTP鏈接,打開之前確保已經設置好了FTP相關的配置信息
 *
 * @return    void
 */
if ( ! function_exists('OpenFtp'))
{
    function OpenFtp()
    {
        global $cfg_basedir,$cfg_ftp_host,$cfg_ftp_port, $cfg_ftp_user,$cfg_ftp_pwd,$cfg_ftp_root,$g_ftpLink;
        if(!$g_ftpLink)
        {
            if($cfg_ftp_host=='')
            {
                echo "由於你的站點的PHP配置存在限制，程序嘗試用FTP進行目錄操作，你必須在後台指定FTP相關的變量！";
                exit();
            }
            $g_ftpLink = ftp_connect($cfg_ftp_host,$cfg_ftp_port);
            if(!$g_ftpLink)
            {
                echo "連接FTP失敗！";
                exit();
            }
            if(!ftp_login($g_ftpLink,$cfg_ftp_user,$cfg_ftp_pwd))
            {
                echo "登陸FTP失敗！";
                exit();
            }
        }
    }
}


/**
 *  關閉FTP鏈接
 *
 * @return    void
 */
if ( ! function_exists('CloseFtp'))
{
    function CloseFtp()
    {
        global $g_ftpLink;
        if($g_ftpLink)
        {
            @ftp_quit($g_ftpLink);
        }
    }
}


/**
 *  創建所有目錄
 *
 * @param     string  $truepath  真實地址
 * @param     string  $mmode   模式
 * @return    bool
 */
if ( ! function_exists('MkdirAll'))
{
    function MkdirAll($truepath,$mmode)
    {
        global $cfg_ftp_mkdir,$isSafeMode,$cfg_dir_purview;
        if( $isSafeMode || $cfg_ftp_mkdir=='Y' )
        {
            return FtpMkdir($truepath, $mmode);
        }
        else
        {
            if(!file_exists($truepath))
            {
                mkdir($truepath, $cfg_dir_purview);
                chmod($truepath, $cfg_dir_purview);
                return true;
            }
            else
            {
                return true;
            }
        }
    }
}

/**
 *  更改所有模式
 *
 * @access    public
 * @param     string  $truepath  文件路徑
 * @param     string  $mmode   模式
 * @return    string
 */
if ( ! function_exists('ChmodAll'))
{
    function ChmodAll($truepath,$mmode)
    {
        global $cfg_ftp_mkdir,$isSafeMode;
        if( $isSafeMode || $cfg_ftp_mkdir=='Y' )
        {
            return FtpChmod($truepath, $mmode);
        }
        else
        {
            return chmod($truepath, '0'.$mmode);
        }
    }
}


/**
 *  創建目錄
 *
 * @param     string  $spath  創建的文件夾
 * @return    bool
 */
if ( ! function_exists('CreateDir'))
{
    function CreateDir($spath)
    {
        if(!function_exists('SpCreateDir'))
        {
            require_once(DEDEINC.'/inc/inc_fun_funAdmin.php');
        }
        return SpCreateDir($spath);
    }
}

/**
 *  寫文件
 *
 * @access    public
 * @param     string  $file  文件名
 * @param     string  $content  內容
 * @param     int  $flag   標識
 * @return    string
 */
if ( ! function_exists('PutFile'))
{
    function PutFile($file, $content, $flag = 0)
    {
        $pathinfo = pathinfo ( $file );
        if (! empty ( $pathinfo ['dirname'] ))
        {
            if (file_exists ( $pathinfo ['dirname'] ) === FALSE)
            {
                if (@mkdir ( $pathinfo ['dirname'], 0777, TRUE ) === FALSE)
                {
                    return FALSE;
                }
            }
        }
        if ($flag === FILE_APPEND)
        {
            return @file_put_contents ( $file, $content, FILE_APPEND );
        }
        else
        {
            return @file_put_contents ( $file, $content, LOCK_EX );
        }
    }
}

/**
 *  用遞歸方式刪除目錄
 *
 * @access    public
 * @param     string    $file   目錄文件
 * @return    string
 */
if ( ! function_exists('RmRecurse'))
{
    function RmRecurse($file)
    {
        if (is_dir($file) && !is_link($file))
        {
            foreach(glob($file . '/*') as $sf)
            {
                if (!RmRecurse($sf))
                {
                    return false;
                }
            }
            return @rmdir($file);
        } else {
            return @unlink($file);
        }
    }
}


