File: //opt/cpanel/ea-php54/root/usr/share/pear/RVSeagullMod/lib/RVSGL/rvsLibs/Template.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$
// +---------------------------------------------------------------------------+
/**
* RvSiteBuilder templates libary
*
* @package RvsLibs
* @author Pairote Manunphol <pairote@rvglobalsoft.com>
* @version $Revision$
* @since PHP 5.1
*/
if (class_exists('RvsLibs_Template_Delete') === false) {
class RvsLibs_Template_Delete
{
}
}
if (class_exists('RvsLibs_Template_Set') === false) {
class RvsLibs_Template_Set extends RvsLibs_Template_Delete
{
/**
* <!-- Start Navigation -->
...
<!-- End Navigation -->
<!-- Start Header Banner -->
...
<!-- End Header Banner -->
<div class="rs_header_spacer">
</div>
* @param unknown $templateCode
* @param unknown $navConfig
* @return unknown|mixed
*/
public static function setRsNavPosition($templateCode, $navConfig)
{
if (empty($templateCode)) return $templateCode;
if (preg_match('/(<\!--\s*Navigation\s*-->.*?<\!--\s*End\s*Navigation\s*-->)/ims', $templateCode, $aMatch)) {
$navCode = $aMatch[1];
$templateCode = preg_replace('/(<\!--\s*Navigation\s*-->.*?<\!--\s*End\s*Navigation\s*-->)/ims', "", $templateCode);
switch ($navConfig)
{
case 'HDSP+HB+NAV':
$templateCode = preg_replace('/(<\!--\s*End\s*Header\s*Banner\s*-->)/ims', "$1 \n" . $navCode, $templateCode);
break;
case 'HDSP+NAV+HB':
$templateCode = preg_replace('/(<\!--\s*Header\s*Banner\s*-->)/ims', $navCode . "\n $1", $templateCode);
break;
case 'NAV+HDSP+HB';
default:
$templateCode = preg_replace('/(<div\s*class\s*=\s*"[^"]*rs_header_spacer[^"]*"[^>]*>)/ims', $navCode . "\n $1", $templateCode);
break;
}
}
return $templateCode;
}
/**
<!-- Start Navigation -->
...
<!-- End Navigation -->
<!-- Start Header Banner -->
...
<!-- End Header Banner -->
<div class="selected_headerblock">
...
</div>
* @param unknown $templateCode
* @param unknown $navConfig
* @return unknown|mixed
*/
public static function setUikitNavPosition($templateCode, $navConfig)
{
if (empty($templateCode)) return $templateCode;
if (preg_match('/(<\!--\s*Start\s*Navigation\s*-->.*?<\!--\s*End\s*Navigation\s*-->)/ims', $templateCode, $aMatch)) {
$navCode = $aMatch[1];
$templateCode = preg_replace('/(<\!--\s*Start\s*Navigation\s*-->.*?<\!--\s*End\s*Navigation\s*-->)/ims', "", $templateCode);
switch ($navConfig)
{
case 'HDSP+HB+NAV':
SGL::logMessage('rvdebug: layout1:' . $navConfig);
$templateCode = preg_replace('/(<\!--\s*End\s*Header\s*Banner\s*-->)/ims', "$1 \n" . $navCode, $templateCode);
break;
case 'HDSP+NAV+HB':
SGL::logMessage('rvdebug: layout2:' . $navConfig);
$templateCode = preg_replace('/(<\!--\s*Start\s*Header\s*Banner\s*-->)/ims', $navCode . "\n $1", $templateCode);
break;
case 'NAV+HDSP+HB';
SGL::logMessage('rvdebug: layout3:' . $navConfig);
default:
$templateCode = preg_replace('/(<div\s*id\s*=\s*"[^"]*selected_headerblock[^"]*"[^>]*>)/ims', $navCode . "\n $1", $templateCode);
break;
}
}
//SGL::logMessage('rvdebug: ==== templateCode ====' . $templateCode, PEAR_LOG_DEBUG);
return $templateCode;
}
public static function setUikitNavStyle($navConfig, $tarGetFile, $fileCss)
{
switch ($fileCss) {
case 'rvsb-nav-style-1.css':
self::setUikitNavStyle1($navConfig, $tarGetFile);
break;
case 'rvsb-nav-style-2.css':
self::setUikitNavStyle2($navConfig, $tarGetFile);
break;
case 'rvsb-nav-style-3.css':
self::setUikitNavStyle3($navConfig, $tarGetFile);
break;
case 'rvsb-nav-style-4.css':
self::setUikitNavStyle4($navConfig, $tarGetFile);
break;
case 'rvsb-nav-style-5.css':
self::setUikitNavStyle5($navConfig, $tarGetFile);
break;
default:
}
}
public static function setUikitNavStyle1($navConfig, $tarGetFile, $sourceFile=null)
{
if (is_null($sourceFile)) {
$sourceFile = RvsLibs_File::buildPath(
array(UIKIT_LIB_PATH, 'rvsb-css', 'rvsb-nav-style-1.css')
);
}
require_once SGL_MOD_DIR . '/sitebuilder/classes/RV_CssParser.php';
$oCss = RV_CssParser::singleton();
//load default
$aData = $oCss->parse_file($sourceFile);
//bg normal
$oCss->set_value('.uk-navbar', 'background-color', $navConfig['bgcolor']['color_bgn']);
//lv0
//text normal
$oCss->set_value('.uk-navbar-nav > li > a', 'color', $navConfig['link']['color_anor']);
$oCss->set_value('.uk-navbar-nav > li > a', 'font-family', $navConfig['font']['font_family']);
$oCss->set_value('.uk-navbar-nav > li > a', 'font-size', $navConfig['font']['font_size']);
$oCss->set_value('div.uk-dropdown ul.uk-nav li a', 'font-family', $navConfig['font']['font_family']);
$oCss->set_value('div.uk-dropdown ul.uk-nav li a', 'font-size', $navConfig['font']['font_size']);
//bg hover
$oCss->set_value('.uk-navbar-nav > li:hover > a', 'background-color', $navConfig['bgcolor']['color_bgh']);
$oCss->set_value('.uk-navbar-nav > li > a:focus', 'background-color', $navConfig['bgcolor']['color_bgh']);
$oCss->set_value('.uk-navbar-nav > li.uk-open > a', 'background-color', $navConfig['bgcolor']['color_bgh']);
$oCss->set_value('.getHoverNavColorLevel0', 'background-color', $navConfig['bgcolor']['color_bgh']);
//text hover
$oCss->set_value('.uk-navbar-nav > li:hover > a', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li > a:focus', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li.uk-open > a', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.getHoverNavColorLevel0', 'color', $navConfig['link']['color_ahov']);
//active
$oCss->set_value('.uk-navbar-nav > li.uk-active > a', 'background-color', $navConfig['bgcolor']['color_bgh']);
$oCss->set_value('.uk-navbar-nav > li.uk-active > a', 'color', $navConfig['link']['color_ahov']);
//lv1
//bg normal
$oCss->set_value('.uk-dropdown', 'background-color',$navConfig['bgcolor']['color_bgn']);
//text normal
$oCss->set_value('.uk-nav-navbar > li > a', 'color', $navConfig['link']['color_anor_sub']);
//text hover
$oCss->set_value('.uk-nav-navbar > li > a:hover', 'color', $navConfig['link']['color_ahov_sub']);
$oCss->set_value('.getHoverNavColorLevel1', 'color', $navConfig['link']['color_ahov_sub']);
//bg hover
$oCss->set_value('.uk-nav-navbar > li > a:hover', 'background-color', $navConfig['bgcolor']['color_bgh_sub']);
$oCss->set_value('.getHoverNavColorLevel1', 'background-color', $navConfig['bgcolor']['color_bgh_sub']);
//lv2
//text normal
$oCss->set_value('ul.uk-nav-sub > li > a', 'color', $navConfig['link']['color_anor_sub2']);
//text hover
$oCss->set_value('ul.uk-nav-sub > li > a:hover', 'color', $navConfig['link']['color_ahov_sub2']);
$oCss->set_value('ul.uk-nav-sub > li > a:focus', 'color', $navConfig['link']['color_ahov_sub2']);
$oCss->set_value('.getHoverNavColorLevel2', 'color', $navConfig['link']['color_ahov_sub2']);
$oCss->build_css(false);
//update uikit css footer
SGL::logMessage($tarGetFile, PEAR_LOG_DEBUG);
$oCss->write_file($tarGetFile);
}
public static function setUikitNavStyle2($navConfig, $tarGetFile, $sourceFile=null)
{
if (is_null($sourceFile)) {
$sourceFile = RvsLibs_File::buildPath(
array(UIKIT_LIB_PATH, 'rvsb-css', 'rvsb-nav-style-2.css')
);
}
require_once SGL_MOD_DIR . '/sitebuilder/classes/RV_CssParser.php';
$oCss = RV_CssParser::singleton();
//load default
$aData = $oCss->parse_file($sourceFile);
//bg normal
$oCss->set_value('.uk-navbar', 'background-color', $navConfig['bgcolor']['color_bgn']);
//lv0
//text normal
$oCss->set_value('.uk-navbar-nav > li > a', 'color', $navConfig['link']['color_anor']);
$oCss->set_value('.uk-navbar-nav > li > a', 'font-family', $navConfig['font']['font_family']);
$oCss->set_value('.uk-navbar-nav > li > a', 'font-size', $navConfig['font']['font_size']);
$oCss->set_value('div.uk-dropdown ul.uk-nav li a', 'font-family', $navConfig['font']['font_family']);
$oCss->set_value('div.uk-dropdown ul.uk-nav li a', 'font-size', $navConfig['font']['font_size']);
//bg hover
$oCss->set_value('.uk-navbar-nav > li:hover > a', 'background-color', $navConfig['bgcolor']['color_bgh']);
$oCss->set_value('.uk-navbar-nav > li > a:focus', 'background-color', $navConfig['bgcolor']['color_bgh']);
$oCss->set_value('.uk-navbar-nav > li.uk-open > a', 'background-color', $navConfig['bgcolor']['color_bgh']);
$oCss->set_value('.getHoverNavColorLevel0', 'background-color', $navConfig['bgcolor']['color_bgh']);
//text hover
$oCss->set_value('.uk-navbar-nav > li:hover > a', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li > a:focus', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li.uk-open > a', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.getHoverNavColorLevel0', 'color', $navConfig['link']['color_ahov']);
//active
$oCss->set_value('.uk-navbar-nav > li.uk-active > a', 'background-color', $navConfig['bgcolor']['color_bgh']);
$oCss->set_value('.uk-navbar-nav > li.uk-active > a', 'color', $navConfig['link']['color_ahov']);
//lv1
//bg normal
$oCss->set_value('.uk-dropdown', 'background-color',$navConfig['bgcolor']['color_bgn']);
//text normal
$oCss->set_value('.uk-nav-navbar > li > a', 'color', $navConfig['link']['color_anor_sub']);
//text hover
$oCss->set_value('.uk-nav-navbar > li > a:hover', 'color', $navConfig['link']['color_ahov_sub']);
$oCss->set_value('.getHoverNavColorLevel1', 'color', $navConfig['link']['color_ahov_sub']);
//bg hover
$oCss->set_value('.uk-nav-navbar > li > a:hover', 'background-color', $navConfig['bgcolor']['color_bgh_sub']);
$oCss->set_value('.getHoverNavColorLevel1', 'background-color', $navConfig['bgcolor']['color_bgh_sub']);
//lv2
//text normal
$oCss->set_value('ul.uk-nav-sub > li > a', 'color', $navConfig['link']['color_anor_sub2']);
//text hover
$oCss->set_value('ul.uk-nav-sub > li > a:hover', 'color', $navConfig['link']['color_ahov_sub2']);
$oCss->set_value('ul.uk-nav-sub > li > a:focus', 'color', $navConfig['link']['color_ahov_sub2']);
$oCss->set_value('.getHoverNavColorLevel2', 'color', $navConfig['link']['color_ahov_sub2']);
$oCss->build_css(false);
//update uikit css footer
SGL::logMessage($tarGetFile, PEAR_LOG_DEBUG);
$oCss->write_file($tarGetFile);
}
public static function setUikitNavStyle3($navConfig, $tarGetFile, $sourceFile=null)
{
if (is_null($sourceFile)) {
$sourceFile = RvsLibs_File::buildPath(
array(UIKIT_LIB_PATH, 'rvsb-css', 'rvsb-nav-style-3.css')
);
}
require_once SGL_MOD_DIR . '/sitebuilder/classes/RV_CssParser.php';
$oCss = RV_CssParser::singleton();
//bg normal
$oCss->set_value('.uk-navbar', 'background-color', $navConfig['bgcolor']['color_bgn']);
//lv0
//text normal
$oCss->set_value('.uk-navbar-nav > li > a', 'color', $navConfig['link']['color_anor']);
$oCss->set_value('.uk-navbar-nav > li > a', 'font-family', $navConfig['font']['font_family']);
$oCss->set_value('.uk-navbar-nav > li > a', 'font-size', $navConfig['font']['font_size']);
//bg hover
$oCss->set_value('.uk-navbar-nav > li:hover > a', 'background-color', 'transparent !important');
$oCss->set_value('.uk-navbar-nav > li > a:focus', 'background-color', 'transparent !important');
$oCss->set_value('.uk-navbar-nav > li.uk-open > a', 'background-color', 'transparent !important');
$oCss->set_value('.getHoverNavColorLevel0', 'background-color',$navConfig['bgcolor']['color_bgh']);
//text hover
$oCss->set_value('.uk-navbar-nav > li:hover > a', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li > a:focus', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li.uk-open > a', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.getHoverNavColorLevel0', 'color', $navConfig['link']['color_ahov']);
//line Hover
$oCss->set_value('.uk-navbar-nav > li:hover > a', 'border-color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li > a:focus', 'border-color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-dropdown > ul > li > a:focus', 'border-top', '0px !important');
//uk-active
$oCss->set_value('.uk-navbar-nav > li.uk-active > a', 'background-color', $navConfig['bgcolor']['color_bgh']);
$oCss->set_value('.uk-navbar-nav > li.uk-active > a', 'border-color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li.uk-active > a', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.getHoverNavColorLevel0', 'background-color', $navConfig['bgcolor']['color_bgh']);
//lv1
//bg normal
$oCss->set_value('.uk-dropdown', 'background-color',$navConfig['bgcolor']['color_bgn']);
//text normal
$oCss->set_value('.uk-nav-navbar > li > a', 'color', $navConfig['link']['color_anor_sub']);
//text hover
$oCss->set_value('.uk-nav-navbar > li > a:hover', 'color', $navConfig['link']['color_ahov_sub']);
$oCss->set_value('.getHoverNavColorLevel1', 'color', $navConfig['link']['color_ahov_sub']);
//bg hover
$oCss->set_value('.uk-nav-navbar > li > a:hover', 'background-color', $navConfig['bgcolor']['color_bgh_sub']);
$oCss->set_value('.getHoverNavColorLevel1', 'background-color', $navConfig['bgcolor']['color_bgh_sub']);
//lv2
//text normal
$oCss->set_value('ul.uk-nav-sub > li > a', 'color', $navConfig['link']['color_anor_sub2']);
//text hover
$oCss->set_value('ul.uk-nav-sub > li > a:hover', 'color', $navConfig['link']['color_ahov_sub2']);
$oCss->set_value('ul.uk-nav-sub > li > a:focus', 'color', $navConfig['link']['color_ahov_sub2']);
$oCss->set_value('.getHoverNavColorLevel2', 'color', $navConfig['link']['color_ahov_sub2']);
$oCss->build_css(false);
//update uikit css footer
SGL::logMessage($tarGetFile, PEAR_LOG_DEBUG);
$oCss->write_file($tarGetFile);
}
public static function setUikitNavStyle4($navConfig, $tarGetFile, $sourceFile=null)
{
if (is_null($sourceFile)) {
$sourceFile = RvsLibs_File::buildPath(
array(UIKIT_LIB_PATH, 'rvsb-css', 'rvsb-nav-style-4.css')
);
}
require_once SGL_MOD_DIR . '/sitebuilder/classes/RV_CssParser.php';
$oCss = RV_CssParser::singleton();;
//bg normal
$oCss->set_value('.uk-navbar', 'background-color', $navConfig['bgcolor']['color_bgn']);
//lv0
//text normal
$oCss->set_value('.uk-navbar-nav > li > a', 'color', $navConfig['link']['color_anor']);
$oCss->set_value('.uk-navbar-nav > li > a', 'font-family', $navConfig['font']['font_family']);
$oCss->set_value('.uk-navbar-nav > li > a', 'font-size', $navConfig['font']['font_size']);
//bg hover
$oCss->set_value('.uk-navbar-nav > li:hover > a', 'background-color', $navConfig['bgcolor']['color_bgh']);
$oCss->set_value('.uk-navbar-nav > li > a:focus', 'background-color', 'transparent !important');
$oCss->set_value('.uk-navbar-nav > li.uk-open > a', 'background-color', $navConfig['bgcolor']['color_bgh']);
$oCss->set_value('.getHoverNavColorLevel0', 'background-color', $navConfig['bgcolor']['color_bgh']);
//bg hover image(style4 only)
//$oCss->set_value('.uk-navbar-nav > li:hover > a', 'background-image', 'linear-gradient(to bottom, '.$navConfig['bgcolor']['color_bgn'].' 50%, '.$navConfig['bgcolor']['color_bgh'].' 50%)');
//$oCss->set_value('.uk-navbar-nav > li > a:focus', 'background-image', 'linear-gradient(to bottom, '.$navConfig['bgcolor']['color_bgn'].' 50%, '.$navConfig['bgcolor']['color_bgh'].' 50%)');
//$oCss->set_value('.uk-navbar-nav > li.uk-open > a', 'background-image', 'linear-gradient(to bottom, '.$navConfig['bgcolor']['color_bgn'].' 50%, '.$navConfig['bgcolor']['color_bgh'].' 50%)');
//$oCss->set_value('.getHoverNavColorLevel0', 'background-image', 'linear-gradient(to bottom, '.$navConfig['bgcolor']['color_bgn'].' 50%, '.$navConfig['bgcolor']['color_bgh'].' 50%)');
//text hover
$oCss->set_value('.uk-navbar-nav > li:hover > a', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li > a:focus', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li.uk-open > a', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.getHoverNavColorLevel0', 'color', $navConfig['link']['color_ahov']);
//line Hover
$oCss->set_value('.uk-navbar-nav > li:hover > a', 'border-color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li > a:focus', 'border-color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li.uk-open > a', 'border-color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-dropdown > ul > li > a:focus', 'border-bottom', '0px !important');
//uk-active
$oCss->set_value('.uk-navbar-nav > li.uk-active > a', 'background-color', $navConfig['bgcolor']['color_bgh']);
$oCss->set_value('.uk-navbar-nav > li.uk-active > a', 'border-color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li.uk-active > a', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.getHoverNavColorLevel0', 'background-color', $navConfig['bgcolor']['color_bgh']);
//lv1
//bg normal
$oCss->set_value('.uk-dropdown', 'background-color',$navConfig['bgcolor']['color_bgn']);
//text normal
$oCss->set_value('.uk-nav-navbar > li > a', 'color', $navConfig['link']['color_anor_sub']);
//text hover
$oCss->set_value('.uk-nav-navbar > li > a:hover', 'color', $navConfig['link']['color_ahov_sub']);
$oCss->set_value('.getHoverNavColorLevel1', 'color', $navConfig['link']['color_ahov_sub']);
//bg hover
$oCss->set_value('.uk-nav-navbar > li > a:hover', 'background-color', $navConfig['bgcolor']['color_bgh_sub']);
$oCss->set_value('.getHoverNavColorLevel1', 'background-color', $navConfig['bgcolor']['color_bgh_sub']);
//lv2
//text normal
$oCss->set_value('ul.uk-nav-sub > li > a', 'color', $navConfig['link']['color_anor_sub2']);
//text hover
$oCss->set_value('ul.uk-nav-sub > li > a:hover', 'color', $navConfig['link']['color_ahov_sub2']);
$oCss->set_value('ul.uk-nav-sub > li > a:focus', 'color', $navConfig['link']['color_ahov_sub2']);
$oCss->set_value('.getHoverNavColorLevel2', 'color', $navConfig['link']['color_ahov_sub2']);
$oCss->build_css(false);
//update uikit css footer
SGL::logMessage($tarGetFile, PEAR_LOG_DEBUG);
$oCss->write_file($tarGetFile);
}
public static function setUikitNavStyle5($navConfig, $tarGetFile, $sourceFile=null)
{
if (is_null($sourceFile)) {
$sourceFile = RvsLibs_File::buildPath(
array(UIKIT_LIB_PATH, 'rvsb-css', 'rvsb-nav-style-5.css')
);
}
require_once SGL_MOD_DIR . '/sitebuilder/classes/RV_CssParser.php';
$oCss = RV_CssParser::singleton();;
//bg normal
$oCss->set_value('.uk-navbar', 'background-color', $navConfig['bgcolor']['color_bgn']);
//lv0
//text normal
$oCss->set_value('.uk-navbar-nav > li > a', 'color', $navConfig['link']['color_anor']);
$oCss->set_value('.uk-navbar-nav > li > a', 'font-family', $navConfig['font']['font_family']);
$oCss->set_value('.uk-navbar-nav > li > a', 'font-size', $navConfig['font']['font_size']);
//bg hover
$oCss->set_value('.uk-navbar-nav > li:hover > a', 'background-color', 'transparent !important');
$oCss->set_value('.uk-navbar-nav > li > a:focus', 'background-color', 'transparent !important');
$oCss->set_value('.uk-navbar-nav > li.uk-open > a', 'background-color', 'transparent !important');
$oCss->set_value('.getHoverNavColorLevel0', 'background-color', 'transparent !important');
//text hover
$oCss->set_value('.uk-navbar-nav > li:hover > a', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li > a:focus', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li.uk-open > a', 'color', $navConfig['link']['color_ahov']);
$oCss->set_value('.getHoverNavColorLevel0', 'color', $navConfig['link']['color_ahov']);
//thin line hover = link hover
$oCss->set_value('.uk-navbar-nav > li > a:after', 'background-color', $navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li.uk-active a:after', 'background-color', $navConfig['link']['color_ahov']);
$oCss->set_value('.getHoverNavColorLevel0', 'background-color', $navConfig['link']['color_ahov']);
//uk-active
$oCss->set_value('.uk-navbar-nav > li.uk-active > a', 'background-color', 'transparent !important');
$oCss->set_value('.uk-navbar-nav > li.uk-active > a:after', 'background-color', $input->$navConfig['link']['color_ahov']);
$oCss->set_value('.uk-navbar-nav > li.uk-active > a', 'color', $navConfig['link']['color_ahov']);
//lv1
//bg normal
$oCss->set_value('.uk-dropdown', 'background-color',$navConfig['bgcolor']['color_bgn']);
//text normal
$oCss->set_value('.uk-nav-navbar > li > a', 'color', $navConfig['link']['color_anor_sub']);
//text hover
$oCss->set_value('.uk-nav-navbar > li > a:hover', 'color', $navConfig['link']['color_ahov_sub']);
$oCss->set_value('.getHoverNavColorLevel1', 'color', $navConfig['link']['color_ahov_sub']);
//bg hover
$oCss->set_value('.uk-nav-navbar > li > a:hover', 'background-color', $navConfig['bgcolor']['color_bgh_sub']);
$oCss->set_value('.getHoverNavColorLevel1', 'background-color', $navConfig['bgcolor']['color_bgh_sub']);
//lv2
//text normal
$oCss->set_value('ul.uk-nav-sub > li > a', 'color', $navConfig['link']['color_anor_sub2']);
//text hover
$oCss->set_value('ul.uk-nav-sub > li > a:hover', 'color', $navConfig['link']['color_ahov_sub2']);
$oCss->set_value('ul.uk-nav-sub > li > a:focus', 'color', $navConfig['link']['color_ahov_sub2']);
$oCss->set_value('.getHoverNavColorLevel2', 'color', $navConfig['link']['color_ahov_sub2']);
$oCss->build_css(false);
//update uikit css footer
SGL::logMessage($tarGetFile, PEAR_LOG_DEBUG);
$oCss->write_file($tarGetFile);
}
}
}
if (class_exists('RvsLibs_Template_Get') === false) {
class RvsLibs_Template_Get extends RvsLibs_Template_Set
{
public static function getPictureId($picture_name)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$aPictureId = DaoFactory::Picture()->findPictureIdByPictureName($picture_name, 'getrowobj');
if ($aPictureId) {
return $aPictureId->picture_id;
} elseif ($picture_name) {
$res = RvsLibs_Template::addNewPictureName($picture_name);
if ($res) {
return $res;
}
}
return false;
}
public static function getGenColorTone($pathRsColorConf)
{
if (isset($GLOBALS['_SGL']['rvsCache']['Main']['colorConfig']) === true) {
SGL::logMessage('By cache', PEAR_LOG_DEBUG);
$aColorConfig = $GLOBALS['_SGL']['rvsCache']['Main']['colorConfig'];
} else {
SGL::logMessage('set cache', PEAR_LOG_DEBUG);
$aColorConfig = array();
if (is_readable($pathRsColorConf) === true) {
$aColorConfig = RvsLibs_File::getFileSerialData($pathRsColorConf);
}
$GLOBALS['_SGL']['rvsCache']['Main']['colorConfig'] = $aColorConfig;
}
return $aColorConfig;
}
public static function getRsTemplateConfigFromCss($projectId, $templatePath, $templateItemFolder)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$aConfig = array();
$customcss = RvsLibs_Project::getCustomCssPath($projectId, $templateItemFolder);
$rvCssFile = RvsLibs_File::buildPath(array(
$customcss, 'layout.css'
));
if (!is_file($rvCssFile)) {
$rvCssFile = RvsLibs_File::buildPath(array(
$templatePath,
$templateItemFolder,
'layout.css'
));
}
if (is_file($rvCssFile)) {
require_once SGL_MOD_DIR . '/sitebuilder/classes/RV_CssParser.php';
$oCss = RV_CssParser::singleton();
$oCss->parse_file($rvCssFile);
$atMedia = $oCss->get_media_by_screen(960);
$mAtMedia = $oCss->get_media_by_screen(480);
$aConfig = array(
'rs_master' => 'HDSP+HB+NAV',
'header_spacerheight' => $oCss->get_value('.rs_header_spacer', 'height', $atMedia),
'header_bgcolor' => $oCss->get_value('.rs_header_spacer', 'background-color', $atMedia),
'background_color' => $oCss->get_value('body', 'background-color'),
'bgmenu' => $oCss->get_value('.bgmenu', 'background-color'),
'hb_effect' => 'slide',
'hb_effecttime' => '5',
/*start custom font*/
'content_margin_top' => '',
'content_margin_bottom' => '',
'content_margin_left' => '',
'content_margin_right' => '',
'body_font_family' => $oCss->get_value('body', 'font-family'),
'body_lineheight' => $oCss->get_value('body', 'line-height'),
'body_bgcolor' => $oCss->get_value('.rs_body_bgcolor', 'background-color'),
'body_color' => $oCss->get_value('body', 'color'),
'body_font_size' => $oCss->get_value('body', 'font-size'),
'body_font_weight' => $oCss->get_value('body', 'font-weight'),
'body_font_style' => $oCss->get_value('body', 'font-style'),
'link_font_family' => $oCss->get_value('a:link', 'font-family'),
'link_color' => $oCss->get_value('a:link', 'color'),
'link_font_size' => $oCss->get_value('a:link', 'font-size'),
'link_font_weight' => $oCss->get_value('a:link', 'font-weight'),
'link_font_style' => $oCss->get_value('a:link', 'font-style'),
'link_text_decoration' => $oCss->get_value('a:link', 'text-decoration'),
'hover_color' => $oCss->get_value('a:hover', 'color'),
'hover_font_size' => $oCss->get_value('a:hover', 'font-size'),
'hover_font_weight' => $oCss->get_value('a:hover', 'font-weight'),
'hover_font_style' => $oCss->get_value('a:hover', 'font-style'),
'hover_text_decoration' => $oCss->get_value('a:hover', 'text-decoration'),
/*end customfont*/
'm_header_banner_display' => $oCss->get_value('.rs_header_banner', 'display', $mAtMedia),
'm_logo_display' => $oCss->get_value('.rs_header_logo', 'display', $mAtMedia),
'm_companyname_display' => $oCss->get_value('.rs_header_companyname', 'display', $mAtMedia),
'm_slogan_display' => $oCss->get_value('.rs_header_slogan', 'display', $mAtMedia),
'm_body_color' => $oCss->get_value('.rs_header_companyname', 'color', $mAtMedia),
'm_body_bgcolor' => $oCss->get_value('.rs_header_spacer', 'background-color', $mAtMedia),
);
unset($oCss);
}
return $aConfig;
}
public static function getUikitTemplateConfigFromCss($projectId, $templatePath, $templateItemFolder)
{
SGL::logMessage($templateItemFolder, PEAR_LOG_DEBUG);
$aConfig = array();
$customcss = RvsLibs_Project::getCustomCssPath($projectId, $templateItemFolder);
SGL::logMessage('===2'.$customcss, PEAR_LOG_DEBUG);
$rvCssFile = RvsLibs_File::buildPath(array(
$customcss, 'rvsb-css/rvsb-extended-uikit.css'
));
SGL::logMessage('===3'.$rvCssFile, PEAR_LOG_DEBUG);
if (!is_file($rvCssFile)) {
$rvCssFile = RvsLibs_File::buildPath(array(
$templatePath,
$templateItemFolder,
'rvsb-css/rvsb-extended-uikit.css'
));
}
//echo '==>'.$rvCssFile;
if (is_file($rvCssFile)) {
require_once SGL_MOD_DIR . '/sitebuilder/classes/RV_CssParser.php';
$oCss = RV_CssParser::singleton();
$oCss->parse_file($rvCssFile);
//$atMedia = $oCss->get_media_by_screen(768,960);
$mAtMedia = $oCss->get_media_by_screen(480);
//echo '<pre>';print_r($oCss);exit;
$aConfig = array(
'rs_master' => 'HDSP+HB+NAV',
'header_spacerheight' => $oCss->get_value('.rs_header_spacer', 'height'),
'header_bgcolor' => $oCss->get_value('.rs_header_spacer', 'background-color'),
//'background_color' => $oCss->get_value('body', 'background-color'),
//'bgmenu' => $oCss->get_value('.bgmenu', 'background-color'),
//'hb_effect' => 'slide',
//'hb_effecttime' => '5',
/*start custom font*/
'content_margin_top' => '',
'content_margin_bottom' => '',
'content_margin_left' => '',
'content_margin_right' => '',
'body_font_family' => $oCss->get_value('body', 'font-family'),
'body_lineheight' => $oCss->get_value('body', 'line-height'),
'body_bgcolor' => $oCss->get_value('.rs_body_bgcolor', 'background-color'),
'body_color' => $oCss->get_value('body', 'color'),
'body_font_size' => $oCss->get_value('body', 'font-size'),
'body_font_weight' => $oCss->get_value('body', 'font-weight'),
'body_font_style' => $oCss->get_value('body', 'font-style'),
'link_font_family' => $oCss->get_value('a:link', 'font-family'),
'link_color' => $oCss->get_value('a:link', 'color'),
'link_font_size' => $oCss->get_value('a:link', 'font-size'),
'link_font_weight' => $oCss->get_value('a:link', 'font-weight'),
'link_font_style' => $oCss->get_value('a:link', 'font-style'),
'link_text_decoration' => $oCss->get_value('a:link', 'text-decoration'),
'hover_color' => $oCss->get_value('a:hover', 'color'),
'hover_font_size' => $oCss->get_value('a:hover', 'font-size'),
'hover_font_weight' => $oCss->get_value('a:hover', 'font-weight'),
'hover_font_style' => $oCss->get_value('a:hover', 'font-style'),
'hover_text_decoration' => $oCss->get_value('a:hover', 'text-decoration'),
/*end customfont*/
'm_header_banner_display' => $oCss->get_value('.rs_header_banner', 'display', $mAtMedia),
'm_logo_display' => $oCss->get_value('.rs_header_logo', 'display', $mAtMedia),
'm_companyname_display' => $oCss->get_value('.rs_header_companyname', 'display', $mAtMedia),
'm_slogan_display' => $oCss->get_value('.rs_header_slogan', 'display', $mAtMedia),
'm_body_color' => $oCss->get_value('.rs_header_companyname', 'color', $mAtMedia),
'm_body_bgcolor' => $oCss->get_value('.rs_header_spacer', 'background-color', $mAtMedia),
);
}
//echo '<pre>';print_r($aConfig);exit;
return $aConfig;
}
public static function getTemplateConfig($projectId, $templatePath, $templateItemFolder)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$customcss = RvsLibs_Project::getCustomCssPath($projectId, $templateItemFolder);
$templateConfCustom = RvsLibs_File::buildPath(array(
$customcss, 'template.ini.php'
));
$templateConf = RvsLibs_File::buildPath(array(
$templatePath,
$templateItemFolder,
'template.ini.php'
));
$defaultConfig = array(
'rs_master' => 'HDSP+HB+NAV',/*(HDSP+HB+NAV, HDSP+NAV+HB, NAV+HDSP+HB)*/
'rs_header_theme' => '7-black',
'rs_header_id' => 'header14.ini.php',
'rs_header_custom' => false,
'rs_header_spacerheight'=> '100px',
'rs_header_height' => 250,
'rs_header_width' => 940,
'rs_header_positionx' => 0,
'rs_header_positiony' => 0,
'rs_header_component_theme' => '7-black',
'rs_header_component_id' => 'HD024.ini.php',
'rs_hb_img' => 'header_banner.jpg',
'rs_hb_effect' => 'slide',
'rs_hb_effecttime' => 5,
'rs_navigator_theme' => '7-black',
'rs_navigator_id' => 'navColor14.ini.php',
'rs_navigator_custom' => false,
'rs_navigator_align' => 'left',
'rs_navigator_txtSliderSpaceNavColor' => 1,
'rs_navigator_level' => 1,
'rs_background_color' => '',
'rs_background_image' => '',
/* 'rs_background_position_x' => 'left',
'rs_background_position_y' => 'top', */
'rs_background_repeat' => 'repeat',
'rs_body_color' => '#fff',
'rs_body_lineheight' => 1,
'rs_body_txtSliderSpaceBgColor' => 1,
'rs_mobile_compatible' => 'enable'
);
$aCustomConfig = array();
if (is_file($templateConfCustom)) {
$aCustomConfig = RvsLibs_Config::parse_ini_file($templateConfCustom, true);
}
$aConfig = array();
if (is_file($templateConf)) {
$aConfig = RvsLibs_Config::parse_ini_file($templateConf, true);
}
return array_merge($defaultConfig, $aConfig, $aCustomConfig);
}
public static function getCodeEmbed($templateFile, $isPhpSuexec)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$blockData = '';
$templatePath = SGL_PATH . '/scripts/seagull_mod/public_html/themes/rvtheme/default/' . $templateFile;
if (is_file($templatePath)) {
$aBlockData = file($templatePath);
$blockData = implode('' , $aBlockData);
$blockData = ($isPhpSuexec == 1) ? str_replace('rvsindex.php', 'rvsindex.php?', $blockData) : $blockData;
}
$code['staticpage'] = $blockData;
$code['dynamicpage'] = '<flexy:include src="' . $templateFile . '">';
return $code;
}
/**
* get component block preview code
* @param unknown $templateFile
*/
public static function getCodeEmbedPreview($templateFile)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$blockData = '';
$templatePath = SGL_PATH . '/scripts/seagull_mod/public_html/themes/rvtheme/default/' . $templateFile;
if (is_file($templatePath)) {
$blockData = file_get_contents($templatePath);
if (preg_match('/<\!--\s*for\s*preview\s*mode\s*-->(.*?)<\!--\s*for\s*preview\s*mode\s*-->/ims', $blockData, $aMatch))
$blockData = $aMatch[1];
}
return $blockData;
}
/*
* load get file data.txt
*/
public static function getFileData($path)
{
SGL::logMessage("path " . $path, PEAR_LOG_DEBUG);
$aVariables = array();
if (is_file($path)) {
$fileData = RvsLibs_File::file($path);
} else {
SGL::logMessage("cannot find path " . $path, PEAR_LOG_ERR);
return $aVariables;
}
foreach ($fileData as $line) {
$aFileData = RvsLibs_String::dbeExplode(",",$line);
}
foreach ($aFileData as $line) {
$bValue = strstr($line,':');
$count1 = RvsLibs_String::strlen($line);
$count2 = RvsLibs_String::strlen($bValue);
$countSum = $count1 - $count2;
$aValue = RvsLibs_String::str_replace(':','',$bValue);
$aKey = RvsLibs_String::dbeSubstr($line,0,$countSum);
if ($line != "") {
$aVariables['' . $aKey . ''] = $aValue;
}
if ( RvsLibs_String::trim($aKey) == "aAssociatedCategory" || RvsLibs_String::trim($aKey) == "aAssociatedTemplateType" ) {
$aVal['' . $aKey . ''] = RvsLibs_String::dbeExplode("|", $aVariables['' . $aKey . '']);
$aVariables['' . $aKey . ''] = "";
foreach ($aVal['' . $aKey . ''] as $k =>$v) {
if ($v) {
$aVariables['' . $aKey . ''][$v] = $v;
}
}
}
}
return $aVariables;
}
/**
* Get rvsitebuilder template data by rvsitebuilder project id
* @author Parinya Chaipetch <parinya@rvglobalsoft.com>
* @access public
*
* @param string $projectId
*
* return array
*/
public static function getTemplatesDataByTemplateId($projectId)
{
/// @TODO::BooM
$aProjectInfo = RvsLibs_UserAndProject::getDataProjectInfoByProjectId($projectId);
$aProjectInfo[0]->template_id = isset($aProjectInfo[0]->template_id) ? $aProjectInfo[0]->template_id : null;
//get menustyle_id
/// Select template by template id :: BooM
$aMenuStyleId = DaoFactory::Template()->findTemplateByTemplateId($aProjectInfo[0]->template_id, 'getall');
if ($aProjectInfo[0]->template_id && $aProjectInfo[0]->template_item_id) {
///
$arraydata = DaoFactory::Template()->findTemplateItemByTemplateData($aProjectInfo[0]->template_id, $aProjectInfo[0]->template_item_id, $aMenuStyleId[0]->menustyle_id, 'getall');
/// Select template user id by template id : BooM
$aImportTemplateData = DaoFactory::TemplateImport()->findTemplateUsrIdByTemplateId($aProjectInfo[0]->template_id, 'getassoc');
$aTemplatePahtUrl = RvsLibs_Template::getTemplatePathUrl(key($aImportTemplateData), $arraydata[0]->template_item_folder, 'view');
$arraydata[0]->templatePath = $aTemplatePahtUrl['path'];
$arraydata[0]->templateUrl = $aTemplatePahtUrl['url'];
if (count($aImportTemplateData) > 0) {
$arraydata[0]->isImportTemplate = true;
$arraydata[0]->templateImportUsrId = key($aImportTemplateData);
$arraydata[0]->templateImportPrivate = $aImportTemplateData[key($aImportTemplateData)];
} else {
$arraydata[0]->isImportTemplate = false;
$arraydata[0]->templateImportUsrId = '';
$arraydata[0]->templateImportPrivate = '';
}
if (isset($arraydata)) {
/// :: BooM
$aTemplateData = ($noIndex === true) ? $arraydata[0] : $arraydata;
$GLOBALS['_SGL']['rvsCache']['Main']['getTemplatesData']['projectId'] = $projectId;
$GLOBALS['_SGL']['rvsCache']['Main']['getTemplatesData']['arraydata'] = $aTemplateData;
return $aTemplateData;
} else {
return array();
}
}
}
/**
* Load template item data by template id
* @author Parinya Chaipetch <parinya@rvglobalsoft.com>
*
* @param string $template_item_id
* @return mix
* ->template_item_id ;varchar(32)
* ->products_id ;varchar(11)
* ->template_id ;varchar(32)
* ->template_item_folder ;varchar(64)
* ->template_type_s_preview ;varchar(32)
* ->color_id ;int(3)
* ->picture_id
*/
public static function getTemplateItemDataByTemplateItemId($templateItemId)
{
$_allowed_field = array(
'template_item_id'
, 'products_id'
, 'template_id'
, 'template_item_folder'
, 'template_type_s_preview'
, 'color_id'
, 'picture_id'
);
$aTemplateItemData = new stdClass;
foreach ($_allowed_field as $k) {
$aTemplateItemData->{$k} = null;
}
if (isset($templateItemId)) {
/// Selece template item data by template item id : BooM
$aQueryTemplateItemData = DaoFactory::Template()
->findTemplateItemByTemplateItemId($templateItemId, 'getrow');
foreach ($aQueryTemplateItemData as $k => $v) {
if (in_array($k, $_allowed_field) === true) {
$aTemplateItemData->{$k} = $v;
}
}
}
return $aTemplateItemData;
}
public static function getTemplateUniqueIdFolderMapFile()
{
///Debug SGL::logMessage(null, PEAR_LOG_DEBUG);
}
public static function getTemplateDataNoCache($projectId)
{
SGL::logMessage('By new', PEAR_LOG_DEBUG);
$arraydata = array();
$aProjectInfo = RvsLibs_Project::getProjectInfoData($projectId);
if (!count($aProjectInfo)) {
return $arraydata;
}
$aProjectInfo[0]->template_id = isset($aProjectInfo[0]->template_id) ? $aProjectInfo[0]->template_id : null;
//get menustyle_id
/// Select template by template id :: BooM
$aMenuStyleId = DaoFactory::Template()->findTemplateByTemplateId($aProjectInfo[0]->template_id, 'getall');
if ($aProjectInfo[0]->template_id && $aProjectInfo[0]->template_item_id) {
///
$aProjectInfo[0]->template_id = (isset($aProjectInfo[0]->template_id))? $aProjectInfo[0]->template_id : '';
$aProjectInfo[0]->template_item_id = (isset($aProjectInfo[0]->template_item_id))? $aProjectInfo[0]->template_item_id : '';
$aMenuStyleId[0]->menustyle_id = (isset($aMenuStyleId[0]->menustyle_id))? $aMenuStyleId[0]->menustyle_id : '';
$arraydata = DaoFactory::Template()->findTemplateItemByTemplateData($aProjectInfo[0]->template_id, $aProjectInfo[0]->template_item_id, $aMenuStyleId[0]->menustyle_id, 'getall');
/// Select template user id by template id : BooM
$aImportTemplateData = DaoFactory::TemplateImport()->findTemplateUsrIdByTemplateId($aProjectInfo[0]->template_id, 'getassoc');
$templateItemFolder = isset($arraydata[0]->template_item_folder) ? $arraydata[0]->template_item_folder : $aProjectInfo[0]->template_item_folder;
$aTemplatePahtUrl = RvsLibs_Template::getTemplatePathUrl(key($aImportTemplateData), $templateItemFolder, 'view');
$arraydata[0]->templatePath = (isset($aTemplatePahtUrl['path']) && $aTemplatePahtUrl['path'])? $aTemplatePahtUrl['path'] : null;
$arraydata[0]->templateUrl = (isset($aTemplatePahtUrl['url']) && $aTemplatePahtUrl['url'])? $aTemplatePahtUrl['url'] : null;
$arraydata[0]->template_url = (isset($aTemplatePahtUrl['url']) && $aTemplatePahtUrl['url'])? $aTemplatePahtUrl['url'] : null;
if (count($aImportTemplateData) > 0) {
$arraydata[0]->isImportTemplate = true;
$arraydata[0]->templateImportUsrId = key($aImportTemplateData);
$arraydata[0]->templateImportPrivate = $aImportTemplateData[key($aImportTemplateData)];
} else {
$arraydata[0]->isImportTemplate = false;
$arraydata[0]->templateImportUsrId = '';
$arraydata[0]->templateImportPrivate = '';
}
}
return $arraydata;
}
public static function getTemplatesData($projectId, $noIndex=false, $fromCache=true)
{
// Optimization
$arraydata = array();
if ($fromCache === true && isset($GLOBALS['_SGL']['rvsCache']['Main']['getTemplatesData']) === true && $GLOBALS['_SGL']['rvsCache']['Main']['getTemplatesData']['projectId'] == $projectId) {
SGL::logMessage('By cache', PEAR_LOG_DEBUG);
$arraydata = $GLOBALS['_SGL']['rvsCache']['Main']['getTemplatesData']['arraydata'];
$arraydata = (is_array($arraydata) && isset($arraydata[0]) && $noIndex === true)
? $arraydata[0] : $arraydata;
return $arraydata;
} else {
SGL::logMessage('not By cache', PEAR_LOG_DEBUG);
$arraydata = RvsLibs_Template::getTemplateDataNoCache($projectId);
if (isset($arraydata) && is_array($arraydata) && count($arraydata) > 0) {
/// ไม่เข้าใจว่าทำไมจะต้องใส่ index 0 ไว้ :: BooM
$aTemplateData = ($noIndex === true) ? $arraydata[0] : $arraydata;
$GLOBALS['_SGL']['rvsCache']['Main']['getTemplatesData']['projectId'] = $projectId;
$GLOBALS['_SGL']['rvsCache']['Main']['getTemplatesData']['arraydata'] = $aTemplateData;
return $aTemplateData;
} else {
return array();
}
}
}
public static function getTemplatePathUrl($templateUserId, $templateItemFolder, $action = 'edit')
{
// Optimization
if (isset($GLOBALS['_SGL']['rvsCache']['Main']['getTemplatePathUrl']) === true &&
$GLOBALS['_SGL']['rvsCache']['Main']['getTemplatePathUrl']['templateUserId'] == $templateUserId &&
$GLOBALS['_SGL']['rvsCache']['Main']['getTemplatePathUrl']['templateItemFolder'] == $templateItemFolder &&
$GLOBALS['_SGL']['rvsCache']['Main']['getTemplatePathUrl']['action'] == $action
) {
$aTemplatePathUrl = $GLOBALS['_SGL']['rvsCache']['Main']['getTemplatePathUrl']['aTemplatePathUrl'];
} else {
//fixed PHPMD scan 07/07/2554
/*
$aTemplateOption = array(
'templateUserId' => $templateUserId,
'templateItemFolder' => $templateItemFolder
);
*/
/*
$aTemplatePathUrl = array();
if ($templateUserId && CPMODE != 'tryout') {
if (RvsLibs_Template::isValidTemplate($templateUserId, $templateItemFolder) ) {
if ( $action == 'edit' ) {
$aTemplatePathUrl = RvsLibs_Template::getImportedTemplatePathUrlAdmin();
} else {
$aTemplatePathUrl = RvsLibs_Template::getImportedTemplatePathUrlUser($templateUserId);
}
}
} elseif ($templateUserId && CPMODE == 'tryout') {
$aTemplatePathUrl = RvsLibs_Template::getImportedTemplatePathUrlUser($templateUserId);
} else {
$aTemplatePathUrl['path'] = TEMPLATE_PATH;
$aTemplatePathUrl['url'] = TEMPLATE_URL;
}
*/
$aTemplatePathUrl = array();
if ($templateUserId) {
$oCp = CpHandle::factory();
if(SGL::isError($oCp) === true) {
return SGL::raiseError(RvsLibs_String::translate('CpWaring %MESSAGE', 'vprintf', array('MESSAGE' => $oCp->getMessage())));
}
if ($oCp->skipValidTemplate() === true) {
$aTemplatePathUrl = RvsLibs_Template::getImportedTemplatePathUrlUser($templateUserId);
} else {
if (RvsLibs_Template::isValidTemplate($templateUserId, $templateItemFolder) ) {
if ( $action == 'edit' ) {
$aTemplatePathUrl = RvsLibs_Template::getImportedTemplatePathUrlAdmin();
} else {
$aTemplatePathUrl = RvsLibs_Template::getImportedTemplatePathUrlUser($templateUserId);
}
}
}
} else {
$aTemplatePathUrl['path'] = TEMPLATE_PATH;
$aTemplatePathUrl['url'] = TEMPLATE_URL;
}
$GLOBALS['_SGL']['rvsCache']['Main']['getTemplatePathUrl']['templateUserId'] = $templateUserId;
$GLOBALS['_SGL']['rvsCache']['Main']['getTemplatePathUrl']['templateItemFolder'] = $templateItemFolder;
$GLOBALS['_SGL']['rvsCache']['Main']['getTemplatePathUrl']['action'] = $action;
$GLOBALS['_SGL']['rvsCache']['Main']['getTemplatePathUrl']['aTemplatePathUrl'] = $aTemplatePathUrl;
}
return $aTemplatePathUrl;
}
/**
* return
*
* @return path template user
*/
public static function getImportedTemplatePathUrlAdmin()
{
$userName = RvsLibs_User::getUsername(true);
SGL::logMessage('rvdebug: ==========' . $userName, PEAR_LOG_DEBUG);
$userPath = RvsLibs_File::buildPath(array(SGL_USERDATA_PATH, $userName));
if ( !file_exists($userPath) && (RvsLibs_User::getUserImportTemplate() != "internal") ) {
$resSecure = RvsLibs_System::secureCommand('makeuserdatapath');
if (SGL::isError($resSecure)) {
SGL::logMessage('rvdebug: ========== Error', PEAR_LOG_DEBUG);
return $resSecure;
}
}
//detect mode to set path template
if (RvsLibs_User::getUserImportTemplate() == "internal" ) {
SGL::logMessage('rvdebug: mode: internal ===== ', PEAR_LOG_DEBUG);
// for internal designer import template in server 192.168.1.1
$templateUploadPath = SGL_PATH;
$templateUploadUrl = RVSITEBUILDER_URL;
} elseif ( RvsLibs_User::getUserStatus() == RVS_ROOT_USER_NAME ) {
//admin mode
SGL::logMessage('rvdebug: mode: admin ===== ', PEAR_LOG_DEBUG);
$rootPathUpload = RvsLibs_File::buildPath(array(ROOT_HOME_USERDATA_PATH, 'upload'));
$rootNameRvsitePath = RvsLibs_File::buildPath(array(ROOT_USERDATA_PATH, 'upload'));
$rootNameRvsiteUrl = ROOT_HOME_USERDATA_URL . '/upload';
$rootUploadTemplatePath = RvsLibs_File::buildPath(array($rootPathUpload, 'template'));
if ( !file_exists($rootUploadTemplatePath) ) {
RvsLibs_System::mkDir(array('-p', $rootUploadTemplatePath));
}
$oCp = CpHandle::factory();
if(SGL::isError($oCp) === true) {
return SGL::raiseError(RvsLibs_String::translate('CpWaring %MESSAGE', 'vprintf', array('MESSAGE' => $oCp->getMessage())));
}
$oCp->makeUploadFolder($rootPathUpload, $rootNameRvsitePath, ROOT_HOME_USERDATA_PATH . '/upload');
$templateUploadPath = $rootPathUpload;
$templateUploadUrl = $rootNameRvsiteUrl;
} else {
//user mode
SGL::logMessage('rvdebug: mode: user ===== ', PEAR_LOG_DEBUG);
$userPathUpload = RvsLibs_File::buildPath(array(USER_HOME_USERDATA_PATH, 'upload'));
$userNameRvsitePath = RvsLibs_File::buildPath(array(SGL_USERDATA_PATH, $userName, 'upload'));
$userNameRvsiteUrl = SGL_USERDATA_URL . '/' . $userName . '/upload';
$userUploadTemplatePath = RvsLibs_File::buildPath(array($userPathUpload, 'template'));
if ( !file_exists($userUploadTemplatePath) ) {
RvsLibs_System::mkDir(array('-p', $userUploadTemplatePath));
}
$oCp = CpHandle::factory();
if(SGL::isError($oCp) === true) {
return SGL::raiseError(RvsLibs_String::translate('CpWaring %MESSAGE', 'vprintf', array('MESSAGE' => $oCp->getMessage())));
}
$oCp->makeUploadFolder($userPathUpload, $userNameRvsitePath, SGL_USERDATA_PATH . '/upload');
$templateUploadPath = $userPathUpload;
$templateUploadUrl = $userNameRvsiteUrl;
}
$aTemplatePathUrl['path'] = RvsLibs_File::buildPath(array($templateUploadPath, 'template'));
$aTemplatePathUrl['tmp'] = RvsLibs_File::buildPath(array($templateUploadPath, 'rvstemplate'));
$aTemplatePathUrl['url'] = $templateUploadUrl . "/template";
SGL::logMessage('rvdebug: template path=' . $aTemplatePathUrl['path'], PEAR_LOG_DEBUG);
SGL::logMessage('rvdebug: template url=' . $aTemplatePathUrl['url'], PEAR_LOG_DEBUG);
return $aTemplatePathUrl;
}
public static function getImportedTemplatePathUrlUser($templateUserId)
{
$userName = RvsLibs_User::getUsername(true);
$userPath = RvsLibs_File::buildPath(
array(SGL_USERDATA_PATH, $userName)
);
if ( !file_exists($userPath)) {
///TODO : ใช้ secure user
RvsLibs_System::mkDir(array('-m', 0777, $userPath));
}
if (RvsLibs_User::getUserImportTemplate() == "internal" ) {
// for internal designer import template in server 192.168.1.1
// return path /home/rvsitebuilder
$templateUploadPath = SGL_PATH;
$templateUploadUrl = RVSITEBUILDER_URL;
} elseif ( $templateUserId == RvsLibs_User::getRootId() ) {
$rootPathUpload = RvsLibs_File::buildPath(
array(ROOT_HOME_USERDATA_PATH, 'upload')
);
$rootNameRvsitePath = RvsLibs_File::buildPath(
array(ROOT_USERDATA_PATH , 'upload')
);
$rootNameRvsiteUrl = ROOT_HOME_USERDATA_URL . '/upload';
$rootUploadTemplatePath = RvsLibs_File::buildPath(
array($rootPathUpload, 'template')
);
if ( !file_exists($rootUploadTemplatePath) ) {
RvsLibs_System::mkDir(array('-p', $rootUploadTemplatePath));
}
$oCp = CpHandle::factory();
if(SGL::isError($oCp) === true) {
return SGL::raiseError(RvsLibs_String::translate('CpWaring %MESSAGE', 'vprintf', array('MESSAGE' => $oCp->getMessage())));
}
$oCp->makeUploadFolder($rootPathUpload, $rootNameRvsitePath, ROOT_USERDATA_PATH . '/upload');
$templateUploadPath = $rootPathUpload;
$templateUploadUrl = $rootNameRvsiteUrl;
} elseif ( $templateUserId != RvsLibs_User::getUserId()) {
$userPathUpload = RvsLibs_File::buildPath(
array(OWNER_HOME_USERDATA_PATH, 'upload')
);
/*modify CpHandle by nipaporn*/
$oCp = CpHandle::factory();
if(SGL::isError($oCp) === true) {
return SGL::raiseError(RvsLibs_String::translate('CpWaring %MESSAGE', 'vprintf', array('MESSAGE' => $oCp->getMessage())));
}
//fixed PHPMD scan 07/07/2554
$oCp->replateAtOnUserName(RVS_OWNER_USER_NAME);
$userNameRvsitePath = RvsLibs_File::buildPath(
array(OWNER_USERDATA_PATH, 'upload')
);
$userNameRvsiteUrl = RvsLibs_File::buildPath(
array(OWNER_HOME_USERDATA_URL, 'upload')
);
$userUploadTemplatePath = RvsLibs_File::buildPath(
array($userPathUpload, 'template')
);
if ( !file_exists($userUploadTemplatePath) ) {
RvsLibs_System::mkDir(array('-p', $userUploadTemplatePath));
}
$oCp = CpHandle::factory();
if(SGL::isError($oCp) === true) {
return SGL::raiseError(RvsLibs_String::translate('CpWaring %MESSAGE', 'vprintf', array('MESSAGE' => $oCp->getMessage())));
}
$oCp->makeUploadFolder($userPathUpload, $userNameRvsitePath, OWNER_USERDATA_PATH . '/upload');
$templateUploadPath = $userPathUpload;
$templateUploadUrl = $userNameRvsiteUrl;
} else {
$userPathUpload = RvsLibs_File::buildPath(
array(USER_HOME_USERDATA_PATH, 'upload')
);
$userNameRvsitePath = RvsLibs_File::buildPath(
array(SGL_USERDATA_PATH, $userName, 'upload')
);
$userNameRvsiteUrl = SGL_USERDATA_URL . '/' . $userName . '/upload';
$userUploadTemplatePath = RvsLibs_File::buildPath(
array($userPathUpload, 'template')
);
if ( !file_exists($userUploadTemplatePath) ) {
System::mkDir(array('-p', $userUploadTemplatePath));
}
$oCp = CpHandle::factory();
if(SGL::isError($oCp) === true) {
return SGL::raiseError(RvsLibs_String::translate('CpWaring %MESSAGE', 'vprintf', array('MESSAGE' => $oCp->getMessage())));
}
if (defined('RVS_OWNER_HOME')) {
$oCp->makeUploadFolder($userPathUpload, $userNameRvsitePath, $userPathUpload);
}
$templateUploadPath = $userPathUpload;
$templateUploadUrl = $userNameRvsiteUrl;
}
$aTemplatePathUrl['path'] = RvsLibs_File::buildPath(
array($templateUploadPath, 'template')
);
$aTemplatePathUrl['url'] = $templateUploadUrl . "/template";
SGL::logMessage('template url=' . $aTemplatePathUrl['url'], PEAR_LOG_DEBUG);
return $aTemplatePathUrl;
}
public static function getTemplateData($templateId, $templateItemId, $menustyleId)
{
SGL::logMessage('template_id=' . $templateId . ',template_item_id=' . $templateItemId . ',menustyle_id=' . $menustyleId, PEAR_LOG_DEBUG);
$aTemplateData = DaoFactory::Template()->findTemplateItemByTemplateData($templateId, $templateItemId, $menustyleId, 'getrowobj');
$aImportTemplateData = DaoFactory::TemplateImport()->findTemplateUsrIdByTemplateId($templateId, 'getassoc');
$aTemplatePahtUrl = RvsLibs_Template::getTemplatePathUrl(key($aImportTemplateData), $aTemplateData->template_item_folder, 'view');
$aTemplateData->templatePath = (isset($aTemplatePahtUrl['path'])) ? $aTemplatePahtUrl['path'] : TEMPLATE_PATH;
$aTemplateData->templateUrl = (isset($aTemplatePahtUrl['url'])) ? $aTemplatePahtUrl['url'] : TEMPLATE_URL;
if (isset($aTemplateData)) {
return $aTemplateData;
}
}
//fixed PHPMD scan 07/07/2554
public static function getTemplateColorConfig($rvsUsrId, $projectId)
{
$fileConfigName = 'colorConfig.ini.php';
$templateData = RvsLibs_Project::getProjectInfoData($projectId);
if (RvsLibs_Template::isValidTemplate($rvsUsrId, $templateData[0]->template_item_folder)) {
$aTemplatePathUrl = RvsLibs_Template::getTemplatePathUrl($rvsUsrId, $templateData[0]->template_item_folder, 'view');
} else {
$aTemplatePathUrl = RvsLibs_Template::getTemplatePathUrl(null, $templateData[0]->template_item_folder, 'view');
}
$colorConfigPath = RvsLibs_File::buildPath(array($aTemplatePathUrl['path'], $templateData[0]->template_item_folder, $fileConfigName));
$folderColorGroup = RvsLibs_Template::getFolderColorGroup($templateData[0]->color_id);
$defaultColorConfigPath = SGL_PATH . '/scripts/seagull_mod/public_html/themes/rvtheme/defaultColorConf/' . $folderColorGroup . '/' . $fileConfigName;
// load
$aColorConfigEX = (is_file($colorConfigPath))
? RvsLibs_Config::parse_ini_file($colorConfigPath, true)
: RvsLibs_Config::parse_ini_file($defaultColorConfigPath, true);
if (SGL::isError($aColorConfigEX) === true) {
SGL::logMessage('Cannot get color config=' . $aColorConfigEX->getMessage(), PEAR_LOG_DEBUG);
SGL_Error::pop();
return array();
}
$aBlock = array('c'=>'','l'=>'','r'=>'');
foreach($aBlock as $k => $v) {
foreach($aColorConfigEX as $k2 => $v2){
if(RvsLibs_String::dbeSubStrCount($k2,$k) > 0) {
$aBlock[$k] = $aColorConfigEX[$k2];
}
}
}
foreach($aBlock as $k => $v) {
if($k != 'c' && is_array($aBlock['c']) === true && is_array($aBlock[$k]) === true) {
$aBlock[$k] = array_merge($aBlock['c'],$aBlock[$k]);
}
}
return $aBlock;
}
public static function getFolderColorGroup($colorId)
{
$aColorGroupId = RvsLibs_Project::getColorGroupID($colorId);
$colorGroupId = (isset($aColorGroupId[0]->color_group_id)) ? $aColorGroupId[0]->color_group_id : false;
$pathGroupColor = SGL_PATH . '/scripts/seagull_mod/public_html/themes/rvtheme/defaultColorConf/group.ini';
if (is_file($pathGroupColor) && is_readable($pathGroupColor)) {
$aColorGroup = RvsLibs_Config::parse_ini_file($pathGroupColor, true);
foreach ($aColorGroup as $k => $v) {
$aColorGroup[$k] = RvsLibs_String::dbeExplode(',', $v);
}
foreach ($aColorGroup as $group => $aV) {
foreach ($aV as $k => $v) {
if ($colorGroupId == $v) {
$folderColorGroup = $group;
}
}
}
}
return (isset($folderColorGroup)) ? $folderColorGroup : false;
}
public static function isDiyTemplate($templatePath, $template)
{
///for old Diy template
$templateDiyConf = RvsLibs_File::buildPath(array($templatePath, $template, 'diyconf.ini.php'));
if ($template && preg_match('/\_DiyPicture\_/', $template) && is_file($templateDiyConf)) {
return true;
} elseif ($template && preg_match('/\_DiyPicture\_/', $template)) {
return true;
}
return false;
}
/** setFormTemplateId()
* Add Form Template Id on rvs_project_pate Table
*
*/
public static function setFormTemplateId($onlineFormId, $projectPageId, $projectId, $rvsUsrId)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
if ($onlineFormId && $projectPageId) {
$result = DaoFactory::ProjectPage()->updateSetFormTemplateIdByusrIdAndProjectIdAndProjectId($rvsUsrId, $projectPageId, $projectId, $onlineFormId);
return true;
} else {
return false;
}
}
public static function getNewLayoutTemplateId($projectpageId, $defaultLayoutTemplateId)
{
$resLayout = DaoFactory::OutSuggestion()->findNewLayoutByTemplateId($projectpageId, 'getarray');
$aKey = array_rand($resLayout);
return (isset($resLayout[$aKey]['layout_template_id'])) ? $resLayout[$aKey]['layout_template_id'] : $defaultLayoutTemplateId;
}
/**
* select custom category by owner
*
* @return Ambigous <multitype:, unknown>
*/
public static function getCustomCategoryList()
{
$ownerId = RvsLibs_User::getOwnerId();
$aCategory = DaoFactory::Category()->findCustomCategoryOrderByCategoryId('getall');
foreach ($aCategory as $key) {
if ($key->custom_category_user == $ownerId) {
$category[$key->custom_category_id] = $key->custom_category_name;
} elseif ($key->custom_category_user == $ownerId) {
$category[$key->custom_category_id] = $key->custom_category_name;
}
}
//optimize : siwakorn
return (isset($category)) ? $category : array();
}
/**
* GetLayoutData()
2488 * query ค่า data ของ layout template จาก db
* ฟังก์ชัน GetLayoutData() และ GetLayoutReplaceWidth() จะมีอยู่ทั้ง Main และ Common
* ฟังก์ชัน GetLayoutData() ใน Main และ Common จะมีของตัวแปรพารามิเตอร์ต่างกัน และคำสั่งต่างกันเล็กน้อย
*/
//template
public static function GetLayoutData($layoutTemplateId, $templateItemFolder = "", $templatePath = TEMPLATE_PATH)
{
// Optimization
if (isset($GLOBALS['_SGL']['rvsCache']['Common']['GetLayoutData']) === true &&
$GLOBALS['_SGL']['rvsCache']['Common']['GetLayoutData']['layoutTemplateId'] == $layoutTemplateId &&
$GLOBALS['_SGL']['rvsCache']['Common']['GetLayoutData']['templateItemFolder'] == $templateItemFolder &&
$GLOBALS['_SGL']['rvsCache']['Common']['GetLayoutData']['templatePath'] == $templatePath
) {
SGL::logMessage('Optmization layoutTemplateId: ' . $layoutTemplateId , PEAR_LOG_DEBUG);
$layoutHTML = $GLOBALS['_SGL']['rvsCache']['Common']['GetLayoutData']['layoutHTML'];
} else {
SGL::logMessage('First Call - layoutTemplateId: ' . $layoutTemplateId , PEAR_LOG_DEBUG);
if (!$layoutTemplateId) {
$layoutTemplateId = '1';
}
// Get Layout Template Head
$resHead = DaoFactory::LayoutTemplate()
->findLayoutTemplatePreviewAndDataByLayoutTemplateId($layoutTemplateId, 'getrow');
$data = $resHead['layout_template_head'];
$layoutHTML['head'] = $data;
// Get Layout Template Body
$resLayout = DaoFactory::LayoutTemplate()
->findLayoutTemplatePreviewAndDataByLayoutTemplateId($layoutTemplateId, 'getrow');
// Get Path Layout index.htm
if ($templateItemFolder) {
$fileTemplateIndex = $templatePath . '/' . $templateItemFolder . '/index.htm';
// Get Width Option
$fileLayoutWidth = RVS_USER_HOME . '/.rvsitebuilder/rvsbTemplateLayoutWidth.txt';
if (file_exists($fileLayoutWidth)) {
$widthOption = 'CustomSize';
} else {
$widthOption = 'AutoSize';
}
// Get Replace Width
if ($widthOption == 'CustomSize') {
$replaceWidth = RvsLibs_Template::GetLayoutReplaceWidth($fileTemplateIndex);
} else {
$replaceWidth = '100%';
}
} else {
$replaceWidth = "80%";
}
// Replace layout template id folder
require_once SGL_MOD_DIR . '/sitebuilder/classes/LayoutInsertDataMgr.php';
$resLayout['layout_template_data'] = LayoutInsertDataMgr::replaceHeadData($resLayout['layout_template_data'], $layoutTemplateId);
$resLayout['layout_template_data'] = LayoutInsertDataMgr::replaceLayoutData($resLayout['layout_template_data'], $layoutTemplateId);
// Replace Layout Data
$data = $resLayout['layout_template_data'];
$data = RvsLibs_String::str_replace("\"images/", "\"" . PUBLIC_IMG_URL . "/", $data);
$data = RvsLibs_String::str_replace('[IMG_PATH]', PUBLIC_IMG_URL, $data);
$data = RvsLibs_String::str_replace('{rvs_width}', $replaceWidth , $data);
$layoutHTML['body'] = $data;
$GLOBALS['_SGL']['rvsCache']['Common']['GetLayoutData']['layoutTemplateId'] = $layoutTemplateId;
$GLOBALS['_SGL']['rvsCache']['Common']['GetLayoutData']['templateItemFolder'] = $templateItemFolder;
$GLOBALS['_SGL']['rvsCache']['Common']['GetLayoutData']['templatePath'] = $templatePath;
$GLOBALS['_SGL']['rvsCache']['Common']['GetLayoutData']['layoutHTML'] = $layoutHTML;
}
return $layoutHTML;
}
public static function GetLayoutReplaceWidth($fileTemplateIndex)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
//Read Template File index.html
$templateHandle = fopen($fileTemplateIndex, "r");
$templateHTML = fread($templateHandle , filesize($fileTemplateIndex));
//Find id="rv_adjust_width_xxx"
$regExpAdjustWidth = '/id\s*=\s*["|\']rv_adjust_width_[0-9]{1,}["|\']/i';
preg_match($regExpAdjustWidth, $templateHTML, $resultMatchAdjustWidth);
// Define $replaceWidth
if (count($resultMatchAdjustWidth) != 0) {
$regExpReplaceWidth = '/[0-9]{1,}/';
preg_match($regExpReplaceWidth, $resultMatchAdjustWidth[0], $aAdjustWidth);
$adjustWidth = $aAdjustWidth[0];
} else {
$adjustWidth = 0;
}
$replaceWidth = 760 - $adjustWidth;
return $replaceWidth;
}
public static function getCodeCreatedByData($action, $publishUrl, $isResponsive = true, $isUikit = true)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
if ($isResponsive == true || $isUikit == true) {
return "\n" . '<div>Created By RVsitebuilder</div>' . "\n";
}
$protocol = (SSL_MODE == 1) ? 'https' : 'http';
$imagesUrl = ($action == 0) ? PUBLIC_IMG_URL : $publishUrl . "/images";
return <<<EOF
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="$protocol://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="119" height="35">
<param name="movie" value="$imagesUrl/rvbanner.swf" />
<param name="quality" value="high" />
<embed src="$imagesUrl/rvbanner.swf" quality="high" pluginspage="$protocol://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="119" height="35"></embed>
</object>
EOF;
}
/**
* add Random TemplateRecommmend
* @author nipaporn
* @param $category
* @return unknown_type
*/
public static function getRandomTemplateRecommmend($category, $project_res=null)
{
if (!empty($project_res) && $project_res == '1') {
//responsive template
return RvsLibs_Template_Get::_randTemplateItemIdFromRecommend($category);
} else {
///ถ้า category ที่ไม่มี responsive template
$pathFile = SGL_WEB_ROOT . '/js/rvsitebuilder/RecommentOfTemplate.js';
//Business
$categoryDef = 17;
}
if (is_file($pathFile) === true) {
$fileOpen = fopen($pathFile, "r");
$contents = fread($fileOpen, filesize($pathFile));
fclose($fileOpen);
} else {
//TODOใส่ pear error ด้วย
return false;
}
$replaceRecomment = str_replace('var aRecommentOfTemplate =', '', $contents);
$replaceRecomment = str_replace(';', '', $replaceRecomment);
$decodeFile = SGL_AjaxProvider::jsonDecode($replaceRecomment);
if (isset($decodeFile[$category]) && count($decodeFile[$category]) > 0) {
$oRandomObj = $decodeFile[$category];
} else {
$oRandomObj = $decodeFile[$categoryDef];
}
if ($oRandomObj === false) {
return false;
} else {
$templateRate = array_rand(get_object_vars($oRandomObj), 1);
$aCategory = $oRandomObj->$templateRate;
$randomTemID = array_rand(get_object_vars($aCategory), 1);
$rvsTemplateItem = DaoFactory::Template()->findAllDataTemplateItemByTemplateId($randomTemID, 'getrow');
return $rvsTemplateItem['template_item_id'];
}
}
protected static function _randTemplateItemIdFromRecommend($category=7)
{
/*
//TODO:
- load recommend template
- find all data template item by product id
*/
$pathFile = SGL_WEB_ROOT . '/' . RvsLibs_Project::getJsCssPathV5('js/rvsitebuilder/allTemplate.js');
$content = file_get_contents($pathFile);
$rvsTemplateItem = array();
SGL::logMessage(' rvdebug : category ' . $category , PEAR_LOG_DEBUG);
if (preg_match('/var\s*showDataTemplate\s*=\s*(\{[\d\D\b\B\w\W]*\});\s*$/ims', $content, $match)) {
$aTemp = array_keys ( json_decode ( $match [1], true ) );
$rvsTemplateItem = DaoFactory::Template()->randTemplateItemDataByCategoryId($aTemp, $category, 'getRow');
SGL::logMessage(' 00 rvdebug : id ' . $rvsTemplateItem['template_item_id'] , PEAR_LOG_DEBUG);
if (!count($rvsTemplateItem)) {
$rvsTemplateItem = DaoFactory::Template()->randTemplateItemDataByCategoryId($aTemp, 7, 'getRow');
SGL::logMessage(' 11 rvdebug : id ' . $rvsTemplateItem['template_item_id'] , PEAR_LOG_DEBUG);
}
}
return $rvsTemplateItem['template_item_id'];
}
/*start get old template specific: Witoon*/
/* find real navigator type
* @param string $templateSpecificCss code css
* @return int navigator type(1=Vertical or 2=Horizontal)
*/
protected static function _getOldImportTemplateNavType($templateSpecificCss)
{
if (preg_match('/#navigator\s*ul\s*li\s*\{[^\}]*display\s*:\s*inline\s*;(.*?)\}/ims', $templateSpecificCss))
return 2;
return 1;
}
protected static function _getOldBgNavDIY($templateSpecificCss)
{
if (preg_match('/\.bgnavigator\s*\{[^\}]*\}/ims', $templateSpecificCss, $match))
return $match[0];
return '';
}
protected static function _getOldBgNavImgDIY($templateSpecificCss)
{
if (preg_match('/\.bgnavigatorimg\s*\{[^\}]*\}/ims', $templateSpecificCss, $match))
return $match[0];
return '';
}
protected static function _getOldClassNavigator($templateSpecificCss)
{
if (preg_match('/#navigator\s*\{([^\}]*)\}/ims', $templateSpecificCss, $match))
return $match[1];
return '';
}
protected static function _getOldClassNavigatorLi($templateSpecificCss)
{
if (preg_match('/#navigator\s*ul\s*li\s*\{([^\}]*)\}/ims', $templateSpecificCss, $match))
return $match[1];
return '';
}
protected static function _getOldNavBorder($templateSpecificCss)
{
if (preg_match('/.subframe\s*{[^\}]*(border\s*:[^;]*;)/ims', $templateSpecificCss, $match))
return $match[1];
return '';
}
protected static function _getOldNavBackground($templateSpecificCss)
{
if (preg_match('/.subframe\s*{[^\}]*(background-color\s*:[^;]*;)/ims', $templateSpecificCss, $match))
return $match[1];
return '';
}
protected static function _getOldNavBorderBottom($templateSpecificCss)
{
if (preg_match('/.item\s*{[^\}]*(border-bottom\s*:[^;]*;)/ims', $templateSpecificCss, $match))
return $match[1];
return '';
}
protected static function _getOldLinkColor($templateSpecificCss)
{
if (preg_match('/.item\s*a\s*{[^\}]*color\s*:\s*(#[a-fA-F0-9]*);/ims', $templateSpecificCss, $match))
return $match[1];
return '';
}
protected static function _getOldHoverColor($templateSpecificCss)
{
if (preg_match('/.item\s*a\s*:\s*hover\s*{[^\}]*[^\-]color\s*:\s*(#[a-fA-F0-9]*);/ims', $templateSpecificCss, $match))
return $match[1];
return '';
}
protected static function _getOldHoverBackgroundColor($templateSpecificCss)
{
if (preg_match('/.item\s*a\s*:\s*hover\s*{[^\}]*background-color\s*:\s*(#[a-fA-F0-9]*);/ims', $templateSpecificCss, $match))
return $match[1];
return '';
}
protected static function _CopyOldCss($templateSpecificCss)
{
if (preg_match('/(#navigator\s*a\s*\{(.*?))\/\*\s*css\s*for\s*PHP/ims', $templateSpecificCss, $match))
return $match[1];
return '';
}
public static function getBaseCss2Level()
{
$code = <<<EOF
/* css for submenu */
ul.rvnavigator ul {
/**TOP**/
/**LEFT**/
display: none; /*visibility: hidden;*/
position: absolute;
padding:0px; /* Change */
z-index:25;
width: auto;
margin: 0;
list-style: none;
/**BORDER**/
/**BACKGROUND_COLOR**/
text-indent: 0px; /* Change */
cursor:pointer;
}
ul.rvnavigator ul ul{
width: 150px; /* Sub Menu Width */
word-wrap: break-word;
top: 0;
left: 100%;
/**BACKGROUND_COLOR**/
}
ul.rvnavigator ul li {
word-wrap: break-word;
text-align: left;
/**BORDER_BOTTOM**/
margin: 0px;
padding: 0px;
width:150px;
background:none;
}
/* 1st Submenu */
ul.rvnavigator li:hover li a, ul.rvnavigator li:hover li a span {
white-space:normal;
text-decoration: none;
position: relative;
display:block;
padding:3px;
margin:0;
width:144px;
background:none;
color:/**LINK_COLOR**/;
text-align: left;
border:0;
}
/* 1st Submenu Hover */
ul.rvnavigator li:hover li a:hover {
color:/**HOVER_COLOR**/;
text-decoration:none;
background-color:/**HOVER_BG_COLOR**/;
position: relative;
display:block;
padding:3px;
}
ul.rvnavigator li:hover li a:hover span {
color:/**HOVER_COLOR**/;
}
/* 2nd Submenu */
ul.rvnavigator li:hover li:hover li a {
white-space:normal;
text-decoration: none;
position: relative;
display:block;
padding:3px;
width:144px;
background:none;
color:/**LINK_COLOR**/;
}
/* 2nd Submenu Hover */
ul.rvnavigator li:hover li:hover li a:hover{
color:/**HOVER_COLOR**/;
text-decoration:none;
background-color:/**HOVER_BG_COLOR**/;
position: relative;
display:block;
padding:3px;
}
ul.rvnavigator li:hover li:hover li a:hover span {
color:/**HOVER_COLOR**/;
}
/* Hover Function - Do Not Move */
ul.rvnavigator li:hover ul ul,ul.rvnavigator li:hover ul ul ul {
display: none;
}
ul.rvnavigator li:hover ul,ul.rvnavigator ul li:hover ul,ul.rvnavigator ul ul li:hover ul {
display: block;
}
.rvarrowsubmenu{
float:right;
padding-left:5px;
}
ul.rvnavigator li:hover li a.arrowOne {
background-image:url(images/arrow.gif);
background-position:right bottom;
background-repeat:no-repeat;
}
ul.rvnavigator li:hover li a.arrowsubOne {
background-image:url(images/linkarrow.gif);
background-position:right center;
background-repeat:no-repeat;
}
.item .fwdarr {
right: 7px;
top: 5px;
position: absolute;
}
EOF;
return $code;
}
/*end get old template specific: Witoon*/
public static function getUikitNavigation($navCode, $navConfig=null)
{
$align = !empty($navConfig)
? $navConfig
: 'left';
switch ($align) {
case 'center':
$setCenter = 'id="rvnav-center"';
$setLeftOrRight = '';
break;
case 'right':
$setCenter = '';
$setLeftOrRight = 'uk-align-right';
break;
case 'left':
default:
$setCenter = '';
$setLeftOrRight = 'uk-align-left';
}
//$navConfig['']
//$navConfig =
$navCode = <<<EOF
<div class="uk-container uk-container-center">
<div id="rvnavigator" style="z-index:1001;">
<nav class="uk-navbar" data-uk-sticky="{top:-100, animation: uk-animation-slide-top}">
<div {$setCenter}>
<ul class="uk-navbar-nav uk-hidden-small {$setLeftOrRight}">
{$navCode}
</ul>
</div>
<a href="#offcanvas" class="uk-navbar-toggle uk-visible-small" data-uk-offcanvas></a>
<div class="uk-navbar-brand uk-navbar-center uk-visible-small">Your Company</div>
</nav>
</div><div class="clear"></div>
</div>
EOF;
return $navCode;
}
}
}
if (class_exists('RvsLibs_Template_Validate') === false) {
class RvsLibs_Template_Validate extends RvsLibs_Template_Get
{
/**
* Check this template item folder is distribute by RVSiteBuilder
* @author Parinya Chaipetch <parinya@rvglobalsoft.com>
*
* @param string $templateItemFolder
* @return bool ; True if this template item folder is RVSiteBuilder distribute, false if not distribute by RVSiteBuilder
*/
public static function isDistributeTemplate($templateItemFolder, $rvsitebuilderPath = SGL_PATH)
{
SGL::logMessage(' === ondemand templateItemFolder: ' . $templateItemFolder, PEAR_LOG_DEBUG);
if (is_null($templateItemFolder) || RvsLibs_String::trim($templateItemFolder) === '') {
return false;
} else {
$templatePath = RvsLibs_File::buildPath(
array(
$rvsitebuilderPath
, 'template'
, $templateItemFolder
)
);
}
SGL::logMessage(' === ondemand path: ' . $templatePath, PEAR_LOG_DEBUG);
return (is_dir($templatePath)) ? true : false;
}
/**
* Check template is import template
* @author Witoon Jansri <witoon.j@rvglobalsoft.com>
*
* @param String $templateId
* @return TRUE is import template or FALSE is not import template
*/
public static function isImportTemplate($templateId)
{
$aImportTemplateData = DaoFactory::TemplateImport()->findTemplateUsrIdByTemplateId($templateId, 'getarray');
return count($aImportTemplateData) > 0 ? true : false;
}
public static function isTemplateUniqueIdFolderMapExists($templateUserId, $templateItemFolder)
{
return RvsLibs_Template::isValidTemplate($templateUserId, $templateItemFolder);
}
public static function isValidTemplate($templateUserId, $templateItemFolder)
{
if (!defined('RVS_ROOT_HOME') || !defined('RVS_USER_HOME')) {
return false;
}
$templatePath = RvsLibs_File::buildPath(
array(
TEMPLATE_PATH,
$templateItemFolder,
'templateUniqueIdFolderMap.txt',
)
);
if ( (RvsLibs_User::getUserImportTemplate() == "internal") && file_exists($templatePath)) {
return true;
} else {
if ($templateUserId == RvsLibs_User::getRootId()) {
//$homePath = RVS_ROOT_HOME;
$homePath = ROOT_HOME_USERDATA_PATH;
} elseif ($templateUserId == RvsLibs_User::getOwnerId()) {
//$homePath = RVS_OWNER_HOME;
$homePath = OWNER_HOME_USERDATA_PATH;
} else {
//$homePath = RVS_USER_HOME;
$homePath = USER_HOME_USERDATA_PATH;
}
$filePath = RvsLibs_File::buildPath(
array(
$homePath
,'upload'
,'template'
,$templateItemFolder
,'templateUniqueIdFolderMap.txt'
)
);
if (file_exists($filePath)) {
return true;
}
}
return false;
}
public static function isLocalDesignerImport()
{
return (RvsLibs_String::trim($_SERVER['HTTP_HOST']) == "192.168.1.1"
|| RvsLibs_String::trim($_SERVER['HTTP_HOST']) == "rvdesigner.rvglobalsoft.net")
? true
: false;
}
/**
* validate is my import template to /home/{user}/.rvsitebuilder/upload/template/{templateFolder}
*
* @param <string> $templateFolder
* @param <string> $username
* @return bool
*
* @author apiruk boonruksa
*/
public static function isMyTemplateImport($templateFolder, $username = null)
{
$username = (is_null($username))
? RvsLibs_User::getUsername()
: $username;
$myTemplatePath = RvsLibs_File::buildPath(array(SGL_USERDATA_PATH, $username,'upload', 'template', $templateFolder));
// optimize : nipaporn
return ($templateFolder && is_dir($myTemplatePath)) ? true : false;
}
/**
* validate to reupload in STEP 2 for user
*
* @param <string> $username
* @param <string> $templateFolder
* @param <string> $license
* @return bool
*
* @author apiruk boonruksa
*/
public static function isAllowToReuploadTemplate($templateFolder, $license = null)
{
$license = (is_null($license))
? RvsLibs_License::getSitebuilderLicense()
: $license;
$isMyTemplateImport = RvsLibs_Template::isMyTemplateImport($templateFolder);
if (($license == 'pro')
&& RvsLibs_Config::getOwnerConf('AllowUserImportTemplate')
&& $isMyTemplateImport === true) {
return true;
}
return false;
}
public static function isProductIdExist($productId)
{
$res = DaoFactory::Template()->findProductsId($productId, 'getone');
if (SGL::isError($res) === true) {
SGL::logMessage('== FindProductId isPearError and Recursive to find productId ==', PEAR_LOG_DEBUG);
SGL_Error::pop();
}
return is_null($res) === true ? false : true;
}
public static function isDIYTemplateForPro()
{
//$res = RvsLibs_License::isLicensePro();
if (RvsLibs_License::isLicensePro() === false) {
return false;
} elseif ( file_exists(SGL_PATH . "/modules/sitebuilderpro/classes/DiyMain.php") ) {
include_once SGL_PATH . "/modules/sitebuilderpro/classes/DiyMain.php";
} else {
return false;
}
$oDiyMain = new DiyMain();
if ( !$oDiyMain->isDIYTemplateForPro() ) {
return false;
}
return true;
}
public static function validateAllowDIYTemplateMain()
{
// Validate User Import
if ( !RvsLibs_Template::isDIYTemplateForPro() ) {
RvsLibs_String::translate(SGL::raiseMsg('Sorry, DIY Template for sitebuilder PRO'));
SGL_HTTP::redirect(array('moduleName' => 'sitebuilder', 'managerName' => 'sitebuilder'));
}
// Validate skip allow user import template
if ( !RvsLibs_Config::getOwnerConf('AllowDIYTemplate')) {
RvsLibs_String::translate(SGL::raiseMsg('Sorry, Admin skip DIY Template.'));
SGL_HTTP::redirect(array('moduleName' => 'sitebuilder', 'managerName' => 'sitebuilder'));
}
}
public static function copyColorDbForResponsive($templateFolderPath, $colorTone=null, $fileNav=null)
{
SGL::logMessage('==Copy== colordb.ini.php : ', PEAR_LOG_DEBUG);
$target = RvsLibs_File::buildPath(array($templateFolderPath, 'colordb.ini.php'));
$colorTone = ($colorTone) ? $colorTone : '1-blue';
$fileNav = is_null($fileNav) ? 'navColor14.ini.php' : $fileNav;
$source = RvsLibs_File::buildPath(array(SGL_WEB_ROOT, 'DiyResponsive', 'NavigatorColor', 'NavigatorColor', $colorTone, $fileNav));
if (is_file($target)) {
$desMd5 = RvsLibs_File::getMd5File($target);
$sourceMd5 = RvsLibs_File::getMd5File($source);
if ($desMd5 == $sourceMd5) return true;
}
SGL::logMessage('===== source : ' . $source, PEAR_LOG_DEBUG);
SGL::logMessage('===== target : ' . $target, PEAR_LOG_DEBUG);
$res = RvsLibs_System::copy(array('-f', $source, $target));
if (SGL::isError($res)) {
SGL_Error::pop();
return false;
}
return true;
}
public static function copyColorConfigForResponsive($templateFolderPath, $colorTone=null, $fileCompoHead=null)
{
SGL::logMessage('==Copy== colorConfig.ini.php : ', PEAR_LOG_DEBUG);
$target = RvsLibs_File::buildPath(array($templateFolderPath, 'colorConfig.ini.php'));
$colorTone = ($colorTone) ? $colorTone : '1-blue';
$fileCompoHead = is_null($fileCompoHead) ? 'HD001.ini.php' : $fileCompoHead;
$source = RvsLibs_File::buildPath(array(SGL_WEB_ROOT, 'DiyResponsive', 'Diyconfig_component', 'Header_Component', $colorTone, $fileCompoHead));
SGL::logMessage('===== source : ' . $source, PEAR_LOG_DEBUG);
SGL::logMessage('===== target : ' . $target, PEAR_LOG_DEBUG);
if (!is_file($source)) {
return false;
}
//copy
$res = RvsLibs_System::copy(array($source, $target));
if (SGL::isError($res)) {
SGL_Error::pop();
return false;
}
return true;
}
/*
1.lightblue 1-blue
2.blue 1-blue
3.ligthgreen 6-green
4.darkgreen 6-green
5.beige 4-orange
6.gold 5-yellow
7.maroon 4-orange
8.red 3-red
9.pink 3-red
10.magenta 2-violet
11.purple 2-violet
12.white 7-black
13.black 7-black
*/
public static function getResColorToneByGroupName($groupName)
{
$gName = trim($groupName);
$aTone = array(
'lightblue' => '1-blue'
,'blue' => '1-blue'
,'lightgreen' => '6-green'
,'darkgreen' => '6-green'
,'beige' => '4-orange'
,'gold' => '5-yellow'
,'maroon' => '4-orange'
,'red' => '3-red'
,'pink' => '3-red'
,'magenta' => '2-violet'
,'purple' => '2-violet'
,'white' => '7-black'
,'black' => '7-black'
);
return (isset($aTone[$gName])) ? $aTone[$gName] : '1-blue';
}
/**
*
* @param unknown $content
* @param string $isUikit
* @return string|unknown
*/
public static function getContainer($content, $isUikit = false, $full = 'rv-block-full')
{
if ($isUikit == true) {
return sprintf('<div class="uk-container uk-container-center %s">%s</div>', $full ,$content);
} else {
//normal, responsive
return $content;
}
}
/**
* return layout 100
*
* @param unknown $content
* @param string $isUikit
*/
public static function getLayoutUikit($content, $isUikit = false, $full = 'rv-block-full')
{
if ($isUikit == true) {
$code = <<<EOF
<div class="bgContent">
<div class="uk-container uk-container-center {$full}">
<div class="uk-grid" data-uk-grid-margin>
<div class="uk-width-1-1 design-block" rv-layout="100">
<div class="layoutfix">
<div id="editable_area_content" class="editable_area">$content</div>
</div>
</div>
</div>
</div>
</div>
EOF;
return $code;
} else {
return $content;
}
}
/**
* check is uilit template
*
* @param string $templatePath
* @param string $templateFolder
* @return boolean
*/
public static function isUikitTemplate($templatePath = TEMPLATE_PATH , $templateFolder = '')
{
$uikitFile = $templatePath . '/' . $templateFolder . '/rvsb-css/rvsb-extended-uikit.css';
if (is_file($uikitFile) == true) {
SGL::logMessage("isUikit: 1", PEAR_LOG_DEBUG);
SGL::logMessage("isUikit: " . $uikitFile, PEAR_LOG_DEBUG);
return true;
} else {
return false;
}
}
/**
* input:1 = path
* input:2 = array code html or css
*
* @param unknown_type $templateFolder
* @return string
*/
public static function isResponsiveTemplate($templateItemFolder)
{
$isResponSive = false;
$code = '';
if (is_array($templateItemFolder)) {
$code = join('', $templateItemFolder);
} else {
$code = $templateItemFolder;
}
//|| is_file($code . '/mc_preview.jpg')
if ( is_file($code . '/skeleton.css') ) {
//case: 1 input path template
$isResponSive = true;
} elseif (preg_match('/skeleton.css|\$lineheight/', $code)) {
//case: 2 input index.html
$isResponSive = true;
} elseif (is_file($code . '/index.htm') && is_file($code . '/rvsb-css/rvsb-extended-uikit.css') == false) {
//and is not uikit
$content = file_get_contents($code . '/index.htm');
if (preg_match('/\{NAVIGATOR\-MOBILE\}/ims', $content)) {
$isResponSive = true;
}
}
SGL::logMessage("isResponsive:" . $isResponSive, PEAR_LOG_DEBUG);
return $isResponSive;
}
/*
* detect import template responsive
* have file: mc_preview.jpg , skeleton.css
*/
public static function isImportResponsiveTemplate($templateFolderPath)
{
$isResponSive = false;
//$pathImg = $target = RvsLibs_File::buildPath(array($templateFolderPath, 'mc_preview.jpg'));
$pathSkeleton = $target = RvsLibs_File::buildPath(array($templateFolderPath, 'skeleton.css'));
$isResponSive = ( is_file($pathSkeleton) ) ? true : false;
SGL::logMessage("_responsive: " . $isResponSive, PEAR_LOG_DEBUG);
return $isResponSive;
}
/**
* Start add css lineheight case template custom File style.css
* เฉพาะ none responsive
*/
public static function getLineheigh($templatePathCss, $lineHeightValue)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$strPageCss = '';
if (is_file($templatePathCss . '/style.css')) {
$aPageCss = RvsLibs_File::file($templatePathCss . '/style.css');
$strPageCss = join("", $aPageCss);
$lineHeight = " line-height:{$lineHeightValue};";
$strPageCss = preg_replace('/(\s+body\s*\{.*?)\}/mis', '$1' . $lineHeight . "\n" . '}', $strPageCss);
}
return $strPageCss;
}
/**
* getpath for load config by type
*
* @param $aDiyConf
* @param $type
* @return unknown_type
*/
public static function getResponsivePath($aDiyConf, $type)
{
$defaultTheme = '1-blue';
$resLayout = 'Diy01';
//background
$bgColorTheme = (isset($aDiyConf['rs_conf_background']['theme'])) ? $aDiyConf['rs_conf_background']['theme'] : $defaultTheme;
$fileBgColorName = (isset($aDiyConf['rs_conf_background']['id'])) ? $aDiyConf['rs_conf_background']['id'] : 'bgColor14.ini.php';
//body
$bodyColorTheme = (isset($aDiyConf['rs_conf_body']['theme'])) ? $aDiyConf['rs_conf_body']['theme'] : $defaultTheme;
$fileBodyName = (isset($aDiyConf['rs_conf_body']['id'])) ? $aDiyConf['rs_conf_body']['id'] : 'bodyColor1.ini.php';
//header
$headerColorTheme = (isset($aDiyConf['rs_conf_header']['theme'])) ? $aDiyConf['rs_conf_header']['theme'] : $defaultTheme;
$fileHeaderName = (isset($aDiyConf['rs_conf_header']['id'])) ? $aDiyConf['rs_conf_header']['id'] : 'header14.ini.php';
//navigation
$navColorTheme = (isset($aDiyConf['rs_conf_navigator']['theme'])) ? $aDiyConf['rs_conf_navigator']['theme'] : $defaultTheme;
$fileNavName = (isset($aDiyConf['rs_conf_navigator']['id'])) ? $aDiyConf['rs_conf_navigator']['id'] : 'navColor14.ini.php';
$pathWebsiteBackground = RvsLibs_File::buildPath(array(SGL_WEB_ROOT, 'DiyResponsive', 'WebsiteBackground', 'bgColor'));
$pathBodyColor = RvsLibs_File::buildPath(array(SGL_WEB_ROOT, 'DiyResponsive', 'BodyColor'));
$pathHeaderColor = RvsLibs_File::buildPath(array(SGL_WEB_ROOT, 'DiyResponsive', 'HeaderColor'));
$pathNavColor = RvsLibs_File::buildPath(array(SGL_WEB_ROOT, 'DiyResponsive', 'NavigatorColor', 'NavigatorColor'));
switch ($type) {
//WebsiteBackground
case 'bg':
return RvsLibs_File::buildPath(array($pathWebsiteBackground, $bgColorTheme, $fileBgColorName));
//BodyColor
case 'body':
return RvsLibs_File::buildPath(array($pathBodyColor, $bodyColorTheme, $fileBodyName));
//HeaderColor
case 'header':
return RvsLibs_File::buildPath(array($pathHeaderColor, $headerColorTheme, $fileHeaderName));
//NavigatorColor
case 'nav':
return RvsLibs_File::buildPath(array($pathNavColor, $navColorTheme, $fileNavName));
}
}
}
}
if (class_exists('RvsLibs_Template') === false) {
class RvsLibs_Template extends RvsLibs_Template_Validate
{
/**
* insert hb for the first time to select template ...
* do not crop image
* @param $projectId
* @param $orgHB
* @param $templateItemFolder
*/
public static function updateDefaultHB($projectId, $orgHB, $templateItemFolder, $addNew=false, $isUikit=false)
{
$aSize = array();
if (!is_file($orgHB) && $addNew == false) {
SGL::logMessage('_responsive1: exist--> ' . $orgHB, PEAR_LOG_DEBUG);
return false;
} elseif (is_file($orgHB)) {
$aSize = RvsLibs_Image2::getImageSize($orgHB, 'gd');
}
$fileName = end(explode('/', $orgHB));
$pathHeaderBaner = RvsLibs_File::buildPath(array(
REAL_PROJECT_PATH, $projectId, 'images', 'headerbanner'
));
$pathHeaderBanerOrg = RvsLibs_File::buildPath(array(
REAL_PROJECT_PATH, $projectId, 'images', 'headerbannerorg'
));
$pathImgHeaderBanner = RvsLibs_File::buildPath(array($pathHeaderBaner, $fileName));
$pathImgHeaderBannerOrg = RvsLibs_File::buildPath(array($pathHeaderBanerOrg, $fileName));
$asizeWidth = isset($aSize[0]) ? $aSize[0] : 940;
$asizeheight = isset($aSize[1]) ? $aSize[1] : 450;
$id = md5($fileName);
$aDataSub['id'] = $id;
$aDataSub['name'] = $fileName;
$aDataSub['hd_height'] = $asizeheight;
$aDataSub['hd_width'] = $asizeWidth;
$aDataSub['position_x'] = 0;
$aDataSub['position_y'] = 0;
$aDataSub['position_x2'] = $asizeWidth;
$aDataSub['position_y2'] = $asizeheight;
$aData[$id] = $aDataSub;
unset($aDataSub);
if (!is_dir($pathHeaderBaner)) {
RvsLibs_System::mkDir(array('-p', '-m', '0755', $pathHeaderBaner));
}
if (!is_dir($pathHeaderBanerOrg)) {
RvsLibs_System::mkDir(array('-p', '-m', '0755', $pathHeaderBanerOrg));
}
if (is_file($orgHB)) {
///copy file to hb path
if (is_file($pathImgHeaderBanner)) {
SGL::logMessage('_responsive2: exist--> ' . $pathImgHeaderBanner, PEAR_LOG_DEBUG);
RvsLibs_System::rm(array('-f', $pathImgHeaderBanner));
}
RvsLibs_System::copy(array($orgHB, $pathImgHeaderBanner));
if (is_file($pathImgHeaderBannerOrg)) {
SGL::logMessage('_responsive3: exist--> ' . $pathImgHeaderBannerOrg, PEAR_LOG_DEBUG);
RvsLibs_System::rm(array('-f', $pathImgHeaderBannerOrg));
}
RvsLibs_System::copy(array($orgHB, $pathImgHeaderBannerOrg));
}
///write file
$customCssPath = RvsLibs_Project::getCustomCssPath($projectId, $templateItemFolder);
if (!is_dir($customCssPath)) {
RvsLibs_System::mkDir(array('-p', '-m', '0755', $customCssPath));
}
$fileConfigImgHeaderBanner = RvsLibs_File::buildPath(array(
$customCssPath, 'headerbannner.ini.php'
));
SGL::logMessage('write config: ' . $fileConfigImgHeaderBanner, PEAR_LOG_DEBUG);
if ($isUikit == false) {
//create new project จะสร้าง headerbannner.ini.php เฉพาะ responsive
RvsLibs_File::writeFileSerialData($fileConfigImgHeaderBanner, $aData);
}
return true;
}
/**
* ตรวจสอบว่าเคย add headerbanner รูปเดิมไปแล้วหรือ ยัง
* ถ้าซ้ำลบเลย
* @param unknown $pathBanner
* @param unknown $templateItemPath
* @param unknown $customCssPath
*/
public static function bannerIsExist($pathBanner, $customCssPath)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$aMd5Exist = array();
$projectID = RvsLibs_Project::getProjectId();
$desMd5 = RvsLibs_File::getMd5File($pathBanner);
$pathHeaderBaner = RvsLibs_File::buildPath(array(REAL_PROJECT_PATH, $projectID, 'images', 'headerbannerorg'));
$pathImgProject = RvsLibs_File::buildPath(array(REAL_PROJECT_PATH, $projectID));
$aFile = RvsLibs_System::ls(array('-a', '-R', $pathHeaderBaner));
if (count($aFile['files'])) {
foreach ($aFile['files'] as $sourceFile) {
//preg_match('/banner\_(.*?)\./', $sourceFile, $aImg);
//$imgId = (isset($aImg[1])) ? trim($aImg[1]) : '';
$file = str_replace($pathImgProject, '', $sourceFile);
//SGL::logMessage('case: ' . $file, PEAR_LOG_DEBUG);
$sourceMd5 = RvsLibs_File::getMd5File($sourceFile);
if (isset($aMd5Exist[$sourceMd5]) == false) {
$aMd5Exist[$sourceMd5] = $file;
}
}
}
//echo '<pre>';
//print_r($aMd5Exist);
$fileCustom = RvsLibs_File::buildPath(array($customCssPath, 'headerbannner.ini.php'));
$aData = RvsLibs_File::getJsonDecodeFile($fileCustom, true);
//print_r($aData);
//echo 'count: ' . count($aData['slide_item']);
if (isset($aData['slide_item']) && count($aData['slide_item'])) {
foreach ($aData['slide_item'] as $imgId => $aVal) {
//clean imageId ที่ซ้ำออกจาก file conf
//echo $imgId . '<br>';
$sourceFileOrg = $pathImgProject . $aVal['img_org'];
$sourceFilePath = $pathImgProject . $aVal['img_path'];
$sourceMd5 = trim(RvsLibs_File::getMd5File($sourceFileOrg));
//path ที่ไม่ใช่ rvs_libray
if (in_array(trim($aVal['img_org']), $aMd5Exist) == false
&& preg_match('/\/rvs\_library\//', $aVal['img_org']) == false) {
unset($aData['slide_item'][$imgId]);
/*echo '<br>== exist ==';
echo '<br>' . $sourceMd5;
echo '<br>delete:' . $sourceFileOrg;
echo '<br>delete:' . $sourceFilePath;*/
unlink($sourceFileOrg);
unlink($sourceFilePath);
}
}
}
/*
echo '<br>final aData<br>';
print_r($aData);
exit;*/
RvsLibs_File::writeJsonEncodeFile($fileCustom, $aData);
return $aData;
}
public static function updateUikitHB($templateItemPath, $customCssPath, $projectID=null)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$aData = array();
if (is_null($projectID)) {
$projectID = RvsLibs_Project::getProjectId();
}
$pathHeaderBaner = RvsLibs_File::buildPath(
array(REAL_PROJECT_PATH, $projectID, 'images', 'headerbanner')
);
$slideOrgPath = RvsLibs_File::buildPath(
array(REAL_PROJECT_PATH, $projectID, 'images', 'headerbannerorg')
);
$pathBanner = $templateItemPath . '/images/header_banner.jpg';
if (is_file($pathBanner) == true) {
$aData = self::bannerIsExist($pathBanner, $customCssPath);
}
//case banner อันเดิมไม่ต้อง add เพิ่ม
if (isset($aData['slide_item']) && count($aData['slide_item'])) {
SGL::logMessage('case: select headerbanner exist return aData', PEAR_LOG_DEBUG);
return $aData;
}
//case: select headerbanner ใหม่
if (is_file($pathBanner)) {
SGL::logMessage('case: add new headerbanner', PEAR_LOG_DEBUG);
require_once SGL_MOD_DIR . '/sitebuilder/classes/AjaxClass/AdjustStyleAjaxMgr.php';
$oAjax = new AdjustStyleAjaxMgr();
if (!is_dir($pathHeaderBaner)) {
RvsLibs_System::mkDir(array('-p', '-m', 0755, $pathHeaderBaner));
}
if (!is_dir($slideOrgPath)) {
RvsLibs_System::mkDir(array('-p', '-m', 0755, $slideOrgPath));
}
$res->aSizeImg = array('h' => '350','w' => '1440', 'x' => '0','y' => '0');
$res->hbId = uniqid();
$res->forderCustomCss = $customCssPath;
$res->slideId = $res->hbId;
$res->imgName = $oAjax->getSlideName('jpg');
$res->img_path = $slideOrgPath . '/' . $res->imgName;
RvsLibs_System::copy(array($pathBanner, $res->img_path));
$res->img_url = $oAjax->getUrlByPath($res->img_path);
$res->pathImgHeaderBannerCrop = $pathHeaderBaner . '/' . $res->imgName;
$aData = $oAjax->doAddSlide($res);
}
return $aData;
}
/**
*
* Enter description here ...
* @param $aCss = array(0 => array(
* 'min-screen-width' => null, //for @media
* 'max-screen-width' => null, //for @media
* 'prop' => 'body', //css class or id
* 'attr' => '', //css attibute (color, background-color, position ...)
* 'val' => '', // value(100%,100px,none,#ddf000 ...)
* ));
*/
public static function updateRsCustomcss($soueceFile, $desFile, $aCss=array(), $noMediaQuery=false)
{
SGL::logMessage('rvdebug:source: ' . $soueceFile, PEAR_LOG_DEBUG);
SGL::logMessage('rvdebug:target: ' . $desFile, PEAR_LOG_DEBUG);
if (!is_file($soueceFile)) {
return false;
}
require_once SGL_MOD_DIR . '/sitebuilder/classes/RV_CssParser.php';
$oCss = RV_CssParser::singleton(true);
$staticLayout = SGL_WEB_ROOT . '/responsiveTemplates/stylesheets/static_layout.css';
if (is_file($desFile)) {
$aCssss = $oCss->merge_multiple_css(array($soueceFile, $desFile, $staticLayout));
} else {
$aCssss = $oCss->merge_multiple_css(array($soueceFile, $staticLayout));
//$aCssss = $oCss->parse_file($soueceFile);
}
$oCss->setMultiValue($aCss);
$oCss->build_css(false);
$oCss->write_file($desFile);
if ($noMediaQuery) {
///write file nonMobileCompatible/layout.csse
$noneMobilePath = preg_replace('/\/[^\/]*.css$/ims', '', $desFile);
$noneMobilePath = $noneMobilePath . '/noneMobileCompatible';
if (!is_dir($noneMobilePath)) {
RvsLibs_System::mkDir(array('-p', '-m', 0755, $noneMobilePath));
}
$content = $oCss->getCssNoMedia();
$oCss->write_file($noneMobilePath . '/layout.css', $content);
}
return true;
}
/**
*
* Enter description here ...
* @param $aCss = array(0 => array(
* 'min-screen-width' => null, //for @media
* 'max-screen-width' => null, //for @media
* 'prop' => 'body', //css class or id
* 'attr' => '', //css attibute (color, background-color, position ...)
* 'val' => '', // value(100%,100px,none,#ddf000 ...)
* ));
*/
public static function updateUikitCustomCss($soueceFile, $desFile, $aCss=array())
{
SGL::logMessage('rvdebug:' . $soueceFile, PEAR_LOG_DEBUG);
if (!is_file($soueceFile)) {
return false;
}
require_once SGL_MOD_DIR . '/sitebuilder/classes/RV_CssParser.php';
$oCss = RV_CssParser::singleton(true);
$oCss->parse_file($soueceFile);
$oCss->setMultiValue($aCss);
$oCss->build_css(false);
$oCss->write_file($desFile);
return true;
}
public static function mergeCustomcss($desFile, $aFiles=array())
{
SGL::logMessage('destFile:' . $desFile, PEAR_LOG_DEBUG);
if (!count($aFiles)) {
return false;
}
require_once SGL_MOD_DIR . '/sitebuilder/classes/RV_CssParser.php';
$oCss = RV_CssParser::singleton(true);
$aCssss = $oCss->merge_multiple_css($aFiles);
///พยายาม unset login block css
if (isset($aCssss['Mobile Landscape']['props']['.RVS_BlockLogin']['display'])) {
unset($aCssss['Mobile Landscape']['props']['.RVS_BlockLogin']['display']);
}
if (isset($aCssss['Mobile Landscape']['props']['.m_block_login'])) {
unset($aCssss['Mobile Landscape']['props']['.m_block_login']);
}
if (isset($aCssss['Mobile Portrait']['props']['.RVS_BlockLogin']['display'])) {
unset($aCssss['Mobile Portrait']['props']['.RVS_BlockLogin']['display']);
}
if (isset($aCssss['Mobile Portrait']['props']['.m_block_login'])) {
unset($aCssss['Mobile Portrait']['props']['.m_block_login']);
}
$oCss->build_css(false);
$oCss->write_file($desFile);
return true;
}
public static function UpdateTemplateVar($templateHTML)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
// IF $templateHTML = file(TEMPLATE/index.htm) = array then join array
if (is_array($templateHTML)) {
$templateHTML = implode($templateHTML);
}
// Find id="rv_top_adjust_width_?"
if(empty($input)) {
$input = new stdClass();
}
$regExpTopAdjustWidth = '/<\s*table.*?id\s*=\s*["|\']rv_top_adjust_width_([0-9]){1,}["|\'].*?>/i';
$input->project_id = SGL_Session::get('rvs_project_id');
$input->fileOptionTable = REAL_PROJECT_PATH . '/' . $input->project_id . '/setOptionTableTop.ini';
if (file_exists($input->fileOptionTable)) {
$aOptionTable = RvsLibs_Config::parse_ini_file($input->fileOptionTable, true);
}
if (preg_match($regExpTopAdjustWidth, $templateHTML, $tagTableTopAdjustWidth)) {
$tagTable = $tagTableTopAdjustWidth[0];
$regExpIdTopAdjustWidth = '/id\s*=\s*["|\']rv_top_adjust_width_[0-9]{1,}["|\']/i';
if (preg_match($regExpIdTopAdjustWidth, $tagTable, $idTopAdjustWidth)) {
$strTopAdjustWidth = $idTopAdjustWidth[0];
if (preg_match('/[0-9]/i', $strTopAdjustWidth, $resultAdjustWidth)) {
$topAdjustWidth = $resultAdjustWidth[0];
// Replacement Value
//Delete width=""
$regExpWidth = '/\s*width\s*=\s*["|\'].*?["|\']/i';
$replaceTagTable = RvsLibs_String::preg_replace($regExpWidth, '' , $tagTable);
//Replace width=""
if (file_exists($input->fileOptionTable) && (isset($aOptionTable['resolution']['width']))) {
$replaceTopWidth = RvsLibs_String::trim($aOptionTable['resolution']['width']);
} else {
$fileLayoutWidth = RVS_USER_HOME . '/.rvsitebuilder/rvsbTemplateLayoutWidth.txt';
if (file_exists($fileLayoutWidth)) {
$replaceTopWidth = 780 - $topAdjustWidth;
} else {
$replaceTopWidth = '100%';
}
}
$topWidthReplace = ' width="' . $replaceTopWidth . '"';
$positionReplace = (isset($aOptionTable['position']['align']) && $aOptionTable['position']['align']) ? $aOptionTable['position']['align'] : 'center';
//default center
$replaceTagTable = RvsLibs_String::str_replace('>', $topWidthReplace . ' align="' . $positionReplace . '" >' , $replaceTagTable);
// Replace <table>
$templateHTML = RvsLibs_String::str_replace($tagTable, $replaceTagTable, $templateHTML);
}
}
}
//replace id="rv_adjust_width_???" for width BODY
if (isset($replaceTopWidth) && preg_match_all("/id\s*=\s*\"rv_adjust_width_(.*?)\"/", $templateHTML, $aMatchCenter)) {
$vMatchRvWidth = RvsLibs_String::trim($aMatchCenter[1][0]);
$valWidth = (preg_match("/\%$/", $replaceTopWidth)) ? '100%' : $replaceTopWidth - $vMatchRvWidth;
$vReplace = 'id="rv_adjust_width_' . $vMatchRvWidth . '" width="' . $valWidth . '"';
$templateHTML = RvsLibs_String::str_replace('id="rv_adjust_width_' . $vMatchRvWidth . '"', $vReplace, $templateHTML);
}
return $templateHTML;
}
/**
* Call In STEP 3 / Publish & Preview
*
* @param String $templateHTML
* @param Array $aRegMove use only STEP 3 When change style current object position.
* @return Array $templateHTML['template'] , $templateHTML['position']
*/
public static function SetPositionLogoCompanySlogan($templateHTML, $aRegMove = array())
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$aTemplateHTML = Array();
$projectId = SGL_Session::get('rvs_project_id');
if(empty($input)) {
$input = new stdClass();
}
$input->fileDragAndDrop = REAL_PROJECT_PATH . '/' . $projectId . '/setDragAndDropItem.ini';
$cache = &RvsLibs_File::rvsCache();
$res = RvsLibs_File::isNotMd5Change('SetPositionLogoCompanySlogan', $input->fileDragAndDrop);
if ($res === true && $data = $cache->get('SetPositionLogoCompanySlogan', 'cachedata')) {
$input->aDefaultMove = unserialize($data);
SGL::logMessage('=============== SetPositionLogoCompanySlogan from cache', PEAR_LOG_DEBUG);
} else {
if (count($aRegMove)) {
//require by from field Step 3
$input->aDefaultMove = $aRegMove;
} else {
$input->aDefaultMove = (is_file($input->fileDragAndDrop)) ? RvsLibs_Config::parse_ini_file($input->fileDragAndDrop,true) : false;
}
$data = serialize($input->aDefaultMove);
$cache->save($data, 'SetPositionLogoCompanySlogan', 'cachedata');
SGL::logMessage('================ SetPositionLogoCompanySlogan from file', PEAR_LOG_DEBUG);
}
$defaultHiddenStyleLayer = array();
if (preg_match("/Layer1/", $templateHTML)) {
if (preg_match("/id=\"Layer1\"\s*style\s*=\s*\"position\s*:\s*(relative|absolute)\s*;\s*left\s*:\s*(.*)\s*px\s*;\s*top\s*:\s*(.*)\s*px\s*;/", $templateHTML, $aMatch)) {
$resetX = RvsLibs_String::trim($aMatch[2]) . 'px';
$resetY = RvsLibs_String::trim($aMatch[3]) . 'px';
$aTemplateHTML['position']['layer1_x'] = RvsLibs_String::trim($aMatch[2]);
$aTemplateHTML['position']['layer1_y'] = RvsLibs_String::trim($aMatch[3]);
$aTemplateHTML['position']['layer1'] = 'left:' . $resetX . ';top:' . $resetY . ';';
$layer1Pattern = (isset($aMatch[0])) ? RvsLibs_String::str_replace('"', '\"', $aMatch[0]) : false;
$layer1Pattern = RvsLibs_Template::_registerPatturn($layer1Pattern);
if ($layer1Pattern && (isset($input->aDefaultMove['logo']['x']) && $input->aDefaultMove['logo']['x'])
&& (isset($input->aDefaultMove['logo']['y']) && $input->aDefaultMove['logo']['y'])) {
$layer1Replace = 'id="Layer1" style="position:' . $aMatch[1] . '; left:' . $input->aDefaultMove['logo']['x'] . '; top:' . $input->aDefaultMove['logo']['y'] . ';';
$templateHTML = RvsLibs_String::preg_replace("/" . $layer1Pattern . "/", $layer1Replace, $templateHTML);
}
}
}
if (preg_match("/Layer2/", $templateHTML)) {
if (preg_match("/id=\"Layer2\"\s*style\s*=\s*\"position\s*:\s*(relative|absolute)\s*;\s*left\s*:\s*(.*)\s*px\s*;\s*top\s*:\s*(.*)\s*px\s*;/", $templateHTML, $aMatch)) {
$resetX1 = RvsLibs_String::trim($aMatch[2]) . 'px';
$resetY1 = RvsLibs_String::trim($aMatch[3]) . 'px';
$aTemplateHTML['position']['layer2_x'] = RvsLibs_String::trim($aMatch[2]);
$aTemplateHTML['position']['layer2_y'] = RvsLibs_String::trim($aMatch[3]);
$aTemplateHTML['position']['layer2'] = 'left:' . $resetX1 . ';top:' . $resetY1 . ';';
$layer2Pattern = (isset($aMatch[0])) ? RvsLibs_String::str_replace('"', '\"', $aMatch[0]) : false;
$layer2Pattern = RvsLibs_Template::_registerPatturn($layer2Pattern);
if ($layer2Pattern && (isset($input->aDefaultMove['company']['x']) && $input->aDefaultMove['company']['x'])
&& (isset($input->aDefaultMove['company']['y']) && $input->aDefaultMove['company']['y'])) {
$layer2Replace = 'id="Layer2" style="position:' . $aMatch[1] . '; left:' . $input->aDefaultMove['company']['x'] . '; top:' . $input->aDefaultMove['company']['y'] . ';';
$templateHTML = RvsLibs_String::preg_replace("/" . $layer2Pattern . "/", $layer2Replace, $templateHTML);
}
}
}
if (preg_match("/Layer3/", $templateHTML)) {
if (preg_match("/id=\"Layer3\"\s*style=\s*\"position\s*:\s*(relative|absolute)\s*;\s*left\s*:\s*(.*)\s*px\s*;\s*top\s*:\s*(.*)\s*px\s*;/", $templateHTML, $aMatch)) {
$resetX2 = RvsLibs_String::trim($aMatch[2]) . 'px';
$resetY2 = RvsLibs_String::trim($aMatch[3]) . 'px';
$aTemplateHTML['position']['layer3_x'] = RvsLibs_String::trim($aMatch[2]);
$aTemplateHTML['position']['layer3_y'] = RvsLibs_String::trim($aMatch[3]);
$aTemplateHTML['position']['layer3'] = 'left:' . $resetX2 . ';top:' . $resetY2 . ';';
$layer3Pattern = (isset($aMatch[0])) ? RvsLibs_String::str_replace('"', '\"', $aMatch[0]) : false;
$layer3Pattern = RvsLibs_Template::_registerPatturn($layer3Pattern);
if ($layer3Pattern && (isset($input->aDefaultMove['slogan']['x']) && $input->aDefaultMove['slogan']['x'])
&& (isset($input->aDefaultMove['slogan']['y'])) && $input->aDefaultMove['slogan']['y']) {
$layer3Replace = 'id="Layer3" style="position:' . $aMatch[1] . '; left:' . $input->aDefaultMove['slogan']['x'] . '; top:' . $input->aDefaultMove['slogan']['y'] . ';';
$templateHTML = RvsLibs_String::preg_replace("/" . $layer3Pattern . "/", $layer3Replace, $templateHTML);
}
}
}
$aTemplateHTML['template'] = $templateHTML;
return $aTemplateHTML;
}
//$isPublish (true : preview,publish ,false: other)
public static function setPrositionAndReplaceCustom($projectId, $isPublish)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$aLayer = DaoFactory::Project()->findCustomLayerByProjectId($projectId, null, 'getassoc');
$fileDragAndDrop = RvsLibs_File::buildPath(array(REAL_PROJECT_PATH, $projectId, 'setDragAndDropItem.ini'));
$cache = &RvsLibs_File::rvsCache();
$res = RvsLibs_File::isNotMd5Change('setPrositionAndReplaceCustom', $fileDragAndDrop);
if ($res === true && $data = $cache->get('setPrositionAndReplaceCustom', 'cachedata')) {
$aDefaultMove = unserialize($data);
SGL::logMessage('=============== setPrositionAndReplaceCustom from cache', PEAR_LOG_DEBUG);
} else {
$aDefaultMove = (is_file($fileDragAndDrop)) ? RvsLibs_Config::parse_ini_file($fileDragAndDrop,true) : false;
$data = serialize($aDefaultMove);
$cache->save($data, 'setPrositionAndReplaceCustom', 'cachedata');
SGL::logMessage('================ setPrositionAndReplaceCustom from file', PEAR_LOG_DEBUG);
}
$replacePattenImage = '';
if(count($aLayer) > 0) {
foreach($aLayer as $keyId => $value) {
$layerId = 'Layer'.$keyId;
$posX = (isset($aDefaultMove[$layerId]['x']) && $aDefaultMove[$layerId]['x'] != '') ? $aDefaultMove[$layerId]['x'] : '20px';
$posY = (isset($aDefaultMove[$layerId]['y']) && $aDefaultMove[$layerId]['y'] != '') ? $aDefaultMove[$layerId]['y'] : '20px';
$zIndex = (isset($aDefaultMove[$layerId]['priority']) && $aDefaultMove[$layerId]['priority'] != '') ? $aDefaultMove[$layerId]['priority'] : '0';
// case Image layer
if (isset($value->is_image) && $value->is_image == 1) {
if (preg_match('/^rvs_library/i', $value->layer_data)) {
$pathImage = RvsLibs_File::buildPath(array(WEB_THEME_PATH, $value->layer_data));
$urlImg = ($isPublish === true) ? $value->layer_data : RvsLibs_File::buildPath(array(WEB_THEME_URL, $value->layer_data));
} else {
$pathImage = RvsLibs_File::buildPath(array(PROJECT_PATH, $projectId, $value->layer_data));
$urlImg = ($isPublish === true) ? $value->layer_data : RvsLibs_File::buildPath(array(PROJECT_URL, $projectId, $value->layer_data));
$urlImg = $urlImg . '?' . uniqid();
}
$aLogoSize = RvsLibs_Image::getImageSizeLayer($pathImage);
$aLink = '';
$aEndLink = '';
if (isset($value->layer_url) && $value->layer_url) {
$aLink = '<a id="alink_'. $layerId . '" href="' . $value->layer_url . '" target="' . $value->layer_target . '">';
$aEndLink = '</a>';
}
$replacePattenImage .= '<div class="custom_layer" style="position: absolute;">'."\n"
. $aLink . '<div id="' . $layerId . '" class="moveHeader" style="z-index:' . $zIndex . ';width:' . $aLogoSize['width'] . 'px; height:' . $aLogoSize['height'] . 'px; left: ' . $posX . '; top: ' . $posY . '; overflow: visible; white-space: nowrap; position: absolute;">'."\n"
.'<img id="img_' . $layerId . '" src="' . $urlImg . '" '
. 'width="' . $aLogoSize['width'] . '" height="' . $aLogoSize['height'] . '" /></div> '. $aEndLink . '</div>';
}
//case Text Layer
if (isset($value->is_image) && $value->is_image == 0) {
$replacePattenImage .= '<div class="custom_layer" style="position: absolute;"><div id="' . $layerId . '" class="moveHeader" style="z-index:' . $zIndex . ';cursor: move; left: ' . $posX . '; top: ' . $posY . '; text-align: center; overflow: visible; white-space: nowrap; position: absolute;">' . $value->layer_data . '</div></div>';
}
}
}
return $replacePattenImage;
}
public static function setPrositionAndReplaceCustom2($projectId, $isPublish, $isResponsive=false)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$aLayer = DaoFactory::Project()->findCustomLayerByProjectId($projectId, null, 'getassoc');
if ($isPublish == false || $isResponsive == false) {
$fileDragAndDrop = RvsLibs_File::buildPath(array(REAL_PROJECT_PATH, $projectId, 'setDragAndDropItem.ini'));
$cache = &RvsLibs_File::rvsCache();
$res = RvsLibs_File::isNotMd5Change('setPrositionAndReplaceCustom', $fileDragAndDrop);
if ($res === true && $data = $cache->get('setPrositionAndReplaceCustom', 'cachedata')) {
$aDefaultMove = unserialize($data);
} else {
$aDefaultMove = (is_file($fileDragAndDrop)) ? RvsLibs_Config::parse_ini_file($fileDragAndDrop,true) : false;
$data = serialize($aDefaultMove);
$cache->save($data, 'setPrositionAndReplaceCustom', 'cachedata');
}
}
$replacePattenImage = '';
if(count($aLayer) > 0) {
foreach($aLayer as $keyId => $value) {
$layerId = 'Layer'.$keyId;
if ($isPublish == false || $isResponsive == false) {
$posX = (isset($aDefaultMove[$layerId]['x']) && $aDefaultMove[$layerId]['x'] != '') ? $aDefaultMove[$layerId]['x'] : '20px';
$posY = (isset($aDefaultMove[$layerId]['y']) && $aDefaultMove[$layerId]['y'] != '') ? $aDefaultMove[$layerId]['y'] : '20px';
$zIndex = (isset($aDefaultMove[$layerId]['priority']) && $aDefaultMove[$layerId]['priority'] != '') ? $aDefaultMove[$layerId]['priority'] : '10';
}
// case Image layer
if (isset($value->is_image) && $value->is_image == 1) {
$value->layer_data = trim($value->layer_data);
if (preg_match('/^rvs_library\//i', $value->layer_data)) {
$pathImage = RvsLibs_File::buildPath(array(WEB_THEME_PATH, $value->layer_data));
$urlImg = ($isPublish === true)
? $value->layer_data
: WEB_THEME_URL . '/' . $value->layer_data;
} else {
$pathImage = RvsLibs_File::buildPath(array(PROJECT_PATH, $projectId, $value->layer_data));
$urlImg = ($isPublish === true)
? $value->layer_data
: PROJECT_URL . '/' . $projectId . '/' . $value->layer_data;
$urlImg = $urlImg . '?' . uniqid();
}
$aLink = '';
$aEndLink = '';
if (isset($value->layer_url) && $value->layer_url) {
$aLink = '<a id="alink_'. $layerId . '" href="' . $value->layer_url . '" target="' . $value->layer_target . '">';
$aEndLink = '</a>';
}
if ($isPublish && $isResponsive == false) {
$styleImg = '';
$style = 'style="z-index:' . $zIndex . '; left: ' . $posX . '; top: ' . $posY . '; position: absolute;"';
} elseif ($isPublish == false) {
$aLogoSize = RvsLibs_Image::getImageSizeLayer($pathImage);
$styleImg = 'width="' . $aLogoSize['width'] . '" height="' . $aLogoSize['height'] . '"';
$style = 'style="z-index:' . $zIndex . ';width:' . $aLogoSize['width'] . 'px; height:' . $aLogoSize['height'] . 'px; overflow: visible; white-space: nowrap; position: absolute;"';
} else {
$styleImg = '';
$style = '';
}
$replacePattenImage .= '<div class="custom_layer">'."\n"
. $aLink . '<div id="' . $layerId . '" class="moveHeader" ' . $style . '>'."\n"
.'<img id="img_' . $layerId . '" src="' . $urlImg . '" '
. $styleImg . ' /></div> '. $aEndLink . '</div>';
}
//case Text Layer
if (isset($value->is_image) && $value->is_image == 0) {
if ($isPublish && $isResponsive == false) {
$style = 'style="z-index:' . $zIndex . '; left: ' . $posX . '; top: ' . $posY . '; position: absolute;"';
} elseif ($isPublish == false) {
$style = 'style="z-index:' . $zIndex . ';cursor: move; position: absolute; left: ' . $posX . '; top: ' . $posY . '; text-align: center; overflow: visible; white-space: nowrap;"';
} else {
//$isPublish && $isResponsive == true
$style = '';
}
$layerData = RvsLibs_Template::cleanDivLayer($value->layer_data);
$replacePattenImage .= '<div class="custom_layer"><div id="' . $layerId . '" class="moveHeader" ' . $style . ' >' . $layerData . '</div></div>';
}
}
}
return $replacePattenImage;
}
/**
* fix add text layer clean with <div class="contextLayer">???</div>
* <div id="showEditImg">???</div>
* @param unknown $data
* @return mixed
*/
public static function cleanDivLayer($data)
{
$data = preg_replace('/(<div\s*[^>]*id=)"showEditImg[^>]+"([^>]*>).*?<\/div>/ims', '', $data);
$data = preg_replace('/(<div\s*[^>]*class=)"contextLayer[^>]+"([^>]*>)(.*?)<\/div>/ims', '', $data);
SGL::logMessage('rvdebug: data:' . $data, PEAR_LOG_DEBUG);
return $data;
}
public static function setdefaultPrositionCustom($projectId, $aLayer=array())
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
if (is_null($aLayer) || count($aLayer) <= 0) {
$aLayer = DaoFactory::Project()->findCustomLayerByProjectId($projectId, null, 'getassoc');
}
$fileDragAndDrop = RvsLibs_File::buildPath(array(REAL_PROJECT_PATH, $projectId, 'setDragAndDropItem.ini'));
$aDefaultMove = (is_file($fileDragAndDrop)) ? RvsLibs_Config::parse_ini_file($fileDragAndDrop,true) : false;
$aDefault = array();
//Replace custom layer
if(count($aLayer) > 0) {
foreach($aLayer as $keyId => $value) {
$layerId = 'Layer' . $keyId;
if(isset($aDefaultMove[$layerId]['x']) && $aDefaultMove[$layerId]['x']
&& (isset($aDefaultMove[$layerId]['y'])) && $aDefaultMove[$layerId]['y']) {
// case Image layer
$aDefault[$layerId]['x'] = $aDefaultMove[$layerId]['x'];
$aDefault[$layerId]['y'] = $aDefaultMove[$layerId]['y'];
$aDefault[$layerId]['priority'] = (isset($aDefaultMove[$layerId]['priority']) && $aDefaultMove[$layerId]['priority']) ? $aDefaultMove[$layerId]['priority'] : '0';
}
}
}
return $aDefault;
}
/**
* cleanCodeBody
*
* replace path ๏ฟฝ๏ฟฝ๏ฟฝวน๏ฟฝอง BODY ๏ฟฝ๏ฟฝอน๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ Publish ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ SitePreview
* ๏ฟฝ๏ฟฝ๏ฟฝ copy images ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ layout_template ไปด๏ฟฝ๏ฟฝ๏ฟฝ
*/
//fixed PHPMD scan 07/07/2554
public static function cleanCodeBody($codeBody, $templatePath, $layoutTemplateId)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$oPublishReg = Publish_Registry::singleton();
$project_id = $oPublishReg->get('project_id');
$publishUrl = $oPublishReg->get('publishUrl');
//replace rvs_library|images|media|rvs_media_library|documents for directAdmin
if (RvsLibs_DirectAdmin::isDirectAdmin() === true) {
//Start replace embed url
$codeBody = preg_replace('%<\s*param(.*?)name\s*=\s*"movie"(.*?)value=".*?/media/%i', '<param$1name="movie"$2value="media/', $codeBody);
$codeBody = preg_replace('%<\s*param(.*?)name\s*=\s*"movie"(.*?)value=".*?/images/%i', '<param$1name="movie"$2value="images/', $codeBody);
$codeBody = preg_replace('%<\s*embed(.*?)src\s*=\s*".*?/media/%i', '<embed$1src="media/', $codeBody);
$codeBody = preg_replace('%<\s*embed(.*?)flashvars\s*=\s*"file=.*?/media/%i', '<embed$1flashvars="file=media/', $codeBody);
//Start replace embed url
$aP = array("/'src'\s*,\s*'(.*)images\/tryout\/template\',/", "/'movie'\s*,\s*'(.*)images\/tryout\/template\'/");
$aR = array("'src','images/tryout/template',", "'movie','images/tryout/template'");
$codeBody = preg_replace($aP,$aR, $codeBody);
$codeBody = preg_replace('/src\s*=\s*"(.*)images\/tryout/','src="' . $publishUrl . '/images/tryout', $codeBody);
$codeBody = str_replace('/CMD_PLUGINS/rvsitebuilder/images/themes/default/', $publishUrl . '/', $codeBody);
$codeBody = str_replace('/CMD_PLUGINS/rvsitebuilder/images/wysiwyg/', $publishUrl . '/', $codeBody);
$codeBody = str_replace('/CMD_PLUGINS/rvsitebuilder/images/', $publishUrl . '/', $codeBody);
$codeBody = preg_replace('/http(s|):\/\/(.*)\/.rvsitebuilderHome\/projects\/[0-9a-z]+\//i', $publishUrl . '/', $codeBody);
//$codeBody = preg_replace('/http(s|):\/\/(.*)\/.rvsitebuilder\/projects\/[0-9a-z]+\//i', $publishUrl . '/', $codeBody);
}
if (class_exists('LayoutInsertDataMgr') === false) {
require_once SGL_MOD_DIR . '/sitebuilder/classes/LayoutInsertDataMgr.php';
}
$codeBody = LayoutInsertDataMgr::replaceHeadData($codeBody, $layoutTemplateId);
$codeBody = LayoutInsertDataMgr::replaceLayoutData($codeBody, $layoutTemplateId);
$codeBody = RvsLibs_String::str_replace('class="rvFrame" width="780">', 'class="rvFrame" width="100%">', $codeBody);
$codeBody = RvsLibs_Image::replaceRvsImagesRandom($codeBody, $templatePath);
SGL::logMessage('after replaceRvsImagesRandom', PEAR_LOG_DEBUG);
//fix full url with port :2082:2083 :apiruk
$codeBody = RvsLibs_String::preg_replace("/url\((.*?):208[2|3]/", "url(", $codeBody);
$codeBody = self::_findBulletImagesLibaryToCopy($codeBody, $layoutTemplateId);
if (preg_match_all('/themes\/default\/sitebuilder\/images\/([a-zA-Z0-9_-]+.gif|jpg|swf|png)\s*/i', $codeBody , $aMatch)) {
foreach ($aMatch as $k => $v) {
$aMatch[$k] = array_unique($aMatch[$k]);
}
foreach ($aMatch[1] as $k1 => $v1) {
if (isset($aMatch[1][$k1]) && $aMatch[1][$k1] != '' ) {
$imagesName =$aMatch[1][$k1];
} else {
continue;
}
/// load register
/// get project_id ถ้า == null
$sourcePath = WEB_THEME_PATH . '/themes/default/sitebuilder/images/' . $imagesName;
if (file_exists($sourcePath) === true) {
if (is_null($project_id) === true) {
$targetPath = $templatePath . 'images/' . $imagesName;
$res = RvsLibs_System::copy(array('-R', $sourcePath, $targetPath));
if (SGL::isError($res) === true)
return $res;
} else {
$targetPath = 'images/' . $imagesName;
$res = Publish_CommonListFileTask::_builCopyFilesList($sourcePath, $targetPath);
if (SGL::isError($res) === true)
return $res;
}
}
}
}
//For layout template
if (preg_match_all('/(src\s*=\s*[\"|\']|url\()[a-z0-9_.:&?\/-]+(.*?)/i', $codeBody, $aElement)
&& preg_match('/images\/layouttemplate/', $codeBody)) {
foreach ($aElement[0] as $k=>$v) {
if (preg_match("/^http|^src=\"http|^url\(http/i", $aElement[0][$k]) && RvsLibs_Template::_isNotCpanelLink($aElement[0][$k])) {
continue;
}
$patternReplace = RvsLibs_String::preg_replace('/\//', '\/', $aElement[0][$k]);
if (preg_match('/images/i', $aElement[0][$k], $aMatchOpject)) {
$replaceValue = strstr($aElement[0][$k], 'images');
}
if (preg_match('/^url\(/i', $patternReplace)) {
$patternReplace = RvsLibs_String::preg_replace('/\(/', '\(', $patternReplace);
$codeBody = RvsLibs_String::preg_replace('/' . $patternReplace . '/', 'url(' . $replaceValue , $codeBody);
}
$aLayout = RvsLibs_String::dbeExplode('/', strstr($aElement[0][$k], 'layouttemplate'));
//$layoutId = (isset($aLayout[1])) ? $aLayout[1] : false;
if (isset($aLayout[1])) {
$layoutId = $aLayout[1] ;
} else {
continue;
}
//$layoutImages = (isset($aLayout[2])) ? $aLayout[2] : false;
if (isset($aLayout[2])) {
$layoutImages = $aLayout[2] ;
} else {
continue;
}
$layoutImagesPath = WEB_THEME_PATH . '/themes/default/sitebuilder/images/layouttemplate';
if (!file_exists($templatePath . '/images/layouttemplate/' . $layoutId) && $layoutId) {
$resMkdir = RvsLibs_System::mkDir(array('-p', $templatePath . '/images/layouttemplate/' . $layoutId));
if (SGL::isError($resMkdir) === true)
return $resMkdir;
}
$sourcePath = $layoutImagesPath . '/' . $layoutId . '/' . $layoutImages;
if (is_null($project_id) === true) {
$targetPath = $templatePath . '/images/layouttemplate/' . $layoutId . '/' . $layoutImages;
if (file_exists($sourcePath) === true) {
$res = RvsLibs_System::copy(array('-R', $sourcePath, $targetPath));
if (SGL::isError($res) === true)
return $res;
}
} else {
$targetPath = 'images/layouttemplate/' . $layoutId . '/' . $layoutImages;
if (file_exists($sourcePath) === true) {
$res = Publish_CommonListFileTask::_builCopyFilesList($sourcePath, $targetPath);
if (SGL::isError($res) === true)
return $res;
}
}
}
}
$codeBody = self::_findIconsLibaryTocopy($codeBody, $publishUrl);
// replace ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝเฉพ๏ฟฝ๏ฟฝ images/$file_name ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ rvs_library/$file_name
// ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ folder images user ๏ฟฝ๏ฟฝ๏ฟฝาง folder ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ replace ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ
if (preg_match_all('/<[^(>|\/)].*?>/', $codeBody, $aHTMLElement)) {/*old reg <\w(.*?)> */
foreach ($aHTMLElement[0] as $htmlLine) {
if (preg_match_all('/<.*?(flashvars|value|src|href)\s*=\s*(.*?)\/(images|rvs_library|media|rvs_media_library|documents|wysiwygpro)\/.*?>/', $htmlLine, $aElement)) {
$aReplace = array();
foreach ($aElement[0] as $k=>$v) {
if (preg_match("/^\"http/i", $aElement[2][$k]) && RvsLibs_Template::_isNotCpanelLink($aElement[2][$k])) {
continue;
}
$patternMatch0 = RvsLibs_Template::_registerPatturn($aElement[0][$k]);
$patternMatch2 = RvsLibs_Template::_registerPatturn($aElement[2][$k] . '/');
$aReplace[$k] = RvsLibs_String::preg_replace('/' . $patternMatch2 . '/', '"', $aElement[0][$k]);
$aReplace[$k] = RvsLibs_Template::_replaceThisSrc($aReplace[$k]);
$aReplace0 = RvsLibs_Template::_replaceFlashCode($aReplace[$k], $publishUrl);
$codeBody = RvsLibs_String::preg_replace('/' . $patternMatch0 . '/', $aReplace0, $codeBody);
}
}
}
}
// �ó� background
if (preg_match_all('/background\s*=\s*[\"|\'][a-z0-9_.:&?\/-]+(images|rvs_library)\s*/', $codeBody, $aElement)) {
foreach ($aElement[0] as $k=>$v) {
if (preg_match("/^http|^background=\"http/i", $aElement[0][$k]) && RvsLibs_Template::_isNotCpanelLink($aElement[0][$k])) {
continue;
}
$patternReplace = RvsLibs_String::preg_replace('/\//', '\/', $aElement[0][$k]);
if (preg_match('/images/i', $aElement[0][$k], $aMatchOpject)) {
$replaceValue = strstr($aElement[0][$k], 'images');
} else {
$replaceValue = strstr($aElement[0][$k], 'rvs_library');
}
$codeBody = RvsLibs_String::preg_replace('/' . $patternReplace . '/', 'background="' . $replaceValue , $codeBody);
}
}
// replace ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝเฉพ๏ฟฝ๏ฟฝ documents/$file_name
// ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ folder document user ๏ฟฝ๏ฟฝ๏ฟฝาง folder ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ replace ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ
if (preg_match_all('/href\s*=\s*[\"|\'][a-z0-9_.:&?\/-]+(documents)\s*/', $codeBody, $aElement)) {
foreach ($aElement[0] as $k=>$v) {
if (preg_match("/^http|^href=\"http/i", $aElement[0][$k]) && RvsLibs_Template::_isNotCpanelLink($aElement[0][$k])) {
continue;
}
$patternReplace = RvsLibs_String::preg_replace('/\//', '\/', $aElement[0][$k]);
$replaceValue = strstr($aElement[0][$k], 'documents');
$codeBody = RvsLibs_String::preg_replace('/' . $patternReplace . '/', 'href="' . $replaceValue , $codeBody);
}
}
return $codeBody;
}
public static function _findIconsLibaryTocopy($codeBody, $publishUrl = "")
{
if (preg_match_all('/<img(.*?)src\s*=\s*".*?\/wysiwygpro\/icons\/(.*?)\.gif"/', $codeBody, $aElement3)) {
foreach ($aElement3[0] as $k => $v) {
$fileName = $aElement3[2][$k] . '.gif';
$targetPath = 'wysiwygpro/icons/' . $fileName;
$sourcePath = SGL_WEB_ROOT . '/wysiwyg/themes/default/wysiwygpro/icons/' . $fileName;
if (is_file($sourcePath) === true) {
if (class_exists("Publish_CommonListFileTask") === false) {
require_once SGL_MOD_DIR.'/sitebuilder/classes/Publish/CommonTask.php';
}
SGL::logMessage("pharadol11_sourcePath ". $sourcePath, PEAR_LOG_DEBUG);
SGL::logMessage("pharadol11_target ". $targetPath, PEAR_LOG_DEBUG);
//pattern replace not work
//$codeBody = preg_replace('%<img(.*?)src\s*=\s*".*?\/wysiwyg\/themes\/(.*?)\/' . $targetPath . '"%', '<img$1src="' . $publishUrl .'/' . $targetPath . '"', $codeBody);
Publish_CommonListFileTask::_builCopyFilesList($sourcePath, $targetPath);
}
}
}
return $codeBody;
}
protected static function _findBulletImagesLibaryToCopy($codeBody, $layoutTemplateId)
{
//rvsitebuilder/themes/default/sitebuilder/images/bullet.gif
if (preg_match_all('/<img(.*?)src\s*=\s*"(.*?)\/themes\/default\/sitebuilder\/images\/(.*?)"/', $codeBody, $match)) {
foreach ($match[0] as $k => $v) {
$targetPath = 'images/layouttemplate/' . $layoutTemplateId . '/' . $match[3][$k];
$sourcePath = SGL_WEB_ROOT . '/themes/default/sitebuilder/' . $targetPath;
if (is_file($sourcePath) === true) {
if (class_exists("Publish_CommonListFileTask") === false) {
require_once SGL_MOD_DIR.'/sitebuilder/classes/Publish/CommonTask.php';
}
$codeBody = preg_replace('/<img(.*?)src\s*=\s*".*?\/themes\/default\/sitebuilder\/images\/' . $match[3][$k] . '"/', '<img$1src="' . $targetPath . '"', $codeBody);
Publish_CommonListFileTask::_builCopyFilesList($sourcePath, $targetPath);
}
}
}
return $codeBody;
}
/**
* Enter description here...
*
* @param unknown_type $inPattern
* @return unknown
*/
public static $aPatt = array();
public static $aRepl = array();
public static function _registerPatturn($inPattern)
{
$aP = array(
'#\^#i' => '\^',
'#\$#i' => '\$',
'#\(#i' => '\(',
'#\)#i' => '\)',
'#\{#i' => '\{',
'#\}#i' => '\}',
'#\|#i' => '\|',
'#\/#i' => '\/',
'#\+#i' => '\+',
'#\-#i' => '\-',
'#\.#i' => '\.',
'#\?#i' => '\?',
'#\*#i' => '\*',
'#\[#i' => '\[',
'#\]#i' => '\]',
'#\<#i' => '\<',
'#\>#i' => '\>',
);
$aPatt = isset(self::$aPatt) ? self::$aPatt : array();
$aRepl = isset(self::$aRepl) ? self::$aRepl : array();
if (count($aPatt) != count(array_keys($aP)) ) {
foreach ($aP as $k => $v) {
array_push($aPatt, $k);
array_push($aRepl, $v);
}
}
return RvsLibs_String::preg_replace($aPatt, $aRepl, $inPattern);
}
/**
* replac flash code
* @param unknown_type $htmlLine
* @return unknown_type
*/
public static function _replaceFlashCode($htmlLine, $publishUrl=null)
{
if (preg_match_all('/<.*?(flashvars=\"file)\s*=\s*(.*?)\/(images|rvs_library|media|rvs_media_library|documents)\/.*?>/', $htmlLine, $aElement)) {
$aReplace = array();
foreach ($aElement[0] as $k=>$v) {
if (preg_match("/^\"http/i", $aElement[2][$k]) && RvsLibs_Template::_isNotCpanelLink($aElement[2][$k])) {
continue;
}
$patternMatch0 = RvsLibs_Template::_registerPatturn($aElement[0][$k]);
$patternMatch2 = RvsLibs_Template::_registerPatturn($aElement[2][$k] . '/');
$aReplace[$k] = RvsLibs_String::preg_replace('/' . $patternMatch2 . '/', '', $aElement[0][$k]);
$htmlLine = RvsLibs_String::preg_replace('/' . $patternMatch0 . '/', $aReplace[$k], $htmlLine);
/*
// case file *.flv remove /media/file.flv to file.flv apiruk tanawat
if (preg_match("/(.*?)\.flv/i",$htmlLine)){
$htmlLine = RvsLibs_String::str_replace('flashvars="file=media/', 'flashvars="file='. $publishUrl . '/media/', $htmlLine);
}
*/
}
// case file *.flv remove /media/file.flv to file.flv apiruk tanawat
if (preg_match("/(.*?)\.flv|\.mp4/i",$htmlLine)){
//$htmlLine = RvsLibs_String::preg_replace('/flashvars=".*?media\//', 'flashvars="file='. $publishUrl . '/media/', $htmlLine);
$htmlLine = RvsLibs_String::preg_replace('/flashvars=\".*?(media|rvs_media_library)/', 'flashvars="file=' . $publishUrl . '/$1', $htmlLine);
}
} elseif (preg_match_all('/<.*?name=\"flashvars\".*?>/', $htmlLine, $aElement)) {
$htmlLine = RvsLibs_String::preg_replace('/value=\".*?(media|rvs_media_library)/', 'value="file=' . $publishUrl . '/$1', $htmlLine);
}
return $htmlLine;
}
/** replace url images in case censitive
* replace
<img alt="" src="/3rdparty/rvsitebuilder/project/{id}/images/masa1.jpg"
onmouseover="this.src='/3rdparty/rvsitebuilder/project/{id}/images/masa.jpg';"
onmouseout="this.src='/3rdparty/rvsitebuilder/project/{id}/images/masa1.jpg';" />
to
<img alt="" src="images/masa1.jpg"
onmouseover="this.src='images/masa.jpg';"
onmouseout="this.src='images/masa1.jpg';" />
* @param string $codeHtml
* @return string $codeHtml
*/
public static function _replaceThisSrc($codeHtml)
{
return preg_replace('/this\.src=(\'|\")(.*?)\/(images|rvs_library|media|rvs_media_library|documents)/', 'this.src=$1$3', $codeHtml);
}
/**
* validate html data is not cpanel link
* Ex.
* http://{domain}.com:2082/3rdparty/rvsitebuilder
* https://{domain}.com:2083/3rdparty/rvsitebuilder
* or with proxy
* http://cpanel.{domain}/3rdparty/rvsitebuilder
*@author apiruk boonruksa
*
* @param unknown_type $line
* @return unknown
*/
public static function _isNotCpanelLink($line)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
// optimize :nipaporn
return (preg_match("/:208[2|3]\/3rdparty\/rvsitebuilder/", $line, $match) || preg_match("/(.*)\/\/cpanel\.(.*)\/3rdparty\/rvsitebuilder/", $line, $match))
? false
: true;
}
public static function getPoweredByData($isResponsive = true, $isUikit = false)
{
SGL::logMessage('isResponsive: ' . $isResponsive, PEAR_LOG_DEBUG);
SGL::logMessage('isUikit: ' . $isUikit, PEAR_LOG_DEBUG);
$msg = RvsLibs_String::translate('POWERED BY');
if ($isResponsive == true || $isUikit == true ) {
return <<<EOF
<!-- START POWERED BY BLOCK -->
<div>$msg <a href="{HOSTLINK}" target="_blank">{HOSTTEXT}</a></div>
<!-- END POWERED BY BLOCK -->
EOF;
} else {
return <<<EOF
<!-- START POWERED BY BLOCK -->
<table align="center" cellpadding="0" cellspacing="0" class="bgpowered">
<tr><td class="bgpowered2">$msg</a></td>
<td class="marginpw2"><a href="{HOSTLINK}" class="hostlink" target="_blank">{HOSTTEXT}</a></td>
<td><img src="images/close.jpg" alt="" width="16" style="height:17px;" /></td>
</tr>
</table>
<!-- END POWERED BY BLOCK -->
EOF;
}
}
public static function replaceCodeBaseSSLMODE($str){
return (SSL_MODE == 1) ? RvsLibs_String::preg_replace("/(http:\/\/)(download\.macromedia\.com|www\.macromedia\.com)/i","https://$2", $str) : $str;
}
public static function replaceEncodeDataFail($codeBody) {
$strPattern = '/(%25)([\w]{2})/';
return RvsLibs_String::preg_replace($strPattern, '%$2', $codeBody);
}
//template
public static function replaceDIYConfigPath($oldFileConf,$newFileConf, $key)
{
$isMatch = preg_match('/([0-9]{1,3})/i', $oldFileConf[$key], $match);
$indexConfig = ($key == 'body')?$match[1] - 110:$match[1];
$fileName = ($isMatch) ? $indexConfig:false;
$modInt = 3 - RvsLibs_String::strlen($fileName);
for ($i = 0; $i < $modInt; $i++) {
$fileName = '0' . $fileName;
}
// optimize :nipaporn
return sprintf('%s%s.ini.php' ,$newFileConf[$key], $fileName);
}
//template
public static function genDIYconfig($confDiy, $aPatDIY)
{
// case 1: check if Ver01 Ver02 Ver03 use = $colorConfigPath = SGL_WEB_ROOT/DiyTemplate/diyconfigcolor/$fileName
if (isset($confDiy['selectLayout'])) {//realLayout=Hor04
if(preg_match('/Ver[0-3]{1,2}/i', $confDiy['selectLayout'])) {
$targetConf = 'navigator';
// case 2: check body is white use $colorConfigPath = SGL_WEB_ROOT/DiyTemplate/diyconfigcolor/$fileName
} elseif (preg_match('/Hor/i', $confDiy['selectLayout'])) {
// case 3: check body <> white use $colorConfigPath = SGL_WEB_ROOT/DiyTemplate/diyconfigcolor/$fileName
//191 = color config white in body
$targetConf = (preg_match('/191/i', $confDiy['body']))? 'header':'body';
}
} else if (isset($confDiy['realLayout'])) {
if(preg_match('/Ver[0-3]{1,2}/i', $confDiy['realLayout'])) {
$targetConf = 'navigator';
// case 2: check body is white use $colorConfigPath = SGL_WEB_ROOT/DiyTemplate/diyconfigcolor/$fileName
} elseif (preg_match('/Hor/i', $confDiy['realLayout'])) {
// case 3: check body <> white use $colorConfigPath = SGL_WEB_ROOT/DiyTemplate/diyconfigcolor/$fileName
//191 = color config white in body
$targetConf = (preg_match('/191/i', $confDiy['body']))? 'header':'body';
}
}
$fileName = RvsLibs_Template::replaceDIYConfigPath($confDiy, $aPatDIY, $targetConf);
$colorConfigPath = SGL_WEB_ROOT .'/DiyTemplate/diyconfigcolor/' . $fileName;
SGL::logMessage('ABC:' . $colorConfigPath, PEAR_LOG_DEBUG);
return $colorConfigPath;
}
//template
public static function loadStep()
{
$pathUrl = SGL_BASE_URL;
$step = '<table border="1" align="center" width="500">
<tr>
<td valign="top"><a tooltiptext="<div id="ToolTipTextWrap">Edit Site</div>" rel="addToolTip" onclick="opener.location=\''. $pathUrl . '/index.php/sitebuilder/createproject/\';" href="#" class="enable"><br>STEP1</a></td>
</tr>
<tr>
<td valign="top"><a tooltiptext="<div id="ToolTipTextWrap">Design</div>" rel="addToolTip" onclick="opener.location=\''. $pathUrl . '/index.php/sitebuilder/rvscategory/\';" href="#" class="enable"><br>STEP2</a></td>
</tr>
<tr>
<td valign="top"><a tooltiptext="<div id="ToolTipTextWrap">Style</div>" rel="addToolTip" onclick="opener.location=\''. $pathUrl . '/index.php/sitebuilder/selectstyles/\';" href="#" class="enable"><br>STEP3</a></td>
</tr>
<tr>
<td valign="top"><a tooltiptext="<div id="ToolTipTextWrap">Page Structure</div>" onclick="opener.location=\''. $pathUrl . '/index.php/sitebuilder/pagestructure/\';" href="#" rel="addToolTip" class="active"><br>STEP4</a></td>
</tr>
<tr>
<td valign="top"><a tooltiptext="<div id="ToolTipTextWrap">Site Content</div>" rel="addToolTip" onclick="opener.location=\''. $pathUrl . '/index.php/sitebuilder/listpagestructure/\';" href="#" class="enable"><br>STEP5</a></td>
</tr>
<tr>
<td valign="top"><a tooltiptext="<div id="ToolTipTextWrap">Extras</div>" rel="addToolTip" onclick="opener.location=\''. $pathUrl . '/index.php/sitebuilder/extras/\';" href="#" class="enable"><br>STEP6</a></td>
</tr>
<tr>
<td valign="top"><a tooltiptext="<div id="ToolTipTextWrap">Publish</div>" rel="addToolTip" onclick="opener.location=\''. $pathUrl . '/index.php/sitebuilder/publishsite/action/list/\';" href="#" class="enable"><br>STEP7</a></td>
</tr></table>';
return $step;
}
/** dumpFormTemplate()
* Dump Online Form Template to Online Form Table
*
*/
//template
public static function dumpFormTemplate($formTemplateId, $projectId, $projectPageId = null)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$rvsOnlineformId = RvsLibs_String::genUniqueId();
$aOnlineFormData = DaoFactory::OnlineForm()->findDumpFormTemplateByTemplateId($formTemplateId, 'getrow');
$aOnlineFormData = array_merge($aOnlineFormData,
array(
'projectPageId' => $projectPageId,
'rvsUsrId' => RvsLibs_User::getUserId(),
'rvsOnlineformId' => $rvsOnlineformId,
'projectId' => $projectId
)
);
//TODO chek res
///OPTIMIZE VARIABLE PASSING
//fixed PHPMD scan 07/07/2554
DaoFactory::OnlineForm()-> insertDumpFormTemplate($aOnlineFormData);
return $rvsOnlineformId;
}
/**
* insertLayoutTemplateIfEmpty
*
* If the data in PREVIEW or PUBLISH
* that will insert into {BODY} is empty, insert layout template instead leave it blank
*/
//template
public static function insertLayoutTemplateIfEmpty($aPageData,$layoutTemplateId, $templateItemFolder)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
foreach ($aPageData as $key=>$value) {
$layoutTemplateId = (isset($aPageData[$key]->project_page_id) && $aPageData[$key]->project_page_id)
? RvsLibs_Template::getNewLayoutTemplateId($aPageData[$key]->project_page_id, $layoutTemplateId)
: $layoutTemplateId;
// แก้ไขปัญหา อักขระ $ หายเวลาสร้างเว็บเพจจริง
$aPageData[$key]->page_data = RvsLibs_String::str_replace("\$", "\\\$", $aPageData[$key]->page_data);
// เพิ่ม page data default layout template กรณีที่เลือกให้แสดง และ user ยังไม่ได้สร้างข้อมูลใด ๆ
//fixed PHPMD scan 07/07/2554
//$rvNoLayout = RVS_USER_HOME . '/.rvsitebuilder/rvsNoLayout.txt';
if ($aPageData[$key]->page_data == '' ) {
// Component Page
if ($aPageData[$key]->rvs_component_id) {
$aComponentData = RvsLibs_Component::getComponentData($aPageData[$key]->rvs_component_id);
$aGetKey = array_keys($aComponentData);
$componentKey = $aGetKey[0];
$componentName = $aComponentData[$componentKey]->component_name;
$projectPageId = $aPageData[$key]->project_page_id;
// *** ONLINE FORM COMPONENT
if ($componentName == 'Online_Form' ) {
if ($aPageData[$key]->form_template_id == '' || $aPageData[$key]->form_template_id == 0) {
// Create Online Form Template
$defaultFormTemplateId = 1;
$onlineFormId = RvsLibs_Template::dumpFormTemplate($defaultFormTemplateId, $aPageData[0]->project_id, $projectPageId);
RvsLibs_Template::setFormTemplateId($onlineFormId, $projectPageId, $aPageData[$key]->project_id, $aPageData[$key]->rvs_usr_id);
} else {
$onlineFormId = $aPageData[$key]->form_template_id;
}
$aPageData[$key]->page_data = '<img width="234" height="60" border="1" alt="" id="onlineform_' . $onlineFormId . '" name="onlineform_' . $onlineFormId . '"';
$aPageData[$key]->page_data .= ' class="onlineForm" src="' . PUBLIC_IMG_URL . '/spacer.gif" /><br />';
$aPageData[$key]->page_data .= '<p> </p>'; /*/ END IF : Online Form Component // END IF : Component Page */
}
} else {
/*
if (!file_exists($rvNoLayout)) {
$aTemplateData = RvsLibs_Template::getTemplatesData($aPageData[0]->project_id);
$layoutTemplate = RvsLibs_Template::GetLayoutData($layoutTemplateId, $templateItemFolder,$aTemplateData->templatePath);
$layoutTemplate['body'] = RvsLibs_String::str_replace('src="' . PUBLIC_IMG_URL . "/" , 'src="images/', $layoutTemplate['body']);
// เราไม่ตั้งค่า $aPageData[$key]->head = $LayoutTemplate['head'] เนื่องจาก
// ต้องการให้ค่า $aPageData[$key]->page_data เหมือนกับ user submit เข้าไปใน
// WYSIWYG (wysiwyg ไม่สามารถแยกส่วน head กับ data ออกจากกันได้)
$aPageData[$key]->page_data = $layoutTemplate['head'] . $layoutTemplate['body'];
$aPageData[$key]->page_data .= '<p> </p>';
}*/
if (!RvsLibs_Config::isNoLayoutTemplste()) {
$aTemplateData = RvsLibs_Template::getTemplatesData($aPageData[0]->project_id, true);
$layoutTemplate = RvsLibs_Template::GetLayoutData($layoutTemplateId, $templateItemFolder,$aTemplateData->templatePath);
$layoutTemplate['body'] = RvsLibs_String::str_replace('src="' . PUBLIC_IMG_URL . "/" , 'src="images/', $layoutTemplate['body']);
// เราไม่ตั้งค่า $aPageData[$key]->head = $LayoutTemplate['head'] เนื่องจาก
// ต้องการให้ค่า $aPageData[$key]->page_data เหมือนกับ user submit เข้าไปใน
// WYSIWYG (wysiwyg ไม่สามารถแยกส่วน head กับ data ออกจากกันได้)
$aPageData[$key]->page_data = $layoutTemplate['head'] . $layoutTemplate['body'];
$aPageData[$key]->page_data .= '<p> </p>';
}
/* END ELSE : component page //END IF : page_data = '' */
}
}
} /* END FOR */
return $aPageData;
}
public static function replaceValues($aValues, $projectUrl=PROJECT_URL, $publishPath=TEMPLATE_PATH, $publishUrl=TEMPLATE_URL, $action=0)
{
SGL::logMessage('project_url=' . $projectUrl . ', publishPath=' . $publishPath . ', publishUrl=' . $publishUrl, PEAR_LOG_DEBUG);
$aData = array();
// START is navigator template specific fix navigator_name_id = 999
$oTempalteData = $aValues['aTemplateData'];
$isResponsive = RvsLibs_Template::isResponsiveTemplate($oTempalteData->templatePath . '/' . $oTempalteData->template_item_folder);
if ($aValues['aProjectInfoData']->navigator_name_id == 999) {
/*
fixed problem case url import template specific :: nipaporn
*/
if (is_object($oTempalteData) && isset($oTempalteData->templateUrl)) {
$publishUrl = $oTempalteData->templateUrl;
}
$url = ($action != 0) ? $publishUrl : $publishUrl . '/' . $aValues['aProjectInfoData']->template_item_folder;
$navigatorCssUrl = sprintf('%s/templatespecific.css?ABCSESS=%s', $url, md5(microtime()));
} else {
$navigatorCssUrl = RvsLibs_Navigator::getNavigatorUrl($aValues, $publishPath, $publishUrl, $action);
}
// END is navigator template specific fix navigator_name_id = 999
$urlProject = PROJECT_URL . '/' . $aValues['aProjectInfoData']->project_id;
$publishUrlCssUrl = ($action == 0) ? $urlProject . '/tmp/pathway.css' : $urlProject . '/pathway.css';
$aData['xml_lang'] = ' xml:lang="' . $aValues['aCharsetData']->xml_lang . '" lang="' . $aValues['aCharsetData']->xml_lang . '"';
$aData['HTMLDIR'] = $aData['xml_lang'];
/* ๏ฟฝ๏ฟฝ๏ฟฝ meta*/
$aData['charset'] = sprintf('<meta http-equiv="Content-Type" content="text/html; charset =%s" />', RvsLibs_Util::getCurrentCharset($aValues['aCharsetData']->charset_value));
$aData['metadata'] = "<!--METAKEYWORD-->\n<!--METADESCRIPTION-->\n<!--CUSTOMMETATAG-->\n";
$aData['file_css'] = "<!--FONTCSS-->\n<!--NAVIGATORCSS-->\n<!--PATHWAYCSS-->\n<!--CUSTOMPROJECTCSS-->\n";
// check show created by
if (isset($aValues['PoweredByData']) && count($aValues['PoweredByData']) > 0) {
$aData['powered'] = $aValues['PoweredByData'];
} else {
$aData['powered'] = "";
}
if (isset($aValues['aTemplateFooter']->powered_by)
&& $aValues['aTemplateFooter']->powered_by) {
$aData['hostlink'] = $aValues['aTemplateFooter']->powered_url;
$aData['hosttext'] = $aValues['aTemplateFooter']->powered_text;
} else {
$aData['hostlink'] = "#";
$aData['hosttext'] = "";
}
if (isset($aValues['CreateByData']) && $aValues['CreateByData'] === true) {
$aData['rvbanner'] = RvsLibs_Template::getCodeCreatedByData($action, $publishUrl, $isResponsive);
} else {
$aData['rvbanner'] = '';
}
$autoResizeLogo = '';
$logoFile = RvsLibs_File::buildPath(array(REAL_PROJECT_PATH, $aValues['aProjectInfoData']->project_id, $aValues['aProjectInfoData']->project_logo));
if (is_file($logoFile) == true) {
$aImg = RvsLibs_Image2::getImageSize($logoFile);
if (SGL::isError($aImg)) {
SGL_Error::pop();
} else {
if (isset($aImg[0]) && isset($aImg[1])) {
$autoResizeLogo = ' width="' . $aImg[0] . '" height="' . $aImg[1] . '" ';
}
}
}
if ($action && $action != 0) {
// Logo Link To Home Page
if ($aValues['aProjectInfoData']->project_logo && $aValues['aProjectInfoData']->project_logo != "NOPIC") {
$aData['project_logo'] = '<a href="' . $aValues['previewUrl'] . '/index.php" >';
$aData['project_logo'] .= '<img src="' . $aValues['aProjectInfoData']->project_logo . '?' . $aValues['sessionID'] . '" ' . $autoResizeLogo . 'border="0" alt="Logo" />';
$aData['project_logo'] .= '</a>';
} else {
$aData['project_logo'] = '';
}
$aData['font_css_url'] = $publishUrl;
$aData['publishUrl'] = $publishUrl;
$aData['publishPath'] = $publishPath;
$fontPath = $publishPath;
} else {
if ($aValues['aProjectInfoData']->project_logo && $aValues['aProjectInfoData']->project_logo != "NOPIC") {
$aData['project_logo'] = '<img src="' . $projectUrl . '/' . $aValues['aProjectInfoData']->project_id . '/' . $aValues['aProjectInfoData']->project_logo . '?' . $aValues['sessionID'] . '" ' . $autoResizeLogo . 'border="0" alt="Logo" />';
} else {
$aData['project_logo'] = '';
}
$aData['font_css_url'] = $publishUrl . "/font";
$aData['publishUrl'] = $aValues['aTemplateData']->templateUrl . "/" . $aValues['aProjectInfoData']->template_item_folder;
$aData['publishPath'] = $publishPath;
$fontPath = $publishPath . '/font';
}
$aData['wwwusersUrl'] = SGL_USERDATA_URL . '/' . RVS_USER_NAME . '/upload';
$aData['wwwusersPath'] = SGL_USERDATA_PATH . '/' . RVS_USER_NAME . '/upload';
$aGoogleFonts = RvsLibs_Util::getGoogleFonts();
if (isset($aGoogleFonts[$aValues['aProjectInfoData']->font_id])) {
$aFont = $aGoogleFonts[$aValues['aProjectInfoData']->font_id];
$fontName = RvsLibs_Util::getFontfile($aFont['name']);
$cssFile = $fontPath . '/' . $fontName;
RvsLibs_Util::compileGoogleFontCss($cssFile, $aFont);
} else {
$fontName = RvsLibs_Project::getFontData($aValues['aProjectInfoData']->font_id);
$fontName = RvsLibs_Util::getFontfile($fontName);
}
$aData['font_css'] = '<link rel="stylesheet" href="' . $aData['font_css_url'] . '/' . $fontName . '.css" type="text/css" />';
/* START add style magin customcss save มาจาก step2: nipaporn */
$customCssPath = RvsLibs_Project::validateCustomCssPath(
$aValues['aProjectInfoData']->project_id,
$aValues['aProjectInfoData']->template_item_folder
);
$fileDefaultCss = $isResponsive ? '' : 'style.css';
$fileCustomPath = RvsLibs_File::buildPath(array(
$customCssPath, $fileDefaultCss
));
$aData['publish'] = PROJECT_URL;
if (is_file($fileCustomPath) === true) {
$customCssUrl = str_replace(REAL_PROJECT_PATH, PROJECT_URL, $customCssPath);
$fileCustomPath = RvsLibs_File::buildPath(array(
$customCssUrl, $fileDefaultCss
));
$aData['customproject_css'] = '<link rel="stylesheet" href="' . $fileCustomPath . '" type="text/css" />';
} else {
$aData['customproject_css'] = '';
}
/*END add style magin customcss save มาจาก step2: nipaporn*/
$aData['navigator_css'] = '<link rel="stylesheet" href="' . $navigatorCssUrl . '" type="text/css" />';
$aData['pathway_css'] = '<link rel="stylesheet" href="' . $publishUrlCssUrl . '" type="text/css" />';
//เพราะว่าในฝั่ง phpsuexec ไม่มี template
/*$oMainComponent = MainComponent::singleton();
if (CPMODE == 'tryout' && $oMainComponent->detectPhpSuexec()) {
$aData['navigator_css'] = RvsLibs_String::preg_replace('/\/template\//','/phpsuexec/template/',$aData['navigator_css']);
}*/
$aData['action'] = $action;
$aData['template_path'] = $aValues['aTemplateData']->templatePath;
$aData['aValues'] = $aValues;
// TODO: remove this line after completed
/*if (!isset($aData['aValues']['rvs_owner_id'])) {
$aData['aValues']['rvs_owner_id'] = $aData['aValues']['aPageData'][0]->rvs_owner_id;
}*/
//START write project config CompoDB
$aVal = array();
$aVal['template']['xml_lang'] = $aValues['aCharsetData']->xml_lang;
$aVal['template']['charset_name'] = $aValues['aCharsetData']->charset_name;
$aVal['template']['charset'] = (RvsLibs_DB::isDatabaseUtf8() === true)
? 'utf-8'
: $aValues['aCharsetData']->charset_value;
$aVal['template']['project_logo'] = $aValues['aProjectInfoData']->project_logo;
$aVal['template']['font_css'] = $fontName . '.css';
$aVal['template']['navigator_css_url'] = $navigatorCssUrl;
RvsLibs_Project::makeProjectConfigFile($aValues['aProjectInfoData']->project_id, $aVal);
//END CompoDB
// optimize :nipaporn
return RvsLibs_Template::complierSource($aData);
}
/**
* return mix
* string: for complier WYSIWYG ($aData['action'] == 0)
* array: for complier page publish or preview ($aData['action'] != 0)
*/
//ไว้ก่อน
public static function complierSource($aData)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$oPublishReg = Publish_Registry::singleton();
$isUikit = $oPublishReg->get('isUikit');
//Start check template blank : by duangdao.k
$aCodePreview = array();
$projectId = $aData['aValues']['aProjectInfoData']->project_id;
$projectPageIdId = (isset($aData['aValues']['aPageData'][0]->project_page_id) && $aData['aValues']['aPageData'][0]->project_page_id)
? $aData['aValues']['aPageData'][0]->project_page_id : '';
$aProject = DaoFactory::ProjectPage()->findProjectPageDataByProjectPageId($projectPageIdId, 'getrow', $aResultFields=array('project_page_id', 'blank_page'));
if (isset($aProject['blank_page']) && $aProject['blank_page'] == '1') {
$aCodePreview = RvsLibs_File::file(RvsLibs_File::buildPath(array(SGL_MOD_DIR, 'sitebuilder', 'templates', 'rvs_template_blank.html')));
} else {
$aCodePreview = RvsLibs_File::file($aData['template_path'] . "/" . $aData['aValues']['aProjectInfoData']->template_item_folder . '/index.htm');
}
//End check template blank : by duangdao.k
if (!$aCodePreview) {
////////// siwakorn directadmin /////////
SGL_HTTP::redirect(INDEX_PHPSU . "/sitebuilder");
}
//New Object Class
if (class_exists('IconPathway') === false) {
require_once SGL_MOD_DIR . '/sitebuilder/classes/IconPathway.php';
}
$oIconPathway = new IconPathway();
//validate noCompanyName , noSlogan
$companyName = RvsLibs_Project::noCompanyName($aData['aValues']['aProjectInfoData']->no_company_name,$aData['aValues']['aProjectInfoData']->project_company);
$slogan = RvsLibs_Project::noSlogan($aData['aValues']['aProjectInfoData']->no_slogan, $aData['aValues']['aProjectInfoData']->project_slogan);
//get code
$codeOpenCustomSize = RvsLibs_Scripts::appendCodeOpenCustomSize();
//include file js custom open window
$includeFilePath = ($aData['action'] != 0) ? $aData['publishPath'] : $aData['wwwusersPath'];
$includeFileUrl = ($aData['action'] != 0) ? $aData['publishUrl'] : $aData['wwwusersUrl'];
$codeOpenCustomSize = RvsLibs_Project::projectIncludeFile($aData['action'], $codeOpenCustomSize, $includeFilePath, $includeFileUrl, 'rvscustomopenwindow', 'js');
//$projectCodeComment = $this->getProjectCodeComment($aData['action'], $aData['aValues']['aProjectInfoData']->project_name, $aData['aValues']['aProjectInfoData']->template_item_folder, $aData['aValues']['aProjectInfoData']->project_id);
if (class_exists('PreviewMgr') === false) {
require_once SGL_MOD_DIR . '/sitebuilder/classes/PreviewMgr.php';
}
if ($aData['action'] == 0) {
$step = 'wysi';
} else {
$step = 'step3';
}
SGL::logMessage('Witoon check step===>' . $step . ' === action ===>' . $aData['action'], PEAR_LOG_DEBUG);
$topDataBlog = PreviewMgr::getSideDataBlog("TOP", $projectId,false,$step);
$bottomDataBlog = PreviewMgr::getSideDataBlog("BOTTOM", $projectId,false,$step);
$side1DataBlog = PreviewMgr::getSideDataBlog("SIDE1", $projectId,false,$step);
$side2DataBlog = PreviewMgr::getSideDataBlog("SIDE2", $projectId,false,$step);
//Publish/Preview Display Ads News TOP, SIDE1, SIDE2, BUTTOM
if ($aData['action'] != 0) {
$aExtra = RvsLibs_Template::cleanCodeSide($projectId, $aExtra, $aData['publishPath'], $aData['aValues']['aProjectInfoData']->layout_template_id, $aData['aValues']['aPageData']);
}
if (class_exists('GeneralAPI') === false) {
include_once SGL_MOD_DIR . '/sitebuilder/classes/GeneralAPI.php';
}
$oAPI = new GeneralAPI();
$oAPI->publishPath = $aData['publishPath'];
$oAPI->publishUrl = $aData['publishUrl'];
//START LOOP replace valiable
foreach ($aData['aValues']['aPageData'] as $k=>$v) {
$oAPI->isCompoDB = (isset($aData['aValues']['aPageData'][$k]->use_db)) ? $aData['aValues']['aPageData'][$k]->use_db : false;
$componentName = (isset($aData['aValues']['aPageData'][$k]->component_name)) ? $aData['aValues']['aPageData'][$k]->component_name : '';
//fixed PHPMD scan 07/07/2554
//$aCodeData = "";
$oAPI->getSourceMode = $aData['action'];
$xmlCharSet = RvsLibs_Template::getXMLTagReplace($aData['action'], $aData['aValues']['aCharsetData']->charset_value, $aData['aValues']['aPageData'][$k]->rvs_component_id, $aData['aValues']['aPageData'][$k]->page_data);
$oAPI->register('<\?xml version="1.0" encoding="{XMLCHARSET}"\?>', $xmlCharSet);
$oAPI->register('{HTMLDIR}' , $aData['HTMLDIR']);
$oAPI->register('href="style.css"', 'href="' . $oAPI->publishUrl . '/style.css"');
$oAPI->register('<script src="AC_RunActiveContent.js"', '<script src="' . $oAPI->publishUrl . '/AC_RunActiveContent.js"');
$oAPI->register('<script src="Scripts/AC_RunActiveContent.js"', '<script src="' . $oAPI->publishUrl . '/Scripts/AC_RunActiveContent.js"');
$oAPI->register('<link\s*rel="stylesheet"\s*href="templatespecific.css"\s*type="text/css"\s*/>', '');
if ($aData['aValues']['aPageData'][$k]->page_title) {
$oAPI->register("{TITLE}", $aData['aValues']['aPageData'][$k]->page_title);
} elseif ($aData['aValues']['aProjectInfoData']->project_title) {
$oAPI->register("{TITLE}", $aData['aValues']['aProjectInfoData']->project_title);
} else {
$oAPI->register("{TITLE}", $aData['aValues']['aProjectInfoData']->project_name);
}
$oAPI->register("<!--\W{0,}CHARSET\W{0,}-->", $aData['aValues']['aPageData'][$k]->meta_page_effect . "\n" . $aData['charset'] . "\n" . $aData['metadata']);
if ($aData['aValues']['aPageData'][$k]->meta_keyword == '') {
$oAPI->register("<!--METAKEYWORD-->", '<meta name="keywords" content="' . $aData['aValues']['aProjectInfoData']->project_keyword . '" />');
} else {
$oAPI->register("<!--METAKEYWORD-->", '<meta name="keywords" content="' . $aData['aValues']['aPageData'][$k]->meta_keyword . '" />');
}
if ($aData['aValues']['aPageData'][$k]->meta_description == '') {
$oAPI->register("<!--METADESCRIPTION-->", '<meta name="description" content="' . $aData['aValues']['aProjectInfoData']->project_description . '" />');
} else {
$oAPI->register("<!--METADESCRIPTION-->", '<meta name="description" content="' . $aData['aValues']['aPageData'][$k]->meta_description . '" />');
}
///Start replace custom matatag :: Witoon
if (isset($aData['aValues']['aCustomMetatag']) && count($aData['aValues']['aCustomMetatag']) > 0) {
$aCustomPageMetatag = RvsLibs_Project::getCustomMetatagByProjectPage(
$aData['aValues']['aPageData'][$k]->project_real_page_id
, $aData['aValues']['aPageData'][$k]->rvs_usr_id
);
$aCustomPageMetatag = array_merge($aData['aValues']['aCustomMetatag'], $aCustomPageMetatag);
$metatag = '';
foreach ($aCustomPageMetatag as $ketMeta => $valMeta) {
$metatag .= '<meta ' . $valMeta->metatag_type . '="' . $valMeta->metatag_name . '" content="' . $valMeta->metatag_content . '" />' . "\n";
}
$oAPI->register("<!--CUSTOMMETATAG-->", $metatag);
}
///End replace custom matatag
$oAPI->register("<!--\W{0,}CSS\W{0,}-->", $aData['file_css']);
$oAPI->register("<!--FONTCSS-->", $aData['font_css']);
$oAPI->register("<!--NAVIGATORCSS-->", $aData['navigator_css']);
$oAPI->register("<!--PATHWAYCSS-->", $aData['pathway_css']);
$oAPI->register("<!--CUSTOMPROJECTCSS-->", $aData['customproject_css']);
//START replace margin
$topMargin = <<<EOF
<tr><td align="center" class="content_margin_top"></td></tr>
<!-- Begin TOP -->
EOF;
$oAPI->register("<!-- Begin TOP -->", $topMargin);
$bottonMargin = <<<EOF
<!-- End BOTTOM -->
<tr><td align="center" class="content_margin_bottom"></td></tr>
EOF;
$oAPI->register("<!-- End BOTTOM -->", $bottonMargin);
if ($isUikit == false) {
$bodymargin = '<div class="content_margin_left_right">{BODY}</div>';
$oAPI->register("{BODY}", $bodymargin);
}
//END replace margin
$oAPI->register("{LOGO}", $aData['project_logo']);
$oAPI->register("{COMPANY_NAME}", $companyName);
$oAPI->register("{SLOGAN}", $slogan);
// Rewrite Navigator code to show the active page status for the navigator link
if ($aData['action'] && ($aData['action'] == 1 || $aData['action'] == 2)) {
// $nav_action =0 ๏ฟฝ๏ฟฝ๏ฟฝยถึง generateNavigator ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝับหน๏ฟฝ๏ฟฝ WYSIWYG
// $nav_action =1 ๏ฟฝ๏ฟฝ๏ฟฝยถึง generateNavigator ๏ฟฝรณีก๏ฟฝ SitePreview ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ Publish
$navAction = 1;
$currentPageId = (isset($aData['aValues']['aPageData'][$k]->parent_project_page_id)) ? $aData['aValues']['aPageData'][$k]->parent_project_page_id : $aData['aValues']['aPageData'][$k]->project_page_id;
$aDataNavigatorData = RvsLibs_Navigator::generateNavigator(null, $aData['aValues']['rvs_owner_id'], $aData['aValues']['aPageStructure'] , $currentPageId, $navAction, $aData['aValues']['aProjectInfoData']->menustyle_id, $aData['aValues']['aPageData'][$k]->project_real_page_id, $aData['aValues']['previewUrl']);
$aData['aValues']['navigatorData'] = $aDataNavigatorData[1] . "\n" . $aDataNavigatorData[2];
$aData['aValues']['aPageData'][$k]->head = $aData['aValues']['aPageData'][$k]->head . "\n\n" . $aDataNavigatorData[0];
}
// is navigator hide reset {NAVIGATOR} empty
if (RvsLibs_Navigator::isNavigatorHide($projectId)) {
$aData['aValues']['navigatorData'] = '';
}
// generate ComponentInsideHead Code on Preview and Publish
$codeComponentInsideHead = '';
if ($aData['action'] && ($aData['action'] == 1 || $aData['action'] == 2) && $aData['aValues']['aPageData'][$k]->rvs_component_id) {
$codeComponentInsideHead = RvsLibs_Component::publishHtmlInsideHead($aData['aValues']['aPageData'][$k]->rvs_component_id, $aData['aValues']['aPageData'][$k]->project_real_page_id);
}
$includeFilePath = ($aData['action'] != 0) ? $aData['publishPath'] : $aData['wwwusersPath'];
$includeFileUrl = ($aData['action'] != 0) ? $aData['publishUrl'] : $aData['wwwusersUrl'];
$scriptHeadInclude = RvsLibs_Project::projectIncludeFile($aData['action'], $aData['aValues']['aPageData'][$k]->head . "\n", $includeFilePath, $includeFileUrl, 'rvsnavigator', 'js');
$oAPI->register("<!--\W{0,}HEAD\W{0,}-->", $scriptHeadInclude . "\n" . $codeComponentInsideHead . "\n" . $codeOpenCustomSize . "\n");
$oAPI->register("{NAVIGATOR}", $aData['aValues']['navigatorData']);
$oAPI->register("{POWERED}", $aData['powered']);
$oAPI->register("{HOSTLINK}", $aData['hostlink']);
$oAPI->register("{HOSTTEXT}", $aData['hosttext']);
$oAPI->register('background="', 'background="' . $oAPI->publishUrl . '/');
if (is_array($aCodePreview)) {
$aCodePreview = implode('',$aCodePreview);
$aCodePreview = RvsLibs_Template::replaceHeaderBanner($aCodePreview, $oAPI->publishUrl);
}
if (!$aData['action'] || $aData['action'] == 0) {
$oAPI->register('<param name="movie" value="', '<param name="movie" value="' . $oAPI->publishUrl . '/');
///จะมีปัญหากับ images ที่ ใส่ full url(http:// หรือ https://)
//$oAPI->register('src="', 'src="' . $oAPI->publishUrl . '/');
$oAPI->register('src="/', 'src="' . $oAPI->publishUrl . '/');
$oAPI->register('src="images/', 'src="' . $oAPI->publishUrl . '/images/');
$oAPI->register('src="' . $oAPI->publishUrl . '/' . WEB_THEME_URL, 'src="' . WEB_THEME_URL);
$oAPI->register('src="' . $oAPI->publishUrl . '/images/down-arrow.gif', 'src="' . WEB_THEME_URL . '/themes/default/sitebuilder/images/down-arrow.gif');
$oAPI->register('src="' . $oAPI->publishUrl . '/images/forward-arrow.gif', 'src="' . WEB_THEME_URL . '/themes/default/sitebuilder/images/forward-arrow.gif');
$oAPI->register('src="' . $oAPI->publishUrl . '/images/close.jpg', 'src="' . TEMPLATE_URL . '/font/images/close.jpg');
$oAPI->register('src="' . $oAPI->publishUrl . '/images/headerbanner', 'src="' . PROJECT_URL . '/' . $projectId . '/images/headerbanner');
//Preview flash AC_FL_RunContent()
$oAPI->register('<script src="' . $oAPI->publishUrl . '/' . $oAPI->publishUrl . '/AC_RunActiveContent.js', '<script src="' . $oAPI->publishUrl . '/AC_RunActiveContent.js');
$oAPI->register('<script src="' . $oAPI->publishUrl . '/' . $oAPI->publishUrl . '/Scripts/AC_RunActiveContent.js', '<script src="' . $oAPI->publishUrl . '/Scripts/AC_RunActiveContent.js');
$oAPI->register("'src','images/", "'src','" . $oAPI->publishUrl . "/images/");
$oAPI->register("'movie','images/", "'movie','" . $oAPI->publishUrl . "/images/");
$oAPI->register('src="' . $oAPI->publishUrl . '/' . PROJECT_URL, 'src="' . PROJECT_URL);
///for responsive web
$template_item_path = $aData['template_path'] . '/' . end(explode('/', $aData['publishUrl']));
if (is_file($template_item_path . '/base.css')) {
$oAPI->register('href="base.css"', 'href="' . $aData['publishUrl'] . '/base.css"');
}
if (is_file($template_item_path . '/skeleton.css')) {
$oAPI->register('href="skeleton.css"', 'href="' . WEB_THEME_URL . '/responsiveTemplates/stylesheets/wys_skeleton.css"');
}
if (is_file($template_item_path . '/layout.css')) {
if ($aData['action'] == 0) {
$layoutCss = RvsLibs_Template::getLayoutCss();
$oAPI->register('href="layout.css"', 'href="' . $layoutCss['scriptUrl'] . '"');
} else {
$oAPI->register('href="layout.css"', 'href="' . $aData['publishUrl'] . '/layout.css"');
}
}
/*
if (is_file($template_item_path . '/rvsb_common.css')) {
$oAPI->register('href="rvsb_common.css"', 'href="' . $aData['publishUrl'] . '/rvsb_common.css"');
}
*/
}
$oAPI->register("{RVBANNER}", $aData['rvbanner']);
$includeFilePath = ($aData['action'] != 0) ? $aData['publishPath'] : $aData['wwwusersPath'];
$includeFileUrl = ($aData['action'] != 0) ? $aData['publishUrl'] : $aData['wwwusersUrl'];
$iconPathwayCode = $oIconPathway->generateIconPathway($aData['aValues']['aProjectInfoData'], $aData['aValues']['aPageData'][$k], $includeFilePath, $includeFileUrl ,$aData['action']);
$aExtra['footer'] = '';
// path way config adjustMgr By project v.5 11/11/2011
$styleDisplay = ($aData['aValues']['aProjectInfoData']->i_pathway == '1') ? 'style="display:block;"' : 'style="display:none;"';
$pathwayHTML = '<span id="zone_pathway" '.$styleDisplay.'>'.$iconPathwayCode['pathway'].'</span>';
$oAPI->register("{PATHWAY}", $pathwayHTML);
$oAPI->register("{ICON}", '<input type="button" class="btnpathway" value="' . RvsLibs_String::translate('Breadcrumb Navigation') . '" name="bu_pathway" onclick="jQuery.sitebuilder.sitebuilder.openDialogShowHidePathway();">');
//$oAPI->register("{ICON}", $iconPathwayCode['icon']);
$oAPI->register("{FOOTER}", $aExtra['footer']);
//tet modify side width
$oAPI->register('<td width="160" align="center" valign="top" class="magin"', '<td align="left" valign="top" class="magin"');
$oAPI->register('<td width="160" valign="top" align="center" class="magin"', '<td align="left" valign="top" class="magin"');
if ($aData['action'] != 0) {
$oAPI->register("{TOP}", $aExtra['top']);
$oAPI->register("{BOTTOM}", $aExtra['bottom']);
//RVS CompoDB don't replace side value
if (!$oAPI->isCompoDB) {
//for guestbook only cannot add side from framework pear die:apiruk
$side1 = ($componentName != 'GuestBook') ? $aExtra['side1'] : $aExtra['nonframework_side1'];
$side2 = ($componentName != 'GuestBook') ? $aExtra['side2'] : $aExtra['nonframework_side2'];
$oAPI->register("{SIDE1}", $side1);
$oAPI->register("{SIDE2}", $side2);
}
//RVS CompoDB
} else {
$oAPI->register("{TOP}", $topDataBlog);
$oAPI->register("{BOTTOM}", $bottomDataBlog);
$oAPI->register("{SIDE1}", $side1DataBlog);
$oAPI->register("{SIDE2}", $side2DataBlog);
}
//set MasterPage for Online_form
$oAPI->setMasterPage($aCodePreview);
if ($aData['action'] && $aData['action'] != 0) {
// copy images from rvs_library to project/$projectId/rvs_library
// $this->copyRvsLibraryImages($aData['aValues']['aPageData'][$k]->project_id , $aData['aValues']['aPageData'][$k]->page_data, $oAPI->publishPath);
// ===== START GEN wysi Zone add by darawan 19/01/2553 ======
$bodyPageZoneData = RvsLibs_Project::bodyPageDataZone($aData['aValues']['aPageData'][$k]);
// ===== END GEN wysi Zone add by darawan 19/01/2553 =====
// replace path ๏ฟฝอก๏ฟฝ๏ฟฝอน๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝแทนลง๏ฟฝ๏ฟฝ๏ฟฝวน๏ฟฝอง {BODY}
//fixed PHPMD scan 07/07/2554
$codeBody = RvsLibs_Template::cleanCodeBody($bodyPageZoneData, $oAPI->publishPath, $aData['aValues']['aProjectInfoData']->layout_template_id);
//***************************************************************************
if (isset($aData['aValues']['createauto']) && $aData['aValues']['createauto']) {
$codeBody = RvsLibs_Template::loadStep();
}
//***************************************************************************
//RVS CompoDB
if (isset($aData['aValues']['aPageData'][$k]->use_db) && $aData['aValues']['aPageData'][$k]->use_db) {
if ($aData['action'] == 1) {
$oAPI->register("{BODY}", "<div align=center><font color=red>Sorry, This component cannot display on preview website.</font></div>");
}
} else {
$oAPI->register("{BODY}", $codeBody);
}
//RVS CompoDB
}
$oAPI->register_template($aCodePreview);
$oAPI->unregister();
$pageCodeData = $oAPI->fetch();
$oAPI->unregister_all();
if ($aData['action'] && $aData['action'] != 0) {
$aData1[$aData['aValues']['aPageData'][$k]->project_page_id]['PageId'] = $aData['aValues']['aPageData'][$k]->project_page_id;
$aData1[$aData['aValues']['aPageData'][$k]->project_page_id]['RealPageId'] = $aData['aValues']['aPageData'][$k]->project_real_page_id;
$aData1[$aData['aValues']['aPageData'][$k]->project_page_id]['ComponentId'] = $aData['aValues']['aPageData'][$k]->rvs_component_id;
$aData1[$aData['aValues']['aPageData'][$k]->project_page_id]['CodeHtml'] = $pageCodeData . $projectCodeComment;
}
}
//END LOOP replace valiable
if ($aData['action'] && $aData['action'] != 0) {
ksort($aData1);
/// return array
return $aData1;
} else {
/// return string code HTML
$pageCodeData = RvsLibs_Template::replaceCodeBaseSSLMODE($pageCodeData);
return $pageCodeData;
}
}
/**
* validate get <?xml code for html or php extension
*
* @param string $action
* @param string $charset
* @param string $pageData
* @return string $xmlData
*/
///ไว้ก่อน
public static function getXMLTagReplace($action, $projectCharset, $rvsComponentId, $pageData)
{
$oMgr = new SGL_Manager();
if ($rvsComponentId) {
// Component Page
if ($action == 0) {
$xmlData = '<?xml version="1.0" encoding="' . $projectCharset . '" ?>' . "\r\n";
} else {
$xmlData = '<?php echo ' . "'" . '<?xml version="1.0" encoding="' . $projectCharset . '" ?>' . "'" . '; ?>' . "\r\n";
}
} else {
// Normal Page $action = 0 (WYSIWYG)
if ($action == 0) {
$xmlData = '<?xml version="1.0" encoding="' . $projectCharset . '" ?>' . "\r\n";
} else {
// PREVIEW & PUBLISH
if ($oMgr->conf['wysiwyg']['allowPhp'] == 1 || RvsLibs_Project::isPublishCompoDB() || preg_match_all("/id\s*=\s*\"onlineform_/", $pageData)) {
$xmlData = '<?php echo ' . "'" . '<?xml version="1.0" encoding="' . $projectCharset . '" ?>' . "'" . '; ?>' . "\r\n";
} else {
$xmlData = '<?xml version="1.0" encoding="' . $projectCharset . '" ?>' . "\r\n";
}
}
}
return $xmlData;
}
public static function _getOldWidth($projectId)
{
$oldWidth = '100%';
$fileOptionTable = RvsLibs_File::buildPath(array(REAL_PROJECT_PATH, $projectId, 'setOptionTableTop.ini'));
if (file_exists($fileOptionTable)) {
$aOptionTable = RvsLibs_Config::parse_ini_file($fileOptionTable, true);
$oldWidth = (isset($aOptionTable['resolution']['width']) && $aOptionTable['resolution']['width'])? $aOptionTable['resolution']['width'] : '100%';
}
return $oldWidth;
}
public static function getTemplateWidth($projectId, $oldWidth = null, $templateItemId = null)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
//case preview /publish
$oPublishReg = Publish_Registry::singleton();
$templateFolder1= $oPublishReg->get('templateItemData','template_item_folder', $projectId);
$templatePath1= $oPublishReg->get('templatePath');
// echo $oldWidth;
$oldWidth = (is_null($oldWidth) === false) ? $oldWidth : RvsLibs_Template::_getOldWidth($projectId);
//case STEP 3
$aDefTemplateData = RvsLibs_Template::getTemplatesData($projectId, true);
if(empty($aDefTemplateData)) {
$aDefTemplateData = new stdClass();
}
// echo "path-->" . $templatePath . '--folder--->' . $templateFolder;exit;
$aDefTemplateData->templatePath = (isset($aDefTemplateData->templatePath))? $aDefTemplateData->templatePath : null;
$aDefTemplateData->template_item_folder = (isset($aDefTemplateData->template_item_folder))? $aDefTemplateData->template_item_folder : null;
$templatePath1 = (isset($templatePath) && $templatePath)? $templatePath : $aDefTemplateData->templatePath;
$templateFolder1 = (isset($templateFolder) && $templateFolder)? $templateFolder : $aDefTemplateData->template_item_folder;
//case STEP 2
//case คลิก preview ครั้งแรก ไม่มี $templatePath, $templateFolder ที่ set ไว้ หาค่า ใหม่
if (is_null($templateItemId) === false) {
// echo "111";
$aTemplateItem = DaoFactory::Template()->findTemplateItemAndTemplateByTemplateItemId($templateItemId, 'getrowobj');
$aTemplateItem->template_item_folder = (isset($aTemplateItem->template_item_folder) && $aTemplateItem->template_item_folder)
? $aTemplateItem->template_item_folder
: null;
$aPath = RvsLibs_Template::getTemplatePathUrl(null, $aTemplateItem->template_item_folder, 'view');
$aPath['path'] = (isset($aPath['path']) && $aPath['path'])? $aPath['path'] : null;
$templatePath = (isset($templatePath) && $templatePath)? $templatePath : $aPath['path'];
$templateFolder = (isset($templateFolder) && $templateFolder)? $templateFolder : $aTemplateItem->template_item_folder;
} elseif ($templateFolder1 && $templatePath1) {
$templatePath = $templatePath1;
$templateFolder = $templateFolder1;
} else {
$templatePath = $aDefTemplateData->templatePath;
$templateFolder = $aDefTemplateData->template_item_folder;
}
$pathStyleConfig = RvsLibs_File::buildPath(array($templatePath, $templateFolder, 'styleconfig.ini.php'));
$aStyleConfig = (is_file($pathStyleConfig)) ? RvsLibs_Config::parse_ini_file($pathStyleConfig , true) : false;
$aWidth = (isset($aStyleConfig['config']['width']))
? RvsLibs_String::dbeExplode('x',RvsLibs_String::strtolower($aStyleConfig['config']['width']))
: false;
$width = (isset($aWidth[0])) ? $aWidth[0] : false;
if ($width != false && $oldWidth != $width) {
return $width;
}
return $oldWidth;
}
public static function getBlockCode($sideConfig, $sideValue, $thisStep, $width=0)
{
$bgBlogColor = ($sideValue) ? '#f3e5a8' : '#CCCCCC';
switch (RvsLibs_String::strtolower($sideConfig)) {
case 'side1' :
case 'side2' :
$width = '160px';
if ($sideValue != '') {
$classPreviewNormal = 'EditPreviewCurrent';
$classPreviewHover = 'EditSideHover';
} else {
$classPreviewNormal = 'EditSideNormal';
$classPreviewHover = 'EditSideHover';
}
$sideConfigTran = RvsLibs_String::translate($sideConfig);
$side = RvsLibs_String::translate('EMBED CODE section', 'vprintf', array('sectionname' => $sideConfigTran));
break;
case 'top' :
case 'bottom' :
$width = '94%';
// top , footer
if ($sideValue != '') {
$classPreviewNormal = 'EditPreviewCurrent';
$classPreviewHover = 'EditSideHover';
} else {
$classPreviewNormal = 'EditSideNormal';
$classPreviewHover = 'EditSideHover';
}
$sideConfigTran = RvsLibs_String::translate($sideConfig);
$side = RvsLibs_String::translate('EMBED CODE section', 'vprintf', array('sectionname' => $sideConfigTran));
break;
case 'left' :
case 'right' :
default:
if ($sideValue != '') {
$classPreviewNormal = 'EditPreviewCurrent';
$classPreviewHover = 'EditSideHover';
} else {
$classPreviewNormal = 'EditSideNormal';
$classPreviewHover = 'EditSideHover';
}
$side = $sideValue;
break;
}
#step3,wysi,previewdiy
if ($thisStep == 'step3') {
$sideUrl = SGL_BASE_URL . '/' . INDEX_PHPSU . '/sitebuilder/side/side_config/' . $sideConfig;
$side1Code = '<div class="' . $classPreviewNormal . ' " id="side_' . RvsLibs_String::strtolower($sideConfig) .'" idside="side_' . RvsLibs_String::strtolower($sideConfig) .'" url='. $sideUrl.'
onmouseover="edfaultBorderIf(this.id,\'' . $classPreviewHover . '\');parent.jQuery.sitebuilder.editside.SwitchClassOver(parent.jQuery(this));"
onmouseout="edfaultBorderIf(this.id,\'' . $classPreviewNormal . '\');parent.jQuery.sitebuilder.editside.SwitchClassOut(parent.jQuery(this));"
style="width:' . $width . ';cursor:pointer;" onclick="parent.jQuery.sitebuilder.editside.OpenSide(parent.jQuery(this));">
' . $side . '
<div align="right">' . RvsLibs_String::translate('Edit') . '</div>
</div>';
} elseif ($thisStep == 'wysi') {
if ($sideValue != '') {
$side1Code = '<div class="' . $classPreviewNormal . '" id="side_' . RvsLibs_String::strtolower($sideConfig) . '" style="width:' . $width . ';">' . $side . '</div>';
} else {
$side1Code ='';
}
} else {
$side1Code = '<link href="' . SGL_BASE_URL . '/themes/default/sitebuilder/css/style.php" rel="stylesheet" type="text/css">';
$side1Code .= '<div class="' . $classPreviewNormal . '" id="side_' . RvsLibs_String::strtolower($sideConfig) . '" style="width:' . $width . ';">' . $side . '</div>';
}
return $side1Code; //EMBED CODE TOP Section edit
}
/**
* Type = Trydemoonline คือ page Try Demo Online action = user/login/action/list
* Type = Templates คือ page Template Category action = tryout/RvsCategory
* Type = PDF Catalog คือ page Template Download PDF action = tryout/Pdfcatalog
*
* @param unknown_type $url
* @param unknown_type $type
* @return Returns
*/
public static function gettryoutPageDataCode($type)
{
$gotoAction = "";
switch ($type) {
case 'Trydemoonline':
$gotoAction = 'user/login/action/list/setCurrent/1';
break;
case 'Templates':
$gotoAction = 'tryout/rvscategory/select_category_id/1/templatestyle/0/picture_style/0/getNumPage/12/';
break;
case 'PDF Catalog':
$gotoAction = 'tryout/Pdfcatalog/setCurrent/1';
break;
}
$index = '" . RVSGLWrapper::getFrontscriptname(0) . "';
$code = RvsLibs_String::sprintf('
<?php
$_SESSION["urlRefer"] = (($_SERVER["HTTPS"]) ? "htts://" : "http://") . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
header( "HTTP/1.1 301 Moved Permanently" );
header("Location: %s/%s");
?>', $index, $gotoAction);
return $code;
}
/***********************************
* @param string $pageData
* return sting
*
* example : result match
* $aDialog[1][0]='url'
* $aDialog[2][0] = script:openDialogOption({'autoOpen':true,'width': 400'});
***********************************/
public static function checkAndGenScriptAutoDialog($pageData)
{
if (preg_match_all("/<a\s*href\s*=\s*\"(.*?)\".*?onclick\s*=\s*\"(openDialogOption.*?[\'\"]autoOpen[\'\"]\:true.*)\".*?>/i", $pageData, $aDialog))
{
$scriptAutoopen = '';
if (isset($aDialog[0])) {
foreach ($aDialog[0] as $k => $v){
$scriptAutoopen .= RvsLibs_String::preg_replace("/this/i", '\'' . $aDialog[1][$k] . '\'', $aDialog[2][$k]) . "\n";
}
return <<<EOF
<script>
//<![CDATA[
{$scriptAutoopen}
</script>
//]]>
EOF;
}
}
return '';
}
/*update template specific by:Witoon*/
protected static function _updateClassCssToSupMenu2Level($css)
{
$aPattern = array(
'/#navigator/im',
'/#current/im'
);
$aReplace = array(
'ul.rvnavigator',
'.current'
);
$css = preg_replace($aPattern, $aReplace, $css);
return $css;
}
public static function updateTemplateSpecificCssToLastest($templateSpecificCss)
{
if (empty($templateSpecificCss)) {
return '';
}
$newSpecificCss = '';
$navType = self::_getOldImportTemplateNavType($templateSpecificCss);
$oldNavCss = self::_getOldClassNavigator($templateSpecificCss);
$oldNavLiCss = self::_getOldClassNavigatorLi($templateSpecificCss);
$newLinkNav = self::_updateClassCssToSupMenu2Level(self::_CopyOldCss($templateSpecificCss));
$newSpecificCss .= self::_getOldBgNavDIY($templateSpecificCss);
if (!empty($newSpecificCss)) {
$newSpecificCss .= "\n";
}
$newSpecificCss .= self::_getOldBgNavImgDIY($templateSpecificCss);
if (!empty($newSpecificCss)) {
$newSpecificCss .= "\n";
}
$newSpecificCss .= "ul.rvnavigator {{$oldNavCss}position: relative;\n}\n";
$newSpecificCss .= "ul.rvnavigator li {{$oldNavLiCss}text-align: left;\nposition: relative;\n}\n";
$newSpecificCss .= "{$newLinkNav}\n";
$pattern = array('/**TOP**/', '/**LEFT**/', '/**BORDER**/', '/**BACKGROUND_COLOR**/',
'/**BORDER_BOTTOM**/', '/**LINK_COLOR**/', '/**HOVER_COLOR**/', '/**HOVER_BG_COLOR**/'
);
$cssTop = ($navType == 2) ? 'top: 100%;' : 'top: 0px;';
$cssLeft = ($navType == 2) ? 'left: 0px;' : 'left: 100%;';
$border = self::_getOldNavBorder($templateSpecificCss);
$background = self::_getOldNavBackground($templateSpecificCss);
$borderBottom = self::_getOldNavBorderBottom($templateSpecificCss);
$linkColor = self::_getOldLinkColor($templateSpecificCss);
$hoverColor = self::_getOldHoverColor($templateSpecificCss);
$hoverBackground = self::_getOldHoverBackgroundColor($templateSpecificCss);
$replace = array($cssTop, $cssLeft, $border, $background, $borderBottom, $linkColor,
$hoverColor, $hoverBackground
);
$baseCode = self::getBaseCss2Level();
$newSpecificCss .= str_replace($pattern, $replace, $baseCode);
return $newSpecificCss;
}
/*update template specific by:Witoon*/
/**
* Insert layout template user
* Enter description here ...
* @param $projectId
* @param $projectPageId
* @param $layoutTemplateUserId
* @param $layoutTemplateUserName
* @param $layoutName
*/
public static function insertLayoutTemplateUser($projectId, $projectPageId, $layoutTemplateUserId, $layoutTemplateUserName, $layoutName)
{
$res = DaoFactory::ProjectLayoutPage()->insertLayoutTemplateUser(
$layoutTemplateUserId,
$layoutTemplateUserName,
$layoutName
);
if (SGL::isError($res)) {
SGL_Error::pop();
return false;
} else {
$res = DaoFactory::ProjectLayoutPage()->insertProjectPageToLayout(
$projectPageId,
$projectId,
$layoutTemplateUserId
);
if (SGL::isError($res)) {
///delete LayoutTemplateUser if insert not complete
DaoFactory::ProjectLayoutPage()->deleteLayoutTemplateUser($layoutTemplateUserId);
SGL_Error::pop();
return false;
}
}
return true;
}
public static function selectLayoutTemplateAuto($projectId, &$aPageData, $aSideConfig, $updatePageData=false)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
//Only the first time, backup old page rvsPageData.sql.
$backUpFile = PROJECT_PATH . '/' . $projectId . '/rvsPageData.sql';
if (!is_file($backUpFile)) {
$usrId = RvsLibs_User::getUserId();
$aSql = DaoFactory::ProjectPage()->backupsql($projectId, $usrId);
//file_put_contents($backUpFile, $aSql);
$handle = RvsLibs_File::fopen($backUpFile,'w+');
if (SGL::isError($handle) === true) {
return $handle;
}
RvsLibs_File::fwrite($handle, $aSql);
RvsLibs_File::fclose($handle);
}
$pageLayoutTemplateUser = DaoFactory::ProjectLayoutPage()->findLayoutTemplateUser(
$projectId,
$aPageData['project_page_id']
);
if (count($pageLayoutTemplateUser) || SGL_Output::isV6Session() == false) {
SGL::logMessage("isV6 or have go selectLayoutTemplateAuto == false ", PEAR_LOG_DEBUG);
return true;
}
//SGL::logMessage("not find witoon=======>" . $aPageData['page_name'], PEAR_LOG_DEBUG);
$pageData = $aPageData['page_data'] . $aPageData['page_data_zone_2']
. $aPageData['page_data_zone_3'] . $aPageData['page_data_zone_4'];
$layoutTemplateUserId = md5(time().$aPageData['project_page_id']);
$side1Data = (isset($aSideConfig['side1'])) ? $aSideConfig['side1'] : '';
$side2Data = (isset($aSideConfig['side2'])) ? $aSideConfig['side2'] : '';
$componentName = '';
if (isset($aPageData['rvs_component_id']) && !empty($aPageData['rvs_component_id'])) {
$oComponent = RvsLibs_Component::getComponentName($aPageData['rvs_component_id']);
$componentName = isset($oComponent->component_name) ? $oComponent->component_name : '';
}
if (!empty($componentName) && $componentName != 'Online_Form') {
$layoutName = '16_0';
$aUpdate = array();
} elseif (!empty($side1Data) && !empty($side2Data)) {
$layoutName = '4-8-4_0';
$aUpdate = array(
'page_data' => '',
'page_data_zone_2' => $pageData,
'page_data_zone_3' => '',
'page_data_zone_4' => ''
);
} elseif (!empty($side1Data) && empty($side2Data)) {
$layoutName = 'one-two_0';
$aUpdate = array(
'page_data' => '',
'page_data_zone_2' => $pageData,
'page_data_zone_3' => '',
'page_data_zone_4' => ''
);
} elseif (empty($side1Data) && !empty($side2Data)) {
$layoutName = 'two-one_0';
$aUpdate = array(
'page_data' => $pageData,
'page_data_zone_2' => '',
'page_data_zone_3' => '',
'page_data_zone_4' => ''
);
} elseif (empty($side1Data) && empty($side2Data)) {
$layoutName = '16_0';
$aUpdate = array(
'page_data' => $pageData,
'page_data_zone_2' => '',
'page_data_zone_3' => '',
'page_data_zone_4' => ''
);
}
if ($updatePageData === true && count($aUpdate)) {
DaoFactory::ProjectPage()->updateProjectPageDataByProjectPageId(
$aPageData['project_page_id'], $aUpdate
);
}
if (count($aUpdate)) {
$aPageData = array_merge($aPageData, $aUpdate);
}
$errorException = RvsLibs_Template::insertLayoutTemplateUser(
$projectId,
$aPageData['project_page_id'],
$layoutTemplateUserId,
$aPageData['page_name'],
$layoutName
);
return $errorException;
}
public static function mapingWidthLayout($aWidthLayoutConfig, $numGrid)
{
switch ($numGrid) {
case 'one-third':
case 'one':
$widthLayout = $aWidthLayoutConfig['one-third'];
break;
case 'two-third':
case 'two':
$widthLayout = $aWidthLayoutConfig['two-thirds'];
break;
case '3':
case 'three':
$widthLayout = $aWidthLayoutConfig['three'];
break;
case '4':
case 'four':
$widthLayout = $aWidthLayoutConfig['four'];
break;
case '8':
case 'eight':
$widthLayout = $aWidthLayoutConfig['eight'];
break;
case '12':
case 'twelve':
$widthLayout = $aWidthLayoutConfig['twelve'];
break;
case '16':
case 'sixteen':
$widthLayout = $aWidthLayoutConfig['sixteen'];
break;
}
return $widthLayout;
}
public static function getResponsiveSampleContent($layoutTemplateUsername)
{
$aContent = array();
$aLayoutConfig = array();
$config = SGL_Config::singleton();
$layoutTemplateUsername = preg_replace('/third/i','two',$layoutTemplateUsername);
// echo $layoutTemplateUsername;exit;
$layOutName = preg_replace('/_[\d]*$/i', '', $layoutTemplateUsername);
$configWidthLayout = SGL_WEB_ROOT . '/responsiveTemplates/responsive.ini';
if (is_file($configWidthLayout)) {
$aWidthLayoutConfig = $config->load($configWidthLayout);
$aWidthLayoutConfig = $aWidthLayoutConfig[980];
}
$aLayout = explode('-', $layOutName);
if (count($aLayout) == 1) {
$configFile = SGL_WEB_ROOT . '/responsiveTemplates/1column.ini';
if (is_file($configFile)) {
$aLayoutConfig = $config->load($configFile);
}
$aContentConfig = isset ($aLayoutConfig[$layoutTemplateUsername])
? $aLayoutConfig[$layoutTemplateUsername] : array();
$aContent['zone1'] = isset($aContentConfig[1])
? RvsLibs_Template::_getBlockContent($aLayout[0], $aContentConfig[1]) : '';
$editorWidth['editorZone1'] = 940;
} elseif (count($aLayout) == 2) {
$configFile = SGL_WEB_ROOT . '/responsiveTemplates/2columns.ini';
if (is_file($configFile)) {
$aLayoutConfig = $config->load($configFile);
}
$aContentConfig = isset ($aLayoutConfig[$layoutTemplateUsername])
? $aLayoutConfig[$layoutTemplateUsername] : array();
$aContent['zone1'] = isset($aContentConfig[1])
? RvsLibs_Template::_getBlockContent($aLayout[0], $aContentConfig[1]) : '';
$aContent['zone2'] = isset($aContentConfig[2])
? RvsLibs_Template::_getBlockContent($aLayout[1], $aContentConfig[2]) : '';
$editorWidth['editorZone1'] = RvsLibs_Template::mapingWidthLayout($aWidthLayoutConfig, $aLayout[0]);
$editorWidth['editorZone2'] = RvsLibs_Template::mapingWidthLayout($aWidthLayoutConfig, $aLayout[1]);
} elseif (count($aLayout) == 3) {
$configFile = SGL_WEB_ROOT . '/responsiveTemplates/3columns.ini';
if (is_file($configFile)) {
$aLayoutConfig = $config->load($configFile);
}
$aContentConfig = isset ($aLayoutConfig[$layoutTemplateUsername])
? $aLayoutConfig[$layoutTemplateUsername] : array();
$aContent['zone1'] = isset($aContentConfig[1])
? RvsLibs_Template::_getBlockContent($aLayout[0], $aContentConfig[1]) : '';
$aContent['zone2'] = isset($aContentConfig[2])
? RvsLibs_Template::_getBlockContent($aLayout[1], $aContentConfig[2]) : '';
$aContent['zone3'] = isset($aContentConfig[3])
? RvsLibs_Template::_getBlockContent($aLayout[2], $aContentConfig[3]) : '';
$editorWidth['editorZone1'] = RvsLibs_Template::mapingWidthLayout($aWidthLayoutConfig, $aLayout[0]);
$editorWidth['editorZone2'] = RvsLibs_Template::mapingWidthLayout($aWidthLayoutConfig, $aLayout[1]);
$editorWidth['editorZone3'] = RvsLibs_Template::mapingWidthLayout($aWidthLayoutConfig, $aLayout[2]);
}
$aContent['layoutWidth'] = $editorWidth;
return $aContent;
}
public static function _getBlockContent($blockContentType, $contentConfig, $showDefaultText=false)
{
$contentConfig = trim($contentConfig);
if (empty($contentConfig)) {
return $showDefaultText ? 'Insert your data here.' : '';
}
$fileBlockContent = SGL_WEB_ROOT . '/responsiveTemplates/' . $blockContentType . '.html';
$blockContent = file_get_contents($fileBlockContent);
$blockDataId = explode(',', $contentConfig);
$pageData = '';
foreach ($blockDataId as $val) {
$pattern = '/<\!--\s*=*\s*Block\s*' . $val . '\s*=*\s*-->(.*?)<\!--\s*=*\s*End Block\s*' . $val . '\s*=*\s*-->/ims';
if (preg_match($pattern, $blockContent, $aMatch)) {
$pageData .= $aMatch[1];
$oPublishReg = &Publish_Registry::singleton();
$categoryId = $oPublishReg->get('aProjectInfo','rvs_category_id');
$categoryId = !empty($categoryId) ? $categoryId : '17';
$pageData = RvsLibs_Template::replacePreDesignImagesLibrary($pageData, $categoryId);
}
}
return $pageData;
}
public static function replacePreDesignImagesLibrary($htmlData, $categoryId)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$rvsLibraryDir = SGL_WEB_ROOT . '/rvs_library/';
$cateShotName = DaoFactory::Category()->findCategoryNameByCategoryId(
$categoryId, 'getOne', array('category_sh_name')
);
$filePattern = $categoryId . $cateShotName . '_';
if (preg_match_all('#src\s*=\s*[\"|\'][^>|\{LIBRARY_URL\}|\{IMAGE_URL\}]*?images\/([\dx]*)\.[^>]*?[\"|\']#ims', $htmlData, $aMatch)) {
$aBuff = array();
foreach ($aMatch[0] as $key => $val) {
if (in_array($val, $aBuff)) continue;
$filePattern = $filePattern . $aMatch[1][$key] . '_*';
$searchPattern = $rvsLibraryDir . $aMatch[1][$key] . '/' . $filePattern;//folder name
$aFile = glob($searchPattern, GLOB_BRACE);
if (count($aFile)) {
$randFile = $aFile[array_rand($aFile)];
} else {
///if not random all file
$filePattern = '*_' . $aMatch[1][$key] . '_*';
$searchPattern = $rvsLibraryDir . $aMatch[1][$key] . '/' . $filePattern;//folder name
$aFile = glob($searchPattern, GLOB_BRACE);
if (count($aFile) <= 0 || !is_array($aFile))
continue;
$randFile = $aFile[array_rand($aFile)];
}
$randFile = str_replace($rvsLibraryDir, '', $randFile);
$replaceStr = 'src="{LIBRARY_URL}/' . $randFile . '"';
//SGL::logMessage('== wi test = search' . $val, PEAR_LOG_DEBUG);
//SGL::logMessage('== wi test = replace' . $replaceStr, PEAR_LOG_DEBUG);
$htmlData = str_replace($val, $replaceStr, $htmlData);
array_push($aBuff, $val);
}
}
return $htmlData;
}
/**
* detect is run Carousel มากกว่า 1 รูป
* @return string|string|string
*/
public static function isRunCarousel()
{
$oPublishReg = Publish_Registry::singleton();
if ($oPublishReg->get('isTemplateRunCarousel')) {
SGL::logMessage('SB== isRunCarousel register= 1', PEAR_LOG_DEBUG);
return true;
}
$projectId = $oPublishReg->get('project_id');
$projectId = ($projectId) ? $projectId : SGL_Session::get('rvs_project_id');
$oTempalteData = RvsLibs_Template::getTemplatesData($projectId, true);
$customCssPath = RvsLibs_Project::validateCustomCssPath($projectId, $oTempalteData->template_item_folder);
$headerbannnerPath = RvsLibs_File::buildPath(array(
$customCssPath, 'headerbannner.ini.php'
));
$aHbData = RvsLibs_File::getHeaderBannerData($headerbannnerPath);
if (count($aHbData) > 1) {
unset($aHbData);
return true;
}
SGL::logMessage('SB== isRunCarousel = 0', PEAR_LOG_DEBUG);
return false;
}
public static function getUikitSlide($aHbData,$publishUrl){
$height = isset($aHbData['height']) && $aHbData['height']
? $aHbData['height'] : 350;
SGL::logMessage('test: height:' . $height, PEAR_LOG_DEBUG);
$duration = isset($aHbData['duration']) && $aHbData['duration']
? $aHbData['duration']*1000 : 7000;
$autoplay = isset($aHbData['autoplay'])
? $aHbData['autoplay'] : 'true';
$kenburns = isset($aHbData['kenburns']) && $aHbData['kenburns']
? 'true' : 'false';
$fullWidth = isset($aHbData['width']) && $aHbData['width'] == 'full_width'
? 'rv-block-full' : '';
$animation = isset($aHbData['animation'])
? $aHbData['animation'] : 'fade';
if (count($aHbData['slide_item']) <= 0)
return RvsLibs_Template::getEmptyUikitSlide($aHbData,$publishUrl);
$html =<<<EOF
<!-- Start Header Banner -->
<div id="selected_headerbanner">
<!-- {literal} -->
<script>
var rvslideshow = {};
$(document).ready(function(){
rvslideshow = UIkit.slideshow('#rvs-uk-slide', {
animation : '$animation',
duration : $duration,
autoplay : true,
height : 'auto',
autoplayInterval : 1000,
pauseOnHover: true,
kenburns : false,
kenburnsanimations: ['uk-animation-middle-left', 'uk-animation-top-right',
'uk-animation-bottom-left', 'uk-animation-top-center',
'uk-animation-bottom-right'],
slices : 15,
});
var s_width = '{$aHbData['width']}';
if (s_width == 'full_width') {
$('#selected_headerblock').find('div.uk-container').addClass('rv-block-full');
$('#selected_headerbanner').find('div.uk-container').addClass('rv-block-full');
}else{
$('#selected_headerblock').find('div.uk-container').removeClass('rv-block-full');
$('#selected_headerbanner').find('div.uk-container').removeClass('rv-block-full');
}
try{
if(parent.jQuery.sitebuilder.AdjustStyle){
parent.jQuery.sitebuilder.AdjustStyle.setContainer();
parent.jQuery.sitebuilder.AdjustStyle.showBackgroundImage();
parent.jQuery.sitebuilder.AdjustStyleHeader.setDefaultHeaderBannerHtml();
}
}catch(e){
console.log(e);
}
});
</script>
<!-- {/literal} -->
<div class="uk-container uk-container-center {$fullWidth}">
<div id="rvs-uk-slide" class="uk-slidenav-position">
<ul class="uk-slideshow uk-overlay-active" data-uk-slideshow>
EOF;
$nav = '';
$i = 0;
foreach ($aHbData['slide_item'] as $key => $val) {
//$val['layers']['animation'] uk-width-1-3
$nav .= '<li data-uk-slideshow-item="'.$i.'"><span href></span></li>';
$text = RvsLibs_Template::getCation(
$val['layers']['data'],
$val['layers']['position_h'],
$val['layers']['position_v']
);
/*
$layerPosition = RvsLibs_Template::getFlexPosition($val['layers']['position_h'], $val['layers']['position_v']);
$text = '<div class="uk-overlay-panel uk-overlay-background ' . $layerPosition . '">'
. $val['layers']['data'].'</div>';
*/
/*
if (isset($val['text_option']) && $val['text_option'] == 'overlay') {
$ohver = $val['overlay']['show_onhover'];
$text = '<div class="uk-overlay-panel uk-flex '.$val['overlay']['position'].' uk-overlay-background '.$val['overlay']['animation'].'">'.$val['overlay']['data'].'</div>';
} elseif (isset($val['text_option']) && $val['text_option'] == 'caption') {
$text = '<div class="uk-overlay-panel uk-flex '.$val['layers']['animation'].'">'.$val['layers']['data'].'</div>';
}
*/
$html .=<<<EOF
<li id="{$val['img_id']}" class="{$val['layers']['show_onhover']} {$val['img_filter']}">
<img class="{$val['img_filter']}" src="{$publishUrl}/images/headerbanner/{$val['img_name']}" alt="" height="{$height}" style="width: 100%;">
</li>
EOF;
$i++;
}
if ($i > 1) {
$html .=<<<EOF
</ul>
<!-- navigation buttons -->
<ul class="uk-dotnav uk-position-bottom uk-flex-center">
{$nav}
</ul>
<!-- navigation arrows -->
<span class="uk-slidenav uk-slidenav-previous" data-uk-slideshow-item="previous"></span>
<span class="uk-slidenav uk-slidenav-next" data-uk-slideshow-item="next"></span>
</div></div></div><!-- End Header Banner -->
EOF;
} else {
$html .= '</ul></div></div></div><!-- End Header Banner -->';
}
return $html;
}
public static function getEmptyUikitSlide($aHbData,$publishUrl){
$height = isset($aHbData['height']) && $aHbData['height']
? $aHbData['height'] : 350;
$duration = isset($aHbData['duration']) && $aHbData['duration']
? $aHbData['duration']*1000 : 7000;
$autoplay = isset($aHbData['autoplay'])
? $aHbData['autoplay'] : 'true';
$kenburns = isset($aHbData['kenburns']) && $aHbData['kenburns']
? 'true' : 'false';
$fullWidth = isset($aHbData['width']) && $aHbData['width'] == 'full_width'
? 'rv-block-full' : '';
$animation = isset($aHbData['animation'])
? $aHbData['animation'] : 'fade';
$html =<<<EOF
<!-- Start Header Banner -->
<div id="selected_headerbanner">
<!-- {literal} -->
<script>
var rvslideshow = {};
/*height : $height,*/
$(document).ready(function(){
rvslideshow = UIkit.slideshow('#rvs-uk-slide', {
animation : '$animation',
duration : $duration,
autoplay : true,
height : $height,
autoplayInterval : 1000,
pauseOnHover: true,
kenburns : false,
kenburnsanimations: ['uk-animation-middle-left', 'uk-animation-top-right',
'uk-animation-bottom-left', 'uk-animation-top-center',
'uk-animation-bottom-right'],
slices : 15,
});
var s_width = '{$aHbData['width']}';
if (s_width == 'full_width') {
$('#selected_headerblock').find('div.uk-container').addClass('rv-block-full');
$('#selected_headerbanner').find('div.uk-container').addClass('rv-block-full');
}else{
$('#selected_headerblock').find('div.uk-container').removeClass('rv-block-full');
$('#selected_headerbanner').find('div.uk-container').removeClass('rv-block-full');
}
try{
if(parent.jQuery.sitebuilder.AdjustStyle){
parent.jQuery.sitebuilder.AdjustStyle.setContainer();
parent.jQuery.sitebuilder.AdjustStyle.showBackgroundImage();
parent.jQuery.sitebuilder.AdjustStyleHeader.setDefaultHeaderBannerHtml();
}
}catch(e){
}
});
</script>
<!-- {/literal} -->
<div class="uk-container uk-container-center {$fullWidth}">
<div id="rvs-uk-slide" class="uk-slidenav-position" style="display:none">
<ul class="uk-slideshow uk-overlay-active uk-img-preserve" data-uk-slideshow>
<li id="noSlideImage" class="noSlideImage">
<img class="noSlideImage" src="{$publishUrl}/images/headerbanner/header_banner.jpg" alt="" height="0" style="0">
</li>
</ul></div></div></div><!-- End Header Banner -->
EOF;
return $html;
}
function getCation($data, $positionH, $positionV)
{
$position = RvsLibs_Template::getOverlayPosition($positionV);
$html =<<<EOF
<figcaption class="uk-overlay-panel {$position}">
{$data}
</figcaption>
EOF;
return $html;
}
function getFlexPosition($positionH, $positionV)
{
$class = "uk-text-{$positionV} uk-text-{$positionH} ";
//$class .= RvsLibs_Template::getOverlayPosition($positionV);
return $class ;
}
function getOverlayPosition($positionV)
{
switch ($positionV) {
case 'top':
$class = 'uk-overlay-top';
break;
case 'bottom':
$class = 'uk-overlay-bottom';
break;
case 'middle':
default:
$class = 'uk-flex uk-flex-center uk-flex-middle';
}
return $class;
}
/**
* <div class="carousel"><ul>
* <li><img1></li>
* <li><img2></li>
* <li><img2></li>
* </ul></div>
*/
public static function replaceHeaderBanner($originalCode, $publishUrl, $isUikit=false)
{
SGL::logMessage("SB== isUikit:" . $isUikit, PEAR_LOG_DEBUG);
$oPublishReg = Publish_Registry::singleton();
if ($isUikit == false) {
$isUikit = $oPublishReg->get('isUikit');
}
$projectId = ($oPublishReg->get('project_id')) ? $oPublishReg->get('project_id') : SGL_Session::get('rvs_project_id');
$oTempalteData = RvsLibs_Template::getTemplatesData($projectId, true);
$customCssPath = RvsLibs_Project::validateCustomCssPath($projectId, $oTempalteData->template_item_folder);
$headerbannnerPath = RvsLibs_File::buildPath(array($customCssPath, 'headerbannner.ini.php'));
SGL::logMessage("SB== headerbannnerPath:" . $headerbannnerPath, PEAR_LOG_DEBUG);
$aHbData = RvsLibs_File::getHeaderBannerData($headerbannnerPath, $isUikit);
$headerCode = '';
$publishUrl = preg_match('/[^\/]$/im', $publishUrl) ? $publishUrl . '/' : $publishUrl;
if($isUikit == true) {
$headerCode = RvsLibs_Template::getUikitSlide($aHbData, $publishUrl);
if (!empty($headerCode)) {
$originalCode = preg_replace('/<\!--\s*Start\s*Header\s*Banner\s*-->([\w\W\b\B\d\D]*?)<\!--\s*End\s*Header\s*Banner\s*-->/ims', $headerCode, $originalCode);
} else {
//มี banner รูปเดียว
//RvsLibs_Config::logMessageInfo($oTempalteData);
$templateUrl = $oTempalteData->templateUrl . '/' . $oTempalteData->template_item_folder;
$originalCode = RvsLibs_String::preg_replace('/url\(images\/header_banner\.jpg\)/im', 'url('. $templateUrl . '/images/header_banner.jpg)', $originalCode);
$originalCode = RvsLibs_String::preg_replace('/src="images\/header_banner\.jpg"/im', 'src="' . $templateUrl . '/images/header_banner.jpg"', $originalCode);
}
} else {
if (count($aHbData) > 0) {
foreach ($aHbData as $k => $v) {
$uid = uniqid(time());
$headerCode .= "\n" . '<li><img src="' . $publishUrl . 'images/headerbanner/' . $v['name'] . '?' . $uid . '" alt=""></li>';
}
SGL::logMessage("_responsive== Goto generate". $headerCode, PEAR_LOG_DEBUG);
}
$headerCode = <<< EOF
<!-- Header Banner -->
<div class="rs_header_banner rslides_container">
<ul class="rslides" id="rslides">
{$headerCode}
</ul>
</div>
<!-- End Header Banner -->
EOF;
$originalCode = preg_replace('/<\!-- Header Banner -->([\w\W\b\B\d\D]*?)<\!-- End Header Banner -->/ims', $headerCode, $originalCode);
}
return $originalCode;
}
/**
* ======================= On-Demand Template ===========================
*/
/**
* validate template up to date
* validate template file structer success
*
* @param unknown $templateitemfolder
* @return number
*/
public static function validateDownload($templateitemfolder)
{
SGL::logMessage('ondemand: templateitemfolder='.$templateitemfolder, PEAR_LOG_DEBUG);
$isStructerOk = RvsLibs_Template::isStructureTemplateItemFolder($templateitemfolder);
SGL::logMessage('ondemand: isStructerOk=' . $isStructerOk, PEAR_LOG_DEBUG);
//Case today is update
if(RvsLibs_Template::isUpdateTemplateToday($templateitemfolder) && $isStructerOk){
SGL::logMessage('ondemand: validateDownload(' . $templateitemfolder .'): isUpdateTemplateToday and isStructerOk', PEAR_LOG_DEBUG);
return 0;
}
SGL::logMessage('on-demand: validateDownload: passs', PEAR_LOG_DEBUG);
$md5FileProvider = RvsLibs_Template::getMd5TemplateFromProvider($templateitemfolder);
$md5FileTemplate = RvsLibs_Template::getMd5ByTemplateItemFolder($templateitemfolder);
//Case must update template
SGL::logMessage('ondemand: validateDownload: ' . "$templateitemfolder ---> $md5FileProvider != $md5FileTemplate", PEAR_LOG_DEBUG);
if( ($isStructerOk == false) || ($md5FileProvider != $md5FileTemplate) ) {
return 1;
}
SGL::logMessage('ondemand: validateDownload: 000', PEAR_LOG_DEBUG);
return 0;
}
/**
*
* @param unknown $templateitemfolder
* @return Ambigous <Ambigous, string>
*/
public static function getMd5TemplateFromProvider($templateitemfolder)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
//if template cache return cache
if (RvsLibs_Template::isCacheMd5TemplateToday()) {
return RvsLibs_Template::getCacheMd5TemplateItemFolder($templateitemfolder);
} else {
RvsLibs_Template::updateMd5FromProvider();
return RvsLibs_Template::getCacheMd5TemplateItemFolder($templateitemfolder);
}
}
public static function isCacheMd5TemplateToday()
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$cacheTemplateName = SGL_PATH . '/www/userdata/securervsite/templateinfo.ini';
if (is_file($cacheTemplateName) === true) {
$iniTemplate = parse_ini_file($cacheTemplateName);
$today = date("Ymd");
if(isset($iniTemplate['updateDate']) && $iniTemplate['updateDate'] == $today){
return 1;
}
}
return 0;
}
public static function isUpdateTemplateToday($templateitemfolder)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$cacheTemplateName = SGL_PATH . '/www/userdata/securervsite/templateinfo.ini';
if (is_file($cacheTemplateName) === true) {
$iniTemplate = parse_ini_file($cacheTemplateName);
$today = date("Ymd");
$fileTemplateName = $templateitemfolder . '.tar.bz2';
$updateDate = (isset($iniTemplate['updateDate']) && $iniTemplate['updateDate'])
? $iniTemplate['updateDate']
: '';
SGL::logMessage(' update=' . $updateDate . ' today=' . $today, PEAR_LOG_DEBUG);
if( $updateDate == $today &&
isset($iniTemplate["$fileTemplateName"]) && $iniTemplate["$fileTemplateName"] != ''){
SGL::logMessage(' return 1', PEAR_LOG_DEBUG);
return 1;
}
}
SGL::logMessage(' return 0', PEAR_LOG_DEBUG);
return 0;
}
/**
* run process
* download file template_item_folder
* download template md5
*
* @return number
*/
public static function updateMd5FromProvider()
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$res = RvsLibs_System::secureCommand('downloadmd5template');
return 1;
}
/**
*
* @param unknown $templateitemfolder
* @return Ambigous <>|string
*/
public static function getCacheMd5TemplateItemFolder($templateitemfolder)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$cacheTemplateName = SGL_PATH . '/www/userdata/securervsite/templatefullmd5.md5';
if (is_file($cacheTemplateName) === true) {
$iniTemplate = parse_ini_file($cacheTemplateName);
$keyName = $templateitemfolder . '.tar.bz2';
if( isset($iniTemplate["$keyName"])) {
return $iniTemplate["$keyName"];
}
}
return '';
}
/**
* IF Error ,Please delete cache directory in home user ($homeUser/.rvsitebuilder/cache/TemplateItemFolder)
*
* @param unknown $templateItemFolder
* @return Ambigous <string, resource, object>
*/
public static function getMd5ByTemplateItemFolder($templateItemFolder)
{
SGL::logMessage($templateItemFolder, PEAR_LOG_DEBUG);
if($templateItemFolder == ''){
return 0;
}
$fileTar = TEMPLATE_PATH . '/' . $templateItemFolder;
$aTemplateCacheDir = RvsLibs_File::buildPath(
array(SGL_CACHE_DIR, 'templateItemFolder')
);
$aTemplateCache = RvsLibs_File::buildPath(
array(SGL_CACHE_DIR, 'templateItemFolder',$templateItemFolder)
);
if(is_dir($aTemplateCacheDir)){
RvsLibs_System::exec('which chmod', $outputs);
if(is_array($outputs) && count($outputs) > 0){
$commandChmod = array_pop($outputs);
} else {
$commandChmod = 'chmod';
}
$cmd = "$commandChmod -R 755 $aTemplateCacheDir";
$res = RvsLibs_System::exec($cmd);
}
SGL::logMessage('rm -rf '. $aTemplateCacheDir, PEAR_LOG_DEBUG);
@System::rm(array('-rf', $aTemplateCacheDir ));
RvsLibs_System::mkDir(array('-p', $aTemplateCacheDir));
RvsLibs_System::mkDir(array('-p', $aTemplateCache));
SGL::logMessage("cp -af $fileTar $aTemplateCacheDir", PEAR_LOG_DEBUG);
@system("cp -af $fileTar $aTemplateCacheDir");
$templateFile = RvsLibs_File::buildPath(array($aTemplateCacheDir, $templateItemFolder . '.tar.bz2'));
$result = RvsLibs_Archive_Tar::create($aTemplateCacheDir, $templateItemFolder, 'bz2');
if (is_file($templateFile) == false) {
SGL::logMessage('Cannot create file: ' . $templateFile, PEAR_LOG_ERR);
}
$md5Template = RvsLibs_File::getMd5File($templateFile);
@System::rm(array('-rf', $aTemplateCacheDir . '/' . $templateItemFolder ));
@System::rm(array('-f', $aTemplateCacheDir . '/' . $templateItemFolder . '.tar.bz2'));
return $md5Template;
}
public static function getUikitSourceCss($sourceFile, $file)
{
$source = UIKIT_LIB_PATH . '/rvsb-css/' . $file;
//SGL::logMessage(' test: ' . $sourceFile, PEAR_LOG_DEBUG);
//SGL::logMessage(' test: ' . $source, PEAR_LOG_DEBUG);
$sourceMd5 = RvsLibs_File::getMd5File($sourceFile);
$desMd5 = RvsLibs_File::getMd5File($source);
if ($desMd5 == $sourceMd5) {
SGL::logMessage(' return test: ' . $sourceFile, PEAR_LOG_DEBUG);
return $sourceFile;
}
SGL::logMessage(' return test: ' . $source, PEAR_LOG_DEBUG);
return $source;
}
/**
* type: reponsive
* layout.css, skeleton.css, index.htm
*
* type: normal
* images, style.css, index.htm
*
* @param unknown $templateItemFolder
* @return number
*/
public static function isStructureTemplateItemFolder($templateItemFolder)
{
if($templateItemFolder == ''){
SGL::logMessage(' templateItemFolder is null', PEAR_LOG_DEBUG);
return 0;
}
$templateItemFolderPath = TEMPLATE_PATH . '/' . $templateItemFolder;
SGL::logMessage(' path: ' . $templateItemFolderPath, PEAR_LOG_DEBUG);
$fileNameCheckRec = array(
"images" => "dirs",
"index.htm" => "files",
"style.css" => "files",
);
//case responsive
if (RvsLibs_Template::isResponsiveTemplate($templateItemFolderPath) == true) {
$fileNameCheckRec = array(
"layout.css" => "files",
"index.htm" => "files",
"skeleton.css" => "files",
);
}
//case uikit
if (RvsLibs_Template::isUikitTemplate($templateItemFolderPath) == true) {
$fileNameCheckRec = array(
"images" => "dirs",
"rvsb-css" => "dirs",
"index.htm" => "files",
"templateData.txt" => "files",
);
}
$ListDir = RvsLibs_System::ls($templateItemFolderPath);
$checkIndex = 0;
foreach ($ListDir as $aIndex => $aName) {
foreach ($aName as $bIndex => $bName) {
$bName = trim(end(explode('/', $bName)));
//SGL::logMessage('name:' . $bName . '|aIndex:' . $aIndex, PEAR_LOG_DEBUG);
if(isset($fileNameCheckRec[$bName]) || ($aIndex == 'files' && ($bName == 's_preview.jpg' || $bName == 's_preview.gif'))){
$checkIndex++;
}
}
}
if($checkIndex > 3){
SGL::logMessage('checkTotal:' . $checkIndex . ' > 3', PEAR_LOG_DEBUG);
return 1;
}
SGL::logMessage('checkTotal:' . $checkIndex . ' < 3', PEAR_LOG_DEBUG);
return 0;
}
/**
*
* @param unknown $templateItemFolder
* @return number
*/
public static function downloadTemplateItemFolder($templateItemFolder)
{
SGL::logMessage("templateItemFolder: " . $templateItemFolder, PEAR_LOG_DEBUG);
//#TODO
//User :: securervsite
//$res = RvsLibs_System::secureCommand('downloadtemplate', array('templateitemfolder' => $templateItemFolder));
// make download path
$cacheTemplatePath = USER_HOME_USERDATA_PATH . '/upload';
$oCp = CpHandle::factory();
$tmpPath = $oCp->getTmpPath();
if (is_dir($tmpPath) === false) {
RvsLibs_System::mkDir(array('-p', $tmpPath));
}
RvsLibs_System::mkDir(array('-p', $cacheTemplatePath));
RvsLibs_System::exec('which chmod', $outputs);
if(is_array($outputs) && count($outputs) > 0){
$commandChmod = array_pop($outputs);
} else {
$commandChmod = 'chmod';
}
$cmd = "$commandChmod -R 755 $cacheTemplatePath";
$res = RvsLibs_System::exec($cmd);
$fileTemplateDownload = $cacheTemplatePath . '/' . $templateItemFolder . '.tar.bz2' ;
SGL::logMessage(' fileTemplateDownload : ' . $fileTemplateDownload, PEAR_LOG_DEBUG);
/*--------- Clean Data---------*/
if(is_file($fileTemplateDownload)){
@System::rm(array('-f', $fileTemplateDownload));
}
if(is_dir($cacheTemplatePath . '/' . $templateItemFolder)){
@System::rm(array('-rf', $cacheTemplatePath . '/' . $templateItemFolder));
}
//Get File full template
$site = RvsLibs_Config::getDownloadTemplateUrl() . '/download.php';
$request = (self::isLalestVersion() == true) ? '/getversion/latest' : '';
$request .= '/download/rvsitebuilder-templatefull/file/' . $templateItemFolder . '.tar.bz2';
//================ Download File ===============================
//--------------Download case #1 curl------------------
$ContentRef = RvsLibs_Url::urlConnectWithoutReplaceHeader($site, $request, 80, null, false,30);
if (SGL::isError($ContentRef) || (isset($ContentRef['CONNECT_ERROR']) && $ContentRef['CONNECT_ERROR'])) {
RvsLibs_System::exec('which wget', $outputs);
if(is_array($outputs) && count($outputs) > 0){
$commandWget = array_pop($outputs);
} else {
$commandWget = 'wget';
}
$cmdDownload = "{$commandWget} " . $site . $request . " -O {$fileTemplateDownload}";
SGL::logMessage('=== ondemand wget: ' . $cmdDownload , PEAR_LOG_DEBUG);
$res = RvsLibs_System::exec($cmdDownload);
} else {
SGL::logMessage('=== ondemand url '. $site . $request , PEAR_LOG_DEBUG);
$fp = fopen($fileTemplateDownload, 'w');
fwrite($fp, $ContentRef['data']);
fclose($fp);
}
//extract file
SGL::logMessage(' chmod '. $fileTemplateDownload, PEAR_LOG_DEBUG);
$resChmod = RvsLibs_System::chmod($fileTemplateDownload, '0755');
// .rvsitebuilder/upload/{templatefolder}.tar.gz
// to .rvsitebuilder/upload/{templatefolder}
RvsLibs_Archive_Tar::extract($fileTemplateDownload, $cacheTemplatePath);
SGL::logMessage('RvsLibs_System::chmod '. $cacheTemplatePath, PEAR_LOG_DEBUG);
$resChmod = RvsLibs_System::chmod($cacheTemplatePath, '0775');
SGL::logMessage("$commandChmod -R 775 $cacheTemplatePath", PEAR_LOG_DEBUG);
$cmd = "$commandChmod -R 775 $cacheTemplatePath";
$res = RvsLibs_System::exec($cmd);
SGL::logMessage("1 copytemplate('templateitemfolder'==>$templateItemFolder)" . $templateItemFolder, PEAR_LOG_DEBUG);
$res = RvsLibs_System::secureCommand('copytemplate', array('templateitemfolder' => $templateItemFolder));
@System::rm(array('-rf', $fileTemplateDownload));
@System::rm(array('-rf', $cacheTemplatePath . '/' . $templateItemFolder));
return 1;
}
public static function isLalestVersion()
{
$latestFile = RVS_ROOT_HOME . '/.rvsitebuilder/.getlatestversion';
SGL::logMessage(' latestFile: '. $latestFile , PEAR_LOG_DEBUG);
if (is_file($latestFile)) {
return true;
}
return false;
}
public static function compileComponentCss()
{
SGL::logMessage('compile component css', PEAR_LOG_DEBUG);
$oPublishReg = Publish_Registry::singleton();
$aModules = $oPublishReg->get('componentUseDB', 'component_name');
$isCompoDB = $oPublishReg->get('isComponentDB');
$isUikit = $oPublishReg->get('isUikit');
if (count($aModules) <= 0 || !$isCompoDB) {
return true;
}
$publishPath = $oPublishReg->get('publishPath');
$projectId = $oPublishReg->get('project_id');
$TemplatePath = $oPublishReg->get('templatePath');
$template_item_folder = $oPublishReg->get('aProjectInfo', 'template_item_folder');
$color_id = $oPublishReg->get('aProjectInfo', 'color_id');
$rvsUsrId = RvsLibs_User::getUserId();
$path = $publishPath . '/themes/rvtheme';
RvsLibs_Template::updateTemplateStyleCss($projectId, $rvsUsrId, $publishPath, $path);
///get default color config
$aColoConfig = RvsLibs_Template::getColorConfig($TemplatePath, $template_item_folder, $color_id);
RvsLibs_Template::updateComponentDynamicCss($projectId, $rvsUsrId, $aColoConfig, $path);
RvsLibs_Template::updateComponentStatic($projectId, $rvsUsrId, $path);
$cssData = '';
if ($oPublishReg->get('isResponsiveTemplate')) {
$defaultCss = 'layout.css';
} else {
$defaultCss = 'style.css';
}
//from template path
$cssTmpPath = $TemplatePath . '/' . $template_item_folder . '/'. $defaultCss;
//from customcss
$cssCustomPath = RvsLibs_File::buildPath(array(PROJECT_PATH, $projectId, 'customcss', $template_item_folder, $defaultCss));
$cssPath = (is_file($cssCustomPath)) ? $cssCustomPath : $cssTmpPath;
//get content css
SGL::logMessage('get content css: ' . $cssPath, PEAR_LOG_DEBUG);
if (is_file($cssPath)) {
$cssData = file_get_contents($cssPath);
}
// $defaultCss + component_static.css + component_dynamic.css
if (!$isUikit) {
$cssData = $cssData . "\n" . RvsLibs_Template::getComponentStaticCss($path)
. "\n" . RvsLibs_Template::getComponentDynamicCss($path);
}
$cssUpdate = $publishPath . '/' . $defaultCss;
$fp = RvsLibs_File::fopen($cssUpdate , 'w+');
if (SGL::isError($fp) === true) {
SGL::logMessage('cannot open file. ' . $fp->getMessage() , PEAR_LOG_ERR);
SGL_Error::pop();
return;
}
RvsLibs_File::fwrite($fp , $cssData);
RvsLibs_File::fclose($fp);
}
/**
* update template style css all
* replace colorconfig [c]
*
* @param unknown_type $projectId
* @param unknown_type $rvsUsrId
* @param string $userThemePath = {publishPath}/theme/rvthemes
*/
public static function updateTemplateStyleCss($projectId, $rvsUsrId, $publishPath, $userThemePath)
{
SGL::logMessage('updateTemplateStyleCss theme: ' . $userThemePath, PEAR_LOG_DEBUG);
$rvsProjectsIdPathVar = RvsLibs_File::buildPath(array(RVS_USER_HOME, '.rvsitebuilder', 'websitepublish', $projectId, 'var'));
$aConfPattern = array("SGL_PATH", "RVS_PUBLISH_PATH", "RVS_PROJECTSID_VAR");
$aConfReplace = array(SGL_PATH, $publishPath, $rvsProjectsIdPathVar);
$aDataConf = array();
// see for copy css file to publish path
$fileconf = RvsLibs_File::buildPath(array(SGL_PATH, 'scripts', 'rvscomponentcssconf.ini'));
if (is_file($fileconf)) {
$aDataConf = RvsLibs_Config::parse_ini_file($fileconf,true);
}
//fixed PHPMD scan 07/07/2554
$aColorConfig = RvsLibs_Template::getTemplateColorConfig($rvsUsrId, $projectId);
if (isset($aDataConf['cssTemplate'])) {
foreach ($aDataConf['cssTemplate'] as $cssTemplatePath) {
$cssTemplatePath = RvsLibs_String::str_replace($aConfPattern, $aConfReplace, $cssTemplatePath);
RvsLibs_File::writeFileCssCenter($aColorConfig, $cssTemplatePath, $cssTemplatePath);
}
}
}
public static function getColorConfig($templatePath, $template_item_folder, $color_id)
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
$fileConfigName = 'colorConfig.ini.php';
$coloConfigPath = RvsLibs_File::buildPath(array($templatePath, $template_item_folder, $fileConfigName));
$folderColorGroup = RvsLibs_Template::getFolderColorGroup($color_id);
$defaultColorConfigPath = RvsLibs_File::buildPath(array(SGL_PATH, 'scripts', 'seagull_mod', 'public_html', 'themes', 'rvtheme', 'defaultColorConf', $folderColorGroup, $fileConfigName));
$aColoConfig = (is_file($coloConfigPath))
? RvsLibs_Config::parse_ini_file($coloConfigPath, true)
: RvsLibs_Config::parse_ini_file($defaultColorConfigPath, true);
$aBlock = array('c'=>'','l'=>'','r'=>'');
foreach($aBlock as $k => $v) {
foreach($aColoConfig as $k2 => $v2){
if(RvsLibs_String::dbeSubStrCount($k2,$k) > 0) {
$aBlock[$k] = $aColoConfig[$k2];
}
}
}
foreach($aBlock as $k => $v) {
if($k != 'c') {
$aBlock[$k] = array_merge($aBlock['c'],$aBlock[$k]);
}
}
return $aBlock;
}
/**
* update block Left SIDE1 / Right SIDE2 style css
*
* @param unknown_type $projectId
* @param unknown_type $rvsUsrId
* @param string $userThemePath = xxxxxx
*/
public static function updateComponentDynamicCss($projectId, $rvsUsrId, $aColoConfig=array(), $userThemePath="")
{
SGL::logMessage(null, PEAR_LOG_DEBUG);
if (is_array($aColoConfig) && count($aColoConfig)) {
$scriptsPath = SGL_PATH . '/scripts/seagull_mod/public_html/themes/rvtheme/css/component_dynamic.css';
$aCode = (is_file($scriptsPath)) ? file($scriptsPath) : array();
$strLeft = "";
$strRight = "";
if ($aCode) {
foreach ($aCode as $line) {
if (preg_match_all('/div\#(.*?)/', $line, $aMatchSide)) {
$lineLeft = '#RVS_leftside ' . $line;
$lineRight = '#RVS_rightside ' . $line;
} else {
$lineLeft = $line;
$lineRight = $line;
}
if (preg_match_all('/\/\s*\*\s*\*\s*\$\s*(.*?)\s*\$\s*\*\s*\*\s*\//', $lineLeft, $aMatch) ) {
$patternLeft = trim($aMatch[0][0]);
$replaceLeft = trim($aColoConfig['l'][$aMatch[1][0]]);
$lineLeft = str_replace($patternLeft, $replaceLeft, $lineLeft);
}
if (preg_match_all('/\/\s*\*\s*\*\s*\$\s*(.*?)\s*\$\s*\*\s*\*\s*\//', $lineRight, $aMatch) ) {
$patternRight = trim($aMatch[0][0]);
$replaceRight = trim($aColoConfig['r'][$aMatch[1][0]]);
$lineRight = str_replace($patternRight, $replaceRight, $lineRight);
}
$strLeft .= $lineLeft;
$strRight .= $lineRight;
}
//rewrite file
if ($userThemePath) {
$cssPathFile = $userThemePath . '/css/component_dynamic.css';
$handle = RvsLibs_File::fopen($cssPathFile, 'w+');
if (SGL::isError($handle) === true) {
SGL::logMessage('cannot open file. ' . $handle->getMessage() , PEAR_LOG_ERR);
SGL_Error::pop();
return;
}
RvsLibs_File::fwrite($handle, $strLeft . "\n" . $strRight);
RvsLibs_File::fclose($handle);
} else {
return $strLeft . "\n" . $strRight;
}
}
}
}
public static function updateComponentStatic($projectId, $rvsUsrId, $userThemePath = "")
{
$scriptsPath = SGL_PATH . '/scripts/seagull_mod/public_html/themes/rvtheme/css/component_static.css';
$aCode = (is_file($scriptsPath)) ? file($scriptsPath) : array();
$strLineFinal = "";
if (count($aCode)) {
$strLeft = '#RVS_leftside { padding:5px 0; margin:0; }' . "\n";
$strRight = '#RVS_rightside { padding:5px 0; margin:0; }' . "\n";
foreach ($aCode as $line) {
if (preg_match_all('/div\#(.*?)|input/', $line, $aMatchSide)) {
$strLine = '#RVS_leftside ' . $line;
$strLine2 = '#RVS_rightside ' . $line;
} else {
$strLine = $line;
$strLine2 = $line;
}
$strLineFinal .= $strLine . $strLine2;
}
//rewrite file
if ($userThemePath) {
$cssPathFile = $userThemePath . '/css/component_static.css';
$handle = fopen($cssPathFile, 'w+');
if (SGL::isError($handle) === true) {
SGL::logMessage('cannot open file. ' . $handle->getMessage() , PEAR_LOG_ERR);
SGL_Error::pop();
return;
}
RvsLibs_File::fwrite($handle, $strLeft . "\n" . $strRight . "\n" . $strLineFinal);
RvsLibs_File::fclose($handle);
} else {
return $strLeft . "\n" . $strRight . "\n" . $strLineFinal;
}
}
}
public static function getComponentStaticCss($userThemePath)
{
$cssCompoPathFile = $userThemePath . '/css/component_static.css';
$aCodeCompo = (is_file($cssCompoPathFile)) ? file($cssCompoPathFile) : array();
$strCompoLine = "";
foreach ($aCodeCompo as $lineCompo) {
$strCompoLine .= $lineCompo;
}
return $strCompoLine;
}
public static function getComponentDynamicCss($userThemePath)
{
$cssCompoPathFile = $userThemePath . '/css/component_dynamic.css';
$aCodeCompo = (is_file($cssCompoPathFile)) ? file($cssCompoPathFile) : array();
$strCompoLine = "";
foreach ($aCodeCompo as $lineCompo) {
$strCompoLine .= $lineCompo;
}
return $strCompoLine;
}
public static function getTemplateurlpath($templateUserId, $templateItemFolder)
{
$aTemplatePath = array();
if ($templateUserId == RvsLibs_User::getRootId()) {
//$homePath = RVS_ROOT_HOME;
$homePath = ROOT_HOME_USERDATA_PATH;
$homeUrl = ROOT_HOME_USERDATA_URL;
} elseif ($templateUserId == RvsLibs_User::getOwnerId()) {
//$homePath = RVS_OWNER_HOME;
$homePath = OWNER_HOME_USERDATA_PATH;
$homeUrl = OWNER_HOME_USERDATA_URL;
} elseif ($templateUserId == RvsLibs_User::getUserId()) {
//$homePath = RVS_USER_HOME;
$homePath = USER_HOME_USERDATA_PATH;
$homeUrl = USER_HOME_USERDATA_URL;
}
$templatePath = RvsLibs_File::buildPath(array($homePath,'upload','template'));
$templateUrl = RvsLibs_File::buildPath(array($homeUrl,'upload','template'));
if (is_dir($templatePath . '/' . $templateItemFolder)) {
$aTemplatePath['path'] = $templatePath;
$aTemplatePath['url'] = $templateUrl;
} else {
$aTemplatePath['path'] = TEMPLATE_PATH;
$aTemplatePath['url'] = TEMPLATE_URL;
}
return $aTemplatePath;
}
public static function getLayoutCss($oTemplateData=null)
{
$project_id = RvsLibs_Project::getProjectId();
if (is_null($oTemplateData))
$oTemplateData = RvsLibs_Template::getTemplatesData($project_id, true);
/*$oTemplateData->templatePath;
$oTemplateData->templateUrl;
$oTemplateData->template_item_folder;*/
$layoutPath = PROJECT_PATH . '/' . $project_id . '/customcss/' . $oTemplateData->template_item_folder . '/layout.css';
if (is_file($layoutPath)) {
$customCssUrl = str_replace(PROJECT_PATH, PROJECT_URL, $layoutPath);
$customCssUrl .= '?si=' . md5(time());
} else {
$layoutPath = $oTemplateData->templatePath . '/' . $oTemplateData->template_item_folder . '/layout.css';
$customCssUrl = $oTemplateData->templateUrl . '/' . $oTemplateData->template_item_folder . '/layout.css?si=' . md5(time());
}
$aLayoutInfo = array(
'scriptPath' => $layoutPath,
'scriptUrl' => $customCssUrl,
'includeScript' => ''
);
return $aLayoutInfo;
}
public static function addNewPictureName($picture_name)
{
$uniqueId = RvsLibs_String::genUniqueId();
$res = DaoFactory::Picture()->insertNewPictureName($uniqueId, $picture_name);
//optimize : siwakorn
return ($res) ? $uniqueId : false;
}
/**
* Update Uikit rvsb-css
* www/UikitTemplate/MasterTemplateUIKit/rvsb-css/*
* to
* /home/{user}/.rvsitebuilder/projects/{project_id}/customcss/{template_folder_user}/rvsb-css/*
*
* @param unknown $source
* @param unknown $dest
*/
public static function updateUikitCss($source, $dest)
{
SGL::logMessage('source: ' . $source, PEAR_LOG_DEBUG);
SGL::logMessage('dest: ' . $dest, PEAR_LOG_DEBUG);
if (class_exists('RV_CssParser') == false) {
require_once SGL_MOD_DIR . '/sitebuilder/classes/RV_CssParser.php';
}
$oCss = RV_CssParser::singleton(true);
$path = RvsLibs_System::ls(array('-R', $source));
foreach ($path['files'] as $file) {
$fileName = end(explode('/', $file));
$sourceFile = $source . '/' . $fileName;
$destFile = $dest . '/' . $fileName;
if (is_file($sourceFile) == true
&& is_file($destFile) == true) {
$oCss->merge_multiple_css(array($sourceFile, $destFile));
$oCss->build_css();
$oCss->write_file($destFile);
}
}
}
}//End Class
}
?>