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 .
*
***************************************************************************/
2003-01-22 20:52:09 +00:00
function set_config ( $config_name , $config_value , $is_dynamic = FALSE )
2003-01-11 22:56:49 +00:00
{
global $db , $cache , $config ;
2003-01-13 05:11:11 +00:00
if ( isset ( $config [ $config_name ]))
{
$sql = 'UPDATE ' . CONFIG_TABLE . "
2003-01-21 15:58:32 +00:00
SET config_value = '" . $db->sql_escape($config_value) . "'
WHERE config_name = '$config_name' " ;
2003-01-13 05:11:11 +00:00
$db -> sql_query ( $sql );
}
else
{
2003-03-20 00:29:24 +00:00
$db -> sql_query ( 'DELETE FROM ' . CONFIG_TABLE . "
WHERE config_name = '" . $config_name . "' " );
2003-01-13 05:11:11 +00:00
$sql = 'INSERT INTO ' . CONFIG_TABLE . " (config_name, config_value)
2003-01-30 20:02:09 +00:00
VALUES ( '$config_name' , '" . $db->sql_escape($config_value) . "' ) " ;
2003-01-13 05:11:11 +00:00
$db -> sql_query ( $sql );
}
2003-01-11 22:56:49 +00:00
$config [ $config_name ] = $config_value ;
2003-01-22 20:16:18 +00:00
if ( ! $is_dynamic )
{
$cache -> put ( 'config' , $config );
}
2003-01-11 22:56:49 +00:00
}
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 " ;
2003-01-21 15:58:32 +00:00
$sql .= (( is_int ( $user )) ? " user_id = $user " : " username = ' " . $db -> sql_escape ( $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-11-18 18:56:27 +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-10-30 00:57:27 +00:00
function get_forum_branch ( $forum_id , $type = 'all' , $order = 'descending' , $include_forum = TRUE )
2002-09-15 17:21:08 +00:00
{
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' ;
}
$rows = array ();
2002-10-20 19:19:07 +00:00
$sql = ' SELECT f2 .*
2002-11-18 18:56:27 +00:00
FROM ( ' . FORUMS_TABLE . ' f1
LEFT JOIN ' . FORUMS_TABLE . " f2 ON $condition )
2002-10-20 19:19:07 +00:00
WHERE f1 . forum_id = $forum_id
2002-11-18 18:56:27 +00:00
ORDER BY f2 . left_id " . (( $order == 'descending') ? 'ASC' : 'DESC');
2002-09-15 17:21:08 +00:00
$result = $db -> sql_query ( $sql );
2002-10-20 19:19:07 +00:00
2002-09-15 17:21:08 +00:00
while ( $row = $db -> sql_fetchrow ( $result ))
{
if ( ! $include_forum && $row [ 'forum_id' ] == $forum_id )
{
continue ;
}
$rows [] = $row ;
}
return $rows ;
}
2002-11-19 18:55:23 +00:00
// Create forum navigation links for given forum, create parent
// list if currently null, assign basic forum info to template
function generate_forum_nav ( & $forum_data )
{
2003-01-22 20:16:18 +00:00
global $db , $user , $template , $phpEx , $SID ;
2002-11-19 18:55:23 +00:00
// Get forum parents
2003-03-28 01:25:03 +00:00
$forum_parents = get_forum_parents ( $forum_data );
// Build navigation links
foreach ( $forum_parents as $parent_forum_id => $parent_name )
{
$template -> assign_block_vars ( 'navlinks' , array (
'FORUM_NAME' => $parent_name ,
'U_VIEW_FORUM' => 'viewforum.' . $phpEx . $SID . '&f=' . $parent_forum_id
));
}
$template -> assign_block_vars ( 'navlinks' , array (
'FORUM_NAME' => $forum_data [ 'forum_name' ],
'U_VIEW_FORUM' => 'viewforum.' . $phpEx . $SID . '&f=' . $forum_data [ 'forum_id' ]
));
$template -> assign_vars ( array (
'FORUM_ID' => $forum_data [ 'forum_id' ],
'FORUM_NAME' => $forum_data [ 'forum_name' ],
'FORUM_DESC' => $forum_data [ 'forum_desc' ]
));
return ;
}
// Returns forum parents as an array. Get them from forum_data if available, or update the database otherwise
function get_forum_parents ( $forum_data )
{
2003-03-29 18:42:24 +00:00
global $db ;
2002-11-19 18:55:23 +00:00
$forum_parents = array ();
if ( $forum_data [ 'parent_id' ] > 0 )
{
2003-03-28 01:25:03 +00:00
if ( $forum_data [ 'forum_parents' ] == '' )
2002-11-19 18:55:23 +00:00
{
$sql = ' SELECT forum_id , forum_name
2003-02-25 18:19:34 +00:00
FROM ' . FORUMS_TABLE . '
WHERE left_id < ' . $forum_data[' left_id '] . '
AND right_id > ' . $forum_data[' right_id '] . '
ORDER BY left_id ASC ' ;
2002-11-19 18:55:23 +00:00
$result = $db -> sql_query ( $sql );
while ( $row = $db -> sql_fetchrow ( $result ))
{
$forum_parents [ $row [ 'forum_id' ]] = $row [ 'forum_name' ];
}
$sql = 'UPDATE ' . FORUMS_TABLE . "
2003-02-25 18:19:34 +00:00
SET forum_parents = '" . $db->sql_escape(serialize($forum_parents)) . "'
WHERE parent_id = " . $forum_data['parent_id'] ;
2002-11-19 18:55:23 +00:00
$db -> sql_query ( $sql );
}
else
{
$forum_parents = unserialize ( $forum_data [ 'forum_parents' ]);
}
}
2003-03-28 01:25:03 +00:00
return $forum_parents ;
2002-11-19 18:55:23 +00:00
}
2002-07-14 14:35:12 +00:00
// Obtain list of moderators of each forum
function get_moderators ( & $forum_moderators , $forum_id = false )
2001-04-19 13:18:57 +00:00
{
2003-01-11 22:56:49 +00:00
global $cache , $SID , $db , $acl_options , $phpEx ;
2002-07-14 14:35:12 +00:00
2002-11-18 18:56:27 +00:00
if ( ! empty ( $forum_id ) && is_array ( $forum_id ))
2002-11-07 03:20:33 +00:00
{
2002-11-18 18:56:27 +00:00
$forum_sql = 'AND forum_id IN (' . implode ( ', ' , $forum_id ) . ')' ;
2002-11-07 03:20:33 +00:00
}
else
{
2002-11-18 18:56:27 +00:00
$forum_sql = ( $forum_id ) ? 'AND forum_id = ' . $forum_id : '' ;
2002-11-07 03:20:33 +00:00
}
2002-11-18 18:56:27 +00:00
$sql = ' SELECT *
FROM ' . MODERATOR_TABLE . "
WHERE display_on_index = 1
2002-10-28 00:25:38 +00:00
$forum_sql " ;
$result = $db -> sql_query ( $sql );
2002-11-18 18:56:27 +00:00
while ( $row = $db -> sql_fetchrow ( $result ))
2002-10-28 00:25:38 +00:00
{
2002-11-21 15:40:21 +00:00
$forum_moderators [ $row [ 'forum_id' ]][] = ( ! empty ( $row [ 'user_id' ])) ? '<a href="ucp.' . $phpEx . $SID . '&mode=viewprofile&u=' . $row [ 'user_id' ] . '">' . $row [ 'username' ] . '</a>' : '<a href="groupcp.' . $phpEx . $SID . '&g=' . $row [ 'group_id' ] . '">' . $row [ 'groupname' ] . '</a>' ;
2002-11-18 18:56:27 +00:00
}
$db -> sql_freeresult ( $result );
2002-07-14 14:35:12 +00:00
return ;
}
// User authorisation levels output
2003-02-25 18:19:34 +00:00
function gen_forum_rules ( $mode , & $forum_id )
2002-07-14 14:35:12 +00:00
{
2003-02-25 18:19:34 +00:00
global $SID , $template , $auth , $user ;
2002-07-14 14:35:12 +00:00
2003-02-25 18:19:34 +00:00
$rules = array ( 'post' , 'reply' , 'edit' , 'delete' , 'attach' );
foreach ( $rules as $rule )
{
$template -> assign_block_vars ( 'rules' , array (
2003-02-26 19:53:10 +00:00
'RULE' => ( $auth -> acl_gets ( 'f_' . $rule , 'm_' , 'a_' , intval ( $forum_id ))) ? $user -> lang [ 'RULES_' . strtoupper ( $rule ) . '_CAN' ] : $user -> lang [ 'RULES_' . strtoupper ( $rule ) . '_CANNOT' ])
2003-02-25 18:19:34 +00:00
);
}
return ;
}
2003-02-27 16:14:46 +00:00
function gen_sort_selects ( & $limit_days , & $sort_by_text , & $sort_days , & $sort_key , & $sort_dir , & $s_limit_days , & $s_sort_key , & $s_sort_dir )
2003-02-25 18:19:34 +00:00
{
global $user ;
$sort_dir_text = array ( 'a' => $user -> lang [ 'ASCENDING' ], 'd' => $user -> lang [ 'DESCENDING' ]);
2003-02-27 16:14:46 +00:00
$s_limit_days = '<select name="st">' ;
2003-02-25 18:19:34 +00:00
foreach ( $limit_days as $day => $text )
{
$selected = ( $sort_days == $day ) ? ' selected="selected"' : '' ;
$s_limit_days .= '<option value="' . $day . '"' . $selected . '>' . $text . '</option>' ;
}
$s_limit_days .= '</select>' ;
2003-02-27 16:14:46 +00:00
$s_sort_key = '<select name="sk">' ;
2003-02-25 18:19:34 +00:00
foreach ( $sort_by_text as $key => $text )
{
$selected = ( $sort_key == $key ) ? ' selected="selected"' : '' ;
$s_sort_key .= '<option value="' . $key . '"' . $selected . '>' . $text . '</option>' ;
}
$s_sort_key .= '</select>' ;
2003-02-27 16:14:46 +00:00
$s_sort_dir = '<select name="sd">' ;
2003-02-25 18:19:34 +00:00
foreach ( $sort_dir_text as $key => $value )
{
$selected = ( $sort_dir == $key ) ? ' selected="selected"' : '' ;
$s_sort_dir .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>' ;
}
$s_sort_dir .= '</select>' ;
2001-04-19 13:18:57 +00:00
2002-07-14 14:35:12 +00:00
return ;
}
2003-03-28 01:25:03 +00:00
function make_jumpbox ( $action , $forum_id = false , $enable_select_all = false )
2002-07-14 14:35:12 +00:00
{
2003-02-17 06:20:41 +00:00
global $auth , $template , $user , $db , $nav_links , $phpEx , $SID ;
2002-07-14 14:35:12 +00:00
2003-03-28 01:25:03 +00:00
$boxstring = '<select name="f" onChange="if(this.options[this.selectedIndex].value != -1){ forms[\'jumpbox\'].submit() }">' ;
$boxstring .= ( $enable_select_all ) ? '<option value="0">' . $user -> lang [ 'ALL_FORUMS' ] : '<option value="-1">' . $user -> lang [ 'SELECT_FORUM' ];
$boxstring .= '</option><option value="-1">-----------------</option>' ;
2002-10-10 00:35:35 +00:00
2002-11-26 00:50:16 +00:00
$sql = ' SELECT forum_id , forum_name , forum_postable , left_id , right_id
2002-10-10 00:35:35 +00:00
FROM ' . FORUMS_TABLE . '
ORDER BY left_id ASC ' ;
2003-03-20 00:29:24 +00:00
$result = $db -> sql_query ( $sql , 120 );
2002-02-12 17:14:39 +00:00
2002-11-19 23:12:11 +00:00
$right = $cat_right = 0 ;
2002-11-26 00:50:16 +00:00
$padding = $forum_list = $holding = '' ;
2002-11-18 18:56:27 +00:00
while ( $row = $db -> sql_fetchrow ( $result ))
2002-07-14 14:35:12 +00:00
{
2002-11-19 23:12:11 +00:00
if ( ! $row [ 'forum_postable' ] && ( $row [ 'left_id' ] + 1 == $row [ 'right_id' ]))
{
// Non-postable forum with no subforums, don't display
continue ;
}
if ( ! $auth -> acl_gets ( 'f_list' , 'm_' , 'a_' , intval ( $row [ 'forum_id' ])))
{
// if the user does not have permissions to list this forum skip
continue ;
}
if ( $row [ 'left_id' ] < $right )
2002-10-10 00:35:35 +00:00
{
$padding .= ' ' ;
}
2002-11-18 18:56:27 +00:00
else if ( $row [ 'left_id' ] > $right + 1 )
2002-10-10 00:35:35 +00:00
{
2002-11-18 18:56:27 +00:00
$padding = substr ( $padding , 0 , - 13 * ( $row [ 'left_id' ] - $right + 1 ));
2002-10-10 00:35:35 +00:00
}
$right = $row [ 'right_id' ];
2002-11-19 23:12:11 +00:00
$selected = ( $row [ 'forum_id' ] == $forum_id ) ? ' selected="selected"' : '' ;
2001-12-05 00:50:12 +00:00
2002-11-19 23:12:11 +00:00
if ( $row [ 'left_id' ] > $cat_right )
{
$holding = '' ;
}
2002-10-11 02:55:34 +00:00
2002-11-26 00:50:16 +00:00
if ( $row [ 'right_id' ] - $row [ 'left_id' ] > 1 )
2002-11-19 23:12:11 +00:00
{
$cat_right = max ( $cat_right , $row [ 'right_id' ]);
2001-10-14 15:48:38 +00:00
2002-11-19 23:12:11 +00:00
$holding .= '<option value="' . $row [ 'forum_id' ] . '"' . $selected . '>' . $padding . '+ ' . $row [ 'forum_name' ] . '</option>' ;
}
else
{
$boxstring .= $holding . '<option value="' . $row [ 'forum_id' ] . '"' . $selected . '>' . $padding . '- ' . $row [ 'forum_name' ] . '</option>' ;
$holding = '' ;
2002-10-08 20:06:55 +00:00
}
2002-10-10 00:35:35 +00:00
2002-11-19 23:12:11 +00:00
$nav_links [ 'chapter forum' ][ $row [ 'forum_id' ]] = array (
2003-01-20 05:12:38 +00:00
'url' => " viewforum. $phpEx $SID &f= " . $row [ 'forum_id' ],
2002-11-19 23:12:11 +00:00
'title' => $row [ 'forum_name' ]
);
2002-10-08 20:06:55 +00:00
}
$db -> sql_freeresult ( $result );
2002-10-10 00:35:35 +00:00
if ( ! $right )
{
2002-10-20 19:19:07 +00:00
$boxstring .= '<option value="-1">' . $user -> lang [ 'No_forums' ] . '</option>' ;
2002-10-10 00:35:35 +00:00
}
2002-11-27 15:15:12 +00:00
2002-10-10 00:35:35 +00:00
$boxstring .= '</select>' ;
2003-03-28 01:25:03 +00:00
$boxstring .= '<input type="hidden" name="sid" value="' . $user -> session_id . '" />' ;
2003-01-31 02:11:38 +00:00
2002-03-31 00:06:34 +00:00
$template -> assign_vars ( array (
'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 ...
2003-01-31 15:39:07 +00:00
function language_select ( $default = '' )
2001-04-19 13:18:57 +00:00
{
2003-01-31 15:39:07 +00:00
global $phpbb_root_path , $phpEx ;
2002-07-14 14:35:12 +00:00
2003-01-31 15:39:07 +00:00
$dir = @ opendir ( $phpbb_root_path . 'language' );
2001-05-02 00:42:33 +00:00
2002-10-20 19:19:07 +00:00
$user = array ();
2002-11-18 18:56:27 +00:00
while ( $file = readdir ( $dir ))
2001-04-19 13:18:57 +00:00
{
2003-01-31 15:39:07 +00:00
$path = $phpbb_root_path . 'language/' . $file ;
if ( is_file ( $path ) || is_link ( $path ) || $file == '.' || $file == '..' )
2002-10-31 03:20:54 +00:00
{
continue ;
}
2003-01-31 15:39:07 +00:00
if ( file_exists ( $path . '/iso.txt' ))
2001-06-11 12:53:35 +00:00
{
2003-01-31 15:39:07 +00:00
list ( $displayname ) = @ file ( $path . '/iso.txt' );
2002-10-31 03:20:54 +00:00
$lang [ $displayname ] = $file ;
2001-06-11 12:53:35 +00:00
}
2002-07-14 14:35:12 +00:00
}
2002-10-30 00:57:27 +00:00
@ closedir ( $dir );
2001-07-08 20:24:15 +00:00
2002-10-30 00:57:27 +00:00
@ asort ( $lang );
@ reset ( $lang );
2001-07-14 17:30:21 +00:00
2002-11-18 18:56:27 +00:00
foreach ( $lang as $displayname => $filename )
2001-04-19 13:18:57 +00:00
{
2002-11-18 18:56:27 +00:00
$selected = ( strtolower ( $default ) == strtolower ( $filename )) ? ' selected="selected"' : '' ;
2002-10-20 19:19:07 +00:00
$user_select .= '<option value="' . $filename . '"' . $selected . '>' . ucwords ( $displayname ) . '</option>' ;
2001-04-19 13:18:57 +00:00
}
2001-05-03 22:10:23 +00:00
2002-10-20 19:19:07 +00:00
return $user_select ;
2002-07-14 14:35:12 +00:00
}
2001-12-14 02:41:33 +00:00
2002-08-17 22:08:34 +00:00
// Pick a template/theme combo,
2003-01-31 15:39:07 +00:00
function style_select ( $default = '' )
2002-07-14 14:35:12 +00:00
{
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-11-18 18:56:27 +00:00
while ( $row = $db -> sql_fetchrow ( $result ))
2001-12-14 02:41:33 +00:00
{
2003-01-31 15:39:07 +00:00
$selected = ( $row [ 'style_id' ] == $default ) ? ' 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>' ;
}
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
2003-01-31 15:39:07 +00:00
function tz_select ( $default = '' )
2001-04-19 13:18:57 +00:00
{
2002-10-20 19:19:07 +00:00
global $sys_timezone , $user ;
2001-05-03 22:10:23 +00:00
2002-11-18 18:56:27 +00:00
foreach ( $user -> lang [ 'tz' ] as $offset => $zone )
2001-05-01 19:10:09 +00:00
{
2003-01-31 15:39:07 +00:00
if ( is_numeric ( $offset ))
{
$selected = ( $offset === $default ) ? ' selected="selected"' : '' ;
$tz_select .= '<option value="' . $offset . '"' . $selected . '>' . $zone . '</option>' ;
}
2001-05-01 19:10:09 +00:00
}
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
2002-11-05 04:50:55 +00:00
function watch_topic_forum ( $mode , & $s_watching , & $s_watching_img , $user_id , $match_id , $notify_status = 'unset' )
2002-07-14 14:35:12 +00:00
{
2002-10-20 19:19:07 +00:00
global $template , $db , $user , $phpEx , $SID , $start ;
2001-09-25 18:18:47 +00:00
2002-11-18 18:56:27 +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-08-17 22:08:34 +00:00
// Is user watching this thread?
2002-11-18 18:56:27 +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-11-05 04:50:55 +00:00
if ( $notify_status == 'unset' )
{
$sql = " SELECT notify_status
FROM $table_sql
WHERE $where_sql = $match_id
AND user_id = $user_id " ;
$result = $db -> sql_query ( $sql );
if ( $row = $db -> sql_fetchrow ( $result ))
{
$notify_status = $row [ 'notify_status' ];
}
else
{
$notify_status = NULL ;
}
}
2002-07-14 14:35:12 +00:00
2002-11-05 04:50:55 +00:00
if ( ! is_null ( $notify_status ))
2001-09-25 18:18:47 +00:00
{
2002-11-18 18:56:27 +00:00
if ( isset ( $_GET [ 'unwatch' ]))
2002-07-14 14:35:12 +00:00
{
2002-11-18 18:56:27 +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 " . '">' )
);
2003-03-17 00:53:38 +00:00
$message = $user -> lang [ 'NOT_WATCHING_' . strtoupper ( $mode )] . '<br /><br />' . sprintf ( $user -> lang [ 'RETURN_' . strtoupper ( $mode )], '<a href="' . " view $mode . $phpEx $SID & " . $u_url . " = $match_id &start= $start " . '">' , '</a>' );
2002-10-30 00:57:27 +00:00
trigger_error ( $message );
2002-07-14 14:35:12 +00:00
}
else
{
$is_watching = TRUE ;
2002-11-05 04:50:55 +00:00
if ( $notify_status )
2002-07-14 14:35:12 +00:00
{
$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-11-18 18:56:27 +00:00
if ( isset ( $_GET [ 'watch' ]))
2002-07-14 14:35:12 +00:00
{
2002-11-18 18:56:27 +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
2003-03-17 00:53:38 +00:00
$message = $user -> lang [ 'ARE_WATCHING_' . strtoupper ( $mode )] . '<br /><br />' . sprintf ( $user -> lang [ 'RETURN_' . strtoupper ( $mode )], '<a href="' . " view $mode . $phpEx $SID & " . $u_url . " = $match_id &start= $start " . '">' , '</a>' );
2002-10-30 00:57:27 +00:00
trigger_error ( $message );
2002-07-14 14:35:12 +00:00
}
else
{
$is_watching = 0 ;
}
}
}
else
{
2002-11-18 18:56:27 +00:00
if ( isset ( $_GET [ 'unwatch' ]))
2002-02-04 18:31:22 +00:00
{
2002-11-18 18:56:27 +00:00
if ( $_GET [ 'unwatch' ] == $mode )
2002-03-18 13:35:23 +00:00
{
2003-03-17 00:53:38 +00:00
login_box ( preg_replace ( '#.*?([a-z]+?\.' . $phpEx . '.*?)$#i' , '\1' , htmlspecialchars ( $_SERVER [ 'REQUEST_URI' ])));
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-11-18 18:56:27 +00:00
if ( $can_watch )
2002-07-14 14:35:12 +00:00
{
2003-03-17 00:53:38 +00:00
$s_watching = ( $is_watching ) ? '<a href="' . " view $mode . " . $phpEx . $SID . '&' . $u_url . " = $match_id &unwatch= $mode &start= $start " . '">' . $user -> lang [ 'STOP_WATCHING_' . strtoupper ( $mode )] . '</a>' : '<a href="' . " view $mode . " . $phpEx . $SID . '&' . $u_url . " = $match_id &watch= $mode &start= $start " . '">' . $user -> lang [ 'START_WATCHING_' . strtoupper ( $mode )] . '</a>' ;
2002-07-14 14:35:12 +00:00
}
return ;
2001-04-19 13:18:57 +00:00
}
2002-11-26 00:15:45 +00:00
// Marks a topic or form as read in the 'lastread' table.
2003-01-07 14:37:19 +00:00
function markread ( $mode , $forum_id = 0 , $topic_id = 0 , $post_id = 0 )
2002-11-26 00:15:45 +00:00
{
2003-01-07 14:37:19 +00:00
global $db , $user ;
if ( $user -> data [ 'user_id' ] == ANONYMOUS )
2002-11-26 00:15:45 +00:00
{
return ;
}
2003-01-07 14:37:19 +00:00
switch ( $mode )
2002-11-26 00:15:45 +00:00
{
case 'mark' :
// Mark one forum as read.
// Do this by inserting a record with -$forum_id in the 'forum_id' field.
$sql = " SELECT forum_id
2003-01-07 14:37:19 +00:00
FROM " . LASTREAD_TABLE . "
WHERE user_id = " . $user->data ['user_id'] . "
2002-11-26 00:15:45 +00:00
AND forum_id = - $forum_id " ;
2003-01-07 14:37:19 +00:00
$result = $db -> sql_query ( $sql );
if ( $db -> sql_fetchrow ( $result ))
2002-11-26 00:15:45 +00:00
{
// User has marked this topic as read before: Update the record
2003-01-07 14:37:19 +00:00
$sql = " UPDATE " . LASTREAD_TABLE . "
SET lastread_time = " . time() . "
WHERE user_id = " . $user->data ['user_id'] . "
2002-11-26 00:15:45 +00:00
AND forum_id = - $forum_id " ;
2003-01-07 14:37:19 +00:00
$db -> sql_query ( $sql );
2002-11-26 00:15:45 +00:00
}
else
{
// User is marking this forum for the first time.
// Insert dummy topic_id to satisfy PRIMARY KEY (user_id, topic_id)
// dummy id = -forum_id
2003-01-07 14:37:19 +00:00
$sql = " INSERT INTO " . LASTREAD_TABLE . "
2002-11-26 00:15:45 +00:00
( user_id , forum_id , topic_id , lastread_time )
VALUES
2003-01-07 14:37:19 +00:00
( " . $user->data ['user_id'] . " , - $forum_id , - $forum_id , " . time() . " ) " ;
$db -> sql_query ( $sql );
2002-11-26 00:15:45 +00:00
}
break ;
2003-01-07 14:37:19 +00:00
2002-11-26 00:15:45 +00:00
case 'markall' :
// Mark all forums as read.
// Select all forum_id's that are not yet in the lastread table
$sql = " SELECT f.forum_id
2003-01-07 14:37:19 +00:00
FROM " . FORUMS_TABLE . " f
LEFT JOIN ( " . LASTREAD_TABLE . " lr ON (
lr . user_id = " . $user->data ['user_id'] . "
AND f . forum_id = - lr . forum_id ))
2002-11-26 00:15:45 +00:00
WHERE lr . forum_id IS NULL " ;
2003-01-07 14:37:19 +00:00
$result = $db -> sql_query ( $sql );
if ( $row = $db -> sql_fetchrow ( $result ))
2002-11-26 00:15:45 +00:00
{
2003-01-07 14:37:19 +00:00
// Some forum_id's are missing. We are not taking into account
// the auth data, even forums the user can't see are marked as read.
$sql = " INSERT INTO " . LASTREAD_TABLE . "
2002-11-26 00:15:45 +00:00
( user_id , forum_id , topic_id , lastread_time )
VALUES\n " ;
$forum_insert = array ();
2003-01-07 14:37:19 +00:00
do
2002-11-26 00:15:45 +00:00
{
// Insert dummy topic_id to satisfy PRIMARY KEY
// dummy id = -forum_id
2003-01-07 14:37:19 +00:00
$forum_insert [] = " ( " . $user -> data [ 'user_id' ] . " , - " . $row [ 'forum_id' ] . " , - " . $row [ 'forum_id' ] . " , " . time () . " ) " ;
2002-11-26 00:15:45 +00:00
}
2003-01-07 14:37:19 +00:00
while ( $row = $db -> sql_fetchrow ( $result ));
2002-11-26 00:15:45 +00:00
$forum_insert = implode ( " , \n " , $forum_insert );
$sql .= $forum_insert ;
2003-01-07 14:37:19 +00:00
$db -> sql_query ( $sql );
2002-11-26 00:15:45 +00:00
}
2003-01-07 14:37:19 +00:00
2002-11-26 00:15:45 +00:00
// Mark all forums as read
2003-01-07 14:37:19 +00:00
$sql = " UPDATE " . LASTREAD_TABLE . "
SET lastread_time = " . time() . "
WHERE user_id = " . $user->data ['user_id'] . "
2002-11-26 00:15:45 +00:00
AND forum_id < 0 " ;
2003-01-07 14:37:19 +00:00
$db -> sql_query ( $sql );
2002-11-26 00:15:45 +00:00
break ;
2003-01-07 14:37:19 +00:00
2002-11-26 00:15:45 +00:00
case 'post' :
// Mark a topic as read and mark it as a topic where the user has made a post.
$type = 1 ;
2003-01-07 14:37:19 +00:00
2002-11-26 00:15:45 +00:00
case 'topic' :
// Mark a topic as read.
// Type:
// 0 = Normal topic
// 1 = user made a post in this topic
$type_update = ( isset ( $type ) && $type = 1 ) ? 'lastread_type = 1,' : '' ;
2003-01-07 14:37:19 +00:00
$sql = " UPDATE " . LASTREAD_TABLE . "
SET $type_update forum_id = $forum_id , lastread_time = " . time() . "
WHERE topic_id = $topic_id
AND user_id = " . $user->data ['user_id'];
$db -> sql_query ( $sql );
if ( $db -> sql_affectedrows ( $result ) == 0 )
2002-11-26 00:15:45 +00:00
{
// Couldn't update. Row probably doesn't exist. Insert one.
if ( isset ( $type ) && $type = 1 )
{
$type_name = 'lastread_type, ' ;
$type_value = '1, ' ;
}
else
{
$type_name = '' ;
$type_value = '' ;
}
2003-01-07 14:37:19 +00:00
$sql = " INSERT INTO " . LASTREAD_TABLE . "
2002-11-26 00:15:45 +00:00
( user_id , topic_id , forum_id , $type_name lastread_time )
VALUES
2003-01-07 14:37:19 +00:00
( " . $user->data ['user_id'] . " , $topic_id , $forum_id , $type_value " . time() . " ) " ;
$db -> sql_query ( $sql );
2002-11-26 00:15:45 +00:00
}
break ;
}
}
2002-10-20 19:19:07 +00:00
// Pagination routine, generates page number sequence
2001-05-07 23:04:16 +00:00
function generate_pagination ( $base_url , $num_items , $per_page , $start_item , $add_prevnext_text = TRUE )
{
2002-10-20 19:19:07 +00:00
global $user ;
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-11-18 18:56:27 +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
2003-01-08 22:27:16 +00:00
$page_string = ( $on_page == 1 ) ? '<b>1</b>' : '<a href="' . $base_url . " &start= " . (( $on_page - 2 ) * $per_page ) . '">' . $user -> lang [ 'PREVIOUS' ] . '</a> <a href="' . $base_url . '">1</a>' ;
2002-10-04 13:09:10 +00:00
2002-11-18 18:56:27 +00:00
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 );
2002-11-18 18:56:27 +00:00
$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-11-18 18:56:27 +00:00
$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' : '<a href="' . $base_url . " &start= " . (( $i - 1 ) * $per_page ) . '">' . $i . '</a>' ;
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-11-18 18:56:27 +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-11-18 18:56:27 +00:00
$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' : '<a href="' . $base_url . " &start= " . (( $i - 1 ) * $per_page ) . '">' . $i . '</a>' ;
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
2003-01-08 22:27:16 +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 ) . '">' . $user -> lang [ 'NEXT' ] . '</a>' ;
2001-05-07 23:04:16 +00:00
2003-01-08 22:27:16 +00:00
$page_string = $user -> 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 )
{
2002-10-20 19:19:07 +00:00
global $user ;
2002-08-02 16:39:02 +00:00
2003-01-08 22:27:16 +00:00
return sprintf ( $user -> lang [ 'PAGE_OF' ], floor ( $start / $per_page ) + 1 , max ( ceil ( $num_items / $per_page ), 1 ));
2002-08-02 16:39:02 +00:00
}
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
2003-01-21 15:58:32 +00:00
function obtain_word_list ( & $censors )
2001-09-02 22:08:01 +00:00
{
2003-01-11 22:56:49 +00:00
global $db , $cache ;
2003-01-21 15:58:32 +00:00
2003-01-11 22:56:49 +00:00
if ( $cache -> exists ( 'word_censors' ))
{
2003-01-21 15:58:32 +00:00
$censors = $cache -> get ( 'word_censors' ); // transfer to just if (!(...)) ? works fine for me
2003-01-11 22:56:49 +00:00
}
else
{
$sql = " SELECT word, replacement
FROM " . WORDS_TABLE;
$result = $db -> sql_query ( $sql );
2001-09-02 22:08:01 +00:00
2003-01-21 15:58:32 +00:00
$censors = array ();
if ( $row = $db -> sql_fetchrow ( $result ))
{
do
{
$censors [ 'match' ][] = '#\b(' . str_replace ( '\*' , '\w*?' , preg_quote ( $row [ 'word' ], '#' )) . ')\b#i' ;
$censors [ 'replace' ][] = $row [ 'replacement' ];
}
while ( $row = $db -> sql_fetchrow ( $result ));
}
$db -> sql_freeresult ( $result );
2003-01-22 20:16:18 +00:00
$cache -> put ( 'word_censors' , $censors );
2003-01-21 15:58:32 +00:00
}
return true ;
}
// Obtain currently listed icons, re-caching if necessary
function obtain_icons ( & $icons )
{
global $db , $cache ;
2003-01-22 20:16:18 +00:00
if ( $cache -> exists ( 'icons' ))
{
$icons = $cache -> get ( 'icons' );
}
else
2003-01-21 15:58:32 +00:00
{
// Topic icons
$sql = " SELECT *
2003-01-28 18:16:53 +00:00
FROM " . ICONS_TABLE . "
ORDER BY icons_order " ;
2003-01-21 15:58:32 +00:00
$result = $db -> sql_query ( $sql );
$icons = array ();
2003-01-11 22:56:49 +00:00
while ( $row = $db -> sql_fetchrow ( $result ))
{
2003-01-21 15:58:32 +00:00
$icons [ $row [ 'icons_id' ]][ 'img' ] = $row [ 'icons_url' ];
$icons [ $row [ 'icons_id' ]][ 'width' ] = $row [ 'icons_width' ];
$icons [ $row [ 'icons_id' ]][ 'height' ] = $row [ 'icons_height' ];
2003-01-28 18:16:53 +00:00
$icons [ $row [ 'icons_id' ]][ 'display' ] = $row [ 'display_on_posting' ];
2003-01-11 22:56:49 +00:00
}
2003-01-21 15:58:32 +00:00
$db -> sql_freeresult ( $result );
2002-02-08 01:44:27 +00:00
2003-01-21 15:58:32 +00:00
$cache -> put ( 'icons' , $icons );
2001-09-02 22:08:01 +00:00
}
2003-01-21 15:58:32 +00:00
return ;
2001-09-02 22:08:01 +00:00
}
2003-03-25 14:19:23 +00:00
function generate_board_url ()
{
global $config ;
return (( $config [ 'cookie_secure' ]) ? 'https://' : 'http://' ) . trim ( $config [ 'server_name' ]) . (( $config [ 'server_port' ] <> 80 ) ? ':' . trim ( $config [ 'server_port' ]) . '/' : '/' ) . preg_replace ( '/^\/?(.*?)\/?$/' , '\1' , trim ( $config [ 'script_path' ]));
}
2002-10-09 19:50:48 +00:00
// Redirects the user to another page then exits the script nicely
2002-12-02 23:53:21 +00:00
function redirect ( $url )
2002-10-09 19:50:48 +00:00
{
2003-01-13 05:11:11 +00:00
global $db , $cache , $config ;
2002-10-20 19:19:07 +00:00
2002-10-10 00:35:35 +00:00
if ( isset ( $db ))
{
$db -> sql_close ();
}
2003-01-13 05:11:11 +00:00
if ( isset ( $cache ))
{
2003-02-21 01:51:46 +00:00
$cache -> unload ();
2003-01-13 05:11:11 +00:00
}
2002-10-09 19:50:48 +00:00
2003-01-08 18:27:16 +00:00
$server_protocol = ( $config [ 'cookie_secure' ]) ? 'https://' : 'http://' ;
$server_name = preg_replace ( '/^\/?(.*?)\/?$/' , '\1' , trim ( $config [ 'server_name' ]));
$server_port = ( $config [ 'server_port' ] <> 80 ) ? ':' . trim ( $config [ 'server_port' ]) . '/' : '/' ;
$script_name = preg_replace ( '/^\/?(.*?)\/?$/' , '\1' , trim ( $config [ 'script_path' ]));
2003-01-13 05:11:11 +00:00
$url = (( $script_name == '' ) ? '' : '/' ) . preg_replace ( '/^\/?(.*?)\/?$/' , '\1' , trim ( $url ));
2002-12-02 23:53:21 +00:00
2003-01-08 18:27:16 +00:00
// Redirect via an HTML form for PITA webservers
2002-12-02 23:53:21 +00:00
if ( @ preg_match ( '/Microsoft|WebSTAR|Xitami/' , getenv ( 'SERVER_SOFTWARE' )))
{
2003-01-08 18:27:16 +00:00
header ( 'Refresh: 0; URL=' . $server_protocol . $server_name . $server_port . $script_name . $url );
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><meta http-equiv="refresh" content="0; url=' . $server_protocol . $server_name . $server_port . $script_name . $url . '"><title>Redirect</title></head><body><div align="center">If your browser does not support meta redirection please click <a href="' . $server_protocol . $server_name . $server_port . $script_name . $url . '">HERE</a> to be redirected</div></body></html>' ;
exit ;
2002-12-02 23:53:21 +00:00
}
2003-01-08 18:27:16 +00:00
// Behave as per HTTP/1.1 spec for others
header ( 'Location: ' . $server_protocol . $server_name . $server_port . $script_name . $url );
2002-10-09 19:50:48 +00:00
exit ;
}
2002-10-30 00:57:27 +00:00
// Does supplementary validation of optional profile fields. This
// expects common stuff like trim() and strip_tags() to have already
// been run. Params are passed by-ref, so we can set them to the empty
// string if they fail.
function validate_optional_fields ( & $icq , & $aim , & $msnm , & $yim , & $website , & $location , & $occupation , & $interests , & $sig )
{
$check_var_length = array ( 'aim' , 'msnm' , 'yim' , 'location' , 'occupation' , 'interests' , 'sig' );
for ( $i = 0 ; $i < count ( $check_var_length ); $i ++ )
{
2002-11-18 18:56:27 +00:00
if ( strlen ( $$check_var_length [ $i ]) < 2 )
2002-10-30 00:57:27 +00:00
{
$$check_var_length [ $i ] = '' ;
}
}
// ICQ number has to be only numbers.
2002-11-18 18:56:27 +00:00
if ( ! preg_match ( '/^[0-9]+$/' , $icq ))
2002-10-30 00:57:27 +00:00
{
$icq = '' ;
}
// website has to start with http://, followed by something with length at least 3 that
// contains at least one dot.
2002-11-18 18:56:27 +00:00
if ( $website != '' )
2002-10-30 00:57:27 +00:00
{
2002-11-25 23:46:23 +00:00
if ( ! preg_match ( '#^http[s]?:\/\/#i' , $website ))
2002-10-30 00:57:27 +00:00
{
$website = 'http://' . $website ;
}
2002-11-25 23:46:23 +00:00
if ( ! preg_match ( '#^http[s]?\\:\\/\\/[a-z0-9\-]+\.([a-z0-9\-]+\.)?[a-z]+#i' , $website ))
2002-10-30 00:57:27 +00:00
{
$website = '' ;
}
}
return ;
}
2003-03-17 00:53:38 +00:00
// Generate login box or verify password
function login_box ( $s_action , $s_hidden_fields = '' , $login_explain = '' )
{
global $SID , $db , $user , $template , $auth , $phpbb_root_path , $phpEx ;
$err = '' ;
if ( isset ( $_POST [ 'login' ]))
{
$autologin = ( ! empty ( $_POST [ 'autologin' ])) ? TRUE : FALSE ;
$viewonline = ( ! empty ( $_POST [ 'viewonline' ])) ? 0 : 1 ;
if (( $result = $auth -> login ( $_POST [ 'username' ], $_POST [ 'password' ], $autologin , $viewonline )) === true )
{
return true ;
}
// If we get a non-numeric (e.g. string) value we output an error
if ( is_string ( $result ))
{
trigger_error ( $result , E_USER_ERROR );
}
// If we get an integer zero then we are inactive, else the username/password is wrong
$err = ( $result === 0 ) ? $user -> lang [ 'ACTIVE_ERROR' ] : $user -> lang [ 'LOGIN_ERROR' ];
}
$template -> assign_vars ( array (
'LOGIN_ERROR' => $err ,
'LOGIN_EXPLAIN' => $login_explain ,
'U_SEND_PASSWORD' => " ucp. $phpEx $SID &mode=sendpassword " ,
'U_TERMS_USE' => " ucp. $phpEx $SID &mode=terms " ,
'U_PRIVACY' => " ucp. $phpEx $SID &mode=privacy " ,
'S_LOGIN_ACTION' => $s_action ,
'S_HIDDEN_FIELDS' => $s_hidden_fields )
);
$page_title = $user -> lang [ 'LOGIN' ];
include ( $phpbb_root_path . 'includes/page_header.' . $phpEx );
$template -> set_filenames ( array (
'body' => 'login_body.html' )
);
make_jumpbox ( 'viewforum.' . $phpEx );
include ( $phpbb_root_path . 'includes/page_tail.' . $phpEx );
}
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 )
{
2003-01-11 22:56:49 +00:00
global $cache , $db , $auth , $template , $config , $user , $nav_links ;
2002-10-20 19:19:07 +00:00
global $phpEx , $phpbb_root_path , $starttime ;
2002-10-08 20:06:55 +00:00
2002-11-01 12:23:08 +00:00
switch ( $errno )
2002-10-08 20:06:55 +00:00
{
case E_WARNING :
2002-10-26 12:34:39 +00:00
// if (defined('DEBUG'))
// {
// echo "PHP Warning on line <b>$errline</b> in <b>$errfile</b> :: <b>$msg_text</b>";
// }
2002-10-08 20:06:55 +00:00
break ;
case E_NOTICE :
2003-02-17 06:20:41 +00:00
if ( defined ( 'DEBUG_EXTRA' ))
{
echo " PHP Notice on line <b> $errline </b> in <b> $errfile </b> :: <b> $msg_text </b><br /> " ;
}
2002-10-08 20:06:55 +00:00
break ;
case E_USER_ERROR :
2002-11-01 12:23:08 +00:00
if ( isset ( $db ))
2002-10-20 19:19:07 +00:00
{
$db -> sql_close ();
}
2002-10-10 00:35:35 +00:00
2003-03-30 14:39:48 +00:00
if ( ! defined ( 'HEADER_INC' ))
{
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8869-1"><meta http-equiv="Content-Style-Type" content="text/css"><link rel="stylesheet" href="' . $phpbb_root_path . 'adm/subSilver.css" type="text/css"><style type="text/css">' . " \n " ;
echo 'th { background-image: url(\'' . $phpbb_root_path . 'adm/images/cellpic3.gif\') }' . " \n " ;
echo 'td.cat { background-image: url(\'' . $phpbb_root_path . 'adm/images/cellpic1.gif\') }' . " \n " ;
echo '</style><title>' . $msg_title . '</title></head><body>' ;
echo '<table width="100%" cellspacing="0" cellpadding="0" border="0"><tr><td><img src="' . $phpbb_root_path . 'adm/images/header_left.jpg" width="200" height="60" alt="phpBB Logo" title="phpBB Logo" border="0"/></td><td width="100%" background="' . $phpbb_root_path . 'adm/images/header_bg.jpg" height="60" align="right" nowrap="nowrap"><span class="maintitle">General Error</span> </td></tr></table>' ;
}
echo '<br clear="all" /><table width="85%" cellspacing="0" cellpadding="0" border="0" align="center"><tr><td><br clear="all" />' . $msg_text . '<hr />Please notify the board administrator or webmaster : <a href="mailto:' . $config [ 'board_contact' ] . '">' . $config [ 'board_contact' ] . '</a></td></tr></table><br clear="all" /></body></html>' ;
2002-10-26 12:34:39 +00:00
2002-10-20 19:19:07 +00:00
exit ;
2002-10-08 20:06:55 +00:00
break ;
case E_USER_NOTICE :
2002-11-25 18:32:36 +00:00
// 20021125 Bartvb (todo)
// This is a hack just to show something useful.
// $msg_text won't contain anything if $user isn't there yet.
// I ran into this problem when installing without makeing config_cache.php writable
2002-11-25 23:46:23 +00:00
if ( ! isset ( $user ))
2002-11-25 18:32:36 +00:00
{
die ( " Unable to show notice, \$ user class hasn't been instantiated yet.<br />Error triggered in: " . $errfile . " : " . $errline );
}
2003-04-01 00:06:11 +00:00
if ( empty ( $user -> data ))
2002-11-01 12:23:08 +00:00
{
$user -> start ();
}
if ( empty ( $user -> lang ))
{
$user -> setup ();
}
2002-10-08 20:06:55 +00:00
2002-11-01 12:23:08 +00:00
$msg_text = ( ! empty ( $user -> lang [ $msg_text ])) ? $user -> lang [ $msg_text ] : $msg_text ;
if ( ! defined ( 'HEADER_INC' ))
2002-10-08 20:06:55 +00:00
{
2002-11-01 12:23:08 +00:00
if ( defined ( 'IN_ADMIN' ))
2002-10-08 20:06:55 +00:00
{
page_header ( '' , '' , false );
}
else
{
include ( $phpbb_root_path . 'includes/page_header.' . $phpEx );
}
}
2002-11-01 12:23:08 +00:00
if ( defined ( 'IN_ADMIN' ))
2002-10-08 20:06:55 +00:00
{
page_message ( $msg_title , $msg_text , $display_header );
page_footer ();
}
else
{
$template -> set_filenames ( array (
'body' => 'message_body.html' )
);
$template -> assign_vars ( array (
2002-11-01 12:23:08 +00:00
'MESSAGE_TITLE' => $msg_title ,
'MESSAGE_TEXT' => $msg_text )
2002-10-08 20:06:55 +00:00
);
include ( $phpbb_root_path . 'includes/page_tail.' . $phpEx );
}
2003-04-01 00:06:11 +00:00
exit ;
2002-10-08 20:06:55 +00:00
break ;
}
}
2002-12-02 23:53:21 +00:00
?>