1 |
<?php |
= |
1 |
<?php |
2 |
|
|
2 |
|
3 |
/************************************************************************/ |
<> |
3 |
/** |
4 |
/* PHP-NUKE: Advanced Content Management System
*/ |
|
4 |
* Lädt das jeweils angegebene Modul. |
5 |
/* ============================================ */ |
|
5 |
* Hier wird nicht nur das jeweilige Modul geladen, das über "name" mitgeteilt wird. |
6 |
/* */ |
|
6 |
* Darüber hinaus wird geprüft, ob der aktuelle Benutzer wirklich die Rechte hat das jeweilige Modul zu sehen und ob es aktiv ist, etc. |
7 |
/* Copyright (c) 2002 by Francisco Burzi (fbc@mandrakesoft.com) */ |
|
7 |
* Wenn die Modules.php geladen wird, wird die globale Variable $GLOBALS['modulesload'] auf 1 gesetzt - in Modulen muss nur geprüft werden, ob diese Variable auf 1 steht um zu sehen, ob ein Zugriff über die modules.php erfolgte:<br><i>if( $GLOBALS['modulesload']!=1 ) header("Location:index.php?problem=5");</i>. |
8 |
/* http://phpnuke.org */ |
|
8 |
* Dabei gibt es eine spezielle Möglichkeit: Sie können Module in einem eigenen Verzeichnis ablegen, die dann trotzdem aufgerufen werden können. Diese Module erscheinen aber nicht im Modules-Block oder in der Liste installierter Module! |
9 |
/*
*/ |
|
9 |
* @author Jens Ferner |
10 |
/* This program is free software. You can redistribute it and/or modify */ |
|
10 |
* @copyright Jens Ferner, 2F Promoting & Consulting |
11 |
/* it under the terms of the GNU General Public License as published by */ |
|
11 |
* @link http://www.2f-cms.com |
12 |
/* the Free Software Foundation; either version 2 of the License. */ |
|
12 |
* @package 2F-CMS |
13 |
/************************************************************************/ |
|
13 |
* @subpackage Kernsystem |
|
|
|
14 |
* @category Frontend |
|
|
|
15 |
* @example ex-modul01.php Beispiel für ein eigenes Modul |
|
|
|
16 |
* @license http://www.2f-cms.com/2flicence.txt 2F CMS Lizenz |
|
|
|
17 |
*/ |
14 |
|
= |
18 |
|
|
|
<> |
19 |
/** |
|
|
|
20 |
* Einbinden der Mainfile.php um die Kernfunktionen zu laden. |
|
|
|
21 |
* Durch dieses Einbinden
ist es vollkommen überflüssig, in den einzelnen Modulen die
mainfile.php erneut zu laden - also weglassen! |
|
|
|
22 |
*/ |
15 |
require_once("mainfile.php"); |
|
23 |
include_once("mainfile.php"); |
16 |
|
= |
24 |
|
|
|
<> |
25 |
/** |
|
|
|
26 |
* Wegen kompatibilität zum phpbb |
|
|
|
27 |
*/ |
|
|
|
28 |
global $nukeuser, $user, $nukeurl; |
|
|
|
29 |
$nukeuser = base64_decode($user); |
17 |
if (isset($name)) { |
|
30 |
|
|
|
|
31 |
/** |
|
|
|
32 |
* Der Name des zu ladenden Moduls wird ausgelesen, dabei ist es egal ob "name" oder "Name" genutzt wird. |
|
|
|
33 |
* Wenn kein name oder Name gesetzt ist, wird mit einer Fehlermeldung umgeleitet. |
|
|
|
34 |
* Zuletzt wird $name und $module_name mit Inhalt gefüllt, hier steht der Modulname zur Verfügung. |
|
|
|
35 |
* In Modulen aber nur $GLOBALS['modul_name'] nutzen! |
|
|
|
36 |
*/ |
|
|
|
37 |
$name=""; $module_name=""; |
|
|
|
38 |
if(empty($_REQUEST['name']) && empty($_REQUEST['Name']) ) { vkpLocation("index.php?problem=1"); die(); } |
|
|
|
39 |
if(!empty($_REQUEST['name'])) $name=$_REQUEST['name']; |
|
|
|
40 |
if(!empty($_REQUEST['Name'])) $name=$_REQUEST['Name']; |
|
|
|
41 |
$name=vkpval(trim($name),"string"); |
|
|
|
42 |
$module_name=$name; |
18 |
|
= |
43 |
|
19 |
$result = sql_query("select active, view from ".$prefix."_modules where title='$name'", $dbi); |
<> |
44 |
/** |
20 |
list($mod_active, $view) = sql_fetch_row($result, $dbi); |
|
45 |
* Auslesen worauf zugegriffen wurde |
21 |
if (($mod_active == 1) OR ($mod_active == 0 AND is_admin($admin) OR ($name == "Content"))) { |
|
46 |
*/ |
22 |
if (!isset($mop)) { $mop="modload"; } |
|
47 |
$mop="modload"; $file="index"; |
23 |
if (!isset($file)) { $file="index"; } |
|
48 |
if (isset($_REQUEST['mop'])) $mop=$_REQUEST['mop']; |
24 |
if (ereg("\.\.",$name) || ereg("\.\.",$file)) { |
|
49 |
if (isset($_REQUEST['file'])) $file=$_REQUEST['file']; |
25 |
echo "You are so cool..."; |
|
50 |
|
|
|
|
51 |
/** |
|
|
|
52 |
* Sicherheitsüberprüfung von $mop und $file |
|
|
|
53 |
*/ |
|
|
|
54 |
$verboten = array("\.\.","\.\.","\\\\","ftp:","www"); |
|
|
|
55 |
foreach($verboten as $kette) if( stristr($name, $kette) || stristr($file, $kette) ) { vkpLocation("index.php"); die(); } |
26 |
} else { |
|
56 |
|
|
|
|
57 |
/** |
|
|
|
58 |
* Wenn nur registrierte User Zugriff haben, immer zum Loginformular weiterleiten |
|
|
|
59 |
*/ |
|
|
|
60 |
global $usr_regonly, $admin; |
|
|
|
61 |
if ( $usr_regonly==1 AND !is_user($user) AND !is_admin($admin) AND ($name != "Your_Account") ) |
|
|
|
62 |
vkpLocation("modules.php?name=Your_Account"); |
27 |
if ($view == 0) { |
|
63 |
|
28 |
$modpath="modules/$name/$file.php"; |
|
64 |
/** |
29 |
if (file_exists($modpath)) { |
|
65 |
* Globale Variable, in der der Name des aktuellen Moduls steht |
|
|
|
66 |
* Diese variable wird weiter unten nur dann gefüllt, wenn es das Modul auch wirklich gibt und es geladen wird. |
|
|
|
67 |
*/ |
|
|
|
68 |
$GLOBALS['modul_name'] = ""; |
|
|
= |
69 |
|
|
|
-+ |
70 |
/** |
|
|
|
71 |
* Globale Variable, die markiert, ob die modules.php geladen ist |
|
|
|
72 |
*/ |
|
|
|
73 |
$GLOBALS['modulesload']=1; |
|
|
= |
74 |
|
|
|
<> |
75 |
/** |
|
|
|
76 |
* Auslesen, wer auf das Modul zugreifen darf |
|
|
|
77 |
*/ |
|
|
|
78 |
global $prefix, $dbi; |
30 |
include($modpath); |
|
79 |
if (!empty($name)) |
31 |
} else { |
|
80 |
{ |
32 |
die ("Sorry, such file doesn't exist..."); |
|
81 |
$module_active=$GLOBALS['modulecache'][$name]['active']; |
|
|
|
82 |
$view=$GLOBALS['modulecache'][$name]['view']; |
33 |
} |
|
83 |
} |
34 |
} |
|
84 |
|
35 |
if ($view == 1 AND is_user($user) || is_admin($admin)) { |
|
85 |
/** |
|
|
|
86 |
* Die Variable $vorhanden auf 0 setzen, sie wird auf 1 gesetzt, sobald das Modul auch wirklich existiert |
|
|
|
87 |
*/ |
|
|
|
88 |
$vorhanden=0; |
|
|
= |
89 |
|
|
|
<> |
90 |
/** |
|
|
|
91 |
* Hier wird das Modul aus /modules geladen |
|
|
|
92 |
*/ |
36 |
$modpath="modules/$name/$file.php"; |
|
93 |
$module_path="modules/$name/$file.php"; |
37 |
if (file_exists($modpath)) { |
|
94 |
if (file_exists($module_path)) $vorhanden=1; |
|
|
= |
95 |
|
|
|
<> |
96 |
/** |
|
|
|
97 |
* Wenn das Modul vorhanden ist: Laden |
|
|
|
98 |
*/ |
38 |
include($modpath); |
|
99 |
if($vorhanden==1) |
39 |
} else { |
|
100 |
{ |
40 |
die ("Sorry, such file doesn't exist..."); |
|
101 |
check_table($name); |
|
|
|
102 |
if(file_exists("modules/$name/functions.php")) include_once("modules/$name/functions.php"); |
|
|
|
103 |
if(file_exists("modules/$name/depend.php")) modul_ver_check($name); |
41 |
} |
|
104 |
|
42 |
} elseif ($view == 1 AND !is_user($user) || !is_admin($admin)) { |
|
105 |
/** |
43 |
$pagetitle = "- "._ACCESSDENIED.""; |
|
106 |
* Speichern des Modulnamens |
44 |
include("header.php"); |
|
107 |
* @global string $GLOBALS['modul_name'] |
45 |
title("$sitename: "._ACCESSDENIED.""); |
|
108 |
*/ |
|
|
|
109 |
$GLOBALS['modul_name']=$name; |
46 |
OpenTable(); |
|
110 |
|
47 |
echo "<center><b>"._RESTRICTEDAREA."</b><br><br>" |
|
111 |
/** |
|
|
|
112 |
* Speichern der geladenen Modul-Datei |
|
|
|
113 |
* @global string $GLOBALS['modul_datei'] |
48 |
.""._MODULEUSERS."" |
|
114 |
*/ |
|
|
|
115 |
$GLOBALS['modul_datei']=$file; |
49 |
.""._GOBACK.""; |
|
116 |
} |
50 |
CloseTable(); |
|
117 |
|
51 |
include("footer.php"); |
|
118 |
|
|
|
|
119 |
/** |
|
|
|
120 |
* Wenn das Modul unter /modules nicht existiert wird im 2. Verzeichnis nachgesehen |
52 |
die(); |
|
121 |
*/ |
|
|
|
122 |
elseif($vorhanden==0) |
53 |
} |
|
123 |
{ |
54 |
if ($view == 2 AND is_admin($admin)) { |
|
124 |
global $vkp_modul_verzeichnis; |
55 |
$modpath="modules/$name/$file.php"; |
|
125 |
$module_path="".$vkp_modul_verzeichnis."/$name/$file.php"; |
56 |
if (file_exists($modpath)) { |
|
126 |
if (file_exists($module_path)) $vorhanden=1; |
57 |
include($modpath); |
|
127 |
$view=2; |
58 |
} else { |
|
128 |
} |
59 |
die ("Sorry, such file doesn't exist..."); |
|
129 |
|
60 |
} |
|
130 |
|
61 |
} elseif ($view == 2 AND !is_admin($admin)) { |
|
131 |
/** |
62 |
$pagetitle = "- "._ACCESSDENIED.""; |
|
132 |
* Der folgende Abschnitt lädt das Modul |
|
|
|
133 |
*/ |
|
|
|
134 |
if ( ($vorhanden == 1)
&& ( ( $module_active == 1 ) OR ($module_active == 0 AND
is_admin($admin) OR ($name == $GLOBALS['aktivesmodul']))) ) |
|
|
|
135 |
{ |
|
|
|
136 |
/** |
|
|
|
137 |
* Hier werden die Variablen index/home gesetzt, wenn die Blöcke gesetzt wurden |
|
|
|
138 |
*/ |
|
|
|
139 |
global $index, $home; |
|
|
|
140 |
if( get_rightblocks( $GLOBALS['modul_name'] )==1) $index=1; |
|
|
|
141 |
if( get_messagebox($name)==1) $home=1; |
63 |
include("header.php"); |
|
142 |
|
64 |
title("$sitename: "._ACCESSDENIED.""); |
|
143 |
/** |
|
|
|
144 |
* Im Folgenden wird je nach gesetztem $view gearbeitet |
|
|
|
145 |
* $view gibt vor, wer ein Modul sehen darf: |
|
|
|
146 |
* 0 : Alle Besucher |
|
|
|
147 |
* 1 : Nur Benutzer |
|
|
|
148 |
* 2 : Nur Administratoren & Benutzergruppen |
|
|
|
149 |
* 3 : Unsichtbar (wird als 0 markiert, fällt also unter die erste Fallgruppe) |
|
|
|
150 |
*/ |
|
|
|
151 |
switch($view) |
|
|
|
152 |
{ |
65 |
OpenTable(); |
|
153 |
|
66 |
echo "<center><b>"._RESTRICTEDAREA."</b><br><br>" |
|
154 |
case 0: |
|
|
|
155 |
case 3: |
|
|
|
156 |
get_lang($name); |
|
|
|
157 |
include_once($module_path); |
|
|
|
158 |
break; |
67 |
.""._MODULESADMINS."" |
|
159 |
|
|
|
|
160 |
case 1: |
|
|
|
161 |
if ( is_user($user) || is_admin($admin) ) |
|
|
|
162 |
{ |
|
|
|
163 |
get_lang($name); |
|
|
|
164 |
include_once($module_path); |
|
|
|
165 |
} |
|
|
|
166 |
else module_access_denied(_MODULEUSERS); |
|
|
|
167 |
break; |
68 |
.""._GOBACK.""; |
|
168 |
|
|
|
|
169 |
case 2: |
69 |
CloseTable(); |
|
170 |
|
|
|
|
171 |
/** |
|
|
|
172 |
* Gruppe prüfen |
|
|
|
173 |
*/ |
|
|
|
174 |
$gruppe_valid=0; |
|
|
|
175 |
if(is_user($user)) |
|
|
|
176 |
{ |
|
|
|
177 |
global $usr_login; |
|
|
|
178 |
if($usr_login==1) $usertemp=$_SESSION['user']; |
|
|
|
179 |
else $usertemp=$_COOKIE['user']; |
|
|
|
180 |
$usertemp=base64_decode($usertemp); |
|
|
|
181 |
$usertemp=explode(":",$usertemp); |
|
|
|
182 |
$sql="SELECT * FROM ".$prefix."_ug_users WHERE
uname='".$usertemp[1]."'"; |
|
|
|
183 |
$query=sql_query($sql,$dbi); |
|
|
|
184 |
while($ergebnis=sql_fetch_array($query,$dbi)) |
|
|
|
185 |
{ |
|
|
|
186 |
$groupid=$ergebnis['groupid']; |
|
|
|
187 |
$sql="SELECT * FROM ".$prefix."_ug_groups WHERE id='".$groupid."'"; |
|
|
|
188 |
$queryx=sql_query($sql,$dbi); |
|
|
|
189 |
$ergebnist=sql_fetch_array($queryx,$dbi); |
|
|
|
190 |
if(eregi("".$name."//#//",$ergebnist['module'])) $gruppe_valid=1; |
|
|
|
191 |
} |
|
|
|
192 |
} |
70 |
include("footer.php"); |
|
193 |
|
|
|
|
194 |
/** |
|
|
|
195 |
* Wenn User in der Gruppe ist oder Admin zugreift |
|
|
|
196 |
*/ |
|
|
|
197 |
if( is_admin($admin) OR $gruppe_valid==1) |
|
|
|
198 |
{ |
|
|
|
199 |
get_lang($name); |
|
|
|
200 |
include_once($module_path); |
|
|
|
201 |
} |
71 |
die(); |
|
202 |
|
|
|
|
203 |
/** |
|
|
|
204 |
* Zugriff wenn nicht |
|
|
|
205 |
*/ |
|
|
|
206 |
elseif( !is_admin($admin) OR $gruppe_valid!=1)
module_access_denied(_MODULESADMINS); |
72 |
} |
|
207 |
|
|
|
|
208 |
break; |
73 |
} |
|
209 |
|
74 |
} else { |
|
210 |
} |
75 |
include("header.php"); |
|
211 |
} |
76 |
OpenTable(); |
|
212 |
|
77 |
echo "<center>"._MODULENOTACTIVE."<br><br>" |
|
213 |
/** |
78 |
.""._GOBACK."</center>"; |
|
214 |
* Wenn das Modul nicht geladen werden konnte |
|
|
|
215 |
*/ |
79 |
CloseTable(); |
|
216 |
else |
80 |
include("footer.php"); |
|
217 |
switch($vorhanden) |
81 |
} |
|
218 |
{ |
82 |
} else { |
|
219 |
|
83 |
die ("Sorry, you can't access this file directly..."); |
|
220 |
// Das Modul existiert nicht |
|
|
|
221 |
case 0: |
|
|
|
222 |
vkpLocation("index.php?problem=3"); |
|
|
|
223 |
break; |
|
|
|
224 |
|
|
|
|
225 |
// Modul exitiert, ist aber nicht aktiv |
|
|
|
226 |
case 1: |
|
|
|
227 |
module_not_active();
|
|
|
|
228 |
break; |
84 |
} |
|
229 |
} |
85 |
|
= |
230 |
|
86 |
?> |
|
231 |
?> |