serg-php
08.06.2008, 11:04
Имеется функция:
function hwGetExtraOptions( )
{
global $db;
static $A_RES = NULL;
if ( isset( $A_RES ) )
{
return $A_RES;
}
$sql = "";
$a_v = array_keys( hwgetextraoptionids( ) );
foreach ( $a_v as $k )
{
if ( defined( "ADMIN_AREA" ) || constant( "EN_AD_{$k}" ) )
{
$sql .= ",'{$k}'";
}
}
$A_RES = array( );
if ( !$sql )
{
return $A_RES;
}
$a_v = $db->select( "SELECT * FROM ".TBL_EXTRA_OPT." WHERE type IN(".substr( $sql, 1 ).") AND active=\"1\" ORDER BY type,price" );
if ( hwismodeventallowed( "onExtraOptionsGet" ) )
{
$args = array(
"A_EXTRA" => $a_v
);
hwmodevent( "onExtraOptionsGet", &$args );
$a_v = $args['A_EXTRA'];
}
if ( $a_v )
{
$A_TRAN = hwlangphrase( );
if ( $A_TRAN )
{
foreach ( $a_v as $k => $v )
{
if ( $A_TRAN["ex_opt-{$v['id']}"] )
{
$a_v[$k]['descr'] = $A_TRAN["ex_opt-{$v['id']}"];
}
}
}
}
$a_v[] = false;
$a_fee = $a_descr = array( );
foreach ( $a_v as $v )
{
if ( isset( $p_v['type'] ) && $p_v['type'] != $v['type'] )
{
$id = "AD_{$p_v['type']}";
$A_RES[$id] = array(
"ID" => $id,
"NAME" => "{ex_".$p_v['type']."}",
"INPUT" => "menu",
"EN_ORD" => 1,
"DT" => EX_OPT_EXP * 86400,
"FEE" => $a_fee,
"DESCR" => $a_descr
);
$a_fee = $a_descr = array( );
}
$p_v = $v;
$a_fee[$v['val']] = $v['price'];
$a_descr[$v['val']] = $v['descr'];
}
return $A_RES;
}
Получаю сообщение об ошибке:
Warning: constant() [function.constant]: Couldn't find constant EN_AD_0 in Y:\home\localhost\www\mysite\inc\lib.inc.php on line 2134
Warning: constant() [function.constant]: Couldn't find constant EN_AD_1 in Y:\home\localhost\www\mysite\inc\lib.inc.php on line 2134
Warning: constant() [function.constant]: Couldn't find constant EN_AD_2 in Y:\home\localhost\www\mysite\inc\lib.inc.php on line 2134
Warning: constant() [function.constant]: Couldn't find constant EN_AD_3 in Y:\home\localhost\www\mysite\inc\lib.inc.php on line 2134
Проблема в строке:
if ( defined( "ADMIN_AREA" ) || constant( "EN_AD_{$k}" ) )
Какие будут соображения по устранению?
function hwGetExtraOptions( )
{
global $db;
static $A_RES = NULL;
if ( isset( $A_RES ) )
{
return $A_RES;
}
$sql = "";
$a_v = array_keys( hwgetextraoptionids( ) );
foreach ( $a_v as $k )
{
if ( defined( "ADMIN_AREA" ) || constant( "EN_AD_{$k}" ) )
{
$sql .= ",'{$k}'";
}
}
$A_RES = array( );
if ( !$sql )
{
return $A_RES;
}
$a_v = $db->select( "SELECT * FROM ".TBL_EXTRA_OPT." WHERE type IN(".substr( $sql, 1 ).") AND active=\"1\" ORDER BY type,price" );
if ( hwismodeventallowed( "onExtraOptionsGet" ) )
{
$args = array(
"A_EXTRA" => $a_v
);
hwmodevent( "onExtraOptionsGet", &$args );
$a_v = $args['A_EXTRA'];
}
if ( $a_v )
{
$A_TRAN = hwlangphrase( );
if ( $A_TRAN )
{
foreach ( $a_v as $k => $v )
{
if ( $A_TRAN["ex_opt-{$v['id']}"] )
{
$a_v[$k]['descr'] = $A_TRAN["ex_opt-{$v['id']}"];
}
}
}
}
$a_v[] = false;
$a_fee = $a_descr = array( );
foreach ( $a_v as $v )
{
if ( isset( $p_v['type'] ) && $p_v['type'] != $v['type'] )
{
$id = "AD_{$p_v['type']}";
$A_RES[$id] = array(
"ID" => $id,
"NAME" => "{ex_".$p_v['type']."}",
"INPUT" => "menu",
"EN_ORD" => 1,
"DT" => EX_OPT_EXP * 86400,
"FEE" => $a_fee,
"DESCR" => $a_descr
);
$a_fee = $a_descr = array( );
}
$p_v = $v;
$a_fee[$v['val']] = $v['price'];
$a_descr[$v['val']] = $v['descr'];
}
return $A_RES;
}
Получаю сообщение об ошибке:
Warning: constant() [function.constant]: Couldn't find constant EN_AD_0 in Y:\home\localhost\www\mysite\inc\lib.inc.php on line 2134
Warning: constant() [function.constant]: Couldn't find constant EN_AD_1 in Y:\home\localhost\www\mysite\inc\lib.inc.php on line 2134
Warning: constant() [function.constant]: Couldn't find constant EN_AD_2 in Y:\home\localhost\www\mysite\inc\lib.inc.php on line 2134
Warning: constant() [function.constant]: Couldn't find constant EN_AD_3 in Y:\home\localhost\www\mysite\inc\lib.inc.php on line 2134
Проблема в строке:
if ( defined( "ADMIN_AREA" ) || constant( "EN_AD_{$k}" ) )
Какие будут соображения по устранению?