2001-04-19 13:18:57 +00:00
< ? php
/***************************************************************************
* functions . php
* -------------------
* begin : Saturday , Feb 13 , 2001
* copyright : ( C ) 2001 The phpBB Group
* email : support @ phpbb . com
*
* $Id $
*
***************************************************************************/
/***************************************************************************
*
* 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 .
*
***************************************************************************/
2001-04-19 15:05:39 +00:00
function get_db_stat ( $mode )
2001-04-19 13:18:57 +00:00
{
2001-04-19 15:05:39 +00:00
global $db ;
2002-03-18 13:35:23 +00:00
switch ( $mode )
2001-07-08 20:24:15 +00:00
{
2001-04-19 13:18:57 +00:00
case 'usercount' :
2002-07-14 14:35:12 +00:00
$sql = " SELECT COUNT(user_id) - 1 AS total
FROM " . USERS_TABLE;
2001-07-08 20:24:15 +00:00
break ;
2001-04-19 13:18:57 +00:00
case 'newestuser' :
2001-05-13 12:12:44 +00:00
$sql = " SELECT user_id, username
2001-10-25 23:21:12 +00:00
FROM " . USERS_TABLE . "
2001-07-08 20:24:15 +00:00
WHERE user_id <> " . ANONYMOUS . "
ORDER BY user_id DESC
LIMIT 1 " ;
break ;
2002-02-08 01:33:36 +00:00
case 'postcount' :
2001-06-13 08:32:32 +00:00
case 'topiccount' :
2002-02-08 01:33:36 +00:00
$sql = " SELECT SUM(forum_topics) AS topic_total, SUM(forum_posts) AS post_total
2001-10-25 23:21:12 +00:00
FROM " . FORUMS_TABLE;
2001-07-08 20:24:15 +00:00
break ;
2001-04-19 13:18:57 +00:00
}
2002-07-14 14:35:12 +00:00
$result = $db -> sql_query ( $sql );
2002-02-08 01:33:36 +00:00
$row = $db -> sql_fetchrow ( $result );
switch ( $mode )
2001-04-19 13:18:57 +00:00
{
2002-02-08 01:33:36 +00:00
case 'usercount' :
return $row [ 'total' ];
break ;
case 'newestuser' :
return $row ;
break ;
case 'postcount' :
return $row [ 'post_total' ];
break ;
case 'topiccount' :
return $row [ 'topic_total' ];
break ;
2001-04-19 13:18:57 +00:00
}
2002-02-08 01:33:36 +00:00
2002-03-18 13:35:23 +00:00
return false ;
2001-04-19 13:18:57 +00:00
}
2002-10-08 20:06:55 +00:00
function sql_quote ( $msg )
{
return str_replace ( '\'' , '\'\'' , $msg );
}
2002-02-12 17:14:39 +00:00
function get_userdata ( $user )
2001-05-30 20:21:42 +00:00
{
global $db ;
2001-06-11 00:58:08 +00:00
$sql = " SELECT *
2002-08-17 22:08:34 +00:00
FROM " . USERS_TABLE . "
2002-02-12 17:14:39 +00:00
WHERE " ;
2002-10-08 20:06:55 +00:00
$sql .= ( ( is_int ( $user ) ) ? " user_id = $user " : " username = ' " . sql_quote ( $user ) . " ' " ) . " AND user_id <> " . ANONYMOUS ;
2002-07-14 14:35:12 +00:00
$result = $db -> sql_query ( $sql );
2001-05-30 20:21:42 +00:00
2002-02-08 01:33:36 +00:00
return ( $row = $db -> sql_fetchrow ( $result ) ) ? $row : false ;
2001-05-30 20:21:42 +00:00
}
2001-04-19 13:18:57 +00:00
2002-09-15 17:21:08 +00:00
function get_forum_branch ( $forum_id , $type = 'all' , $order = 'descending' , $include_forum = TRUE )
{
global $db ;
switch ( $type )
{
case 'parents' :
$condition = 'f1.left_id BETWEEN f2.left_id AND f2.right_id' ;
break ;
case 'children' :
$condition = 'f2.left_id BETWEEN f1.left_id AND f1.right_id' ;
break ;
default :
$condition = 'f2.left_id BETWEEN f1.left_id AND f1.right_id OR f1.left_id BETWEEN f2.left_id AND f2.right_id' ;
}
$sql = ' SELECT f2 .*
FROM ' . FORUMS_TABLE . ' f1
LEFT JOIN ' . FORUMS_TABLE . " f2 ON $condition
WHERE f1 . forum_id = $forum_id
ORDER BY f2 . left_id " . (( $order == 'descending') ? 'ASC' : 'DESC');
$rows = array ();
$result = $db -> sql_query ( $sql );
while ( $row = $db -> sql_fetchrow ( $result ))
{
if ( ! $include_forum && $row [ 'forum_id' ] == $forum_id )
{
continue ;
}
$rows [] = $row ;
}
return $rows ;
}
2002-07-14 14:35:12 +00:00
//
// Obtain list of moderators of each forum
// First users, then groups ... broken into two queries
//
function get_moderators ( & $forum_moderators , $forum_id = false )
2001-04-19 13:18:57 +00:00
{
2002-07-14 14:35:12 +00:00
global $SID , $db , $phpEx ;
$forum_sql = ( $forum_id ) ? 'AND au.forum_id = ' . $forum_id : '' ;
2002-08-17 22:08:34 +00:00
$sql = " SELECT au.forum_id, u.user_id, u.username
2002-07-16 18:22:33 +00:00
FROM " . ACL_USERS_TABLE . " au , " . ACL_OPTIONS_TABLE . " ao , " . USERS_TABLE . " u
2002-10-08 20:06:55 +00:00
WHERE ao . auth_value = 'm_global'
2002-08-17 22:08:34 +00:00
$forum_sql
AND au . auth_option_id = ao . auth_option_id
2002-10-08 20:06:55 +00:00
AND u . user_id = au . user_id " ;
2002-07-14 14:35:12 +00:00
$result = $db -> sql_query ( $sql );
2002-10-08 20:06:55 +00:00
while ( $row = $db -> sql_fetchrow ( $result ) )
2001-04-19 13:18:57 +00:00
{
2002-07-14 14:35:12 +00:00
$forum_moderators [ $row [ 'forum_id' ]][] = '<a href="profile.' . $phpEx . $SID . '&mode=viewprofile&u=' . $row [ 'user_id' ] . '">' . $row [ 'username' ] . '</a>' ;
2001-04-19 13:18:57 +00:00
}
2002-07-14 14:35:12 +00:00
2002-08-17 22:08:34 +00:00
$sql = " SELECT au.forum_id, g.group_id, g.group_name
2002-07-16 18:22:33 +00:00
FROM " . ACL_GROUPS_TABLE . " au , " . ACL_OPTIONS_TABLE . " ao , " . GROUPS_TABLE . " g
2002-10-08 20:06:55 +00:00
WHERE ao . auth_value = 'm_global'
2002-08-17 22:08:34 +00:00
$forum_sql
AND au . auth_option_id = ao . auth_option_id
2002-10-08 20:06:55 +00:00
AND g . group_id = au . group_id " ;
2002-07-14 14:35:12 +00:00
$result = $db -> sql_query ( $sql );
2002-10-08 20:06:55 +00:00
while ( $row = $db -> sql_fetchrow ( $result ) )
2001-04-19 13:18:57 +00:00
{
2002-07-14 14:35:12 +00:00
$forum_moderators [ $row [ 'forum_id' ]][] = '<a href="groupcp.' . $phpEx . $SID . '&g=' . $row [ 'group_id' ] . '">' . $row [ 'group_name' ] . '</a>' ;
2002-02-12 17:14:39 +00:00
}
2001-04-19 13:18:57 +00:00
2002-07-14 14:35:12 +00:00
return ;
}
//
// User authorisation levels output
//
function get_forum_rules ( $mode , & $rules , & $forum_id )
{
2002-10-04 13:09:10 +00:00
global $SID , $auth , $lang , $phpEx ;
2002-07-14 14:35:12 +00:00
2002-10-08 20:06:55 +00:00
$rules .= ( ( $auth -> acl_get ( 'f_post' , $forum_id ) ) ? $lang [ 'Rules_post_can' ] : $lang [ 'Rules_post_cannot' ] ) . '<br />' ;
$rules .= ( ( $auth -> acl_get ( 'f_reply' , $forum_id ) ) ? $lang [ 'Rules_reply_can' ] : $lang [ 'Rules_reply_cannot' ] ) . '<br />' ;
$rules .= ( ( $auth -> acl_get ( 'f_edit' , $forum_id ) ) ? $lang [ 'Rules_edit_can' ] : $lang [ 'Rules_edit_cannot' ] ) . '<br />' ;
$rules .= ( ( $auth -> acl_get ( 'f_delete' , $forum_id ) || $auth -> acl_get ( 'm_delete' , $forum_id ) ) ? $lang [ 'Rules_delete_can' ] : $lang [ 'Rules_delete_cannot' ] ) . '<br />' ;
$rules .= ( ( $auth -> acl_get ( 'f_attach' , $forum_id ) ) ? $lang [ 'Rules_attach_can' ] : $lang [ 'Rules_attach_cannot' ] ) . '<br />' ;
2001-04-19 13:18:57 +00:00
2002-10-08 20:06:55 +00:00
if ( $auth -> acl_get ( 'a_' ) || $auth -> acl_get ( 'm_' , $forum_id ) )
2002-07-14 14:35:12 +00:00
{
$rules .= sprintf ( $lang [ 'Rules_moderate' ], '<a href="modcp.' . $phpEx . $SID . '&f=' . $forum_id . '">' , '</a>' );
}
return ;
}
2002-10-08 20:06:55 +00:00
function make_jumpbox ( $action , $forum_id = false )
2002-07-14 14:35:12 +00:00
{
2002-10-08 20:06:55 +00:00
global $auth , $template , $lang , $db , $nav_links , $phpEx ;
2002-07-14 14:35:12 +00:00
2002-10-08 20:06:55 +00:00
$boxstring = '<select name="f" onChange="if(this.options[this.selectedIndex].value != -1){ forms[\'jumpbox\'].submit() }">' ;
/*
$sql = " SELECT forum_id, forum_name, left_id, right_id
FROM " . FORUMS_TABLE . "
ORDER BY left_id ASC " ;
$result = $db -> sql_query ( $sql );
2002-02-12 17:14:39 +00:00
2002-10-08 20:06:55 +00:00
$right = 0 ;
$subforum = '' ;
while ( $row = $db -> sql_fetchrow ( $result ) )
2002-07-14 14:35:12 +00:00
{
2002-10-08 20:06:55 +00:00
if ( $auth -> acl_get ( 'f_list' , $forum_id ) || $auth -> acl_get ( 'a_' ) )
2001-12-05 00:50:12 +00:00
{
2002-10-08 20:06:55 +00:00
if ( $row [ 'left_id' ] < $right )
2002-07-14 14:35:12 +00:00
{
2002-10-08 20:06:55 +00:00
$subforum .= ' ' ;
2002-07-14 14:35:12 +00:00
}
2002-10-08 20:06:55 +00:00
else if ( $row [ 'left_id' ] > $right + 1 )
2002-02-12 17:14:39 +00:00
{
2002-10-08 20:06:55 +00:00
$subforum = substr ( $subforum , 0 , - 13 * ( $row [ 'left_id' ] - $right + 1 ));
2001-04-19 13:18:57 +00:00
}
2001-12-05 00:50:12 +00:00
2002-10-08 20:06:55 +00:00
$right = $row [ 'right_id' ];
2002-07-14 14:35:12 +00:00
2002-10-08 20:06:55 +00:00
$selected = ( $row [ 'forum_id' ] == $forum_id ) ? 'selected="selected"' : '' ;
$boxstring .= '<option value="' . $row [ 'forum_id' ] . '"' . $selected . '>' . $subforum . $row [ 'forum_name' ] . '</option>' ;
2001-10-14 15:48:38 +00:00
2002-10-08 20:06:55 +00:00
$nav_links [ 'chapter forum' ][ $row [ 'forum_id' ]] = array (
'url' => " viewforum. $phpEx $SID &f= " . $row [ 'forum_id' ],
'title' => $row [ 'forum_name' ]
);
}
}
$db -> sql_freeresult ( $result );
*/
2002-03-31 00:06:34 +00:00
$template -> assign_vars ( array (
'L_GO' => $lang [ 'Go' ],
'L_JUMP_TO' => $lang [ 'Jump_to' ],
'L_SELECT_FORUM' => $lang [ 'Select_forum' ],
'S_JUMPBOX_SELECT' => $boxstring ,
2002-07-14 14:35:12 +00:00
'S_JUMPBOX_ACTION' => $action )
2002-03-31 00:06:34 +00:00
);
return ;
2001-04-19 13:18:57 +00:00
}
//
2002-07-14 14:35:12 +00:00
// Pick a language, any language ...
//
function language_select ( $default , $select_name = " language " , $dirname = " language " )
2001-04-19 13:18:57 +00:00
{
2002-07-14 14:35:12 +00:00
global $phpEx ;
$dir = opendir ( $dirname );
2001-05-02 00:42:33 +00:00
2002-07-14 14:35:12 +00:00
$lang = array ();
while ( $file = readdir ( $dir ) )
2001-04-19 13:18:57 +00:00
{
2002-07-27 16:37:31 +00:00
if ( preg_match ( '#^lang_#' , $file ) && ! is_file ( $dirname . '/' . $file ) && ! is_link ( $dirname . '/' . $file ) )
2001-06-11 12:53:35 +00:00
{
2002-07-27 16:37:31 +00:00
$filename = trim ( str_replace ( 'lang_' , '' , $file ));
$displayname = preg_replace ( '/^(.*?)_(.*)$/' , '\\1 [ \\2 ]' , $filename );
$displayname = preg_replace ( '/\[(.*?)_(.*)\]/' , '[ \\1 - \\2 ]' , $displayname );
2002-07-14 14:35:12 +00:00
$lang [ $displayname ] = $filename ;
2001-06-11 12:53:35 +00:00
}
2002-07-14 14:35:12 +00:00
}
2001-07-08 20:24:15 +00:00
2002-07-14 14:35:12 +00:00
closedir ( $dir );
2001-07-08 20:24:15 +00:00
2002-07-14 14:35:12 +00:00
@ asort ( $lang );
@ reset ( $lang );
2001-07-14 17:30:21 +00:00
2002-07-14 14:35:12 +00:00
$lang_select = '<select name="' . $select_name . '">' ;
2002-07-27 16:37:31 +00:00
foreach ( $lang as $displayname => $filename )
2001-04-19 13:18:57 +00:00
{
2002-07-14 14:35:12 +00:00
$selected = ( strtolower ( $default ) == strtolower ( $filename ) ) ? ' selected="selected"' : '' ;
$lang_select .= '<option value="' . $filename . '"' . $selected . '>' . ucwords ( $displayname ) . '</option>' ;
2001-04-19 13:18:57 +00:00
}
2002-07-14 14:35:12 +00:00
$lang_select .= '</select>' ;
2001-05-03 22:10:23 +00:00
2002-07-14 14:35:12 +00:00
return $lang_select ;
}
2001-12-14 02:41:33 +00:00
2002-07-14 14:35:12 +00:00
//
2002-08-17 22:08:34 +00:00
// Pick a template/theme combo,
2002-07-14 14:35:12 +00:00
//
function style_select ( $default_style , $select_name = " style " , $dirname = " templates " )
{
global $db ;
2001-12-14 02:41:33 +00:00
2002-07-14 14:35:12 +00:00
$sql = " SELECT style_id, style_name
2002-08-17 22:08:34 +00:00
FROM " . STYLES_TABLE . "
2002-07-14 14:35:12 +00:00
ORDER BY style_name , style_id " ;
$result = $db -> sql_query ( $sql );
2001-12-14 02:41:33 +00:00
2002-07-14 14:35:12 +00:00
$style_select = '<select name="' . $select_name . '">' ;
while ( $row = $db -> sql_fetchrow ( $result ) )
2001-12-14 02:41:33 +00:00
{
2002-07-14 14:35:12 +00:00
$selected = ( $row [ 'style_id' ] == $default_style ) ? ' selected="selected"' : '' ;
2001-11-16 17:31:49 +00:00
2002-07-14 14:35:12 +00:00
$style_select .= '<option value="' . $row [ 'style_id' ] . '"' . $selected . '>' . $row [ 'style_name' ] . '</option>' ;
}
$style_select .= " </select> " ;
2002-02-08 01:33:36 +00:00
2002-07-14 14:35:12 +00:00
return $style_select ;
2001-04-19 13:18:57 +00:00
}
2001-05-01 19:10:09 +00:00
2002-07-14 14:35:12 +00:00
//
// Pick a timezone
//
function tz_select ( $default , $select_name = 'timezone' )
2001-04-19 13:18:57 +00:00
{
2002-07-14 14:35:12 +00:00
global $sys_timezone , $lang ;
2001-05-03 22:10:23 +00:00
2002-07-14 14:35:12 +00:00
$tz_select = '<select name="' . $select_name . '">' ;
while ( list ( $offset , $zone ) = @ each ( $lang [ 'tz' ]) )
2001-05-01 19:10:09 +00:00
{
2002-07-14 14:35:12 +00:00
$selected = ( $offset == $default ) ? ' selected="selected"' : '' ;
$tz_select .= '<option value="' . $offset . '"' . $selected . '>' . $zone . '</option>' ;
2001-05-01 19:10:09 +00:00
}
2002-07-14 14:35:12 +00:00
$tz_select .= '</select>' ;
2001-09-25 18:18:47 +00:00
2002-07-14 14:35:12 +00:00
return $tz_select ;
}
2001-09-25 18:18:47 +00:00
2002-07-14 14:35:12 +00:00
//
// Topic and forum watching common code
//
function watch_topic_forum ( $mode , & $s_watching , & $s_watching_img , $user_id , $match_id )
{
2002-10-08 20:06:55 +00:00
global $template , $db , $lang , $phpEx , $SID , $start ;
2001-09-25 18:18:47 +00:00
2002-07-14 14:35:12 +00:00
$table_sql = ( $mode == 'forum' ) ? FORUMS_WATCH_TABLE : TOPICS_WATCH_TABLE ;
$where_sql = ( $mode == 'forum' ) ? 'forum_id' : 'topic_id' ;
$u_url = ( $mode == 'forum' ) ? 'f' : 't' ;
2001-09-25 18:18:47 +00:00
2002-07-14 14:35:12 +00:00
//
2002-08-17 22:08:34 +00:00
// Is user watching this thread?
2002-07-14 14:35:12 +00:00
//
2002-08-17 22:08:34 +00:00
if ( $user_id )
2001-09-25 18:18:47 +00:00
{
2002-07-14 14:35:12 +00:00
$can_watch = TRUE ;
2001-09-25 18:18:47 +00:00
2002-08-17 22:08:34 +00:00
$sql = " SELECT notify_status
FROM " . $table_sql . "
2002-07-14 14:35:12 +00:00
WHERE $where_sql = $match_id
AND user_id = $user_id " ;
$result = $db -> sql_query ( $sql );
if ( $row = $db -> sql_fetchrow ( $result ) )
2001-09-25 18:18:47 +00:00
{
2002-10-08 20:06:55 +00:00
if ( isset ( $_GET [ 'unwatch' ]) )
2002-07-14 14:35:12 +00:00
{
2002-10-08 20:06:55 +00:00
if ( $_GET [ 'unwatch' ] == $mode )
2002-07-14 14:35:12 +00:00
{
$is_watching = 0 ;
$sql = " DELETE FROM " . $table_sql . "
2002-08-17 22:08:34 +00:00
WHERE $where_sql = $match_id
2002-07-14 14:35:12 +00:00
AND user_id = $user_id " ;
$db -> sql_query ( $sql );
}
2002-08-17 22:08:34 +00:00
2002-07-14 14:35:12 +00:00
$template -> assign_vars ( array (
'META' => '<meta http-equiv="refresh" content="3;url=' . " view $mode . $phpEx $SID & " . $u_url . " = $match_id &start= $start " . '">' )
);
$message = $lang [ 'No_longer_watching_' . $mode ] . '<br /><br />' . sprintf ( $lang [ 'Click_return_' . $mode ], '<a href="' . " view $mode . $phpEx $SID & " . $u_url . " = $match_id &start= $start " . '">' , '</a>' );
message_die ( MESSAGE , $message );
}
else
{
$is_watching = TRUE ;
if ( $row [ 'notify_status' ] )
{
$sql = " UPDATE " . $table_sql . "
SET notify_status = 0
WHERE $where_sql = $match_id
AND user_id = $user_id " ;
$db -> sql_query ( $sql );
}
}
2001-09-25 18:18:47 +00:00
}
2002-07-14 14:35:12 +00:00
else
{
2002-10-08 20:06:55 +00:00
if ( isset ( $_GET [ 'watch' ]) )
2002-07-14 14:35:12 +00:00
{
2002-10-08 20:06:55 +00:00
if ( $_GET [ 'watch' ] == $mode )
2002-07-14 14:35:12 +00:00
{
$is_watching = TRUE ;
2001-09-25 18:18:47 +00:00
2002-07-14 14:35:12 +00:00
$sql = " INSERT INTO " . $table_sql . " (user_id, $where_sql , notify_status)
VALUES ( $user_id , $match_id , 0 ) " ;
$db -> sql_query ( $sql );
}
$template -> assign_vars ( array (
'META' => '<meta http-equiv="refresh" content="3;url=' . " view $mode . $phpEx $SID & " . $u_url . " = $match_id &start= $start " . '">' )
);
2002-02-25 14:59:01 +00:00
2002-07-14 14:35:12 +00:00
$message = $lang [ 'You_are_watching_' . $mode ] . '<br /><br />' . sprintf ( $lang [ 'Click_return_' . $mode ], '<a href="' . " view $mode . $phpEx $SID & " . $u_url . " = $match_id &start= $start " . '">' , '</a>' );
message_die ( MESSAGE , $message );
}
else
{
$is_watching = 0 ;
}
}
}
else
{
2002-10-08 20:06:55 +00:00
if ( isset ( $_GET [ 'unwatch' ]) )
2002-02-04 18:31:22 +00:00
{
2002-10-08 20:06:55 +00:00
if ( $_GET [ 'unwatch' ] == $mode )
2002-03-18 13:35:23 +00:00
{
2002-07-14 14:35:12 +00:00
$header_location = ( @ preg_match ( '/Microsoft|WebSTAR|Xitami/' , getenv ( 'SERVER_SOFTWARE' )) ) ? 'Refresh: 0; URL=' : 'Location: ' ;
header ( $header_location . " login. $phpEx $SID &redirect=view $mode . $phpEx & " . $u_url . " = $match_id &unwatch=forum " );
exit ;
2002-03-18 13:35:23 +00:00
}
2002-02-04 18:31:22 +00:00
}
2002-07-14 14:35:12 +00:00
else
{
$can_watch = 0 ;
$is_watching = 0 ;
}
2001-09-25 18:18:47 +00:00
}
2002-07-14 14:35:12 +00:00
if ( $can_watch )
{
if ( $is_watching )
{
$watch_url = " view $mode . " . $phpEx . $SID . '&' . $u_url . " = $match_id &unwatch= $mode &start= $start " ;
$img = ( $mode == 'forum' ) ? $images [ 'Forum_un_watch' ] : $images [ 'Topic_un_watch' ];
$s_watching = '<a href="' . $watch_url . '">' . $lang [ 'Stop_watching_' . $mode ] . '</a>' ;
$s_watching_img = ( isset ( $img ) ) ? '<a href="' . $watch_url . '"><img src="' . $img . '" alt="' . $lang [ 'Stop_watching_' . $mode ] . '" title="' . $lang [ 'Stop_watching_' . $mode ] . '" border="0"></a>' : '' ;
}
else
{
$watch_url = " view $mode . " . $phpEx . $SID . '&' . $u_url . " = $match_id &watch= $mode &start= $start " ;
$img = ( $mode == 'forum' ) ? $images [ 'Forum_watch' ] : $images [ 'Topic_watch' ];
$s_watching = '<a href="' . $watch_url . '">' . $lang [ 'Start_watching_' . $mode ] . '</a>' ;
$s_watching_img = ( isset ( $img ) ) ? '<a href="' . $watch_url . '"><img src="' . $img . '" alt="' . $lang [ 'Stop_watching_' . $mode ] . '" title="' . $lang [ 'Start_watching_' . $mode ] . '" border="0"></a>' : '' ;
}
}
return ;
2001-04-19 13:18:57 +00:00
}
//
// Create date/time from format and timezone
//
function create_date ( $format , $gmepoch , $tz )
{
2002-03-06 00:40:31 +00:00
global $board_config , $lang ;
2002-03-18 13:35:23 +00:00
static $translate ;
2002-03-06 00:40:31 +00:00
2002-03-18 13:35:23 +00:00
if ( empty ( $translate ) && $board_config [ 'default_lang' ] != 'english' )
2002-03-06 00:40:31 +00:00
{
2002-07-17 14:13:27 +00:00
foreach ( $lang [ 'datetime' ] as $match => $replace )
2002-03-06 00:40:31 +00:00
{
2002-03-18 13:35:23 +00:00
$translate [ $match ] = $replace ;
2002-03-06 00:40:31 +00:00
}
}
2002-03-18 13:35:23 +00:00
return ( ! empty ( $translate ) ) ? strtr ( @ gmdate ( $format , $gmepoch + ( 3600 * $tz )), $translate ) : @ gmdate ( $format , $gmepoch + ( 3600 * $tz ));
2001-04-19 13:18:57 +00:00
}
2001-05-06 16:16:22 +00:00
2002-07-14 14:35:12 +00:00
function create_img ( $img , $alt = '' )
{
return '<img src=' . $img . ' alt="' . $alt . '" title="' . $alt . '" />' ;
}
2001-05-07 23:04:16 +00:00
//
// Pagination routine, generates
// page number sequence
//
function generate_pagination ( $base_url , $num_items , $per_page , $start_item , $add_prevnext_text = TRUE )
{
2001-06-11 00:22:35 +00:00
global $lang ;
2001-05-27 03:11:27 +00:00
2001-05-07 23:04:16 +00:00
$total_pages = ceil ( $num_items / $per_page );
2001-10-25 23:21:12 +00:00
2002-08-02 16:39:02 +00:00
if ( $total_pages == 1 || ! $num_items )
2001-05-07 23:04:16 +00:00
{
2002-04-02 14:04:18 +00:00
return '' ;
2001-05-07 23:04:16 +00:00
}
2001-10-25 23:21:12 +00:00
$on_page = floor ( $start_item / $per_page ) + 1 ;
2001-05-07 23:04:16 +00:00
2002-10-04 13:09:10 +00:00
$page_string = ( $on_page == 1 ) ? '<b>1</b>' : '<a href="' . $base_url . " &start= " . ( ( $on_page - 2 ) * $per_page ) . '">' . $lang [ 'Previous' ] . '</a> <a href="' . $base_url . '">1</a>' ;
if ( $total_pages > 5 )
2001-05-07 23:04:16 +00:00
{
2002-10-04 13:09:10 +00:00
$start_cnt = min ( max ( 1 , $on_page - 4 ), $total_pages - 5 );
$end_cnt = max ( min ( $total_pages , $on_page + 4 ), 6 );
$page_string .= ( $start_cnt > 1 ) ? ' ... ' : ', ' ;
2001-10-25 23:21:12 +00:00
2002-10-04 13:09:10 +00:00
for ( $i = $start_cnt + 1 ; $i < $end_cnt ; $i ++ )
2001-05-07 23:04:16 +00:00
{
2002-07-14 14:35:12 +00:00
$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' : '<a href="' . $base_url . " &start= " . ( ( $i - 1 ) * $per_page ) . '">' . $i . '</a>' ;
2002-10-04 13:09:10 +00:00
if ( $i < $end_cnt - 1 )
2001-10-25 23:21:12 +00:00
{
2002-10-04 13:09:10 +00:00
$page_string .= ', ' ;
2001-10-25 23:21:12 +00:00
}
2001-05-07 23:04:16 +00:00
}
2002-10-04 13:09:10 +00:00
$page_string .= ( $end_cnt < $total_pages ) ? ' ... ' : ', ' ;
2001-10-25 23:21:12 +00:00
}
else
{
2002-10-04 13:09:10 +00:00
$page_string .= ', ' ;
for ( $i = 2 ; $i < $total_pages ; $i ++ )
2001-10-25 23:21:12 +00:00
{
2002-07-14 14:35:12 +00:00
$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' : '<a href="' . $base_url . " &start= " . ( ( $i - 1 ) * $per_page ) . '">' . $i . '</a>' ;
2002-10-04 13:09:10 +00:00
if ( $i < $total_pages )
2001-10-25 23:21:12 +00:00
{
2002-02-08 01:33:36 +00:00
$page_string .= ', ' ;
2001-10-25 23:21:12 +00:00
}
}
2001-05-07 23:04:16 +00:00
}
2001-05-27 03:11:27 +00:00
2002-10-04 13:09:10 +00:00
$page_string .= ( $on_page == $total_pages ) ? '<b>' . $total_pages . '</b>' : '<a href="' . $base_url . '&start=' . ( ( $total_pages - 1 ) * $per_page ) . '">' . $total_pages . '</a> <a href="' . $base_url . " &start= " . ( $on_page * $per_page ) . '">' . $lang [ 'Next' ] . '</a>' ;
2001-05-07 23:04:16 +00:00
2002-02-08 01:33:36 +00:00
$page_string = $lang [ 'Goto_page' ] . ' ' . $page_string ;
2001-10-25 23:21:12 +00:00
2001-05-07 23:04:16 +00:00
return $page_string ;
}
2002-08-02 16:39:02 +00:00
function on_page ( $num_items , $per_page , $start )
{
global $lang ;
return sprintf ( $lang [ 'Page_of' ], floor ( $start / $per_page ) + 1 , max ( ceil ( $num_items / $per_page ), 1 ) );
}
2002-10-03 02:43:41 +00:00
function format_subforums_list ( $subforums )
{
if ( empty ( $subforums ))
{
return '' ;
}
global $phpEx , $SID ;
foreach ( $subforums as $row )
{
$alist [ $row [ 'forum_id' ]] = $row [ 'forum_name' ];
}
asort ( $alist );
$links = array ();
foreach ( $alist as $forum_id => $forum_name )
{
$links [] = '<a href="viewforum.' . $phpEx . $SID . '&f=' . $forum_id . '">' . htmlspecialchars ( $forum_name ) . '</a>' ;
}
return implode ( ', ' , $links );
}
2001-09-09 23:22:29 +00:00
// Obtain list of naughty words and build preg style replacement arrays for use by the
// calling script, note that the vars are passed as references this just makes it easier
// to return both sets of arrays
2001-09-02 22:08:01 +00:00
function obtain_word_list ( & $orig_word , & $replacement_word )
{
global $db ;
$sql = " SELECT word, replacement
FROM " . WORDS_TABLE;
2002-07-14 14:35:12 +00:00
$result = $db -> sql_query ( $sql );
2002-02-08 01:44:27 +00:00
if ( $row = $db -> sql_fetchrow ( $result ) )
2001-09-02 22:08:01 +00:00
{
2002-08-17 22:08:34 +00:00
do
2001-09-02 22:08:01 +00:00
{
2002-07-14 14:35:12 +00:00
$orig_word [] = '#\b(' . str_replace ( '\*' , '\w*?' , preg_quote ( $row [ 'word' ], '#' )) . ')\b#i' ;
2002-03-25 12:39:17 +00:00
$replacement_word [] = $row [ 'replacement' ];
2001-09-02 22:08:01 +00:00
}
2002-02-08 01:44:27 +00:00
while ( $row = $db -> sql_fetchrow ( $result ) );
2001-09-02 22:08:01 +00:00
}
2002-02-08 01:33:36 +00:00
return true ;
2001-09-02 22:08:01 +00:00
}
2001-09-25 18:18:47 +00:00
//
2002-07-14 14:35:12 +00:00
// This is general replacement for die(), allows templated output in users (or default)
// language, etc. $msg_code can be one of these constants:
2001-09-25 18:18:47 +00:00
//
2002-07-14 14:35:12 +00:00
// -> MESSAGE : Use for any simple text message, eg. results of an operation, authorisation
// failures, etc.
// -> ERROR : Use for any error, a simple page will be output
2001-09-25 18:18:47 +00:00
//
2002-10-04 13:09:10 +00:00
// $errno, $errstr, $errfile, $errline
2002-08-06 15:32:25 +00:00
function message_die ( $msg_code , $msg_text = '' , $msg_title = '' )
2001-09-25 18:18:47 +00:00
{
2002-10-08 20:06:55 +00:00
global $db , $session , $auth , $template , $board_config , $theme , $lang , $user ;
global $userdata , $user_ip , $phpEx , $phpbb_root_path , $nav_links , $starttime ;
2001-09-25 18:18:47 +00:00
2002-07-14 14:35:12 +00:00
switch ( $msg_code )
2001-09-25 18:18:47 +00:00
{
2002-07-14 14:35:12 +00:00
case MESSAGE :
2002-08-06 15:32:25 +00:00
if ( empty ( $lang ) && ! empty ( $board_config [ 'default_lang' ]) )
2002-08-02 16:39:02 +00:00
{
2002-08-06 15:32:25 +00:00
if ( ! file_exists ( $phpbb_root_path . 'language/lang_' . $board_config [ 'default_lang' ] . '/lang_main.' . $phpEx ) )
{
$board_config [ 'default_lang' ] = 'english' ;
}
include ( $phpbb_root_path . 'language/lang_' . $board_config [ 'default_lang' ] . '/lang_main.' . $phpEx );
2002-08-02 16:39:02 +00:00
}
2002-08-06 15:32:25 +00:00
$msg_title = ( $msg_title == '' ) ? $lang [ 'Information' ] : $msg_title ;
$msg_text = ( ! empty ( $lang [ $msg_text ]) ) ? $lang [ $msg_text ] : $msg_text ;
2002-07-14 14:35:12 +00:00
if ( ! defined ( 'HEADER_INC' ) )
2001-09-25 18:18:47 +00:00
{
2002-08-06 15:32:25 +00:00
if ( empty ( $userdata ) )
2002-08-05 14:59:47 +00:00
{
2002-08-06 15:32:25 +00:00
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><meta http-equiv="Content-Style-Type" content="text/css"><link rel="stylesheet" href="admin/subSilver.css" type="text/css"><style type="text/css">th { background-image: url(\'admin/images/cellpic3.gif\') } td.cat { background-image: url(\'admin/images/cellpic1.gif\') }</style><title>' . $msg_title . '</title></html>' . " \n " ;
echo '<body><table width="100%" height="100%" border="0"><tr><td align="center" valign="middle"><table class="bg" width="80%" cellspacing="1" cellpadding="4" border="0"><tr><th>' . $msg_title . '</th></tr><tr><td class="row1" align="center">' . $msg_text . '</td></tr></table></td></tr></table></body></html>' ;
$db -> sql_close ();
exit ;
2002-08-05 14:59:47 +00:00
}
2002-08-06 15:32:25 +00:00
else if ( defined ( 'IN_ADMIN' ) )
2002-08-05 14:59:47 +00:00
{
2002-08-05 15:01:48 +00:00
page_header ( '' , '' , false );
2002-08-05 14:59:47 +00:00
}
2002-08-06 15:32:25 +00:00
else
{
include ( $phpbb_root_path . 'includes/page_header.' . $phpEx );
}
2001-09-25 18:18:47 +00:00
}
2002-07-14 14:35:12 +00:00
if ( defined ( 'IN_ADMIN' ) )
2001-09-25 18:18:47 +00:00
{
2002-07-17 14:13:27 +00:00
page_message ( $msg_title , $msg_text , $display_header );
2002-08-06 15:32:25 +00:00
page_footer ();
2001-09-25 18:18:47 +00:00
}
2002-07-14 14:35:12 +00:00
else
2001-09-25 18:18:47 +00:00
{
2002-07-14 14:35:12 +00:00
$template -> set_filenames ( array (
'body' => 'message_body.html' )
);
$template -> assign_vars ( array (
'MESSAGE_TITLE' => $msg_title ,
'MESSAGE_TEXT' => $msg_text )
);
2001-09-25 18:18:47 +00:00
2002-08-06 00:50:06 +00:00
include ( $phpbb_root_path . 'includes/page_tail.' . $phpEx );
2002-08-05 14:59:47 +00:00
}
2002-08-06 15:32:25 +00:00
2001-09-25 18:18:47 +00:00
break ;
2001-10-14 15:48:38 +00:00
2002-07-14 14:35:12 +00:00
case ERROR :
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>phpBB 2 :: General Error</title></html>' . " \n " ;
2002-08-06 15:32:25 +00:00
echo '<body><h1 style="font-family:Verdana,serif;font-size:18pt;font-weight:bold">phpBB2 :: General Error</h1><hr style="height:2px;border-style:dashed;color:black" /><p style="font-family:Verdana,serif;font-size:10pt">' . $msg_text . '</p><hr style="height:2px;border-style:dashed;color:black" /><p style="font-family:Verdana,serif;font-size:10pt">Contact the site administrator to report this failure</p></body></html>' ;
2002-07-14 14:35:12 +00:00
$db -> sql_close ();
break ;
2001-09-25 18:18:47 +00:00
}
exit ;
}
2002-10-08 20:06:55 +00:00
// Error and message handler, call with trigger_error if reqd
function msg_handler ( $errno , $msg_text , $errfile , $errline )
{
global $db , $session , $auth , $template , $board_config , $theme , $lang , $userdata , $user_ip ;
global $phpEx , $phpbb_root_path , $nav_links , $starttime ;
switch ( $errno )
{
case E_WARNING :
break ;
case E_NOTICE :
break ;
case E_ERROR :
case E_USER_ERROR :
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>phpBB 2 :: General Error</title></html>' . " \n " ;
echo '<body><h1 style="font-family:Verdana,serif;font-size:18pt;font-weight:bold">phpBB2 :: General Error</h1><hr style="height:2px;border-style:dashed;color:black" /><p style="font-family:Verdana,serif;font-size:10pt">' . $msg_text . '</p><hr style="height:2px;border-style:dashed;color:black" /><p style="font-family:Verdana,serif;font-size:10pt">Contact the site administrator to report this failure</p></body></html>' ;
$db -> sql_close ();
break ;
case E_USER_NOTICE :
if ( empty ( $lang ) && ! empty ( $board_config [ 'default_lang' ]) )
{
if ( ! file_exists ( $phpbb_root_path . 'language/lang_' . $board_config [ 'default_lang' ] . '/lang_main.' . $phpEx ) )
{
$board_config [ 'default_lang' ] = 'english' ;
}
include ( $phpbb_root_path . 'language/lang_' . $board_config [ 'default_lang' ] . '/lang_main.' . $phpEx );
}
$msg_text = ( ! empty ( $lang [ $msg_text ]) ) ? $lang [ $msg_text ] : $msg_text ;
if ( ! defined ( 'HEADER_INC' ) )
{
if ( empty ( $userdata ) )
{
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><meta http-equiv="Content-Style-Type" content="text/css"><link rel="stylesheet" href="admin/subSilver.css" type="text/css"><style type="text/css">th { background-image: url(\'admin/images/cellpic3.gif\') } td.cat { background-image: url(\'admin/images/cellpic1.gif\') }</style><title>' . $lang [ 'Information' ] . '</title></html>' . " \n " ;
echo '<body><table width="100%" height="100%" border="0"><tr><td align="center" valign="middle"><table class="bg" width="80%" cellspacing="1" cellpadding="4" border="0"><tr><th>' . $lang [ 'Information' ] . '</th></tr><tr><td class="row1" align="center">' . $msg_text . '</td></tr></table></td></tr></table></body></html>' ;
$db -> sql_close ();
exit ;
}
else if ( defined ( 'IN_ADMIN' ) )
{
page_header ( '' , '' , false );
}
else
{
include ( $phpbb_root_path . 'includes/page_header.' . $phpEx );
}
}
if ( defined ( 'IN_ADMIN' ) )
{
page_message ( $msg_title , $msg_text , $display_header );
page_footer ();
}
else
{
$template -> set_filenames ( array (
'body' => 'message_body.html' )
);
$template -> assign_vars ( array (
'MESSAGE_TITLE' => $msg_title ,
'MESSAGE_TEXT' => $msg_text )
);
include ( $phpbb_root_path . 'includes/page_tail.' . $phpEx );
}
break ;
}
}
2002-03-18 13:35:23 +00:00
?>