'');
$content['all_keywords'] = '';
$content['globalRT'] = array();
$content['aId_CpPage'] = 0; // set default content part pagination page (0 and 1) are the same
$content['CpTrigger'] = array(); // array to hold content part trigger functions
$content['404error'] = false;
$content['set_canonical'] = false;
$content['cptab'] = array(); // array to hold content part based tabs
$pagelayout = array();
$no_content_for_this_page = 0;
$alias = '';
$PERMIT_ACCESS = true; // by default set all content without permissions
$CUSTOM = array(); // var that holds result of content part "php var"
//method to get the right action values
//if there is only the ?alias try to find the right category
if(isset($_GET["id"])) {
$aktion = explode(',', $_GET["id"], 6);
$aktion[0] = intval($aktion[0]); //$aktion[0] will be always available
$aktion[1] = isset($aktion[1]) ? intval($aktion[1]) : 0;
$aktion[2] = isset($aktion[2]) ? intval($aktion[2]) : 0;
$aktion[3] = isset($aktion[3]) ? intval($aktion[3]) : 1;
$aktion[4] = isset($aktion[4]) ? intval($aktion[4]) : 0;
$aktion[5] = isset($aktion[5]) ? intval($aktion[5]) : 0;
// check if article category is given and available
if(!isset($content['struct'][ $aktion[0] ])) {
$aktion[0] = 0;
// OK in case not we should check if given article ID is correct
if($aktion[1]) {
$sql = 'SELECT article_id, article_cid FROM '.DB_PREPEND.'phpwcms_article WHERE ';
$sql .= 'article_deleted=0 AND article_aktiv=1 AND article_id='.$aktion[1].' LIMIT 1';
$aktion[1] = 0; //reset
if($result = mysql_query($sql, $db)) {
if($row = mysql_fetch_row($result)) {
$aktion[0] = $row[1];
$aktion[1] = $row[0];
}
mysql_free_result($result);
}
}
$GLOBALS['_getVar']['id'] = implode(',', $aktion);
headerRedirect(PHPWCMS_URL.'index.php'.returnGlobalGET_QueryString(), 404);
}
} elseif(isset($_GET['aid'])) {
// try to find correct structure
$aktion = array(0,0,0,0,1,0);
$_GET['aid'] = explode('-', $_GET['aid'], 2); // now check for cp pagination
$content['aId_CpPage'] = isset($_GET['aid'][1]) ? intval($_GET['aid'][1]) : 0; // set cp paginate page
$_GET['aid'] = intval($_GET['aid'][0]);
if($_GET['aid']) {
$sql = 'SELECT article_cid FROM '.DB_PREPEND.'phpwcms_article WHERE ';
$sql .= 'article_deleted=0 ';
if(VISIBLE_MODE !== 2) {
$sql .= 'AND article_aktiv=1 AND article_public=1 ';
} elseif(VISIBLE_MODE === 1) {
$sql .= 'AND article_uid='.intval($_SESSION["wcs_user_id"]).' ';
}
$sql .= 'AND article_id='.$_GET['aid'].' LIMIT 1';
if($result = mysql_query($sql, $db)) {
if($row = mysql_fetch_row($result)) {
$aktion[0] = $row[0];
$aktion[1] = $_GET['aid'];
} else {
$content['404error'] = true;
}
mysql_free_result($result);
} else {
$content['404error'] = true;
}
}
if(!$aktion[1]) {
$content['aId_CpPage'] = 0; // no article = no pagination
}
} else {
// check the alias
$aktion = array(0,0,0,1,0,0);
if(count($GLOBALS['_getVar'])) {
reset($GLOBALS['_getVar']);
$alias = trim(key($GLOBALS['_getVar']));
if($alias && $GLOBALS['_getVar'][$alias] === '') { // alias must be empty ""
$where_alias = aporeplace($alias);
// we have to check against MySQL < 4.0 -> UNION unknown
// so use a workaround
if(PHPWCMS_DB_VERSION < 40000) {
$sql = "SELECT acat_id, (0) AS article_id, 1 AS aktion3, 0 AS aktion4 FROM " . DB_PREPEND . "phpwcms_articlecat ";
$sql .= "WHERE acat_trash=0 AND acat_aktiv=1 AND acat_alias='" . $where_alias . "' LIMIT 1";
$row = _dbQuery($sql);
if(!isset($row[0]['acat_id'])) {
$sql = "SELECT article_cid AS acat_id, article_id, 0 AS aktion3, 1 AS aktion4 FROM " . DB_PREPEND . "phpwcms_article ";
$sql .= "WHERE article_deleted=0 AND article_aktiv=1 AND article_alias='" . $where_alias . "' LIMIT 1";
$row = _dbQuery($sql);
}
} else {
$sql = "(SELECT acat_id, (0) AS article_id, 1 AS aktion3, 0 AS aktion4 FROM " . DB_PREPEND . "phpwcms_articlecat ";
$sql .= "WHERE acat_trash=0 AND acat_aktiv=1 AND acat_alias='" . $where_alias . "')";
$sql .= " UNION ";
$sql .= "(SELECT article_cid AS acat_id, article_id, 0 AS aktion3, 1 AS aktion4 FROM " . DB_PREPEND . "phpwcms_article ";
$sql .= "WHERE article_deleted=0 AND article_aktiv=1 AND article_alias='" . $where_alias . "') ";
$sql .= "LIMIT 1";
$row = _dbQuery($sql);
}
if(isset($row[0]['acat_id'])) {
$aktion[0] = $row[0]['acat_id'];
$aktion[1] = $row[0]['article_id'];
$aktion[3] = $row[0]['aktion3'];
$aktion[4] = $row[0]['aktion4'];
define('PHPWCMS_ALIAS', $alias);
} elseif($alias == $indexpage['acat_alias']) {
define('PHPWCMS_ALIAS', $alias);
} else {
$content['404error'] = true;
}
}
}
}
if(isset($_GET['print'])) {
$aktion[2] = 1;
define('PRINT_PDF', intval($_GET['print']) == 2 ? true : false);
unset($_getVar['print'], $_GET['print']);
}
// define special OUTPUT format/action
$phpwcms['output_action'] = false;
if(!empty($_GET['phpwcms_output_action']) || !empty($_POST['phpwcms_output_action'])) {
// split by function - value: F-function1|function2|function3--S-SECT1|SECT2|SECT3
$phpwcms['output_action'] = explode('--', clean_slweg( empty($_GET['phpwcms_output_action']) ? $_POST['phpwcms_output_action'] : $_GET['phpwcms_output_action'] ));
unset(
$_GET['phpwcms_output_action'],
$_POST['phpwcms_output_action'],
$_getVar['phpwcms_output_action']
);
if(is_array($phpwcms['output_action'])) {
$phpwcms['output_function'] = array();
$phpwcms['output_section'] = array();
foreach($phpwcms['output_action'] as $value) {
$value = trim($value);
if($value{0} == 'F') {
$value = explode('|', substr($value, 2));
$output_key = 'output_function';
} elseif($value{0} == 'S') {
$value = explode('|', substr($value, 2));
$output_key = 'output_section';
} else {
continue;
}
if(is_array($value)) {
foreach($value as $_value) {
$_value = trim($_value);
if($_value != '') {
$phpwcms[$output_key][$_value] = $_value;
}
}
}
}
$phpwcms['output_action'] = count($phpwcms['output_function']) || count($phpwcms['output_section']) ? true : false;
} else {
$phpwcms['output_action'] = false;
}
}
//define the current article category ID
$content["cat_id"] = $aktion[0];
$content['body_id'] = $content["cat_id"];
// check if current level is a redirect level
if(!empty($content['struct'][ $content["cat_id"] ]['acat_redirect'])) {
$redirect = get_redirect_link( $content['struct'][ $content["cat_id"] ]['acat_redirect'] );
headerRedirect($redirect['link'], 301);
}
//try to find current tree depth
$LEVEL_ID = array();
$LEVEL_KEY = array();
$LEVEL_STRUCT = array();
$level_ID_array = get_breadcrumb($content["cat_id"], $content['struct']);
$level_count = 0;
foreach($level_ID_array as $key => $value) {
$LEVEL_ID[$level_count] = $key;
$LEVEL_KEY[$key] = $level_count;
$LEVEL_STRUCT[$level_count] = $content['struct'][$key]['acat_name'];
if($PERMIT_ACCESS && $content['struct'][$key]['acat_regonly']) {
$PERMIT_ACCESS = false; // only users have been logged in get access
}
$level_count++;
}
define('PERMIT_ACCESS', $PERMIT_ACCESS);
// frontend login check
_checkFrontendUserAutoLogin();
// -------------------------------------------------------------
// read the template information for page based on structure
if($content["struct"][ $content["cat_id"] ]["acat_template"]) {
//if there is a template defined for this structure level
//then choose the template information based on this ID
$sql = "SELECT template_var FROM ".DB_PREPEND."phpwcms_template WHERE template_trash=0 AND ";
$sql .= "template_id=".$content["struct"][ $content["cat_id"] ]["acat_template"]." LIMIT 1;";
if($result = mysql_query($sql, $db)) {
if($row = mysql_fetch_row($result)) {
$block = unserialize($row[0]);
}
mysql_free_result($result);
}
}
if(!isset($block)) {
// if template ID is not defined or the were a problem with level's template ID then
// choose the default template or if no default template defined choose the next one
$sql = "SELECT template_var FROM ".DB_PREPEND."phpwcms_template ";
$sql .= "WHERE template_trash=0 ORDER BY template_default DESC LIMIT 1;";
if($result = mysql_query($sql, $db)) {
if($row = mysql_fetch_row($result)) {
$block = unserialize($row[0]);
}
mysql_free_result($result);
}
}
// compatibility for older releases where only
// 1 css file could be stored per template
if(is_string($block['css'])) {
$block['css'] = array($block['css']);
}
// check if template_defaults should be overwritten
if(!empty($block['overwrite'])) {
$block['overwrite'] = str_replace('/', '', $block['overwrite']);
@include(PHPWCMS_TEMPLATE.'inc_settings/template_default/'.$block['overwrite']);
}
if(!empty($content['struct'][ $content['cat_id'] ]['acat_overwrite'])) {
$block['overwrite'] = str_replace('/', '', $content['struct'][ $content['cat_id'] ]['acat_overwrite']);
@include(PHPWCMS_TEMPLATE.'inc_settings/template_default/'.$block['overwrite']);
}
// load frontend JavaScript lib file
require PHPWCMS_ROOT.'/include/inc_front/js.inc.php';
// -------------------------------------------------------------
// retrieve pagelayout info
// check how the content should be rendered based on pagelayout render value
$block["layout"] = intval($block["layout"]);
$sql = "SELECT pagelayout_var FROM ".DB_PREPEND."phpwcms_pagelayout WHERE pagelayout_trash=0 ";
$sql .= $block["layout"] ? "AND pagelayout_id=".$block["layout"] : "ORDER BY pagelayout_default DESC";
$sql .= " LIMIT 1";
$result = _dbQuery($sql);
if(isset($result[0]['pagelayout_var'])) {
$pagelayout = @unserialize($result[0]['pagelayout_var']);
// if print action
if($aktion[2] === 1) {
$pagelayout = array('layout_title' => $pagelayout['layout_title'], 'layout_customblocks' => $pagelayout['layout_customblocks']);
}
}
if(empty($pagelayout)) {
// if no pagelayout could be found
die('There is no pagelayout available. Please login to the admin section and create one here !');
}
// Pagetitle
$content["pagetitle"] = empty($pagelayout["layout_title"]) ? '' : $pagelayout["layout_title"];
//generate the colspan attribute
$colspan = get_colspan($pagelayout);
// -------------------------------------------------------------
// now initialize content blocks like CONTENT, HEADER, LEFT, RIGHT, FOOTER
$content['main'] = ''; // {CONTENT}
$content['CB']['LEFT'] = ''; // {LEFT}
$content['CB']['RIGHT'] = ''; // {RIGHT}
$content['CB']['HEADER'] = ''; // {HEADER}
$content['CB']['FOOTER'] = ''; // {FOOTER}
// and try to add and initialize custom blocks
if(!empty($pagelayout['layout_customblocks'])) {
$custom_blocks = explode(', ', $pagelayout['layout_customblocks']);
foreach($custom_blocks as $value) {
if($value != '') $content['CB'][$value] = '';
}
unset($custom_blocks);
}
// -------------------------------------------------------------
// try to include custom functions or what ever you want to do at this point of the script
// default dir: "phpwcms_template/inc_script/frontend_init"; only *.php files are allowed there
if($phpwcms["allow_ext_init"]) {
if(count($custom_includes = get_tmpl_files(PHPWCMS_TEMPLATE.'inc_script/frontend_init', 'php'))) {
foreach($custom_includes as $value) {
include_once(PHPWCMS_TEMPLATE.'inc_script/frontend_init/'.$value);
}
}
}
// include custom frontend init scripts based on module definitions
if(count($phpwcms['modules_fe_init'])) {
foreach($phpwcms['modules_fe_init'] as $value) {
include_once($value);
}
}
// redirect to login form if user is not logged in and has no permission to access level
if(!PERMIT_ACCESS && !_getFeUserLoginStatus()) {
if(!empty($block['feloginurl'])) {
$template_default['login_form_url'] = str_replace('{SITE}', PHPWCMS_URL, $block['feloginurl']);
} elseif(empty($template_default['login_form_url'])) {
$template_default['login_form_url'] = PHPWCMS_URL;
}
// store current URL
$_SESSION['LOGIN_REDIRECT'] = decode_entities(FE_CURRENT_URL);
// redirect to login form
headerRedirect($template_default['login_form_url'], 401);
}
// -------------------------------------------------------------
//reads all articles for active cat into array
$content["articles"] = get_actcat_articles_data($content["cat_id"]);
$content["article_list_count"] = count($content["articles"]);
// -------------------------------------------------------------
// generating a list of articles inside the current article category
if(!$aktion[4]) {
if(!$content['404error'] && ($content["article_list_count"] || $content['struct'][ $content['cat_id'] ]['acat_topcount'] == -1)) {
if($content["article_list_count"] == 1 || $content['struct'][ $content['cat_id'] ]['acat_topcount'] == -1) {
// if($temp_counter == 1) {
// if only 1 article for this category available
// then show this article directly
// sets article ID to this only 1 article
foreach($content["articles"] as $key => $value) {
$aktion[1] = intval($key);
break;
}
$aktion[4] = 1; // this needs to be set to 1 for showing the article
// enable canonical tag
$content['set_canonical'] = true;
} else {
// there is more than 1 article inside this category
// -> list all - the 1st will be shown with summary and such stuff
$content["main"] .= list_articles_summary();
}
} else {
$no_content_for_this_page = 1;
}
} elseif($content["article_list_count"] === 1) {
// enable canonical tag
$content['set_canonical'] = true;
}
// -------------------------------------------------------------
// check if current category should be cached
if($content['struct'][$content['cat_id']]['acat_timeout'] != '') {
$phpwcms['cache_timeout'] = $content['struct'][$content['cat_id']]['acat_timeout'];
}
// set search status for current category
$cache_searchable = $content['struct'][$content['cat_id']]['acat_nosearch'];
// -------------------------------------------------------------
$content['list_mode'] = true;
if($aktion[1]) {
// render page based on article
include_once(PHPWCMS_ROOT."/include/inc_front/content.article.inc.php");
$content['list_mode'] = false;
} elseif(!empty($content['struct'][$content['cat_id']]['acat_pagetitle'])) {
// a custom pagetitle for structure level exists
$content["pagetitle"] = $content['struct'][$content['cat_id']]['acat_pagetitle'];
} else {
$content["pagetitle"] = setPageTitle($content["pagetitle"], $content['struct'][$content['cat_id']]['acat_name'], '');
}
// -------------------------------------------------------------
//check for no content error
$content["main"] = trim($content["main"]);
if($content['404error'] || $no_content_for_this_page || $content["main"] == '') {
header('HTTP/1.0 404 Not Found');
$content["main"] .= $block["errortext"];
}
// -------------------------------------------------------------
//check if one of needed block texts and values are empty and if then fill with content
if(!$block["maintext"]) {
$block["maintext"] = $content["main"];
}
// -------------------------------------------------------------
//normal page operation
if($aktion[2] == 0) {
switch($pagelayout["layout_render"]) {
case 0: //create the page layout table (header, left, content, right, footer)
$content["all"] = "
';
$pagelayout['additional_wrap_div'] = true;
break;
case 2: $content["all"] .= '
';
$pagelayout['additional_wrap_div'] = true;
break;
}
$content["all"] .= '
'.LF;
//header DIV
if($block["headertext"] || $pagelayout['layout_header_height']) {
$content["all"] .= ' \n";
}
//left DIV if 3column or 2column (with left block)
if($pagelayout["layout_type"] == 0 || $pagelayout["layout_type"] == 1) {
$content["all"] .= '
'.$block["lefttext"]."
\n";
}
//right DIV if 3column or 2column (with right block)
if($pagelayout["layout_type"] == 0 || $pagelayout["layout_type"] == 2) {
$content["all"] .= '
'.$block["righttext"]."
\n";
}
//main block
$content["all"] .= '
'.$block["maintext"]."
\n";
//footer DIV
if($block["footertext"] || $pagelayout['layout_footer_height']) {
$content["all"] .= ' \n";
}
//contentContainer DIV end
if($pagelayout['additional_wrap_div']) {
$content["all"] .= "
";
}
$content["all"] .= "
\n";
break;
case 2: //create the page layout based only on the content of main block
$content["all"] = $block["maintext"];
break;
}
} elseif ($aktion[2] == 1) {
//if print layout should be shown
$_print_tmpl = PRINT_PDF ? 'pdf' : 'print';
$content['all'] = is_file(PHPWCMS_TEMPLATE.'inc_default/'.$_print_tmpl.'.tmpl') ? @file_get_contents(PHPWCMS_TEMPLATE.'inc_default/'.$_print_tmpl.'.tmpl') : '{CONTENT}
{CURRENT_URL}';
if(PRINT_PDF) {
$_print_settings = get_tmpl_section('PDF_SETTINGS', $content['all']);
$content['all'] = replace_tmpl_section('PDF_SETTINGS', $content['all']);
$_print_settings = parse_ini_str($_print_settings, false);
}
if($content['all']) {
$content["all"] = str_replace('{CURRENT_URL}', PHPWCMS_URL.'index.php'.returnGlobalGET_QueryString('htmlentities'), $content["all"]);
$content["all"] = str_replace('{CONTENT}', $block["maintext"], $content["all"]);
} else {
$content['all'] = $block["maintext"];
}
}
// -------------------------------------------------------------
// Render possible PHP Values in category or article keyword field
$content["struct"][$aktion[0]]["acat_info"] = render_PHPcode($content["struct"][$aktion[0]]["acat_info"]);
if(!empty($content["articles"][$aktion[1]]["article_keyword"]) && strpos($content["articles"][$aktion[1]]["article_keyword"], 'PHP') !== FALSE) {
$content["articles"][$aktion[1]]["article_keyword"] = render_PHPcode($content["articles"][$aktion[1]]["article_keyword"]);
}
// -------------------------------------------------------------
// put in the complete rendered content
$content["all"] = str_replace('{CONTENT}', $content["main"], $content["all"]);
// put in custom rendered content
foreach($content['CB'] as $key => $value) {
//first check content of custom block in current template
if(isset($block['customblock_'.$key]) && $block['customblock_'.$key] !== '' && $value !== '') {
$value = str_replace('{'.$key.'}', $value, $block['customblock_'.$key]);
}
$content["all"] = str_replace('{'.$key.'}', $value, $content["all"]);
}
// render Tab replacement code
if(count($content['cptab'])) {
foreach($content['cptab'] as $CNT_TAB => $trow) {
$content['all'] = str_replace('', $trow, $content['all']);
}
}
// check layout for list mode sections or detail view
if(strpos($content['all'], '_LIST_MODE')) {
$content['all'] = replace_tmpl_section( ($content['list_mode'] ? 'ELSE_LIST_MODE' : 'IF_LIST_MODE') , $content['all']);
$content['all'] = str_replace(array('', '', '', ''), '', $content['all']);
}
// search for specific article ID and or category ID and replace it
$content['all'] = str_replace('{CURRENT_ARTICLEID}', $aktion[1], $content['all']);
$content['all'] = str_replace('{CURRENT_CATEGORYID}', $aktion[0], $content['all']);
// search for level related replacement tags and replace it, sample: {LEVEL2_ID}
$content['all'] = preg_replace_callback('/\{LEVEL(\d+)_ID\}/', 'replace_level_id', $content['all']);
// {SHOW_CONTENT:MODE,id[,id[,...]]}
if( ! ( strpos($content["all"],'{SHOW_CONTENT:')===false ) ) {
$content["all"] = preg_replace('/\{SHOW_CONTENT:(.*?)\}/e', 'showSelectedContent("$1");', $content["all"]);
}
// -------------------------------------------------------------
// include external PHP script (also normal HTML snippets) or return PHP var value
if(strpos($content["all"],'PHP') !== false) {
$content["all"] = render_PHPcode($content["all"]);
}
// -------------------------------------------------------------
//breadcrumb replacement
if(strpos($content["all"],'{BREADCRUMB') !== false) {
$content["all"] = str_replace('{BREADCRUMB}', '{BREADCRUMB:0}', $content["all"]);
$replace = 'breadcrumb($content["cat_id"], $content["struct"], $1, $template_default["breadcrumb_spacer"]);';
$content["all"] = preg_replace('/\{BREADCRUMB:(\d+)\}/e', $replace, $content["all"]);
}
// -------------------------------------------------------------
// Simple row based navigation
if(strpos($content["all"],'{NAV_ROW') !== false) {
$content["all"] = str_replace('{NAV_ROW}', nav_level_row(0), $content["all"]);
$content["all"] = preg_replace('/\{NAV_ROW:(\w+|\d+):(0|1)\}/e',"nav_level_row('$1',$2);",$content["all"]);
}
// -------------------------------------------------------------
// Simple Navigation table
if(strpos($content["all"],'{NAV_TABLE_SIMPLE}') !== false) {
$replace = nav_table_simple_struct($content["struct"], $content["cat_id"]);
$content["all"] = str_replace('{NAV_TABLE_SIMPLE}', $replace, $content["all"]);
}
// -------------------------------------------------------------
// Left table based rollover navigation
if(strpos($content["all"],'{NAV_TABLE_COLUMN') !== false) {
$content["all"] = str_replace('{NAV_TABLE_COLUMN}', '{NAV_TABLE_COLUMN:0}', $content["all"]);
$replace = 'nav_table_struct($content["struct"], $content["cat_id"], "$1", $template_default["nav_table_struct"]);';
$content["all"] = preg_replace('/\{NAV_TABLE_COLUMN:(\d+)\}/e', $replace, $content["all"]);
}
// -------------------------------------------------------------
// some list based navigations
if(strpos($content["all"],'{NAV_LIST') !== false) {
//reads all active category IDs beginning with the current cat ID - without HOME
$content["cat_path"] = get_active_categories($content["struct"], $content["cat_id"]);
// some general list replacements first
$content["all"] = str_replace('{NAV_LIST}', '{NAV_LIST:0}', $content["all"]);
$content["all"] = str_replace('{NAV_LIST_TOP}', css_level_list($content["struct"], $content["cat_path"], 0, '', 1), $content["all"]);
$content["all"] = str_replace('{NAV_LIST_CURRENT}', css_level_list($content["struct"],$content["cat_path"],$content["cat_id"]), $content["all"]);
// build complete menu structure starting at a specific ID
// {NAV_LIST_UL:Parameter} Parameter: "menu_type, start_id, class_path, class_active, ul_id_name"
$content["all"] = preg_replace('/\{NAV_LIST_UL:(.*?)\}/e', 'buildCascadingMenu("$1");', $content["all"]);
// list based navigation starting at given level
$replace = 'nav_list_struct($content["struct"],$content["cat_id"],"$1", "$2");';
$content["all"] = preg_replace('/\{NAV_LIST:(\d+):{0,1}(.*){0,1}\}/e', $replace, $content["all"]);
// List based navigation with Top Level - default settings
// creates a list styled top nav menu, + optional Home | {NAV_LIST_TOP:home_name:class_name} | default class name = list_top
$content["all"] = preg_replace('/\{NAV_LIST_TOP:(.*?):(.*?)\}/e', 'css_level_list($content["struct"], $content["cat_path"], 0, "$1", 1, "$2")', $content["all"]);
// List based navigation with Top Level - default settings
// creates a list styled nav menu of current level {NAV_LIST_CURRENT:1:back_name:class_name} | default class name = list_top
$content["all"] = preg_replace('/\{NAV_LIST_CURRENT:(\d+):(.*?):(.*?)\}/e', 'css_level_list($content["struct"],$content["cat_path"],$content["cat_id"],"$2","$1","$3")', $content["all"]);
}
// -------------------------------------------------------------
// date replacement
if(strpos($content["all"],'{DATE_') !== false) {
$content["all"] = str_replace('{DATE_LONG}', international_date_format($template_default["date"]["language"], $template_default["date"]["long"]), $content["all"]);
$content["all"] = str_replace('{DATE_MEDIUM}', international_date_format($template_default["date"]["language"], $template_default["date"]["medium"]), $content["all"]);
$content["all"] = str_replace('{DATE_SHORT}', international_date_format($template_default["date"]["language"], $template_default["date"]["short"]), $content["all"]);
$content["all"] = str_replace('{DATE_ARTICLE}', international_date_format($template_default["date"]["language"], $template_default["date"]["article"], $content["article_date"]), $content["all"]);
}
// -------------------------------------------------------------
// time replacement
if(strpos($content["all"],'{TIME_') !== false) {
$content["all"] = str_replace('{TIME_LONG}', date($template_default["time"]["long"]) , $content["all"] );
$content["all"] = str_replace('{TIME_SHORT}', date($template_default["time"]["short"]), $content["all"] );
$content["all"] = str_replace('{TIME_ARTICLE}', date($template_default["time"]["short"] , $content["article_date"]), $content["all"] );
}
// -------------------------------------------------------------
// replace custom search form input field and action with right target
if(strpos($content["all"],'###search_input_action') !== false) {
$content["all"] = str_replace('###search_input_field###', 'search_input_field', $content["all"]);
$content["all"] = str_replace('###search_input_value###', (empty($content["search_word"]) ? '' : $content["search_word"]), $content["all"]);
// create serahc form action
if(strpos($content["all"],'###search_input_action:') !== false) {
$content["all"] = preg_replace('/###search_input_action:(\d+)###/e','get_search_action("$1", $db);', $content["all"]);
}
}
// -------------------------------------------------------------
// related articles based on keywords, inspired by Magnar Stav Johanssen
if(strpos($content["all"],'{RELATED:') !== false) {
if (!$no_content_for_this_page && !empty($content["articles"][$aktion[1]]["article_keyword"])) {
$related_keywords = $content["articles"][$aktion[1]]["article_keyword"];
} else {
$related_keywords = '';
}
$content["all"] = preg_replace('/\{RELATED:(\d+)\}/e','get_related_articles($related_keywords,$aktion[1],$template_default["related"],"$1",$db);',$content["all"]);
$content["all"] = preg_replace('/\{RELATED:(\d+):(.*?)\}/e','get_related_articles("$2",$aktion[1],$template_default["related"],"$1",$db);',$content["all"]);
}
// -------------------------------------------------------------
// all new article list sorted by date
if(strpos($content["all"],'{NEW:') !== false) {
$content["all"] = preg_replace('/\{NEW:(\d+):{0,1}(\d+){0,1}\}/e','get_new_articles($template_default["news"],"$1","$2",$db);',$content["all"]);
}
// -------------------------------------------------------------
// some more general parsing
$content["all"] = str_replace('{SITE}', PHPWCMS_URL, $content["all"]);
$content["all"] = str_replace('{RSSIMG}', $template_default["rss"]["image"], $content["all"]);
$content["all"] = html_parser($content["all"]);
$content["all"] = preg_replace_callback('/\[img=(\d+)(.*?){0,1}\](.*?)\[\/img\]/i', 'parse_images', $content["all"]);
$content["all"] = preg_replace_callback('/\[img=(\d+)(.*?){0,1}\]/i', 'parse_images', $content["all"]);
$content["all"] = preg_replace_callback('/\[download=(.*?)\/\]/i', 'parse_downloads', $content["all"]);
$content["all"] = preg_replace_callback('/\[download=(.*?)\](.*?)\[\/download\]/is', 'parse_downloads', $content["all"]);
// -------------------------------------------------------------
// create link to articles for found keywords
$content["all"] = preg_replace('/\{KEYWORD:(.*?)\}/e', 'get_keyword_link("$1", $db);', $content["all"]);
//}
// -------------------------------------------------------------
// include external HTML page but only part between
$content["all"] = preg_replace_callback('/\{URL:(.*?)\}/i', 'include_url', $content["all"]);
// -------------------------------------------------------------
// special browse the content links: UP, NEXT, PREVIOUS
// echo get_index_link_up('UP')." | ".get_index_link_prev('PREV',1).' | '.get_index_link_next('NEXT',1);
if(strpos($content["all"],'{BROWSE:') !== false) {
$content["all"] = preg_replace('/\{BROWSE:UP:(.*?)\}/e','get_index_link_up("$1");',$content["all"]);
$content["all"] = preg_replace('/\{BROWSE:NEXT:(.*?):(0|1)\}/e','get_index_link_next("$1",$2);',$content["all"]);
$content["all"] = preg_replace('/\{BROWSE:PREV:(.*?):(0|1)\}/e','get_index_link_prev("$1",$2);',$content["all"]);
}
// -------------------------------------------------------------
// replace all "hardcoded" global replacement tags
if(count($content['globalRT'])) {
foreach($content['globalRT'] as $key => $value) {
if($key != '') {
$content["all"] = str_replace($key, $value, $content["all"]);
}
}
}
// -------------------------------------------------------------
// add possible redirection code (article summary) to $block["htmlhead"];
$block["htmlhead"] = $content["redirect"]["code"] . render_PHPcode($block["htmlhead"]) . LF;
// -------------------------------------------------------------
if(!defined('PHPWCMS_ALIAS')) {
define('PHPWCMS_ALIAS', empty($content['struct'][ $content["cat_id"] ]['acat_alias']) ? '' : $content['struct'][ $content["cat_id"] ]['acat_alias'] );
}
// try to include custom functions and replacement tags or what you want to do at this point of the script
// default dir: "phpwcms_template/inc_script/frontend_render"; only *.php files are allowed there
if($phpwcms["allow_ext_render"]) {
if(count($custom_includes = get_tmpl_files(PHPWCMS_TEMPLATE.'inc_script/frontend_render', 'php'))) {
foreach($custom_includes as $value) {
include_once(PHPWCMS_TEMPLATE.'inc_script/frontend_render/'.$value);
}
}
}
if(count($phpwcms['modules_fe_render'])) {
foreach($phpwcms['modules_fe_render'] as $value) {
include_once($value);
}
}
// render frontend edit related content and JavaScript
if(FE_EDIT_LINK) {
init_frontend_edit_js();
$content['all'] .= LF . '
' . LF;
}
// insert description meta tag if not definied
if(empty($block['custom_htmlhead']['meta.description']) && !empty($content["struct"][$aktion[0]]["acat_info"]) && !stristr($block["htmlhead"], '"description"')) {
set_meta('description', $content["struct"][$aktion[0]]["acat_info"]);
}
// add structure level keywords
if(!empty($content['struct'][ $content["cat_id"] ]['acat_keywords'])) {
$content['all_keywords'] .= ', ' . $content['struct'][ $content["cat_id"] ]['acat_keywords'];
}
// insert keywords meta tag if not yet definied
if(empty($block['custom_htmlhead']['meta.keywords']) && !empty($content['all_keywords']) && !stristr($block["htmlhead"], '"keywords"')) {
$content['all_keywords'] = convertStringToArray($content['all_keywords']);
if(count($content['all_keywords'])) {
set_meta('keywords', implode(', ', $content['all_keywords']));
}
}
// replace Print URL
if(strpos($content["all"], '[PRINT]') !== false) {
$content["all"] = str_replace('[PRINT]', '
', $content["all"]);
$content["all"] = str_replace('[/PRINT]', ' ', $content["all"]);
}
if(strpos($content["all"], '[PRINT_PDF]') !== false) {
$content["all"] = str_replace('[PRINT_PDF]', '
', $content["all"]);
$content["all"] = str_replace('[/PRINT_PDF]', ' ', $content["all"]);
}
// Jérôme's Graphical Text MOD Coypright (C) 2004
if($phpwcms["gt_mod"]) { //enabled/disable GT MOD
require_once ('include/inc_module/mod_graphical_text/inc_front/gt.func.inc.php');
}
// some article related "global" replacement tags
if(isset($content['article_livedate'])) {
$content['all'] = render_cnt_template($content['all'], 'AUTHOR', html_specialchars($content['article_username']));
$content['all'] = render_cnt_date($content['all'], $content["article_date"], $content['article_livedate'], $content['article_killdate']);
$content['all'] = render_cnt_template($content['all'], 'CATEGORY', $content['cat']);
} else {
$content['all'] = render_cnt_template($content['all'], 'AUTHOR', '');
$content['all'] = render_cnt_date($content['all'], now(), now(), now());
$content['all'] = render_cnt_template($content['all'], 'CATEGORY', html_specialchars($content['struct'][ $content['cat_id'] ]['acat_name']));
}
// -------------------------------------------------------------
// render JavaScript Plugins and/or JavaScript scripts that should be loaded in
$content['all'] = preg_replace_callback('//i', 'renderHeadJS', $content['all']);
// test for frontend.js
if(!isset($GLOBALS['block']['custom_htmlhead']['frontend.js']) && preg_match('/MM_swapImage|BookMark_Page|clickZoom|mailtoLink/', $content['all'])) {
initFrontendJS();
}
//check for additional template based onLoad JavaScript Code
if($block["jsonload"]) {
if(empty($pagelayout["layout_jsonload"])) {
$pagelayout["layout_jsonload"] = '';
} else {
$pagelayout["layout_jsonload"] .= ';';
}
$pagelayout["layout_jsonload"] = convertStringToArray($pagelayout["layout_jsonload"] . $block["jsonload"], ';');
$block['js_ondomready'][] = ' ' . implode(';'.LF.' ', $pagelayout["layout_jsonload"]) . ';';
$pagelayout["layout_jsonload"] = '';
}
// set OnLoad (DomReady) JavaScript
if(count($block['js_ondomready'])) {
jsOnDomReady(implode(LF, $block['js_ondomready']));
}
// set OnUnLoad JavaScript
if(count($block['js_onunload'])) {
jsOnUnLoad(implode(LF, $block['js_onunload']));
}
// set Inline JS
if(count($block['js_inline'])) {
$block['custom_htmlhead']['inline'] = ' ';
}
// new $block['custom_htmlhead'] var (array) for usage in own rendering stuff.
// you will be able to use $GLOBALS['block']['custom_htmlhead']['myheadname']
// always check if you want to use same head code only once
if(count($block['custom_htmlhead'])) {
$block["htmlhead"] .= implode(LF, $block['custom_htmlhead']).LF;
}
if(!empty($_GET['highlight'])) {
$highlight_words = clean_slweg(rawurldecode($_GET['highlight']));
$highlight_words = explode(' ', $highlight_words);
$content['all'] = preg_replace_callback("/(.*?)/si", "pregReplaceHighlightWrapper", $content['all']);
}
$content['all'] = str_replace(array('', ''), '', $content['all']);
// render content part pagination
if(!empty($_CpPaginate)) {
$content['all'] = str_replace(array('', ''), '', $content['all']);
unset($_getVar['aid'], $_getVar['id']);
$content['CpPaginateNaviGET'] = returnGlobalGET_QueryString('htmlentities', array(), defined('PHPWCMS_ALIAS') ? array(PHPWCMS_ALIAS) : array());
if(!empty($content['CpPaginateNaviGET']) && $content['CpPaginateNaviGET']{0} == '?') {
$content['CpPaginateNaviGET'] = '&'.substr($content['CpPaginateNaviGET'], 1);
}
// first build [1][2][3] paginate pages
if(strpos($content['all'], '{CP_PAGINATE}')) {
$content['CpPaginateNavi'] = array();
foreach($content['CpPages'] as $key => $value) {
$content['CpPaginateNavi'][ $key ] = '
'.$value.' ';
}
$content['all'] = render_cnt_template($content['all'], 'CP_PAGINATE', implode(LF, $content['CpPaginateNavi']));
}
// is there PREV
if(in_array($content['CpPages'][ $content['aId_CpPage'] ] - 1, $content['CpPages'])) {
$key = array_search($content['CpPages'][ $content['aId_CpPage'] ] - 1, $content['CpPages']);
$value = 'index.php?aid='.$aktion[1];
if($key) { $value .= '-'.$key; }
$content['all'] = render_cnt_template($content['all'], 'CP_PAGINATE_PREV', $value);
} else {
$content['all'] = render_cnt_template($content['all'], 'CP_PAGINATE_PREV');
}
// is there NEXT
if(in_array($content['CpPages'][ $content['aId_CpPage'] ] + 1, $content['CpPages'])) {
$key = array_search($content['CpPages'][ $content['aId_CpPage'] ] + 1, $content['CpPages']);
$value = 'index.php?aid='.$aktion[1];
if($key) { $value .= '-'.$key; }
$content['all'] = render_cnt_template($content['all'], 'CP_PAGINATE_NEXT', $value);
} else {
$content['all'] = render_cnt_template($content['all'], 'CP_PAGINATE_NEXT');
}
// search for content part pagination title menu
if(strpos($content['all'], '[CP_PAGINATE_MENU')) {
/**
* search for custom cp menu parameters
*
* [0] => item_prefix
* [1] => item_suffix
* [2] => active_class
* [3] => hide_active
* [4] => menu_prefix
* [5] => menu_suffix
*/
if( preg_match('/\[CP_PAGINATE_MENU:(.*?)\]/', $content['all'], $match) ) {
$content['all'] = str_replace($match[0], '[CP_PAGINATE_MENU]', $content['all']);
$content['CpTitleParams'] = explode('|', $match[1]);
if(!isset($content['CpTitleParams'][1])) {
$content['CpTitleParams'][1] = '';
}
$content['CpTitleParams'][2] = empty($content['CpTitleParams'][2]) ? '' : trim($content['CpTitleParams'][2]);
$content['CpTitleParams'][3] = empty($content['CpTitleParams'][3]) ? 0 : 1 ;
$content['CpTitleParams'][4] = '';
$content['CpTitleParams'][5] = '';
} else {
$content['CpTitleParams'][0] = '
';
$content['CpTitleParams'][1] = ' ';
$content['CpTitleParams'][2] = 'active';
$content['CpTitleParams'][3] = 0;
$content['CpTitleParams'][4] = '';
}
$content['CpTitleMenu'] = array();
// cp menu items
foreach($content['CpPageTitles'] as $key => $value) {
$content['CpItem'] = '
';
$content['CpTitleMenu'][] = $content['CpTitleParams'][0] . $content['CpItem'] . $content['CpTitleParams'][1];
}
// cp menu prefix/suffix
if(count($content['CpTitleMenu'])) {
$content['CpTitleMenu'][] = $content['CpTitleParams'][5];
array_unshift($content['CpTitleMenu'], $content['CpTitleParams'][4]);
}
$content['all'] = render_cnt_template($content['all'], 'CP_PAGINATE_MENU', implode(LF, $content['CpTitleMenu']));
}
} elseif(strpos($content['all'], 'CP_PAGINATE')) {
// remove CP_paginate block
$content['all'] = replace_tmpl_section('CP_PAGINATE', $content['all']);
}
// check if print mode - then try to replace "no-print" sections from source
if(strpos($content['all'], '--NO_PRINT')) {
if($aktion[2] == 1) {
$content['all'] = replace_tmpl_section('NO_PRINT', $content['all']);
$block['css'] = array('print_layout.css');
} else {
$content['all'] = str_replace(array('', ''), '', $content['all']);
}
}
// now clean up special sections in case user is logged in OR not
if(strpos($content['all'], '--LOGGED_')) {
if( _getFeUserLoginStatus() ) {
// if user IS logged in
$content['all'] = str_replace(array('', ''), '', $content['all']);
$content['all'] = replace_tmpl_section('LOGGED_OUT', $content['all']);
} else {
// user is NOT logged
$content['all'] = str_replace(array('', ''), '', $content['all']);
$content['all'] = replace_tmpl_section('LOGGED_IN', $content['all']);
}
}
$content['all'] = preg_replace_callback('/\[HTML\](.*?)\[\/HTML\]/s', 'convert2html', $content['all'] );
$content['all'] = preg_replace_callback('/\[HTML_SPECIAL\](.*?)\[\/HTML_SPECIAL\]/s', 'convert2htmlspecialchars' , $content['all'] );
// cleanup document to enhance XHTML Strict compatibility
if($phpwcms['mode_XHTML'] == 2) {
$content['all'] = preg_replace(array('/ border="[0-9]+?"/', '/ target=".+?"/'), '', $content['all'] );
}
// remove all useless replacement tags
$content["pagetitle"] = sanitize_replacement_tags($content["pagetitle"]);
// now we should search all ?aid=123 and/or ?id=123 and replace'em by the real alias if available
$match = array();
preg_match_all('/index.php\?(aid|id)=([\d\,]+)(["|&])/', $content['all'], $match);
if( isset($match[1]) && isset($match[2]) ) {
$all_id = array();
$sql_id = '';
$all_aid = array();
$sql_aid = '';
$old_style = false;
foreach($match[2] as $key => $value) {
if($match[1][$key] == 'id') {
if(strpos($match[2][$key], ',')) {
$old_style = true;
$this_id = 0;
$this_aid = 0;
list($this_id, $this_aid) = explode(',', $match[2][$key]);
if( $this_aid = intval($this_aid) ) {
$all_aid[ $this_aid ] = $this_aid;
} elseif( $this_id = intval($this_id) ) {
$all_id[ $this_id ] = $this_id;
}
} else {
$all_id[ $match[2][$key] ] = $match[2][$key];
}
} else {
$all_aid[ $match[2][$key] ] = $match[2][$key];
}
}
if(count($all_id)) {
$sql_id = "SELECT 'id' AS alias_type, acat_id AS id, 0 AS aid, acat_alias AS alias FROM ".DB_PREPEND.'phpwcms_articlecat ';
$sql_id .= 'WHERE acat_id IN (' . implode(',', $all_id) . ") AND acat_alias != ''";
}
if(count($all_aid)) {
$sql_aid = "SELECT 'aid' AS alias_type, article_cid AS id, article_id AS aid, article_alias AS alias FROM ".DB_PREPEND.'phpwcms_article ';
$sql_aid .= 'WHERE article_id IN (' . implode(',', $all_aid) . ") AND article_alias != ''";
}
if($sql_id && $sql_aid) {
$sql = '(' . $sql_id . ') UNION (' . $sql_aid . ')';
} else {
$sql = $sql_id . $sql_aid ;
}
$match = _dbQuery($sql);
if(isset($match[0])) {
foreach($match as $value) {
$value['alias'] = html_specialchars($value['alias']);
if($value['alias_type'] == 'id') {
$content['all'] = str_replace('index.php?id=' . $value['id'] . '"', 'index.php?' . $value['alias'] . '"', $content['all']);
$content['all'] = str_replace('index.php?id=' . $value['id'] . '&', 'index.php?' . $value['alias'] . '&', $content['all']);
} else {
$content['all'] = str_replace('index.php?aid=' . $value['aid'] . '"', 'index.php?' . $value['alias'] . '"', $content['all']);
$content['all'] = str_replace('index.php?aid=' . $value['aid'] . '&', 'index.php?' . $value['alias'] . '&', $content['all']);
}
// search also for id=0,0,...
if( $old_style == true ) {
$value['id'] = $value['id'] . ',' . $value['aid'] . ',0,1,0,0';
$content['all'] = str_replace('index.php?id=' . $value['id'] . '"', 'index.php?' . $value['alias'] . '"', $content['all']);
$content['all'] = str_replace('index.php?id=' . $value['id'] . '&', 'index.php?' . $value['alias'] . '&', $content['all']);
}
}
}
}
// Global parsing for i18 @@Text@@ replacements
if(!empty($phpwcms['i18n_parse'])) {
$content['all'] = i18n_substitute_text($content['all']);
$content["pagetitle"] = i18n_substitute_text($content['pagetitle']);
}
?>