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/cloudlinux/alt-php53/root/usr/share/pear/RVSeagullMod/lib/RVSGL/SitebuilderDao/TryoutDao.php
<?php
/* Reminder: always indent with 4 spaces (no tabs). */
// +---------------------------------------------------------------------------+
// WebSite:  http://www.rvglobalsoft.com
// Unauthorized copying is strictly forbidden and may result in severe legal action.
// Copyright (c) 2006 RV Global Soft Co.,Ltd. All rights reserved.
// 
// =====YOU MUST KEEP THIS COPYRIGHTS NOTICE INTACT AND CAN NOT BE REMOVE =======
// Copyright (c) 2006 RV Global Soft Co.,Ltd. All rights reserved.
// This Agreement is a legal contract, which specifies the terms of the license
// and warranty limitation between you and RV Global Soft Co.,Ltd. and RV Site Builder.
// You should carefully read the following terms and conditions before
// installing or using this software.  Unless you have a different license
// agreement obtained from RV Global Soft Co.,Ltd., installation or use of this software
// indicates your acceptance of the license and warranty limitation terms
// contained in this Agreement. If you do not agree to the terms of this
// Agreement, promptly delete and destroy all copies of the Software.
//
// =====  Grant of License =======
// The Software may only be installed and used on a single host machine.
//
// =====  Disclaimer of Warranty =======
// THIS SOFTWARE AND ACCOMPANYING DOCUMENTATION ARE PROVIDED "AS IS" AND
// WITHOUT WARRANTIES AS TO PERFORMANCE OF MERCHANTABILITY OR ANY OTHER
// WARRANTIES WHETHER EXPRESSED OR IMPLIED.   BECAUSE OF THE VARIOUS HARDWARE
// AND SOFTWARE ENVIRONMENTS INTO WHICH RV SITE BUILDER MAY BE USED, NO WARRANTY OF
// FITNESS FOR A PARTICULAR PURPOSE IS OFFERED.  THE USER MUST ASSUME THE
// ENTIRE RISK OF USING THIS PROGRAM.  ANY LIABILITY OF RV GLOBAL SOFT CO.,LTD. WILL BE
// LIMITED EXCLUSIVELY TO PRODUCT REPLACEMENT OR REFUND OF PURCHASE PRICE.
// IN NO CASE SHALL RV GLOBAL SOFT CO.,LTD. BE LIABLE FOR ANY INCIDENTAL, SPECIAL OR
// CONSEQUENTIAL DAMAGES OR LOSS, INCLUDING, WITHOUT LIMITATION, LOST PROFITS
// OR THE INABILITY TO USE EQUIPMENT OR ACCESS DATA, WHETHER SUCH DAMAGES ARE
// BASED UPON A BREACH OF EXPRESS OR IMPLIED WARRANTIES, BREACH OF CONTRACT,
// NEGLIGENCE, STRICT TORT, OR ANY OTHER LEGAL THEORY. THIS IS TRUE EVEN IF
// RV GLOBAL SOFT CO.,LTD. IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO CASE WILL
// RV GLOBAL SOFT CO.,LTD.'S LIABILITY EXCEED THE AMOUNT OF THE LICENSE FEE ACTUALLY PAID
// BY LICENSEE TO RV GLOBAL SOFT CO.,LTD.
// +---------------------------------------------------------------------------+
// $Id$
// +---------------------------------------------------------------------------+

/**
 *  Data access methods for the navigator of RVSiteBuilder  
 *
 * @package sitebuilder
 * @author  Pairote Manunphol <pairote@rvglobalsoft.com>
 * @author  Parinya <parinya@rvglobalsoft.com>
 * @version $Revision$
 * @since   PHP 5.1
 */

class TryoutDao extends DbWrapper implements SitebuilderInf
{
	function TryoutDao()
	{
		parent::DbWrapper();
	}
	
	/**
	 * Returns a singleton NavigatorDao instance.
	 *
	 * @param bool $autoload
	 * @return obj
	 */
	public static function singleton($autoload=false)
    {
        static $instance;
        // If the instance is not there, create one
        if (!isset($instance) || $autoload) {
            $class = __CLASS__;
            $instance = new $class();
        }
        return $instance;
    }

    public function &rvsConnectDb()
    {
        $locator = SGL_ServiceLocator::singleton();
        $dbh = $locator->get('RVSDB');
        if (!$dbh) {
            $aIpConfig = TryoutDao::getSitebuilderConfig();
            $aRvsConf = array(
            'phptype'  => $aIpConfig['db']['type'],
            'username' => $aIpConfig['db']['user'],
            'password' => $aIpConfig['db']['pass'],
            'protocol' => $aIpConfig['db']['protocol'],
            'socket'   => '',
            'hostspec' => $aIpConfig['db']['host'],
            'port'     => $aIpConfig['db']['port'],
            'database' => $aIpConfig['db']['name'],
            );
            
            $dbh = SGL_DB::singleton($aRvsConf);
            $locator->register('RVSDB', $dbh);
        }
        
        if (SGL_DB_DRIVER === 'DB') {
        	$dbh->setFetchMode(DB_FETCHMODE_OBJECT);
        } else {
        	$dbh->setFetchMode(MDB2_FETCHMODE_OBJECT);
        }
        return $dbh;
    }
    
    public function getSitebuilderConfig()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	$tryoutConfigFile = $this->conf['tryoutlogin']['subdomain_path'] . '/tryout_config.ini.php';
    	$aTryoutConfigFile = parse_ini_file($tryoutConfigFile, true);
    	if (isset($this->conf['tryoutlogin']['main_ip'])) {
    	    $mainIP = $this->conf['tryoutlogin']['main_ip'];    	    
    	} else {
    	    die ('<h2>Cannot find main IP</h2>');
    	}
    	
    	if (isset($this->conf['path']['webRoot']) && $this->conf['path']['webRoot'] != '') {
    	    $programPath = $this->conf['path']['webRoot'] ;
    	    $rvsMainIp = $programPath . '/tryout/var/' . $mainIP . '.conf.php';
    	} elseif (isset($this->conf['tryoutlogin']['rvsitebuilder_path']) && $this->conf['tryoutlogin']['rvsitebuilder_path'] != '') {
    	    $rvsPath = $this->conf['tryoutlogin']['rvsitebuilder_path'];
    	    $rvsMainIpDefault = $rvsPath . '/var/' . $mainIP .  '.default.conf.ini.php';
    	} else {
    	    die ('<h2>Cannot find program path</h2>');
    	}
    	// load conf /var/cpanel/rvglobalsoft/rvsitebuilder/var/mainIp.default.conf.ini.php
    	
    	if (isset($rvsMainIp) && file_exists($rvsMainIp)) {
    		$c = SGL_Config::singleton();
    		$aIpConfig = $c->load($rvsMainIp);
    	} elseif (isset($rvsMainIpDefault) && file_exists($rvsMainIpDefault)) {    		
    		if (!is_readable($rvsMainIpDefault)) {
    			die ('<h2>Cannot read ' . $rvsMainIpDefault . '</h2>');
    		}
    		//$aIpConfig = RvsLibs_Config::parse_ini_file($rvsMainIp, true);
    		$aIpConfig = parse_ini_file($rvsMainIpDefault, true);
    	} else {
    	    $aIpConfig = array();
    	}
    	return $aIpConfig;
    }
    
    /**
     * copy from SGL_Task_InitialiseDbDataObject in lib/SGL/Task/Init.php 
     *
     */
    public function rvsInitialiseDbDataObject()
    {
        //require_once SGL_MOD_DIR . '/tryout/classes/DaoFactory.php';
        $options = &PEAR::getStaticProperty('DB_DataObject', 'options');
        $tryoutConfigFile = $this->conf['tryoutlogin']['subdomain_path'] . '/tryout_config.ini.php';
        $aTryoutConfigFile = parse_ini_file($tryoutConfigFile, true);
        $entitiesDir = $aTryoutConfigFile['program_path'] . '/var/cache/entities';
        $aSitebuilderConf = $this->getSitebuilderConfig();
        $options = array(
            'database'              => $this->rvsGetDsn(SGL_DSN_STRING),
            'schema_location'       => $entitiesDir,
            'class_location'        => $entitiesDir,
            'require_prefix'        => $entitiesDir . '/',
            'class_prefix'          => 'DataObjects_',
            'debug'                 => $aSitebuilderConf['debug']['dataObject'],
            'production'            => 0,
            'ignore_sequence_keys'  => 'ALL',
            'generator_strip_schema'=> 1,
            'quote_identifiers'     => 1,
        	'db_driver'				=> SGL_DB_DRIVER,
        );
    }
    
/**
     * Returns the default dsn specified in the global config.
     * copy function getDsn() from lib/SGL/DB.php
     *
     * @access  public
     * @static
     * @param int $type  a constant that specifies the return type, ie, array or string
     * @return mixed     a string or array contained the data source name
     */
    public function rvsGetDsn($type = SGL_DSN_ARRAY, $excludeDbName = false)
    {
        $conf = $this->getSitebuilderConfig();
        if (!count($conf)) {
            return false;
        }
        $locator = SGL_ServiceLocator::singleton();
        $dbh = $locator->get('RVSDB');
        if ($dbh && count($dbh->dsn)) {
            $locatorDsn = $dbh->dsn;
            $conf['db']['user'] = $locatorDsn['username'];
            $conf['db']['pass'] = $locatorDsn['password'];
            $conf['db']['protocol'] = $locatorDsn['protocol'];
            $conf['db']['socket'] = $locatorDsn['socket'];
            $conf['db']['host'] = $locatorDsn['hostspec'];
            $conf['db']['port'] = $locatorDsn['port'];
            $conf['db']['name'] = $locatorDsn['database'];
        }
        //  override default mysql driver to allow for all sequence IDs to
        //  be kept in a single table
        $dbType = $conf['db']['type'];
        if ($type == SGL_DSN_ARRAY) {
            $dsn = array(
                'phptype'  => $dbType,
                'username' => $conf['db']['user'],
                'password' => $conf['db']['pass'],
                'protocol' => $conf['db']['protocol'],
                'socket'   => $conf['db']['socket'],
                'hostspec' => $conf['db']['host'],
                'port'     => $conf['db']['port']
            );
            if (!$excludeDbName) {
                $dsn['database'] = $conf['db']['name'];
            }
        } else {
            $socket = (isset($conf['db']['protocol'])
                        && $conf['db']['protocol'] == 'unix'
                        && !empty($conf['db']['socket']))
                ? '(' . $conf['db']['socket'] . ')'
                : '';
            $protocol = isset($conf['db']['protocol'])
                ? $conf['db']['protocol'] . $socket
                : '';
            $host = empty($conf['db']['socket']) ? '+' . $conf['db']['host'] : '';
            $port = (!empty($conf['db']['port'])
                        && isset($conf['db']['protocol'])
                        && ($conf['db']['protocol'] == 'tcp'))
                ? ':' . $conf['db']['port']
                : '';
            $dsn = $dbType . '://' .
                $conf['db']['user'] . ':' .
                $conf['db']['pass'] . '@' .
                $protocol .
                $host . $port;
            if (!$excludeDbName) {
                $dsn .= '/' . $conf['db']['name'];
            }
        }
        return $dsn;
    }
    
    public function isRvsUsrNameDuplicate($userName)
    {
        SGL::logMessage('isRvsUsrNameDuplicate---$userName***'.$userName, PEAR_LOG_DEBUG);
        $oSitebuilder = UsrDao::singleton($autoload = false);
        $dbh = $this->rvsConnectDb();
        $oSitebuilder->registRvsConf($this->aConf, $dbh);
        // optimize :nipaporn
        return DaoFactory::Usr()->findUsrIdByUsername($userName, 'getRow', $aResultFields = array('rvs_usr_id', 'user_name'));
   }
      
   public function addRvsUsrId($userName)
   {
       SGL::logMessage(null, PEAR_LOG_DEBUG);

       $oSitebuilder = UsrDao::singleton($autoload = false);
       $dbh = $this->rvsConnectDb();
       $oSitebuilder->registRvsConf($this->aConf, $dbh);
       $rvsUsrId = RvsLibs_String::genUniqueId();
       // optimize :nipaporn
       return DaoFactory::Usr()->insertUsr($rvsUsrId, $userName);
   }
   
   public function updateRvsUserName($originalUserName, $editUserName)
   {
       SGL::logMessage(null, PEAR_LOG_DEBUG);
       
       $oSitebuilder = UsrDao::singleton($autoload = false);
        $dbh = $this->rvsConnectDb();
        $oSitebuilder->registRvsConf($this->aConf, $dbh);
        $res = DaoFactory::Usr()->findUsrIdByUsername($originalUserName, 'getRow', $aResultFields = array('rvs_usr_id', 'user_name'));
     //  $dbh = $this->rvsConnectDb();

    // Check User is Exist
           /*       $query = "
                       SELECT
                                   *
                       FROM
                                   rvs_usr
                       WHERE
                                   user_name = '$originalUserName' 
               ";
       $res = $dbh->getRow($query);*/

        if (count($res) != 0) {
            // Rename Rvs User   
               $query = "
                                  UPDATE  
                                              rvs_usr 
                                      SET 
                                              user_name = '$editUserName' 
                                      WHERE
                                              user_name = '$originalUserName'
                                  ";
               $res = $dbh->query($query);
               if ($res == 1) {  
                   return $res;
               }            
        } else {
            return SGL_String::translate('Rvs user is not exist.');
        }
    }
    
    public function deleteRvsUserId($userName)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $oSitebuilder = UsrDao::singleton($autoload = false);
        $dbh = $this->rvsConnectDb();
        $oSitebuilder->registRvsConf($this->aConf, $dbh);
        // optimize :nipaporn
        return DaoFactory::Usr()->deleteUserByUserName($userName);
    }
    
    public function findTemplateItemFolderAndTypePreviewByRandam($feach)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $oSitebuilder = TemplateDao::singleton($autoload = false);
        $dbh = $this->rvsConnectDb();
        $oSitebuilder->registRvsConf($this->aConf, $dbh);
        // optimize :nipaporn
        return DaoFactory::Template()->findTemplateItemFolderAndTypePreviewByRandam($feach);
    }
    
    
      
    /**
     * Delete Project User, (DB All Tryout RvSiteBuilder)
     */
   public function deleteProject($userName)
   {
       SGL::logMessage(null, PEAR_LOG_DEBUG);
        // Get rvsUsrId
       $dbh = $this->rvsConnectDb();
       $oSitebuilder = UsrDao::singleton($autoload = false);
       $oSitebuilder->registRvsConf($this->aConf, $dbh);
       $user = $this->isRvsUsrNameDuplicate($userName);
       SGL::logMessage('deleteProject***userName***' . $userName, PEAR_LOG_DEBUG);
       $rvsUsrId = $user['rvs_usr_id'];
        // List Project By rvsUsrId
       $oProject = ProjectDao::singleton($autoload = false);
       SGL::logMessage('deleteProject***userName***222' . $userName, PEAR_LOG_DEBUG);
       $oProject->registRvsConf($this->aConf, $dbh);
       SGL::logMessage('deleteProject***userName***3333' . $userName, PEAR_LOG_DEBUG);
       $aProject = DaoFactory::Project()->findProjectIdByUsrId($rvsUsrId, 'getassoc');
       SGL::logMessage('deleteProject***query***' . $query, PEAR_LOG_DEBUG);
       // Delete All Project
       if ($aProject) {
           foreach ($aProject as $key => $value) {
                   $input->project_id = $value->project_id;
                   $input->rvs_usr_id = $rvsUsrId;
                   $projectSymLinkPath = $this->conf['tryoutlogin']['subdomain_path'] . '/users/' . $userName . 'projects/' . $input->project_id;
                   $projectFolderPath = @readlink($projectSymLinkPath);
                   // Check is symlink and folder exists for Delete Project User
                   if (is_link($projectSymLinkPath) && file_exists($projectFolderPath) && $input->project_id) {
                   	   RvsLibs_System::rm(array('-rf', $projectFolderPath));
                       // Delete symlink
                       unlink($projectSymLinkPath);
                   }
                   // Delete DB All
                   $this->deleteProjectDBAll($input);
           }
       }  
   }
   
   public function deleteProjectDBAll(&$input)
   {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $this->regisConnectDbSite();
        $aMethods = DaoFactory::getClassMethods();
        $aTasks = array();
        $aFile = array();
        foreach ($aMethods as $key => $method) {
            if ($method != 'DaoFactory' && $method != 'factory') {
                $aTasks[] = DaoFactory::factory($method);
            }
        }
        $aProjectPageId = RvsLibs_Project::getAllPageIdByProjectId($input->project_id);
        foreach ($aTasks as $task) {
            $aDataBackup[] = $task->deleteProjectOfUserId($input->project_id, $input->rvs_usr_id, $aProjectPageId);            
        }
        return true;    
   }

    public function regisConnectDbSite()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	$dbh = $this->rvsConnectDb();
    	SGL::logMessage('regisConnectDbSite***After $dbh---'. $dbh, PEAR_LOG_DEBUG);
    	$aMethods = DaoFactory::getClassMethods();
    	foreach ($aMethods as $key => $file) {
    		SGL::logMessage('regisConnectDbSite**Loop', PEAR_LOG_DEBUG);
    		if ($file != 'DaoFactory' && $file != 'factory') {
    		    $fileDao = $file . 'Dao';
    		    require_once $fileDao.'.php';
    			$osite = new $fileDao();
    			$osite = $osite->singleton($autoload = false);
    			$osite->registRvsConf($this->aConf, $dbh);
    		}
    	}
    }
    
    public function getOnlineFormID(&$input)
    {
        $aOnlineFormID = array();
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $aPageData = $this->getPageData($input->project_id, $input->rvs_usr_id);
        if (isset($aPageData)) {
            foreach ($aPageData as $k=>$v) {
                if (preg_match_all('/id*=*["|\']onlineform_(.*?)[\'|"]/i', $v->page_data, $match)) { 
                    $aOnlineFormID[$v->project_page_id] = $match[1];
                }
            }
        }
        if ( count($aOnlineFormID) ) {
            return $aOnlineFormID;
        }
    }
    
    public function getPageData($projectId, $rvsUsrId, $projectPageId = null)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $dbh = $this->rvsConnectDb();
        $query = " 
                        SELECT 
                                    *
                         FROM 
                                     rvs_project_page as pp
                                     , rvs_project_layout_page as lp ";
        if ($projectPageId) {
            $query .= " 
                        WHERE 
                                    pp.project_page_id = '$projectPageId'
                                     AND lp.project_id = '$projectId' ";
        } else {
            $query .= " 
                        WHERE 
                                    lp.project_id = '$projectId' ";
        }
        $query .= "             AND pp.rvs_usr_id = '$rvsUsrId'
                                     AND pp.project_page_id = lp.project_page_id
                         ORDER BY 
                                     lp.priority
                    ";
        $aPageData = $dbh->getAll($query);        
        if (isset($aPageData)) {
            return $aPageData;
        }
    } 

    /**
    **return array $aSQLData
    */
    public function backupsql($projectId, $usrId)
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        // optimize :nipaporn
        return array();
    }
    
   public function deleteProjectOfUserId($projectId, $usrId, $aProjectPageId=array()) {
       SGL::logMessage(null, PEAR_LOG_DEBUG);
   }
   
    public function findUsrByUsrId()
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
        $oUsrDao = UsrDao::singleton($autoload = false);
        $dbh = $this->rvsConnectDb();
        $oUsrDao->registRvsConf($this->aConf, $dbh);
        return DaoFactory::Usr()->findUsrByUsrId(null, 'getassoc', $aResultFields = array('rvs_usr_id', 'user_name'));
    }
    
    public function findprojectDataByUserId($kuserID)
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
        $oProjectDao = ProjectDao::singleton($autoload = false);
        $dbh = $this->rvsConnectDb();
        $oProjectDao->registRvsConf($this->aConf, $dbh);
    	return DaoFactory::Project()->findprojectDataByUserId($kuserID, 'getassoc', $aResultFields = array('project_id','project_name'));
    }
    
    public function findPublishByUserIdAndProjectId($kuserID, $kproId)
    {
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
        $oProjectDao = ProjectDao::singleton($autoload = false);
        $dbh = $this->rvsConnectDb();
        $oProjectDao->registRvsConf($this->aConf, $dbh);
        return DaoFactory::Project()->findPublishByUserIdAndProjectId($kuserID, $kproId, 'getarray');
    }  
}
?>