cInclude("classes", "class.article.php");
/** (c) 2004 - 2008 Bastian Frank, bf@bastian-frank.de */
class BfCategoryManager {
/**
* Function for creating
* the navigation array
* @param Int $idcat Category id
*/
public static function getCategoryList($parentid) {
global $client, $lang, $cfg;
$db = new DB_Contenido();
$sql = "SELECT
A.idcat,
C.name
FROM
".$cfg["tab"]["cat_tree"]." AS A,
".$cfg["tab"]["cat"]." AS B,
".$cfg["tab"]["cat_lang"]." AS C
WHERE
A.idcat = B.idcat AND
B.idcat = C.idcat AND
B.idclient = '$client' AND
C.idlang = '$lang' AND
C.visible = '1' AND
B.parentid = '$parentid'
ORDER BY
A.idtree";
$db->query($sql);
$nav=array();
while ($db->next_record()) {
#/* Check for external redirects... */
#$sql = "SELECT
# a.external_redirect AS ext
# FROM
# ".$cfg["tab"]["art_lang"]." AS a,
# ".$cfg["tab"]["cat_art"]." AS b,
# ".$cfg["tab"]["cat"]." AS c
# WHERE
# b.idcat = '".$db->f("idcat")."' AND
# b.is_start = '1' AND
# c.idclient = '".$client."' AND
# c.idcat = b.idcat AND
# a.idart = b.idart AND
# a.idlang = '".$lang."'";
#$db2->query($sql);
#$db2->next_record();
#$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$nav[$db->f("idcat")] = $db->f("name");
}
return $nav;
}
/**
*
*/
public static function getCategoryPath($id) {
$path = array($id);
while ($id = self::getParentCategory($id)) {
array_unshift($path, $id);
}
return $path;
}
public static function getParentCategory($idcat) {
global $cfg;
$db = new DB_Contenido;
$sql = "SELECT parentid FROM ".$cfg["tab"]["cat"]." WHERE idcat = '$idcat'";
$db->query($sql);
$db->next_record();
return $db->f("parentid");
}
public static function getFileUrl($id) {
global $cfg, $client, $cfgClient;
if (!$id) return null;
$db = new DB_Contenido;
$sql = "SELECT * FROM ".$cfg["tab"]["upl"]." WHERE idclient='".intval($client)."' AND idupl = '".intval($id)."'";
$db->query($sql);
$db->next_record();
$file = $db->f("dirname") . $db->f("filename");
$basePath = $cfgClient[$client]["upl"]["frontendpath"];
return $basePath . $file;
}
public static function search($search) {
global $lang, $client;
if ($search == "") return array();
$search = str_replace("%", "%%", $search);
$search = "%$search%";
$sql = "SELECT DISTINCT C.idartlang AS idartlang
FROM con_content AS C
JOIN con_art_lang AS A ON C.idartlang = A.idartlang
WHERE C.value
LIKE \"" . mysql_escape_string($search) . "\" AND A.online > 0 AND A.idlang = " . intval($lang) . " LIMIT 50";
$db = new DB_Contenido;
$db->query($sql);
$list = array();
while ($db->next_record()) {
$list[] = new Article(0, $client, $lang, $db->f("idartlang"));
}
return $list;
}
public static function getReferencingArticles($idcatart, $parentCat) {
global $lang, $client;
#$a = new Article($idart, $client, $lang);
$c = new ArticleCollection(array("idcat" => $parentCat));
$result = array();
while ($a = $c->nextArticle()) {
$links = $a->getContent("LINK");
if (!$links) continue;
foreach($links as $link) {
if (is_numeric($link) && (int)$link == (int)$idcatart) {
$result[] = $a;
break;
}
}
}
return $result;
}
}
?>