Call to undefined function getSelect()...
Het script is een gratis script van http://ideabox.phpoutsourcing.com
om een ideeenbus aan te maken. Deze wil ik achter een beschermde (reeds bestaand) inlogsysteem hangen. Nu is dat gelukt, maar ik krijg nog steeds foutmeldingen.
in het bestand dbproperty.php wordt verwezen naar de functie:
function load( &$base, $whereFields="", $whatFields="*" )
{
global $applName;
$query = $base->getSelect();
if( !$query )
{
$typ = $base->getTypeInfo();
$tableName = $applName."_".get_class($base);
$firstField = TRUE;
$query = "SELECT $whatFields FROM $tableName";
if( $whereFields=="" ) $whereFields=getPrimaryKey( $typ );
foreach( $whereFields as $index=>$attribute ) {
if( !isset($base->{$attribute}) ) unset($whereFields[$index]);
}
if( sizeof($whereFields)==0 ) {
$whereFields = array_keys( $typ["attributes"] );
foreach( $whereFields as $index=>$attribute ) {
if(!isset($base->{$attribute})) unset($whereFields[$index]);
}
}
foreach( $whereFields as $key ) {
if( isset($base->{$key}) ) {
$value = $base->{$key};
$value=addcslashes($value,"'\\");
if( $firstField ) {
$query .= " WHERE $tableName.$key='$value'";
$firstField = FALSE;
}
else $query .= " AND $tableName.$key='$value'";
}
}
}
$ret = loadSQL( $base, $query );
return $ret;
}
applname staat in een constants.php die wordt geinclude in een include bestand:
$applName = "idea";
include bestand:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
include($gorumDir.'/generformlib_date.php');
include($gorumDir.'/notification.php');
include($gorumDir.'/zmail.php');
include($ideaDir.'/user.php');
include($ideaDir.'/globalsettings.php');
include($ideaDir.'/init.php');
include($ideaDir.'/idea.php');
include($ideaDir.'/history.php');
include($ideaDir.'/cord.php');
?>
include($gorumDir.'/generformlib_date.php');
include($gorumDir.'/notification.php');
include($gorumDir.'/zmail.php');
include($ideaDir.'/user.php');
include($ideaDir.'/globalsettings.php');
include($ideaDir.'/init.php');
include($ideaDir.'/idea.php');
include($ideaDir.'/history.php');
include($ideaDir.'/cord.php');
?>
in idea en in history wordt een functie get_select() aangemaakt die er zo uit ziet:
voor Idea.php
function getSelect()
{
global $categoryClassName, $applName,$gorumroll,$lll;
global $idea_typ, $userClassName;
$select = "SELECT ".getAllColumns($idea_typ, "i").
" u1.name AS creatorName, u2.name AS respName ".
" FROM $applName"."_idea AS i, ".
$applName."_$userClassName AS u1, ".
$applName."_$userClassName AS u2 ".
"WHERE i.creatorId=u1.id AND i.respId=u2.id ".
"AND i.id=$this->id";
return $select;
}
en history.php:
function getSelect()
{
global $categoryClassName, $applName,$gorumroll,$lll;
global $history_typ, $userClassName;
$select = "SELECT ".getAllColumns($history_typ, "h").
" u.name AS ownerName ".
" FROM $applName"."_history AS h, ".
$applName."_$userClassName AS u ".
"WHERE h.ownerId=u.id AND h.id=$this->id";
return $select;
}
dit komt uit de constants.php:
$userClassName = "ideauser";
kan iemand mij misschien hierbij helpen?
Of gebeurd dat al?
Roep je je functie aan voor dat je hem declareert?
en de pagina met de functies worden eerder aangeroepen.
dit gedeelte heb ik opgelost trouwens...ik weet alleen niet meer hoe, maar ik krijg geen foutmeldingen meer, maar ook geen output dus ja...
Fatal error: Call to undefined function: loadhtmllist() in /web/sites/preview.ngn.nl/www/ideabox/gorum/htmllist.php on line 17
en hoe luiden LETTERLIJK de eerste 2 functies:
function loadHtmlList($base,&$list)
{
$base->hasObjectRights($hasRight, Priv_load, TRUE);
$query=getListQuery($base);
$base->loadObjectsSQL($query,$list, TRUE);
return ok;
}
function showHtmlList($base,&$s)
{
global $lll,$colspNum, $searchClassName;
$s="";
$base->loadHtmlList($list);
$base->hasGeneralRights($rights);
$rangeSelText = showRangeSelector($base);
$typ=$base->getTypeInfo();
$attrs=$typ["attributes"];
$colspNum=0;
if( !in_array("notools", $typ) ) $colspNum++;
foreach( $attrs as $attr=>$val ) {
if (in_array("list",$val) && !in_array("in new line", $val)) {
$colspNum++;
}
}
hoofdlettergevoelig? in je foutmelding zitten geen hoofdletters, in de gedeclareerde functie wel...
ja dat vind ik dus ook vreemd...
ik weet ongeveer de oorzaak
hij wordt als een class aangeroepen in showhtmllist
ik heb nog wel iets anders...
ik heb een binair rechtensysteem voor een applicatie.
In deze applicatie wordt iets ingebouwd waartoe bepaalde mensen toegang hebben. Deze applicatie kan weer aangepast worden en hiervoor zijn bepaalde mods verantwoordelijk.
Deze hebben rechten. In de oude situatie van de applicatie had je alleen recht 1 en 0, dus als je 1 had, was je admin en anders ben retourneert ie "FALSE". In de database heet dit $isAdmin die dus op 1 of 0 staat.
Nu moet ik dit: if (($cur_session->get_rights() & (16 | 64)) > 0) {
implementeren. Kan ik dan ook $isAdmin = (($cur_session->get_rights() & (16 | 64)) > 0)
of zoiets doen? $isAdmin bestaat zometeen dus niet meer. Aan de hand van de rechten 16 en 64 wordt bepaald of de gebruiker mag moderaten of niet.
dit zijn belangrijke functies in het verhaal:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
function hasAdminRights( &$hasRight, $base="", $method="" )
{
global $gorumuser;
global $gorumrecognised;
$hasRight = ($gorumrecognised && $gorumuser->isAdm);
return ok;
}
function hasGeneralRights($base, &$rights)
{
global $generalRight;
$rights = array();
$base->hasObjectRights($hasRight, Priv_load);
if( $generalRight ) $rights[Priv_load] = $hasRight;
$base->hasObjectRights($hasRight, Priv_create);
if( $generalRight ) $rights[Priv_create] = $hasRight;
$base->hasObjectRights($hasRight, Priv_modify);
if( $generalRight ) $rights[Priv_modify] = $hasRight;
$base->hasObjectRights($hasRight, Priv_delete);
if( $generalRight ) $rights[Priv_delete] = $hasRight;
}
?>
function hasAdminRights( &$hasRight, $base="", $method="" )
{
global $gorumuser;
global $gorumrecognised;
$hasRight = ($gorumrecognised && $gorumuser->isAdm);
return ok;
}
function hasGeneralRights($base, &$rights)
{
global $generalRight;
$rights = array();
$base->hasObjectRights($hasRight, Priv_load);
if( $generalRight ) $rights[Priv_load] = $hasRight;
$base->hasObjectRights($hasRight, Priv_create);
if( $generalRight ) $rights[Priv_create] = $hasRight;
$base->hasObjectRights($hasRight, Priv_modify);
if( $generalRight ) $rights[Priv_modify] = $hasRight;
$base->hasObjectRights($hasRight, Priv_delete);
if( $generalRight ) $rights[Priv_delete] = $hasRight;
}
?>
en deze klasse ook:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?
class User extends Object
{
function hasObjectRights(&$hasRight, $method, $giveError=FALSE)
{
global $gorumrecognised, $gorumauthlevel, $gorumuser,$lll;
global $generalRight;
$isAdm = ($gorumrecognised && $gorumuser->isAdm);
$generalRight = FALSE;
if( $method==Priv_delete && $isAdm)
{
$hasRight=TRUE;
$generalRight = TRUE;
}
elseif($method==Priv_delete && isset($this->id) &&
$this->id==$gorumuser->id)
{
$hasRight=TRUE;
$generalRight = FALSE;
}
elseif( $method==Priv_load )
{
$hasRight=TRUE;
$generalRight = TRUE;
}
elseif( $method==Priv_create )
{
$hasRight=TRUE;
$generalRight = TRUE;
}
else if( !$gorumrecognised )
{
$hasRight=FALSE;
$generalRight = TRUE;
}
elseif( $isAdm )
{
$hasRight=TRUE;
$generalRight = TRUE;
}
elseif( isset($this->id) && $this->id==$gorumuser->id)
{
$hasRight=TRUE;
$generalRight = FALSE;
}
else
{
$hasRight=FALSE;
$generalRight = FALSE;
}
if( !$hasRight && $giveError )
{
handleError($lll["permission_denied"]);
}
return ok;
}
?>
class User extends Object
{
function hasObjectRights(&$hasRight, $method, $giveError=FALSE)
{
global $gorumrecognised, $gorumauthlevel, $gorumuser,$lll;
global $generalRight;
$isAdm = ($gorumrecognised && $gorumuser->isAdm);
$generalRight = FALSE;
if( $method==Priv_delete && $isAdm)
{
$hasRight=TRUE;
$generalRight = TRUE;
}
elseif($method==Priv_delete && isset($this->id) &&
$this->id==$gorumuser->id)
{
$hasRight=TRUE;
$generalRight = FALSE;
}
elseif( $method==Priv_load )
{
$hasRight=TRUE;
$generalRight = TRUE;
}
elseif( $method==Priv_create )
{
$hasRight=TRUE;
$generalRight = TRUE;
}
else if( !$gorumrecognised )
{
$hasRight=FALSE;
$generalRight = TRUE;
}
elseif( $isAdm )
{
$hasRight=TRUE;
$generalRight = TRUE;
}
elseif( isset($this->id) && $this->id==$gorumuser->id)
{
$hasRight=TRUE;
$generalRight = FALSE;
}
else
{
$hasRight=FALSE;
$generalRight = FALSE;
}
if( !$hasRight && $giveError )
{
handleError($lll["permission_denied"]);
}
return ok;
}
?>
en klasse object natuurlijk, maar die is erg groot.
--------------------------------------------------------------------------------