<?php
defined (
'main'
)
or
die
(
'no direct access'
);
if
(!isset(
$ILCH_HEADER_ADDITIONS
)) {
$ILCH_HEADER_ADDITIONS
=
''
;
}
if
(!isset(
$ILCH_BODYEND_ADDITIONS
)) {
$ILCH_BODYEND_ADDITIONS
=
''
;
}
class
design
extends
tpl {
var
$html
;
var
$design
;
var
$vars
;
var
$was
;
var
$file
;
function
design (
$title
,
$hmenu
,
$was
= 1,
$file
= null)
{
global
$allgAr
;
header(
'Content-Type: text/html;charset='
. ILCH_CHARSET);
if
(!
is_null
(
$file
)) {
}
$this
->vars =
array
();
$this
->file =
$file
; # setzte das file standart 0 weil durch was definiert
$this
->was =
$was
; # 0 = smalindex, 1 = normal index , 2 = admin
$this
->design =
$this
->get_design();
$link
=
$this
->htmlfile();
$tpl
=
new
tpl (
$link
, 2);
if
(
$tpl
->list_exists (
'boxleft'
)) {
$tpl
->set (
'boxleft'
,
$this
->get_boxes (
'l'
,
$tpl
));
}
if
(
$tpl
->list_exists (
'boxright'
)) {
$tpl
->set (
'boxright'
,
$this
->get_boxes (
'r'
,
$tpl
));
}
for
(
$i
= 1;
$i
<= 5;
$i
++) {
if
(
$tpl
->list_exists (
'menunr'
.
$i
)) {
$tpl
->set (
'menunr'
.
$i
,
$this
->get_boxes (
$i
,
$tpl
));
}
}
$ar
=
array
(
'TITLE'
=>
$this
->escape_explode(
$title
),
'HMENU'
=>
$this
->escape_explode(
$hmenu
),
'SITENAME'
=>
$this
->escape_explode(
$allgAr
[
'title'
]),
'hmenuende'
=>
''
,
'vmenuende'
=>
''
,
'hmenubegi'
=>
''
,
'vmenubegi'
=>
''
,
'hmenupoint'
=>
''
,
'vmenupoint'
=>
''
,
'DESIGN'
=>
$this
->design
);
$tpl
->set_ar(
$ar
);
$this
->html =
$tpl
->get(0);
$this
->html .=
'{EXPLODE}'
;
$this
->html .=
$tpl
->get(1);
unset (
$tpl
);
$zsave0
=
array
();
preg_match_all (
"/\{_boxes_([^\{\}]+)\}/"
,
$this
->html ,
$zsave0
);
$this
->replace_boxes(
$zsave0
[1]);
unset (
$zsave0
);
$this
->vars_replace();
unset (
$this
->vars);
$this
->html =
explode
(
'{EXPLODE}'
,
$this
->html);
}
function
addheader(
$text
)
{
if
(isset(
$this
->html[0])) {
$this
->html[0] =
str_replace
(
'</head>'
,
$text
.
"\n</head>"
,
$this
->html[0] );
return
true;
}
else
{
return
false;
}
}
function
header ()
{
global
$ILCH_HEADER_ADDITIONS
;
$this
->addheader(
$ILCH_HEADER_ADDITIONS
);
echo
$this
->html[0];
unset (
$this
->html[0]);
}
function
addtobodyend(
$text
)
{
if
(isset(
$this
->html[1])) {
$this
->html[1] =
str_replace
(
'</body>'
,
$text
.
"\n</body>"
,
$this
->html[1] );
return
true;
}
else
{
return
false;
}
}
function
footer (
$exit
= 0)
{
global
$ILCH_BODYEND_ADDITIONS
;
$this
->addtobodyend(
$ILCH_BODYEND_ADDITIONS
);
echo
$this
->html[1];
unset (
$this
->html[1]);
if
(
$exit
== 1) {
exit
();
}
}
function
escape_explode (
$s
)
{
$s
=
str_replace
(
'{EXPLODE}'
,
'{EXPLODE}'
,
$s
);
return
(
$s
);
}
function
htmlfile_ini ()
{
global
$menu
;
$ma
=
$menu
->get_string_ar();
$ia
=
array
();
if
(!
file_exists
(
'include/designs/'
.
$this
->design .
'/design.ini'
)) {
return
(false);
}
$ia
=
parse_ini_file
(
'include/designs/'
.
$this
->design .
'/design.ini'
);
arsort(
$ma
);
krsort (
$ia
);
foreach
(
$ia
as
$k
=>
$v
) {
$k
= preg_replace(
"/[^a-zA-Z0-9-*]/"
,
""
,
$k
);
$k
=
str_replace
(
'*'
,
'[^-]+'
,
$k
);
foreach
(
$ma
as
$k1
=>
$v1
) {
if
(preg_match(
"/"
.
$k
.
"/"
,
$k1
) AND
file_exists
(
'include/designs/'
.
$this
->design .
'/'
.
$v
)) {
return
(
$v
);
}
}
}
return
(false);
}
function
htmlfile ()
{
$ini
=
$this
->htmlfile_ini ();
if
(
$this
->was == 1 AND
$ini
!== false) {
$f
=
'designs/'
.
$this
->design .
'/'
.
$ini
;
}
elseif
(
$this
->was == 0 AND
file_exists
(
'include/templates/'
.
$this
->design .
'/templates/small_index.htm'
)) {
$f
=
'templates/'
.
$this
->design .
'/templates/small_index.htm'
;
}
elseif
(
$this
->was == 0) {
$f
=
'templates/small_index.htm'
;
}
elseif
(
$this
->was == 1) {
$f
=
'designs/'
.
$this
->design .
'/index.htm'
;
}
elseif
(
$this
->was == 2) {
$f
=
'admin/templates/index.htm'
;
}
return
(
$f
);
}
function
replace_boxes (
$zsave0
)
{
foreach
(
$zsave0
as
$v
) {
$dat
=
strtolower
(
$v
);
$buffer
=
$this
->get_boxcontent (
$dat
);
if
(
$buffer
!== false) {
$this
->vars[
'_boxes_'
.
$v
] =
$buffer
;
}
}
if
(!
is_array
(
$this
->vars)) {
$this
->vars =
array
();
}
}
function
vars_replace()
{
foreach
(
$this
->vars
as
$k
=>
$v
) {
$this
->html =
str_replace
(
'{'
.
$k
.
'}'
,
$v
,
$this
->html);
}
}
function
get_boxes (
$wo
,
$tpl
)
{
global
$lang
,
$allgAr
,
$menu
;
if
(
is_numeric
(
$wo
)) {
$datei
=
'menunr'
.
$wo
;
}
elseif
(
$wo
==
'l'
) {
$datei
=
'boxleft'
;
$wo
= 1;
}
elseif
(
$wo
==
'r'
) {
$datei
=
'boxright'
;
$wo
= 2;
}
$abf
=
"SELECT * FROM `prefix_menu` WHERE wo = "
.
$wo
.
" AND ( recht >= "
.
$_SESSION
[
'authright'
] .
" OR recht = 0 ) ORDER by pos"
;
$erg
= db_query(
$abf
);
while
(
$r
= db_fetch_assoc(
$erg
)) {
$menuar
[
$r
[
'pos'
]] =
$r
;
$menupaths
[
$r
[
'path'
]] =
$r
[
'pos'
];
}
foreach
(
array_reverse
(
$menu
->get_string_ar())
as
$path
){
$path
=
str_replace
(
'self-'
,
''
,
$path
);
if
(isset(
$menupaths
[
$path
])) {
$act_pos
=
$menupaths
[
$path
];
break
;
}
}
$todel
=
array
();
for
(
$i
=
$act_pos
;
$i
> -1;
$i
--){
if
(isset(
$menuar
[
$i
])
and
$menuar
[
$i
][
'ebene'
] == 0) {
$todel_before
=
$i
;
break
;
}
}
$todel_after
=
count
(
$menuar
);
for
(
$i
=
$act_pos
+1;
$i
<
$todel_after
;
$i
++){
if
(isset(
$menuar
[
$i
])
and
$menuar
[
$i
][
'ebene'
] == 0) {
$todel_after
=
$i
;
break
;
}
}
$menuarMain
=
$menuarSub
=
array
();
foreach
(
$menuar
as
$pos
=>
$row
) {
if
(
$row
[
'ebene'
] > 0
and
(
$pos
<
$todel_before
or
$pos
>
$todel_after
)) {
continue
;
}
else
{
if
(
$row
[
'ebene'
] > 0) {
if
(
empty
(
$menuarSub
)) {
$menuRow
=
$menuar
[
$pos
- 1];
$menuRow
[
'was'
] = 3;
$menuarSub
[] =
$menuRow
;
}
$row
[
'ebene'
]--;
$menuarSub
[] =
$row
;
}
else
{
$menuarMain
[] =
$row
;
}
}
}
$retur
=
$this
->get_boxes_menu(
$menuarMain
,
$tpl
,
$datei
);
if
(!
empty
(
$menuarSub
)) {
$subReturn
=
$this
->get_boxes_menu(
$menuarSub
,
$tpl
,
$datei
.
'sub'
);
}
else
{
$subReturn
=
''
;
}
$tpl
->set(
$datei
.
'sub'
,
$subReturn
);
return
$retur
;
}
function
get_boxes_menu(
$menuar
,
$tpl
,
$datei
)
{
$retur
=
''
;
$ex_ebene
= 0;
$ex_was
= 1;
$firstmep
= false;
$hovmenup
=
''
;
foreach
(
$menuar
as
$row
) {
$subhauptx
=
$row
[
'was'
];
$whileMenP
= (
$subhauptx
>= 7 ? true : false);
if
((
$row
[
'was'
] >= 7 AND
$ex_was
== 1) OR (
$ex_ebene
< (
$row
[
'ebene'
]-1)) OR (
$ex_was
<= 4 AND
$row
[
'ebene'
] <> 0) OR (
$row
[
'was'
] >= 7 AND !
$tpl
->list_exists(
$hovmenup
))) {
continue
;
}
if
((
$whileMenP
=== false) AND !
empty
(
$menuzw
)) {
$menuzw
.=
$this
->get_boxes_get_menu_close (
$ex_ebene
, 0,
$menuzw
,
$wmpE
,
$wmpTE
,
$wmpTEE
);
$retur
.=
$tpl
->list_get(
$datei
,
array
(htmlentities(
$boxname
),
$menuzw
.
$menuzwE
));
$menuzw
=
''
;
}
if
(
$row
[
'was'
] == 1) {
$buffer
=
$this
->get_boxcontent(
$row
[
'path'
]);
$retur
.=
$tpl
->list_get(
$datei
,
array
(
$row
[
'name'
] ,
$buffer
));
}
elseif
(
$row
[
'was'
] >= 2 AND
$row
[
'was'
] <= 4) {
$boxname
=
$row
[
'name'
];
$menuzw
=
''
;
$menuzwE
=
''
;
$ex_ebene
= 0; # ex ebene
$hovmenu
=
''
;
if
(
$row
[
'was'
] == 2 AND
$tpl
->list_exists(
'hmenupoint'
)) {
$hovmenu
=
'hmenu'
;
}
elseif
(
$row
[
'was'
] == 3 AND
$tpl
->list_exists(
'vmenupoint'
)) {
$hovmenu
=
'vmenu'
;
}
$firstmep
= true;
if
(!
empty
(
$hovmenu
)) {
$menuzw
.=
$tpl
->list_get(
$hovmenu
.
'begi'
,
array
());
$menuzwE
.=
$tpl
->list_get(
$hovmenu
.
'ende'
,
array
());
}
$hovmenup
=
$hovmenu
.
'point'
;
}
elseif
(
$whileMenP
) {
$ebene
=
$row
[
'ebene'
];
$menuTarget
= (
$subhauptx
== 8 ?
'_blank'
:
'_self'
);
list (
$wmpA
,
$wmpE
,
$wmpTE
,
$wmpTEE
) =
explode
(
'|'
,
$tpl
->list_get (
$hovmenup
,
array
(
$menuTarget
, (
$subhauptx
== 8 ?
''
:
'index.php?'
) .
$row
[
'path'
],
$row
[
'name'
], (
$row
[
'pos'
] ==
$act_pos
?
'active'
:
'inactive'
))));
if
(!
empty
(
$menuzw
) AND
$firstmep
=== false) {
$menuzw
.=
$this
->get_boxes_get_menu_close (
$ex_ebene
,
$ebene
,
$menuzw
,
$wmpE
,
$wmpTE
,
$wmpTEE
);
}
$menuzw
.=
$wmpA
;
$firstmep
= false;
}
$ex_was
=
$row
[
'was'
];
$ex_ebene
=
$row
[
'ebene'
];
}
if
(!
empty
(
$menuzw
)) {
$menuzw
.=
$this
->get_boxes_get_menu_close (
$ex_ebene
, 0,
$menuzw
,
$wmpE
,
$wmpTE
,
$wmpTEE
);
$retur
.=
$tpl
->list_get(
$datei
,
array
(htmlentities(
$boxname
),
$menuzw
.
$menuzwE
));
}
return
$retur
;
}
function
get_boxes_get_menu_close (
$ex_ebene
,
$ebene
,
$menuzw
,
$wmpE
,
$wmpTE
,
$wmpTEE
)
{
$menu1
=
''
;
if
(
$ex_ebene
==
$ebene
AND !
empty
(
$menuzw
)) {
$menu1
.=
$wmpE
.
"\n"
;
}
elseif
(
$ex_ebene
>
$ebene
) {
$menu1
.=
$wmpE
.
"\n"
;
for
(
$i
= 0;
$i
< (
$ex_ebene
-
$ebene
);
$i
++) {
$menu1
.=
$wmpTEE
.
"\n"
;
}
}
elseif
(
$ex_ebene
<
$ebene
) {
$menu1
.=
$wmpTE
.
"\n"
;
}
return
(
$menu1
);
}
function
get_boxcontent (
$box
)
{
global
$lang
,
$allgAr
,
$menu
,
$ILCH_HEADER_ADDITIONS
,
$ILCH_BODYEND_ADDITIONS
;
if
(
file_exists
(
'include/boxes/'
.
$box
)) {
$pfad
=
'include/boxes/'
.
$box
;
}
elseif
(
file_exists
(
'include/contents/selfbp/selfb/'
.
str_replace
(
'self_'
,
''
,
$box
))) {
$pfad
=
'include/contents/selfbp/selfb/'
.
str_replace
(
'self_'
,
''
,
$box
);
}
elseif
(
file_exists
(
'include/boxes/'
.
$box
.
'.php'
)) {
$pfad
=
'include/boxes/'
.
$box
.
'.php'
;
}
elseif
(
file_exists
(
'include/boxes/'
.
$box
.
'.htm'
)) {
$pfad
=
'include/boxes/'
.
$box
.
'.htm'
;
}
elseif
(
file_exists
(
'include/contents/selfbp/selfb/'
.
str_replace
(
'self_'
,
''
,
$box
) .
'.php'
)) {
$pfad
=
'include/contents/selfbp/selfb/'
.
str_replace
(
'self_'
,
''
,
$box
) .
'.php'
;
}
elseif
(
file_exists
(
'include/contents/selfbp/selfb/'
.
str_replace
(
'self_'
,
''
,
$box
) .
'.htm'
)) {
$pfad
=
'include/contents/selfbp/selfb/'
.
str_replace
(
'self_'
,
''
,
$box
) .
'.htm'
;
}
else
{
return
(false);
}
ob_start();
require_once
(
$pfad
);
$buffer
=
$this
->escape_explode(ob_get_contents());
ob_end_clean();
return
(
$buffer
);
}
}
?>