Seite 1 von 1

Mein altes Navi Modul geht nicht mehr

Verfasst: Do 20. Feb 2014, 10:45
von booker
Hallo,
nach update auf 4.9.3 geht mein Navi modul nicht mehr.
es kommt :
20-Feb-2014 09:44:59] PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/clients/client5/web26/web/contenido/includes/frontend/include.front_content.php(657) : eval()'d code on line 195
[20-Feb-2014 09:44:59] PHP Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/clients/client5/web26/web/contenido/includes/frontend/include.front_content.php(657) : eval()'d code on line 126
[20-Feb-2014 09:44:59] PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/clients/client5/web26/web/contenido/includes/frontend/include.front_content.php(657) : eval()'d code on line 132

das ist mein Modul:

<?php
$modcfg["start_parentid"] = 1;
$modcfg["renderSubFirst"] = true;

$modTemplate[0]["preblock"] = '';
$modTemplate[0]["postblock"] = '';
$modTemplate[0]["between"] = '';
$modTemplate[0]["before"] = '<li>';
$modTemplate[0]["after"] = '</li>';
$modTemplate[0]["maskNormal"] = '<a href="{link}">{name1}</a>';
$modTemplate[0]["maskSelected"] = '<a href="{link}">{name1}</a>';

$modTemplate[1]["preblock"] = '<ul>';
$modTemplate[1]["postblock"] = '</ul>';
$modTemplate[1]["before"] = '<li>';
$modTemplate[1]["after"] = '</li>';
$modTemplate[1]["between"] = '';
$modTemplate[1]["maskNormal"] = '<a href="{link}">{name1}</a>';
$modTemplate[1]["maskSelected"] = '<a href="{link}">{name1}</a>';

$modTemplate[2]["preblock"] = '<ul>';
$modTemplate[2]["postblock"] = '</ul>';
$modTemplate[2]["before"] = '<li>';
$modTemplate[2]["after"] = '</li>';
$modTemplate[2]["between"] = '';
$modTemplate[2]["maskNormal"] = '<a href="{link}">{name1}</a>';
$modTemplate[2]["maskSelected"] = '<a href="{link}">{name1}</a>';


// Version 4 vom 13.01.2014
// Ab hier keine Änderungen notwendig

global $auth, $user;

if ($auth->auth['uid'] == '' || !is_numeric($auth->auth['uid'])) {
$user = 0;
} else {
$user = $auth->auth['uid'];
}

$activeIds = GetActiveMenuIds($GLOBALS['idcat'], array());
RenderMenu($modcfg["start_parentid"]);

function RenderMenu($parentid, $ebene = 0)
{
global $cfg, $client, $lang, $user, $modTemplate, $activeIds, $modcfg;

$menu_sql = "SELECT DISTINCT
a.idcat,
a.parentid,
a.preid,
a.postid,
a.parentid,
b.name,
b.idlang,
IF (b.visible = 1 && (b.public = 1 || d.idfrontenduser IS NOT NULL), 1, 0) AS visible
FROM ".$cfg['tab']['cat']." AS a
LEFT JOIN ".$cfg['tab']['cat_lang']." AS b ON a.idcat = b.idcat
LEFT JOIN ".$cfg['tab']['frontendpermissions']." AS c ON ((c.item = b.idcatlang OR c.item = '__GLOBAL__') AND c.idlang = b.idlang AND plugin ='category')
LEFT JOIN ".$cfg['tab']['frontendgroupmembers']." AS d ON c.idfrontendgroup = d.idfrontendgroup AND d.idfrontenduser = ".$user."
LEFT JOIN ".$cfg['tab']['cat_tree']." AS e ON a.idcat = e.idcat
WHERE a.idclient = ".$client."
and a.parentid=".$parentid."
and b.idlang=".$lang."
and (IF (b.visible = 1 && (b.public = 1 || d.idfrontenduser IS NOT NULL), 1, 0))
ORDER BY e.idtree, b.name";

$menu_query = mysql_query($menu_sql);
$menu_count = mysql_num_rows($menu_query);

$counter = 0;
if($menu_count > 0)
echo str_replace('{idcat}', $parentid, $modTemplate[$ebene]["preblock"])."\n";

while($menu_rs = mysql_fetch_array($menu_query))
{
echo str_replace('{idcat}', $menu_rs["idcat"], str_replace('{parentid}', $parentid, $modTemplate[$ebene]["before"]))."\n";

ob_start();

$output = $modTemplate[$ebene]["maskNormal"];

if(in_array($menu_rs["idcat"], $activeIds))
$output = $modTemplate[$ebene]["maskSelected"];

$output = str_replace('{idcat}', $menu_rs["idcat"], str_replace('{parentid}', $parentid, str_replace('{name1}', $menu_rs["name"], str_replace('{link}', "front_content.php?idcat=".$menu_rs["idcat"], $output))));
echo $output."\n";

$output_current = ob_get_contents();
ob_end_clean();

if(!$modcfg["renderSubFirst"])
{
echo $output_current;

if($counter < ($menu_count-1))
echo $modTemplate[$ebene]["between"]."\n";
}

if($ebene < count($modTemplate))
RenderMenu($menu_rs["idcat"], ($ebene+1));

if($modcfg["renderSubFirst"])
{
echo $output_current;

if($counter < ($menu_count-1))
echo $modTemplate[$ebene]["between"]."\n";
}

echo str_replace('{idcat}', $menu_rs["idcat"], str_replace('{parentid}', $parentid, $modTemplate[$ebene]["after"]))."\n";

$counter++;
}

if($menu_count > 0)
echo str_replace('{idcat}', $parentid, $modTemplate[$ebene]["postblock"])."\n";
}

function GetActiveMenuIds($idcat, $idArray)
{
global $cfg, $client, $lang, $user;

$idArray[] = $idcat;

$menu_sql = "SELECT DISTINCT
a.parentid
FROM ".$cfg['tab']['cat']." AS a
LEFT JOIN ".$cfg['tab']['cat_lang']." AS b ON a.idcat = b.idcat
LEFT JOIN ".$cfg['tab']['frontendpermissions']." AS c ON ((c.item = b.idcatlang OR c.item = '__GLOBAL__') AND c.idlang = b.idlang AND plugin ='category')
LEFT JOIN ".$cfg['tab']['frontendgroupmembers']." AS d ON c.idfrontendgroup = d.idfrontendgroup AND d.idfrontenduser = ".$user."
WHERE a.idclient = ".$client."
and a.idcat=".$idcat."
and b.idlang=".$lang;

$menu_query = mysql_query($menu_sql);

while($menu_rs = mysql_fetch_array($menu_query))
if(intval($menu_rs["parentid"]) > 0)
$idArray = GetActiveMenuIds($menu_rs["parentid"], $idArray);

return $idArray;
}
?>



einer eine Idee ???

Danke
Booker

Re: Mein altes Navi Modul geht nicht mehr

Verfasst: Do 20. Feb 2014, 13:22
von homtata
Ganz ehrlich? Nimm doch die eine der vorgefertigten Navigationen der 4.9-Reihe, die ist wahrscheinlich schneller angepasst als die alte gefixed...

Re: Mein altes Navi Modul geht nicht mehr

Verfasst: Fr 21. Feb 2014, 10:07
von Faar
...oder aber er gibt mit echo die beiden $menu_sql aus und fügt das mal in phpMyAdmin ein und schaut, was da passiert und passt das an bis es ein Ergebnis gibt.
Das ist sicher eine fiese Arbeit, aber denkbar möglich :twisted: :roll:

Re: Mein altes Navi Modul geht nicht mehr

Verfasst: Fr 21. Feb 2014, 11:43
von Oldperl
... ich würde auch ein aktuelles aus der 4.9 nehmen. Das hier gepostete Modul nutzt nicht einmal die DB-Klasse von Contenido.

Gruß aus Franken

Ortwin