HEX
Server: Apache
System: Linux sg241.singhost.net 2.6.32-896.16.1.lve1.4.51.el6.x86_64 #1 SMP Wed Jan 17 13:19:23 EST 2018 x86_64
User: honghock (909)
PHP: 8.0.30
Disabled: passthru,system,shell_exec,show_source,exec,popen,proc_open
Upload Files
File: //opt/cpanel/ea-php54/root/usr/share/pear/RVSeagullMod/lib/RVSGL/CpHandle/NocpUser.php
<?php
require_once dirname(__FILE__) . '/InterfaceForUser.php';
require_once dirname(__FILE__) . '/NocpLibs.php';

class CpHandle_NocpUser extends CpHandle_NocpLibs implements CpHandle_InterfaceForUser
{

	public function CpHandle_NocpUser()
	{
         parent::SGL_Manager();
	}

    public function init()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    }

    public function getLogoutUrl()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	return '/user/login/action/logout/';
    }

    public function definedModulePathConfig($moduleName)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return  SGL_MOD_DIR . '/' . $moduleName . '/conf.ini';
    }

    public function setCookieAndRedirect()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	return false;

    }

    public function detectPathPHP()
    {
		SGL::logMessage(null, PEAR_LOG_DEBUG);
		return false;
    }

    public function isValidBuyAccountUrl()
    {
		SGL::logMessage(null, PEAR_LOG_DEBUG);
    	return false;
    }

	public function doAddCronJob()
	{
		return "";
	}

    public function getUrlBackToTryout()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	 return false;
    }

    public function isValidClearCacheAndRVSiteFIX()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	return false;
    }

    public function isValidIncludeFileLang($aConfTemplateList)
    {
       return  false;
    }

    public function isNotTryout()
    {
    	//log loop SGL::logMessage(null, PEAR_LOG_DEBUG);
        return true;
    }

    public function isVaildTemplatePrivate()
    {
		//SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    public function isValidDataHomeReplace($data)
    {
		SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    public function actionAJExternal($url)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    public function isRecordPublishProject()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    /**
     * user run setup แล้วมีปัญหาเรียก function ในฝั่ง admin
     */
    /** START For Admin **/
    public function listAccts($owner=null)
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	$aUserList = array('pornthip', 'darawan', 'puttipong', 'duangdao', 'witoon', 'pharadol'
            , 'apiruk', 'siwakorn', 'tanawat', 'parinya', 'user1', 'user2', 'user3', 'user4', 'user5'
            , 'user6', 'user7', 'resellerRoute', 'reseller', 'reseller2');
        return $aUserList;
    }

    public function getResellers()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	return array('reseller' ,'reseller1','reseller2','reseller3','reseller4','reseller5','reseller6','reseller7');
    }
  /** END For Admin **/

    /**
    * no process in cpanel
    * nocp is process
    */
    public function isValidTemplateItemPath($templateUserId, $templateItemFolder)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return RvsLibs_Template::isValidTemplate($templateUserId, $templateItemFolder);
    }

    public function isLicenseValid()
    {
    	return false;
    }

    public function getPathPHPsuexec()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    public function getProjectDbMissing($userID)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        require_once dirname(dirname(__FILE__)) . '/RestoreProjectDbMissingMgr.php';
        $oRestorePj = new RestoreProjectDbMissingMgr();
        $aProjectNotInDb = $oRestorePj->getProjectNotInDbByUserId($userID, REAL_PROJECT_PATH);
        return $aProjectNotInDb;
    }

    public function isAllowExportProject()
    {
        return (isset($this->conf['Admin']['Owner']['AllowExportProject']))
        	? $this->conf['Admin']['Owner']['AllowExportProject']
        	: '0';
    }

    public function isAllowImportProject()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return (isset($this->conf['Admin']['Owner']['AllowImportProject']))
        	? $this->conf['Admin']['Owner']['AllowImportProject']
        	: '0';
    }

    public function getHomeDir($username=RVS_USER_NAME)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return '/home/' . $username;
    }

    public function getCPDATA($username=RVS_USER_NAME)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
    	$aCpdata = array();
    	if (file_exists('/var/cpanel/users/' . $username)) {
    		/// สามารถจำลองข้อมูล user ตามระบบ cPanel ได้
            $aCpLine = RvsLibs_File::file('/var/cpanel/users/' . $username);
            foreach ($aCpLine as $cpLine) {
                $cpLine = RvsLibs_String::preg_replace("/\r|\n/", "", $cpLine);
                list($cpKey, $cpValue) = RvsLibs_String::dbeExplode("=", $cpLine);
                if (isset($cpKey)) {
                    $aCpdata[$cpKey] =  $cpValue;
                }
            }
    	} else {
    		/// หากไม่มีการจำลองให้ใช้ค่านี้ เป็น defauft
            $aCpdata = array (
                'BWLIMIT'=>'0',
                'DNS'=>'rvglobalsoft.net',
                'FEATURELIST'=>'rvskin',
                'IP'=>'192.168.1.111',
                'LANG'=>'english',
                'MAXADDON'=>'0',
                'MAXFTP'=>'unlimited',
                'MAXLST'=>'unlimited',
                'MAXPARK'=>'0',
                'MAXPOP'=>'unlimited',
                'MAXSQL'=>'unlimited',
                'MAXSUB'=>'unlimited',
                'OWNER'=>'root',
                'PLAN'=>'rvdevelop',
                'RS'=>'rvblue',
                'STARTDATE'=>'1151982059',
                'DNS2'=>'tryout.clientroot.rvglobalsoft.net'
            );
    	}

        return $aCpdata;
    }

    public function getUserDNS($all=0)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
    	$aDNS = array();
        if ($all == 1) {
            foreach ($GLOBALS['NOCP']['CPDATA'] as $key=>$val) {
                if (RvsLibs_String::preg_match('/^DNS/',$key,$match)) {
                    array_push($aDNS, $val);
                }
            }
        } else {
            $aDNS = (isset($GLOBALS['NOCP']['CPDATA']['DNS']))
                        ? $GLOBALS['NOCP']['CPDATA']['DNS']
                        : array();
        }

        return $aDNS;
    }

    public function getRealDIRbyDomain($domain)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
    	$subDomainPath = array();

        if (isset($_SERVER['DOCUMENT_ROOT'])) {
            $subDomainPath['DIR'] = $_SERVER['DOCUMENT_ROOT'];
        } elseif (!RvsLibs_String::preg_match('/\/public_html/i', RVS_USER_HOME, $match)) {
            $subDomainPath['DIR'] = RvsLibs_File::buildPath(array(RVS_USER_HOME, 'public_html'));
        } else {
            $subDomainPath['DIR'] = RVS_USER_HOME;
        }

        return $subDomainPath;
    }

    public function getDatabaseInfomation()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
        $res = $this->runCpOnIframe("getDatabaseInfomation", '');

        /// On error return PEAR::Error
        if (SGL::isError($res) === true) return $res;

        $aDBConf = $this->fetchDBInfomation($res);

        return $aDBConf;
    }

    public function doCreateDatabase($dbname)
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
        $codeTag = <<<EOF
[data]
dbname={$dbname}
EOF;

        return $this->_validateStatus(
            $this->fetchStatus(
                $this->runCpOnIframe('doCreateDatabase', $codeTag)
        ));
    }

    public function doCreateDatabaseUser($username, $passwd)
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
        $codeTag = <<<EOF
[data]
username={$username}
password={$passwd}
EOF;
        return $this->_validateStatus(
            $this->fetchStatus(
                $this->runCpOnIframe('doCreateDatabaseUser', $codeTag)
        ));
    }

    public function doAddDBUser($dbname, $username)
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
        $codeTag = <<<EOF
[data]
dbname={$dbname}
username={$username}
EOF;

        return $this->_validateStatus(
            $this->fetchStatus(
                $this->runCpOnIframe('doAddDBUser', $codeTag)
        ));
    }

    public function doDeleteDatabase($dbname)
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
        $codeTag = <<<EOF
[data]
dbname={$dbname}
EOF;

        return $this->_validateStatus(
            $this->fetchStatus(
                $this->runCpOnIframe('doDeleteDatabase', $codeTag)
        ));
    }

    public function doDeleteDatabaseUser($username)
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
        $codeTag = <<<EOF
[data]
username={$username}
EOF;

        return $this->_validateStatus(
            $this->fetchStatus(
                $this->runCpOnIframe('doDeleteDatabaseUser', $codeTag)
        ));
    }

    /**
     * input $dbname
     * check prefix and add prefix , return new dbname have prefix
     */
    public function getRealFormatDBName($dbName)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return (defined('DATABASE_PREFIX') && DATABASE_PREFIX === false)
                            ? RVS_USER_NAME . $dbName
                            : RVS_USER_NAME . '_' . $dbName;
    }

    /// Usage Disk Quota Functions
    public function getMaxUserQuota()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	return 'unlimited';
    }

    public function getUserQuota()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	return 100;
    }

	public function getDocroot()
	{
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return $_SERVER['DOCUMENT_ROOT'];
	}

	public function getCpUserInfo()
	{
	    SGL::logMessage(null, PEAR_LOG_DEBUG);
	    $oCpData = new stdClass();

	    $oCpData->quotaused = 100;
	    $oCpData->maxquota = 'unlimited';
	    $oCpData->docroot = $_SERVER['DOCUMENT_ROOT'];
        return $oCpData;
	}

    /**
     * This function process in tryout mode.
     * @author siwakorn@rvglobalsoft.com
     * @param $isPhpSuExec ( 0/1 )
     * @return <true>/<false>
     */
    public function changePermissionRVSPreview($isPhpSuExec)
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }



    ############# Siwakorn Modify New Function ############
    public function registerButtonOnlineCounter()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    /**
     * Make folder component in scripts project path.
     *
     * @author Puttipong <puttipong@rvglobalsoft.com>
     * @param String $pathComponentName
     * @return mix PEAR error or Boolean True
     */
    public function makeFolderComponent($pathComponentName = null)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        if (isset($pathComponentName) === true && is_dir($pathComponentName) === false) {
            $resMkdir = RvsLibs_System::mkDir(array('-p', $pathComponentName));
            if (SGL::isError($resMkdir) === true) {
                return $resMkdir;
            }
        }
        return true;
    }

    public function isDisableBlogComponent($aTestOption = array())
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	$license = isset($aTestOption['license'])
	    	? $aTestOption['license']
	    	: RvsLibs_License::getSitebuilderLicense();
    	$isOwnerAllowComponent = isset($aTestOption['isOwnerAllowBlog'])
	    	? $aTestOption['isOwnerAllowBlog']
	    	: RvsLibs_Component::isOwnerAllowComponent(RvsLibs_User::getOwnerId(), 'Blog');
    	if (strtolower($license) != 'pro') {
    		return 2;
    	} elseif ($isOwnerAllowComponent === false) {
    		return 3;
    	} else {
    		return 0;
    	}
    }

    public function getDatabaseEditURL()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
		$hostname = RvsLibs_Net::getServerAddress();
		$aSetOutput = array(
    		'UrlManageDatabase' => (SSL_MODE)
    									? 'https://' . $hostname . '/phpmyadmin'
    									: 'http://' . $hostname . '/phpmyadmin'
    	);
    	return RvsLibs_String::translate('prepare your database','vprintf', $aSetOutput);
    }

    /**
     * (non-PHPdoc)
     * @author
     * @return <string>path
     */
    public function getTmpPath()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	return '/tmp';
    }

    /**
     * (non-PHPdoc)
     * @author
     * @param <string>$action, <array>$aTemplateOption
     * @return <array>$aTemplatePathUrl
     */
	public function getTemplatePathUrl($action='edit', $aTemplateOption=array())
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        if (count($aTemplateOption)
        && (RvsLibs_Template::isValidTemplate($aTemplateOption['templateUserId'], $aTemplateOption['templateItemFolder']) )) {
            $aTemplatePathUrl = ($action == 'edit')
                               ? RvsLibs_Template::getImportedTemplatePathUrlAdmin()
                               : RvsLibs_Template::getImportedTemplatePathUrlUser($aTemplateOption['templateUserId']);
        } else {
            $aTemplatePathUrl['path'] = TEMPLATE_PATH;
            $aTemplatePathUrl['url'] = TEMPLATE_URL;
        }
        return $aTemplatePathUrl;
    }

    /**
     * (non-PHPdoc)
     * @author
     * @return true/false
     */
    public function skipValidTemplate()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	return false;
    }

    /**
     * (non-PHPdoc)
     * @author
     * @param $fileName
     * @return $TypeFileEncode
     */
    public function getTypeFileEncode($fileName)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
    	$TypeFileEncode = '';
    	if (RvsLibs_System::function_exists('finfo_open') && RvsLibs_System::function_exists('finfo_file')) {
    		$finfo = @finfo_open(FILEINFO_MIME_ENCODING);
    		$TypeFileEncode = @finfo_file($finfo, $fileName);
    	}
    	return $TypeFileEncode;
    }

    /**
     * No process in Nocp
     */
    public function isMinRvsOK($versionExport)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return true;
    }

    public function replaceRelativeURL()
    {
       SGL::logMessage(null, PEAR_LOG_DEBUG);
       return RvsLibs_String::str_replace('/' . PROGRAM_NAME, '', RVSITEBUILDER_URL);
    }

   /**
      * ใช้กรณี output ออกไปใช้งานต่อ
      * ไม่ได้เอาไว้เช็ค CPMODE
   */
	public function isCpanel()
	{
        SGL::logMessage(null, PEAR_LOG_DEBUG);
	    return false;
	}

	/**
     * getHashUrl()
     * @return ''
     * @author pharadol@rvglobalsoft.com
     * *//*
    public function getHashUrl()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	return '';
    }
    */

    /**
     * Process in cp mode
     * @param $cycleNow = 0, $errorNotExit = 0, $skipMsg = 0
     * @author pharadol@rvglobalsoft.com
     * */
    public function checkFileConfigLicenseCycle($cycleNow = 0, $errorNotExit = 0, $skipMsg = 0)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
    }

    /**
     * get controlpael url path
     * @return string
     * @author siwakorn induang
     */
    /*
    public function getControlPanelUrl()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return INDEX_URL . '/sitebuilder';
    }
    */

    /**
     * For process in cp mode
     * check counter is existing and make new counter.
     * @param $defCounterName <string> counter name
     * @author pharadol@rvglobalsoft.com
     */
    public function getNewCounterExisting($counterName)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    /**
     * process in CPANEL
     * @author siwakorn induang
     * @param <string>$counterName
     * @return true / false
     */
    public function validateCounterNameExisting($counterName)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return  false;
    }

        /**
     * process in CPANEL
     * @author siwakorn induang
     * @param <string>$counterName
     * @return true / false
     */
    public function validateChangeCounterName($counterName)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return  true;
    }

    #File:Online_CounterMgr
    public function runUpdateFileCounterData($filePreview, $cpanelTagPreview, $counterName, $newCounter)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return $newCounter;
    }

    #File:Online_CounterMgr
    public function runUpdateCounterData($cpanelTag, $counterName, $newCounter)
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
        return  '<!-- ' . RvsLibs_String::translate('Counter no support in "nocp"') . ' -->';
    }

    public function cpanelHtmlTagCounter($counterTag)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    public function tryoutGetBuyAccountUrl()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    public function createNewEmailcpSecurity()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    public function runDetectPhpSuexec($dePhpSuexec)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $phpSuExec = RvsLibs_System::runDetectPhpSuexec();
        if($phpSuExec != $dePhpSuexec) {
            RvsLibs_Config::autoUpdatePhpSuExecToMainIpConf($phpSuExec, $this->conf);
        }
        return $phpSuExec;
    }

    //TODO
    public function createAutoDatabase($buildDBName, $buildDBUsername, $buildDBPasswd)
    {
    	 SGL::logMessage(null, PEAR_LOG_DEBUG);
    	 $dbname = (defined('DATABASE_PREFIX') && DATABASE_PREFIX === false) ? RVS_USER_NAME . $buildDBName : $buildDBName;
    	 $isOk = $this->doCreateDatabase($dbname);
    	 if (SGL::isError($isOk)) {
    	 	SGL_Error::pop();
    	 	return false;
    	 }

        $username = (defined('DATABASE_PREFIX') && DATABASE_PREFIX === false) ? RVS_USER_NAME . $buildDBUsername : $buildDBUsername;
        $isOk = $this->doCreateDatabaseUser($username, $buildDBPasswd);
        if (SGL::isError($isOk)) {
        	SGL_Error::pop();
        	$aDatabase = $this->doDeleteDatabase($buildDBName);
            $this->getDataResponse($aDatabase);
        	return false;
        }

         $isOk = $this->doAddDBUser($this->getRealFormatDBName($buildDBName), $this->getRealFormatDBName($buildDBUsername));
         if (SGL::isError($isOk)) {
         	SGL_Error::pop();
         	$aData = $this->doDeleteDatabase($buildDBName);
            $this->getDataResponse($aData);

            $aDatabaseUser = $this->doDeleteDatabaseUser($buildDBUsername);
            $this->getDataResponse($aDatabaseUser);
         	return false;
         }
    }


    ######################## END #####################

    public function replateAtOnUserName($userName)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
    	return $userName;
    }

    public function isSkipAllowUserPerms()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
    	return false;
    }

    public function getPathQuotaUser($aPath)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
    	return SGL_BASE_URL . '/nocp_panel/getDiskQuota.html';
    }

    public function getFileManagerUrlByUser($username)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return '';
    }

    /**
     * Get path image diy in mode wysiwyg
     *
     * @author Puttipong <puttipong@rvglobalsoft.com>
     * @param String $pathImg
     * @return String Path image diy in mode wysiwyg
     */
    public function getPathImgWysDiy($pathImg = null)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return RvsLibs_File::buildPath(array(SGL_PATH . str_replace(PROGRAM_NAME,'',strstr($pathImg, PROGRAM_NAME))));
    }

    /**
     * Validate create project on mode.
     *
     * @author Puttipong <puttipong@rvglobalsoft.com>
     * @return Boolean False
     */
    public function isValidCreateProject()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    /**
     * Validate get html tag counter
     *
     * @author Puttipong <puttipong@rvglobalsoft.com>
     * @return Boolean False
     */
    public function isValidHtmlTagCounter()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    /**
     * Validate update rollback version
     *
     * @author Puttipong <puttipong@rvglobalsoft.com>
     * @return Boolean False
     */
    public function isValidUpdateRollbackVersion()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    /**
     * Validate phpsu in XML
     *
     * @author Puttipong <puttipong@rvglobalsoft.com>
     * @return Boolean False
     */
    public function isValidPhpsuModeXml()
    {
	    SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    /**
     * Validate component db on mode
     *
     * @author Puttipong <puttipong@rvglobalsoft.com>
     * @return Boolean True
     */
    public function isValidCompoDbMode()
    {
        return true;
    }

    /**
     * Get url for edit database
     *
     * @author Puttipong <puttipong@rvglobalsoft.com>
     * @return String
     */
    public function getUrlDb()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return '/phpMyAdmin';
    }

    /**
     * Validate component db on flexy
     *
     * @author Puttipong <puttipong@rvglobalsoft.com>
     * @return Boolean False
     */
    public function isValidCompoDbFlexy()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    /**
     * Is mode tryout
     *
     * @author Puttipong <puttipong@rvglobalsoft.com>
     * @return Boolean False
     */
    public function isTryout()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    /**
     * Is mode nocp
     *
     * @author Puttipong <puttipong@rvglobalsoft.com>
     * @return Boolean True
     */
    public function isNocp()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return true;
    }

     /**
     * Make update tryout
     *
     * @author Puttipong <puttipong@rvglobalsoft.com>
     * @return String null
     */
    public function makeUpdateTryout()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
        return null;
    }

        /**
     * Make update tryout login config
     *
     * @author Puttipong <puttipong@rvglobalsoft.com>
     * @param Boolean $isAutoApproval
     * @param String null
     */
    public function makeUpdateTryoutLoginConf($isAutoApproval = false, $subdomainPath = null)
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
        return null;
    }


     /**
     * Make remove tryout
     *
     * @author Puttipong <puttipong@rvglobalsoft.com>
     * @param String null
     */
    public function makeRemoveTryout($option = array())
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
        return null;
    }

    ####################################
    ########### PRIVATE FUNCTION ###########
    ####################################
    private function _validateStatus($status)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        if (strtolower($status) == 'ok') {
            return true;
        } else {
            return SGL::raiseError($status);
        }
    }

    public function replacePreviewOnlineCounter($cpanelCounterTag)
    {
       SGL::logMessage(null, PEAR_LOG_DEBUG);
       return $cpanelCounterTag;
    }

    public function isDirectAdmin()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return false;
    }

    public function getRvBinPath()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
        return SGL_PATH . '/rvbin/rvswrapper';
    }

    public function isAdmin($username = RVS_USER_NAME)
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	return ($username == 'root')? true : false;

    }

    public function ownerIsAdmin($ownername = RVS_OWNER_USER_NAME)
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	return ($ownername == 'root')? true : false;
    }

    public function makeUploadFolder($userUploadPath, $pathLinkUpload, $userDataPath)
    {
        SGL::logMessage('real path:' . $userUploadPath, PEAR_LOG_DEBUG);
        SGL::logMessage('link path:' . $pathLinkUpload, PEAR_LOG_DEBUG);
        if (!is_link($pathLinkUpload) && is_dir($userDataPath) ) {
            return  symlink($userUploadPath, $pathLinkUpload);
        }
        return false;
    }

   public function createUserSymlinkUserFolder($pathUserUpload, $pathUploadLink)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        RvsLibs_User::createUserSymlinkUserFolder($pathUserUpload, $pathUploadLink);
    }

   public function moveUploadedFile($tempFile, $destination)
   {
    $res = RvsLibs_File::moveUploadedFile($tempFile, $destination);
    $msq = ($res) ? 'TRUE' : 'FALSE';
    SGL::logMessage(" moveUploadedFile= " . $msq, PEAR_LOG_DEBUG);
    return $res;
   }

   public function isUploadedFile($tempFile)
   {
    $res = RvsLibs_File::isUploadedFile($tempFile);
    $msq = ($res) ? 'TRUE' : 'FALSE';
    SGL::logMessage(" isUploadedFile= " . $msq, PEAR_LOG_DEBUG);
    return $res;
   }

   public function makeLink($source, $des)
   {
   	SGL::logMessage('tempFile :: ' . $source, PEAR_LOG_DEBUG);
   	SGL::logMessage('destination::' . $des, PEAR_LOG_DEBUG);
   	RvsLibs_System::ln(array('-s', $source, $des));
   }

    function secureCommandMakeLinkProjectId($projectId)
    {
        $resSecure = RvsLibs_System::secureCommand('makeprojectsymlink', array('project-id' => $projectId));
        if (SGL::isError($resSecure) === true) {
            return SGL::raiseError(
                RvsLibs_String::translate(
                      'Cannot create project folder symlink, becase %MSG.'
                      , 'vprintf'
                      , array('MSG' => $resSecure->getMessage())
                )
            );
        }
    }

    public function msgWaringOpenBaseDir()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        return RvsLibs_String::translate('Reseller contact provider to update virtualhost');
    }

    public function buildProjectUrlForDa()
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
    }

    public function createLinkFolder($fullPath, $fileZip)
    {
        SGL::logMessage("createLinkFolder >>>>>>>>>>>>> " . $fullPath . $fileZip, PEAR_LOG_DEBUG);
        $fileNameZip = preg_replace('/(\.tar\.gz$|\.gz$|\.tar$|\.zip$)/i', '', $fileZip);
        $FName = urlencode($fileNameZip);
        if (file_exists($fullPath . $fileNameZip)) {
            self::makeLink($fullPath . $fileNameZip, $fullPath . $FName);
        }
    }

    public function createLinkFileAndFolder($fullPath)
    {
    	//file image
    	$allFile = RvsLibs_System::ls($fullPath);
    	foreach ($allFile['files'] as $k => $v) {
    		$image = end(RvsLibs_String::dbeExplode('/', $v));
    		$fileName = urlencode($image);
    		if (preg_match('/\.gif$|\.png$|\.jpg$|\.jpeg$/i',$fileName, $match)) {
    			if (is_link($fullPath . $fileName) === false) {
    				self::makeLink($fullPath . $image, $fullPath . $fileName);
    			}
    		}
    	}
    	//folder
    	foreach ($allFile['dirs'] as $key => $val ) {
    		//เช็คว่าถ้าอัพโหลดไฟล์รูปจะไม่ให้เข้ามาทำงานในส่วนนี้
    		if (realpath($fullPath) != $val) {
    			$folder= end(RvsLibs_String::dbeExplode('/', $val));
    			$dirName = urlencode($folder);
    			if (RvsLibs_File::_isEncode($dirName) === true) {
    				if (is_link($fullPath . $dirName) === false) {
    					//RvsLibs_System::ln(array('-s', $fullPath . $folder, $fullPath . $dirName));
    					self::makeLink($fullPath . $folder, $fullPath . $dirName);
    					$aFile = RvsLibs_System::ls(array('-a', '-R', '-C', $fullPath . $folder));
    					foreach($aFile['files'] as $k => $v) {
    						$file= end(RvsLibs_String::dbeExplode('/', $v));
    						$fName = urlencode($file);
    						$encodeFile = str_replace($file, $fName, $v);
    						self::makeLink($v, $encodeFile);
    					}
    				}
    			}
    		}
    	}
    }

    public function makeFolderLink($fullPath, $folderName)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        RvsLibs_File::makeFolderLink($fullPath, $folderName);
    }

    public function makeImageLink($fullPath, $filename)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        RvsLibs_File::makeImageLink($fullPath, $filename);
    }

    public function isRealConfigUpLoadMaxFileSize()
    {
        return ini_get('upload_max_filesize');
    }

    /**
     * Make userdata path
     * @return unknown_type
     */
    function makeuserdatapath($userdataPath)
    {
        return RvsLibs_System::secureCommand('makeuserdatapath');
    }

   function replaceUrlToNobase($data)
    {
    	return RvsLibs_Project::replaceDaToNobase($data);
    }

    function makeFileQuota($dnsPublish)
    {
    	return true;
    }

    public function getPublishMsgHttps($domain = '')
    {
    	$domain = ($domain != '') ? $domain : 'domain';
    	return RvsLibs_String::translate('Please make sure your %DOMAIN can be called as https://.'
    			, 'vprintf'
    			, array('DOMAIN' => $domain)
    	);
    }

    public function detectCpanelProxyMsg()
    {
    	return false;
    }

    /**
     *
     * Make Restore Online Counter
     *
     * @author Puttipong <puttipong at rvglobalsoft.com>
     *
     * @param $projectId <STRING>
     * @return TRUE
     */
    public function makeRestoreOnlineCounter($projectId=null) {
        return true;
    }


    public function getCPVersion()
    {
    	$version = 'Unknown';
    	if (function_exists('php_uname')) {
    		$version = php_uname('s').' - '.php_uname('r');
    	} elseif (function_exists('posix_uname')) {
    		$aVersion = posix_uname();
    		$version = $aVersion['sysname'].' - '.$aVersion['release'];
    	}
    	return $version;
    }

    public function getMySQLVersion()
    {
    	ob_start();
    	phpinfo(INFO_MODULES);
    	$info = ob_get_contents();
    	ob_end_clean();
    	$info = stristr($info, 'Client API version');
    	if (preg_match('/[1-9].[0-9].[1-9][0-9]/', $info, $match)) {
    		return $match[0];
    	} else {
    		return 'Unknown';
    	}
    }

    public function getPHPVersion()
    {
    	return phpversion();
    }

    public function getPerlVersion()
    {
    	RvsLibs_System::exec("perl -v | awk '/This/ {print $4}' | sed -e 's/v//'", $aVersion);
    	return trim(join('', $aVersion));
    }

    /**
     * Nocp explode _ and return all character
     * User12345678_xxxx
     *
     * return User12345678
     *
     * (non-PHPdoc)
     * @see CpHandle_InterfaceForUser::getDBMinChaName()
     */
    public function getDBMinChaName($name = '')
    {
    	SGL::logMessage("debug before: " . $name, PEAR_LOG_DEBUG);
    	return $name;
    }
}
?>