2003-07-11 17:27:56 +08:00
< ? php
2004-01-08 19:45:57 +08:00
//
// ZoneMinder web events view file, $Date$, $Revision$
// Copyright (C) 2003 Philip Coombes
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
2003-07-11 17:27:56 +08:00
2004-01-08 19:45:57 +08:00
if ( ! canView ( 'Events' ) )
{
$view = " error " ;
return ;
}
2004-02-16 03:42:00 +08:00
$sql = " select * from Monitors " ;
if ( ! ( $result = mysql_query ( $sql )) )
die ( mysql_error () );
while ( $row = mysql_fetch_assoc ( $result ) )
{
$monitors [ $row [ Id ]] = $row ;
}
$count_sql = " select count(E.Id) as EventCount from Monitors as M inner join Events as E on (M.Id = E.MonitorId) where " ;
2004-02-22 05:46:16 +08:00
$events_sql = " select E.Id,E.MonitorId,M.Name As MonitorName,E.Name,E.StartTime,E.Length,E.Frames,E.AlarmFrames,E.TotScore,E.AvgScore,E.MaxScore,E.Archived,E.LearnState from Monitors as M inner join Events as E on (M.Id = E.MonitorId) where " ;
2004-02-16 03:42:00 +08:00
if ( $user [ 'MonitorIds' ] )
{
$count_sql .= " M.Id in ( " . join ( " , " , preg_split ( '/["\'\s]*,["\'\s]*/' , $user [ 'MonitorIds' ] ) ) . " ) " ;
$events_sql .= " M.Id in ( " . join ( " , " , preg_split ( '/["\'\s]*,["\'\s]*/' , $user [ 'MonitorIds' ] ) ) . " ) " ;
}
else
{
$count_sql .= " 1 " ;
$events_sql .= " 1 " ;
}
2004-03-10 22:23:22 +08:00
parseSort ();
parseFilter ();
2004-02-16 03:42:00 +08:00
2004-01-08 19:45:57 +08:00
if ( $filter_sql )
{
2004-03-10 22:23:22 +08:00
$count_sql .= $filter_sql ;
$events_sql .= $filter_sql ;
2004-01-08 19:45:57 +08:00
}
$events_sql .= " order by $sort_column $sort_order " ;
if ( $page )
{
2004-04-21 17:20:28 +08:00
$limit_start = (( $page - 1 ) * EVENT_HEADER_LINES );
if ( empty ( $limit ) )
{
$limit_amount = EVENT_HEADER_LINES ;
}
else
{
$limit_left = $limit - $limit_start ;
$limit_amount = ( $limit_left > EVENT_HEADER_LINES ) ? EVENT_HEADER_LINES : $limit_left ;
}
$events_sql .= " limit $limit_start , $limit_amount " ;
}
elseif ( ! empty ( $limit ) )
{
$events_sql .= " limit 0, $limit " ;
2004-01-08 19:45:57 +08:00
}
2003-07-11 17:27:56 +08:00
?>
< html >
< head >
2004-02-16 03:42:00 +08:00
< title > ZM - < ? = $zmSlangEvents ?> </title>
2003-07-11 17:27:56 +08:00
< link rel = " stylesheet " href = " zm_styles.css " type = " text/css " >
< script language = " JavaScript " >
function newWindow ( Url , Name , Width , Height )
{
var Name = window . open ( Url , Name , " resizable,scrollbars,width= " + Width + " ,height= " + Height );
}
2004-02-16 03:42:00 +08:00
function eventWindow ( Url , Name , Width , Height )
2003-07-11 17:27:56 +08:00
{
2004-02-16 03:42:00 +08:00
var Name = window . open ( Url , Name , " resizable,width= " + Width + " ,height= " + Height );
2003-07-11 17:27:56 +08:00
}
function filterWindow ( Url , Name )
{
var Name = window . open ( Url , Name , " resizable,scrollbars,width=<?= $jws['filter'] ['w'] ?>,height=<?= $jws['filter'] ['h'] ?> " );
}
function closeWindow ()
{
window . close ();
// This is a hack. The only way to close an existing window is to try and open it!
2004-02-16 03:42:00 +08:00
var filterWindow = window . open ( " <?= $PHP_SELF ?>?view=none " , 'zmFilter' , 'width=1,height=1' );
2003-07-11 17:27:56 +08:00
filterWindow . close ();
}
function checkAll ( form , name )
{
for ( var i = 0 ; i < form . elements . length ; i ++ )
if ( form . elements [ i ] . name . indexOf ( name ) == 0 )
form . elements [ i ] . checked = 1 ;
form . delete_btn . disabled = false ;
< ? php if ( LEARN_MODE ) { ?>
form . learn_btn . disabled = false ;
form . learn_state . disabled = false ;
< ? php } ?>
}
function configureButton ( form , name )
{
var checked = false ;
for ( var i = 0 ; i < form . elements . length ; i ++ )
{
if ( form . elements [ i ] . name . indexOf ( name ) == 0 )
{
if ( form . elements [ i ] . checked )
{
checked = true ;
break ;
}
}
}
form . delete_btn . disabled = ! checked ;
< ? php if ( LEARN_MODE ) { ?>
form . learn_btn . disabled = ! checked ;
form . learn_state . disabled = ! checked ;
< ? php } ?>
}
window . focus ();
2003-09-23 17:52:45 +08:00
< ? php
2004-01-08 19:45:57 +08:00
if ( isset ( $filter ) )
{
2003-09-23 17:52:45 +08:00
?>
//opener.location.reload(true);
2004-02-16 03:42:00 +08:00
filterWindow ( '<?= $PHP_SELF ?>?view=filter&page=<?= $page ?><?= $filter_query ?>' , 'zmFilter' );
2004-03-10 22:23:22 +08:00
location . replace ( '<?= $PHP_SELF ?>?view=<?= $view ?>&page=<?= $page ?><?= $filter_query ?>' );
2003-09-23 17:52:45 +08:00
</ script >
</ head >
</ html >
< ? php
2004-01-08 19:45:57 +08:00
}
else
{
if ( ! ( $result = mysql_query ( $count_sql )) )
die ( mysql_error () );
$row = mysql_fetch_assoc ( $result );
$n_events = $row [ 'EventCount' ];
2004-04-21 17:20:28 +08:00
if ( ! empty ( $limit ) && $n_events > $limit )
{
$n_events = $limit ;
}
2003-09-23 17:52:45 +08:00
?>
2003-07-11 17:27:56 +08:00
</ script >
</ head >
< body >
< form name = " event_form " method = " post " action = " <?= $PHP_SELF ?> " >
< input type = " hidden " name = " view " value = " <?= $view ?> " >
< input type = " hidden " name = " action " value = " " >
2003-10-08 21:03:47 +08:00
< input type = " hidden " name = " page " value = " <?= $page ?> " >
2004-04-21 17:20:28 +08:00
< ? = $filter_fields ?>
< input type = " hidden " name = " sort_field " value = " <?= $sort_field ?> " >
< input type = " hidden " name = " sort_asc " value = " <?= $sort_asc ?> " >
< input type = " hidden " name = " limit " value = " <?= $limit ?> " >
2003-07-11 17:27:56 +08:00
< center >< table width = " 96% " align = " center " border = " 0 " cellspacing = " 1 " cellpadding = " 0 " >
< tr >
< td valign = " top " >< table border = " 0 " cellspacing = " 0 " cellpadding = " 0 " width = " 100% " >
< tr >
2004-02-16 03:42:00 +08:00
< td align = " left " class = " text " width = " 20% " >< b >< ? = sprintf ( $zmClangEventCount , $n_events , zmVlang ( $zmVlangEvent , $n_events ) ) ?> </b></td>
2003-10-08 21:03:47 +08:00
< ? php
2004-01-08 19:45:57 +08:00
$pages = ( int ) ceil ( $n_events / EVENT_HEADER_LINES );
if ( $pages <= 1 )
{
2003-10-08 21:03:47 +08:00
?>
< td align = " center " class = " text " width = " 60% " >& nbsp ; </ td >
< td align = " center " class = " text " width = " 10% " >& nbsp ; </ td >
< ? php
2004-01-08 19:45:57 +08:00
}
else
{
if ( $page )
2003-10-08 21:03:47 +08:00
{
2004-01-08 19:45:57 +08:00
$max_shortcuts = 5 ;
2003-10-08 21:03:47 +08:00
?>
< td align = " center " class = " text " width = " 34% " >
< ? php
2004-01-08 19:45:57 +08:00
if ( $page < 0 )
$page = 1 ;
if ( $page > $pages )
$page = $pages ;
2003-10-08 21:03:47 +08:00
2004-01-08 19:45:57 +08:00
if ( $page > 1 )
{
$new_pages = array ();
$pages_used = array ();
$lo_exp = max ( 2 , log ( $page - 1 ) / log ( $max_shortcuts ));
for ( $i = 0 ; $i < $max_shortcuts ; $i ++ )
2003-10-08 21:03:47 +08:00
{
2004-01-08 19:45:57 +08:00
$new_page = round ( $page - pow ( $lo_exp , $i ));
if ( isset ( $pages_used [ $new_page ]) )
continue ;
if ( $new_page <= 1 )
break ;
$pages_used [ $new_page ] = true ;
array_unshift ( $new_pages , $new_page );
}
if ( ! isset ( $pages_used [ 1 ]) )
array_unshift ( $new_pages , 1 );
2003-10-08 21:03:47 +08:00
2004-01-08 19:45:57 +08:00
foreach ( $new_pages as $new_page )
{
2003-10-08 21:03:47 +08:00
?>
2004-04-21 17:20:28 +08:00
< a href = " <?= $PHP_SELF ?>?view=<?= $view ?>&page=<?= $new_page ?><?= $filter_query ?><?= $sort_query ?>&limit=<?= $limit ?> " >< ? = $new_page ?> </a>
2003-10-08 21:03:47 +08:00
< ? php
}
2004-01-08 19:45:57 +08:00
}
2003-10-08 21:03:47 +08:00
?>
-& nbsp ; < ? = $page ?> -
< ? php
2004-01-08 19:45:57 +08:00
if ( $page < $pages )
{
$new_pages = array ();
$pages_used = array ();
$hi_exp = max ( 2 , log ( $pages - $page ) / log ( $max_shortcuts ));
for ( $i = 0 ; $i < $max_shortcuts ; $i ++ )
2003-10-08 21:03:47 +08:00
{
2004-01-08 19:45:57 +08:00
$new_page = round ( $page + pow ( $hi_exp , $i ));
if ( isset ( $pages_used [ $new_page ]) )
continue ;
if ( $new_page > $pages )
break ;
$pages_used [ $new_page ] = true ;
array_push ( $new_pages , $new_page );
}
if ( ! isset ( $pages_used [ $pages ]) )
array_push ( $new_pages , $pages );
2003-10-08 21:03:47 +08:00
2004-01-08 19:45:57 +08:00
foreach ( $new_pages as $new_page )
{
2003-10-08 21:03:47 +08:00
?>
2004-04-21 17:20:28 +08:00
& nbsp ; < a href = " <?= $PHP_SELF ?>?view=<?= $view ?>&page=<?= $new_page ?><?= $filter_query ?><?= $sort_query ?>&limit=<?= $limit ?> " >< ? = $new_page ?> </a>
2003-10-08 21:03:47 +08:00
< ? php
}
2004-01-08 19:45:57 +08:00
}
2003-10-08 21:03:47 +08:00
?>
</ td >
2004-04-21 17:20:28 +08:00
< td align = " right " class = " text " width = " 10% " >< a href = " <?= $PHP_SELF ?>?view=<?= $view ?>&page=0<?= $filter_query ?><?= $sort_query ?>&limit=<?= $limit ?> " >< ? = $zmSlangViewAll ?> </a></td>
2003-10-08 21:03:47 +08:00
< ? php
2004-01-08 19:45:57 +08:00
}
else
{
2003-10-08 21:03:47 +08:00
?>
< td align = " center " class = " text " width = " 60% " >& nbsp ; </ td >
2004-04-21 17:20:28 +08:00
< td align = " center " class = " text " width = " 10% " >< a href = " <?= $PHP_SELF ?>?view=<?= $view ?>&page=1&<?= $filter_query ?><?= $sort_query ?>&limit=<?= $limit ?> " >< ? = $zmSlangViewPaged ?> </a></td>
2003-10-08 21:03:47 +08:00
< ? php
}
2004-01-08 19:45:57 +08:00
}
2003-10-08 21:03:47 +08:00
?>
2004-01-07 20:57:07 +08:00
< td align = " right " class = " text " width = " 10% " >< a href = " javascript: closeWindow(); " >< ? = $zmSlangClose ?> </a></td>
2003-07-11 17:27:56 +08:00
</ tr >
2003-10-08 21:03:47 +08:00
< tr >< td colspan = " 4 " class = " text " >& nbsp ; </ td ></ tr >
2003-07-11 17:27:56 +08:00
< tr >
2004-01-07 20:57:07 +08:00
< td align = " left " class = " text " >< a href = " javascript: location.reload(true); " >< ? = $zmSlangRefresh ?> </td>
2004-02-19 19:33:47 +08:00
< td colspan = " 2 " align = " right " class = " text " >< a href = " javascript: filterWindow( '<?= $PHP_SELF ?>?view=filter&page=<?= $page ?><?= $filter_query ?>', 'zmFilter' ); " >< ? = $zmSlangShowFilterWindow ?> </a></td>
2004-01-08 18:09:35 +08:00
< td align = " right " class = " text " >< ? php if ( canEdit ( 'Events' ) ) { ?> <a href="javascript: checkAll( document.event_form, 'mark_eids' );"><?= $zmSlangCheckAll ?></a><?php } else { ?> <?php } ?></td>
2003-07-11 17:27:56 +08:00
</ tr >
2003-10-08 21:03:47 +08:00
< tr >< td colspan = " 4 " class = " text " >& nbsp ; </ td ></ tr >
< tr >< td colspan = " 4 " >< table border = " 0 " cellspacing = " 1 " cellpadding = " 0 " width = " 100% " bgcolor = " #7F7FB2 " >
2003-07-11 17:27:56 +08:00
< ? php
2004-01-08 19:45:57 +08:00
flush ();
$count = 0 ;
if ( ! ( $result = mysql_query ( $events_sql )) )
die ( mysql_error () );
while ( $event = mysql_fetch_assoc ( $result ) )
{
if ( ( $count ++% EVENT_HEADER_LINES ) == 0 )
2003-09-23 17:52:45 +08:00
{
2003-07-11 17:27:56 +08:00
?>
< tr align = " center " bgcolor = " #FFFFFF " >
2004-04-21 17:20:28 +08:00
< td class = " text " >< a href = " <?= $PHP_SELF ?>?view=<?= $view ?>&page=1&<?= $filter_query ?>&sort_field=Id&sort_asc=<?= $sort_field == 'Id'?! $sort_asc :0 ?>&limit=<?= $limit ?> " >< ? = $zmSlangId ?> <?php if ( $sort_field == "Id" ) if ( $sort_asc ) echo "(^)"; else echo "(v)"; ?></a></td>
< td class = " text " >< a href = " <?= $PHP_SELF ?>?view=<?= $view ?>&page=1&<?= $filter_query ?>&sort_field=Name&sort_asc=<?= $sort_field == 'Name'?! $sort_asc :0 ?>&limit=<?= $limit ?> " >< ? = $zmSlangName ?> <?php if ( $sort_field == "Name" ) if ( $sort_asc ) echo "(^)"; else echo "(v)"; ?></a></td>
< td class = " text " >< a href = " <?= $PHP_SELF ?>?view=<?= $view ?>&page=1&<?= $filter_query ?>&sort_field=MonitorName&sort_asc=<?= $sort_field == 'MonitorName'?! $sort_asc :0 ?>&limit=<?= $limit ?> " >< ? = $zmSlangMonitor ?> <?php if ( $sort_field == "MonitorName" ) if ( $sort_asc ) echo "(^)"; else echo "(v)"; ?></a></td>
< td class = " text " >< a href = " <?= $PHP_SELF ?>?view=<?= $view ?>&page=1&<?= $filter_query ?>&sort_field=StartTime&sort_asc=<?= $sort_field == 'StartTime'?! $sort_asc :0 ?>&limit=<?= $limit ?> " >< ? = $zmSlangTime ?> <?php if ( $sort_field == "StartTime" ) if ( $sort_asc ) echo "(^)"; else echo "(v)"; ?></a></td>
2004-06-30 22:39:08 +08:00
< td class = " text " >< a href = " <?= $PHP_SELF ?>?view=<?= $view ?>&page=1&<?= $filter_query ?>&sort_field=Length&sort_asc=<?= $sort_field == 'Length'?! $sort_asc :0 ?>&limit=<?= $limit ?> " >< ? = $zmSlangDuration ?> <?php if ( $sort_field == "Length" ) if ( $sort_asc ) echo "(^)"; else echo "(v)"; ?></a></td>
2004-04-21 17:20:28 +08:00
< td class = " text " >< a href = " <?= $PHP_SELF ?>?view=<?= $view ?>&page=1&<?= $filter_query ?>&sort_field=Frames&sort_asc=<?= $sort_field == 'Frames'?! $sort_asc :0 ?>&limit=<?= $limit ?> " >< ? = $zmSlangFrames ?> <?php if ( $sort_field == "Frames" ) if ( $sort_asc ) echo "(^)"; else echo "(v)"; ?></a></td>
< td class = " text " >< a href = " <?= $PHP_SELF ?>?view=<?= $view ?>&page=1&<?= $filter_query ?>&sort_field=AlarmFrames&sort_asc=<?= $sort_field == 'AlarmFrames'?! $sort_asc :0 ?>&limit=<?= $limit ?> " >< ? = $zmSlangAlarmBrFrames ?> <?php if ( $sort_field == "AlarmFrames" ) if ( $sort_asc ) echo "(^)"; else echo "(v)"; ?></a></td>
< td class = " text " >< a href = " <?= $PHP_SELF ?>?view=<?= $view ?>&page=1&<?= $filter_query ?>&sort_field=TotScore&sort_asc=<?= $sort_field == 'TotScore'?! $sort_asc :0 ?>&limit=<?= $limit ?> " >< ? = $zmSlangTotalBrScore ?> <?php if ( $sort_field == "TotScore" ) if ( $sort_asc ) echo "(^)"; else echo "(v)"; ?></a></td>
< td class = " text " >< a href = " <?= $PHP_SELF ?>?view=<?= $view ?>&page=1&<?= $filter_query ?>&sort_field=AvgScore&sort_asc=<?= $sort_field == 'AvgScore'?! $sort_asc :0 ?>&limit=<?= $limit ?> " >< ? = $zmSlangAvgBrScore ?> <?php if ( $sort_field == "AvgScore" ) if ( $sort_asc ) echo "(^)"; else echo "(v)"; ?></a></td>
< td class = " text " >< a href = " <?= $PHP_SELF ?>?view=<?= $view ?>&page=1&<?= $filter_query ?>&sort_field=MaxScore&sort_asc=<?= $sort_field == 'MaxScore'?! $sort_asc :0 ?>&limit=<?= $limit ?> " >< ? = $zmSlangMaxBrScore ?> <?php if ( $sort_field == "MaxScore" ) if ( $sort_asc ) echo "(^)"; else echo "(v)"; ?></a></td>
2003-07-11 17:27:56 +08:00
< td class = " text " > Mark </ td >
</ tr >
< ? php
2004-01-08 19:45:57 +08:00
}
if ( $event [ 'LearnState' ] == '+' )
$bgcolor = " #98FB98 " ;
elseif ( $event [ 'LearnState' ] == '-' )
$bgcolor = " #FFC0CB " ;
else
unset ( $bgcolor );
2003-07-11 17:27:56 +08:00
?>
2004-01-08 18:09:35 +08:00
< tr < ? = ' bgcolor="' . ( isset ( $bgcolor ) ? $bgcolor : " #FFFFFF " ) . '"' ?> >
2004-03-10 22:23:22 +08:00
< td align = " center " class = " text " >< a href = " javascript: eventWindow( '<?= $PHP_SELF ?>?view=event&eid=<?= $event['Id'] ?><?= $filter_query ?><?= $sort_query ?>&page=1', 'zmEvent', <?= $monitors[$event['MonitorId'] ]['Width']+ $jws['event'] ['w'] ?>, <?= $monitors[$event['MonitorId'] ]['Height']+ $jws['event'] ['h'] ?> ); " >< ? = $event [ 'Id' ] ?> <?php if ( $event['Archived'] ) echo "*" ?></a></td>
< td align = " center " class = " text " >< a href = " javascript: eventWindow( '<?= $PHP_SELF ?>?view=event&eid=<?= $event['Id'] ?><?= $filter_query ?><?= $sort_query ?>&page=1', 'zmEvent', <?= $monitors[$event['MonitorId'] ]['Width']+ $jws['event'] ['w'] ?>, <?= $monitors[$event['MonitorId'] ]['Height']+ $jws['event'] ['h'] ?> ); " >< ? = $event [ 'Name' ] ?> <?php if ( $event['Archived'] ) echo "*" ?></a></td>
2004-02-16 03:42:00 +08:00
< td align = " center " class = " text " >< ? = $event [ 'MonitorName' ] ?> </td>
2004-01-08 18:09:35 +08:00
< td align = " center " class = " text " >< ? = strftime ( " %m/%d %H:%M:%S " , strtotime ( $event [ 'StartTime' ]) ) ?> </td>
< td align = " center " class = " text " >< ? = $event [ 'Length' ] ?> </td>
2004-02-16 03:42:00 +08:00
< td align = " center " class = " text " >< a href = " javascript: newWindow( '<?= $PHP_SELF ?>?view=frames&eid=<?= $event['Id'] ?>', 'zmFrames', <?= $jws['frames'] ['w'] ?>, <?= $jws['frames'] ['h'] ?> ); " >< ? = $event [ 'Frames' ] ?> </a></td>
< td align = " center " class = " text " >< a href = " javascript: newWindow( '<?= $PHP_SELF ?>?view=frames&eid=<?= $event['Id'] ?>', 'zmFrames', <?= $jws['frames'] ['w'] ?>, <?= $jws['frames'] ['h'] ?> ); " >< ? = $event [ 'AlarmFrames' ] ?> </a></td>
2004-01-08 18:09:35 +08:00
< td align = " center " class = " text " >< ? = $event [ 'TotScore' ] ?> </td>
< td align = " center " class = " text " >< ? = $event [ 'AvgScore' ] ?> </td>
2004-02-19 19:32:21 +08:00
< td align = " center " class = " text " >< a href = " javascript: newWindow( '<?= $PHP_SELF ?>?view=frame&eid=<?= $event['Id'] ?>&fid=0', 'zmImage', <?= $monitors[$event['MonitorId'] ]['Width']+ $jws['image'] ['w'] ?>, <?= $monitors[$event['MonitorId']
][ 'Height' ] + $jws [ 'image' ][ 'h' ] ?> );"><?= $event['MaxScore'] ?></a></td>
2004-01-08 18:09:35 +08:00
< td align = " center " class = " text " >< input type = " checkbox " name = " mark_eids[] " value = " <?= $event['Id'] ?> " onClick = " configureButton( document.event_form, 'mark_eids' ); " < ? php if ( ! canEdit ( 'Events' ) ) { ?> disabled<?php } ?>></td>
2003-07-11 17:27:56 +08:00
</ tr >
< ? php
2004-01-08 19:45:57 +08:00
}
2003-07-11 17:27:56 +08:00
?>
</ table ></ td ></ tr >
</ table ></ td >
</ tr >
2004-01-07 20:57:07 +08:00
< tr >< td align = " right " >< ? php if ( LEARN_MODE ) { ?> <select name="learn_state" class="form" disabled><option value=""><?= $zmSlangIgnore ?></option><option value="-"><?= $zmSlangExclude ?></option><option value="+"><?= $zmSlangInclude ?></option></select> <input type="button" name="learn_btn" value="<?= $zmSlangSetLearnPrefs ?>" class="form" onClick="document.event_form.action.value = 'learn'; document.event_form.submit();" disabled> <?php } ?><input type="button" name="delete_btn" value="<?= $zmSlangDelete ?>" class="form" onClick="document.event_form.action.value = 'delete'; document.event_form.submit();" disabled></td></tr>
2003-07-11 17:27:56 +08:00
</ table ></ center >
</ form >
</ body >
</ html >
2003-09-23 17:52:45 +08:00
< ? php
2004-01-08 19:45:57 +08:00
}
2003-09-23 17:52:45 +08:00
?>