File: //opt/cpanel/ea-php54/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');
}
}
?>