| punbb-1.2.2/upload/admin_bans.php |
punbb-1.2.6/upload/admin_bans.php |
| 44: if (isset($_GET['add_ban'])) | 44: if (isset($_GET['add_ban'])) |
| 45: { | 45: { |
| 46: $add_ban = intval($_GET['add_ban']); | 46: $add_ban = intval($_GET['add_ban']); |
| 47: if ($add_ban < 1) | 47: if ($add_ban < 2) |
| 48: message($lang_common['Bad request']); | 48: message($lang_common['Bad request']); |
| 49: | 49: |
| 50: $user_id = $add_ban; | 50: $user_id = $add_ban; |
| 61: | 61: |
| 62: if ($ban_user != '') | 62: if ($ban_user != '') |
| 63: { | 63: { |
| 64: $result = $db->query('SELECT id, group_id, username, email FROM '.$db->prefix.'users WHERE username=\''.$db->escape($ban_user).'\'') or error('Unable to fetch user info', __FILE__, __LINE__, $db->error()); | 64: $result = $db->query('SELECT id, group_id, username, email FROM '.$db->prefix.'users WHERE username=\''.$db->escape($ban_user).'\' AND id>1') or error('Unable to fetch user info', __FILE__, __LINE__, $db->error()); |
| 65: if ($db->num_rows($result)) | 65: if ($db->num_rows($result)) |
| 66: list($user_id, $group_id, $ban_user, $ban_email) = $db->fetch_row($result); | 66: list($user_id, $group_id, $ban_user, $ban_email) = $db->fetch_row($result); |
| 67: else | 67: else |
| 244: if ($_POST['mode'] == 'add') | 244: if ($_POST['mode'] == 'add') |
| 245: $db->query('INSERT INTO '.$db->prefix.'bans (username, ip, email, message, expire) VALUES('.$ban_user.', '.$ban_ip.', '.$ban_email.', '.$ban_message.', '.$ban_expire.')') or error('Unable to add ban', __FILE__, __LINE__, $db->error()); | 245: $db->query('INSERT INTO '.$db->prefix.'bans (username, ip, email, message, expire) VALUES('.$ban_user.', '.$ban_ip.', '.$ban_email.', '.$ban_message.', '.$ban_expire.')') or error('Unable to add ban', __FILE__, __LINE__, $db->error()); |
| 246: else | 246: else |
| 247: $db->query('UPDATE '.$db->prefix.'bans SET username='.$ban_user.', ip='.$ban_ip.', email='.$ban_email.', message='.$ban_message.', expire='.$ban_expire.' WHERE id='.$_POST['ban_id']) or error('Unable to update ban', __FILE__, __LINE__, $db->error()); | 247: $db->query('UPDATE '.$db->prefix.'bans SET username='.$ban_user.', ip='.$ban_ip.', email='.$ban_email.', message='.$ban_message.', expire='.$ban_expire.' WHERE id='.intval($_POST['ban_id'])) or error('Unable to update ban', __FILE__, __LINE__, $db->error()); |
| 248: | 248: |
| 249: // Regenerate the bans cache | 249: // Regenerate the bans cache |
| 250: require_once PUN_ROOT.'include/cache.php'; | 250: require_once PUN_ROOT.'include/cache.php'; |
| punbb-1.2.2/upload/admin_groups.php |
punbb-1.2.6/upload/admin_groups.php |
| 209: | 209: |
| 210: $title = trim($_POST['req_title']); | 210: $title = trim($_POST['req_title']); |
| 211: $user_title = trim($_POST['user_title']); | 211: $user_title = trim($_POST['user_title']); |
| 212: $read_board = isset($_POST['read_board']) ? $_POST['read_board'] : '1'; | 212: $read_board = isset($_POST['read_board']) ? intval($_POST['read_board']) : '1'; |
| 213: $post_replies = isset($_POST['post_replies']) ? $_POST['post_replies'] : '1'; | 213: $post_replies = isset($_POST['post_replies']) ? intval($_POST['post_replies']) : '1'; |
| 214: $post_topics = isset($_POST['post_topics']) ? $_POST['post_topics'] : '1'; | 214: $post_topics = isset($_POST['post_topics']) ? intval($_POST['post_topics']) : '1'; |
| 215: $edit_posts = isset($_POST['edit_posts']) ? $_POST['edit_posts'] : ($is_admin_group) ? '1' : '0'; | 215: $edit_posts = isset($_POST['edit_posts']) ? intval($_POST['edit_posts']) : ($is_admin_group) ? '1' : '0'; |
| 216: $delete_posts = isset($_POST['delete_posts']) ? $_POST['delete_posts'] : ($is_admin_group) ? '1' : '0'; | 216: $delete_posts = isset($_POST['delete_posts']) ? intval($_POST['delete_posts']) : ($is_admin_group) ? '1' : '0'; |
| 217: $delete_topics = isset($_POST['delete_topics']) ? $_POST['delete_topics'] : ($is_admin_group) ? '1' : '0'; | 217: $delete_topics = isset($_POST['delete_topics']) ? intval($_POST['delete_topics']) : ($is_admin_group) ? '1' : '0'; |
| 218: $set_title = isset($_POST['set_title']) ? $_POST['set_title'] : ($is_admin_group) ? '1' : '0'; | 218: $set_title = isset($_POST['set_title']) ? intval($_POST['set_title']) : ($is_admin_group) ? '1' : '0'; |
| 219: $search = isset($_POST['search']) ? $_POST['search'] : '1'; | 219: $search = isset($_POST['search']) ? intval($_POST['search']) : '1'; |
| 220: $search_users = isset($_POST['search_users']) ? $_POST['search_users'] : '1'; | 220: $search_users = isset($_POST['search_users']) ? intval($_POST['search_users']) : '1'; |
| 221: $edit_subjects_interval = isset($_POST['edit_subjects_interval']) ? intval($_POST['edit_subjects_interval']) : '0'; | 221: $edit_subjects_interval = isset($_POST['edit_subjects_interval']) ? intval($_POST['edit_subjects_interval']) : '0'; |
| 222: $post_flood = isset($_POST['post_flood']) ? intval($_POST['post_flood']) : '0'; | 222: $post_flood = isset($_POST['post_flood']) ? intval($_POST['post_flood']) : '0'; |
| 223: $search_flood = isset($_POST['search_flood']) ? intval($_POST['search_flood']) : '0'; | 223: $search_flood = isset($_POST['search_flood']) ? intval($_POST['search_flood']) : '0'; |
| 229: | 229: |
| 230: if ($_POST['mode'] == 'add') | 230: if ($_POST['mode'] == 'add') |
| 231: { | 231: { |
| 232: $db->query('SELECT 1 FROM '.$db->prefix.'groups WHERE g_title=\''.$db->escape($title).'\'') or error('Unable to check group title collision', __FILE__, __LINE__, $db->error()); | 232: $result = $db->query('SELECT 1 FROM '.$db->prefix.'groups WHERE g_title=\''.$db->escape($title).'\'') or error('Unable to check group title collision', __FILE__, __LINE__, $db->error()); |
| 233: if ($db->num_rows()) | 233: if ($db->num_rows($result)) |
| 234: message('There is already a group with the title \''.pun_htmlspecialchars($title).'\'.'); | 234: message('There is already a group with the title \''.pun_htmlspecialchars($title).'\'.'); |
| 235: | 235: |
| 236: $db->query('INSERT INTO '.$db->prefix.'groups (g_title, g_user_title, g_read_board, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_edit_subjects_interval, g_post_flood, g_search_flood) VALUES(\''.$db->escape($title).'\', '.$user_title.', '.$read_board.', '.$post_replies.', '.$post_topics.', '.$edit_posts.', '.$delete_posts.', '.$delete_topics.', '.$set_title.', '.$search.', '.$search_users.', '.$edit_subjects_interval.', '.$post_flood.', '.$search_flood.')') or error('Unable to add group', __FILE__, __LINE__, $db->error()); | 236: $db->query('INSERT INTO '.$db->prefix.'groups (g_title, g_user_title, g_read_board, g_post_replies, g_post_topics, g_edit_posts, g_delete_posts, g_delete_topics, g_set_title, g_search, g_search_users, g_edit_subjects_interval, g_post_flood, g_search_flood) VALUES(\''.$db->escape($title).'\', '.$user_title.', '.$read_board.', '.$post_replies.', '.$post_topics.', '.$edit_posts.', '.$delete_posts.', '.$delete_topics.', '.$set_title.', '.$search.', '.$search_users.', '.$edit_subjects_interval.', '.$post_flood.', '.$search_flood.')') or error('Unable to add group', __FILE__, __LINE__, $db->error()); |
| 242: $db->query('INSERT INTO '.$db->prefix.'forum_perms (group_id, forum_id, read_forum, post_replies, post_topics) VALUES('.$new_group_id.', '.$cur_forum_perm['forum_id'].', '.$cur_forum_perm['read_forum'].', '.$cur_forum_perm['post_replies'].', '.$cur_forum_perm['post_topics'].')') or error('Unable to insert group forum permissions', __FILE__, __LINE__, $db->error()); | 242: $db->query('INSERT INTO '.$db->prefix.'forum_perms (group_id, forum_id, read_forum, post_replies, post_topics) VALUES('.$new_group_id.', '.$cur_forum_perm['forum_id'].', '.$cur_forum_perm['read_forum'].', '.$cur_forum_perm['post_replies'].', '.$cur_forum_perm['post_topics'].')') or error('Unable to insert group forum permissions', __FILE__, __LINE__, $db->error()); |
| 243: } | 243: } |
| 244: else | 244: else |
| | 245: { |
| | 246: $result = $db->query('SELECT 1 FROM '.$db->prefix.'groups WHERE g_title=\''.$db->escape($title).'\' AND g_id!='.$_POST['group_id']) or error('Unable to check group title collision', __FILE__, __LINE__, $db->error()); |
| | 247: if ($db->num_rows($result)) |
| | 248: message('There is already a group with the title \''.pun_htmlspecialchars($title).'\'.'); |
| | 249: |
| 245: $db->query('UPDATE '.$db->prefix.'groups SET g_title=\''.$db->escape($title).'\', g_user_title='.$user_title.', g_read_board='.$read_board.', g_post_replies='.$post_replies.', g_post_topics='.$post_topics.', g_edit_posts='.$edit_posts.', g_delete_posts='.$delete_posts.', g_delete_topics='.$delete_topics.', g_set_title='.$set_title.', g_search='.$search.', g_search_users='.$search_users.', g_edit_subjects_interval='.$edit_subjects_interval.', g_post_flood='.$post_flood.', g_search_flood='.$search_flood.' WHERE g_id='.$_POST['group_id']) or error('Unable to update group', __FILE__, __LINE__, $db->error()); | 250: $db->query('UPDATE '.$db->prefix.'groups SET g_title=\''.$db->escape($title).'\', g_user_title='.$user_title.', g_read_board='.$read_board.', g_post_replies='.$post_replies.', g_post_topics='.$post_topics.', g_edit_posts='.$edit_posts.', g_delete_posts='.$delete_posts.', g_delete_topics='.$delete_topics.', g_set_title='.$set_title.', g_search='.$search.', g_search_users='.$search_users.', g_edit_subjects_interval='.$edit_subjects_interval.', g_post_flood='.$post_flood.', g_search_flood='.$search_flood.' WHERE g_id='.$_POST['group_id']) or error('Unable to update group', __FILE__, __LINE__, $db->error()); |
| | 251: } |
| 246: | 252: |
| 247: // Regenerate the quickjump cache | 253: // Regenerate the quickjump cache |
| 248: require_once PUN_ROOT.'include/cache.php'; | 254: require_once PUN_ROOT.'include/cache.php'; |
| punbb-1.2.2/upload/admin_options.php |
punbb-1.2.6/upload/admin_options.php |
| 38: if (isset($_POST['form_sent'])) | 38: if (isset($_POST['form_sent'])) |
| 39: { | 39: { |
| 40: // Lazy referer check (in case base_url isn't correct) | 40: // Lazy referer check (in case base_url isn't correct) |
| 41: if (!preg_match('#/admin_options\.php#i', $_SERVER['HTTP_REFERER'])) | 41: if (!isset($_SERVER['HTTP_REFERER']) || !preg_match('#/admin_options\.php#i', $_SERVER['HTTP_REFERER'])) |
| 42: message($lang_common['Bad referrer']); | 42: message($lang_common['Bad referrer']); |
| 43: | 43: |
| 44: $form = array_map('trim', $_POST['form']); | 44: $form = array_map('trim', $_POST['form']); |
| 117: while (list($key, $input) = @each($form)) | 117: while (list($key, $input) = @each($form)) |
| 118: { | 118: { |
| 119: // Only update values that have changed | 119: // Only update values that have changed |
| 120: if ($pun_config['o_'.$key] != $input) | 120: if (isset($pun_config['o_'.$key]) && $pun_config['o_'.$key] != $input) |
| 121: { | 121: { |
| 122: if ($input != '' || is_int($input)) | 122: if ($input != '' || is_int($input)) |
| 123: $value = '\''.$db->escape($input).'\''; | 123: $value = '\''.$db->escape($input).'\''; |
| 124: else | 124: else |
| 125: $value = 'NULL'; | 125: $value = 'NULL'; |
| 126: | 126: |
| 127: $db->query('UPDATE '.$db->prefix.'config SET conf_value='.$value.' WHERE conf_name=\'o_'.$key.'\'') or error('Unable to update board config', __FILE__, __LINE__, $db->error()); | 127: $db->query('UPDATE '.$db->prefix.'config SET conf_value='.$value.' WHERE conf_name=\'o_'.$db->escape($key).'\'') or error('Unable to update board config', __FILE__, __LINE__, $db->error()); |
| 128: } | 128: } |
| 129: } | 129: } |
| 130: | 130: |
| 229: $d = dir(PUN_ROOT.'lang'); | 229: $d = dir(PUN_ROOT.'lang'); |
| 230: while (($entry = $d->read()) !== false) | 230: while (($entry = $d->read()) !== false) |
| 231: { | 231: { |
| 232: if ($entry != '.' && $entry != '..' && is_dir(PUN_ROOT.'lang/'.$entry)) | 232: if ($entry != '.' && $entry != '..' && is_dir(PUN_ROOT.'lang/'.$entry) && file_exists(PUN_ROOT.'lang/'.$entry.'/common.php')) |
| 233: $languages[] = $entry; | 233: $languages[] = $entry; |
| 234: } | 234: } |
| 235: $d->close(); | 235: $d->close(); |
| 236: | 236: |
| | 237: @natsort($languages); |
| | 238: |
| 237: while (list(, $temp) = @each($languages)) | 239: while (list(, $temp) = @each($languages)) |
| 238: { | 240: { |
| 239: if ($pun_config['o_default_lang'] == $temp) | 241: if ($pun_config['o_default_lang'] == $temp) |
| 261: $styles[] = substr($entry, 0, strlen($entry)-4); | 263: $styles[] = substr($entry, 0, strlen($entry)-4); |
| 262: } | 264: } |
| 263: $d->close(); | 265: $d->close(); |
| | 266: |
| | 267: @natsort($styles); |
| 264: | 268: |
| 265: while (list(, $temp) = @each($styles)) | 269: while (list(, $temp) = @each($styles)) |
| 266: { | 270: { |
| punbb-1.2.2/upload/admin_users.php |
punbb-1.2.6/upload/admin_users.php |
| 49: ?> | 49: ?> |
| 50: <div class="linkst"> | 50: <div class="linkst"> |
| 51: <div class="inbox"> | 51: <div class="inbox"> |
| 52: <div><a href="javascript:history.go(-1)" />Go back</a></div> | 52: <div><a href="javascript:history.go(-1)">Go back</a></div> |
| 53: </div> | 53: </div> |
| 54: </div> | 54: </div> |
| 55: | 55: |
| 98: | 98: |
| 99: <div class="linksb"> | 99: <div class="linksb"> |
| 100: <div class="inbox"> | 100: <div class="inbox"> |
| 101: <div><a href="javascript:history.go(-1)" />Go back</a></div> | 101: <div><a href="javascript:history.go(-1)">Go back</a></div> |
| 102: </div> | 102: </div> |
| 103: </div> | 103: </div> |
| 104: <?php | 104: <?php |
| 121: ?> | 121: ?> |
| 122: <div class="linkst"> | 122: <div class="linkst"> |
| 123: <div class="inbox"> | 123: <div class="inbox"> |
| 124: <div><a href="javascript:history.go(-1)" />Go back</a></div> | 124: <div><a href="javascript:history.go(-1)">Go back</a></div> |
| 125: </div> | 125: </div> |
| 126: </div> | 126: </div> |
| 127: | 127: |
| 202: | 202: |
| 203: <div class="linksb"> | 203: <div class="linksb"> |
| 204: <div class="inbox"> | 204: <div class="inbox"> |
| 205: <div><a href="javascript:history.go(-1)" />Go back</a></div> | 205: <div><a href="javascript:history.go(-1)">Go back</a></div> |
| 206: </div> | 206: </div> |
| 207: </div> | 207: </div> |
| 208: <?php | 208: <?php |
| 257: while (list($key, $input) = @each($form)) | 257: while (list($key, $input) = @each($form)) |
| 258: { | 258: { |
| 259: if ($input != '') | 259: if ($input != '') |
| 260: $conditions[] = 'u.'.$key.' '.$like_command.' \''.str_replace('*', '%', $input).'\''; | 260: $conditions[] = 'u.'.$db->escape($key).' '.$like_command.' \''.$db->escape(str_replace('*', '%', $input)).'\''; |
| 261: } | 261: } |
| 262: | 262: |
| 263: if ($posts_greater != '') | 263: if ($posts_greater != '') |
| 266: $conditions[] = 'u.num_posts<'.$posts_less; | 266: $conditions[] = 'u.num_posts<'.$posts_less; |
| 267: | 267: |
| 268: if ($user_group != 'all') | 268: if ($user_group != 'all') |
| 269: $conditions[] = 'u.group_id='.$user_group; | 269: $conditions[] = 'u.group_id='.$db->escape($user_group); |
| 270: | 270: |
| 271: if (!isset($conditions)) | 271: if (!isset($conditions)) |
| 272: message('You didn\'t enter any search terms.'); | 272: message('You didn\'t enter any search terms.'); |
| 278: ?> | 278: ?> |
| 279: <div class="linkst"> | 279: <div class="linkst"> |
| 280: <div class="inbox"> | 280: <div class="inbox"> |
| 281: <div><a href="javascript:history.go(-1)" />Go back</a></div> | 281: <div><a href="javascript:history.go(-1)">Go back</a></div> |
| 282: </div> | 282: </div> |
| 283: </div> | 283: </div> |
| 284: | 284: |
| 300: <tbody> | 300: <tbody> |
| 301: <?php | 301: <?php |
| 302: | 302: |
| 303: $result = $db->query('SELECT u.id, u.username, u.email, u.title, u.num_posts, u.admin_note, g.g_id, g.g_user_title FROM '.$db->prefix.'users AS u LEFT JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id WHERE u.id>1 AND '.implode(' AND ', $conditions).' ORDER BY '.$order_by.' '.$direction) or error('Unable to fetch user info', __FILE__, __LINE__, $db->error()); | 303: $result = $db->query('SELECT u.id, u.username, u.email, u.title, u.num_posts, u.admin_note, g.g_id, g.g_user_title FROM '.$db->prefix.'users AS u LEFT JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id WHERE u.id>1 AND '.implode(' AND ', $conditions).' ORDER BY '.$db->escape($order_by).' '.$db->escape($direction)) or error('Unable to fetch user info', __FILE__, __LINE__, $db->error()); |
| 304: if ($db->num_rows($result)) | 304: if ($db->num_rows($result)) |
| 305: { | 305: { |
| 306: while ($user_data = $db->fetch_assoc($result)) | 306: while ($user_data = $db->fetch_assoc($result)) |
| 338: | 338: |
| 339: <div class="linksb"> | 339: <div class="linksb"> |
| 340: <div class="inbox"> | 340: <div class="inbox"> |
| 341: <div><a href="javascript:history.go(-1)" />Go back</a></div> | 341: <div><a href="javascript:history.go(-1)">Go back</a></div> |
| 342: </div> | 342: </div> |
| 343: </div> | 343: </div> |
| 344: <?php | 344: <?php |
| punbb-1.2.2/upload/extern.php |
punbb-1.2.6/upload/extern.php |
| 129: // Load DB abstraction layer and try to connect | 129: // Load DB abstraction layer and try to connect |
| 130: require PUN_ROOT.'include/dblayer/common_db.php'; | 130: require PUN_ROOT.'include/dblayer/common_db.php'; |
| 131: | 131: |
| 132: // Get the forum config | 132: // Load cached config |
| 133: $result = $db->query('SELECT * FROM '.$db->prefix.'config') or error('Unable to fetch forum config', __FILE__, __LINE__, $db->error()); | 133: @include PUN_ROOT.'cache/cache_config.php'; |
| 134: while ($cur_config_item = $db->fetch_row($result)) | 134: if (!defined('PUN_CONFIG_LOADED')) |
| 135: $pun_config[$cur_config_item[0]] = $cur_config_item[1]; | 135: { |
| | 136: require PUN_ROOT.'include/cache.php'; |
| | 137: generate_config_cache(); |
| | 138: require PUN_ROOT.'cache/cache_config.php'; |
| | 139: } |
| 136: | 140: |
| 137: // Make sure we (guests) have permission to read the forums | 141: // Make sure we (guests) have permission to read the forums |
| 138: $result = $db->query('SELECT g_read_board FROM '.$db->prefix.'groups WHERE g_id=3') or error('Unable to fetch group info', __FILE__, __LINE__, $db->error()); | 142: $result = $db->query('SELECT g_read_board FROM '.$db->prefix.'groups WHERE g_id=3') or error('Unable to fetch group info', __FILE__, __LINE__, $db->error()); |
| punbb-1.2.2/upload/header.php |
punbb-1.2.6/upload/header.php |
| 15: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 15: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 16: GNU General Public License for more details. | 16: GNU General Public License for more details. |
| 17: | 17: |
| 18: You should have received a copy of the GNU G>eneral Public License | 18: You should have received a copy of the GNU General Public License |
| 19: along with this program; if not, write to the Free Software | 19: along with this program; if not, write to the Free Software |
| 20: Foundation, Inc., 59 Temple Place, Suite 330, Boston, | 20: Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
| 21: MA 02111-1307 USA | 21: MA 02111-1307 USA |
| 68: if (defined('PUN_ADMIN_CONSOLE')) | 68: if (defined('PUN_ADMIN_CONSOLE')) |
| 69: echo '<link rel="stylesheet" type="text/css" href="style/imports/base_admin.css" />'."\n"; | 69: echo '<link rel="stylesheet" type="text/css" href="style/imports/base_admin.css" />'."\n"; |
| 70: | 70: |
| 71: if (isset($destination_url)) | 71: if (isset($required_fields)) |
| 72: echo '<meta http-equiv="refresh" content="'.$delay.';URL='.$destination.'" />'."\n"; | |
| 73: | |
| 74: else if (isset($required_fields)) | |
| 75: { | 72: { |
| 76: // Output JavaScript to validate form (make sure required fields are filled out) | 73: // Output JavaScript to validate form (make sure required fields are filled out) |
| 77: | 74: |
| 171: $tpl_temp .= "\n\t\t\t\t".'<li class="maintenancelink"><strong><a href="admin_options.php#maintenance">Maintenance mode is enabled!</a></strong></li>'; | 168: $tpl_temp .= "\n\t\t\t\t".'<li class="maintenancelink"><strong><a href="admin_options.php#maintenance">Maintenance mode is enabled!</a></strong></li>'; |
| 172: } | 169: } |
| 173: | 170: |
| 174: if (basename($_SERVER['PHP_SELF']) == 'index.php') | 171: if (in_array(basename($_SERVER['PHP_SELF']), array('index.php', 'search.php'))) |
| 175: $tpl_temp .= "\n\t\t\t".'</ul>'."\n\t\t\t".'<ul class="conr">'."\n\t\t\t\t".'<li><a href="search.php?action=show_new">'.$lang_common['Show new posts'].'</a></li>'."\n\t\t\t\t".'<li><a href="misc.php?action=markread">'.$lang_common['Mark all as read'].'</a></li>'."\n\t\t\t".'</ul>'."\n\t\t\t".'<div class="clearer"></div>'."\n\t\t".'</div>'; | 172: $tpl_temp .= "\n\t\t\t".'</ul>'."\n\t\t\t".'<ul class="conr">'."\n\t\t\t\t".'<li><a href="search.php?action=show_new">'.$lang_common['Show new posts'].'</a></li>'."\n\t\t\t\t".'<li><a href="misc.php?action=markread">'.$lang_common['Mark all as read'].'</a></li>'."\n\t\t\t".'</ul>'."\n\t\t\t".'<div class="clearer"></div>'."\n\t\t".'</div>'; |
| 176: else if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] == 'action=show_new') | |
| 177: $tpl_temp .= "\n\t\t\t".'</ul>'."\n\t\t\t".'<p class="conr"><a href="misc.php?action=markread">'.$lang_common['Mark all as read'].'</a></p>'."\n\t\t\t".'<div class="clearer"></div>'."\n\t\t".'</div>'; | |
| 178: else | 173: else |
| 179: $tpl_temp .= "\n\t\t\t".'</ul>'."\n\t\t\t".'<div class="clearer"></div>'."\n\t\t".'</div>'; | 174: $tpl_temp .= "\n\t\t\t".'</ul>'."\n\t\t\t".'<div class="clearer"></div>'."\n\t\t".'</div>'; |
| 180: } | 175: } |
| punbb-1.2.2/upload/include/common.php |
punbb-1.2.6/upload/include/common.php |
| 43: list($usec, $sec) = explode(' ', microtime()); | 43: list($usec, $sec) = explode(' ', microtime()); |
| 44: $pun_start = ((float)$usec + (float)$sec); | 44: $pun_start = ((float)$usec + (float)$sec); |
| 45: | 45: |
| 46: // Enable full error, warning and notice reporting | 46: // Make sure PHP reports all errors except E_NOTICE. PunBB supports E_ALL, but a lot of scripts it may interact with, do not. |
| 47: error_reporting(E_ALL); | 47: error_reporting(E_ALL ^ E_NOTICE); |
| 48: | 48: |
| 49: // Turn off magic_quotes_runtime | 49: // Turn off magic_quotes_runtime |
| 50: set_magic_quotes_runtime(0); | 50: set_magic_quotes_runtime(0); |
| 117: // Attempt to load the common language file | 117: // Attempt to load the common language file |
| 118: @include PUN_ROOT.'lang/'.$pun_user['language'].'/common.php'; | 118: @include PUN_ROOT.'lang/'.$pun_user['language'].'/common.php'; |
| 119: if (!isset($lang_common)) | 119: if (!isset($lang_common)) |
| 120: exit('There is no valid language pack \''.$pun_user['language'].'\' installed. Please reinstall a language of that name.'); | 120: exit('There is no valid language pack \''.pun_htmlspecialchars($pun_user['language']).'\' installed. Please reinstall a language of that name.'); |
| 121: | 121: |
| 122: // Check if we are to display a maintenance message | 122: // Check if we are to display a maintenance message |
| 123: if ($pun_config['o_maintenance'] && $pun_user['g_id'] > PUN_ADMIN && !defined('PUN_TURN_OFF_MAINT')) | 123: if ($pun_config['o_maintenance'] && $pun_user['g_id'] > PUN_ADMIN && !defined('PUN_TURN_OFF_MAINT')) |
| punbb-1.2.2/upload/include/email.php |
punbb-1.2.6/upload/include/email.php |
| 33: // | 33: // |
| 34: function is_valid_email($email) | 34: function is_valid_email($email) |
| 35: { | 35: { |
| 36: return preg_match('#^.{1,}@.{2,}\..{2,}$#', $email); | 36: if (strlen($email) > 50) |
| | 37: return false; |
| | 38: |
| | 39: return preg_match('/^(([^<>()[\]\\.,;:\s@"\']+(\.[^<>()[\]\\.,;:\s@"\']+)*)|("[^"\']+"))@((\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])|(([a-zA-Z\d\-]+\.)+[a-zA-Z]{2,}))$/', $email); |
| 37: } | 40: } |
| 38: | 41: |
| 39: | 42: |
| 65: | 68: |
| 66: // Default sender/return address | 69: // Default sender/return address |
| 67: if (!$from) | 70: if (!$from) |
| 68: $from = '"'.$pun_config['o_board_title'].' '.$lang_common['Mailer'].'" <'.$pun_config['o_webmaster_email'].'>'; | 71: $from = '"'.str_replace('"', '', $pun_config['o_board_title'].' '.$lang_common['Mailer']).'" <'.$pun_config['o_webmaster_email'].'>'; |
| 69: | 72: |
| 70: // Make sure the from line doesn't contain a colon (the character, that is :D) | 73: // Do a little spring cleaning |
| 71: $from = str_replace(':', ' ', $from); | 74: $to = trim(preg_replace('#[\n\r]+#s', '', $to)); |
| | 75: $subject = trim(preg_replace('#[\n\r]+#s', '', $subject)); |
| | 76: $from = trim(preg_replace('#[\n\r:]+#s', '', $from)); |
| 72: | 77: |
| 73: // Detect what linebreak we should use for the headers | 78: // Detect what linebreak we should use for the headers |
| 74: if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) | 79: if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) |
| punbb-1.2.2/upload/include/functions.php |
punbb-1.2.6/upload/include/functions.php |
| 46: $pun_user = $db->fetch_assoc($result); | 46: $pun_user = $db->fetch_assoc($result); |
| 47: | 47: |
| 48: // If user authorisation failed | 48: // If user authorisation failed |
| 49: if (!isset($pun_user['id']) || md5($cookie_seed.$pun_user['password']) != $cookie['password_hash']) | 49: if (!isset($pun_user['id']) || md5($cookie_seed.$pun_user['password']) !== $cookie['password_hash']) |
| 50: { | 50: { |
| 51: pun_setcookie(0, random_pass(8), $expire); | 51: pun_setcookie(0, random_pass(8), $expire); |
| 52: set_default_user(); | 52: set_default_user(); |
| 739: | 739: |
| 740: if (strpos($lang_common['lang_encoding'], '8859') !== false) | 740: if (strpos($lang_common['lang_encoding'], '8859') !== false) |
| 741: { | 741: { |
| 742: $fishy_chars = array(chr(0x81), chr(0x8D), chr(0x8F), chr(0x90), chr(0x9D), chr(0xA0), chr(0xCA)); | 742: $fishy_chars = array(chr(0x81), chr(0x8D), chr(0x8F), chr(0x90), chr(0x9D), chr(0xA0)); |
| 743: return trim(str_replace($fishy_chars, ' ', $str)); | 743: return trim(str_replace($fishy_chars, ' ', $str)); |
| 744: } | 744: } |
| 745: else | 745: else |
| 803: | 803: |
| 804: | 804: |
| 805: // START SUBST - <pun_include "*"> | 805: // START SUBST - <pun_include "*"> |
| 806: while (preg_match('<pun_include "(.*?)">', $tpl_maint, $cur_include)) | 806: while (preg_match('#<pun_include "([^/\\\\]*?)">#', $tpl_maint, $cur_include)) |
| 807: { | 807: { |
| | 808: if (!file_exists(PUN_ROOT.'include/user/'.$cur_include[1])) |
| | 809: error('Unable to process user include <pun_include "'.htmlspecialchars($cur_include[1]).'"> from template maintenance.tpl. There is no such file in folder /include/user/'); |
| | 810: |
| 808: ob_start(); | 811: ob_start(); |
| 809: include PUN_ROOT.$cur_include[1]; | 812: include PUN_ROOT.'include/user/'.$cur_include[1]; |
| 810: $tpl_temp = ob_get_contents(); | 813: $tpl_temp = ob_get_contents(); |
| 811: $tpl_maint = str_replace('<'.$cur_include[0].'>', $tpl_temp, $tpl_maint); | 814: $tpl_maint = str_replace($cur_include[0], $tpl_temp, $tpl_maint); |
| 812: ob_end_clean(); | 815: ob_end_clean(); |
| 813: } | 816: } |
| 814: // END SUBST - <pun_include "*"> | 817: // END SUBST - <pun_include "*"> |
| 854: ob_start(); | 857: ob_start(); |
| 855: | 858: |
| 856: ?> | 859: ?> |
| 857: <meta http-equiv="refresh" content="<?php echo $pun_config['o_redirect_delay'] ?>;URL=<?php echo $destination_url ?>" /> | 860: <meta http-equiv="refresh" content="<?php echo $pun_config['o_redirect_delay'] ?>;URL=<?php echo str_replace(array('<', '>', '"'), array('<', '>', '"'), $destination_url) ?>" /> |
| 858: <title><?php echo pun_htmlspecialchars($pun_config['o_board_title']).' / '.$lang_common['Redirecting'] ?></title> | 861: <title><?php echo pun_htmlspecialchars($pun_config['o_board_title']).' / '.$lang_common['Redirecting'] ?></title> |
| 859: <link rel="stylesheet" type="text/css" href="style/<?php echo $pun_user['style'].'.css' ?>" /> | 862: <link rel="stylesheet" type="text/css" href="style/<?php echo $pun_user['style'].'.css' ?>" /> |
| 860: <?php | 863: <?php |
| 893: | 896: |
| 894: | 897: |
| 895: // START SUBST - <pun_include "*"> | 898: // START SUBST - <pun_include "*"> |
| 896: while (preg_match('<pun_include "(.*?)">', $tpl_redir, $cur_include)) | 899: while (preg_match('#<pun_include "([^/\\\\]*?)">#', $tpl_redir, $cur_include)) |
| 897: { | 900: { |
| | 901: if (!file_exists(PUN_ROOT.'include/user/'.$cur_include[1])) |
| | 902: error('Unable to process user include <pun_include "'.htmlspecialchars($cur_include[1]).'"> from template redirect.tpl. There is no such file in folder /include/user/'); |
| | 903: |
| 898: ob_start(); | 904: ob_start(); |
| 899: include PUN_ROOT.$cur_include[1]; | 905: include PUN_ROOT.'include/user/'.$cur_include[1]; |
| 900: $tpl_temp = ob_get_contents(); | 906: $tpl_temp = ob_get_contents(); |
| 901: $tpl_redir = str_replace('<'.$cur_include[0].'>', $tpl_temp, $tpl_redir); | 907: $tpl_redir = str_replace($cur_include[0], $tpl_temp, $tpl_redir); |
| 902: ob_end_clean(); | 908: ob_end_clean(); |
| 903: } | 909: } |
| 904: // END SUBST - <pun_include "*"> | 910: // END SUBST - <pun_include "*"> |
| punbb-1.2.2/upload/include/parser.php |
punbb-1.2.6/upload/include/parser.php |
| 45: $b = array('[b]', '[i]', '[u]', '[/b]', '[/i]', '[/u]'); | 45: $b = array('[b]', '[i]', '[u]', '[/b]', '[/i]', '[/u]'); |
| 46: $text = str_replace($a, $b, $text); | 46: $text = str_replace($a, $b, $text); |
| 47: | 47: |
| 48: // Do the more complex BBCodes (and strip excessive whitespace) | 48: // Do the more complex BBCodes (also strip excessive whitespace and useless quotes) |
| 49: $a = array( '#\[url=(.*?)\]\s*#i', | 49: $a = array( '#\[url=("|\'|)(.*?)\\1\]\s*#i', |
| 50: '#\[url\]\s*#i', | 50: '#\[url\]\s*#i', |
| 51: '#\s*\[/url\]#i', | 51: '#\s*\[/url\]#i', |
| 52: '#\[email=(.*?)\]\s*#i', | 52: '#\[email=("|\'|)(.*?)\\1\]\s*#i', |
| 53: '#\[email\]\s*#i', | 53: '#\[email\]\s*#i', |
| 54: '#\s*\[/email\]#i', | 54: '#\s*\[/email\]#i', |
| 55: '#\[img\]\s*(.*?)\s*\[/img\]#is', | 55: '#\[img\]\s*(.*?)\s*\[/img\]#is', |
| 56: '#\[colou?r=(.*?)\](.*?)\[/colou?r\]#is'); | 56: '#\[colou?r=("|\'|)(.*?)\\1\](.*?)\[/colou?r\]#is'); |
| 57: | 57: |
| 58: $b = array( '[url=$1]', | 58: $b = array( '[url=$2]', |
| 59: '[url]', | 59: '[url]', |
| 60: '[/url]', | 60: '[/url]', |
| 61: '[email=$1]', | 61: '[email=$2]', |
| 62: '[email]', | 62: '[email]', |
| 63: '[/email]', | 63: '[/email]', |
| 64: '[img]$1[/img]', | 64: '[img]$1[/img]', |
| 65: '[color=$1]$2[/color]'); | 65: '[color=$2]$3[/color]'); |
| 66: | 66: |
| 67: if (!$is_signature) | 67: if (!$is_signature) |
| 68: { | 68: { |
| 69: // For non-signatures, we have to do the quote and code tags as well | 69: // For non-signatures, we have to do the quote and code tags as well |
| 70: $a[] = '#\[quote=("|"|\'|)(.*)\\1\]\s*#i'; | 70: $a[] = '#\[quote=("|"|\'|)(.*?)\\1\]\s*#i'; |
| 71: $a[] = '#\[quote\]\s*#i'; | 71: $a[] = '#\[quote\]\s*#i'; |
| 72: $a[] = '#\s*\[/quote\]\s*#i'; | 72: $a[] = '#\s*\[/quote\]\s*#i'; |
| 73: $a[] = '#\[code\][\r\n]*(.*?)\s*\[/code\]\s*#is'; | 73: $a[] = '#\[code\][\r\n]*(.*?)\s*\[/code\]\s*#is'; |
| 182: // We found a [code] | 182: // We found a [code] |
| 183: else if ($c_start < min($c_end, $q_start, $q_end)) | 183: else if ($c_start < min($c_end, $q_start, $q_end)) |
| 184: { | 184: { |
| | 185: // Make sure there's a [/code] and that any new [code] doesn't occur before the end tag |
| 185: $tmp = strpos($text, '[/code]'); | 186: $tmp = strpos($text, '[/code]'); |
| 186: if ($tmp === false) | 187: $tmp2 = strpos(substr($text, $c_start+6), '[code]'); |
| | 188: if ($tmp2 !== false) |
| | 189: $tmp2 += $c_start+6; |
| | 190: |
| | 191: if ($tmp === false || ($tmp2 !== false && $tmp2 < $tmp)) |
| 187: { | 192: { |
| 188: $error = $lang_common['BBCode error'].' '.$lang_common['BBCode error 2']; | 193: $error = $lang_common['BBCode error'].' '.$lang_common['BBCode error 2']; |
| 189: return; | 194: return; |
| 299: { | 304: { |
| 300: global $lang_common, $pun_user; | 305: global $lang_common, $pun_user; |
| 301: | 306: |
| | 307: if (strpos($text, 'quote') !== false) |
| | 308: { |
| | 309: $text = str_replace('[quote]', '</p><blockquote><div class="incqbox"><p>', $text); |
| | 310: $text = preg_replace('#\[quote=("|"|\'|)(.*)\\1\]#seU', '"</p><blockquote><div class=\"incqbox\"><h4>".str_replace(array(\'[\', \'\\"\'), array(\'[\', \'"\'), \'$2\')." ".$lang_common[\'wrote\'].":</h4><p>"', $text); |
| | 311: $text = preg_replace('#\[\/quote\]\s*#', '</p></div></blockquote><p>', $text); |
| | 312: } |
| | 313: |
| 302: $pattern = array('#\[b\](.*?)\[/b\]#s', | 314: $pattern = array('#\[b\](.*?)\[/b\]#s', |
| 303: '#\[i\](.*?)\[/i\]#s', | 315: '#\[i\](.*?)\[/i\]#s', |
| 304: '#\[u\](.*?)\[/u\]#s', | 316: '#\[u\](.*?)\[/u\]#s', |
| 319: | 331: |
| 320: // This thing takes a while! :) | 332: // This thing takes a while! :) |
| 321: $text = preg_replace($pattern, $replace, $text); | 333: $text = preg_replace($pattern, $replace, $text); |
| 322: | |
| 323: if (strpos($text, 'quote') !== false) | |
| 324: { | |
| 325: $text = str_replace('[quote]', '</p><blockquote><div class="incqbox"><p>', $text); | |
| 326: $text = preg_replace('#\[quote=("|"|\'|)(.*)\\1\]#seU', '"</p><blockquote><div class=\"incqbox\"><h4>".str_replace(\'[\', \'[\', \'$2\')." ".$lang_common[\'wrote\'].":</h4><p>"', $text); | |
| 327: $text = preg_replace('#\[\/quote\]\s*#', '</p></div></blockquote><p>', $text); | |
| 328: } | |
| 329: | 334: |
| 330: return $text; | 335: return $text; |
| 331: } | 336: } |
| punbb-1.2.2/upload/include/search_idx.php |
punbb-1.2.6/upload/include/search_idx.php |
| 43: | 43: |
| 44: if (empty($noise_match)) | 44: if (empty($noise_match)) |
| 45: { | 45: { |
| 46: $noise_match = array('quote', 'code', 'url', 'img', 'email', 'color', 'colour', '^', '$', '&', '(', ')', '<', '>', '`', '\'', '"', '|', ',', '@', '_', '?', '%', '~', '+', '[', ']', '{', '}', ':', '\\', '/', '=', '#', ';', '!', '*'); | 46: $noise_match = array('[quote', '[code', '[url', '[img', '[email', '[color', '[colour', 'quote]', 'code]', 'url]', 'img]', 'email]', 'color]', 'colour]', '^', '$', '&', '(', ')', '<', '>', '`', '\'', '"', '|', ',', '@', '_', '?', '%', '~', '+', '[', ']', '{', '}', ':', '\\', '/', '=', '#', ';', '!', '*'); |
| 47: $noise_replace = array('', '', '', '', '', '', '', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '', '', ' ', ' ', ' ', ' ', '', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '' , ' ', ' ', ' ', ' ', ' ', ' '); | 47: $noise_replace = array('', '', '', '', '', '', '', '', '', '', '', '', '', '', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '', '', ' ', ' ', ' ', ' ', '', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '' , ' ', ' ', ' ', ' ', ' ', ' '); |
| 48: | 48: |
| 49: $stopwords = (array)@file(PUN_ROOT.'lang/'.$pun_user['language'].'/stopwords.txt'); | 49: $stopwords = (array)@file(PUN_ROOT.'lang/'.$pun_user['language'].'/stopwords.txt'); |
| 50: $stopwords = array_map('trim', $stopwords); | 50: $stopwords = array_map('trim', $stopwords); |
| punbb-1.2.2/upload/install.php |
punbb-1.2.6/upload/install.php |
| 24: | 24: |
| 25: | 25: |
| 26: // The PunBB version this script installs | 26: // The PunBB version this script installs |
| 27: $punbb_version = '1.2.2'; | 27: $punbb_version = '1.2.6'; |
| 28: | 28: |
| 29: | 29: |
| 30: define('PUN_ROOT', './'); | 30: define('PUN_ROOT', './'); |
| 165: <fieldset> | 165: <fieldset> |
| 166: <legend>Enter then name of your database</legend> | 166: <legend>Enter then name of your database</legend> |
| 167: <div class="infldset"> | 167: <div class="infldset"> |
| 168: <p>The name of the database that PunBB will be installed into. The database must exist. For SQLite, this is the relative path to the database file. If it doesn't exists, PunBB will attempt to create it.</p> | 168: <p>The name of the database that PunBB will be installed into. The database must exist. For SQLite, this is the relative path to the database file. If the SQLite database file does not exist, PunBB will attempt to create it.</p> |
| 169: <label for="req_db_name"><strong>Database name</strong><br /><input id="req_db_name" type="text" name="req_db_name" size="30" maxlength="50" /><br /></label> | 169: <label for="req_db_name"><strong>Database name</strong><br /><input id="req_db_name" type="text" name="req_db_name" size="30" maxlength="50" /><br /></label> |
| 170: </div> | 170: </div> |
| 171: </fieldset> | 171: </fieldset> |
| 324: if (preg_match('#\[b\]|\[/b\]|\[u\]|\[/u\]|\[i\]|\[/i\]|\[color|\[/color\]|\[quote\]|\[/quote\]|\[code\]|\[/code\]|\[img\]|\[/img\]|\[url|\[/url\]|\[email|\[/email\]#i', $username)) | 324: if (preg_match('#\[b\]|\[/b\]|\[u\]|\[/u\]|\[i\]|\[/i\]|\[color|\[/color\]|\[quote\]|\[/quote\]|\[code\]|\[/code\]|\[img\]|\[/img\]|\[url|\[/url\]|\[email|\[/email\]#i', $username)) |
| 325: error('Usernames may not contain any of the text formatting tags (BBCode) that the forum uses. Please go back and correct.'); | 325: error('Usernames may not contain any of the text formatting tags (BBCode) that the forum uses. Please go back and correct.'); |
| 326: | 326: |
| 327: if (!preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/', $email)) | 327: if (strlen($email) > 50 || !preg_match('/^(([^<>()[\]\\.,;:\s@"\']+(\.[^<>()[\]\\.,;:\s@"\']+)*)|("[^"\']+"))@((\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])|(([a-zA-Z\d\-]+\.)+[a-zA-Z]{2,}))$/', $email)) |
| 328: error('The administrator e-mail address you entered is invalid. Please go back and correct.'); | 328: error('The administrator e-mail address you entered is invalid. Please go back and correct.'); |
| 329: | 329: |
| 330: | 330: |
| 346: case 'sqlite': | 346: case 'sqlite': |
| 347: require PUN_ROOT.'include/dblayer/sqlite.php'; | 347:   |