{{indexmenu_n>500}}
====== RELATEDX ======
===== {RELATEDX:list count : keywords : cat-ID} =====
Enhanced by KH (flip-flop)
Docu: [[http://www.phpwcms-docu.de/link_tags.phtml]]
Forum: --
Tag: **{RELATEDX:list_count : keywords : category-ID}** is a "cut out frontend snippet" enhanced for a search below a given level. You can use it e.g. for multilingual sites.
Up to **version 1.21** no articles will be searched in hidden categories, from **version 1.3**, this can be set in the script.
Formatting and Sorting is set in the section ##%%// related articles based on keywords%%## in the file **config/phpwcms/conf.template_default.inc.php**.
\\
Filename: **rt_relatedx.php**
Location: **/template/inc_script/frontend_render/rt_relatedx.php**
**Condition:** ##$phpwcms['allow_ext_render'] = 1;## -> [[http://www.phpwcms-docu.de/confincphp_de.phtml|/config/phpwcms/conf.inc.php]]
----
----
\\
Please always fill out all fields: e.g. \\
* **{RELATEDX:0:tip,top,flip,flop:0}** -> //Search beginning at cad-ID=0 = home//
* **{RELATEDX:5:tip,top,flip,flop:2}** -> //Output of first 5 entries, search beginning at cad-ID=2//
E.g.:
Given structure
------------------------------------
L E V E L
.: : : :
.0 1 2 3 <- LEVEL-Nr.
.: : : :
-+ home : ID=0
-+--+ category_01 ID=01
-+--+ category_02 ID=02
-+--+--+ category_02_01 ID=04
-+--+--+--+ category_02_01_01 ID=06
-+--+--+--+ category_02_01_02 ID=07
-+--+--+ category_02_01 ID=05
-+--+--+ category_02_02 ID=08
-+--+ category_03 ID=03
-+--+ category_04 ID=09
.: : : :
.0 1 2 3 <- LEVEL Nr.
------------------------------------
**{RELATEDX:5:tip,top,flip,flop:2}** -> Output: The title link of the first five visible keyword matching articles, at non hidden category_02 (ID=2). //("not hidden" see note above and V1.3)//.
\\
==== V 1.0 ====
20.01.11 KH Update: Errors have been corrected.
**Please use since r400 the new version 1.1 !!**
Search beginning behind cad-ID=0 = home
{RELATEDX:5:tip,top,flip,flop:2} -> Output first 5 entries, search beginning behind cad-ID=2
*************************************************************************************/
// ----------------------------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day.");}
// ----------------------------------------------------------------------------------
// related articles based on keywords, inspired by Magnar Stav Johanssen
if(strpos($content["all"],'{RELATEDX:') !== 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('/\{RELATEDX:(\d+):(.*?):(\d+)\}/e','my_get_related_articles("$2",$GLOBALS["aktion"][1],$GLOBALS["template_default"]["related"],"$1",$GLOBALS["db"], "$3");',$content["all"]);
function buildStruct_TopDown($start=0) {
static $my_cat_id = '';
$struct = getStructureChildData($start);
foreach($struct as $value) {
buildStruct_TopDown($value['acat_id']);
$my_cat_id .= $my_cat_id != '' ? ','.$value['acat_id'] : $value['acat_id'];
// echo '||'.$value['acat_id'].' ,';
}
return $my_cat_id;
}
// =================================================================
function my_get_related_articles($keywords, $current_article_id, $template_default, $max_cnt_links=0, $dbcon ,$cat_id) {
// find keyword for current article used for RELATED replacementtag
// prepared and inspired by Magnar Stav Johanssen
$cat_id = buildStruct_TopDown($cat_id); // find all permitted IDs behind $cat_id
$keyword_links = "";
$max_cnt_links = intval($max_cnt_links);
$keywords = str_replace("ALLKEYWORDS", $GLOBALS['content']['all_keywords'].',', $keywords);
// replace unwanted chars and convert to wanted
$keywords = str_replace(";", ",", $keywords);
$keywords = str_replace("'", "", $keywords);
$keywords = str_replace(" ", ",", $keywords);
$keywords = str_replace(",,", ",", $keywords);
// choose comma separated keywords
$keywordarray = explode (",", $keywords);
$keywordarray = array_map('trim', $keywordarray);
$keywordarray = array_diff($keywordarray, array(''));
$keywordarray = array_unique($keywordarray);
$keywordarray = array_map('strtoupper', $keywordarray);
// check for empty keywords or keywords smaller than 3 chars
if(is_array($keywordarray) && count($keywordarray)) {
foreach($keywordarray as $key => $value) {
if(substr($keywordarray[$key], 0, 1) == '-') {
$doNotUse = substr($keywordarray[$key], 1);
foreach($keywordarray as $key2 => $value2) {
if($doNotUse == $value2) {
unset($keywordarray[$key2]);
unset($keywordarray[$key]);
}
}
}
if(isset($keywordarray[$key]) && (strlen($keywordarray[$key]) < 3 || empty($keywordarray[$key]))) {
unset($keywordarray[$key]);
}
}
}
if(is_array($keywordarray) && count($keywordarray)) {
$where = "";
foreach($keywordarray as $value) {
//build where keyword = blabla
$where .= ($where) ? " OR " : "";
//replace every "'" to "''" for security reasons with aporeplace()
$where .= "article_keyword LIKE '%".aporeplace($value)."%'";
}
$limit = ($max_cnt_links) ? " LIMIT ".$max_cnt_links : "";
$sql = "SELECT article_id, article_title, article_cid, article_subtitle, article_summary, article_alias ";
$sql .= "FROM ".DB_PREPEND."phpwcms_article WHERE article_deleted=0 AND ";
$sql .= "article_id<>".intval($current_article_id)." AND ";
$sql .= "article_cid IN (".$cat_id.") AND ";
// VISIBLE_MODE: 0 = frontend (all) mode, 1 = article user mode, 2 = admin user mode
switch(VISIBLE_MODE) {
case 0: $sql .= "article_public=1 AND article_aktiv=1 AND ";
break;
case 1: $sql .= "article_uid=".$_SESSION["wcs_user_id"]." AND ";
break;
//case 2: admin mode no additional neccessary
}
$sql .= "article_begin < NOW() AND article_end > NOW() AND (".$where.") ";
if(empty($template_default['sort_by'])) $template_default['sort_by'] = '';
switch($template_default['sort_by']) {
case 'title_asc':
$sql .= "ORDER BY article_title";
break;
case 'title_desc':
$sql .= "ORDER BY article_title DESC";
break;
case 'ldate_asc':
$sql .= "ORDER BY article_begin";
break;
case 'ldate_desc':
$sql .= "ORDER BY article_begin DESC";
break;
case 'kdate_asc':
$sql .= "ORDER BY article_end";
break;
case 'kdate_desc':
$sql .= "ORDER BY article_end DESC";
break;
case 'cdate_asc':
$sql .= "ORDER BY article_created";
break;
case 'cdate_desc':
$sql .= "ORDER BY article_created DESC";
break;
default:
$sql .= "ORDER BY article_tstamp DESC";
}
$sql .= $limit;
// related things
$target = ($template_default["link_target"]) ? ' target="'.$template_default["link_target"].'"' : "";
if($result = _dbQuery($sql)) {
$count_results = count($result);
$count = 0;
foreach($result as $value) {
$count++;
if($template_default["link_length"] && strlen($value['article_title']) > $template_default["link_length"]) {
$article_title = substr($value['article_title'], 0, $template_default["link_length"]).$template_default["cut_title_add"];
} else {
$article_title = $value['article_title'];
}
$keyword_links .= $template_default["link_before"].$template_default["link_symbol"];
$keyword_links .= '".html_specialchars($article_title)."";
//try to remove possible unwanted after - if not enclosed before.link.after
if($keyword_links && !$template_default["link_before"] && $count < $count_results) {
$keyword_links .= $template_default["link_after"];
}
}
}
}
//enclose whole
if($keyword_links) $keyword_links = $template_default["before"].$keyword_links.$template_default["after"];
return $keyword_links;
}
$content["all"] = preg_replace('/\{RELATEDX:(\d+)\}/e','get_related_articles($related_keywords,$aktion[1],$template_default["related"],"$1",$db);',$content["all"]);
$content["all"] = preg_replace('/\{RELATEDX:(\d+):(.*?):(\d+)\}/e','my_get_related_articles("$2",$aktion[1],$template_default["related"],"$1",$db, "$3");',$content["all"]);
}
?>
\\
==== V 1.1 ====
20.01.11 KH changed: (r400: [[http://code.google.com/p/phpwcms/source/detail?r=400&path=/trunk/include/inc_front/front.func.inc.php|Solve redirect problem with {NEW:..} and {RELATED:...}]]) \\
22.01.11 KH Update: The root category is now included in the result. If this doesn't fit your needs, please uncomment the line after ##%%// PATCH01%%##. \\
25.01.11 KH Update: Error correction in funktion [[english/technics/internal-function-call/category-top-down|buildStruct_TopDown]]. With more than one RT call, the old (previous) data of the first RT were available again for the following RTs.
Search beginning behind cad-ID=0 = home
{RELATEDX:5:tip,top,flip,flop:2} -> Output first 5 entries, search beginning behind cad-ID=2
V 1.1
20.01.11 KH - Update: Last version don´t work right in newer CMS vrsions (since r400).
http://code.google.com/p/phpwcms/source/detail?r=400&path=/trunk/include/inc_front/front.func.inc.php
22.01.11 KH : Start category in result
25.01.11 KH : Error correction in function buildStruct_TopDown
*************************************************************************************/
// ----------------------------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day.");}
// ----------------------------------------------------------------------------------
// related articles based on keywords, inspired by Magnar Stav Johanssen
if(strpos($content["all"],'{RELATEDX:') !== 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 = '';
}
// -------------------------------------------------------------
function buildStruct_TopDown($start=0, &$my_cat_id='') { // KH: V1.1 25.01.2011
$struct = getStructureChildData($start);
foreach($struct as $value) {
// buildStruct_TopDown($value['acat_id'],$my_cat_id);
$my_cat_id .= ($my_cat_id != '') ? ','.$value['acat_id'] : $value['acat_id'];
buildStruct_TopDown($value['acat_id'],$my_cat_id);
// echo '||'.$value['acat_id'].' ,';
}
return $my_cat_id;
}
// =================================================================
function my_get_related_articles($keywords, $current_article_id, $template_default, $max_cnt_links=0, $dbcon ,$cat_id) {
// find keyword for current article used for RELATED replacementtag
// prepared and inspired by Magnar Stav Johanssen
$temp = buildStruct_TopDown($cat_id); // find all permitted IDs behind $cat_id
if (!empty($temp)) $cat_id = $cat_id.','.$temp; // +KH: 20.01.11 add start category
// PATCH01
// $cat_id = $temp; // If you don´t need the start cat in result
$keyword_links = "";
$max_cnt_links = intval($max_cnt_links);
$keywords = str_replace("ALLKEYWORDS", $GLOBALS['content']['all_keywords'].',', $keywords);
// replace unwanted chars and convert to wanted
$keywords = str_replace(";", ",", $keywords);
$keywords = str_replace("'", "", $keywords);
$keywords = str_replace(" ", ",", $keywords);
$keywords = str_replace(",,", ",", $keywords);
// choose comma separated keywords
$keywordarray = explode (",", $keywords);
$keywordarray = array_map('trim', $keywordarray);
$keywordarray = array_diff($keywordarray, array(''));
$keywordarray = array_unique($keywordarray);
$keywordarray = array_map('strtoupper', $keywordarray);
// check for empty keywords or keywords smaller than 3 chars
if(is_array($keywordarray) && count($keywordarray)) {
foreach($keywordarray as $key => $value) {
if(substr($keywordarray[$key], 0, 1) == '-') {
$doNotUse = substr($keywordarray[$key], 1);
foreach($keywordarray as $key2 => $value2) {
if($doNotUse == $value2) {
unset($keywordarray[$key2]);
unset($keywordarray[$key]);
}
}
}
if(isset($keywordarray[$key]) && (strlen($keywordarray[$key]) < 3 || empty($keywordarray[$key]))) {
unset($keywordarray[$key]);
}
}
}
if(is_array($keywordarray) && count($keywordarray)) {
$where = "";
foreach($keywordarray as $value) {
//build where keyword = blabla
$where .= ($where) ? " OR " : "";
//replace every "'" to "''" for security reasons with aporeplace()
$where .= "article_keyword LIKE '%".aporeplace($value)."%'";
}
$limit = ($max_cnt_links) ? " LIMIT ".$max_cnt_links : "";
// -KH:200111
// $sql = "SELECT article_id, article_title, article_cid, article_subtitle, article_summary, article_alias ";
// +KH:200111
$sql = "SELECT article_id, article_title, article_cid, article_subtitle, article_summary, article_alias, article_redirect, article_morelink ";
$sql .= "FROM ".DB_PREPEND."phpwcms_article WHERE article_deleted=0 AND ";
$sql .= "article_id<>".intval($current_article_id)." AND ";
$sql .= "article_cid IN (".$cat_id.") AND ";
// VISIBLE_MODE: 0 = frontend (all) mode, 1 = article user mode, 2 = admin user mode
switch(VISIBLE_MODE) {
case 0: $sql .= "article_public=1 AND article_aktiv=1 AND ";
break;
case 1: $sql .= "article_uid=".$_SESSION["wcs_user_id"]." AND ";
break;
//case 2: admin mode no additional neccessary
}
$sql .= "article_begin < NOW() AND article_end > NOW() AND (".$where.") ";
if(empty($template_default['sort_by'])) $template_default['sort_by'] = '';
switch($template_default['sort_by']) {
case 'title_asc':
$sql .= "ORDER BY article_title";
break;
case 'title_desc':
$sql .= "ORDER BY article_title DESC";
break;
case 'ldate_asc':
$sql .= "ORDER BY article_begin";
break;
case 'ldate_desc':
$sql .= "ORDER BY article_begin DESC";
break;
case 'kdate_asc':
$sql .= "ORDER BY article_end";
break;
case 'kdate_desc':
$sql .= "ORDER BY article_end DESC";
break;
case 'cdate_asc':
$sql .= "ORDER BY article_created";
break;
case 'cdate_desc':
$sql .= "ORDER BY article_created DESC";
break;
default:
$sql .= "ORDER BY article_tstamp DESC";
}
$sql .= $limit;
// related things
$target = $template_default["link_target"] ? ' target="'.$template_default["link_target"].'"' : '';
$result = _dbQuery($sql);
if(isset($result[0])) {
foreach($result as $row) {
if(empty($row['article_redirect'])) {
if(empty($row['article_morelink'])) {
continue;
}
$article_link = 'index.php?'.setGetArticleAid($row).'"'.$target;
} else {
$redirect = get_redirect_link($row['article_redirect'], ' ', '');
$article_link = $redirect['link'].'"'.$redirect['target'];
}
if($template_default["link_length"] && strlen($row['article_title']) > $template_default["link_length"]) {
$article_title = substr($row['article_title'], 0, $template_default["link_length"]).$template_default["cut_title_add"];
} else {
$article_title = $row['article_title'];
}
$keyword_links .= $template_default["link_before"];
$keyword_links .= $template_default["link_symbol"];
$keyword_links .= '
\\
==== V 1.2 ====
27.01.11 KH Update: Expanded for the output of the article creation date.
To activate this feature, two options are available.
* In the script within the range **"CUSTOM VAR"** set up the var **$date_form** with appropriate php-date notation.
* In the file **conf_template_default.inc.php** create the var **$template_default['related']['date_format']** and set up with appropriate php-date notation.
{{:english:phpwcms_replacer_rts:frontend_render:relatedx_fe_1.gif: }}
// CUSTOM VAR ========================== +KH: 27.01.11
// Article date created
// Set in conf_template_default.inc.php e.g: $template_default['related']['date_format'] = 'd.m.Y';
// or set up the var $date_form
$date_form = 'd.m.Y'; // '';
$date_form_before = ' [';
$date_form_after = ']';
// =====================================
{{:english:phpwcms_replacer_rts:frontend_render:relatedx0_fe_1.gif }}
// CUSTOM VAR ========================== +KH: 27.01.11
// Article date created
// Set in conf_template_default.inc.php e.g: $template_default['related']['date_format'] = 'd.m.Y';
// or set up the var $date_form
$date_form = ''; // 'd.m.Y';
$date_form_before = ' [';
$date_form_after = ']';
// =====================================
\\
Search beginning behind cad-ID=0 = home
{RELATEDX:5:tip,top,flip,flop:2} -> Output first 5 entries, search beginning behind cad-ID=2
V 1.1
20.01.11 KH - Update: Last version don´t work right in newer CMS vrsions (since r400).
http://code.google.com/p/phpwcms/source/detail?r=400&path=/trunk/include/inc_front/front.func.inc.php
22.01.11 KH : Start category in result
V 1.2
27.01.11 KH - Update: Added "article creaded date" -> see CUSTOM VAR
*************************************************************************************/
// ----------------------------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day.");}
// ----------------------------------------------------------------------------------
// related articles based on keywords, inspired by Magnar Stav Johanssen
if(strpos($content["all"],'{RELATEDX:') !== false) {
// CUSTOM VAR ========================== +KH: 27.01.11
// Article date created
// Set in conf_template_default.inc.php e.g: $template_default['related']['date_format'] = 'd.m.Y';
// or set up in var $date_form
$date_form = ''; // 'd.m.Y';
$date_form_before = ' [';
$date_form_after = ']';
// =====================================
$date_form = (!isset($template_default['related']['date_format'])) ? $date_form : $template_default['related']['date_format']; // +KH: 27.01.11
if (!$no_content_for_this_page && !empty($content["articles"][$aktion[1]]["article_keyword"])) {
$related_keywords = $content["articles"][$aktion[1]]["article_keyword"];
} else {
$related_keywords = '';
}
// -------------------------------------------------------------
function buildStruct_TopDown($start=0, &$my_cat_id='') { // KH: V1.1 25.01.2011
$struct = getStructureChildData($start);
foreach($struct as $value) {
// buildStruct_TopDown($value['acat_id'],$my_cat_id);
$my_cat_id .= ($my_cat_id != '') ? ','.$value['acat_id'] : $value['acat_id'];
buildStruct_TopDown($value['acat_id'],$my_cat_id);
// echo '||'.$value['acat_id'].' ,';
}
return $my_cat_id;
}
// =================================================================
function my_get_related_articles($keywords='', $current_article_id=0, $template_default='', $max_cnt_links=10, $dbcon ,$cat_id='',$date_form, $date_form_before, $date_form_after) {
// find keyword for current article used for RELATED replacementtag
// prepared and inspired by Magnar Stav Johanssen
$temp = buildStruct_TopDown($cat_id); // find all permitted IDs behind $cat_id
if (!empty($temp)) $cat_id = $cat_id.','.$temp; // +KH: 20.01.11 add start category
// PATCH01
// $cat_id = $temp; // If you don´t need the start cat in result
$keyword_links = "";
$max_cnt_links = intval($max_cnt_links);
$keywords = str_replace("ALLKEYWORDS", $GLOBALS['content']['all_keywords'].',', $keywords);
// replace unwanted chars and convert to wanted
$keywords = str_replace(";", ",", $keywords);
$keywords = str_replace("'", "", $keywords);
$keywords = str_replace(" ", ",", $keywords);
$keywords = str_replace(",,", ",", $keywords);
// choose comma separated keywords
$keywordarray = explode (",", $keywords);
$keywordarray = array_map('trim', $keywordarray);
$keywordarray = array_diff($keywordarray, array(''));
$keywordarray = array_unique($keywordarray);
$keywordarray = array_map('strtoupper', $keywordarray);
// check for empty keywords or keywords smaller than 3 chars
if(is_array($keywordarray) && count($keywordarray)) {
foreach($keywordarray as $key => $value) {
if(substr($keywordarray[$key], 0, 1) == '-') {
$doNotUse = substr($keywordarray[$key], 1);
foreach($keywordarray as $key2 => $value2) {
if($doNotUse == $value2) {
unset($keywordarray[$key2]);
unset($keywordarray[$key]);
}
}
}
if(isset($keywordarray[$key]) && (strlen($keywordarray[$key]) < 3 || empty($keywordarray[$key]))) {
unset($keywordarray[$key]);
}
}
}
if(is_array($keywordarray) && count($keywordarray)) {
$where = "";
foreach($keywordarray as $value) {
//build where keyword = blabla
$where .= ($where) ? " OR " : "";
//replace every "'" to "''" for security reasons with aporeplace()
$where .= "article_keyword LIKE '%".aporeplace($value)."%'";
}
$limit = ($max_cnt_links) ? " LIMIT ".$max_cnt_links : "";
// -KH:200111
// $sql = "SELECT article_id, article_title, article_cid, article_subtitle, article_summary, article_alias ";
// +KH:200111
$sql = "SELECT article_id, article_title, article_cid, article_subtitle, article_summary, article_alias, article_redirect, article_morelink, article_created ";
$sql .= "FROM ".DB_PREPEND."phpwcms_article WHERE article_deleted=0 AND ";
$sql .= "article_id<>".intval($current_article_id)." AND ";
$sql .= "article_cid IN (".$cat_id.") AND ";
// VISIBLE_MODE: 0 = frontend (all) mode, 1 = article user mode, 2 = admin user mode
switch(VISIBLE_MODE) {
case 0: $sql .= "article_public=1 AND article_aktiv=1 AND ";
break;
case 1: $sql .= "article_uid=".$_SESSION["wcs_user_id"]." AND ";
break;
//case 2: admin mode no additional neccessary
}
$sql .= "article_begin < NOW() AND article_end > NOW() AND (".$where.") ";
if(empty($template_default['sort_by'])) $template_default['sort_by'] = '';
switch($template_default['sort_by']) {
case 'title_asc':
$sql .= "ORDER BY article_title";
break;
case 'title_desc':
$sql .= "ORDER BY article_title DESC";
break;
case 'ldate_asc':
$sql .= "ORDER BY article_begin";
break;
case 'ldate_desc':
$sql .= "ORDER BY article_begin DESC";
break;
case 'kdate_asc':
$sql .= "ORDER BY article_end";
break;
case 'kdate_desc':
$sql .= "ORDER BY article_end DESC";
break;
case 'cdate_asc':
$sql .= "ORDER BY article_created";
break;
case 'cdate_desc':
$sql .= "ORDER BY article_created DESC";
break;
default:
$sql .= "ORDER BY article_tstamp DESC";
}
$sql .= $limit;
// related things
$target = $template_default["link_target"] ? ' target="'.$template_default["link_target"].'"' : '';
$result = _dbQuery($sql);
if(isset($result[0])) {
foreach($result as $row) {
if(empty($row['article_redirect'])) {
if(empty($row['article_morelink'])) {
continue;
}
$article_link = 'index.php?'.setGetArticleAid($row).'"'.$target;
} else {
$redirect = get_redirect_link($row['article_redirect'], ' ', '');
$article_link = $redirect['link'].'"'.$redirect['target'];
}
if($template_default["link_length"] && strlen($row['article_title']) > $template_default["link_length"]) {
$article_title = substr($row['article_title'], 0, $template_default["link_length"]).$template_default["cut_title_add"];
} else {
$article_title = $row['article_title'];
}
$keyword_links .= $template_default["link_before"];
$keyword_links .= $template_default["link_symbol"];
$keyword_links .= '
\\
==== V 1.21 ====
25.04.11 KH Update: Selection whether **no article date** or the **article date of creation** or the **article editing date** are spent.
To activate this feature, two options are available:
* In the script within the range **"CUSTOM VAR"** set up the var **$date_form** with appropriate php-date notation.
* In the file **conf_template_default.inc.php** create the var **$template_default['related']['date_format']** and set up with appropriate php-date notation.
In addition the output of the date can be suppressed by registered php-date notation with ##$date_output = 0;##.
\\
{{:english:phpwcms_replacer_rts:frontend_render:relatedx_fe_1.gif: }}
// CUSTOM VAR ========================== +KH: 27.01.11
// Article date created or arcticle date changed (+KH 25.04.2011)
// Set in conf_template_default.inc.php e.g: $template_default['related']['date_format'] = 'd.m.Y';
// or set up the var $date_form
$date_output = 2; // [0|1|2] No date | date created | date changed // +KH: 25.04.11
$date_form = 'd.m.Y'; // 'Y/m/d';
$date_form_before = ' [';
$date_form_after = ']';
// =====================================
{{:english:phpwcms_replacer_rts:frontend_render:relatedx0_fe_1.gif }}
// CUSTOM VAR ========================== +KH: 27.01.11
// Article date created or arcticle date changed (+KH 25.04.2011)
// Set in conf_template_default.inc.php e.g: $template_default['related']['date_format'] = 'd.m.Y';
// or set up the var $date_form
$date_output = 0; // [0|1|2] No date | date created | date changed // +KH: 25.04.11
$date_form = 'd.m.Y'; // 'Y/m/d';
$date_form_before = ' [';
$date_form_after = ']';
// =====================================
\\
Search beginning behind cad-ID=0 = home
{RELATEDX:5:tip,top,flip,flop:2} -> Output first 5 entries, search beginning behind cad-ID=2
V 1.1
20.01.11 KH - Update: Last version don´t work right in newer CMS vrsions (since r400).
http://code.google.com/p/phpwcms/source/detail?r=400&path=/trunk/include/inc_front/front.func.inc.php
22.01.11 KH : Start category in result
V 1.2
27.01.11 KH - Update: Added "article creaded date" -> see CUSTOM VAR
V 1.21
25.04.11 KH - Update: Added "article changed date" -> see CUSTOM VAR
Added: Output selection switch for article [date creaded | date changed]
*************************************************************************************/
// ----------------------------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day.");}
// ----------------------------------------------------------------------------------
// related articles based on keywords, inspired by Magnar Stav Johanssen
if(strpos($content["all"],'{RELATEDX:') !== false) {
// CUSTOM VAR ========================== +KH: 27.01.11
// Article date created or arcticle date changed (+KH 25.04.2011)
// Set in conf_template_default.inc.php e.g: $template_default['related']['date_format'] = 'd.m.Y';
// or set up in var $date_form
$date_output = 2; // [0|1|2] No date | date created | date changed // +KH: 25.04.11
$date_form = 'd.m.Y'; // 'd.m.Y';
$date_form_before = ' [';
$date_form_after = ']';
// =====================================
$date_form = (!isset($template_default['related']['date_format'])) ? $date_form : $template_default['related']['date_format']; // +KH: 27.01.11
if (!$no_content_for_this_page && !empty($content["articles"][$aktion[1]]["article_keyword"])) {
$related_keywords = $content["articles"][$aktion[1]]["article_keyword"];
} else {
$related_keywords = '';
}
// -------------------------------------------------------------
function buildStruct_TopDown($start=0, &$my_cat_id='') { // KH: V1.1 25.01.2011
$struct = getStructureChildData($start);
foreach($struct as $value) {
// buildStruct_TopDown($value['acat_id'],$my_cat_id);
$my_cat_id .= ($my_cat_id != '') ? ','.$value['acat_id'] : $value['acat_id'];
buildStruct_TopDown($value['acat_id'],$my_cat_id);
// echo '||'.$value['acat_id'].' ,';
}
return $my_cat_id;
}
// =================================================================
function my_get_related_articles($keywords='', $current_article_id=0, $template_default='', $max_cnt_links=10, $dbcon ,$cat_id='', $date_output, $date_form, $date_form_before, $date_form_after) {
// find keyword for current article used for RELATED replacementtag
// prepared and inspired by Magnar Stav Johanssen
$temp = buildStruct_TopDown($cat_id); // find all permitted IDs behind $cat_id
if (!empty($temp)) $cat_id = $cat_id.','.$temp; // +KH: 20.01.11 add start category
// PATCH01
// $cat_id = $temp; // If you don´t need the start cat in result
$keyword_links = "";
$max_cnt_links = intval($max_cnt_links);
$keywords = str_replace("ALLKEYWORDS", $GLOBALS['content']['all_keywords'].',', $keywords);
// replace unwanted chars and convert to wanted
$keywords = str_replace(";", ",", $keywords);
$keywords = str_replace("'", "", $keywords);
$keywords = str_replace(" ", ",", $keywords);
$keywords = str_replace(",,", ",", $keywords);
// choose comma separated keywords
$keywordarray = explode (",", $keywords);
$keywordarray = array_map('trim', $keywordarray);
$keywordarray = array_diff($keywordarray, array(''));
$keywordarray = array_unique($keywordarray);
$keywordarray = array_map('strtoupper', $keywordarray);
// check for empty keywords or keywords smaller than 3 chars
if(is_array($keywordarray) && count($keywordarray)) {
foreach($keywordarray as $key => $value) {
if(substr($keywordarray[$key], 0, 1) == '-') {
$doNotUse = substr($keywordarray[$key], 1);
foreach($keywordarray as $key2 => $value2) {
if($doNotUse == $value2) {
unset($keywordarray[$key2]);
unset($keywordarray[$key]);
}
}
}
if(isset($keywordarray[$key]) && (strlen($keywordarray[$key]) < 3 || empty($keywordarray[$key]))) {
unset($keywordarray[$key]);
}
}
}
if(is_array($keywordarray) && count($keywordarray)) {
$where = "";
foreach($keywordarray as $value) {
//build where keyword = blabla
$where .= ($where) ? " OR " : "";
//replace every "'" to "''" for security reasons with aporeplace()
$where .= "article_keyword LIKE '%".aporeplace($value)."%'";
}
$limit = ($max_cnt_links) ? " LIMIT ".$max_cnt_links : "";
// -KH:200111
// $sql = "SELECT article_id, article_title, article_cid, article_subtitle, article_summary, article_alias ";
// +KH:200111
$sql = "SELECT article_id, article_title, article_cid, article_subtitle, article_summary, article_alias, article_redirect, article_morelink, article_created, UNIX_TIMESTAMP(article_tstamp) as article_changed ";
$sql .= "FROM ".DB_PREPEND."phpwcms_article WHERE article_deleted=0 AND ";
$sql .= "article_id<>".intval($current_article_id)." AND ";
$sql .= "article_cid IN (".$cat_id.") AND ";
// VISIBLE_MODE: 0 = frontend (all) mode, 1 = article user mode, 2 = admin user mode
switch(VISIBLE_MODE) {
case 0: $sql .= "article_public=1 AND article_aktiv=1 AND ";
break;
case 1: $sql .= "article_uid=".$_SESSION["wcs_user_id"]." AND ";
break;
//case 2: admin mode no additional neccessary
}
$sql .= "article_begin < NOW() AND article_end > NOW() AND (".$where.") ";
if(empty($template_default['sort_by'])) $template_default['sort_by'] = '';
switch($template_default['sort_by']) {
case 'title_asc':
$sql .= "ORDER BY article_title";
break;
case 'title_desc':
$sql .= "ORDER BY article_title DESC";
break;
case 'ldate_asc':
$sql .= "ORDER BY article_begin";
break;
case 'ldate_desc':
$sql .= "ORDER BY article_begin DESC";
break;
case 'kdate_asc':
$sql .= "ORDER BY article_end";
break;
case 'kdate_desc':
$sql .= "ORDER BY article_end DESC";
break;
case 'cdate_asc':
$sql .= "ORDER BY article_created";
break;
case 'cdate_desc':
$sql .= "ORDER BY article_created DESC";
break;
default:
$sql .= "ORDER BY article_tstamp DESC";
}
$sql .= $limit;
// related things
$target = $template_default["link_target"] ? ' target="'.$template_default["link_target"].'"' : '';
$result = _dbQuery($sql);
if(isset($result[0])) {
foreach($result as $row) {
if(empty($row['article_redirect'])) {
if(empty($row['article_morelink'])) {
continue;
}
$article_link = 'index.php?'.setGetArticleAid($row).'"'.$target;
} else {
$redirect = get_redirect_link($row['article_redirect'], ' ', '');
$article_link = $redirect['link'].'"'.$redirect['target'];
}
if($template_default["link_length"] && strlen($row['article_title']) > $template_default["link_length"]) {
$article_title = substr($row['article_title'], 0, $template_default["link_length"]).$template_default["cut_title_add"];
} else {
$article_title = $row['article_title'];
}
$keyword_links .= $template_default["link_before"];
$keyword_links .= $template_default["link_symbol"];
$keyword_links .= '
\\
==== V 1.3 ====
27.04.11 KH Update: Choice whether Article Keywords will be searched in hidden categories or not.
$show_hidden = 1; // Suche [0] = nicht in versteckten Kategorien [1] = in allen Kategorien
\\
**03.05.11 KH Update:** Error correction in the function call "buildStruct_TopDown"
\\
// CUSTOM VAR ========================== +KH: 27.01.11
// Article date created or arcticle date changed (+KH 25.04.2011)
// Set in conf_template_default.inc.php e.g: $template_default['related']['date_format'] = 'd.m.Y';
// or set up the var $date_form
$date_output = 2; // [0|1|2] No date | date created | date changed // +KH: 25.04.11
$date_form = 'd.m.Y'; // '';
$date_form_before = ' [';
$date_form_after = ']';
$show_hidden = 1; // search in [0] = no hidden categories [1] = all categories
// =====================================
\\
Search beginning behind cad-ID=0 = home
{RELATEDX:5:tip,top,flip,flop:2} -> Output first 5 entries, search beginning behind cad-ID=2
V 1.1
20.01.11 KH - Update: Last version don´t work right in newer CMS vrsions (since r400).
http://code.google.com/p/phpwcms/source/detail?r=400&path=/trunk/include/inc_front/front.func.inc.php
22.01.11 KH : Start category in result
V 1.2
27.01.11 KH - Update: Added "article creaded date" -> see CUSTOM VAR
V 1.21
25.04.11 KH - Update: Added "article changed date" -> see CUSTOM VAR
Added: Output selection switch for article [date creaded | date changed]
V 1.3
27.04.11 KH - Update: Added "show article in hidden categories" -> see CUSTOM VAR
Added: Output selection switch for article in [no hidden categories | all categories]
03.05.11 KH - Update: Error correction in the function call "buildStruct_TopDown"
*************************************************************************************/
// ----------------------------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day.");}
// ----------------------------------------------------------------------------------
// related articles based on keywords, inspired by Magnar Stav Johanssen
if(strpos($content["all"],'{RELATEDX:') !== false) {
// CUSTOM VAR ========================== +KH: 27.01.11
// Article date created or arcticle date changed (+KH 25.04.2011)
// Set in conf_template_default.inc.php e.g: $template_default['related']['date_format'] = 'd.m.Y';
// or set up in var $date_form
$date_output = 2; // [0|1|2] No date | date created | date changed // +KH: 25.04.11
$date_form = 'd.m.Y'; // '';
$date_form_before = ' [';
$date_form_after = ']';
$show_hidden = 1; // search in [0] = no hidden categories [1] = all categories
// =====================================
$date_form = (!isset($template_default['related']['date_format'])) ? $date_form : $template_default['related']['date_format']; // +KH: 27.01.11
if (!$no_content_for_this_page && !empty($content["articles"][$aktion[1]]["article_keyword"])) {
$related_keywords = $content["articles"][$aktion[1]]["article_keyword"];
} else {
$related_keywords = '';
}
// -------------------------------------------------------------
// Function imported from /include/inc_front/front.func.inc.php -> line 3305
// Added KH 27.04.2011: Var $show_hidden
function my_getStructureLevelDisplayStatus(&$level_ID, &$current_ID, $show_hidden=1) {
if($GLOBALS['content']['struct'][$level_ID]['acat_struct'] == $current_ID && $level_ID) {
if($GLOBALS['content']['struct'][$level_ID]['acat_regonly'] && !FEUSER_LOGIN_STATUS) {
return false;
}
// Added KH 27.04.2011: OR xxxx = Show_hidden
if(empty($GLOBALS['content']['struct'][$level_ID]['acat_hidden']) OR $GLOBALS['content']['struct'][$level_ID]['acat_hidden']==$show_hidden) {
return true;
} elseif($GLOBALS['content']['struct'][$level_ID]["acat_hidden"] == 2 && isset($GLOBALS['LEVEL_KEY'][$level_ID])) {
return true;
}
return false;
}
return false;
}
function buildStruct_TopDown($start=0, &$my_cat_id='',$show_hidden=1) { // KH: V1.1 25.01.2011
// Original from: function my_getStructureChildData($level_id=0) +KH 27.04.2011
$struct_data = array();
if( isset($GLOBALS['content']['struct'][$start]) ) {
foreach($GLOBALS['content']['struct'] as $key => $value) {
if( my_getStructureLevelDisplayStatus($key, $start,$show_hidden) ) {
$struct_data[$key] = $value;
}
}
}
$struct = $struct_data;
foreach($struct as $value) {
$my_cat_id .= ($my_cat_id != '') ? ','.$value['acat_id'] : $value['acat_id'];
buildStruct_TopDown($value['acat_id'],$my_cat_id,$show_hidden);
// echo '||'.$value['acat_id'].' ,';
}
return $my_cat_id;
}
// =================================================================
function my_get_related_articles($keywords='', $current_article_id=0, $template_default='', $max_cnt_links=10, $dbcon ,$cat_id='', $date_output, $date_form, $date_form_before, $date_form_after,$show_hidden) {
// find keyword for current article used for RELATED replacementtag
// prepared and inspired by Magnar Stav Johanssen
$dummy = '';
$temp = buildStruct_TopDown($cat_id,$dummy,$show_hidden); // find all permitted IDs behind $cat_id
if (!empty($temp)) $cat_id = $cat_id.','.$temp; // +KH: 20.01.11 add start category
// PATCH01
// $cat_id = $temp; // If you don´t need the start cat in result
$keyword_links = "";
$max_cnt_links = intval($max_cnt_links);
$keywords = str_replace("ALLKEYWORDS", $GLOBALS['content']['all_keywords'].',', $keywords);
// replace unwanted chars and convert to wanted
$keywords = str_replace(";", ",", $keywords);
$keywords = str_replace("'", "", $keywords);
$keywords = str_replace(" ", ",", $keywords);
$keywords = str_replace(",,", ",", $keywords);
// choose comma separated keywords
$keywordarray = explode (",", $keywords);
$keywordarray = array_map('trim', $keywordarray);
$keywordarray = array_diff($keywordarray, array(''));
$keywordarray = array_unique($keywordarray);
$keywordarray = array_map('strtoupper', $keywordarray);
// check for empty keywords or keywords smaller than 3 chars
if(is_array($keywordarray) && count($keywordarray)) {
foreach($keywordarray as $key => $value) {
if(substr($keywordarray[$key], 0, 1) == '-') {
$doNotUse = substr($keywordarray[$key], 1);
foreach($keywordarray as $key2 => $value2) {
if($doNotUse == $value2) {
unset($keywordarray[$key2]);
unset($keywordarray[$key]);
}
}
}
if(isset($keywordarray[$key]) && (strlen($keywordarray[$key]) < 3 || empty($keywordarray[$key]))) {
unset($keywordarray[$key]);
}
}
}
if(is_array($keywordarray) && count($keywordarray)) {
$where = "";
foreach($keywordarray as $value) {
//build where keyword = blabla
$where .= ($where) ? " OR " : "";
//replace every "'" to "''" for security reasons with aporeplace()
$where .= "article_keyword LIKE '%".aporeplace($value)."%'";
}
$limit = ($max_cnt_links) ? " LIMIT ".$max_cnt_links : "";
// -KH:200111
// $sql = "SELECT article_id, article_title, article_cid, article_subtitle, article_summary, article_alias ";
// +KH:200111
$sql = "SELECT article_id, article_title, article_cid, article_subtitle, article_summary, article_alias, article_redirect, article_morelink, article_created, UNIX_TIMESTAMP(article_tstamp) AS article_changed ";
$sql .= "FROM ".DB_PREPEND."phpwcms_article WHERE article_deleted=0 AND ";
$sql .= "article_id<>".intval($current_article_id)." AND ";
$sql .= "article_cid IN (".$cat_id.") AND ";
// VISIBLE_MODE: 0 = frontend (all) mode, 1 = article user mode, 2 = admin user mode
switch(VISIBLE_MODE) {
case 0: $sql .= "article_public=1 AND article_aktiv=1 AND ";
break;
case 1: $sql .= "article_uid=".$_SESSION["wcs_user_id"]." AND ";
break;
//case 2: admin mode no additional neccessary
}
$sql .= "article_begin < NOW() AND article_end > NOW() AND (".$where.") ";
if(empty($template_default['sort_by'])) $template_default['sort_by'] = '';
switch($template_default['sort_by']) {
case 'title_asc':
$sql .= "ORDER BY article_title";
break;
case 'title_desc':
$sql .= "ORDER BY article_title DESC";
break;
case 'ldate_asc':
$sql .= "ORDER BY article_begin";
break;
case 'ldate_desc':
$sql .= "ORDER BY article_begin DESC";
break;
case 'kdate_asc':
$sql .= "ORDER BY article_end";
break;
case 'kdate_desc':
$sql .= "ORDER BY article_end DESC";
break;
case 'cdate_asc':
$sql .= "ORDER BY article_created";
break;
case 'cdate_desc':
$sql .= "ORDER BY article_created DESC";
break;
default:
$sql .= "ORDER BY article_tstamp DESC";
}
$sql .= $limit;
// related things
$target = $template_default["link_target"] ? ' target="'.$template_default["link_target"].'"' : '';
$result = _dbQuery($sql);
if(isset($result[0])) {
foreach($result as $row) {
// echo 'Article ===========';
if(empty($row['article_redirect'])) {
if(empty($row['article_morelink'])) {
continue;
}
$article_link = 'index.php?'.setGetArticleAid($row).'"'.$target;
} else {
$redirect = get_redirect_link($row['article_redirect'], ' ', '');
$article_link = $redirect['link'].'"'.$redirect['target'];
}
if($template_default["link_length"] && strlen($row['article_title']) > $template_default["link_length"]) {
$article_title = substr($row['article_title'], 0, $template_default["link_length"]).$template_default["cut_title_add"];
} else {
$article_title = $row['article_title'];
}
$keyword_links .= $template_default["link_before"];
$keyword_links .= $template_default["link_symbol"];
$keyword_links .= '
\\
\\
==== V 1.31 ====
**27.09.12 KH Update:** Sorts the articles in the category for manual order.
In the file ##config\phpwcms\conf.template_default.inc.php## in section **%%// related articles based on keywords%%** please set
$template_default['related']['sort_by'] = 'sort_asc|sort_desc';
\\
Search beginning behind cad-ID=0 = home
{RELATEDX:5:tip,top,flip,flop:2} -> Output first 5 entries, search beginning behind cad-ID=2
V 1.1
20.01.11 KH - Update: Last version don´t work right in newer CMS vrsions (since r400).
http://code.google.com/p/phpwcms/source/detail?r=400&path=/trunk/include/inc_front/front.func.inc.php
22.01.11 KH : Start category in result
V 1.2
27.01.11 KH - Update: Added "article creaded date" -> see CUSTOM VAR
V 1.21
25.04.11 KH - Update: Added "article changed date" -> see CUSTOM VAR
Added: Output selection switch for article [date creaded | date changed]
V 1.3
27.04.11 KH - Update: Added "show article in hidden categories" -> see CUSTOM VAR
Added: Output selection switch for article in [no hidden categories | all categories]
03.05.11 KH - Update: Error correction in the function call "buildStruct_TopDown"
V 1.31
27.09.12 KH - Update: Added: Sorts the articles in the category for manual order.
*************************************************************************************/
// ----------------------------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day.");}
// ----------------------------------------------------------------------------------
// related articles based on keywords, inspired by Magnar Stav Johanssen
if(strpos($content["all"],'{RELATEDX:') !== false) {
// CUSTOM VAR ========================== +KH: 27.01.11
// Article date created or arcticle date changed (+KH 25.04.2011)
// Set in conf_template_default.inc.php e.g: $template_default['related']['date_format'] = 'd.m.Y';
// or set up in var $date_form
$date_output = 2; // [0|1|2] No date | date created | date changed // +KH: 25.04.11
$date_form = 'd.m.Y'; // '';
$date_form_before = ' [';
$date_form_after = ']';
$show_hidden = 1; // search in [0] = no hidden categories [1] = all categories
// =====================================
$date_form = (!isset($template_default['related']['date_format'])) ? $date_form : $template_default['related']['date_format']; // +KH: 27.01.11
if (!$no_content_for_this_page && !empty($content["articles"][$aktion[1]]["article_keyword"])) {
$related_keywords = $content["articles"][$aktion[1]]["article_keyword"];
} else {
$related_keywords = '';
}
// -------------------------------------------------------------
// Function imported from /include/inc_front/front.func.inc.php -> line 3305
// Added KH 27.04.2011: Var $show_hidden
function my1_getStructureLevelDisplayStatus(&$level_ID, &$current_ID, $show_hidden=1) {
if($GLOBALS['content']['struct'][$level_ID]['acat_struct'] == $current_ID && $level_ID) {
if($GLOBALS['content']['struct'][$level_ID]['acat_regonly'] && !FEUSER_LOGIN_STATUS) {
return false;
}
// Added KH 27.04.2011: OR xxxx = Show_hidden
if(empty($GLOBALS['content']['struct'][$level_ID]['acat_hidden']) OR $GLOBALS['content']['struct'][$level_ID]['acat_hidden']==$show_hidden) {
return true;
} elseif($GLOBALS['content']['struct'][$level_ID]["acat_hidden"] == 2 && isset($GLOBALS['LEVEL_KEY'][$level_ID])) {
return true;
}
return false;
}
return false;
}
function buildStruct_TopDown($start=0, &$my_cat_id='',$show_hidden=1) { // KH: V1.1 25.01.2011
// Original from: function my_getStructureChildData($level_id=0) +KH 27.04.2011
$struct_data = array();
if( isset($GLOBALS['content']['struct'][$start]) ) {
foreach($GLOBALS['content']['struct'] as $key => $value) {
if( my1_getStructureLevelDisplayStatus($key, $start,$show_hidden) ) {
$struct_data[$key] = $value;
}
}
}
$struct = $struct_data;
foreach($struct as $value) {
$my_cat_id .= ($my_cat_id != '') ? ','.$value['acat_id'] : $value['acat_id'];
buildStruct_TopDown($value['acat_id'],$my_cat_id,$show_hidden);
// echo '||'.$value['acat_id'].' ,';
}
return $my_cat_id;
}
// =================================================================
function my_get_related_articles($keywords='', $current_article_id=0, $template_default='', $max_cnt_links=10, $dbcon ,$cat_id='', $date_output, $date_form, $date_form_before, $date_form_after,$show_hidden) {
// find keyword for current article used for RELATED replacementtag
// prepared and inspired by Magnar Stav Johanssen
$dummy = '';
$temp = buildStruct_TopDown($cat_id,$dummy,$show_hidden); // find all permitted IDs behind $cat_id
if (!empty($temp)) $cat_id = $cat_id.','.$temp; // +KH: 20.01.11 add start category
// PATCH01
// $cat_id = $temp; // If you don´t need the start cat in result
$keyword_links = "";
$max_cnt_links = intval($max_cnt_links);
$keywords = str_replace("ALLKEYWORDS", $GLOBALS['content']['all_keywords'].',', $keywords);
// replace unwanted chars and convert to wanted
$keywords = str_replace(";", ",", $keywords);
$keywords = str_replace("'", "", $keywords);
$keywords = str_replace(" ", ",", $keywords);
$keywords = str_replace(",,", ",", $keywords);
// choose comma separated keywords
$keywordarray = explode (",", $keywords);
$keywordarray = array_map('trim', $keywordarray);
$keywordarray = array_diff($keywordarray, array(''));
$keywordarray = array_unique($keywordarray);
$keywordarray = array_map('strtoupper', $keywordarray);
// check for empty keywords or keywords smaller than 3 chars
if(is_array($keywordarray) && count($keywordarray)) {
foreach($keywordarray as $key => $value) {
if(substr($keywordarray[$key], 0, 1) == '-') {
$doNotUse = substr($keywordarray[$key], 1);
foreach($keywordarray as $key2 => $value2) {
if($doNotUse == $value2) {
unset($keywordarray[$key2]);
unset($keywordarray[$key]);
}
}
}
if(isset($keywordarray[$key]) && (strlen($keywordarray[$key]) < 3 || empty($keywordarray[$key]))) {
unset($keywordarray[$key]);
}
}
}
if(is_array($keywordarray) && count($keywordarray)) {
$where = "";
foreach($keywordarray as $value) {
//build where keyword = blabla
$where .= ($where) ? " OR " : "";
//replace every "'" to "''" for security reasons with aporeplace()
$where .= "article_keyword LIKE '%".aporeplace($value)."%'";
}
$limit = ($max_cnt_links) ? " LIMIT ".$max_cnt_links : "";
// -KH:200111
// $sql = "SELECT article_id, article_title, article_cid, article_subtitle, article_summary, article_alias ";
// +KH:200111
$sql = "SELECT article_id, article_title, article_cid, article_subtitle, article_summary, article_alias, article_redirect, article_morelink, article_created, UNIX_TIMESTAMP(article_tstamp) AS article_changed ";
$sql .= "FROM ".DB_PREPEND."phpwcms_article WHERE article_deleted=0 AND ";
$sql .= "article_id<>".intval($current_article_id)." AND ";
$sql .= "article_cid IN (".$cat_id.") AND ";
// VISIBLE_MODE: 0 = frontend (all) mode, 1 = article user mode, 2 = admin user mode
switch(VISIBLE_MODE) {
case 0: $sql .= "article_public=1 AND article_aktiv=1 AND ";
break;
case 1: $sql .= "article_uid=".$_SESSION["wcs_user_id"]." AND ";
break;
//case 2: admin mode no additional neccessary
}
$sql .= "article_begin < NOW() AND article_end > NOW() AND (".$where.") ";
if(empty($template_default['sort_by'])) $template_default['sort_by'] = '';
switch($template_default['sort_by']) {
// +KH:27.09.12 Sorts the articles in the category for manual order.
case 'sort_asc':
$sql .= "ORDER BY article_cid, article_sort";
break;
case 'sort_desc':
$sql .= "ORDER BY article_cid, article_sort DESC";
break;
// ----------
case 'title_asc':
$sql .= "ORDER BY article_title";
break;
case 'title_desc':
$sql .= "ORDER BY article_title DESC";
break;
case 'ldate_asc':
$sql .= "ORDER BY article_begin";
break;
case 'ldate_desc':
$sql .= "ORDER BY article_begin DESC";
break;
case 'kdate_asc':
$sql .= "ORDER BY article_end";
break;
case 'kdate_desc':
$sql .= "ORDER BY article_end DESC";
break;
case 'cdate_asc':
$sql .= "ORDER BY article_created";
break;
case 'cdate_desc':
$sql .= "ORDER BY article_created DESC";
break;
default:
$sql .= "ORDER BY article_tstamp DESC";
}
$sql .= $limit;
// related things
$target = $template_default["link_target"] ? ' target="'.$template_default["link_target"].'"' : '';
$result = _dbQuery($sql);
if(isset($result[0])) {
foreach($result as $row) {
// echo 'Article ===========';
if(empty($row['article_redirect'])) {
if(empty($row['article_morelink'])) {
continue;
}
$article_link = 'index.php?'.setGetArticleAid($row).'"'.$target;
} else {
$redirect = get_redirect_link($row['article_redirect'], ' ', '');
$article_link = $redirect['link'].'"'.$redirect['target'];
}
if($template_default["link_length"] && strlen($row['article_title']) > $template_default["link_length"]) {
$article_title = substr($row['article_title'], 0, $template_default["link_length"]).$template_default["cut_title_add"];
} else {
$article_title = $row['article_title'];
}
$keyword_links .= $template_default["link_before"];
$keyword_links .= $template_default["link_symbol"];
$keyword_links .= '
\\
\\
==== NEW ( 2014) ====
use keywords (tags) in the articles (as needed for the old {RELATED}, then use the teaser CP with the tags should be used to filter "related" contents.