2016-01-24 21:17:11 +01:00
< ? php
2017-02-24 21:13:40 +01:00
/* Copyright ( C ) 2016 - 2017 Laurent Destailleur < eldy @ users . sourceforge . net >
2016-01-24 21:17:11 +01:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*/
/**
2017-10-20 23:48:42 +02:00
* \file htdocs / public / website / index . php
2016-08-08 14:21:43 +02:00
* \ingroup website
2018-10-14 18:44:29 +02:00
* \brief Wrapper to output pages when website is powered by Dolibarr instead of a native web server
2016-01-24 21:17:11 +01:00
*/
2018-04-21 12:00:55 +02:00
if ( ! defined ( 'NOTOKENRENEWAL' )) define ( 'NOTOKENRENEWAL' , 1 ); // Disables token renewal
if ( ! defined ( 'NOLOGIN' )) define ( " NOLOGIN " , 1 );
if ( ! defined ( 'NOCSRFCHECK' )) define ( " NOCSRFCHECK " , 1 ); // We accept to go on this page from external web site.
if ( ! defined ( 'NOREQUIREMENU' )) define ( 'NOREQUIREMENU' , '1' );
if ( ! defined ( 'NOREQUIREHTML' )) define ( 'NOREQUIREHTML' , '1' );
if ( ! defined ( 'NOREQUIREAJAX' )) define ( 'NOREQUIREAJAX' , '1' );
2016-05-01 16:34:50 +02:00
/**
* Header empty
*
* @ return void
*/
2018-08-15 14:28:34 +02:00
function llxHeader ()
{
}
2016-05-01 16:34:50 +02:00
/**
* Footer empty
*
* @ return void
*/
2018-08-15 14:28:34 +02:00
function llxFooter ()
{
}
2016-05-01 16:34:50 +02:00
2016-01-24 21:17:11 +01:00
require '../../master.inc.php' ;
2016-05-01 16:34:50 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php' ;
$error = 0 ;
2017-07-20 16:49:20 +02:00
$websitekey = GETPOST ( 'website' , 'alpha' );
2016-05-07 16:38:32 +02:00
$pageid = GETPOST ( 'page' , 'alpha' ) ? GETPOST ( 'page' , 'alpha' ) : GETPOST ( 'pageid' , 'alpha' );
2017-07-21 02:30:02 +02:00
$pageref = GETPOST ( 'pageref' , 'aZ09' ) ? GETPOST ( 'pageref' , 'aZ09' ) : '' ;
2016-05-01 16:34:50 +02:00
$accessallowed = 1 ;
$type = '' ;
2016-05-01 21:19:29 +02:00
if ( empty ( $pageid ))
{
2018-10-14 18:44:29 +02:00
require_once DOL_DOCUMENT_ROOT . '/website/class/website.class.php' ;
require_once DOL_DOCUMENT_ROOT . '/website/class/websitepage.class.php' ;
2017-07-03 02:09:14 +02:00
2018-10-14 18:44:29 +02:00
$object = new Website ( $db );
$object -> fetch ( 0 , $websitekey );
2017-07-21 02:30:02 +02:00
if ( empty ( $object -> id ))
2018-10-14 18:44:29 +02:00
{
if ( empty ( $pageid ))
{
// Return header 404
header ( $_SERVER [ " SERVER_PROTOCOL " ] . " 404 Not Found " , true , 404 );
include DOL_DOCUMENT_ROOT . '/public/error-404.php' ;
exit ;
}
}
$objectpage = new WebsitePage ( $db );
if ( $pageref )
{
$result = $objectpage -> fetch ( 0 , $object -> id , $pageref );
if ( $result > 0 )
{
$pageid = $objectpage -> id ;
}
elseif ( $result == 0 )
{
// Page not found from ref=pageurl, we try using alternative alias
$result = $objectpage -> fetch ( 0 , $object -> id , null , $pageref );
if ( $result > 0 )
{
$pageid = $objectpage -> id ;
}
}
}
else
{
if ( $object -> fk_default_home > 0 )
{
$result = $objectpage -> fetch ( $object -> fk_default_home );
if ( $result > 0 )
{
$pageid = $objectpage -> id ;
}
}
if ( empty ( $pageid ))
{
$array = $objectpage -> fetchAll ( $object -> id );
if ( is_array ( $array ) && count ( $array ) > 0 )
{
$firstrep = reset ( $array );
$pageid = $firstrep -> id ;
}
}
}
2016-05-01 21:19:29 +02:00
}
2016-05-07 16:38:32 +02:00
if ( empty ( $pageid ))
{
2018-10-14 18:44:29 +02:00
// Return header 404
header ( $_SERVER [ " SERVER_PROTOCOL " ] . " 404 Not Found " , true , 404 );
2017-07-03 02:09:14 +02:00
2018-10-14 18:44:29 +02:00
$langs -> load ( " website " );
2018-07-20 15:01:50 +02:00
2018-10-14 18:44:29 +02:00
if ( ! GETPOSTISSET ( 'pageref' )) print $langs -> trans ( " PreviewOfSiteNotYetAvailable " , $websitekey );
2017-07-03 02:09:14 +02:00
2018-10-14 18:44:29 +02:00
include DOL_DOCUMENT_ROOT . '/public/error-404.php' ;
exit ;
2016-05-07 16:38:32 +02:00
}
2016-05-01 16:34:50 +02:00
2018-10-14 18:44:29 +02:00
$appli = constant ( 'DOL_APPLICATION_TITLE' );
if ( ! empty ( $conf -> global -> MAIN_APPLICATION_TITLE )) $appli = $conf -> global -> MAIN_APPLICATION_TITLE ;
/*
* View
*/
//print 'Directory with '.$appli.' websites.<br>';
2016-05-01 16:34:50 +02:00
// Security: Delete string ../ into $original_file
global $dolibarr_main_data_root ;
2016-08-08 14:21:43 +02:00
if ( $pageid == 'css' ) // No more used ?
2016-05-01 16:34:50 +02:00
{
2016-05-07 16:38:32 +02:00
header ( 'Content-type: text/css' );
// Important: Following code is to avoid page request by browser and PHP CPU at each Dolibarr page access.
//if (empty($dolibarr_nocache)) header('Cache-Control: max-age=3600, public, must-revalidate');
2017-07-03 02:09:14 +02:00
//else
2016-05-07 16:38:32 +02:00
header ( 'Cache-Control: no-cache' );
2017-10-20 23:48:42 +02:00
$original_file = $dolibarr_main_data_root . '/website/' . $websitekey . '/styles.css.php' ;
2016-05-01 16:34:50 +02:00
}
else
{
2017-10-20 23:48:42 +02:00
$original_file = $dolibarr_main_data_root . '/website/' . $websitekey . '/page' . $pageid . '.tpl.php' ;
2016-05-01 16:34:50 +02:00
}
// Find the subdirectory name as the reference
$refname = basename ( dirname ( $original_file ) . " / " );
// Security:
// Limite acces si droits non corrects
if ( ! $accessallowed )
{
accessforbidden ();
}
// Security:
// On interdit les remontees de repertoire ainsi que les pipe dans
// les noms de fichiers.
if ( preg_match ( '/\.\./' , $original_file ) || preg_match ( '/[<>|]/' , $original_file ))
{
dol_syslog ( " Refused to deliver file " . $original_file );
$file = basename ( $original_file ); // Do no show plain path of original_file in shown error message
dol_print_error ( 0 , $langs -> trans ( " ErrorFileNameInvalid " , $file ));
exit ;
}
clearstatcache ();
$filename = basename ( $original_file );
// Output file on browser
dol_syslog ( " index.php include $original_file $filename content-type= $type " );
$original_file_osencoded = dol_osencode ( $original_file ); // New file name encoded in OS encoding charset
// This test if file exists should be useless. We keep it to find bug more easily
if ( ! file_exists ( $original_file_osencoded ))
{
2017-07-03 02:09:14 +02:00
// Return header 404
header ( $_SERVER [ " SERVER_PROTOCOL " ] . " 404 Not Found " , true , 404 );
2016-05-07 16:38:32 +02:00
$langs -> load ( " website " );
print $langs -> trans ( " RequestedPageHasNoContentYet " , $pageid );
2017-07-03 02:09:14 +02:00
include DOL_DOCUMENT_ROOT . '/public/error-404.php' ;
2016-05-01 16:34:50 +02:00
exit ;
}
2016-08-08 14:21:43 +02:00
// Output page content
2016-09-16 01:00:24 +02:00
define ( 'USEDOLIBARRSERVER' , 1 );
2017-08-21 04:17:28 +02:00
print '<!-- Page content ' . $original_file . ' rendered with DOLIBARR SERVER : Html with CSS link and html header + Body that was saved into tpl dir -->' . " \n " ;
2018-01-02 22:58:37 +01:00
include_once $original_file_osencoded ; // Note: The pageXXX.tpl.php showed here contains a formatage with dolWebsiteOutput() at end of page.
2016-08-08 14:21:43 +02:00
2016-05-01 16:34:50 +02:00
if ( is_object ( $db )) $db -> close ();