2016-10-06 15:57:01 +00:00
|
|
|
<?php
|
2017-03-11 12:58:54 +00:00
|
|
|
|
2016-10-06 15:57:01 +00:00
|
|
|
/**
|
|
|
|
* file FrontendNavigation.php
|
|
|
|
*
|
|
|
|
* @version 1.1.0
|
|
|
|
* @author Willi Man
|
|
|
|
* @copyright four for business AG <www.4fb.de>
|
|
|
|
* @created 25.03.2005
|
|
|
|
* @modified 22.11.2005
|
|
|
|
*/
|
2017-03-11 12:58:54 +00:00
|
|
|
class FrontendNavigation {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Constructor
|
|
|
|
*/
|
|
|
|
public function __construct($db, $cfg, $cfgClient, $client, $lang) {
|
|
|
|
$this->_bDebug = false;
|
|
|
|
$this->db = &$db;
|
|
|
|
$this->cfgClient = &$cfgClient;
|
|
|
|
$this->cfg = &$cfg;
|
|
|
|
$this->client = &$client;
|
|
|
|
$this->lang = &$lang;
|
|
|
|
}
|
2016-10-06 15:57:01 +00:00
|
|
|
|
2017-03-11 12:58:54 +00:00
|
|
|
/**
|
|
|
|
* Get child categories by given parent category
|
|
|
|
*/
|
|
|
|
public function getSubCategories($iParentCategory) {
|
|
|
|
if (!is_int((int) $iParentCategory) AND $iParentCategory < 0 AND ! is_array($this->cfg) AND ! isset($this->cfg['tab']) AND ! is_int((int) $this->client) AND $this->client < 0 AND ! is_int((int) $this->lang) AND $this->lang < 0) {
|
|
|
|
return array();
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql = "SELECT
|
2016-10-06 15:57:01 +00:00
|
|
|
A.idcat
|
|
|
|
FROM
|
2017-03-11 12:58:54 +00:00
|
|
|
" . $this->cfg["tab"]["cat_tree"] . " AS A,
|
|
|
|
" . $this->cfg["tab"]["cat"] . " AS B,
|
|
|
|
" . $this->cfg["tab"]["cat_lang"] . " AS C
|
2016-10-06 15:57:01 +00:00
|
|
|
WHERE
|
|
|
|
A.idcat = B.idcat AND
|
|
|
|
B.idcat = C.idcat AND
|
2017-03-11 12:58:54 +00:00
|
|
|
B.idclient = " . $this->client . " AND
|
|
|
|
C.idlang = " . $this->lang . " AND
|
2016-10-06 15:57:01 +00:00
|
|
|
C.visible = 1 AND
|
|
|
|
C.public = 1 AND
|
2017-03-11 12:58:54 +00:00
|
|
|
B.parentid = " . $iParentCategory . "
|
2016-10-06 15:57:01 +00:00
|
|
|
ORDER BY
|
|
|
|
A.idtree ";
|
2017-03-11 12:58:54 +00:00
|
|
|
|
|
|
|
if ($this->_bDebug) {
|
|
|
|
echo "<pre>";
|
|
|
|
print_r($sql);
|
|
|
|
echo "</pre>";
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->db->query($sql);
|
|
|
|
|
|
|
|
$navigation = array();
|
|
|
|
while ($this->db->next_record()) {
|
|
|
|
$navigation[] = $this->db->f("idcat");
|
|
|
|
}# end while
|
|
|
|
|
|
|
|
return $navigation;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if child categories of a given parent category exist
|
|
|
|
*/
|
|
|
|
public function hasChildren($iParentCategory) {
|
|
|
|
if (!is_int((int) $iParentCategory) AND $iParentCategory < 0 AND ! is_array($this->cfg) AND ! isset($this->cfg['tab']) AND ! is_int((int) $this->client) AND $this->client < 0 AND ! is_int((int) $this->lang) AND $this->lang < 0) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql = "SELECT
|
2016-10-06 15:57:01 +00:00
|
|
|
B.idcat
|
|
|
|
FROM
|
2017-03-11 12:58:54 +00:00
|
|
|
" . $this->cfg["tab"]["cat"] . " AS B,
|
|
|
|
" . $this->cfg["tab"]["cat_lang"] . " AS C
|
2016-10-06 15:57:01 +00:00
|
|
|
WHERE
|
|
|
|
B.idcat = C.idcat AND
|
2017-03-11 12:58:54 +00:00
|
|
|
B.idclient = " . $this->client . " AND
|
|
|
|
C.idlang = " . $this->lang . " AND
|
2016-10-06 15:57:01 +00:00
|
|
|
C.visible = 1 AND
|
|
|
|
C.public = 1 AND
|
2017-03-11 12:58:54 +00:00
|
|
|
B.parentid = " . $iParentCategory . " ";
|
|
|
|
|
|
|
|
if ($this->_bDebug) {
|
|
|
|
echo "<pre>";
|
|
|
|
print_r($sql);
|
|
|
|
echo "</pre>";
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->db->query($sql);
|
|
|
|
|
|
|
|
if ($this->db->next_record()) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get direct successor of a given category
|
|
|
|
* Note: does not work if direct successor (with preid 0) is not visible
|
|
|
|
* or not public
|
|
|
|
*/
|
|
|
|
public function getSuccessor($iCategory) {
|
|
|
|
if (!is_int((int) $iCategory) AND $iCategory < 0 AND ! is_array($this->cfg) AND ! isset($this->cfg['tab']) AND ! is_int((int) $this->client) AND $this->client < 0 AND ! is_int((int) $this->lang) AND $this->lang < 0) {
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql = "SELECT
|
2016-10-06 15:57:01 +00:00
|
|
|
B.idcat
|
|
|
|
FROM
|
2017-03-11 12:58:54 +00:00
|
|
|
" . $this->cfg["tab"]["cat"] . " AS B,
|
|
|
|
" . $this->cfg["tab"]["cat_lang"] . " AS C
|
2016-10-06 15:57:01 +00:00
|
|
|
WHERE
|
|
|
|
B.idcat = C.idcat AND
|
2017-03-11 12:58:54 +00:00
|
|
|
B.idclient = " . $this->client . " AND
|
|
|
|
C.idlang = " . $this->lang . " AND
|
2016-10-06 15:57:01 +00:00
|
|
|
C.visible = 1 AND
|
|
|
|
C.public = 1 AND
|
|
|
|
B.preid = 0 AND
|
2017-03-11 12:58:54 +00:00
|
|
|
B.parentid = " . $iCategory . " ";
|
|
|
|
|
|
|
|
if ($this->_bDebug) {
|
|
|
|
echo "<pre>";
|
|
|
|
print_r($sql);
|
|
|
|
echo "</pre>";
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->db->query($sql);
|
|
|
|
|
|
|
|
if ($this->db->next_record()) {
|
|
|
|
return $this->db->f("idcat");
|
|
|
|
} else {
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if a given category has a direct successor
|
|
|
|
*/
|
|
|
|
function hasSuccessor($iCategory) {
|
|
|
|
if (!is_int((int) $iCategory) AND $iCategory < 0 AND ! is_array($this->cfg) AND ! isset($this->cfg['tab']) AND ! is_int((int) $this->client) AND $this->client < 0 AND ! is_int((int) $this->lang) AND $this->lang < 0) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql = "SELECT
|
2016-10-06 15:57:01 +00:00
|
|
|
B.idcat
|
|
|
|
FROM
|
2017-03-11 12:58:54 +00:00
|
|
|
" . $this->cfg["tab"]["cat"] . " AS B,
|
|
|
|
" . $this->cfg["tab"]["cat_lang"] . " AS C
|
2016-10-06 15:57:01 +00:00
|
|
|
WHERE
|
|
|
|
B.idcat = C.idcat AND
|
2017-03-11 12:58:54 +00:00
|
|
|
B.idclient = " . $this->client . " AND
|
|
|
|
C.idlang = " . $this->lang . " AND
|
2016-10-06 15:57:01 +00:00
|
|
|
C.visible = 1 AND
|
|
|
|
C.public = 1 AND
|
|
|
|
B.preid = 0 AND
|
2017-03-11 12:58:54 +00:00
|
|
|
B.parentid = " . $iCategory . " ";
|
|
|
|
|
|
|
|
if ($this->_bDebug) {
|
|
|
|
echo "<pre>";
|
|
|
|
print_r($sql);
|
|
|
|
echo "</pre>";
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->db->query($sql);
|
|
|
|
|
|
|
|
if ($this->db->next_record()) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get category name
|
|
|
|
*/
|
|
|
|
function getCategoryName($cat_id) {
|
|
|
|
if (!is_int((int) $cat_id) AND $cat_id < 0 AND ! is_array($this->cfg) AND ! isset($this->cfg['tab']) AND ! is_int((int) $this->client) AND $this->client < 0 AND ! is_int((int) $this->lang) AND $this->lang < 0) {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql = "SELECT
|
2016-10-06 15:57:01 +00:00
|
|
|
B.name
|
|
|
|
FROM
|
2017-03-11 12:58:54 +00:00
|
|
|
" . $this->cfg["tab"]["cat"] . " AS A,
|
|
|
|
" . $this->cfg["tab"]["cat_lang"] . " AS B
|
2016-10-06 15:57:01 +00:00
|
|
|
WHERE
|
|
|
|
A.idcat = B.idcat AND
|
|
|
|
A.idcat = $cat_id AND
|
2017-03-11 12:58:54 +00:00
|
|
|
A.idclient = " . $this->client . " AND
|
|
|
|
B.idlang = " . $this->lang . "
|
2016-10-06 15:57:01 +00:00
|
|
|
";
|
2017-03-11 12:58:54 +00:00
|
|
|
|
|
|
|
if ($this->_bDebug) {
|
|
|
|
echo "<pre>";
|
|
|
|
print_r($sql);
|
|
|
|
echo "</pre>";
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->db->query($sql);
|
|
|
|
|
|
|
|
if ($this->db->next_record()) {
|
|
|
|
return $this->db->f("name");
|
|
|
|
} else {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get category urlname
|
|
|
|
*/
|
|
|
|
function getCategoryURLName($cat_id) {
|
|
|
|
if (!is_int((int) $cat_id) AND $cat_id < 0 AND ! is_array($this->cfg) AND ! isset($this->cfg['tab']) AND ! is_int((int) $this->client) AND $this->client < 0 AND ! is_int((int) $this->lang) AND $this->lang < 0) {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql = "SELECT
|
2016-10-06 15:57:01 +00:00
|
|
|
B.urlname
|
|
|
|
FROM
|
2017-03-11 12:58:54 +00:00
|
|
|
" . $this->cfg["tab"]["cat"] . " AS A,
|
|
|
|
" . $this->cfg["tab"]["cat_lang"] . " AS B
|
2016-10-06 15:57:01 +00:00
|
|
|
WHERE
|
|
|
|
A.idcat = B.idcat AND
|
|
|
|
A.idcat = $cat_id AND
|
2017-03-11 12:58:54 +00:00
|
|
|
A.idclient = " . $this->client . " AND
|
|
|
|
B.idlang = " . $this->lang . "
|
2016-10-06 15:57:01 +00:00
|
|
|
";
|
2017-03-11 12:58:54 +00:00
|
|
|
|
|
|
|
if ($this->_bDebug) {
|
|
|
|
echo "<pre>";
|
|
|
|
print_r($sql);
|
|
|
|
echo "</pre>";
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->db->query($sql);
|
|
|
|
|
|
|
|
if ($this->db->next_record()) {
|
|
|
|
return $this->db->f("urlname");
|
|
|
|
} else {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if category is visible
|
|
|
|
*/
|
|
|
|
function isVisible($cat_id) {
|
|
|
|
if (!is_int((int) $cat_id) AND $cat_id < 0 AND ! is_array($this->cfg) AND ! isset($this->cfg['tab']) AND ! is_int((int) $this->client) AND $this->client < 0 AND ! is_int((int) $this->lang) AND $this->lang < 0) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql = "SELECT
|
2016-10-06 15:57:01 +00:00
|
|
|
B.visible
|
|
|
|
FROM
|
2017-03-11 12:58:54 +00:00
|
|
|
" . $this->cfg["tab"]["cat"] . " AS A,
|
|
|
|
" . $this->cfg["tab"]["cat_lang"] . " AS B
|
2016-10-06 15:57:01 +00:00
|
|
|
WHERE
|
|
|
|
A.idcat = B.idcat AND
|
|
|
|
A.idcat = $cat_id AND
|
2017-03-11 12:58:54 +00:00
|
|
|
A.idclient = " . $this->client . " AND
|
|
|
|
B.idlang = " . $this->lang . "
|
2016-10-06 15:57:01 +00:00
|
|
|
";
|
2017-03-11 12:58:54 +00:00
|
|
|
|
|
|
|
if ($this->_bDebug) {
|
|
|
|
echo "<pre>";
|
|
|
|
print_r($sql);
|
|
|
|
echo "</pre>";
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->db->query($sql);
|
|
|
|
$this->db->next_record();
|
|
|
|
|
|
|
|
if ($this->db->f("visible") == 1) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if category is public
|
|
|
|
*/
|
|
|
|
function isPublic($cat_id) {
|
|
|
|
if (!is_int((int) $cat_id) AND $cat_id < 0 AND ! is_array($this->cfg) AND ! isset($this->cfg['tab']) AND ! is_int((int) $this->client) AND $this->client < 0 AND ! is_int((int) $this->lang) AND $this->lang < 0) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql = "SELECT
|
2016-10-06 15:57:01 +00:00
|
|
|
B.public
|
|
|
|
FROM
|
2017-03-11 12:58:54 +00:00
|
|
|
" . $this->cfg["tab"]["cat"] . " AS A,
|
|
|
|
" . $this->cfg["tab"]["cat_lang"] . " AS B
|
2016-10-06 15:57:01 +00:00
|
|
|
WHERE
|
|
|
|
A.idcat = B.idcat AND
|
|
|
|
A.idcat = $cat_id AND
|
2017-03-11 12:58:54 +00:00
|
|
|
A.idclient = " . $this->client . " AND
|
|
|
|
B.idlang = " . $this->lang . "
|
2016-10-06 15:57:01 +00:00
|
|
|
";
|
2017-03-11 12:58:54 +00:00
|
|
|
|
|
|
|
if ($this->_bDebug) {
|
|
|
|
echo "<pre>";
|
|
|
|
print_r($sql);
|
|
|
|
echo "</pre>";
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->db->query($sql);
|
|
|
|
$this->db->next_record();
|
|
|
|
|
|
|
|
if ($this->db->f("public") == 1) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Return true if $parentid is parent of $catid
|
|
|
|
*/
|
|
|
|
function isParent($parentid, $catid) {
|
|
|
|
if (!is_int((int) $parentid) AND $parentid < 0 AND ! is_int((int) $catid) AND $catid < 0 AND ! is_array($this->cfg) AND ! isset($this->cfg['tab']) AND ! is_int((int) $this->client) AND $this->client < 0 AND ! is_int((int) $this->lang) AND $this->lang < 0) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql = "SELECT
|
2016-10-06 15:57:01 +00:00
|
|
|
a.parentid
|
|
|
|
FROM
|
2017-03-11 12:58:54 +00:00
|
|
|
" . $this->cfg["tab"]["cat"] . " AS a,
|
|
|
|
" . $this->cfg["tab"]["cat_lang"] . " AS b
|
2016-10-06 15:57:01 +00:00
|
|
|
WHERE
|
2017-03-11 12:58:54 +00:00
|
|
|
a.idclient = " . $this->client . " AND
|
|
|
|
b.idlang = " . $this->lang . " AND
|
2016-10-06 15:57:01 +00:00
|
|
|
a.idcat = b.idcat AND
|
2017-03-11 12:58:54 +00:00
|
|
|
a.idcat = " . $catid . " ";
|
|
|
|
|
|
|
|
$this->db->query($sql);
|
|
|
|
$this->db->next_record();
|
|
|
|
|
|
|
|
if ($this->_bDebug) {
|
|
|
|
echo "<pre>";
|
|
|
|
print_r($sql);
|
|
|
|
echo "</pre>";
|
|
|
|
}
|
|
|
|
|
|
|
|
$pre = $this->db->f("parentid");
|
|
|
|
|
|
|
|
if ($parentid == $pre) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get parent id of a category
|
|
|
|
*/
|
|
|
|
function getParent($preid) {
|
|
|
|
if (!is_int((int) $preid) AND $preid < 0 AND ! is_array($this->cfg) AND ! isset($this->cfg['tab']) AND ! is_int((int) $this->client) AND $this->client < 0 AND ! is_int((int) $this->lang) AND $this->lang < 0) {
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql = "SELECT
|
2016-10-06 15:57:01 +00:00
|
|
|
a.parentid
|
|
|
|
FROM
|
2017-03-11 12:58:54 +00:00
|
|
|
" . $this->cfg["tab"]["cat"] . " AS a,
|
|
|
|
" . $this->cfg["tab"]["cat_lang"] . " AS b
|
2016-10-06 15:57:01 +00:00
|
|
|
WHERE
|
2017-03-11 12:58:54 +00:00
|
|
|
a.idclient = " . $this->client . " AND
|
|
|
|
b.idlang = " . $this->lang . " AND
|
2016-10-06 15:57:01 +00:00
|
|
|
a.idcat = b.idcat AND
|
2017-03-11 12:58:54 +00:00
|
|
|
a.idcat = " . $preid . " ";
|
|
|
|
|
|
|
|
$this->db->query($sql);
|
|
|
|
|
|
|
|
if ($this->_bDebug) {
|
|
|
|
echo "<pre>";
|
|
|
|
print_r($sql);
|
|
|
|
echo "</pre>";
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($this->db->next_record()) {
|
|
|
|
return $this->db->f("parentid");
|
|
|
|
} else {
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if a category has a parent
|
|
|
|
*/
|
|
|
|
function hasParent($preid) {
|
|
|
|
if (!is_int((int) $preid) AND $preid < 0 AND ! is_array($this->cfg) AND ! isset($this->cfg['tab']) AND ! is_int((int) $this->client) AND $this->client < 0 AND ! is_int((int) $this->lang) AND $this->lang < 0) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql = "SELECT
|
2016-10-06 15:57:01 +00:00
|
|
|
a.parentid
|
|
|
|
FROM
|
2017-03-11 12:58:54 +00:00
|
|
|
" . $this->cfg["tab"]["cat"] . " AS a,
|
|
|
|
" . $this->cfg["tab"]["cat_lang"] . " AS b
|
2016-10-06 15:57:01 +00:00
|
|
|
WHERE
|
2017-03-11 12:58:54 +00:00
|
|
|
a.idclient = " . $this->client . " AND
|
|
|
|
b.idlang = " . $this->lang . " AND
|
2016-10-06 15:57:01 +00:00
|
|
|
a.idcat = b.idcat AND
|
2017-03-11 12:58:54 +00:00
|
|
|
a.idcat = " . $preid . " ";
|
|
|
|
|
|
|
|
$this->db->query($sql);
|
|
|
|
|
|
|
|
if ($this->_bDebug) {
|
|
|
|
echo "<pre>";
|
|
|
|
print_r($sql);
|
|
|
|
echo "</pre>";
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($this->db->next_record()) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get level of a category
|
|
|
|
*/
|
|
|
|
function getLevel($catid) {
|
|
|
|
if (!is_int((int) $catid) AND $catid < 0 AND ! is_array($this->cfg) AND ! isset($this->cfg['tab']) AND ! is_int((int) $this->client) AND $this->client < 0 AND ! is_int((int) $this->lang) AND $this->lang < 0) {
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql = "SELECT
|
2016-10-06 15:57:01 +00:00
|
|
|
level
|
|
|
|
FROM
|
2017-03-11 12:58:54 +00:00
|
|
|
" . $this->cfg["tab"]["cat_tree"] . "
|
2016-10-06 15:57:01 +00:00
|
|
|
WHERE
|
2017-03-11 12:58:54 +00:00
|
|
|
idcat = " . $catid . " ";
|
|
|
|
|
|
|
|
$this->db->query($sql);
|
|
|
|
|
|
|
|
if ($this->_bDebug) {
|
|
|
|
echo "<pre>";
|
|
|
|
print_r($sql);
|
|
|
|
echo "</pre>";
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($this->db->next_record()) {
|
|
|
|
return $this->db->f("level");
|
|
|
|
} else {
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get URL by given category in front_content.php style
|
|
|
|
*
|
|
|
|
* @param integer $iIdcat
|
|
|
|
* @param integer $iIdart
|
|
|
|
* @param boolean $bAbsolute return absolute path or not
|
|
|
|
*
|
|
|
|
* @return string URL
|
|
|
|
* @author Willi Man
|
|
|
|
* @access public
|
|
|
|
*/
|
|
|
|
function getFrontContentUrl($iIdcat, $iIdart, $bAbsolute = true) {
|
|
|
|
if (!is_int((int) $iIdcat) AND $iIdcat < 0) {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($bAbsolute === true) {
|
|
|
|
# add absolute web path to urlpath
|
|
|
|
if (is_int((int) $iIdart) AND $iIdart > 0) {
|
|
|
|
$sURL = $this->cfgClient[$this->client]['path']['htmlpath'] . 'front_content.php?idcat=' . $iIdcat . '&idart=' . $iIdart;
|
|
|
|
} else {
|
|
|
|
$sURL = $this->cfgClient[$this->client]['path']['htmlpath'] . 'front_content.php?idcat=' . $iIdcat;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (is_int((int) $iIdart) AND $iIdart > 0) {
|
|
|
|
$sURL = 'front_content.php?idcat=' . $iIdcat . '&idart=' . $iIdart;
|
|
|
|
} else {
|
|
|
|
$sURL = 'front_content.php?idcat=' . $iIdcat;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return $sURL;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get urlpath by given category and/or idart and level.
|
|
|
|
* The urlpath looks like /Home/Product/Support/ where the directory-like string equals a category path.
|
|
|
|
*
|
|
|
|
* @requires functions.pathresolver.php
|
|
|
|
* @param integer $iIdcat
|
|
|
|
* @param integer $iIdart
|
|
|
|
* @param boolean $bAbsolute return absolute path or not
|
|
|
|
*
|
|
|
|
* @return string path information or empty string
|
|
|
|
* @author Marco Jahn (Project www.usa.de)
|
|
|
|
* @modified by Willi Man
|
|
|
|
* @access public
|
|
|
|
*/
|
|
|
|
function getUrlPath($iIdcat, $iIdart, $bAbsolute = true, $iLevel = 0, $sURL_SUFFIX = 'index.html') {
|
|
|
|
if (!is_int((int) $iIdcat) AND $iIdcat < 0) {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
$cat_str = '';
|
|
|
|
prCreateURLNameLocationString($iIdcat, "/", $cat_str, false, "", $iLevel, $this->lang, true, false);
|
|
|
|
|
|
|
|
if (strlen($cat_str) <= 1) {
|
|
|
|
# return empty string if no url location is available
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($bAbsolute === true) {
|
|
|
|
# add absolute web path to urlpath
|
|
|
|
if (is_int((int) $iIdart) AND $iIdart > 0) {
|
|
|
|
return $this->cfgClient[$this->client]['path']['htmlpath'] . $cat_str . '/index-d-' . $iIdart . '.html';
|
|
|
|
} else {
|
|
|
|
return $this->cfgClient[$this->client]['path']['htmlpath'] . $cat_str . '/' . $sURL_SUFFIX;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (is_int((int) $iIdart) AND $iIdart > 0) {
|
|
|
|
return $cat_str . '/index-d-' . $iIdart . '.html';
|
|
|
|
} else {
|
|
|
|
return $cat_str . '/' . $sURL_SUFFIX;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get urlpath by given category and/or selected param and level.
|
|
|
|
*
|
|
|
|
* @requires functions.pathresolver.php
|
|
|
|
* @param integer $iIdcat
|
|
|
|
* @param integer $iSelectedNumber
|
|
|
|
* @param boolean $bAbsolute return absolute path or not
|
|
|
|
*
|
|
|
|
* @return string path information or empty string
|
|
|
|
* @author Willi Man
|
|
|
|
*
|
|
|
|
* @access public
|
|
|
|
*/
|
|
|
|
function getUrlPathGenParam($iIdcat, $iSelectedNumber, $bAbsolute = true, $iLevel = 0) {
|
|
|
|
if (!is_int((int) $iIdcat) AND $iIdcat < 0) {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
$cat_str = '';
|
|
|
|
prCreateURLNameLocationString($iIdcat, "/", $cat_str, false, "", $iLevel, $this->lang, true, false);
|
|
|
|
|
|
|
|
if (strlen($cat_str) <= 1) {
|
|
|
|
# return empty string if no url location is available
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($bAbsolute === true) {
|
|
|
|
# add absolute web path to urlpath
|
|
|
|
if (is_int((int) $iSelectedNumber)) {
|
|
|
|
return $this->cfgClient[$this->client]['path']['htmlpath'] . $cat_str . '/index-g-' . $iSelectedNumber . '.html';
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (is_int((int) $iSelectedNumber)) {
|
|
|
|
return $cat_str . '/index-g-' . $iSelectedNumber . '.html';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get URL by given categoryid and/or articleid
|
|
|
|
*
|
|
|
|
* @param integer $iIdcat url name to create for
|
|
|
|
* @param integer $iIdart
|
|
|
|
* @param boolean $bAbsolute return absolute path or not
|
|
|
|
*
|
|
|
|
* @return string URL
|
|
|
|
* @author Willi Man
|
|
|
|
* @access public
|
|
|
|
*/
|
|
|
|
function getURL($iIdcat, $iIdart, $sType = '', $bAbsolute = true, $iLevel = 0) {
|
|
|
|
if (!is_int((int) $iIdcat) AND $iIdcat < 0) {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
|
|
|
#print "type ".$sType."<br>";
|
|
|
|
|
|
|
|
switch ($sType) {
|
|
|
|
case 'urlpath':
|
|
|
|
$sURL = $this->getUrlPath($iIdcat, $iIdart, $bAbsolute, $iLevel);
|
|
|
|
break;
|
|
|
|
case 'frontcontent':
|
|
|
|
$sURL = $this->getFrontContentUrl($iIdcat, $iIdart, $bAbsolute);
|
|
|
|
break;
|
|
|
|
case 'index-a':
|
|
|
|
# not implemented
|
|
|
|
$sURL = '';
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
$sURL = $this->getFrontContentUrl($iIdcat, $iIdart, $bAbsolute);
|
|
|
|
}
|
|
|
|
|
|
|
|
return $sURL;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get category of article.
|
|
|
|
*
|
|
|
|
* If an article is assigned to more than one category take the first
|
|
|
|
* category.
|
|
|
|
*
|
|
|
|
* @param int $iArticleId
|
|
|
|
* @return int category id
|
|
|
|
*/
|
|
|
|
function getCategoryOfArticle($iArticleId) {
|
|
|
|
|
|
|
|
# validate input
|
|
|
|
if (!is_int((int) $iArticleId) OR $iArticleId <= 0) {
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
$sqlString = '
|
2016-10-06 15:57:01 +00:00
|
|
|
SELECT
|
|
|
|
c.idcat
|
|
|
|
FROM
|
2017-03-11 12:58:54 +00:00
|
|
|
' . $this->cfg['tab']['art_lang'] . ' AS a,
|
|
|
|
' . $this->cfg['tab']['art'] . ' AS b,
|
|
|
|
' . $this->cfg['tab']['cat_art'] . ' AS c
|
2016-10-06 15:57:01 +00:00
|
|
|
WHERE
|
2017-03-11 12:58:54 +00:00
|
|
|
a.idart = ' . $iArticleId . ' AND
|
|
|
|
b.idclient = ' . $this->client . ' AND
|
|
|
|
a.idlang = ' . $this->lang . ' AND
|
2016-10-06 15:57:01 +00:00
|
|
|
b.idart = c.idart AND
|
2017-03-11 12:58:54 +00:00
|
|
|
a.idart = b.idart ';
|
|
|
|
|
|
|
|
if ($this->_bDebug) {
|
|
|
|
echo "<pre>" . $sqlString . "</pre>";
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->db->query($sqlString);
|
|
|
|
|
|
|
|
# $this->db->Errno returns 0 (zero) if no error occurred.
|
|
|
|
if ($this->db->Errno == 0) {
|
|
|
|
if ($this->db->next_record()) {
|
|
|
|
return $this->db->f('idcat');
|
|
|
|
} else {
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if ($this->_bDebug) {
|
|
|
|
echo "<pre>Mysql Error:" . $this->db->Error . "(" . $this->db->Errno . ")</pre>";
|
|
|
|
}
|
|
|
|
return -1; # error occurred.
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get path of a given category up to a certain level
|
|
|
|
*/
|
|
|
|
function getCategoryPath($cat_id, $level = 0, $reverse = true) {
|
|
|
|
if (!is_int((int) $cat_id) AND $cat_id < 0) {
|
|
|
|
return array();
|
|
|
|
}
|
|
|
|
|
|
|
|
$root_path = array();
|
|
|
|
array_push($root_path, $cat_id);
|
|
|
|
$parent_id = $cat_id;
|
|
|
|
|
|
|
|
while ($this->getLevel($parent_id) >= 0 AND $this->getLevel($parent_id) > $level) {
|
|
|
|
$parent_id = $this->getParent($parent_id);
|
|
|
|
if ($parent_id >= 0) {
|
|
|
|
array_push($root_path, $parent_id);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($reverse == true) {
|
|
|
|
$root_path = array_reverse($root_path);
|
|
|
|
}
|
|
|
|
|
|
|
|
return $root_path;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get root category of a given category
|
|
|
|
*/
|
|
|
|
function getRoot($cat_id) {
|
|
|
|
if (!is_int((int) $cat_id) AND $cat_id < 0) {
|
|
|
|
return array();
|
|
|
|
}
|
|
|
|
|
|
|
|
$parent_id = $cat_id;
|
|
|
|
|
|
|
|
while ($this->getLevel($parent_id) >= 0) {
|
|
|
|
$iRootCategory = $parent_id;
|
|
|
|
$parent_id = $this->getParent($parent_id);
|
|
|
|
}
|
|
|
|
|
|
|
|
return $iRootCategory;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* get subtree by a given id
|
|
|
|
*
|
|
|
|
* @param int $idcat_start Id of category
|
|
|
|
* @return array Array with subtree
|
|
|
|
*
|
|
|
|
* @copyright four for business AG <www.4fb.de>
|
|
|
|
*/
|
|
|
|
function getSubTree($idcat_start) {
|
|
|
|
|
|
|
|
if (!is_int((int) $idcat_start) AND $idcat_start < 0 AND ! is_array($this->cfg) AND ! isset($this->cfg['tab']) AND ! is_int((int) $this->client) AND $this->client < 0 AND ! is_int((int) $this->lang) AND $this->lang < 0) {
|
|
|
|
return array();
|
|
|
|
}
|
|
|
|
|
|
|
|
$sql = "SELECT
|
2016-10-06 15:57:01 +00:00
|
|
|
B.idcat, A.level
|
|
|
|
FROM
|
2017-03-11 12:58:54 +00:00
|
|
|
" . $this->cfg["tab"]["cat_tree"] . " AS A,
|
|
|
|
" . $this->cfg["tab"]["cat"] . " AS B
|
2016-10-06 15:57:01 +00:00
|
|
|
WHERE
|
|
|
|
A.idcat = B.idcat AND
|
2017-03-11 12:58:54 +00:00
|
|
|
idclient = " . $this->client . "
|
2016-10-06 15:57:01 +00:00
|
|
|
ORDER BY
|
|
|
|
idtree";
|
2017-03-11 12:58:54 +00:00
|
|
|
|
|
|
|
if ($this->_bDebug) {
|
|
|
|
echo "<pre>";
|
|
|
|
print_r($sql);
|
|
|
|
echo "</pre>";
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->db->query($sql);
|
|
|
|
|
|
|
|
$i = false;
|
|
|
|
|
|
|
|
while ($this->db->next_record()) {
|
|
|
|
if ($this->db->f("idcat") == $idcat_start) {
|
|
|
|
$curLevel = $this->db->f("level");
|
|
|
|
$i = true;
|
|
|
|
} else {
|
|
|
|
if ($curLevel == $this->db->f("level")) {
|
|
|
|
# ending part of tree
|
|
|
|
$i = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($i == true) {
|
|
|
|
$deeper_cats[] = $this->db->f("idcat");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $deeper_cats;
|
|
|
|
}
|
|
|
|
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
?>
|