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/alt/php54/usr/share/pear/RVSeagullMod/lib/RVSGL/SitebuilderDao/ProjectLayoutPageDao.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 project layout page of RVSiteBuilder
 *
 * @package sitebuilder
 * @author  Pairote Manunphol <pairote@rvglobalsoft.com>
 * @author  Parinya <parinya@rvglobalsoft.com>
 * @version $Revision$
 * @since   PHP 5.1
 */

class ProjectLayoutPageDao extends DbWrapper implements SitebuilderInf
{

	function ProjectLayoutPageDao()
	{
        parent::DbWrapper();
	}

	/**
	 * Returns a singleton ProjectLayoutPageDao 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;
    }

    /**
     * Find Project layout page
     * @author pharadol
     * @param <string> $projectId
     * @param <string> $fetchMode
     * @return array
     * form file  ImportProjectMgr.php
           /*
            $query = "
                            SELECT
                                        project_page_id
                              FROM
                                          {$this->conf['table']['rvs_project_layout_page']}
                              WHERE
                                          project_id = '$input->project_id'
                              ORDER BY
                                          'project_page_id'
                          ";
            $pageLayout = $this->dbh->getAll($query,DB_FETCHMODE_ASSOC);
            */
    public function findProjectLayoutPage($projectId, $fetchMode='getassoc')
    {
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
        /*
        $oProjectLayoutPage->selectAdd();
        $oProjectLayoutPage->selectAdd('project_page_id');

        $oProjectLayoutPage->project_id = $projectId;
        $oProjectLayoutPage->find();
        */
         $query = sprintf('
         				SELECT  DISTINCT
                                    project_page_id
                        FROM
                                      %s
                        WHERE
                                project_id =  %s
                    '
                    ,  $this->aConf['table']['rvs_project_layout_page']
                    ,  RvsLibs_String::quoteSmart($projectId)
                    );
        $oProjectLayoutPage->query($query);
        $aCloneData = array();
        while ($oProjectLayoutPage->fetch()) {
            $aCloneData[] = clone($oProjectLayoutPage);
        }
        return DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);
    }
    /**
     * find ComponentId By ProjectId from rvs_project_layout_page and rvs_project_page table
     * @author Pornthip Phothong
     * @param  $exportProjectId
     * @param  $fetchMode
     * @return array obj
     */
    public function findComponentIdByProjectId($exportProjectId=null, $fetchMode='getassoc')
    {
        DB_DataObject::debugLevel();
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
        if (!is_null($exportProjectId)) {
             $query = sprintf( '
            SELECT DISTINCT
                 rvs_component_id
             FROM
                 %s lp
                 , %s  pp
             WHERE
                 lp.project_id = %s
                 AND pp.rvs_component_id != ""
                 AND pp.rvs_component_id != "0"
                 AND lp.project_page_id = pp.project_page_id
                 '
                 , $this->aConf['table']['rvs_project_layout_page']
                 , $this->aConf['table']['rvs_project_page']
                 , RvsLibs_String::quoteSmart($exportProjectId)
                 );
              $oProjectLayoutPage->query($query);
        }
        $aCloneData = array();
        while ($oProjectLayoutPage->fetch()) {
            $aCloneData[] = clone($oProjectLayoutPage);
        }
        DB_DataObject::debugLevel();
        return  DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);
    }

    /**
     * find Paage Structure By OwnerUserId
     * @author Pharadol
     * @param <string> $uid
     * @param <string> $fetchMode
     * @return array
     * form file PageSturctrueMgr.php
/*
        $query = "
                        SELECT
                                    al.layout_name
                                    , al.rvs_category_id
                                    , al.admin_layout_id
                        FROM
                                    {$this->conf['table']['rvs_admin_layout']} al
                        WHERE
                                    al.rvs_owner_usr_id = '$uid'
                    ";
        $res = $this->dbh->getAll($query,DB_FETCHMODE_ASSOC);
        */
    public function  findPageStructureByOwnerUsrId($uid = null, $fetchMode = 'getassoc')
    {
      DB_DataObject::debugLevel();
      SGL::logMessage(null, PEAR_LOG_DEBUG);
      $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
      if (!is_null($uid)) {
           $query = sprintf('
                        SELECT
                                    al.layout_name
                                    , al.rvs_category_id
                                    , al.admin_layout_id
                        FROM
                                    %s al
                        WHERE
                                    al.rvs_owner_usr_id = %s
                             '
                             , $this->aConf['table']['rvs_admin_layout']
                             ,  RvsLibs_String::quoteSmart($uid)
                             );
           $oProjectLayoutPage->query($query);
        }
        $aCloneData = array();
        while ($oProjectLayoutPage->fetch()) {
            $aCloneData[] = clone($oProjectLayoutPage);
        }
        DB_DataObject::debugLevel();
        return  DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);
    }

    /**
    * find Count Page By Project Id
    * @author Pharadol
    * @param <string> $projectId
    * @param <string> $fetchMode
    * @return <array>
    * form file PageStructureMgr.php
        /*
        $query = "
                        SELECT
                                    *
                          FROM
                                      {$this->conf['table']['rvs_project_layout_page']}
                          WHERE
                                      project_id = '$input->project_id'
                      ";
        $countPage = $this->dbh->getAll($query);
        */
   public function findCountPageByProjectId($projectId = null, $fetchMode = 'getassoc')
   {
      DB_DataObject::debugLevel();
      SGL::logMessage(null, PEAR_LOG_DEBUG);
      $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
      if (!is_null($projectId)) {
           $query = sprintf('
                        SELECT
                                    *
                          FROM
                                      %s
                          WHERE
                                      project_id = %s
                                '
                                , $this->aConf['table']['rvs_project_layout_page']
                                , RvsLibs_String::quoteSmart($projectId)
                                );
          $oProjectLayoutPage->query($query);
        }
        $aCloneData = array();
        while ($oProjectLayoutPage->fetch()) {
            $aCloneData[] = clone($oProjectLayoutPage);
        }
        DB_DataObject::debugLevel();
        return  DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);
   }

   /**
    * find page layout by usrid and project id
    * @author Pharadol
    * @param <string> $projectId
    * @param <string> $usrId
    * @param <string> $fetchMode
    * @return array
    * form file PageStructureMgr.php
   /*
        $query0 = "
                            SELECT
                                        pa.project_page_id
                            FROM
                                        {$this->conf['table']['rvs_project_layout_page']} as pl
                                        , {$this->conf['table']['rvs_project_page']} as pa
                            WHERE
                                        pa.project_page_id = pl.project_page_id
                                        AND pa.rvs_usr_id = '$input->rvs_usr_id'
                                        AND pl.project_id = '$input->project_id'
                        ";
        $result0 = $this->dbh->getAll($query0);
      */
   public function findPageLayoutByUsrIdAndProjectId($projectId = null, $usrId = null, $fetchMode = 'getassoc')
   {
      DB_DataObject::debugLevel();
      SGL::logMessage(null, PEAR_LOG_DEBUG);
      $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
      if (!is_null($projectId) && !is_null($usrId)) {
           $query = sprintf('
                            SELECT
                                        pa.project_page_id
                            FROM
                                        %s as pl
                                        , %s  as pa
                            WHERE
                                        pa.project_page_id = pl.project_page_id
                                        AND pa.rvs_usr_id = %s
                                        AND pl.project_id = %s
                             '
                             , $this->aConf['table']['rvs_project_layout_page']
                             , $this->aConf['table']['rvs_project_page']
                             , RvsLibs_String::quoteSmart($usrId)
                             , RvsLibs_String::quoteSmart($projectId)
                              );
           $oProjectLayoutPage->query($query);
        }
        $aCloneData = array();
        while ($oProjectLayoutPage->fetch()) {
            $aCloneData[] = clone($oProjectLayoutPage);
        }
        DB_DataObject::debugLevel();
        return  DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);
   }

     /**
      * find project page Is component by usrid and projectid
      * @othor pharadol
      * @param <string> $rvsUsrId
      * @param <string> $projectId
      * @param <string> $fecthMode
      * @return array
      * form file common.php
      */
      public function findProjectPageIsComponentByUsrIdAndProjectId($rvsUsrId = null, $projectId = null, $fecthMode = 'getassoc')
      {
        DB_DataObject::debugLevel();
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
        if (!is_null($rvsUsrId) && !is_null($projectId)) {
             $query = sprintf('
                                 SELECT
                                             pp.project_page_id
                                             , pp.page_name
                                            , pp.rvs_usr_id
                                            , pp.rvs_component_id
                                            , pp.form_template_id
                                            , pp.page_data
                                FROM
                                            %s  as lp
                                            , %s  as pp
                                WHERE
                                            pp.rvs_component_id != "0"
                                            AND lp.project_page_id = pp.project_page_id
                                            AND lp.project_id = %s
                                            AND pp.rvs_usr_id = %s
                                 '
                                 , $this->aConf['table']['rvs_project_layout_page']
                                 , $this->aConf['table']['rvs_project_page']
                                 , RvsLibs_String::quoteSmart($projectId)
                                 , RvsLibs_String::quoteSmart($rvsUsrId)
                                 );
        $oProjectLayoutPage->query($query);
                }
        $aCloneData = array();
        while ($oProjectLayoutPage->fetch()) {
        $aCloneData[]= clone($oProjectLayoutPage);
        }
        DB_DataObject::debugLevel();
        return DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fecthMode);
      }

   public function findProjectLayoutPageByProjectId($projectId, $projectPageId=null, $fetchMode = 'gatassoc')
   {
		SGL::logMessage(null, PEAR_LOG_DEBUG);
   		$oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
	   	if (!is_null($projectPageId)) {
			$oProjectLayoutPage->project_page_id = $projectPageId;
	   	}
	   	$oProjectLayoutPage->project_id = $projectId;
	   	$oProjectLayoutPage->find();
	   	$aCloneData = array();
	   	while ($oProjectLayoutPage->fetch()) {
	   		$aCloneData[] = clone($oProjectLayoutPage);
	   	}
	   	return DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);
   }

    /**
    * find PageLayout By ComponentName And ProjectId And UserId And OwnerId from table  rvs_component and rvs_project and rvs_project_layout_page and rvs_project_page
    * @author Pornthip Phothong
    * @param  $componentName
    * @param  $projectId
    * @param  $userId
    * @param  $ownerId
    * @param  $fecthMode
    * @return array
   /*  $query = "SELECT DISTINCT (p.project_id), l.project_page_id , j.page_name , cp.rvs_component_id ,cp.component_name , cp.rvs_owner_usr_id
                        FROM
                            {$this->conf['table']['rvs_project']} as p,
                            {$this->conf['table']['rvs_project_layout_page']} as l ,
                            {$this->conf['table']['rvs_project_page']} as j ,
                            {$this->conf['table']['rvs_component']} as cp
                        WHERE p.project_id = '$projectID'
                        AND p.rvs_usr_id ='$userID'
                        AND cp.rvs_owner_usr_id ='$ownerID'
                        AND p.project_id = l.project_id
                        AND l.project_page_id = j.project_page_id
                        AND j.rvs_component_id = cp.rvs_component_id
                        AND cp.component_name = '$componentName'
                        ";
       $aUserCompoDBData = $this->dbh->getAll($query, DB_FETCHMODE_ASSOC);
     */
    public function findPageLayoutByComponentNameAndProjectIdAndUserIdAndOwnerId($componentName=null, $projectId=null, $userId=null, $ownerId=null, $fecthMode='getassoc')
    {
        DB_DataObject::debugLevel();
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $oComponent = DB_DataObject::factory($this->aConf['table']['rvs_component']);
        if (!is_null($projectId)) {
            $query = sprintf('
                        SELECT
                        DISTINCT (p.project_id)
                                , l.project_page_id
                                , j.page_name
                                , cp.rvs_component_id
                                , cp.component_name
                                , cp.rvs_owner_usr_id
                        FROM
                            %s as p
                            , %s as l
                            , %s as j
                            , %s as cp
                        WHERE
                            p.project_id = l.project_id
                            AND l.project_page_id = j.project_page_id
                            AND j.rvs_component_id = cp.rvs_component_id
                            AND p.project_id = %s
                            AND p.rvs_usr_id = %s
                            AND cp.rvs_owner_usr_id = %s
                            AND cp.component_name = %s
                        '
                        , $this->aConf['table']['rvs_project']
                        , $this->aConf['table']['rvs_project_layout_page']
                        , $this->aConf['table']['rvs_project_page']
                        , $this->aConf['table']['rvs_component']
                        , RvsLibs_String::quoteSmart($projectId)
                        , RvsLibs_String::quoteSmart($userId)
                        , RvsLibs_String::quoteSmart($ownerId)
                        , RvsLibs_String::quoteSmart($componentName)
                        );
                        $oComponent->query($query);
        }
        $aCloneData = array();
        while ($oComponent->fetch()) {
            $aCloneData[]= clone($oComponent);
        }
        DB_DataObject::debugLevel();
        return DbWrapper::fetchDatas($oComponent->_resultFields, $aCloneData, $fecthMode);
    }

  /**
    * Find Parent_Project_Page_Id By project_Page_Id for main page have sub page // หาว่า ใน page หลัก มี sub page
    *
    * @param string $projectId
    * @author duangdao.k
    * @param string $fetchMode
    * @return array
    */
   public function findParentProjectPageIdByprojectPageId($projectId = null, $fetchMode = 'getassoc')
   {
       DB_DataObject::debugLevel();
       SGL::logMessage(null, PEAR_LOG_DEBUG);
       $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
       if (!is_null($projectId)) {
                $query = sprintf('
                       SELECT
                           DISTINCT parent_project_page_id
                       FROM
                           %s
                       WHERE
                            project_id  = %s
                            AND parent_project_page_id != %s
                        '
                        , $this->aConf['table']['rvs_project_layout_page']
                        , RvsLibs_String::quoteSmart($projectId)
                         , RvsLibs_String::quoteSmart(0)
                        );
                        $oProjectLayoutPage->query($query);
       }
       $aCloneData = array();
       while ($oProjectLayoutPage->fetch()) {
           $aCloneData[] = clone($oProjectLayoutPage);
       }
       DB_DataObject::debugLevel();
       return  DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);
   }

   /**
    * find project_page_id from rvs_project_layout_page By project_page_id
    *
    * @param string $projectpageId
    * @param string $projectId
    * @param string $fetchMode
    * @author duangdao.k
    * @return array
    */
   public function findProjectPageLayoutByprojectPageId($projectpageId = null, $projectId, $fetchMode = 'getassoc')
   {
       DB_DataObject::debugLevel(0);
       SGL::logMessage(null, PEAR_LOG_DEBUG);
       $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
       if (!is_null($projectpageId) && !is_null($projectId)) {
            $query = sprintf('
                       SELECT
                           project_page_id
                       FROM
                           %s
                       WHERE
                            project_page_id  = %s
                            AND project_id = %s
                        '
                        , $this->aConf['table']['rvs_project_layout_page']
                        , RvsLibs_String::quoteSmart($projectpageId)
                         , RvsLibs_String::quoteSmart($projectId)
                        );

            $oProjectLayoutPage->query($query);
       }
       $aCloneData = array();
       while ($oProjectLayoutPage->fetch()) {
           $aCloneData[] = clone($oProjectLayoutPage);
       }
       DB_DataObject::debugLevel();
       return  DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);
   }

   /**
    * find rvslayout default from rvs_layout_page
    * @param string $fetchMode
    * @author darawan taorong
    * @return array
    */
   public function findRvsListLayout($rvsLayoutId = '', $fetchMode = 'getarray')
   {
       DB_DataObject::debugLevel(0);
       SGL::logMessage(null, PEAR_LOG_DEBUG);
       $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_layout']);
       $query = sprintf('
				SELECT
					rvs_layout_id
					, layout_name
					, layout_image
					, layout_data
					, num_of_zone
					, num_of_colums
				FROM
					%s
				WHERE
					responsive_layout != 1
					%s
				ORDER BY rvs_layout_id
				'
	            , $this->aConf['table']['rvs_layout']
	            , (isset($rvsLayoutId) && $rvsLayoutId != '' && $rvsLayoutId != '0')
                    ? sprintf(' AND rvs_layout_id= %s',RvsLibs_String::quoteSmart($rvsLayoutId))
                    : ''
                );
       $oProjectLayoutPage->query($query);
       $aCloneData = array();
       while ($oProjectLayoutPage->fetch()) {
           $aCloneData[] = clone($oProjectLayoutPage);
       }
       DB_DataObject::debugLevel();
       return  DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);
   }

   /**
    * find rvslayout default from rvs_layout_page
    * @param string $fetchMode
    * @author darawan taorong
    * @return array
    */
   public function findResponsiveListLayout($rvsLayoutId = '', $fetchMode = 'getarray')
   {
       DB_DataObject::debugLevel(0);
       SGL::logMessage(null, PEAR_LOG_DEBUG);
       $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_layout']);
       $query = sprintf('
				SELECT
					rvs_layout_id
					, layout_name
					, layout_image
					, layout_data
					, num_of_zone
					, num_of_colums
				FROM
					%s
				WHERE
					responsive_layout = 1
					%s
				ORDER BY rvs_layout_id
				'
	            , $this->aConf['table']['rvs_layout']
	            , (isset($rvsLayoutId) && $rvsLayoutId != '' && $rvsLayoutId != '0')
                    ? sprintf(' AND rvs_layout_id = %s',RvsLibs_String::quoteSmart($rvsLayoutId))
                    : ''
                );
       $oProjectLayoutPage->query($query);
       $aCloneData = array();
       while ($oProjectLayoutPage->fetch()) {
           $aCloneData[] = clone($oProjectLayoutPage);
       }
       DB_DataObject::debugLevel();
       return  DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);
   }

   /**
    * find rvslayout default from rvs_layout_page
    * @param string $fetchMode
    * @author darawan taorong
    * @return array
    */
   public function findResponsiveLayoutByName($layoutName = '', $fetchMode = 'getarray')
   {
       DB_DataObject::debugLevel(0);
       SGL::logMessage(null, PEAR_LOG_DEBUG);
       $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_layout']);
       $query = sprintf('
				SELECT
					rvs_layout_id
					, layout_name
					, layout_image
					, layout_data
					, num_of_zone
					, num_of_colums
				FROM
					%s
				WHERE
					responsive_layout = 1
					%s
				ORDER BY rvs_layout_id
				'
	            , $this->aConf['table']['rvs_layout']
	            , (isset($layoutName) && $layoutName != '' && $layoutName != '0')
                    ? sprintf(' AND layout_name = %s', RvsLibs_String::quoteSmart($layoutName))
                    : ''
                );
       $oProjectLayoutPage->query($query);
       $aCloneData = array();
       while ($oProjectLayoutPage->fetch()) {
           $aCloneData[] = clone($oProjectLayoutPage);
       }
       DB_DataObject::debugLevel();
       return  DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);
   }

   /**
    *
    * Enter description here ...
    * @param $projectId
    * @param $projectPageId
    * @param $fetchMode
    */
   public function findLayoutTemplateUser($projectId, $projectPageId=null, $fetchMode = 'getassoc')
   {
		SGL::logMessage(null, PEAR_LOG_DEBUG);
		$oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_layout_template_user']);
		$query = sprintf('
			SELECT
					*
			FROM
					%s as lt
					, %s as pl
			WHERE
					pl.layout_template_user_id = lt.layout_template_user_id
					AND pl.project_id = %s
					%s
		;'
		, $this->aConf['table']['rvs_layout_template_user']
		, $this->aConf['table']['rvs_project_page_to_layout']
		, RvsLibs_String::quoteSmart($projectId)
		, (empty($projectPageId)) ? '' : 'AND pl.project_page_id = ' . RvsLibs_String::quoteSmart($projectPageId)
		);

		$oProjectLayoutPage->query($query);
		$aCloneData = array();
		while ($oProjectLayoutPage->fetch()) {
			$aCloneData[] = clone($oProjectLayoutPage);
		}
		DB_DataObject::debugLevel();
		return  DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);
   }

   public function findLayoutTemplateUserByLayoutTemplateUserId($layoutTemplateUserId, $fetchMode = 'getassoc')
   {
		SGL::logMessage(null, PEAR_LOG_DEBUG);
		$oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_layout_template_user']);
		$oProjectLayoutPage->layout_template_user_id = $layoutTemplateUserId;
		$oProjectLayoutPage->find();
		$aCloneData = array();
		while ($oProjectLayoutPage->fetch()) {
			$aCloneData[] = clone($oProjectLayoutPage);
		}
		DB_DataObject::debugLevel();
		return  DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);
   }

   /**
    *
    * Enter description here ...
    * @param $projectId
    * @param $projectPageId
    * @param $fetchMode
    */
   public function findNameLayoutTemplateUser($projectId, $projectPageId=null, $fetchMode = 'getassoc')
   {
		SGL::logMessage(null, PEAR_LOG_DEBUG);
		$oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_layout_template_user']);
		$query = sprintf('
			SELECT
					lt.layout_template_user_id
					, lt.layout_template_name
			FROM
					%s as lt
					, %s as pl
			WHERE
					pl.layout_template_user_id = lt.layout_template_user_id
					AND pl.project_id = %s
					%s
		;'
		, $this->aConf['table']['rvs_layout_template_user']
		, $this->aConf['table']['rvs_project_page_to_layout']
		, RvsLibs_String::quoteSmart($projectId)
		, (empty($projectPageId)) ? '' : 'AND pl.project_page_id = ' . RvsLibs_String::quoteSmart($projectPageId)
		);

		$oProjectLayoutPage->query($query);
		$aCloneData = array();
		while ($oProjectLayoutPage->fetch()) {
			$aCloneData[] = clone($oProjectLayoutPage);
		}
		DB_DataObject::debugLevel();
		return  DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);
   }

   /**
    * find rvslayout default from rvs_layout_page
    * @param string $projectpageId
    * @param string $fetchMode
    * @author darawan taorong 15/12/52
    * @return array
    */
    public function findRvsSuggestionLayoutByProjectPageId($rvsLayoutId = '', $fetchMode = 'getassoc')
   {
       DB_DataObject::debugLevel(0);
       SGL::logMessage(null, PEAR_LOG_DEBUG);
       $oOutSuggestLayout = DB_DataObject::factory($this->aConf['table']['rvs_out_suggestion_layout']);
       $query = sprintf('
				SELECT
					distinct sl.rvs_layout_id
					, sl.zone_block_id_1
					, sl.zone_block_id_2
					, sl.zone_block_id_3
					, sl.zone_block_id_4
					, rl.layout_data
					, rl.num_of_zone
					, rl.num_of_colums
				FROM
					%s sl inner join
					%s rl on sl.rvs_layout_id = rl.rvs_layout_id
				WHERE
					rl.responsive_layout != 1
					%s
				ORDER BY
					sl.rvs_layout_id
				'
	            , $this->aConf['table']['rvs_out_suggestion_layout']
	            , $this->aConf['table']['rvs_layout']
	            , (isset($rvsLayoutId) && $rvsLayoutId != '' && $rvsLayoutId != '0')
	                ? sprintf(' AND sl.rvs_layout_id = %s',RvsLibs_String::quoteSmart($rvsLayoutId))
	                : ''
                );
       $oOutSuggestLayout->query($query);
       $aCloneData = array();
       while ($oOutSuggestLayout->fetch()) {
           $aCloneData[] = clone($oOutSuggestLayout);
       }
       DB_DataObject::debugLevel();
       return  DbWrapper::fetchDatas($oOutSuggestLayout->_resultFields, $aCloneData, $fetchMode);
   }

   /**
    * find rvsBlock  from rvs_Block
    * @param string $rvs_block_id
    * @param string $fetchMode
    * @author darawan taorong 15/12/52
    * @return array
    */
   public function findRvsBlockByrvsBlockId($rvsBlockId = null, $fetchMode = 'getassoc')
   {
       DB_DataObject::debugLevel(0);
       SGL::logMessage(null, PEAR_LOG_DEBUG);
       $oRvsBlock = DB_DataObject::factory($this->aConf['table']['rvs_block']);
       $query = sprintf('
				SELECT
					*
				FROM
					%s
					%s
				ORDER BY rvs_block_id
			     '
            , $this->aConf['table']['rvs_block']
	        , (isset($rvsBlockId) && $rvsBlockId != null) ? sprintf(' WHERE rvs_block_id = %s',RvsLibs_String::quoteSmart($rvsBlockId)) : ''
             );
       $oRvsBlock->query($query);
       $aCloneData = array();
       while ($oRvsBlock->fetch()) {
           $aCloneData[] = clone($oRvsBlock);
       }
       DB_DataObject::debugLevel();
       return  DbWrapper::fetchDatas($oRvsBlock->_resultFields, $aCloneData, $fetchMode);
   }

    public function findPageByParentAndMorePriority($parent_project_page_id, $priority, $project_id, $fetchMode='getassoc')
    {
    	$oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
    	$query = 	'SELECT
	    				project_page_id, priority
					FROM
						' . $this->aConf['table']['rvs_project_layout_page'] . '
					WHERE
						parent_project_page_id = ' . RvsLibs_String::quoteSmart($parent_project_page_id) . '
						AND priority > ' . $priority . '
						AND project_id = ' . RvsLibs_String::quoteSmart($project_id) . '
					ORDER BY priority';

    	$oProjectLayoutPage->query($query);
    	$aCloneData = array();
        while ($oProjectLayoutPage->fetch()) {
            $aCloneData[] = clone($oProjectLayoutPage);
        }
        DB_DataObject::debugLevel();
        return  DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);

    }

    public function findMaxPriority($project_id, $parent_project_page_id, $fetchMode='getOne')
    {
    	$oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
    	$query = 	'SELECT
	    				max(priority)
					FROM
						' . $this->aConf['table']['rvs_project_layout_page'] . '
					WHERE
						parent_project_page_id = ' . RvsLibs_String::quoteSmart($parent_project_page_id) . '
						AND project_id = ' . RvsLibs_String::quoteSmart($project_id)
    	;

    	$oProjectLayoutPage->query($query);
    	$aCloneData = array();
        while ($oProjectLayoutPage->fetch()) {
            $aCloneData[] = clone($oProjectLayoutPage);
        }
        DB_DataObject::debugLevel();
        return  DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);

    }

    /**
     * find IsMemberPage ใน แต่ละ page ของ project ว่า เป็น member?
     * @param $projectId
     * @param $isMember
     * @param $fetchMode
     * @author duangdao.k
     * @return unknown_type
     */
    public function findIsMemberPageByProjectId($projectId=null, $isMember = 0, $fetchMode='getassoc')
    {
    	DB_DataObject::debugLevel();
    	SGL::logMessage(null, PEAR_LOG_DEBUG);
    	$oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
    	 $query = sprintf( '
            SELECT
                 *
             FROM
                 %s lp
                 , %s  pp
             WHERE
                 lp.project_id = %s
                 AND pp.is_member_page = %s
                 AND lp.project_page_id = pp.project_page_id
                 '
                 , $this->aConf['table']['rvs_project_layout_page']
                 , $this->aConf['table']['rvs_project_page']
                 , RvsLibs_String::quoteSmart($projectId)
                 , $isMember
                 );
        $oProjectLayoutPage->query($query);
    	$aCloneData = array();
    	while ($oProjectLayoutPage->fetch()) {
    		$aCloneData[] = clone($oProjectLayoutPage);
    	}
    	DB_DataObject::debugLevel();
    	return  DbWrapper::fetchDatas($oProjectLayoutPage->_resultFields, $aCloneData, $fetchMode);
    }




   //***************************************** INSERT ****************************************************

    /**
     *
     * Enter description here ...
     * @param $layoutTemplateUserId
     * @param $layoutName
     * @param $layoutId
     */
    public function insertLayoutTemplateUser($layoutTemplateUserId, $layoutTemplatUserName, $layoutName)
    {
    	$oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_layout_template_user']);
    	$res = false;
    	if (!$oProjectLayoutPage->get('layout_template_user_id', $layoutTemplateUserId)) {
    		$oProjectLayoutPage->layout_template_user_id = $layoutTemplateUserId;
    		$oProjectLayoutPage->layout_template_name = $layoutTemplatUserName;
    		$oProjectLayoutPage->layout_name = $layoutName;
    		$res = $oProjectLayoutPage->insert();
    	}
    	return $res;
    }

    /**
     *
     * Enter description here ...
     * @param $projectPageId
     * @param $projectId
     * @param $layoutTemplateUserId
     */
    public function insertProjectPageToLayout($projectPageId, $projectId, $layoutTemplateUserId)
    {
    	SGL::logMessage('pageId: ' . $projectPageId, PEAR_LOG_DEBUG);
    	SGL::logMessage('projectId: ' . $projectId, PEAR_LOG_DEBUG);

		$oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_page_to_layout']);
		$oProjectLayoutPage->project_page_id = $projectPageId;
		$oProjectLayoutPage->project_id = $projectId;
		$oProjectLayoutPage->layout_template_user_id = $layoutTemplateUserId;

		return $oProjectLayoutPage->insert();

    }

    /**
     * Insert Project Layout
     * @author Pharadol
     * @param <string> $priority
     * @param <string> $parentProjectPageId
     * @param <string> $projectPageId
     * @param <string> $projectId
     * form file PageStructrueMgr.php
     /*
        $query = "
                        INSERT INTO
                        {$this->conf['table']['rvs_project_layout_page']} (
                                                                project_id
                                                                , project_page_id
                                                                , parent_project_page_id
                                                                , priority
                                                            )
                        VALUES (
                                        '$input->project_id'
                                        , '$input->project_page_id'
                                        , '$input->parent_project_page_id'
                                        , '$input->priority'
                                      )
                    ";
        $res = $this->dbh->query($query);
        */
   public function insertProjectLayout($priority = null, $parentProjectPageId = null, $projectPageId = null, $projectId = null, $isHome = '0')
   {
      DB_DataObject::debugLevel();
      //SGL::logMessage(null, PEAR_LOG_DEBUG);
      $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
      if (!is_null($priority) && !is_null($parentProjectPageId) && !is_null($projectPageId) && !is_null($projectId)) {
           $query = sprintf('
                        INSERT INTO
                                             %s (
                                                     project_id
                                                     , project_page_id
                                                     , parent_project_page_id
                                                     , priority
           											 , is_home
                                                    )
                              VALUES (
                                              %s
                                            , %s
                                            , %s
                                            , %s
           									, %s
                                            )
                             '
                             , $this->aConf['table']['rvs_project_layout_page']
                             , RvsLibs_String::quoteSmart($projectId)
                             , RvsLibs_String::quoteSmart($projectPageId)
                             , RvsLibs_String::quoteSmart($parentProjectPageId)
                             , RvsLibs_String::quoteSmart($priority)
           					 , RvsLibs_String::quoteSmart($isHome)
                             );
          $oProjectLayoutPage->query($query);
      }
   }
   //*****************************************UPDATE***************************************************

   public function updatePriorityByprojectPageId($projectId = null, $projectPageId = null, $priority = null)
   {
       SGL::logMessage(null, PEAR_LOG_DEBUG);
       DB_DataObject::debugLevel();
       $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
       $query = sprintf('
            UPDATE
                %s
            SET
                 priority = %s
            WHERE
                project_id = %s
                AND project_page_id = %s
            '
            , $this->aConf['table']['rvs_project_layout_page']
            , RvsLibs_String::quoteSmart($priority)
            , RvsLibs_String::quoteSmart($projectId)
            , RvsLibs_String::quoteSmart($projectPageId)
        );
        $res = $oProjectLayoutPage->query($query);
        DB_DataObject::debugLevel();
        return $res;
   }
   /**************************************
    * RV.5
    ***************************************/
	public function updateParentPageIdAndPriorityByprojectPageId($projectId = null, $projectPageId = null, $parentPaegId=null,$priority = null)
   {
       SGL::logMessage(null, PEAR_LOG_DEBUG);
       DB_DataObject::debugLevel();
       $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
       $query = sprintf('
            UPDATE
                %s
            SET
                 parent_project_page_id =%s
            	, priority = %s
            WHERE
                project_id = %s
                AND project_page_id = %s
            '
            , $this->aConf['table']['rvs_project_layout_page']
            , RvsLibs_String::quoteSmart($parentPaegId)
            , RvsLibs_String::quoteSmart($priority)
            , RvsLibs_String::quoteSmart($projectId)
            , RvsLibs_String::quoteSmart($projectPageId)
        );
        $res = $oProjectLayoutPage->query($query);
        DB_DataObject::debugLevel();
        return $res;
   }


 public function updatePagedataByProjectIdAndUserId($projectPageId = null, $usrId = null, $pageData=null,$priority = null)
   {
       SGL::logMessage(null, PEAR_LOG_DEBUG);
       DB_DataObject::debugLevel();
       $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_page']);
       $query = sprintf('
            UPDATE
                %s
            SET
                 page_data = %s
            WHERE
                project_page_id = %s
                AND rvs_usr_id = %s
            '
            , $this->aConf['table']['rvs_project_page']
            , RvsLibs_String::quoteSmart($pageData)
            , RvsLibs_String::quoteSmart($projectPageId)
            , RvsLibs_String::quoteSmart($usrId)
        );
        $res = $oProjectLayoutPage->query($query);
        DB_DataObject::debugLevel();
        return $res;
   }

    /**
     *
     * Enter description here ...
     * @param $layoutTemplateUserId
     * @param $layoutName
     * @param $layoutId
     */
    public function updateLayoutTemplateUser($layoutTemplateUserId, $layoutTemplateUserName=null, $layoutName=null)
    {
    	if (is_null($layoutTemplateUserName) && is_null($layoutName)) {
    		return true;
    	}
    	$oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_layout_template_user']);
    	$res = false;
    	if ($oProjectLayoutPage->get('layout_template_user_id', $layoutTemplateUserId)) {
    		$oProjectLayoutPage->layout_template_user_id = $layoutTemplateUserId;
    		if (!is_null($layoutTemplateUserName)) {
    			$oProjectLayoutPage->layout_template_name = $layoutTemplateUserName;
    		}
    		if (!is_null($layoutName)) {
    			$oProjectLayoutPage->layout_name = $layoutName;
    		}
    		$res = $oProjectLayoutPage->update();
    	}
    	return $res;
    }

  //****************************************** DELETE ***************************************************
    /**
     * delete project layout page by usrid and projectid
     * $query = "
                        DELETE
                                    {$this->conf['table']['rvs_project_layout_page']} as pl
                        FROM
                                    {$this->conf['table']['rvs_project_layout_page']} as pl
                                    , {$this->conf['table']['rvs_project']} as p
                        WHERE
                                    pl.project_id = p.project_id
                                    AND pl.project_id = '$input->project_id'
                                    AND p.rvs_usr_id = '$input->rvs_usr_id'
                    ";
     * @author pharadol
     * @param <string> $projectId
     * @param <string> $usrId
     * @return true:false
     * form file RemoveProjectMgr.php
     */
   public function deleteProjectLayoutPage($projectId = null, $usrId = null, $projectPageId = null)
   {
        DB_DataObject::debugLevel();
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
        if (!is_null($projectId)) {
            /*
        	$query = sprintf('
                DELETE
                    %s  as pl
                    , %s  as pp
                FROM
                    %s  as pl
                    , %s  as pp
                    , %s  as p
                WHERE
                    pl.project_id = p.project_id
                    AND pl.project_page_id = pp.project_page_id
                    AND pl.project_id = %s
                    AND p.rvs_usr_id = %s
                    %s'
                , $this->aConf['table']['rvs_project_layout_page']
                , $this->aConf['table']['rvs_project_page']
                , $this->aConf['table']['rvs_project_layout_page']
                , $this->aConf['table']['rvs_project_page']
                , $this->aConf['table']['rvs_project']
                , RvsLibs_String::quoteSmart($projectId)
                , RvsLibs_String::quoteSmart($usrId)
                , (!is_null($projectPageId)) ? 'AND pl.project_page_id =' . RvsLibs_String::quoteSmart($projectPageId) : ''
                        );
            */
        	   $query = sprintf('
                DELETE

                FROM
                    %s
                WHERE
                    project_id = %s
                '
                , $this->aConf['table']['rvs_project_layout_page']
                , RvsLibs_String::quoteSmart($projectId)
                );
            $res = $oProjectLayoutPage->query($query);
        }
		return (isset($res) && $res)? true : false;
   }

 /* delete project layout page by usrid and projectid used MovePage Step5
     * $query = "
                        DELETE
                                    {$this->conf['table']['rvs_project_layout_page']} as pl
                        FROM
                                    {$this->conf['table']['rvs_project_layout_page']} as pl
                                    , {$this->conf['table']['rvs_project']} as p
                        WHERE
                                    pl.project_id = p.project_id
                                    AND pl.project_id = '$input->project_id'
                                    AND p.rvs_usr_id = '$input->rvs_usr_id'
                    ";
     * @author duangdao.k
     * @param <string> $projectId
     * @param <string> $usrId
     * @return true:false
     *
     */
   public function deleteProjectLayoutPageByProjectIdAndUsrId($projectId = null, $usrId = null, $projectPageId = null)
   {
        DB_DataObject::debugLevel();
        SGL::logMessage(null, PEAR_LOG_DEBUG);
        $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
        if (!is_null($usrId) && !is_null($projectId)) {

        	/*$query = sprintf('
                DELETE
                    %s  as pl
                FROM
                    %s  as pl
                    , %s  as p
                WHERE
                    pl.project_id = p.project_id
                    AND pl.project_id = %s
                    AND p.rvs_usr_id = %s
                    %s'
                , $this->aConf['table']['rvs_project_layout_page']
                , $this->aConf['table']['rvs_project_layout_page']
                , $this->aConf['table']['rvs_project']
                , RvsLibs_String::quoteSmart($projectId)
                , RvsLibs_String::quoteSmart($usrId)
                , (!is_null($projectPageId)) ? 'AND pl.project_page_id =' . RvsLibs_String::quoteSmart($projectPageId) : ''
                  );
                  */

        	$query = sprintf('
                DELETE

                FROM
                    %s
                WHERE
                    project_id = %s
                    %s'
                , $this->aConf['table']['rvs_project_layout_page']
                , RvsLibs_String::quoteSmart($projectId)
                , (!is_null($projectPageId)) ? 'AND project_page_id =' . RvsLibs_String::quoteSmart($projectPageId) : ''
                  );
            $res = $oProjectLayoutPage->query($query);
        }
        return (isset($res) && $res)? true : false;
   }

   /**
    * Delete Project Layout by projectpageid and usrid and projectId
    * @author pharadol
    * @param <string> $projectPageId
    * @param <string> $usrId
    * @param <string> $projectId
    * @return <string>
    * form file PageStructureMgr.php
    /*
                   $query2= "
                        DELETE
                                    {$this->conf['table']['rvs_project_layout_page']} as pl
                        FROM
                                    {$this->conf['table']['rvs_project_layout_page']} as pl
                                    , {$this->conf['table']['rvs_project']} as p
                        WHERE
                                    pl.project_id = p.project_id
                                    AND pl.project_id = '$input->project_id'
                                    AND p.rvs_usr_id = '$input->rvs_usr_id'
                                    AND pl.project_page_id = '$projectPageId'
                        ";
                     $res2 = $this->dbh->query($query2);
      */
   public function deleteProjectLayoutByProjectPageIdAndUsrIdAndProjectId($projectPageId, $usrId, $projectId)
   {
        DB_DataObject::debugLevel();
        //SGL::logMessage(null, PEAR_LOG_DEBUG);
        $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_layout_page']);
        $oProjectToLayout = DB_DataObject::factory($this->aConf['table']['rvs_project_page_to_layout']);

        $query = sprintf('
                        DELETE
                        FROM
                                    %s
                        WHERE
                                    project_id = %s
                                    AND project_page_id = %s
                                '
        		, $this->aConf['table']['rvs_project_page_to_layout']
        		,  RvsLibs_String::quoteSmart($projectId)
        		,  RvsLibs_String::quoteSmart($projectPageId)
        );
        $res = $oProjectToLayout->query($query);

        $query = sprintf('
                        DELETE
                        FROM
                                    %s
                        WHERE
                                    project_id = %s
                                    AND project_page_id = %s
                                '
                                , $this->aConf['table']['rvs_project_layout_page']
                                ,  RvsLibs_String::quoteSmart($projectId)
                                ,  RvsLibs_String::quoteSmart($projectPageId)
                                );

        $res = $oProjectLayoutPage->query($query);
		return (isset($res) && $res)? true : false;
   }

   public function deleteLayoutTemplateUser($layoutTemplateUserId)
   {
   		SGL::logMessage(null, PEAR_LOG_DEBUG);
        $oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_layout_template_user']);
        if ($oProjectLayoutPage->get('layout_template_user_id', $layoutTemplateUserId)) {
        	$oProjectLayoutPage->layout_template_user_id = $layoutTemplateUserId;
        	$oProjectLayoutPage->delete();
        	if (SGL::isError($oProjectLayoutPage)) {
        		SGL_Error::pop();
        		return false;
        	} else {
        		return true;
        	}
        }
   		return false;
   }

   public function deleteProjectPageToLayoutByProjectPageId($projectPageId)
   {
   	SGL::logMessage(null, PEAR_LOG_DEBUG);
   	$oProjectLayoutPage = DB_DataObject::factory($this->aConf['table']['rvs_project_page_to_layout']);
   	if ($oProjectLayoutPage->get('project_page_id', $projectPageId)) {
   		$oProjectLayoutPage->project_page_id = $projectPageId;
   		$oProjectLayoutPage->delete();
   		if (SGL::isError($oProjectLayoutPage)) {
   			SGL_Error::pop();
   			return false;
   		} else {
   			return true;
   		}
   	}
   	return false;
   }

   public function findProjectPageToLayoutByProject($projectId, $fecthMode='getassoc')
   {
		SGL::logMessage(null, PEAR_LOG_DEBUG);
        DB_DataObject::debugLevel();
        $oLayoutTemplate = DB_DataObject::factory($this->aConf['table']['rvs_project_page_to_layout']);
        $oLayoutTemplate->project_id = $projectId;
        $oLayoutTemplate->find();

        $aCloneData = array();
        while ($oLayoutTemplate->fetch()) {
            $aCloneData[]= clone($oLayoutTemplate);
        }
        return DbWrapper::fetchDatas($oLayoutTemplate->_resultFields, $aCloneData, $fecthMode);
   }

   public function findAllBlockToLayout($layoutTemplateUserId, $fecthMode='getassoc')
   {
	   	SGL::logMessage(null, PEAR_LOG_DEBUG);
	   	DB_DataObject::debugLevel();
	   	$oLayoutTemplate = DB_DataObject::factory($this->aConf['table']['rvs_block_to_layout_template']);
	   	$oLayoutTemplate->layout_template_user_id = $layoutTemplateUserId;
	   	$oLayoutTemplate->find();

	   	$aCloneData = array();
	   	while ($oLayoutTemplate->fetch()) {
	   		$aCloneData[]= clone($oLayoutTemplate);
	   	}
	   	return DbWrapper::fetchDatas($oLayoutTemplate->_resultFields, $aCloneData, $fecthMode);
   }

	public function findLayoutTemplateById($layoutTemplateUserId, $fecthMode='getassoc')
   {
	   	SGL::logMessage(null, PEAR_LOG_DEBUG);
	   	DB_DataObject::debugLevel();
	   	$oLayoutTemplate = DB_DataObject::factory($this->aConf['table']['rvs_layout_template_user']);
	   	$oLayoutTemplate->layout_template_user_id = $layoutTemplateUserId;
	   	$oLayoutTemplate->find();

	   	$aCloneData = array();
	   	while ($oLayoutTemplate->fetch()) {
	   		$aCloneData[]= clone($oLayoutTemplate);
	   	}
	   	return DbWrapper::fetchDatas($oLayoutTemplate->_resultFields, $aCloneData, $fecthMode);
   }

   public function backupsql($projectId, $usrId, $projectPageId=null)
   {
       SGL::logMessage(null, PEAR_LOG_DEBUG);
       $aSQLData = array();
       $oProjectLayoutPage = $this->findProjectLayoutPageByProjectId($projectId, $projectPageId, 'getDataObject');
       foreach ($oProjectLayoutPage as $k => $v) {
           $aSQLData[] = DbWrapper::buildSQLFormat($v);
       }

       //backup rvs_project_page_to_layout
       $oLayoutTemplate = $this->findProjectPageToLayoutByProject($projectId, 'getDataObject');
       foreach ($oLayoutTemplate as $k => $v) {
       		$aSQLData[] = DbWrapper::buildSQLFormat($v);

       		//backup rvs_block_to_layout_template
       		$blockToLayout = $this->findAllBlockToLayout($v->layout_template_user_id, 'getDataObject');
       		foreach ($blockToLayout as $v2) {
       			$aSQLData[] = DbWrapper::buildSQLFormat($v2);
       		}

       		// backup rvs_layout_template_user
       		$layoutTemplate = $this->findLayoutTemplateById($v->layout_template_user_id, 'getDataObject');
       		foreach ($layoutTemplate as $v3) {
       			$aSQLData[] = DbWrapper::buildSQLFormat($v3);
       		}
       }
       return $aSQLData;
   }

   public function deleteProjectOfUserId($projectId, $usrId, $aProjectPageId=array())
   {
   	SGL::logMessage(null, PEAR_LOG_DEBUG);
   	//delete online form
   	$aProjectPageId = DaoFactory::ProjectLayoutPage()->findProjectLayoutPage($projectId, 'getassoc');
   	foreach ($aProjectPageId as $pageId => $val) {
   		$formId = DaoFactory::OnlineForm()->findFormTemplateIdByProjectPageId($pageId, 'getone');
   		$res = DaoFactory::OnlineForm()->deleteOnlineFormByUsrIdAndProjectId($formId, $pageId, $projectId, $usrId);
   	}
   	$result = DaoFactory::ProjectLayoutPage()->deleteProjectLayoutPage($projectId);
   }
}
?>